Annotation of researchv10no/cmd/post.src/post.src.cpio, revision 1.1

1.1     ! root        1: 0707070014231030370407550057030000000000400277220522634650100001100000000000post.src0707070014230361420407550057030057030000021040140522633073100002000000000000post.src/common0707070014230361431006440057030057030000011040300522627500500003200000007173post.src/common/request.c/*
        !             2:  *
        !             3:  * Things used to handle special requests (eg. manual feed) globally or on a per
        !             4:  * page basis. Requests are passed through to the translator using the -R option.
        !             5:  * The argument to -R can be "request", "request:page", or "request:page:file".
        !             6:  * If page is omitted (as in the first form) or set to 0 request will be applied
        !             7:  * to the global environment. In all other cases it applies only to the selected
        !             8:  * page. If a file is given, page must be supplied, and the lookup is in that file
        !             9:  * rather than *requestfile.
        !            10:  *
        !            11:  */
        !            12: 
        !            13: #include <stdio.h>
        !            14: 
        !            15: #include "gen.h"                       /* general purpose definitions */
        !            16: #include "request.h"                   /* a few special definitions */
        !            17: #include "path.h"                      /* for the default request file */
        !            18: 
        !            19: Request        request[MAXREQUEST];            /* next page or global request */
        !            20: int    nextreq = 0;                    /* goes in request[nextreq] */
        !            21: char   *requestfile = REQUESTFILE;     /* default lookup file */
        !            22: 
        !            23: /*****************************************************************************/
        !            24: 
        !            25: saverequest(want)
        !            26: 
        !            27:     char       *want;                  /* grab code for this stuff */
        !            28: 
        !            29: {
        !            30: 
        !            31:     char       *page;                  /* and save it for this page */
        !            32:     char       *strtok();
        !            33: 
        !            34: /*
        !            35:  *
        !            36:  * Save the request until we get to appropriate page - don't even bother with
        !            37:  * the lookup right now. Format of *want string is "request", "request:page", or
        !            38:  * "request:page:file", and we assume we can change the string here as needed.
        !            39:  * If page is omitted or given as 0 the request will be done globally. If *want
        !            40:  * includes a file, request and page must also be given, and in that case *file
        !            41:  * will be used for the lookup.
        !            42:  *
        !            43:  */
        !            44: 
        !            45:     if ( nextreq < MAXREQUEST )  {
        !            46:        request[nextreq].want = strtok(want, ": ");
        !            47:        if ( (page = strtok(NULL, ": ")) == NULL )
        !            48:            request[nextreq].page = 0;
        !            49:        else request[nextreq].page = atoi(page);
        !            50:        if ( (request[nextreq].file = strtok(NULL, ": ")) == NULL )
        !            51:            request[nextreq].file = requestfile;
        !            52:        nextreq++;
        !            53:     } else error(NON_FATAL, "too many requests - ignoring %s", want);
        !            54: 
        !            55: }   /* End of saverequest */
        !            56: 
        !            57: /*****************************************************************************/
        !            58: 
        !            59: writerequest(page, fp_out)
        !            60: 
        !            61:     int                page;                   /* write everything for this page */
        !            62:     FILE       *fp_out;                /* to this file */
        !            63: 
        !            64: {
        !            65: 
        !            66:     int                i;                      /* loop index */
        !            67: 
        !            68: /*
        !            69:  *
        !            70:  * Writes out all the requests that have been saved for page. Page 0 refers to
        !            71:  * the global environment and is done during initial setup.
        !            72:  *
        !            73:  */
        !            74: 
        !            75:     for ( i = 0; i < nextreq; i++ )
        !            76:        if ( request[i].page == page )
        !            77:            dumprequest(request[i].want, request[i].file, fp_out);
        !            78: 
        !            79: }   /* End of writerequest */
        !            80: 
        !            81: /*****************************************************************************/
        !            82: 
        !            83: dumprequest(want, file, fp_out)
        !            84: 
        !            85:     char       *want;                  /* look for this string */
        !            86:     char       *file;                  /* in this file */
        !            87:     FILE       *fp_out;                /* and write the value out here */
        !            88: 
        !            89: {
        !            90: 
        !            91:     char       buf[100];               /* line buffer for reading *file */
        !            92:     FILE       *fp_in;
        !            93: 
        !            94: /*
        !            95:  *
        !            96:  * Looks for *want in the request file and if it's found the associated value
        !            97:  * is copied to the output file. Keywords (ie. the *want strings) begin an @ in
        !            98:  * the first column of file, while the values (ie. the stuff that's copied to
        !            99:  * the output file) starts on the next line and extends to the next keyword or
        !           100:  * to the end of file.
        !           101:  *
        !           102:  */
        !           103: 
        !           104:     if ( (fp_in = fopen(file, "r")) != NULL )  {
        !           105:        while ( fgets(buf, sizeof(buf), fp_in) != NULL )
        !           106:            if ( buf[0] == '@' && strncmp(want, &buf[1], strlen(want)) == 0 )
        !           107:                while ( fgets(buf, sizeof(buf), fp_in) != NULL )
        !           108:                    if ( buf[0] == '#' || buf[0] == '%' )
        !           109:                        continue;
        !           110:                    else if ( buf[0] != '@' )
        !           111:                        fprintf(fp_out, "%s", buf);
        !           112:                    else break;
        !           113:        fclose(fp_in);
        !           114:     }  /* End if */
        !           115: 
        !           116: }   /* End of dumprequest */
        !           117: 
        !           118: /*****************************************************************************/
        !           119: 
        !           120: 0707070014230361441006440057030057030000011040150522627500500003200000001035post.src/common/tempnam.c#include <stdio.h>
        !           121: #include <errno.h>
        !           122: 
        !           123: #if defined(V9) || defined(BSD4_2)
        !           124: char *tempnam(dir, pfx)
        !           125: char *dir, *pfx;
        !           126: {
        !           127:        int pid;
        !           128:        unsigned int len;
        !           129:        char *tnm, *malloc();
        !           130:        static int seq = 0;
        !           131: 
        !           132:        pid = getpid();
        !           133:        len = strlen(dir) + strlen(pfx) + 10;
        !           134:        if ((tnm = malloc(len)) != NULL) {
        !           135:                sprintf(tnm, "%s", dir);
        !           136:                if (access(tnm, 7) == -1)
        !           137:                        return(NULL);
        !           138:                do {
        !           139:                        sprintf(tnm, "%s/%s%d%d", dir, pfx, pid, seq++);
        !           140:                        errno = 0;
        !           141:                        if (access(tnm, 7) == -1)
        !           142:                                if (errno == ENOENT)
        !           143:                                        return(tnm);
        !           144:                } while (1);
        !           145:        }
        !           146:        return(tnm);
        !           147: }
        !           148: #endif
        !           149: 0707070014230361451006440057030057030000011040160522627500500003200000001432post.src/common/request.h/*
        !           150:  *
        !           151:  * Things used to handle special PostScript requests (like manual feed) globally
        !           152:  * or on a per page basis. All the translators I've supplied accept the -R option
        !           153:  * that can be used to insert special PostScript code before the global setup is
        !           154:  * done, or at the start of named pages. The argument to the -R option is a string
        !           155:  * that can be "request", "request:page", or "request:page:file". If page isn't
        !           156:  * given (as in the first form) or if it's 0 in the last two, the request applies
        !           157:  * to the global environment, otherwise request holds only for the named page.
        !           158:  * If a file name is given a page number must be supplied, and in that case the
        !           159:  * request will be looked up in that file.
        !           160:  *
        !           161:  */
        !           162: 
        !           163: #define MAXREQUEST     30
        !           164: 
        !           165: typedef struct {
        !           166:        char    *want;
        !           167:        int     page;
        !           168:        char    *file;
        !           169: } Request;
        !           170: 
        !           171: 0707070014230361461006440057030057030000011041310522633073100002700000002213post.src/common/path.h/*
        !           172:  *
        !           173:  * pathname definitions for important files and directories.
        !           174:  *
        !           175:  */
        !           176: 
        !           177: #define DPOST          "/usr/lib/postscript/dpost.ps"
        !           178: #define POSTBGI                "/usr/lib/postscript/postbgi.ps"
        !           179: #define POSTDAISY      "/usr/lib/postscript/postdaisy.ps"
        !           180: #define POSTDMD                "/usr/lib/postscript/postdmd.ps"
        !           181: #define POSTMD         "/usr/lib/postscript/postmd.ps"
        !           182: #define POSTPLOT       "/usr/lib/postscript/postplot.ps"
        !           183: #define POSTPRINT      "/usr/lib/postscript/postprint.ps"
        !           184: #define POSTNPRINT     "/usr/lib/postscript/postnprint.ps"
        !           185: #define POSTTEK                "/usr/lib/postscript/posttek.ps"
        !           186: #define POSTGIF                "/usr/lib/postscript/postgif.ps"
        !           187: 
        !           188: #define BASELINE       "/usr/lib/postscript/baseline.ps"
        !           189: #define COLOR          "/usr/lib/postscript/color.ps"
        !           190: #define DRAW           "/usr/lib/postscript/draw.ps"
        !           191: #define FORMFILE       "/usr/lib/postscript/forms.ps"
        !           192: #define SHADEFILE      "/usr/lib/postscript/shade.ps"
        !           193: #define KERNING                "/usr/lib/postscript/kerning.ps"
        !           194: #define REQUESTFILE    "/usr/lib/postscript/ps.requests"
        !           195: #define ROUNDPAGE      "/usr/lib/postscript/roundpage.ps"
        !           196: 
        !           197: #define ENCODINGDIR    "/usr/lib/postscript"
        !           198: #define HOSTDIR                "/usr/lib/font/postscript"
        !           199: #define FONTDIR                "/usr/lib/font"
        !           200: #define POSTLIBDIR     "/usr/lib/postscript"
        !           201: #define TEMPDIR                "/tmp"
        !           202: 
        !           203: 0707070014230357551006400057030057030000011024350522633073100002600000002157post.src/common/gen.h/*
        !           204:  *
        !           205:  * A few definitions that shouldn't have to change. Used by most programs in
        !           206:  * this package.
        !           207:  *
        !           208:  */
        !           209: 
        !           210: #define PROGRAMVERSION "3.3.2"
        !           211: 
        !           212: #define NON_FATAL      0
        !           213: #define FATAL          1
        !           214: #define USER_FATAL     2
        !           215: 
        !           216: #define OFF            0
        !           217: #define ON             1
        !           218: 
        !           219: #define FALSE          0
        !           220: #define TRUE           1
        !           221: 
        !           222: #define BYTE           8
        !           223: #define BMASK          0377
        !           224: 
        !           225: #define POINTS         72.3
        !           226: 
        !           227: #ifndef PI
        !           228: #define PI             3.141592654
        !           229: #endif
        !           230: 
        !           231: #define ONEBYTE                0
        !           232: #define UTFENCODING    1
        !           233: 
        !           234: #define READING                ONEBYTE
        !           235: #define WRITING                ONEBYTE
        !           236: 
        !           237: /*
        !           238:  *
        !           239:  * DOROUND controls whether some translators include file ROUNDPAGE (path.h)
        !           240:  * after the prologue. Used to round page dimensions obtained from the clippath
        !           241:  * to know paper sizes. Enabled by setting DOROUND to TRUE (or 1).
        !           242:  *
        !           243:  */
        !           244: 
        !           245: #define DOROUND        TRUE
        !           246: 
        !           247: /*
        !           248:  *
        !           249:  * Default resolution and the height and width of a page (in case we need to get
        !           250:  * to upper left corner) - only used in BoundingBox calculations!!
        !           251:  *
        !           252:  */
        !           253: 
        !           254: #define DEFAULT_RES    72
        !           255: #define PAGEHEIGHT     11.0 * DEFAULT_RES
        !           256: #define PAGEWIDTH      8.5 * DEFAULT_RES
        !           257: 
        !           258: /*
        !           259:  *
        !           260:  * Simple macros.
        !           261:  *
        !           262:  */
        !           263: 
        !           264: #define ABS(A)         ((A) >= 0 ? (A) : -(A))
        !           265: #define MIN(A, B)      ((A) < (B) ? (A) : (B))
        !           266: #define MAX(A, B)      ((A) > (B) ? (A) : (B))
        !           267: 
        !           268: 0707070014230361501006440057030057030000011040500522627500500002700000007564post.src/common/misc.c/*
        !           269:  *
        !           270:  * General purpose routines.
        !           271:  *
        !           272:  */
        !           273: 
        !           274: #include <stdio.h>
        !           275: #include <ctype.h>
        !           276: #include <fcntl.h>
        !           277: 
        !           278: #include "gen.h"
        !           279: #include "ext.h"
        !           280: #include "path.h"
        !           281: 
        !           282: int    nolist = 0;                     /* number of specified ranges */
        !           283: int    olist[50];                      /* processing range pairs */
        !           284: 
        !           285: /*****************************************************************************/
        !           286: 
        !           287: out_list(str)
        !           288: 
        !           289:     char       *str;
        !           290: 
        !           291: {
        !           292: 
        !           293:     int                start, stop;
        !           294: 
        !           295: /*
        !           296:  *
        !           297:  * Grab page ranges from str, save them in olist[], and update the nolist
        !           298:  * count. Range syntax matches nroff/troff syntax.
        !           299:  *
        !           300:  */
        !           301: 
        !           302:     while ( *str && nolist < sizeof(olist) - 2 ) {
        !           303:        start = stop = str_convert(&str, 0);
        !           304: 
        !           305:        if ( *str == '-' && *str++ )
        !           306:            stop = str_convert(&str, 9999);
        !           307: 
        !           308:        if ( start > stop )
        !           309:            error(FATAL, "illegal range %d-%d", start, stop);
        !           310: 
        !           311:        olist[nolist++] = start;
        !           312:        olist[nolist++] = stop;
        !           313: 
        !           314:        if ( *str != '\0' ) str++;
        !           315:     }  /* End while */
        !           316: 
        !           317:     olist[nolist] = 0;
        !           318: 
        !           319: }   /* End of out_list */
        !           320: 
        !           321: /*****************************************************************************/
        !           322: 
        !           323: in_olist(num)
        !           324: 
        !           325:     int                num;
        !           326: 
        !           327: {
        !           328: 
        !           329:     int                i;
        !           330: 
        !           331: /*
        !           332:  *
        !           333:  * Return ON if num is in the current page range list. Print everything if
        !           334:  * there's no list.
        !           335:  *
        !           336:  */
        !           337:     if ( nolist == 0 )
        !           338:        return(ON);
        !           339: 
        !           340:     for ( i = 0; i < nolist; i += 2 )
        !           341:        if ( num >= olist[i] && num <= olist[i+1] )
        !           342:            return(ON);
        !           343: 
        !           344:     return(OFF);
        !           345: 
        !           346: }   /* End of in_olist */
        !           347: 
        !           348: /*****************************************************************************/
        !           349: 
        !           350: setencoding(name)
        !           351: 
        !           352:     char       *name;
        !           353: 
        !           354: {
        !           355: 
        !           356:     char       path[150];
        !           357: 
        !           358: /*
        !           359:  *
        !           360:  * Include the font encoding file selected by name. It's a full pathname if
        !           361:  * it begins with /, otherwise append suffix ".enc" and look for the file in
        !           362:  * ENCODINGDIR. Missing files are silently ignored.
        !           363:  *
        !           364:  */
        !           365: 
        !           366:     if ( name == NULL )
        !           367:        name = "Default";
        !           368: 
        !           369:     if ( *name == '/' )
        !           370:        strcpy(path, name);
        !           371:     else sprintf(path, "%s/%s.enc", ENCODINGDIR, name);
        !           372: 
        !           373:     if ( cat(path) == TRUE )
        !           374:        writing = strncmp(name, "UTF", 3) == 0;
        !           375: 
        !           376: }   /* End of setencoding */
        !           377: 
        !           378: /*****************************************************************************/
        !           379: 
        !           380: cat(file)
        !           381: 
        !           382:     char       *file;
        !           383: 
        !           384: {
        !           385: 
        !           386:     int                fd_in;
        !           387:     int                fd_out;
        !           388:     char       buf[512];
        !           389:     int                count;
        !           390: 
        !           391: /*
        !           392:  *
        !           393:  * Copy *file to stdout. Return FALSE is there was a problem.
        !           394:  *
        !           395:  */
        !           396: 
        !           397:     fflush(stdout);
        !           398: 
        !           399:     if ( (fd_in = open(file, O_RDONLY)) == -1 )
        !           400:        return(FALSE);
        !           401: 
        !           402:     fd_out = fileno(stdout);
        !           403:     while ( (count = read(fd_in, buf, sizeof(buf))) > 0 )
        !           404:        write(fd_out, buf, count);
        !           405: 
        !           406:     close(fd_in);
        !           407: 
        !           408:     return(TRUE);
        !           409: 
        !           410: }   /* End of cat */
        !           411: 
        !           412: /*****************************************************************************/
        !           413: 
        !           414: str_convert(str, err)
        !           415: 
        !           416:     char       **str;
        !           417:     int                err;
        !           418: 
        !           419: {
        !           420: 
        !           421:     int                i;
        !           422: 
        !           423: /*
        !           424:  *
        !           425:  * Grab the next integer from **str and return its value or err if *str
        !           426:  * isn't an integer. *str is modified after each digit is read.
        !           427:  *
        !           428:  */
        !           429: 
        !           430:     if ( ! isdigit(**str) )
        !           431:        return(err);
        !           432: 
        !           433:     for ( i = 0; isdigit(**str); *str += 1 )
        !           434:        i = 10 * i + **str - '0';
        !           435: 
        !           436:     return(i);
        !           437: 
        !           438: }   /* End of str_convert */
        !           439: 
        !           440: /*****************************************************************************/
        !           441: 
        !           442: error(kind, mesg, a1, a2, a3)
        !           443: 
        !           444:     int                kind;
        !           445:     char       *mesg;
        !           446:     unsigned   a1, a2, a3;
        !           447: 
        !           448: {
        !           449: 
        !           450: /*
        !           451:  *
        !           452:  * Print an error message and quit if kind is FATAL.
        !           453:  *
        !           454:  */
        !           455: 
        !           456:     if ( mesg != NULL && *mesg != '\0' ) {
        !           457:        fprintf(stderr, "%s: ", prog_name);
        !           458:        fprintf(stderr, mesg, a1, a2, a3);
        !           459:        if ( lineno > 0 )
        !           460:            fprintf(stderr, " (line %d)", lineno);
        !           461:        if ( position > 0 )
        !           462:            fprintf(stderr, " (near byte %d)", position);
        !           463:        putc('\n', stderr);
        !           464:     }  /* End if */
        !           465: 
        !           466:     if ( kind == FATAL && ignore == OFF ) {
        !           467:        if ( temp_file != NULL )
        !           468:            unlink(temp_file);
        !           469:        exit(x_stat | 01);
        !           470:     }  /* End if */
        !           471: 
        !           472: }   /* End of error */
        !           473: 
        !           474: /*****************************************************************************/
        !           475: 
        !           476: void interrupt(sig)
        !           477: 
        !           478:     int                sig;
        !           479: 
        !           480: {
        !           481: 
        !           482: /*
        !           483:  *
        !           484:  * Signal handler for translators.
        !           485:  *
        !           486:  */
        !           487: 
        !           488:     if ( temp_file != NULL )
        !           489:        unlink(temp_file);
        !           490: 
        !           491:     exit(1);
        !           492: 
        !           493: }   /* End of interrupt */
        !           494: 
        !           495: /*****************************************************************************/
        !           496: 
        !           497: 0707070014230361511006440057030057030000011040540522627500500002600000002032post.src/common/ext.h/*
        !           498:  *
        !           499:  * External varibles - most are in glob.c.
        !           500:  *
        !           501:  */
        !           502: 
        !           503: extern char    **argv;                 /* global so everyone can use them */
        !           504: extern int     argc;
        !           505: 
        !           506: extern int     x_stat;                 /* program exit status */
        !           507: extern int     debug;                  /* debug flag */
        !           508: extern int     ignore;                 /* what we do with FATAL errors */
        !           509: 
        !           510: extern long    lineno;                 /* line number */
        !           511: extern long    position;               /* byte position */
        !           512: extern char    *prog_name;             /* and program name - for errors */
        !           513: extern char    *temp_file;             /* temporary file - for some programs */
        !           514: extern char    *fontencoding;          /* text font encoding scheme */
        !           515: 
        !           516: extern int     dobbox;                 /* enable BoundingBox stuff if TRUE */
        !           517: extern double  pageheight;             /* only for BoundingBox calculations! */
        !           518: extern double  pagewidth;
        !           519: 
        !           520: extern int     reading;                /* input */
        !           521: extern int     writing;                /* and output encoding */
        !           522: 
        !           523: extern char    *optarg;                /* for getopt() */
        !           524: extern int     optind;
        !           525: 
        !           526: extern void    interrupt();
        !           527: extern char    *malloc();
        !           528: extern char    *calloc();
        !           529: extern char    *tempnam();
        !           530: extern char    *strtok();
        !           531: extern long    ftell();
        !           532: extern double  atof();
        !           533: extern double  sqrt();
        !           534: extern double  atan2();
        !           535: 
        !           536: 0707070014230361521006440057030057030000011040170522627500500002700000001461post.src/common/glob.c/*
        !           537:  *
        !           538:  * Global varibles - for PostScript translators.
        !           539:  *
        !           540:  */
        !           541: 
        !           542: #include <stdio.h>
        !           543: #include "gen.h"
        !           544: 
        !           545: char   **argv;                         /* global so everyone can use them */
        !           546: int    argc;
        !           547: 
        !           548: int    x_stat = 0;                     /* program exit status */
        !           549: int    debug = OFF;                    /* debug flag */
        !           550: int    ignore = OFF;                   /* what we do with FATAL errors */
        !           551: 
        !           552: long   lineno = 0;                     /* line number */
        !           553: long   position = 0;                   /* byte position */
        !           554: char   *prog_name = "";                /* and program name - for errors */
        !           555: char   *temp_file = NULL;              /* temporary file - for some programs */
        !           556: char   *fontencoding = NULL;           /* text font encoding scheme */
        !           557: 
        !           558: int    dobbox = FALSE;                 /* enable BoundingBox stuff if TRUE */
        !           559: double pageheight = PAGEHEIGHT;        /* only for BoundingBox calculations! */
        !           560: double pagewidth = PAGEWIDTH;
        !           561: 
        !           562: int    reading = READING;              /* input */
        !           563: int    writing = WRITING;              /* and output encoding */
        !           564: 
        !           565: 0707070014230361531006440057030057030000011040700522627500500003300000007534post.src/common/comments.h/*
        !           566:  *
        !           567:  * Currently defined file structuring comments from Adobe - plus a few others.
        !           568:  * Ones that end with a colon expect arguments, while those ending with a newline
        !           569:  * stand on their own. Truly overkill on Adobe's part and mine for including them
        !           570:  * all!
        !           571:  *
        !           572:  * All PostScript files should begin with a header that starts with one of the
        !           573:  * following comments.
        !           574:  *
        !           575:  */
        !           576: 
        !           577: #define NONCONFORMING                  "%!PS\n"
        !           578: #define MINCONFORMING                  "%!PS-Adobe-\n"
        !           579: #define OLDCONFORMING                  "%!PS-Adobe-1.0\n"
        !           580: 
        !           581: #define CONFORMING                     "%!PS-Adobe-2.0\n"
        !           582: #define CONFORMINGEPS                  "%!PS-Adobe-2.0 EPS\n"
        !           583: #define CONFORMINGQUERY                        "%!PS-Adobe-2.0 Query\n"
        !           584: #define CONFORMINGEXITSERVER           "%!PS-Adobe-2.0 ExitServer\n"
        !           585: 
        !           586: /*
        !           587:  *
        !           588:  * Header comments - immediately follow the appropriate document classification
        !           589:  * comment.
        !           590:  *
        !           591:  */
        !           592: 
        !           593: #define TITLE                          "%%Title:"
        !           594: #define CREATOR                                "%%Creator:"
        !           595: #define CREATIONDATE                   "%%CreationDate:"
        !           596: #define FOR                            "%%For:"
        !           597: #define ROUTING                                "%%Routing:"
        !           598: #define BOUNDINGBOX                    "%%BoundingBox:"
        !           599: #define PAGES                          "%%Pages:"
        !           600: #define REQUIREMENTS                   "%%Requirements:"
        !           601: 
        !           602: #define DOCUMENTFONTS                  "%%DocumentFonts:"
        !           603: #define DOCUMENTNEEDEDFONTS            "%%DocumentNeededFonts:"
        !           604: #define DOCUMENTSUPPLIEDFONTS          "%%DocumentSuppliedFonts:"
        !           605: #define DOCUMENTNEEDEDPROCSETS         "%%DocumentNeededProcSets:"
        !           606: #define DOCUMENTSUPPLIEDPROCSETS       "%%DocumentSuppliedProcSets:"
        !           607: #define DOCUMENTNEEDEDFILES            "%%DocumentNeededFiles:"
        !           608: #define DOCUMENTSUPPLIEDFILES          "%%DocumentSuppliedFiles:"
        !           609: #define DOCUMENTPAPERSIZES             "%%DocumentPaperSizes:"
        !           610: #define DOCUMENTPAPERFORMS             "%%DocumentPaperForms:"
        !           611: #define DOCUMENTPAPERCOLORS            "%%DocumentPaperColors:"
        !           612: #define DOCUMENTPAPERWEIGHTS           "%%DocumentPaperWeights:"
        !           613: #define DOCUMENTPRINTERREQUIRED                "%%DocumentPrinterREquired:"
        !           614: #define ENDCOMMENTS                    "%%EndComments\n"
        !           615: #define ENDPROLOG                      "%%EndProlog\n"
        !           616: 
        !           617: /*
        !           618:  *
        !           619:  * Body comments - can appear anywhere in a document.
        !           620:  *
        !           621:  */
        !           622: 
        !           623: #define BEGINSETUP                     "%%BeginSetup\n"
        !           624: #define ENDSETUP                       "%%EndSetup\n"
        !           625: #define BEGINDOCUMENT                  "%%BeginDocument:"
        !           626: #define ENDDOCUMENT                    "%%EndDocument\n"
        !           627: #define BEGINFILE                      "%%BeginFile:"
        !           628: #define ENDFILE                                "%%EndFile\n"
        !           629: #define BEGINPROCSET                   "%%BeginProcSet:"
        !           630: #define ENDPROCSET                     "%%EndProcSet\n"
        !           631: #define BEGINBINARY                    "%%BeginBinary:"
        !           632: #define ENDBINARY                      "%%EndBinary\n"
        !           633: #define BEGINPAPERSIZE                 "%%BeginePaperSize:"
        !           634: #define ENDPAPERSIZE                   "%%EndPaperSize\n"
        !           635: #define BEGINFEATURE                   "%%BeginFeature:"
        !           636: #define ENDFEATURE                     "%%EndFeature\n"
        !           637: #define BEGINEXITSERVER                        "%%BeginExitServer:"
        !           638: #define ENDEXITSERVER                  "%%EndExitServer\n"
        !           639: #define TRAILER                                "%%Trailer\n"
        !           640: 
        !           641: /*
        !           642:  *
        !           643:  * Page level comments - usually will occur once per page.
        !           644:  *
        !           645:  */
        !           646: 
        !           647: #define PAGE                           "%%Page:"
        !           648: #define PAGEFONTS                      "%%PageFonts:"
        !           649: #define PAGEFILES                      "%%PageFiles:"
        !           650: #define PAGEBOUNDINGBOX                        "%%PageBoundingBox:"
        !           651: #define BEGINPAGESETUP                 "%%BeginPageSetup\n"
        !           652: #define BEGINOBJECT                    "%%BeginObject:"
        !           653: #define ENDOBJECT                      "%%EndObject\n"
        !           654: 
        !           655: /*
        !           656:  *
        !           657:  * Resource requirements - again can appear anywhere in a document.
        !           658:  *
        !           659:  */
        !           660: 
        !           661: #define INCLUDEFONT                    "%%IncludeFont:"
        !           662: #define INCLUDEPROCSET                 "%%IncludeProcSet:"
        !           663: #define INCLUDEFILE                    "%%IncludeFile:"
        !           664: #define EXECUTEFILE                    "%%ExecuteFile:"
        !           665: #define CHANGEFONT                     "%%ChangeFont:"
        !           666: #define PAPERFORM                      "%%PaparForm:"
        !           667: #define PAPERCOLOR                     "%%PaperColor:"
        !           668: #define PAPERWEIGHT                    "%%PaperWeight:"
        !           669: #define PAPERSIZE                      "%%PaperSize:"
        !           670: #define FEATURE                                "%%Feature:"
        !           671: #define ENDOFFILE                      "%%EOF\n"
        !           672: 
        !           673: #define CONTINUECOMMENT                        "%%+"
        !           674: #define ATEND                          "(atend)"
        !           675: 
        !           676: /*
        !           677:  *
        !           678:  * Some non-standard document comments. Global definitions are occasionally used
        !           679:  * in dpost and are marked by BEGINGLOBAL and ENDGLOBAL. The resulting document
        !           680:  * violates page independence, but can easily be converted to a conforming file
        !           681:  * using a utililty program.
        !           682:  *
        !           683:  */
        !           684: 
        !           685: #define BEGINSCRIPT                    "%%BeginScript\n"
        !           686: #define BEGINGLOBAL                    "%%BeginGlobal\n"
        !           687: #define ENDGLOBAL                      "%%EndGlobal\n"
        !           688: #define ENDPAGE                                "%%EndPage:"
        !           689: #define FORMSPERPAGE                   "%%FormsPerPage:"
        !           690: #define VERSION                                "%%Version:"
        !           691: 
        !           692: 0707070014230361541006440057030057030000011041100522627500600002700000012551post.src/common/bbox.c/*
        !           693:  *
        !           694:  * Boundingbox code for PostScript translators. The boundingbox for each page
        !           695:  * is accumulated in bbox - the one for the whole document goes in docbbox. A
        !           696:  * call to writebbox() puts out an appropriate comment, updates docbbox, and
        !           697:  * resets bbox for the next page. The assumption made at the end of writebbox()
        !           698:  * is that we're really printing the current page only if output is now going
        !           699:  * to stdout - a valid assumption for all supplied translators. Needs the math
        !           700:  * library.
        !           701:  *
        !           702:  */
        !           703: 
        !           704: #include <stdio.h>
        !           705: #include <ctype.h>
        !           706: #include <fcntl.h>
        !           707: #include <math.h>
        !           708: 
        !           709: #include "comments.h"                  /* PostScript file structuring comments */
        !           710: #include "gen.h"                       /* a few general purpose definitions */
        !           711: #include "ext.h"                       /* external variable declarations */
        !           712: 
        !           713: typedef struct bbox {
        !           714:        int     set;
        !           715:        double  llx, lly;
        !           716:        double  urx, ury;
        !           717: } Bbox;
        !           718: 
        !           719: Bbox   bbox = {FALSE, 0.0, 0.0, 0.0, 0.0};
        !           720: Bbox   docbbox = {FALSE, 0.0, 0.0, 0.0, 0.0};
        !           721: 
        !           722: double ctm[6] = {1.0, 0.0, 0.0, 1.0, 0.0, 0.0};
        !           723: double matrix1[6], matrix2[6];
        !           724: 
        !           725: /*****************************************************************************/
        !           726: 
        !           727: cover(x, y)
        !           728: 
        !           729:     double     x, y;
        !           730: 
        !           731: {
        !           732: 
        !           733: /*
        !           734:  *
        !           735:  * Adds point (x, y) to bbox. Coordinates are in user space - the transformation
        !           736:  * to default coordinates happens in writebbox().
        !           737:  *
        !           738:  */
        !           739: 
        !           740:     if ( bbox.set == FALSE ) {
        !           741:        bbox.llx = bbox.urx = x;
        !           742:        bbox.lly = bbox.ury = y;
        !           743:        bbox.set = TRUE;
        !           744:     } else {
        !           745:        if ( x < bbox.llx )
        !           746:            bbox.llx = x;
        !           747:        if ( y < bbox.lly )
        !           748:            bbox.lly = y;
        !           749:        if ( x > bbox.urx )
        !           750:            bbox.urx = x;
        !           751:        if ( y > bbox.ury )
        !           752:            bbox.ury = y;
        !           753:     }  /* End else */
        !           754: 
        !           755: }   /* End of cover */
        !           756: 
        !           757: /*****************************************************************************/
        !           758: 
        !           759: writebbox(fp, keyword, slop)
        !           760: 
        !           761:     FILE       *fp;                    /* the comment is written here */
        !           762:     char       *keyword;               /* the boundingbox comment string */
        !           763:     int                slop;                   /* expand (or contract?) the box a bit */
        !           764: 
        !           765: {
        !           766: 
        !           767:     Bbox       ubbox;                  /* user space bounding box */
        !           768:     double     x, y;
        !           769: 
        !           770: /*
        !           771:  *
        !           772:  * Transforms the numbers in the bbox[] using ctm[], adjusts the corners a bit
        !           773:  * (depending on slop) and then writes comment. If *keyword is BoundingBox use
        !           774:  * whatever's been saved in docbbox, otherwise assume the comment is just for
        !           775:  * the current page.
        !           776:  *
        !           777:  */
        !           778: 
        !           779:     if ( strcmp(keyword, BOUNDINGBOX) == 0 )
        !           780:        bbox = docbbox;
        !           781: 
        !           782:     if ( bbox.set == TRUE ) {
        !           783:        ubbox = bbox;
        !           784:        bbox.set = FALSE;               /* so cover() works properly */
        !           785:        x = ctm[0] * ubbox.llx + ctm[2] * ubbox.lly + ctm[4];
        !           786:        y = ctm[1] * ubbox.llx + ctm[3] * ubbox.lly + ctm[5];
        !           787:        cover(x, y);
        !           788:        x = ctm[0] * ubbox.llx + ctm[2] * ubbox.ury + ctm[4];
        !           789:        y = ctm[1] * ubbox.llx + ctm[3] * ubbox.ury + ctm[5];
        !           790:        cover(x, y);
        !           791:        x = ctm[0] * ubbox.urx + ctm[2] * ubbox.ury + ctm[4];
        !           792:        y = ctm[1] * ubbox.urx + ctm[3] * ubbox.ury + ctm[5];
        !           793:        cover(x, y);
        !           794:        x = ctm[0] * ubbox.urx + ctm[2] * ubbox.lly + ctm[4];
        !           795:        y = ctm[1] * ubbox.urx + ctm[3] * ubbox.lly + ctm[5];
        !           796:        cover(x, y);
        !           797:        bbox.llx -= slop + 0.5;
        !           798:        bbox.lly -= slop + 0.5;
        !           799:        bbox.urx += slop + 0.5;
        !           800:        bbox.ury += slop + 0.5;
        !           801:        fprintf(fp, "%s %d %d %d %d\n", keyword, (int)bbox.llx, (int)bbox.lly,(int)bbox.urx, (int)bbox.ury);
        !           802:        bbox = ubbox;
        !           803:     }  /* End if */
        !           804: 
        !           805:     resetbbox((fp == stdout) ? TRUE : FALSE);
        !           806: 
        !           807: }   /* End of writebbox */
        !           808: 
        !           809: /*****************************************************************************/
        !           810: 
        !           811: resetbbox(output)
        !           812: 
        !           813:     int                output;
        !           814: 
        !           815: {
        !           816: 
        !           817: /*
        !           818:  *
        !           819:  * Adds bbox to docbbox and resets bbox for the next page. Only update docbbox
        !           820:  * if we really did output on the last page.
        !           821:  *
        !           822:  */
        !           823: 
        !           824:     if ( docbbox.set == TRUE ) {
        !           825:        cover(docbbox.llx, docbbox.lly);
        !           826:        cover(docbbox.urx, docbbox.ury);
        !           827:     }  /* End if */
        !           828: 
        !           829:     if ( output == TRUE ) {
        !           830:        docbbox = bbox;
        !           831:        docbbox.set = TRUE;
        !           832:     }  /* End if */
        !           833: 
        !           834:     bbox.set = FALSE;
        !           835: 
        !           836: }   /* End of resetbbox */
        !           837: 
        !           838: /*****************************************************************************/
        !           839: 
        !           840: scale(sx, sy)
        !           841: 
        !           842:     double     sx, sy;
        !           843: 
        !           844: {
        !           845: 
        !           846: /*
        !           847:  *
        !           848:  * Scales the default matrix.
        !           849:  *
        !           850:  */
        !           851: 
        !           852:     matrix1[0] = sx;
        !           853:     matrix1[1] = 0;
        !           854:     matrix1[2] = 0;
        !           855:     matrix1[3] = sy;
        !           856:     matrix1[4] = 0;
        !           857:     matrix1[5] = 0;
        !           858: 
        !           859:     concat(matrix1);
        !           860: 
        !           861: }   /* End of scale */
        !           862: 
        !           863: /*****************************************************************************/
        !           864: 
        !           865: translate(tx, ty)
        !           866: 
        !           867:     double     tx, ty;
        !           868: 
        !           869: {
        !           870: 
        !           871: /*
        !           872:  *
        !           873:  * Translates the default matrix.
        !           874:  *
        !           875:  */
        !           876: 
        !           877:     matrix1[0] = 1.0;
        !           878:     matrix1[1] = 0.0;
        !           879:     matrix1[2] = 0.0;
        !           880:     matrix1[3] = 1.0;
        !           881:     matrix1[4] = tx;
        !           882:     matrix1[5] = ty;
        !           883: 
        !           884:     concat(matrix1);
        !           885: 
        !           886: }   /* End of translate */
        !           887: 
        !           888: /*****************************************************************************/
        !           889: 
        !           890: rotate(angle)
        !           891: 
        !           892:     double     angle;
        !           893: 
        !           894: {
        !           895: 
        !           896: /*
        !           897:  *
        !           898:  * Rotates by angle degrees.
        !           899:  *
        !           900:  */
        !           901: 
        !           902:     angle *= 3.1416 / 180;
        !           903: 
        !           904:     matrix1[0] = matrix1[3] = cos(angle);
        !           905:     matrix1[1] = sin(angle);
        !           906:     matrix1[2] = -matrix1[1];
        !           907:     matrix1[4] = 0.0;
        !           908:     matrix1[5] = 0.0;
        !           909: 
        !           910:     concat(matrix1);
        !           911: 
        !           912: }   /* End of rotate */
        !           913: 
        !           914: /*****************************************************************************/
        !           915: 
        !           916: concat(m1)
        !           917: 
        !           918:     double     m1[];
        !           919: 
        !           920: {
        !           921: 
        !           922:     double     m2[6];
        !           923: 
        !           924: /*
        !           925:  *
        !           926:  * Replaces the ctm[] by the result of the matrix multiplication m1[] x ctm[].
        !           927:  *
        !           928:  */
        !           929: 
        !           930:     m2[0] = ctm[0];
        !           931:     m2[1] = ctm[1];
        !           932:     m2[2] = ctm[2];
        !           933:     m2[3] = ctm[3];
        !           934:     m2[4] = ctm[4];
        !           935:     m2[5] = ctm[5];
        !           936: 
        !           937:     ctm[0] = m1[0] * m2[0] + m1[1] * m2[2];
        !           938:     ctm[1] = m1[0] * m2[1] + m1[1] * m2[3];
        !           939:     ctm[2] = m1[2] * m2[0] + m1[3] * m2[2];
        !           940:     ctm[3] = m1[2] * m2[1] + m1[3] * m2[3];
        !           941:     ctm[4] = m1[4] * m2[0] + m1[5] * m2[2] + m2[4];
        !           942:     ctm[5] = m1[4] * m2[1] + m1[5] * m2[3] + m2[5];
        !           943: 
        !           944: }   /* End of concat */
        !           945: 
        !           946: /*****************************************************************************/
        !           947: 
        !           948: 0707070014230361551006440057030057030000011040560522627500600003500000001604post.src/common/pathtemplate/*
        !           949:  *
        !           950:  * pathname definitions for important files and directories.
        !           951:  *
        !           952:  */
        !           953: 
        !           954: #define DPOST          "POSTLIB/dpost.ps"
        !           955: #define POSTBGI                "POSTLIB/postbgi.ps"
        !           956: #define POSTDAISY      "POSTLIB/postdaisy.ps"
        !           957: #define POSTDMD                "POSTLIB/postdmd.ps"
        !           958: #define POSTMD         "POSTLIB/postmd.ps"
        !           959: #define POSTPLOT       "POSTLIB/postplot.ps"
        !           960: #define POSTPRINT      "POSTLIB/postprint.ps"
        !           961: #define POSTNPRINT     "POSTLIB/postnprint.ps"
        !           962: #define POSTTEK                "POSTLIB/posttek.ps"
        !           963: #define POSTGIF                "POSTLIB/postgif.ps"
        !           964: 
        !           965: #define BASELINE       "POSTLIB/baseline.ps"
        !           966: #define COLOR          "POSTLIB/color.ps"
        !           967: #define DRAW           "POSTLIB/draw.ps"
        !           968: #define FORMFILE       "POSTLIB/forms.ps"
        !           969: #define SHADEFILE      "POSTLIB/shade.ps"
        !           970: #define KERNING                "POSTLIB/kerning.ps"
        !           971: #define REQUESTFILE    "POSTLIB/ps.requests"
        !           972: #define ROUNDPAGE      "POSTLIB/roundpage.ps"
        !           973: 
        !           974: #define ENCODINGDIR    "POSTLIB"
        !           975: #define HOSTDIR                "HOSTDIR"
        !           976: #define FONTDIR                "FONTDIR"
        !           977: #define POSTLIBDIR     "POSTLIB"
        !           978: #define TEMPDIR                "/tmp"
        !           979: 
        !           980: 0707070014230357541006400057030057030000011040360522633073100003200000002342post.src/common/common.mkMAKE=/bin/make
        !           981: MAKEFILE=common.mk
        !           982: 
        !           983: SYSTEM=V9
        !           984: VERSION=3.3.2
        !           985: 
        !           986: FONTDIR=/usr/lib/font
        !           987: HOSTDIR=/usr/lib/font/postscript
        !           988: POSTLIB=/usr/lib/postscript
        !           989: 
        !           990: ROUNDPAGE=TRUE
        !           991: 
        !           992: CFLGS=-O
        !           993: LDFLGS=-s
        !           994: 
        !           995: CFLAGS=$(CFLGS)
        !           996: LDFLAGS=$(LDFLGS)
        !           997: 
        !           998: all :
        !           999: 
        !          1000: install : all
        !          1001: 
        !          1002: clean :
        !          1003:        rm -f *.o
        !          1004: 
        !          1005: clobber : clean
        !          1006: 
        !          1007: bbox.o : bbox.c ext.h gen.h
        !          1008:        $(CC) $(CFLAGS) -c bbox.c
        !          1009: 
        !          1010: glob.o : glob.c gen.h
        !          1011:        $(CC) $(CFLAGS) -c glob.c
        !          1012: 
        !          1013: misc.o : misc.c ext.h gen.h path.h
        !          1014:        $(CC) $(CFLAGS) -c misc.c
        !          1015: 
        !          1016: request.o : request.c gen.h path.h request.h
        !          1017:        $(CC) $(CFLAGS) -c request.c
        !          1018: 
        !          1019: rune.o : rune.c rune.h
        !          1020:        $(CC) $(CFLAGS) -c rune.c
        !          1021: 
        !          1022: tempnam.o : tempnam.c
        !          1023:        $(CC) $(CFLAGS) -D$(SYSTEM) -c tempnam.c
        !          1024: 
        !          1025: changes :
        !          1026:        @trap "" 1 2 3 15; \
        !          1027:        sed \
        !          1028:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
        !          1029:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
        !          1030:            -e "s'^FONTDIR=.*'FONTDIR=$(FONTDIR)'" \
        !          1031:            -e "s'^HOSTDIR=.*'HOSTDIR=$(HOSTDIR)'" \
        !          1032:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
        !          1033:            -e "s'^ROUNDPAGE=.*'ROUNDPAGE=$(ROUNDPAGE)'" \
        !          1034:        $(MAKEFILE) >XXX.mk; \
        !          1035:        mv XXX.mk $(MAKEFILE); \
        !          1036:        sed \
        !          1037:            -e 's:"FONTDIR:"$(FONTDIR):' \
        !          1038:            -e 's:"HOSTDIR:"$(HOSTDIR):' \
        !          1039:            -e 's:"POSTLIB:"$(POSTLIB):' \
        !          1040:        pathtemplate >path.h; \
        !          1041:        sed \
        !          1042:            -e "s'^#define.*DOROUND.*'#define DOROUND   $(ROUNDPAGE)'" \
        !          1043:        gen.h >Xgen.h; \
        !          1044:        mv Xgen.h gen.h
        !          1045: 
        !          1046: 0707070014230361571006440057030057030000011040570522627500600002700000000566post.src/common/rune.h/*
        !          1047:  *
        !          1048:  * Rune declarations - for supporting UTF encoding.
        !          1049:  *
        !          1050:  */
        !          1051: 
        !          1052: #define RUNELIB                1
        !          1053: 
        !          1054: #ifdef RUNELIB
        !          1055: typedef unsigned short Rune;
        !          1056: 
        !          1057: enum
        !          1058: {
        !          1059:        UTFmax          = 3,            /* maximum bytes per rune */
        !          1060:        Runesync        = 0x21,         /* cannot represent part of a utf sequence (<) */
        !          1061:        Runeself        = 0xA0,         /* rune and utf sequences are the same (<) */
        !          1062:        Runeerror       = 0x80,         /* decoding error in utf */
        !          1063: };
        !          1064: #endif
        !          1065: 0707070014230361601006440057030057030000011040740522627500600002700000004760post.src/common/rune.c/*
        !          1066:  *
        !          1067:  * Rune library routines for supporting UTF encoding.
        !          1068:  *
        !          1069:  */
        !          1070: 
        !          1071: #include "rune.h"
        !          1072: 
        !          1073: #ifdef RUNELIB
        !          1074: enum
        !          1075: {
        !          1076:        Char1   = Runeself,     Rune1   = Runeself,
        !          1077:        Char21  = 0xA1,         Rune21  = 0x0100,
        !          1078:        Char22  = 0xF6,         Rune22  = 0x4016,
        !          1079:        Char3   = 0xFC,         Rune3   = 0x10000,      /* really 0x38E2E */
        !          1080:        Esc     = 0xBE,         Bad     = Runeerror,
        !          1081: };
        !          1082: 
        !          1083: static unsigned char   U[256];
        !          1084: static unsigned char   T[256];
        !          1085: 
        !          1086: static
        !          1087: void
        !          1088: mktable()
        !          1089: {
        !          1090:        int i, u;
        !          1091: 
        !          1092:        for(i=0; i<256; i++) {
        !          1093:                u = i + (0x5E-0xA0);
        !          1094:                if(i < 0xA0)
        !          1095:                        u = i + (0xDF-0x7F);
        !          1096:                if(i < 0x7F)
        !          1097:                        u = i + (0x00-0x21);
        !          1098:                if(i < 0x21)
        !          1099:                        u = i + (0xBE-0x00);
        !          1100:                U[i] = u;
        !          1101:                T[u] = i;
        !          1102:        }
        !          1103: }
        !          1104: 
        !          1105: int
        !          1106: chartorune(rune, str)
        !          1107:        Rune *rune;
        !          1108:        char *str;
        !          1109: {
        !          1110:        int c, c1, c2;
        !          1111:        long l;
        !          1112: 
        !          1113:        if(U[0] == 0)
        !          1114:                mktable();
        !          1115: 
        !          1116:        /*
        !          1117:         * one character sequence
        !          1118:         *      00000-0009F => 00-9F
        !          1119:         */
        !          1120:        c = *(unsigned char*)str;
        !          1121:        if(c < Char1) {
        !          1122:                *rune = c;
        !          1123:                return 1;
        !          1124:        }
        !          1125: 
        !          1126:        /*
        !          1127:         * two character sequence
        !          1128:         *      000A0-000FF => A0; A0-FF
        !          1129:         */
        !          1130:        c1 = *(unsigned char*)(str+1);
        !          1131:        if(c < Char21) {
        !          1132:                if(c1 >= Rune1 && c1 < Rune21) {
        !          1133:                        *rune = c1;
        !          1134:                        return 2;
        !          1135:                }
        !          1136:                goto bad;
        !          1137:        }
        !          1138: 
        !          1139:        /*
        !          1140:         * two character sequence
        !          1141:         *      00100-04015 => A1-F5; 21-7E/A0-FF
        !          1142:         */
        !          1143:        c1 = U[c1];
        !          1144:        if(c1 >= Esc)
        !          1145:                goto bad;
        !          1146:        if(c < Char22) {
        !          1147:                *rune =  (c-Char21)*Esc + c1 + Rune21;
        !          1148:                return 2;
        !          1149:        }
        !          1150: 
        !          1151:        /*
        !          1152:         * three character sequence
        !          1153:         *      04016-38E2D => A6-FB; 21-7E/A0-FF
        !          1154:         */
        !          1155:        c2 = U[*(unsigned char*)(str+2)];
        !          1156:        if(c2 >= Esc)
        !          1157:                goto bad;
        !          1158:        if(c < Char3) {
        !          1159:                l = (c-Char22)*Esc*Esc + c1*Esc + c2 + Rune22;
        !          1160:                if(l >= Rune3)
        !          1161:                        goto bad;
        !          1162:                *rune = l;
        !          1163:                return 3;
        !          1164:        }
        !          1165: 
        !          1166:        /*
        !          1167:         * bad decoding
        !          1168:         */
        !          1169: bad:
        !          1170:        *rune = Bad;
        !          1171:        return 1;
        !          1172: }
        !          1173: 
        !          1174: int
        !          1175: runetochar(str, rune)
        !          1176:        char *str;
        !          1177:        Rune *rune;
        !          1178: {
        !          1179:        long c;
        !          1180: 
        !          1181:        if(T[0] == 0)
        !          1182:                mktable();
        !          1183: 
        !          1184:        /*
        !          1185:         * one character sequence
        !          1186:         *      00000-0009F => 00-9F
        !          1187:         */
        !          1188:        c = *rune;
        !          1189:        if(c < Rune1) {
        !          1190:                str[0] = c;
        !          1191:                return 1;
        !          1192:        }
        !          1193: 
        !          1194:        /*
        !          1195:         * two character sequence
        !          1196:         *      000A0-000FF => A0; A0-FF
        !          1197:         */
        !          1198:        if(c < Rune21) {
        !          1199:                str[0] = Char1;
        !          1200:                str[1] = c;
        !          1201:                return 2;
        !          1202:        }
        !          1203: 
        !          1204:        /*
        !          1205:         * two character sequence
        !          1206:         *      00100-04015 => A1-F5; 21-7E/A0-FF
        !          1207:         */
        !          1208:        if(c < Rune22) {
        !          1209:                c -= Rune21;
        !          1210:                str[0] = c/Esc + Char21;
        !          1211:                str[1] = T[c%Esc];
        !          1212:                return 2;
        !          1213:        }
        !          1214: 
        !          1215:        /*
        !          1216:         * three character sequence
        !          1217:         *      04016-38E2D => A6-FB; 21-7E/A0-FF
        !          1218:         */
        !          1219:        c -= Rune22;
        !          1220:        str[0] = c/(Esc*Esc) + Char22;
        !          1221:        str[1] = T[c/Esc%Esc];
        !          1222:        str[2] = T[c%Esc];
        !          1223:        return 3;
        !          1224: }
        !          1225: 
        !          1226: int
        !          1227: runelen(c)
        !          1228:        long c;
        !          1229: {
        !          1230:        Rune rune;
        !          1231:        char str[10];
        !          1232: 
        !          1233:        rune = c;
        !          1234:        return runetochar(str, &rune);
        !          1235: }
        !          1236: 
        !          1237: int
        !          1238: fullrune(str, n)
        !          1239:        char *str;
        !          1240:        int n;
        !          1241: {
        !          1242:        int c;
        !          1243: 
        !          1244:        if(n > 0) {
        !          1245:                c = *(unsigned char*)str;
        !          1246:                if(c < Char1)
        !          1247:                        return 1;
        !          1248:                if(n > 1)
        !          1249:                        if(c < Char22 || n > 2)
        !          1250:                                return 1;
        !          1251:        }
        !          1252:        return 0;
        !          1253: }
        !          1254: 
        !          1255: #endif RUNELIB
        !          1256: 0707070014231030400407550057030057030000020277230522633100400001700000000000post.src/dpost0707070014231030411006440057030057030000010277240522627500600002600000002711post.src/dpost/README
        !          1257: Troff to PostScript translator. The big change is in the font table
        !          1258: routines. The old binary format and makedev are gone. Troff and dpost
        !          1259: now both read ASCII tables. Translating the ASCII font tables in dpost
        !          1260: (and troff) means some startup overhead. Both programs run a bit slower,
        !          1261: but it's a small price to pay for the added flexibility.
        !          1262: 
        !          1263: Long PostScript font names can now be included in the font tables.
        !          1264: They should follow the fontname keyword as in,
        !          1265: 
        !          1266:        fontname Times-Roman
        !          1267: 
        !          1268: The fontname field helps with the DocumentFonts comment, font name
        !          1269: abbreviations (formally required to be in the prologue), and is used
        !          1270: to manage host resident fonts.
        !          1271: 
        !          1272: dpost can also now calculate a reasonably tight BoundingBox, which
        !          1273: helps picture inclusion. By default the calculations are disabled.
        !          1274: Use the -B option when you BoundingBox and PageBoundingBox comments.
        !          1275: If you're stubborn and always want the comment set dobbox (in file
        !          1276: dpost.c) to TRUE. You'll still need -B to get the the best fit.
        !          1277: 
        !          1278: Most other changes are bug fixes. Color support has been improved,
        !          1279: and now works with the drawing routines. The different text encoding
        !          1280: schemes are all still in. Level 2 is well tested and is now the default.
        !          1281: For a different default change DFLTENCODING (file dpost.h). Don't make
        !          1282: level 3 the default unless you can live with ragged right margins.
        !          1283: 
        !          1284: A typical command line would be,
        !          1285: 
        !          1286:     pic file | tbl | eqn | troff -mm | dpost >file.ps
        !          1287: 
        !          1288: file.ps is PostScript and can be sent directly to a printer.
        !          1289: 
        !          1290: 0707070014231030421006440057030057030000010277400522627500600002700000015654post.src/dpost/color.c/*
        !          1291:  *
        !          1292:  * Routines that handle color requests passed through as device control commands
        !          1293:  * in the form "x X SetColor:red". The following PostScript procedures are needed:
        !          1294:  *
        !          1295:  *     setcolor
        !          1296:  *
        !          1297:  *       mark /color setcolor mark
        !          1298:  *       mark /color1 /color2 setcolor mark
        !          1299:  *
        !          1300:  *         Called whenever we want to change PostScript's current color graphics
        !          1301:  *         state parameter. One or two color arguments can be given. In each case
        !          1302:  *         the colors are looked up in the PostScript colordict dictionary that's
        !          1303:  *         defined in *colorfile. Two named colors implies reverse video printing
        !          1304:  *         with the background given in /color2 and the text printed in /color1.
        !          1305:  *         Unknown colors are mapped into defaults - black for a single color and
        !          1306:  *         white on black for reverse video.
        !          1307:  *
        !          1308:  *     drawrvbox
        !          1309:  *
        !          1310:  *       leftx rightx drawrvbox -
        !          1311:  *
        !          1312:  *         Fills a box that extends from leftx to rightx with the background color
        !          1313:  *         that was requested when setcolor set things up for reverse video mode.
        !          1314:  *         The vertical extent of the box is determined using FontBBox just before
        !          1315:  *         the first string is printed, and the height remains in effect until
        !          1316:  *         there's an explicit color change. In otherwords font or size changes
        !          1317:  *         won't always produce correct result in reverse video mode.
        !          1318:  *
        !          1319:  *     setdecoding
        !          1320:  *
        !          1321:  *       num setdecoding -
        !          1322:  *
        !          1323:  *         Selects the text decoding procedure (ie. what's assigned to PostScript
        !          1324:  *         procedure t) from the decodingdefs array defined in the prologue. num
        !          1325:  *         should be the value assigned to variable encoding (in dpost) and will
        !          1326:  *         remain constant throughout a job, unless special features, like reverse
        !          1327:  *         video printing, are requested. The text encoding scheme can be set on
        !          1328:  *         the command line using the -e option. Print time and the size of the
        !          1329:  *         output file will usually decrease as the value assigned to encoding
        !          1330:  *         increases.
        !          1331:  *
        !          1332:  *
        !          1333:  * The recognized collection of "x X SetColor:" commands are:
        !          1334:  *
        !          1335:  *     x X SetColor:                           selects black
        !          1336:  *     x X SetColor:color                      selects color
        !          1337:  *     x X SetColor:color1 on color2           reverse video
        !          1338:  *     x X SetColor:color1 color2              reverse video again
        !          1339:  *     x X SetColor:num1 num2 num3 rgb         explicit rgb color request
        !          1340:  *     x X SetColor:num1 num2 num3 hsb         explicit hsb color request
        !          1341:  *
        !          1342:  * In the last three examples num1, num2, and num3 should be numbers between 0 and
        !          1343:  * 1 inclusive and are passed on as aguments to the approrpriate PostScript color
        !          1344:  * command (eg. setrgbcolor). Unknown color names (ie. the ones that setcolor
        !          1345:  * doesn't find in colordict) are mapped into defaults. For one color the default
        !          1346:  * is black, while for reverse video it's white text on a black background.
        !          1347:  *
        !          1348:  * dpost makes sure the current color is maintained across page boundaries, which
        !          1349:  * may not be what you want if you're using a macro package like mm that puts out
        !          1350:  * page footers and headers. Adding a color request to troff and keeping track of
        !          1351:  * the color in each environment may be the best solution.
        !          1352:  *
        !          1353:  * To get reverse video printing follow the "x X SetColor:" command with two or
        !          1354:  * three arguments. "x X SetColor:white on black" or "x X SetColor:white black"
        !          1355:  * both produce white text on a black background. Any two colors named in colordict
        !          1356:  * (in file *colorfile) can be chosen so "x X SetColor:yellow on blue" also works.
        !          1357:  * Each reverse video mode request selects the vertical extent of the background
        !          1358:  * box based on the font and size in use just before the first string is printed.
        !          1359:  * Font and/or size changes aren't guaranteed to work properly in reverse video
        !          1360:  * printing.
        !          1361:  *
        !          1362:  */
        !          1363: 
        !          1364: #include <stdio.h>
        !          1365: #include <ctype.h>
        !          1366: 
        !          1367: #include "gen.h"                       /* general purpose definitions */
        !          1368: #include "ext.h"                       /* external variable definitions */
        !          1369: 
        !          1370: #define DEFAULTCOLOR   "black"
        !          1371: 
        !          1372: char   color[50] = DEFAULTCOLOR;       /* current color */
        !          1373: int    gotcolor = FALSE;               /* TRUE after *colorfile is downloaded */
        !          1374: int    wantcolor = FALSE;              /* TRUE if we really ask for a color */
        !          1375: 
        !          1376: /*
        !          1377:  *
        !          1378:  * All these should be defined in dpost.c.
        !          1379:  *
        !          1380:  */
        !          1381: 
        !          1382: extern int     lastend;
        !          1383: extern int     encoding;
        !          1384: extern int     maxencoding;
        !          1385: extern int     realencoding;
        !          1386: 
        !          1387: extern char    *colorfile;
        !          1388: extern FILE    *tf;
        !          1389: 
        !          1390: /*****************************************************************************/
        !          1391: 
        !          1392: getcolor()
        !          1393: 
        !          1394: {
        !          1395: 
        !          1396: /*
        !          1397:  *
        !          1398:  * Responsible for making sure the PostScript color procedures are downloaded from
        !          1399:  * *colorfile. Done at most once per job, and only if the job really uses color.
        !          1400:  * For now I've decided not to quit if we can't read the color file.
        !          1401:  *
        !          1402:  */
        !          1403: 
        !          1404:     if ( gotcolor == FALSE )
        !          1405:        exportfile(colorfile);
        !          1406: 
        !          1407:     if ( tf == stdout )
        !          1408:        gotcolor = TRUE;
        !          1409: 
        !          1410: }   /* End of getcolor */
        !          1411: 
        !          1412: /*****************************************************************************/
        !          1413: 
        !          1414: newcolor(name)
        !          1415: 
        !          1416:     char       *name;                  /* of the color */
        !          1417: 
        !          1418: {
        !          1419: 
        !          1420:     char       *p;                     /* next character in *name */
        !          1421:     int                i;                      /* goes in color[i] */
        !          1422: 
        !          1423: /*
        !          1424:  *
        !          1425:  * Converts *name to lower case and saves the result in color[] for use as the
        !          1426:  * current color. The first time something other than DEFAULTCOLOR is requested
        !          1427:  * sets wantcolor to TRUE. Characters are converted to lower case as they're put
        !          1428:  * in color[] and we quit when we find a newline or get to the end of *name. The
        !          1429:  * isupper() test is for Berkley systems.
        !          1430:  *
        !          1431:  */
        !          1432: 
        !          1433:     for ( p = name; *p && (*p == ' ' || *p == ':'); p++ ) ;
        !          1434: 
        !          1435:     for ( i = 0; i < sizeof(color) - 1 && *p != '\n' && *p; i++, p++ )
        !          1436:        if ( isupper(*p) )
        !          1437:            color[i] = tolower(*p);
        !          1438:        else color[i] = *p;
        !          1439: 
        !          1440:     if ( i == 0 )
        !          1441:        strcpy(color, DEFAULTCOLOR);
        !          1442:     else color[i] = '\0';
        !          1443: 
        !          1444:     if ( strcmp(color, DEFAULTCOLOR) != 0 )
        !          1445:        wantcolor = TRUE;
        !          1446: 
        !          1447: }   /* End of newcolor */
        !          1448: 
        !          1449: /*****************************************************************************/
        !          1450: 
        !          1451: setcolor()
        !          1452: 
        !          1453: {
        !          1454: 
        !          1455:     int                newencoding;            /* text encoding scheme that's needed */
        !          1456:     char       *p;                     /* for converting what's in color[] */
        !          1457: 
        !          1458: /*
        !          1459:  *
        !          1460:  * Sets the color being used by the printer to whatever's stored as the current
        !          1461:  * color (ie. the string in color[]). wantcolor is only set to TRUE if we've been
        !          1462:  * through newcolor() and asked for something other than DEFAULTCOLOR (probably
        !          1463:  * black). While in reverse video mode encoding gets set to maxencoding + 1 in
        !          1464:  * dpost and 0 on the printer. Didn't see much point in trying to extend reverse
        !          1465:  * video to all the different encoding schemes. realencoding is restored when we
        !          1466:  * leave reverse video mode.
        !          1467:  *
        !          1468:  */
        !          1469: 
        !          1470:     if ( wantcolor == TRUE ) {
        !          1471:        flushtext();
        !          1472:        getcolor();
        !          1473: 
        !          1474:        lastend = -1;
        !          1475:        newencoding = realencoding;
        !          1476: 
        !          1477:        if ( islower(color[0]) == 0 )           /* explicit rgb or hsb request */
        !          1478:            fprintf(tf, "%s\n", color);
        !          1479:        else {
        !          1480:            putc('/', tf);
        !          1481:            for ( p = color; *p && *p != ' '; p++ )
        !          1482:                putc(*p, tf);
        !          1483:            for ( ; *p && *p == ' '; p++ ) ;
        !          1484:            if ( strncmp(p, "on ", 3) == 0 ) p += 3;
        !          1485:            if ( *p != '\0' ) {
        !          1486:                fprintf(tf, " /%s", p);
        !          1487:                newencoding = maxencoding + 1;
        !          1488:            }   /* End if */
        !          1489:            fprintf(tf, " setcolor\n");
        !          1490:        }   /* End else */
        !          1491: 
        !          1492:        if ( newencoding != encoding ) {
        !          1493:            encoding = newencoding;
        !          1494:            fprintf(tf, "%d setdecoding\n", encoding);
        !          1495:            resetpos();
        !          1496:        }   /* End if */
        !          1497:     }  /* End if */
        !          1498: 
        !          1499: }   /* End of setcolor */
        !          1500: 
        !          1501: /*****************************************************************************/
        !          1502: 
        !          1503: 0707070014231027441006400057030057030000010254600522633100400002700000012240post.src/dpost/dpost.1.ds dF /usr/lib/font
        !          1504: .ds dQ /usr/lib/postscript
        !          1505: .TH DPOST 1 "DWB 3.2"
        !          1506: .SH NAME
        !          1507: .B dpost
        !          1508: \-
        !          1509: .B troff
        !          1510: postprocessor for PostScript printers
        !          1511: .SH SYNOPSIS
        !          1512: \*(mBdpost\f1
        !          1513: .OP "" options []
        !          1514: .OP "" files []
        !          1515: .SH DESCRIPTION
        !          1516: .B dpost
        !          1517: translates
        !          1518: .I files
        !          1519: created by
        !          1520: .BR troff (1)
        !          1521: into PostScript and writes the results on the
        !          1522: standard output.
        !          1523: If no
        !          1524: .I files
        !          1525: are specified, or if
        !          1526: .OP \-
        !          1527: is one of the input
        !          1528: .IR files ,
        !          1529: the standard input is read.
        !          1530: The following
        !          1531: .I options
        !          1532: are understood:
        !          1533: .TP 0.75i
        !          1534: .OP \-c num
        !          1535: Print
        !          1536: .I num
        !          1537: copies of each page.
        !          1538: By default only one copy is printed.
        !          1539: .TP
        !          1540: .OP \-m num
        !          1541: Magnify each logical page by the factor
        !          1542: .IR num
        !          1543: (default is 1.0).
        !          1544: Pages are scaled uniformly about the origin,
        !          1545: which is located near the upper left corner of
        !          1546: each page.
        !          1547: .TP
        !          1548: .OP \-n num
        !          1549: Print
        !          1550: .I num
        !          1551: logical pages on each piece of paper,
        !          1552: where
        !          1553: .I num
        !          1554: can be any positive integer.
        !          1555: By default,
        !          1556: .I num
        !          1557: is set to 1.
        !          1558: .TP
        !          1559: .OP \-o list
        !          1560: Print pages whose numbers are given in the comma-separated
        !          1561: .IR list .
        !          1562: The list contains single numbers
        !          1563: .I N
        !          1564: and ranges
        !          1565: .IR N1\-\|N2 .
        !          1566: A missing
        !          1567: .I N1
        !          1568: means the lowest numbered page, a missing
        !          1569: .I N2
        !          1570: means the highest.
        !          1571: .TP
        !          1572: .OP \-p mode
        !          1573: Print
        !          1574: .I files
        !          1575: in either \*(mBportrait\fP or \*(mBlandscape\fP mode.
        !          1576: Only the first character of
        !          1577: .I mode
        !          1578: is significant.
        !          1579: The default
        !          1580: .I mode
        !          1581: is \*(mBportrait\fP.
        !          1582: .TP
        !          1583: .OP \-w num
        !          1584: Set the line width used to implement
        !          1585: .B troff
        !          1586: graphics commands to
        !          1587: .I num
        !          1588: points, where a point is approximately 1/72
        !          1589: of an inch.
        !          1590: By default
        !          1591: .I num
        !          1592: is set to 0.3 points.
        !          1593: .TP
        !          1594: .OP \-x num
        !          1595: Translate the origin
        !          1596: .I num
        !          1597: inches along the positive x axis.
        !          1598: The default
        !          1599: coordinate system has the origin fixed near the
        !          1600: upper left corner of the page, with positive
        !          1601: x to the right and positive y down the page.
        !          1602: Positive
        !          1603: .I num
        !          1604: moves everything right.
        !          1605: The default offset is 0 inches.
        !          1606: .TP
        !          1607: .OP \-y num
        !          1608: Translate the origin
        !          1609: .I num
        !          1610: inches along the positive y axis.
        !          1611: Positive
        !          1612: .I num
        !          1613: moves text down the page.
        !          1614: The default offset is 0.
        !          1615: .TP
        !          1616: .OP \-B
        !          1617: Include
        !          1618: .MW %%BoundingBox
        !          1619: comments in the output file.
        !          1620: Should only be used when the comments are needed
        !          1621: for picture inclusion.
        !          1622: Output is forced onto an 8.5\(mu11-inch page.
        !          1623: .TP
        !          1624: .OP \-E name
        !          1625: Set the character encoding for text fonts to
        !          1626: .IR name .
        !          1627: Requesting
        !          1628: .I name
        !          1629: means include file
        !          1630: .MI \*(dQ/ name .enc \f1.
        !          1631: A nonexistent encoding file is silently ignored.
        !          1632: There is no default.
        !          1633: .TP
        !          1634: .OP \-F dir
        !          1635: Use
        !          1636: .I dir
        !          1637: as the font directory.
        !          1638: The default
        !          1639: .I dir
        !          1640: is
        !          1641: .MR \*(dF ,
        !          1642: and
        !          1643: .B dpost
        !          1644: reads
        !          1645: .SM ASCII
        !          1646: font files from directory
        !          1647: .MR \*(dF/devpost .
        !          1648: .TP
        !          1649: .OP \-H dir
        !          1650: Use
        !          1651: .I dir
        !          1652: as the host-resident font directory.
        !          1653: A file in
        !          1654: .I dir
        !          1655: that matches the name of the
        !          1656: .B troff
        !          1657: font is assumed to be a host resident font program
        !          1658: and is included in
        !          1659: .B dpost
        !          1660: output.
        !          1661: There is no default.
        !          1662: .TP
        !          1663: .OP \-L \^file
        !          1664: Use
        !          1665: .I file
        !          1666: as the PostScript prologue.
        !          1667: The default is
        !          1668: .MR \*(dQ/dpost.ps .
        !          1669: .TP
        !          1670: .OP \-T name
        !          1671: Use font files for device
        !          1672: .I name
        !          1673: as the best description of available PostScript fonts.
        !          1674: By default,
        !          1675: .I name
        !          1676: is
        !          1677: \*(mBpost\fP
        !          1678: and
        !          1679: .B dpost
        !          1680: reads
        !          1681: .SM ASCII
        !          1682: files from
        !          1683: .MR \*(dF/devpost .
        !          1684: .br
        !          1685: .ne 1i
        !          1686: .PP
        !          1687: Three options allow insertion of arbitrary PostScript
        !          1688: at controlled points in the translation process:
        !          1689: .TP 0.75i
        !          1690: .OP \-C \^file
        !          1691: Copy
        !          1692: .I file
        !          1693: to the output file;
        !          1694: .I file
        !          1695: must contain legitimate PostScript.
        !          1696: .TP
        !          1697: .OP \-P string
        !          1698: Include
        !          1699: .I string
        !          1700: in the output file;
        !          1701: .I string
        !          1702: must be legitimate PostScript.
        !          1703: .TP
        !          1704: .OP \-R action
        !          1705: Requests special
        !          1706: .I action
        !          1707: (e.g.,
        !          1708: .MR manualfeed )
        !          1709: on a per page or global basis.
        !          1710: The
        !          1711: .I action
        !          1712: string can be given as
        !          1713: .IR request \|,
        !          1714: .IM request : page\f1\|,
        !          1715: or
        !          1716: .IM request : page : file\f1\|.
        !          1717: If
        !          1718: .I page
        !          1719: is omitted or given as 0 the request
        !          1720: applies to all pages.
        !          1721: If
        !          1722: .I file
        !          1723: is omitted the request
        !          1724: lookup is done in
        !          1725: .MR \*(dQ/ps.requests .
        !          1726: .PP
        !          1727: All
        !          1728: .I files
        !          1729: should be prepared by
        !          1730: .B troff
        !          1731: for the same device.
        !          1732: Device tables that describe real PostScript fonts that can be
        !          1733: used by
        !          1734: .B dpost
        !          1735: should include
        !          1736: .EX
        !          1737: PDL PostScript
        !          1738: .EE
        !          1739: in their
        !          1740: .SM DESC
        !          1741: file.
        !          1742: Tables that depend on a non-standard character set encoding indicate
        !          1743: that fact by an
        !          1744: .MW Encoding
        !          1745: entry in their
        !          1746: .SM DESC
        !          1747: file.
        !          1748: For example,
        !          1749: .EX
        !          1750: Encoding Latin1
        !          1751: .EE
        !          1752: means include file
        !          1753: .MR \*(dQ/Latin1.enc .
        !          1754: The
        !          1755: .OP \-E
        !          1756: option overrides the
        !          1757: .SM DESC
        !          1758: setting.
        !          1759: .SH EXAMPLES
        !          1760: .PP
        !          1761: A typical command line might be:
        !          1762: .EX
        !          1763: pic  \f2files\fP | tbl | eqn | troff -mm | dpost
        !          1764: .EE
        !          1765: .SH DIAGNOSTICS
        !          1766: A 0 exit status is returned if
        !          1767: .I files
        !          1768: were successfully translated,
        !          1769: while 2 often indicates a syntax error in the input
        !          1770: .IR files .
        !          1771: .SH WARNINGS
        !          1772: .PP
        !          1773: .B dpost
        !          1774: output does not usually conform to Adobe's file-structuring conventions.
        !          1775: Send the output through
        !          1776: .B postreverse
        !          1777: to produce a minimally conforming PostScript file.
        !          1778: .PP
        !          1779: Emulation is expensive and does not always produce satisfactory results.
        !          1780: No attempt has been made to implement the character sets or fonts available
        !          1781: on all devices supported by
        !          1782: .BR troff .
        !          1783: Missing characters are replaced by white space, and unrecognized
        !          1784: fonts default to one of the Times fonts (e.g.,
        !          1785: .MR R ,
        !          1786: .MR I ,
        !          1787: .MR B ,
        !          1788: or
        !          1789: .MR BI ).
        !          1790: .SH FILES
        !          1791: .MW \*(dF/devpost/*
        !          1792: .br
        !          1793: .MW \*(dF/devpost/charlib/*
        !          1794: .br
        !          1795: .MW \*(dQ/dpost.ps
        !          1796: .br
        !          1797: .MW \*(dQ/color.ps
        !          1798: .br
        !          1799: .MW \*(dQ/draw.ps
        !          1800: .br
        !          1801: .MW \*(dQ/forms.ps
        !          1802: .br
        !          1803: .MW \*(dQ/ps.requests
        !          1804: .SH SEE ALSO
        !          1805: .BR buildtables (1),
        !          1806: .BR postio (1),
        !          1807: .BR postprint (1),
        !          1808: .BR postreverse (1),
        !          1809: .BR psencoding (1),
        !          1810: .BR troff (1),
        !          1811: .BR font (5),
        !          1812: .BR troff (5)
        !          1813: 0707070014231030441006440057030057030000010300000522627500600002700000130466post.src/dpost/dpost.c/*
        !          1814:  *
        !          1815:  * dpost - troff post-processor for PostScript printers.
        !          1816:  *
        !          1817:  * A program that translates output generated by the device independent troff
        !          1818:  * into PostScript. Much was borrowed from dimpress and dps (formally dlzw),
        !          1819:  * and even though the code has changed, credit has to be given to Richard
        !          1820:  * Flood for his early work on the PostScript driver.
        !          1821:  *
        !          1822:  * The big change is in the font table routines. The old binary format and
        !          1823:  * makedev are gone. dpost and troff now read ASCII tables, and both skip
        !          1824:  * unrecognized entries in the ASCII tables. That means problems, like where
        !          1825:  * to put the real name of the PostScript font, have disappeared. The added
        !          1826:  * flexibility means some overhead translating the ASCII tables, but the
        !          1827:  * overhead isn't too bad.
        !          1828:  *
        !          1829:  * dpost can also now calculate a reasonably tight BoundingBox, which helps
        !          1830:  * picture inclusion. The calculations, by default, are disabled. Couldn't
        !          1831:  * justify the overhead for a comment, particularly one that's only needed
        !          1832:  * occasionally. Use the -B option to get the comment.
        !          1833:  *
        !          1834:  * Output produced by dpost is still nonconforming. Definitions made in pages
        !          1835:  * and exported to the job's global environment are the primary problem. It's
        !          1836:  * an efficient approach, but means pages are not independent. Violations are
        !          1837:  * bracketed by %%BeginGlobal and %%EndGlobal comments and can be pulled into
        !          1838:  * the prologue by utility programs (like postreverse) that recognize the new
        !          1839:  * comments.
        !          1840:  *
        !          1841:  * The program handles files formatted for any device, although the best and
        !          1842:  * most efficient output is generated when the font and description files
        !          1843:  * match PostScript's resident fonts. Emulation is relatively expensive, and
        !          1844:  * can produce output files that are more than twice the size of the input
        !          1845:  * files.
        !          1846:  *
        !          1847:  * Several different methods can be used to encode lines of text. What's done
        !          1848:  * depends on the value assigned to encoding. Print time should decrease as
        !          1849:  * encoding increases (up to MAXENCODING). Setting encoding to 3 (or higher)
        !          1850:  * is not normally recommended. It's fast and produces very compact output,
        !          1851:  * but rounding errors in troff's width tables can accumulate and lead to a
        !          1852:  * ragged right margin. encoding can be changed on the command line using the
        !          1853:  * -e option.
        !          1854:  *
        !          1855:  * PostScript fonts don't support all of troff's characters. Some are built
        !          1856:  * by special PostScript procedures in directory *fontdir/devpost/charlib.
        !          1857:  * The charlib approach is not meant to replace user defined fonts. It was
        !          1858:  * a quick implementation designed to handle characters that aren't used
        !          1859:  * often - charlib should not be overused! The charlib lookup is triggered
        !          1860:  * when a character in a font table is assigned a code less than 32.
        !          1861:  *
        !          1862:  * Most defaults are set in the prologue, but can be changed by options. The
        !          1863:  * -P option passes arbitrary PostScript into the setup section of the output
        !          1864:  * file. It can be used to set (or change) values that can't be accessed by
        !          1865:  * other options. For example,
        !          1866:  *
        !          1867:  *     dpost -P'/useclippath false def' file > file.ps
        !          1868:  *
        !          1869:  * defines useclippath to be false. Everything passed through using the -P
        !          1870:  * (-C to copy a file) options become part of the job's global environment.
        !          1871:  * Definitions override defaults in the prologue.
        !          1872:  *
        !          1873:  * dpost expects to find the following procedures in the prologue:
        !          1874:  *
        !          1875:  *     setup
        !          1876:  *
        !          1877:  *       mark ... setup -
        !          1878:  *
        !          1879:  *         Initialization procedure mainly responsible for setting up an
        !          1880:  *         appropriate coordinate system.
        !          1881:  *
        !          1882:  *     pagesetup
        !          1883:  *
        !          1884:  *       page pagesetup -
        !          1885:  *
        !          1886:  *         Called at the start of each page, immediately after the page
        !          1887:  *         level save. Argument is the current page number.
        !          1888:  *
        !          1889:  *     setdecoding
        !          1890:  *
        !          1891:  *       num setdecoding -
        !          1892:  *
        !          1893:  *         Select the decoding procedure used to print text strings encoded
        !          1894:  *         by dpost. num is whatever has been assigned to encoding.
        !          1895:  *
        !          1896:  *     f
        !          1897:  *
        !          1898:  *       size font f -
        !          1899:  *
        !          1900:  *         Set the font and size used for character imaging. The font name
        !          1901:  *         argument is (normally) the name troff used. Mapping to the real
        !          1902:  *         PostScript font name is made using the fontname field in the
        !          1903:  *         ASCII width tables.
        !          1904:  *
        !          1905:  *     m
        !          1906:  *
        !          1907:  *       x y m -
        !          1908:  *
        !          1909:  *         Move to point (x, y). Not used for positioning words in text
        !          1910:  *         strings.
        !          1911:  *
        !          1912:  *     t
        !          1913:  *
        !          1914:  *       mark text t mark
        !          1915:  *
        !          1916:  *         Everything on the stack (up to the mark) is treated as a line
        !          1917:  *         of text to be decoded and printed. What's on the stack depends
        !          1918:  *         on encoding.
        !          1919:  *
        !          1920:  *     w
        !          1921:  *
        !          1922:  *       string x y w -
        !          1923:  *
        !          1924:  *         Print a single word starting at position (x, y). Only used in
        !          1925:  *         the more complicated encoding schemes, like the ones based on
        !          1926:  *         widthshow.
        !          1927:  *
        !          1928:  *     done
        !          1929:  *
        !          1930:  *         Make sure the last page prints. Always called, but only needed
        !          1931:  *         when printing more than one page on each sheet of paper.
        !          1932:  *
        !          1933:  * output language from troff:
        !          1934:  * all numbers are character strings
        !          1935:  * 
        !          1936:  * sn  size in points
        !          1937:  * fn  font as number from 1-n
        !          1938:  * cx  ascii character x
        !          1939:  * Cxyz        funny char xyz. terminated by white space
        !          1940:  * Hn  go to absolute horizontal position n
        !          1941:  * Vn  go to absolute vertical position n (down is positive)
        !          1942:  * hn  go n units horizontally (relative)
        !          1943:  * vn  ditto vertically
        !          1944:  * nnc move right nn, then print c (exactly 2 digits!)
        !          1945:  *             (this wart is an optimization that shrinks output file size
        !          1946:  *              about 35% and run-time about 15% while preserving ascii-ness)
        !          1947:  * Dt ...\n    draw operation 't':
        !          1948:  *     Dl x y          line from here by x,y
        !          1949:  *     Dc d            circle of diameter d with left side here
        !          1950:  *     De x y          ellipse of axes x,y with left side here
        !          1951:  *     Da x1 y1 x2 y2  arc counter-clockwise from current point (x, y) to
        !          1952:  *                     (x + x1 + x2, y + y1 + y2)
        !          1953:  *     D~ x y x y ...  wiggly line by x,y then x,y ...
        !          1954:  * nb a        end of line (information only -- no action needed)
        !          1955:  *     b = space before line, a = after
        !          1956:  * p   new page begins -- set v to 0
        !          1957:  * #...\n      comment
        !          1958:  * x ...\n     device control functions:
        !          1959:  *     x i     init
        !          1960:  *     x T s   name of device is s
        !          1961:  *     x r n h v       resolution is n/inch
        !          1962:  *             h = min horizontal motion, v = min vert
        !          1963:  *     x p     pause (can restart)
        !          1964:  *     x s     stop -- done forever
        !          1965:  *     x t     generate trailer
        !          1966:  *     x f n s font position n contains font s
        !          1967:  *     x H n   set character height to n
        !          1968:  *     x S n   set slant to N
        !          1969:  * 
        !          1970:  *     Subcommands like "i" are often spelled out like "init".
        !          1971:  *
        !          1972:  */
        !          1973: 
        !          1974: #include       <stdio.h>
        !          1975: #include       <fcntl.h>
        !          1976: #include       <signal.h>
        !          1977: #include       <math.h>
        !          1978: #include       <ctype.h>
        !          1979: #include       <time.h>
        !          1980: 
        !          1981: #include       "comments.h"            /* structuring comments */
        !          1982: #include       "gen.h"                 /* general purpose definitions */
        !          1983: #include       "path.h"                /* prologue and a few other files */
        !          1984: #include       "ext.h"                 /* external variable declarations */
        !          1985: #include       "font.h"                /* font table definitions */
        !          1986: #include       "dpost.h"               /* a few definitions just used here */
        !          1987: #include       "motion.h"              /* positioning macros */
        !          1988: 
        !          1989: char   *prologue = DPOST;              /* the PostScript prologue */
        !          1990: char   *colorfile = COLOR;             /* color support */
        !          1991: char   *drawfile = DRAW;               /* drawing routines */
        !          1992: char   *formfile = FORMFILE;           /* multiple pages on each sheet */
        !          1993: char   *baselinefile = BASELINE;       /* for text along curved baseline */
        !          1994: 
        !          1995: char   *fontdir = FONTDIR;             /* font table directories */
        !          1996: char   *hostfontdir = NULL;            /* host resident font directory */
        !          1997: 
        !          1998: char   *realdev = DEVNAME;             /* use these width tables */
        !          1999: char   devname[20] = "";               /* job formatted for this device */
        !          2000: Fontmap        fontmap[] = FONTMAP;            /* font translation table - emulation */
        !          2001: char   *useencoding = NULL;            /* text font encoding - from -E option */
        !          2002: 
        !          2003: int    copies = 1;                     /* copies of each sheet */
        !          2004: int    printed = 0;                    /* pages processed and printed */
        !          2005: int    formsperpage = 1;               /* pages on each sheet of paper */
        !          2006: int    picflag = ON;                   /* enable/disable picture inclusion */
        !          2007: 
        !          2008: int    encoding = DFLTENCODING;        /* how text is translated to PostScript */
        !          2009: int    realencoding = DFLTENCODING;    /* where we started */
        !          2010: int    maxencoding = MAXENCODING;      /* max that users can select */
        !          2011: 
        !          2012: int    landscape = FALSE;              /* for BoundingBox calculations only */
        !          2013: double magnification = 1.0;
        !          2014: double xoffset = 0.0;
        !          2015: double yoffset = 0.0;
        !          2016: 
        !          2017: int    smnt;                           /* special fonts start here */
        !          2018: int    devres;                         /* device resolution */
        !          2019: int    unitwidth;                      /* and unitwidth - from DESC file */
        !          2020: 
        !          2021: char   downloaded[MAXCH+32+ALPHABET];  /* status of charlib characters */
        !          2022: 
        !          2023: int    nfonts = 0;                     /* number of font positions */
        !          2024: int    size = 10;                      /* current point size */
        !          2025: int    font = 0;                       /* and font position */
        !          2026: int    hpos = 0;                       /* where troff wants to be */
        !          2027: int    vpos = 0;
        !          2028: float  lastw = 0;                      /* width of the last input character */
        !          2029: int    lastc = 0;                      /* its name (or index) - for charlib() */
        !          2030: 
        !          2031: int    fontheight = 0;                 /* points from x H ... */
        !          2032: int    fontslant = 0;                  /* angle from x S ... */
        !          2033: 
        !          2034: int    res;                            /* resolution assumed in input file */
        !          2035: float  widthfac = 1.0;                 /* for emulation = res/devres */
        !          2036: 
        !          2037: int    lastsize = -1;                  /* for tracking printer's current size */
        !          2038: int    lastfont = -1;                  /* current font */
        !          2039: float  lastx = -1;                     /* and current position */
        !          2040: int    lasty = -1;
        !          2041: int    lastend;                        /* where last character on this line was */
        !          2042: 
        !          2043: int    seenpage = FALSE;               /* expect fonts are now all mounted */
        !          2044: int    gotspecial = FALSE;             /* append special fonts - emulation */
        !          2045: 
        !          2046: float  pointslop = SLOP;               /* horizontal error in points */
        !          2047: int    slop;                           /* and machine units */
        !          2048: int    rvslop;                         /* to extend box in reverse video mode */
        !          2049: 
        !          2050: int    textcount = 0;                  /* strings accumulated so far */
        !          2051: int    stringstart = 0;                /* where the next one starts */
        !          2052: int    spacecount = 0;                 /* spaces in current string */
        !          2053: 
        !          2054: Line   line[MAXSTACK+3];               /* data about words accumulated so far */
        !          2055: char   strings[STRINGSPACE];           /* strings temporarily saved here */
        !          2056: char   *strptr;                        /* next free slot in strings[] */
        !          2057: 
        !          2058: FILE   *tf = NULL;                     /* most output goes here */
        !          2059: FILE   *fp_acct = NULL;                /* accounting file */
        !          2060: 
        !          2061: char   *optnames = "a:c:e:m:n:o:p:tw:x:y:A:BC:E:J:F:H:L:OP:R:S:T:DI";
        !          2062: 
        !          2063: extern int     gotcolor;               /* read *colorfile when TRUE */
        !          2064: extern Font    fonts[];                /* data about every font we see */
        !          2065: extern Font    *mount[];               /* troff mounts fonts here */
        !          2066: 
        !          2067: /*****************************************************************************/
        !          2068: 
        !          2069: main(agc, agv)
        !          2070: 
        !          2071:     int                agc;
        !          2072:     char       *agv[];
        !          2073: 
        !          2074: {
        !          2075: 
        !          2076: /*
        !          2077:  *
        !          2078:  * Translates output from troff into PostScript. Input files must be formatted
        !          2079:  * for the same device. Each input file begins on a new page.
        !          2080:  *
        !          2081:  */
        !          2082: 
        !          2083:     argc = agc;                                /* global so everyone can use them */
        !          2084:     argv = agv;
        !          2085: 
        !          2086:     prog_name = argv[0];               /* for error messages */
        !          2087: 
        !          2088:     init_signals();                    /* interrupt handling */
        !          2089:     header();                          /* structuring comments */
        !          2090:     options();                         /* command line options */
        !          2091:     arguments();                       /* translate the input files */
        !          2092:     done();                            /* add trailing comments etc. */
        !          2093:     account();                         /* job accounting data */
        !          2094: 
        !          2095:     exit(x_stat);
        !          2096: 
        !          2097: }   /* End of main */
        !          2098: 
        !          2099: /*****************************************************************************/
        !          2100: 
        !          2101: init_signals()
        !          2102: 
        !          2103: {
        !          2104: 
        !          2105: /*
        !          2106:  *
        !          2107:  * Make sure we handle interrupts.
        !          2108:  *
        !          2109:  */
        !          2110: 
        !          2111:     if ( signal(SIGINT, interrupt) == SIG_IGN ) {
        !          2112:        signal(SIGINT, SIG_IGN);
        !          2113:        signal(SIGQUIT, SIG_IGN);
        !          2114:        signal(SIGHUP, SIG_IGN);
        !          2115:     } else {
        !          2116:        signal(SIGHUP, interrupt);
        !          2117:        signal(SIGQUIT, interrupt);
        !          2118:     }   /* End else */
        !          2119: 
        !          2120:     signal(SIGTERM, interrupt);
        !          2121: 
        !          2122: }   /* End of init_signals */
        !          2123: 
        !          2124: /*****************************************************************************/
        !          2125: 
        !          2126: header()
        !          2127: 
        !          2128: {
        !          2129: 
        !          2130:     int                ch;
        !          2131:     int                old_optind = optind;
        !          2132: 
        !          2133: /*
        !          2134:  *
        !          2135:  * Scan the option list for things needed now (e.g. prologue file), but could
        !          2136:  * be changed from defaults. An attempt to follow to Adobe's 2.0 structuring
        !          2137:  * conventions.
        !          2138:  *
        !          2139:  */
        !          2140: 
        !          2141:     while ( (ch = getopt(argc, argv, optnames)) != EOF )
        !          2142:        if ( ch == 'L' )
        !          2143:            setpaths(optarg);
        !          2144:        else if ( ch == 'B' )
        !          2145:            dobbox = TRUE;
        !          2146:        else if ( ch == '?' )
        !          2147:            error(FATAL, "");
        !          2148: 
        !          2149:     optind = old_optind;               /* restored for options() */
        !          2150: 
        !          2151:     fprintf(stdout, "%s", NONCONFORMING);
        !          2152:     fprintf(stdout, "%s %s\n", VERSION, PROGRAMVERSION);
        !          2153:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, ATEND);
        !          2154:     fprintf(stdout, "%s %s\n", PAGES, ATEND);
        !          2155:     if ( dobbox == TRUE )
        !          2156:        fprintf(stdout, "%s %s\n", BOUNDINGBOX, ATEND);
        !          2157:     fprintf(stdout, "%s", ENDCOMMENTS);
        !          2158: 
        !          2159:     if ( cat(prologue) == FALSE )
        !          2160:        error(FATAL, "can't read %s", prologue);
        !          2161: 
        !          2162:     if ( DOROUND )
        !          2163:        cat(ROUNDPAGE);
        !          2164: 
        !          2165:     fprintf(stdout, "%s", ENDPROLOG);
        !          2166:     fprintf(stdout, "%s", BEGINSETUP);
        !          2167:     fprintf(stdout, "mark\n");
        !          2168: 
        !          2169: }   /* End of header */
        !          2170: 
        !          2171: /*****************************************************************************/
        !          2172: 
        !          2173: options()
        !          2174: 
        !          2175: {
        !          2176: 
        !          2177:     int                ch;
        !          2178: 
        !          2179:     extern char        *optarg;
        !          2180:     extern int optind;
        !          2181: 
        !          2182: /*
        !          2183:  *
        !          2184:  * Command line options - there are too many!
        !          2185:  *
        !          2186:  */
        !          2187: 
        !          2188:     while ( (ch = getopt(argc, argv, optnames)) != EOF ) {
        !          2189:        switch ( ch ) {
        !          2190:            case 'a':                   /* aspect ratio */
        !          2191:                    fprintf(stdout, "/aspectratio %s def\n", optarg);
        !          2192:                    break;
        !          2193: 
        !          2194:            case 'c':                   /* number of copies */
        !          2195:                    copies = atoi(optarg);
        !          2196:                    fprintf(stdout, "/#copies %s store\n", optarg);
        !          2197:                    break;
        !          2198: 
        !          2199:            case 'e':                   /* select the encoding scheme */
        !          2200:                    if ( (encoding = atoi(optarg)) < 0 || encoding > MAXENCODING )
        !          2201:                        encoding = DFLTENCODING;
        !          2202:                    realencoding = encoding;
        !          2203:                    break;
        !          2204: 
        !          2205:            case 'm':                   /* magnification */
        !          2206:                    magnification = atof(optarg);
        !          2207:                    fprintf(stdout, "/magnification %s def\n", optarg);
        !          2208:                    break;
        !          2209: 
        !          2210:            case 'n':                   /* forms per page */
        !          2211:                    formsperpage = atoi(optarg);
        !          2212:                    fprintf(stdout, "%s %s\n", FORMSPERPAGE, optarg);
        !          2213:                    fprintf(stdout, "/formsperpage %s def\n", optarg);
        !          2214:                    break;
        !          2215: 
        !          2216:            case 'o':                   /* output page list */
        !          2217:                    out_list(optarg);
        !          2218:                    break;
        !          2219: 
        !          2220:            case 'p':                   /* landscape or portrait mode */
        !          2221:                    landscape = (*optarg == 'l') ? TRUE : FALSE;
        !          2222:                    if ( landscape == TRUE )
        !          2223:                        fprintf(stdout, "/landscape true def\n");
        !          2224:                    else fprintf(stdout, "/landscape false def\n");
        !          2225:                    break;
        !          2226: 
        !          2227:            case 't':                   /* compatibility */
        !          2228:                    break;
        !          2229: 
        !          2230:            case 'w':                   /* line width - for drawing */
        !          2231:                    fprintf(stdout, "/linewidth %s def\n", optarg);
        !          2232:                    break;
        !          2233: 
        !          2234:            case 'x':                   /* shift horizontally */
        !          2235:                    xoffset = atof(optarg);
        !          2236:                    fprintf(stdout, "/xoffset %s def\n", optarg);
        !          2237:                    break;
        !          2238: 
        !          2239:            case 'y':                   /* shift vertically */
        !          2240:                    yoffset = atof(optarg);
        !          2241:                    fprintf(stdout, "/yoffset %s def\n", optarg);
        !          2242:                    break;
        !          2243: 
        !          2244:            case 'A':                   /* job accounting */
        !          2245:            case 'J':
        !          2246:                    if ( (fp_acct = fopen(optarg, "a")) == NULL )
        !          2247:                        error(FATAL, "can't open accounting file %s", optarg);
        !          2248:                    break;
        !          2249: 
        !          2250:            case 'B':                   /* enable BoundingBox calculations */
        !          2251:                    dobbox = TRUE;
        !          2252:                    fprintf(stdout, "/rotation 1 def\n");
        !          2253:                    fprintf(stdout, "/gotpagebbox true def\n");
        !          2254:                    break;
        !          2255: 
        !          2256:            case 'C':                   /* copy file to output */
        !          2257:                    if ( cat(optarg) == FALSE )
        !          2258:                        error(FATAL, "can't read %s", optarg);
        !          2259:                    break;
        !          2260: 
        !          2261:            case 'E':                   /* text font encoding - override DESC */
        !          2262:                    useencoding = optarg;
        !          2263:                    break;
        !          2264: 
        !          2265:            case 'F':                   /* font table directory */
        !          2266:                    fontdir = optarg;
        !          2267:                    break;
        !          2268: 
        !          2269:            case 'H':                   /* host resident font directory */
        !          2270:                    hostfontdir = optarg;
        !          2271:                    break;
        !          2272: 
        !          2273:            case 'L':                   /* prologue file */
        !          2274:                    setpaths(optarg);   /* already been done in header() */
        !          2275:                    break;
        !          2276: 
        !          2277:            case 'O':                   /* disable picture inclusion */
        !          2278:                    picflag = OFF;
        !          2279:                    break;
        !          2280: 
        !          2281:            case 'P':                   /* copy string to output */
        !          2282:                    fprintf(stdout, "%s\n", optarg);
        !          2283:                    break;
        !          2284: 
        !          2285:            case 'R':                   /* global or page level request */
        !          2286:                    saverequest(optarg);
        !          2287:                    break;
        !          2288: 
        !          2289:            case 'S':                   /* horizontal position error */
        !          2290:                    if ( (pointslop = atof(optarg)) < 0 )
        !          2291:                        pointslop = 0;
        !          2292:                    break;
        !          2293: 
        !          2294:            case 'T':                   /* target printer */
        !          2295:                    realdev = optarg;
        !          2296:                    break;
        !          2297: 
        !          2298:            case 'D':                   /* debug flag */
        !          2299:                    debug = ON;
        !          2300:                    tf = stdout;
        !          2301:                    break;
        !          2302: 
        !          2303:            case 'I':                   /* ignore FATAL errors */
        !          2304:                    ignore = ON;
        !          2305:                    break;
        !          2306: 
        !          2307:            case '?':                   /* don't know the option */
        !          2308:                    error(FATAL, "");
        !          2309:                    break;
        !          2310: 
        !          2311:            default:
        !          2312:                    error(FATAL, "missing case for option %c", ch);
        !          2313:                    break;
        !          2314:        }   /* End switch */
        !          2315:     }  /* End while */
        !          2316: 
        !          2317:     argc -= optind;
        !          2318:     argv += optind;
        !          2319: 
        !          2320: }   /* End of options */
        !          2321: 
        !          2322: /*****************************************************************************/
        !          2323: 
        !          2324: setpaths(name)
        !          2325: 
        !          2326:     char       *name;
        !          2327: 
        !          2328: {
        !          2329: 
        !          2330:     char       *path;
        !          2331: 
        !          2332: /*
        !          2333:  *
        !          2334:  * Extends the -L option to permit modification of more than just the prologue
        !          2335:  * file pathname. Syntax is -Lpath or -Lname:path. For debugging and development
        !          2336:  * only!
        !          2337:  *
        !          2338:  */
        !          2339: 
        !          2340:     for ( path = name; *path; path++ )
        !          2341:        if ( *path == ':' || *path == ' ' ) {
        !          2342:            while ( *path == ':' || *path == ' ' ) path++;
        !          2343:            break;
        !          2344:        }   /* End if */
        !          2345: 
        !          2346:     if ( *path == '\0' )               /* didn't find "name:" prefix */
        !          2347:        path = name;
        !          2348: 
        !          2349:     if ( path == name || strncmp(name, "prologue", strlen("prologue")) == 0 )
        !          2350:        prologue = path;
        !          2351:     else if ( strncmp(name, "draw", strlen("draw")) == 0 )
        !          2352:        drawfile = path;
        !          2353:     else if ( strncmp(name, "color", strlen("color")) == 0 )
        !          2354:        colorfile = path;
        !          2355:     else if ( strncmp(name, "form", strlen("form")) == 0 )
        !          2356:        formfile = path;
        !          2357:     else if ( strncmp(name, "baseline", strlen("baseline")) == 0 )
        !          2358:        baselinefile = path;
        !          2359: 
        !          2360: }   /* End of setpaths */
        !          2361: 
        !          2362: /*****************************************************************************/
        !          2363: 
        !          2364: setup()
        !          2365: 
        !          2366: {
        !          2367: 
        !          2368:     double     t;
        !          2369: 
        !          2370: /*
        !          2371:  *
        !          2372:  * Job and BoundingBox initialization. Called once from t_init() - must know
        !          2373:  * the resolution before generating the PostScript call to setup. dpost only
        !          2374:  * includes an encoding file if it's set in the DESC file or requested with
        !          2375:  * the -E option.
        !          2376:  *
        !          2377:  */
        !          2378: 
        !          2379:     writerequest(0, stdout);           /* global requests e.g. manual feed */
        !          2380:     fprintf(stdout, "/resolution %d def\n", res);
        !          2381:     if ( useencoding != NULL || fontencoding != NULL )
        !          2382:        setencoding((useencoding != NULL) ? useencoding : fontencoding);
        !          2383:     fprintf(stdout, "setup\n");
        !          2384:     fprintf(stdout, "%d setdecoding\n", realencoding);
        !          2385: 
        !          2386:     if ( formsperpage > 1 ) {          /* multiple pages */
        !          2387:        if ( cat(formfile) == FALSE )
        !          2388:            error(FATAL, "can't read %s", formfile);
        !          2389:        fprintf(stdout, "%d setupforms\n", formsperpage);
        !          2390:     }  /* End if */
        !          2391: 
        !          2392:     fprintf(stdout, "%s", ENDSETUP);
        !          2393: 
        !          2394:     if ( dobbox == TRUE ) {            /* ctm[] - must agree with prologue */
        !          2395:        translate(pagewidth/2.0, pageheight/2.0);
        !          2396:        if ( landscape == TRUE ) {
        !          2397:            rotate(90.0);
        !          2398:            t = pagewidth;
        !          2399:            pagewidth = pageheight;
        !          2400:            pageheight = t;
        !          2401:        }   /* End if */
        !          2402:        translate(-pagewidth/2.0, pageheight/2.0);
        !          2403:        translate(72.0 * xoffset, -72.0 * yoffset);
        !          2404:        scale(magnification, magnification);
        !          2405:        scale(72.0/devres, 72.0/devres);
        !          2406:     }  /* End if */
        !          2407: 
        !          2408: }   /* End of setup */
        !          2409: 
        !          2410: /*****************************************************************************/
        !          2411: 
        !          2412: arguments()
        !          2413: 
        !          2414: {
        !          2415: 
        !          2416:     FILE       *fp;
        !          2417: 
        !          2418: /*
        !          2419:  *
        !          2420:  * Everything else is an input file. No arguments or '-' means stdin.
        !          2421:  *
        !          2422:  */
        !          2423: 
        !          2424:     if ( argc < 1 )
        !          2425:        conv(stdin);
        !          2426:     else
        !          2427:        while ( argc > 0 ) {
        !          2428:            if ( strcmp(*argv, "-") == 0 )
        !          2429:                fp = stdin;
        !          2430:            else if ( (fp = fopen(*argv, "r")) == NULL )
        !          2431:                error(FATAL, "can't open %s", *argv);
        !          2432:            conv(fp);
        !          2433:            if ( fp != stdin )
        !          2434:                fclose(fp);
        !          2435:            argc--;
        !          2436:            argv++;
        !          2437:        }   /* End while */
        !          2438: 
        !          2439: }   /* End of arguments */
        !          2440: 
        !          2441: /*****************************************************************************/
        !          2442: 
        !          2443: done()
        !          2444: 
        !          2445: {
        !          2446: 
        !          2447:     int                i;
        !          2448:     int                n;
        !          2449: 
        !          2450: /*
        !          2451:  *
        !          2452:  * Force out the last page and add trailing comments.
        !          2453:  *
        !          2454:  */
        !          2455: 
        !          2456:     fprintf(stdout, "%s", TRAILER);
        !          2457:     fprintf(stdout, "done\n");
        !          2458:     fprintf(stdout, "%s %d\n", PAGES, printed);
        !          2459: 
        !          2460:     for ( i = 0, n = 0; i < MAXFONTS+1; i++ )
        !          2461:        if ( (fonts[i].flags & USED) && fonts[i].fontname != NULL ) {
        !          2462:            if ( n++ == 0 )
        !          2463:                fprintf(stdout, "%s", DOCUMENTFONTS);
        !          2464:            else if ( (n - 1) % 8 == 0 )
        !          2465:                fprintf(stdout, "\n%s", CONTINUECOMMENT);
        !          2466:            fprintf(stdout, " %s", fonts[i].fontname);
        !          2467:        }   /* End if */
        !          2468:     if ( n > 0 )
        !          2469:        putc('\n', stdout);
        !          2470: 
        !          2471:     if ( dobbox == TRUE )
        !          2472:        writebbox(stdout, BOUNDINGBOX, 10);
        !          2473: 
        !          2474: }   /* End of done */
        !          2475: 
        !          2476: /*****************************************************************************/
        !          2477: 
        !          2478: account()
        !          2479: 
        !          2480: {
        !          2481: 
        !          2482: /*
        !          2483:  *
        !          2484:  * Accounting record to fp_acct - provided it's not NULL.
        !          2485:  *
        !          2486:  */
        !          2487: 
        !          2488:     if ( fp_acct != NULL )
        !          2489:        fprintf(fp_acct, " print %d\n copies %d\n", printed, copies);
        !          2490: 
        !          2491: }   /* End of account */
        !          2492: 
        !          2493: /*****************************************************************************/
        !          2494: 
        !          2495: conv(fp)
        !          2496: 
        !          2497:     register FILE      *fp;
        !          2498: 
        !          2499: {
        !          2500: 
        !          2501:     register int       c;
        !          2502:     int                        m, n, n1, m1;
        !          2503:     char               str[50];
        !          2504: 
        !          2505: /*
        !          2506:  *
        !          2507:  * Read troff output from file fp and translate it into PostScript. The final
        !          2508:  * t_page() call means input files start on a new page.
        !          2509:  *
        !          2510:  */
        !          2511: 
        !          2512:     redirect(-1);                      /* do output only after a page command */
        !          2513:     lineno = 1;
        !          2514: 
        !          2515:     while ((c = getc(fp)) != EOF) {
        !          2516:        switch (c) {
        !          2517:            case '\n':                  /* just count this line */
        !          2518:                    lineno++;
        !          2519:                    break;
        !          2520: 
        !          2521:            case ' ':                   /* when input is text */
        !          2522:            case 0:                     /* occasional noise creeps in */
        !          2523:                    break;
        !          2524: 
        !          2525:            case '0': case '1': case '2': case '3': case '4':
        !          2526:            case '5': case '6': case '7': case '8': case '9':
        !          2527:                    /* two motion digits plus a character */
        !          2528:                    hmot((c-'0')*10 + getc(fp)-'0');
        !          2529:                    put1(getc(fp));
        !          2530:                    break;
        !          2531: 
        !          2532:            case 'c':                   /* single ascii character */
        !          2533:                    put1(getc(fp));
        !          2534:                    break;
        !          2535: 
        !          2536:            case 'C':                   /* special character */
        !          2537:                    fscanf(fp, "%s", str);
        !          2538:                    put1(chindex(str));
        !          2539:                    break;
        !          2540: 
        !          2541:            case 'N':                   /* character at position n */
        !          2542:                    fscanf(fp, "%d", &m);
        !          2543:                    flushtext();
        !          2544:                    oput(m);
        !          2545:                    break;
        !          2546: 
        !          2547:            case 'D':                   /* drawing functions */
        !          2548:                    flushtext();
        !          2549:                    getdraw();
        !          2550:                    if ( size != lastsize )
        !          2551:                        t_sf();
        !          2552:                    switch ((c=getc(fp))) {
        !          2553:                        case 'p':       /* draw a path */
        !          2554:                            while (fscanf(fp, "%d %d", &n, &m) == 2)
        !          2555:                                drawline(n, m);
        !          2556:                            lineno++;
        !          2557:                            break;
        !          2558: 
        !          2559:                        case 'l':       /* draw a line */
        !          2560:                            fscanf(fp, "%d %d %c", &n, &m, &n1);
        !          2561:                            drawline(n, m);
        !          2562:                            break;
        !          2563: 
        !          2564:                        case 'c':       /* circle */
        !          2565:                            fscanf(fp, "%d", &n);
        !          2566:                            drawcirc(n);
        !          2567:                            break;
        !          2568: 
        !          2569:                        case 'e':       /* ellipse */
        !          2570:                            fscanf(fp, "%d %d", &m, &n);
        !          2571:                            drawellip(m, n);
        !          2572:                            break;
        !          2573: 
        !          2574:                        case 'a':       /* counter-clockwise arc */
        !          2575:                        case 'A':       /* clockwise arc */
        !          2576:                            fscanf(fp, "%d %d %d %d", &n, &m, &n1, &m1);
        !          2577:                            drawarc(n, m, n1, m1, c);
        !          2578:                            break;
        !          2579: 
        !          2580:                        case 'q':       /* spline without end points */
        !          2581:                            drawspline(fp, 1);
        !          2582:                            lineno++;
        !          2583:                            break;
        !          2584: 
        !          2585:                        case '~':       /* wiggly line */
        !          2586:                            drawspline(fp, 2);
        !          2587:                            lineno++;
        !          2588:                            break;
        !          2589: 
        !          2590:                        default:
        !          2591:                            error(FATAL, "unknown drawing function %c", c);
        !          2592:                            break;
        !          2593:                    }   /* End switch */
        !          2594:                    break;
        !          2595: 
        !          2596:            case 's':                   /* use this point size */
        !          2597:                    fscanf(fp, "%d", &size);    /* ignore fractional sizes */
        !          2598:                    break;
        !          2599: 
        !          2600:            case 'f':                   /* use font mounted here */
        !          2601:                    fscanf(fp, "%s", str);
        !          2602:                    setfont(t_font(str));
        !          2603:                    break;
        !          2604: 
        !          2605:            case 'H':                   /* absolute horizontal motion */
        !          2606:                    fscanf(fp, "%d", &n);
        !          2607:                    hgoto(n);
        !          2608:                    break;
        !          2609: 
        !          2610:            case 'h':                   /* relative horizontal motion */
        !          2611:                    fscanf(fp, "%d", &n);
        !          2612:                    hmot(n);
        !          2613:                    break;
        !          2614: 
        !          2615:            case 'w':                   /* word space */
        !          2616:                    break;
        !          2617: 
        !          2618:            case 'V':                   /* absolute vertical position */
        !          2619:                    fscanf(fp, "%d", &n);
        !          2620:                    vgoto(n);
        !          2621:                    break;
        !          2622: 
        !          2623:            case 'v':                   /* relative vertical motion */
        !          2624:                    fscanf(fp, "%d", &n);
        !          2625:                    vmot(n);
        !          2626:                    break;
        !          2627: 
        !          2628:            case 'p':                   /* new page */
        !          2629:                    fscanf(fp, "%d", &n);
        !          2630:                    t_page(n);
        !          2631:                    break;
        !          2632: 
        !          2633:            case 'n':                   /* end of line */
        !          2634:                    while ( (c = getc(fp)) != '\n' && c != EOF ) ;
        !          2635:                    hgoto(0);
        !          2636:                    lineno++;
        !          2637:                    break;
        !          2638: 
        !          2639:            case '#':                   /* comment */
        !          2640:                    while ( (c = getc(fp)) != '\n' && c != EOF ) ;
        !          2641:                    lineno++;
        !          2642:                    break;
        !          2643: 
        !          2644:            case 'x':                   /* device control function */
        !          2645:                    devcntrl(fp);
        !          2646:                    lineno++;
        !          2647:                    break;
        !          2648: 
        !          2649:            default:
        !          2650:                    error(FATAL, "unknown input character %o %c", c, c);
        !          2651:                    done();
        !          2652:        }   /* End switch */
        !          2653:     }  /* End while */
        !          2654: 
        !          2655:     t_page(-1);                                /* print the last page */
        !          2656:     flushtext();
        !          2657: 
        !          2658: }   /* End of conv */
        !          2659: 
        !          2660: /*****************************************************************************/
        !          2661: 
        !          2662: devcntrl(fp)
        !          2663: 
        !          2664:     FILE       *fp;
        !          2665: 
        !          2666: {
        !          2667: 
        !          2668:     char       str[50], buf[256], str1[100];
        !          2669:     int                c, n;
        !          2670: 
        !          2671: /*
        !          2672:  *
        !          2673:  * Interpret device control commands, ignoring any we don't recognize. The
        !          2674:  * "x X ..." commands are a device dependent collection generated by troff's
        !          2675:  * \X'...' request.
        !          2676:  *
        !          2677:  */
        !          2678: 
        !          2679:     fscanf(fp, "%s", str);
        !          2680: 
        !          2681:     switch ( str[0] ) {
        !          2682:        case 'f':                       /* load font in a position */
        !          2683:                fscanf(fp, "%d %s", &n, str);
        !          2684:                fgets(buf, sizeof buf, fp);     /* in case there's a filename */
        !          2685:                ungetc('\n', fp);       /* fgets() goes too far */
        !          2686:                str1[0] = '\0';         /* in case there's nothing to come in */
        !          2687:                sscanf(buf, "%s", str1);
        !          2688:                loadfont(n, str, str1);
        !          2689:                break;
        !          2690: 
        !          2691:        case 'i':                       /* initialize */
        !          2692:                t_init();
        !          2693:                break;
        !          2694: 
        !          2695:        case 'p':                       /* pause */
        !          2696:                break;
        !          2697: 
        !          2698:        case 'r':                       /* resolution assumed when prepared */
        !          2699:                fscanf(fp, "%d", &res);
        !          2700:                break;
        !          2701: 
        !          2702:        case 's':                       /* stop */
        !          2703:        case 't':                       /* trailer */
        !          2704:                flushtext();
        !          2705:                break;
        !          2706: 
        !          2707:        case 'H':                       /* char height */
        !          2708:                fscanf(fp, "%d", &n);
        !          2709:                t_charht(n);
        !          2710:                break;
        !          2711: 
        !          2712:        case 'S':                       /* slant */
        !          2713:                fscanf(fp, "%d", &n);
        !          2714:                t_slant(n);
        !          2715:                break;
        !          2716: 
        !          2717:        case 'T':                       /* device name */
        !          2718:                fscanf(fp, "%s", devname);
        !          2719:                break;
        !          2720: 
        !          2721:        case 'X':                       /* copy through - from troff */
        !          2722:                fscanf(fp, " %[^: \n]:", str);
        !          2723:                fgets(buf, sizeof(buf), fp);
        !          2724:                ungetc('\n', fp);
        !          2725:                if ( strcmp(str, "PI") == 0 || strcmp(str, "PictureInclusion") == 0 )
        !          2726:                    picture(buf);
        !          2727:                else if ( strcmp(str, "InlinePicture") == 0 )
        !          2728:                    inlinepic(fp, buf);
        !          2729:                else if ( strcmp(str, "BeginPath") == 0 )
        !          2730:                    beginpath(buf, FALSE);
        !          2731:                else if ( strcmp(str, "DrawPath") == 0 )
        !          2732:                    drawpath(buf, FALSE);
        !          2733:                else if ( strcmp(str, "BeginObject") == 0 )
        !          2734:                    beginpath(buf, TRUE);
        !          2735:                else if ( strcmp(str, "EndObject") == 0 )
        !          2736:                    drawpath(buf, TRUE);
        !          2737:                else if ( strcmp(str, "NewBaseline") == 0 )
        !          2738:                    newbaseline(buf);
        !          2739:                else if ( strcmp(str, "DrawText") == 0 )
        !          2740:                    drawtext(buf);
        !          2741:                else if ( strcmp(str, "SetText") == 0 )
        !          2742:                    settext(buf);
        !          2743:                else if ( strcmp(str, "SetColor") == 0 ) {
        !          2744:                    newcolor(buf);
        !          2745:                    setcolor();
        !          2746:                } else if ( strcmp(str, "INFO") == 0 ) {
        !          2747:                    flushtext();
        !          2748:                    fprintf(tf, "%%INFO%s", buf);
        !          2749:                } else if ( strcmp(str, "PS") == 0 || strcmp(str, "PostScript") == 0 ) {
        !          2750:                    flushtext();
        !          2751:                    fprintf(tf, "%s", buf);
        !          2752:                } else if ( strcmp(str, "ExportPS") == 0 ) {    /* dangerous!! */
        !          2753:                    if ( tf == stdout ) {
        !          2754:                        restore();
        !          2755:                        fprintf(tf, "%s", buf);
        !          2756:                        save();
        !          2757:                    }   /* End if */
        !          2758:                }   /* End else */
        !          2759:                break;
        !          2760:     }  /* End switch */
        !          2761: 
        !          2762:     while ( (c = getc(fp)) != '\n' && c != EOF ) ;
        !          2763: 
        !          2764: }   /* End of devcntrl */
        !          2765: 
        !          2766: /*****************************************************************************/
        !          2767: 
        !          2768: loadfont(m, f, name)
        !          2769: 
        !          2770:     int                m;
        !          2771:     char       *f;
        !          2772:     char       *name;
        !          2773: 
        !          2774: {
        !          2775: 
        !          2776:     char       path[150];
        !          2777: 
        !          2778: /*
        !          2779:  *
        !          2780:  * Load position m with font f. Font file pathname is *fontdir/dev*realdev/*f
        !          2781:  * or name, if name isn't empty. Use mapfont() to replace the missing font
        !          2782:  * if we're emulating another device, name is empty, and the first mount
        !          2783:  * fails.
        !          2784:  *
        !          2785:  */
        !          2786: 
        !          2787:     if ( name[0] == '\0' )
        !          2788:        sprintf(path, "%s/dev%s/%s", fontdir, realdev, f);
        !          2789:     else sprintf(path, "%s", name);
        !          2790: 
        !          2791:     if ( mountfont(path, m) == -1 ) {
        !          2792:        if ( name[0] == '\0' ) {
        !          2793:            sprintf(path, "%s/dev%s/%s", fontdir, realdev, mapfont(f));
        !          2794:            if ( mountfont(path, m) == -1 ) {
        !          2795:                sprintf(path, "%s/dev%s/%s", fontdir, realdev, f);
        !          2796:                error(FATAL, "can't load %s at %d", path, m);
        !          2797:            }   /* End if */
        !          2798:        } else error(FATAL, "can't load %s at %d", path, m);
        !          2799:     }  /* End if */
        !          2800: 
        !          2801:     if ( smnt == 0 && mount[m]->specfont )
        !          2802:        smnt = m;
        !          2803: 
        !          2804:     if ( m == lastfont )               /* force a call to t_sf() */
        !          2805:        lastfont = -1;
        !          2806: 
        !          2807:     if ( m > nfonts ) {                        /* got more positions */
        !          2808:        nfonts = m;
        !          2809:        gotspecial = FALSE;
        !          2810:     }  /* End if */
        !          2811: 
        !          2812: }   /* End of loadfont */
        !          2813: 
        !          2814: /*****************************************************************************/
        !          2815: 
        !          2816: char *mapfont(name)
        !          2817: 
        !          2818:     char       *name;
        !          2819: 
        !          2820: {
        !          2821: 
        !          2822:     int                i;
        !          2823: 
        !          2824: /*
        !          2825:  *
        !          2826:  * Map a missing font name into one that should be available. Only used when
        !          2827:  * we're emulating another device and the first mount fails. Consider deleting
        !          2828:  * this routine.
        !          2829:  *
        !          2830:  */
        !          2831: 
        !          2832:     for ( i = 0; fontmap[i].name != NULL; i++ )
        !          2833:        if ( strcmp(name, fontmap[i].name) == 0 )
        !          2834:            return(fontmap[i].use);
        !          2835: 
        !          2836:     switch ( *++name ) {
        !          2837:        case 'I': return("I");
        !          2838:        case 'B': return("B");
        !          2839:        case 'X': return("BI");
        !          2840:        default:  return("R");
        !          2841:     }  /* End switch */
        !          2842: 
        !          2843: }   /* End of mapfont */
        !          2844: 
        !          2845: /*****************************************************************************/
        !          2846: 
        !          2847: loadspecial()
        !          2848: 
        !          2849: {
        !          2850: 
        !          2851: /*
        !          2852:  *
        !          2853:  * Fix - later.
        !          2854:  *
        !          2855:  */
        !          2856: 
        !          2857:     gotspecial = TRUE;
        !          2858: 
        !          2859: }   /* End of loadspecial */
        !          2860: 
        !          2861: /*****************************************************************************/
        !          2862: 
        !          2863: t_init()
        !          2864: 
        !          2865: {
        !          2866: 
        !          2867:     char       path[150];
        !          2868:     static int initialized = FALSE;
        !          2869: 
        !          2870: /*
        !          2871:  *
        !          2872:  * Finish initialization - just read an "x init" command. Assumes we already
        !          2873:  * know the input file resolution.
        !          2874:  *
        !          2875:  */
        !          2876: 
        !          2877:     flushtext();                       /* moved - for cat'ed troff files */
        !          2878: 
        !          2879:     if ( initialized == FALSE ) {
        !          2880:        if ( strcmp(devname, realdev) ) {
        !          2881:            sprintf(path, "%s/dev%s/DESC", fontdir, devname);
        !          2882:            if ( checkdesc(path) )
        !          2883:                realdev = devname;
        !          2884:        }   /* End if */
        !          2885: 
        !          2886:        sprintf(path, "%s/dev%s/DESC", fontdir, realdev);
        !          2887:        if ( getdesc(path) == -1 )
        !          2888:            error(FATAL, "can't open %s", path);
        !          2889:        nfonts = 0;
        !          2890:        gotspecial = FALSE;
        !          2891:        widthfac = (float) res /devres;
        !          2892:        slop = pointslop * res / POINTS + .5;
        !          2893:        rvslop = res * .025;
        !          2894:        setup();
        !          2895:        initialized = TRUE;
        !          2896:     }  /* End if */
        !          2897: 
        !          2898:     hpos = vpos = 0;
        !          2899:     size = 10;
        !          2900:     reset();
        !          2901: 
        !          2902: }   /* End of t_init */
        !          2903: 
        !          2904: /*****************************************************************************/
        !          2905: 
        !          2906: t_page(pg)
        !          2907: 
        !          2908:     int                pg;
        !          2909: 
        !          2910: {
        !          2911: 
        !          2912:     static int lastpg = 0;
        !          2913: 
        !          2914: /*
        !          2915:  *
        !          2916:  * Finish the previous page and get ready for the next one. End page output
        !          2917:  * goes to /dev/null at the start of each input file. Start page output goes
        !          2918:  * to /dev/null at the end of each input file.
        !          2919:  *
        !          2920:  * Consider doing showpage after page level restore (as Adobe recommends). If
        !          2921:  * the order is changed use restore() and save(). forms.ps will likely also
        !          2922:  * need fixing.
        !          2923:  *
        !          2924:  */
        !          2925: 
        !          2926:     if ( tf == stdout )
        !          2927:        printed++;
        !          2928: 
        !          2929:     flushtext();                       /* just in case */
        !          2930: 
        !          2931:     fprintf(tf, "cleartomark\n");
        !          2932:     fprintf(tf, "showpage\n");
        !          2933:     fprintf(tf, "saveobj restore\n");
        !          2934:     if ( dobbox == TRUE )
        !          2935:        writebbox(tf, PAGEBOUNDINGBOX, 10);
        !          2936:     fprintf(tf, "%s %d %d\n", ENDPAGE, lastpg, printed);
        !          2937: 
        !          2938:     redirect(pg);
        !          2939: 
        !          2940:     fprintf(tf, "%s %d %d\n", PAGE, pg, printed+1);
        !          2941:     if ( dobbox == TRUE )
        !          2942:        fprintf(tf, "%s %s\n", PAGEBOUNDINGBOX, ATEND);
        !          2943:     fprintf(tf, "/saveobj save def\n");
        !          2944:     fprintf(tf, "mark\n");
        !          2945:     writerequest(printed+1, tf);
        !          2946:     fprintf(tf, "%d pagesetup\n", printed+1);
        !          2947: 
        !          2948:     if ( encoding != realencoding )
        !          2949:        fprintf(tf, "%d setdecoding\n", encoding);
        !          2950: 
        !          2951:     if ( gotcolor == TRUE )
        !          2952:        setcolor();
        !          2953: 
        !          2954:     lastpg = pg;                       /* for the next ENDPAGE comment */
        !          2955:     hpos = vpos = 0;                   /* get ready for the next page */
        !          2956:     reset();                           /* force position and font stuff - later */
        !          2957: 
        !          2958:     seenpage = TRUE;
        !          2959: 
        !          2960: }   /* End of t_page */
        !          2961: 
        !          2962: /*****************************************************************************/
        !          2963: 
        !          2964: t_font(s)
        !          2965: 
        !          2966:     char       *s;
        !          2967: 
        !          2968: {
        !          2969: 
        !          2970:     int                n;
        !          2971: 
        !          2972: /*
        !          2973:  *
        !          2974:  * Converts the string *s into an integer and checks to make sure it's a legal
        !          2975:  * font position. Also arranges to mount all the special fonts after the last
        !          2976:  * legitimate font (by calling loadspecial()), provided it hasn't already been
        !          2977:  * done.
        !          2978:  *
        !          2979:  */
        !          2980: 
        !          2981:     n = atoi(s);
        !          2982: 
        !          2983:     if ( seenpage == TRUE ) {
        !          2984:        if ( n < 0 || n > nfonts )
        !          2985:            error(FATAL, "illegal font position %d", n);
        !          2986: 
        !          2987:        if ( gotspecial == FALSE )
        !          2988:            loadspecial();
        !          2989:     }  /* End if */
        !          2990: 
        !          2991:     return(n);
        !          2992: 
        !          2993: }   /* End of t_font */
        !          2994: 
        !          2995: /*****************************************************************************/
        !          2996: 
        !          2997: setfont(m)
        !          2998: 
        !          2999:     int                m;
        !          3000: 
        !          3001: {
        !          3002: 
        !          3003: /*
        !          3004:  *
        !          3005:  * Use the font mounted at position m. Bounds checks are probably unnecessary.
        !          3006:  * Changing the font and size used by the printer is handled in t_sf().
        !          3007:  *
        !          3008:  */
        !          3009: 
        !          3010:     if ( m < 0 || m > MAXFONTS )
        !          3011:        error(FATAL, "illegal font %d", m);
        !          3012:     font = m;
        !          3013: 
        !          3014: }   /* End of setfont */
        !          3015: 
        !          3016: /*****************************************************************************/
        !          3017: 
        !          3018: t_sf()
        !          3019: 
        !          3020: {
        !          3021: 
        !          3022:     Font       *fpos;
        !          3023:     char       temp[150];
        !          3024: 
        !          3025: /*
        !          3026:  *
        !          3027:  * Force a new font or size. Generates name definitions for fonts that haven't
        !          3028:  * been named, grabs host resident font files and keeps track of the fonts used
        !          3029:  * by this job. When necessary also adjusts the font's height and slant. Should
        !          3030:  * only be called immediately before printing a character.
        !          3031:  *
        !          3032:  */
        !          3033: 
        !          3034:     if ( tf == stdout && mounted(font) ) {
        !          3035:        flushtext();
        !          3036: 
        !          3037:        fpos = mount[font];
        !          3038:        if ( (fpos->flags & USED) == 0 ) {
        !          3039:            if ( (fpos->flags & NAMED) == 0 && fpos->fontname != NULL ) {
        !          3040:                sprintf(temp, "/%s /%s def\n", fpos->name, fpos->fontname);
        !          3041:                exportstring(temp);
        !          3042:                fpos->flags |= NAMED;           /* unnecessary */
        !          3043:            }   /* End if */
        !          3044: 
        !          3045:            if ( hostfontdir != NULL ) {
        !          3046:                sprintf(temp, "%s/%s", hostfontdir, fpos->name);
        !          3047:                exportfile(temp);
        !          3048:            }   /* End if */
        !          3049:        }   /* End if */
        !          3050: 
        !          3051:        fprintf(tf, "%d %s f\n", size, fpos->name);
        !          3052:        if ( fontheight != 0 || fontslant != 0 )
        !          3053:            fprintf(tf, "%d %d changefont\n", fontslant, (fontheight != 0) ? fontheight : size);
        !          3054: 
        !          3055:        lastfont = font;
        !          3056:        lastsize = size;
        !          3057:        fpos->flags |= USED;
        !          3058:     }  /* End if */
        !          3059: 
        !          3060: }   /* End of t_sf */
        !          3061: 
        !          3062: /*****************************************************************************/
        !          3063: 
        !          3064: t_charht(n)
        !          3065: 
        !          3066:     int                n;
        !          3067: 
        !          3068: {
        !          3069: 
        !          3070: /*
        !          3071:  *
        !          3072:  * Set character height to n points. Disabled if n is 0 or the current size.
        !          3073:  *
        !          3074:  */
        !          3075: 
        !          3076:     fontheight = (n == size) ? 0 : n;
        !          3077:     lastfont = -1;
        !          3078: 
        !          3079: }   /* End of t_charht */
        !          3080: 
        !          3081: /*****************************************************************************/
        !          3082: 
        !          3083: t_slant(n)
        !          3084: 
        !          3085:     int                n;
        !          3086: 
        !          3087: {
        !          3088: 
        !          3089: /*
        !          3090:  *
        !          3091:  * Set slant to n degrees. Disable slanting if n is 0.
        !          3092:  *
        !          3093:  */
        !          3094: 
        !          3095:     fontslant = n;
        !          3096:     lastfont = -1;
        !          3097: 
        !          3098: }   /* End of t_slant */
        !          3099: 
        !          3100: /*****************************************************************************/
        !          3101: 
        !          3102: xymove(x, y)
        !          3103: 
        !          3104:     int                x, y;
        !          3105: 
        !          3106: {
        !          3107: 
        !          3108: /*
        !          3109:  *
        !          3110:  * Make the the printer and post-processor agree about the current position.
        !          3111:  *
        !          3112:  */
        !          3113: 
        !          3114:     flushtext();
        !          3115: 
        !          3116:     hgoto(x);
        !          3117:     vgoto(y);
        !          3118: 
        !          3119:     fprintf(tf, "%d %d m\n", hpos, vpos);
        !          3120: 
        !          3121:     lastx = hpos;
        !          3122:     lasty = vpos;
        !          3123: 
        !          3124: }   /* End of xymove */
        !          3125: 
        !          3126: /*****************************************************************************/
        !          3127: 
        !          3128: put1(c)
        !          3129: 
        !          3130:     register int       c;
        !          3131: 
        !          3132: {
        !          3133: 
        !          3134:     register int       i;
        !          3135:     register int       j;
        !          3136:     register int       k;
        !          3137:     int                        code;
        !          3138:     int                        ofont;
        !          3139: 
        !          3140: /*
        !          3141:  *
        !          3142:  * Print character c. ASCII if c < ALPHABET, otherwise it's special. Look for
        !          3143:  * c in the current font, then in others starting at the first special font.
        !          3144:  * Save c in lastc so it's available when oput() runs. Restore original font
        !          3145:  * before leaving.
        !          3146:  *
        !          3147:  */
        !          3148: 
        !          3149:     lastc = c;                         /* charlib() needs name not code */
        !          3150:     if ( (c -= 32) <= 0 )
        !          3151:        return;
        !          3152: 
        !          3153:     k = ofont = font;
        !          3154: 
        !          3155:     if ( (i = onfont(lastc, k)) == -1 && smnt > 0 )
        !          3156:        for ( k = smnt, j = 0; j < nfonts; j++, k = k % nfonts + 1 ) {
        !          3157:            if ( (i = onfont(lastc, k)) != -1 ) {
        !          3158:                setfont(k);
        !          3159:                break;
        !          3160:            }   /* End if */
        !          3161:        }   /* End for */
        !          3162: 
        !          3163:     if ( i != -1 && (code = mount[k]->wp[i].code) != 0 ) {
        !          3164:        lastw = widthfac * (((int)mount[k]->wp[i].wid * size + unitwidth/2) / unitwidth);
        !          3165:        oput(code);
        !          3166:     }  /* End if */
        !          3167: 
        !          3168:     if ( font != ofont )
        !          3169:        setfont(ofont);
        !          3170: 
        !          3171: }   /* End of put1 */
        !          3172: 
        !          3173: /*****************************************************************************/
        !          3174: 
        !          3175: oput(c)
        !          3176: 
        !          3177:     int                c;
        !          3178: 
        !          3179: {
        !          3180: 
        !          3181:     double     llx, lly, urx, ury;     /* boundingbox corners */
        !          3182: 
        !          3183: /*
        !          3184:  *
        !          3185:  * Arranges to print the character whose code is c in the current font. All the
        !          3186:  * actual positioning is done here, in charlib(), or in the drawing routines.
        !          3187:  *
        !          3188:  */
        !          3189: 
        !          3190:     if ( textcount > MAXSTACK )                /* don't put too much on the stack? */
        !          3191:        flushtext();
        !          3192: 
        !          3193:     if ( font != lastfont || size != lastsize )
        !          3194:        t_sf();
        !          3195: 
        !          3196:     if ( vpos != lasty )
        !          3197:        endline();
        !          3198: 
        !          3199:     starttext();
        !          3200: 
        !          3201:     if ( ABS(hpos - lastx) > slop )
        !          3202:        endstring();
        !          3203: 
        !          3204:     if ( isascii(c) && isprint(c) )
        !          3205:        switch ( c ) {
        !          3206:            case '(':
        !          3207:            case ')':
        !          3208:            case '\\':
        !          3209:                    addchar('\\');
        !          3210: 
        !          3211:            default:
        !          3212:                    addchar(c);
        !          3213:        }   /* End switch */
        !          3214:     else if ( c > 040 )
        !          3215:        addoctal(c);
        !          3216:     else charlib(c);
        !          3217: 
        !          3218:     if ( dobbox == TRUE ) {
        !          3219:        llx = lastx;
        !          3220:        lly = -(vpos + 0.5 * (devres * size / 72.0));
        !          3221:        urx = lastx + lastw;
        !          3222:        ury = -(vpos - (devres * size / 72.0));
        !          3223:        cover(llx, lly);
        !          3224:        cover(urx, ury);
        !          3225:     }  /* End if */
        !          3226: 
        !          3227:     lastx += lastw;
        !          3228: 
        !          3229: }   /* End of oput */
        !          3230: 
        !          3231: /*****************************************************************************/
        !          3232: 
        !          3233: starttext()
        !          3234: 
        !          3235: {
        !          3236: 
        !          3237: /*
        !          3238:  * Called whenever we want to be sure we're ready to start collecting characters
        !          3239:  * for the next call to PostScript procedure t (ie. the one that prints them). If
        !          3240:  * textcount is positive we've already started, so there's nothing to do. The more
        !          3241:  * complicated encoding schemes save text strings in the strings[] array and need
        !          3242:  * detailed information about the strings when they're written to the output file
        !          3243:  * in flushtext().
        !          3244:  *
        !          3245:  */
        !          3246: 
        !          3247:     if ( textcount < 1 ) {
        !          3248:        switch ( encoding ) {
        !          3249:            case 0:
        !          3250:            case 1:
        !          3251:                putc('(', tf);
        !          3252:                break;
        !          3253: 
        !          3254:            case 2:
        !          3255:            case 3:
        !          3256:                strptr = strings;
        !          3257:                spacecount = 0;
        !          3258:                line[1].str = strptr;
        !          3259:                line[1].dx = 0;
        !          3260:                line[1].spaces = 0;
        !          3261:                line[1].start = hpos;
        !          3262:                line[1].width = 0;
        !          3263:                break;
        !          3264: 
        !          3265:            case MAXENCODING+1:                 /* reverse video */
        !          3266:                if ( lastend == -1 )
        !          3267:                    lastend = hpos;
        !          3268:                putc('(', tf);
        !          3269:                break;
        !          3270: 
        !          3271:            case MAXENCODING+2:                 /* follow a funny baseline */
        !          3272:                putc('(', tf);
        !          3273:                break;
        !          3274:        }   /* End switch */
        !          3275: 
        !          3276:        textcount = 1;
        !          3277:        lastx = stringstart = hpos;
        !          3278:     }  /* End if */
        !          3279: 
        !          3280: }   /* End of starttext */
        !          3281: 
        !          3282: /*****************************************************************************/
        !          3283: 
        !          3284: flushtext()
        !          3285: 
        !          3286: {
        !          3287: 
        !          3288:     int                i;
        !          3289: 
        !          3290: /*
        !          3291:  *
        !          3292:  * Generates a call to the PostScript procedure that processes all the text we've
        !          3293:  * accumulated - provided textcount is positive.
        !          3294:  *
        !          3295:  */
        !          3296: 
        !          3297:     if ( textcount > 0 ) {
        !          3298:        switch ( encoding ) {
        !          3299:            case 0:
        !          3300:                fprintf(tf, ")%d t\n", stringstart);
        !          3301:                break;
        !          3302: 
        !          3303:            case 1:
        !          3304:                fprintf(tf, ")%d %d t\n", stringstart, lasty);
        !          3305:                break;
        !          3306: 
        !          3307:            case 2:
        !          3308:                *strptr = '\0';
        !          3309:                line[textcount].width = lastx - line[textcount].start;
        !          3310:                if ( spacecount != 0 || textcount != 1 ) {
        !          3311:                    for ( i = textcount; i > 0; i-- )
        !          3312:                        fprintf(tf, "(%s)%d %d", line[i].str, line[i].spaces, line[i].width);
        !          3313:                    fprintf(tf, " %d %d %d t\n", textcount, stringstart, lasty);
        !          3314:                } else fprintf(tf, "(%s)%d %d w\n", line[1].str, stringstart, lasty);
        !          3315:                break;
        !          3316: 
        !          3317:            case 3:
        !          3318:                *strptr = '\0';
        !          3319:                if ( spacecount != 0 || textcount != 1 ) {
        !          3320:                    for ( i = textcount; i > 0; i-- )
        !          3321:                        fprintf(tf, "(%s)%d", line[i].str, line[i].dx);
        !          3322:                    fprintf(tf, " %d %d %d t\n", textcount, stringstart, lasty);
        !          3323:                } else fprintf(tf, "(%s)%d %d w\n", line[1].str, stringstart, lasty);
        !          3324:                break;
        !          3325: 
        !          3326:            case MAXENCODING+1:
        !          3327:                fprintf(tf, ")%d ", stringstart);
        !          3328:                fprintf(tf, "%d %d drawrvbox ", lastend - rvslop, (int)(lastx + .5) + rvslop);
        !          3329:                fprintf(tf, "t\n", stringstart);
        !          3330:                lastend = (lastx + .5) + 2 * rvslop;
        !          3331:                break;
        !          3332: 
        !          3333:            case MAXENCODING+2:
        !          3334:                fprintf(tf, ")%d %d t\n", stringstart, lasty);
        !          3335:                break;
        !          3336:        }   /* End switch */
        !          3337:     }  /* End if */
        !          3338: 
        !          3339:     textcount = 0;
        !          3340: 
        !          3341: }   /* End of flushtext */
        !          3342: 
        !          3343: /*****************************************************************************/
        !          3344: 
        !          3345: endstring()
        !          3346: 
        !          3347: {
        !          3348: 
        !          3349:     int                dx;
        !          3350: 
        !          3351: /*
        !          3352:  *
        !          3353:  * Horizontal positions are out of sync. End the last open string, adjust the
        !          3354:  * printer's position, and start a new string. Assumes we've already started
        !          3355:  * accumulating text.
        !          3356:  *
        !          3357:  */
        !          3358: 
        !          3359:     switch ( encoding ) {
        !          3360:        case 0:
        !          3361:        case 1:
        !          3362:            fprintf(tf, ")%d(", stringstart);
        !          3363:            textcount++;
        !          3364:            lastx = stringstart = hpos;
        !          3365:            break;
        !          3366: 
        !          3367:        case 2:
        !          3368:        case 3:
        !          3369:            dx = hpos - lastx;
        !          3370:            if ( spacecount++ == 0 )
        !          3371:                line[textcount].dx = dx;
        !          3372:            if ( line[textcount].dx != dx ) {
        !          3373:                *strptr++ = '\0';
        !          3374:                line[textcount].width = lastx - line[textcount].start;
        !          3375:                line[++textcount].str = strptr;
        !          3376:                *strptr++ = ' ';
        !          3377:                line[textcount].dx = dx;
        !          3378:                line[textcount].start = lastx;
        !          3379:                line[textcount].width = 0;
        !          3380:                line[textcount].spaces = 1;
        !          3381:            } else {
        !          3382:                *strptr++ = ' ';
        !          3383:                line[textcount].spaces++;
        !          3384:            }   /* End else */
        !          3385:            lastx += dx;
        !          3386:            break;
        !          3387: 
        !          3388:        case MAXENCODING+1:
        !          3389:            fprintf(tf, ")%d(", stringstart);
        !          3390:            textcount++;
        !          3391:            lastx = stringstart = hpos;
        !          3392:            break;
        !          3393: 
        !          3394:        case MAXENCODING+2:
        !          3395:            flushtext();
        !          3396:            starttext();
        !          3397:            break;
        !          3398:     }  /* End switch */
        !          3399: 
        !          3400: }   /* End of endstring */
        !          3401: 
        !          3402: /*****************************************************************************/
        !          3403: 
        !          3404: endline()
        !          3405: 
        !          3406: {
        !          3407: 
        !          3408: /*
        !          3409:  *
        !          3410:  * The vertical position has changed. Dump any accumulated text, then adjust
        !          3411:  * the printer's vertical position.
        !          3412:  *
        !          3413:  */
        !          3414: 
        !          3415:     flushtext();
        !          3416: 
        !          3417:     if ( encoding == 0 || encoding == MAXENCODING+1 )
        !          3418:        fprintf(tf, "%d %d m\n", hpos, vpos);
        !          3419: 
        !          3420:     lastx = stringstart = lastend = hpos;
        !          3421:     lasty = vpos;
        !          3422: 
        !          3423: }   /* End of endline */
        !          3424: 
        !          3425: /*****************************************************************************/
        !          3426: 
        !          3427: addchar(c)
        !          3428: 
        !          3429:     int                c;
        !          3430: 
        !          3431: {
        !          3432: 
        !          3433: /*
        !          3434:  *
        !          3435:  * Does whatever is needed to add character c to the current string.
        !          3436:  *
        !          3437:  */
        !          3438: 
        !          3439:     switch ( encoding ) {
        !          3440:        case 0:
        !          3441:        case 1:
        !          3442:            putc(c, tf);
        !          3443:            break;
        !          3444: 
        !          3445:        case 2:
        !          3446:        case 3:
        !          3447:            *strptr++ = c;
        !          3448:            break;
        !          3449: 
        !          3450:        case MAXENCODING+1:
        !          3451:        case MAXENCODING+2:
        !          3452:            putc(c, tf);
        !          3453:            break;
        !          3454:     }  /* End switch */
        !          3455: 
        !          3456: }   /* End of addchar */
        !          3457: 
        !          3458: /*****************************************************************************/
        !          3459: 
        !          3460: addoctal(c)
        !          3461: 
        !          3462:     int                c;
        !          3463: 
        !          3464: {
        !          3465: 
        !          3466: /*
        !          3467:  *
        !          3468:  * Add c to the current string as an octal escape.
        !          3469:  *
        !          3470:  */
        !          3471: 
        !          3472:     switch ( encoding ) {
        !          3473:        case 0:
        !          3474:        case 1:
        !          3475:            fprintf(tf, "\\%o", c);
        !          3476:            break;
        !          3477: 
        !          3478:        case 2:
        !          3479:        case 3:
        !          3480:            sprintf(strptr, "\\%o", c);
        !          3481:            strptr += strlen(strptr);
        !          3482:            break;
        !          3483: 
        !          3484:        case MAXENCODING+1:
        !          3485:        case MAXENCODING+2:
        !          3486:            fprintf(tf, "\\%o", c);
        !          3487:            break;
        !          3488:     }  /* End switch */
        !          3489: 
        !          3490: }   /* End of addoctal */
        !          3491: 
        !          3492: /*****************************************************************************/
        !          3493: 
        !          3494: charlib(code)
        !          3495: 
        !          3496:     int                code;                   /* either 1 or 2 */
        !          3497: 
        !          3498: {
        !          3499: 
        !          3500:     char       *name;                  /* name of the character */
        !          3501:     char       tname[10];              /* in case it's a single ASCII character */
        !          3502:     char       temp[150];
        !          3503: 
        !          3504: /*
        !          3505:  *
        !          3506:  * Called from oput() for characters having codes less than 040. Special files
        !          3507:  * that define PostScript procedures for certain characters can be found in
        !          3508:  * directory *fontdir/devpost/charlib. If there's a file that has the same name as
        !          3509:  * the character we're trying to print it's copied to the output file, otherwise
        !          3510:  * nothing, except some positioning, is done.
        !          3511:  *
        !          3512:  * All character definitions are only made once. Subsequent requests to print the
        !          3513:  * character generate a call to a procedure that begins with the prefix build_ and
        !          3514:  * ends with the character's name. Special characters that are assigned codes
        !          3515:  * other than 1 are assumed to have additional data files that should be copied
        !          3516:  * to the output file immediately after the build_ call. Those data files should
        !          3517:  * end in the suffix .map, and usually will be a hex representation of a bitmap.
        !          3518:  *
        !          3519:  */
        !          3520: 
        !          3521:     flushtext();
        !          3522: 
        !          3523:     if ( lastc < ALPHABET ) {          /* ASCII character */
        !          3524:        sprintf(tname, "%.3o", lastc);
        !          3525:        name = tname;
        !          3526:     } else name = chname(lastc);
        !          3527: 
        !          3528:     if ( downloaded[lastc] == 0 ) {
        !          3529:        sprintf(temp, "%s/dev%s/charlib/%s", fontdir, realdev, name);
        !          3530:        if ( exportfile(temp) == TRUE ) {
        !          3531:            downloaded[lastc] = 1;
        !          3532:            t_sf();
        !          3533:        }   /* End if */
        !          3534:     }  /* End if */
        !          3535: 
        !          3536:     if ( downloaded[lastc] == 1 ) {
        !          3537:        xymove(hpos, vpos);
        !          3538:        fprintf(tf, "%d build_%s\n", (int) lastw, name);
        !          3539:        if ( code != 1 ) {              /* get the bitmap or whatever */
        !          3540:            sprintf(temp, "%s/dev%s/charlib/%s.map", fontdir, realdev, name);
        !          3541:            if ( access(temp, 04) == 0 && tf == stdout )
        !          3542:                cat(temp);
        !          3543:        }   /* End if */
        !          3544:        fprintf(tf, "%d %d m\n", stringstart = hpos + lastw, vpos);
        !          3545:     }  /* End if */
        !          3546: 
        !          3547: }   /* End of charlib */
        !          3548: 
        !          3549: /*****************************************************************************/
        !          3550: 
        !          3551: reset()
        !          3552: 
        !          3553: {
        !          3554: 
        !          3555: /*
        !          3556:  *
        !          3557:  * Reset variables that keep track of the printer's current position, size and
        !          3558:  * font. Eventually forces things back in sync before oput() prints the next
        !          3559:  * character.
        !          3560:  *
        !          3561:  */
        !          3562: 
        !          3563:     lastx = -(slop + 1);
        !          3564:     lasty = -1;
        !          3565:     lastfont = lastsize = -1;
        !          3566: 
        !          3567: }   /* End of reset */
        !          3568: 
        !          3569: /*****************************************************************************/
        !          3570: 
        !          3571: resetpos()
        !          3572: 
        !          3573: {
        !          3574: 
        !          3575: /*
        !          3576:  *
        !          3577:  * Reset the position tracking variables. Forces oput() to get positions back
        !          3578:  * in sync before printing the next character.
        !          3579:  *
        !          3580:  */
        !          3581: 
        !          3582:     lastx = -(slop + 1);
        !          3583:     lasty = -1;
        !          3584: 
        !          3585: }   /* End of resetpos */
        !          3586: 
        !          3587: /*****************************************************************************/
        !          3588: 
        !          3589: save()
        !          3590: 
        !          3591: {
        !          3592: 
        !          3593: /*
        !          3594:  *
        !          3595:  * Save the current PostScript environment. Initialize things that may have
        !          3596:  * disappeared after the preceeding restore.
        !          3597:  *
        !          3598:  */
        !          3599: 
        !          3600:     fprintf(tf, "/saveobj save def\n");
        !          3601:     fprintf(tf, "mark\n");
        !          3602: 
        !          3603:     if ( encoding != realencoding )
        !          3604:        fprintf(tf, "%d setdecoding\n", encoding);
        !          3605: 
        !          3606:     if ( gotcolor == TRUE )            /* prevent getcolor() recursion */
        !          3607:        setcolor();
        !          3608: 
        !          3609: }   /* End of save */
        !          3610: 
        !          3611: /*****************************************************************************/
        !          3612: 
        !          3613: restore()
        !          3614: 
        !          3615: {
        !          3616: 
        !          3617: /*
        !          3618:  *
        !          3619:  * Restore the previous PostScript environment.
        !          3620:  *
        !          3621:  */
        !          3622: 
        !          3623:     flushtext();
        !          3624:     fprintf(tf, "cleartomark\n");
        !          3625:     fprintf(tf, "saveobj restore\n");
        !          3626:     reset();
        !          3627: 
        !          3628: }   /* End of restore */
        !          3629: 
        !          3630: /*****************************************************************************/
        !          3631: 
        !          3632: exportfile(path)
        !          3633: 
        !          3634:     char       *path;
        !          3635: 
        !          3636: {
        !          3637: 
        !          3638:     int                val = FALSE;
        !          3639: 
        !          3640: /*
        !          3641:  *
        !          3642:  * Exports the contents of file path to the global environment. Returns TRUE
        !          3643:  * if we're doing output (i.e. tf == stdout) and the copy worked.
        !          3644:  *
        !          3645:  */
        !          3646: 
        !          3647:     if ( tf == stdout && access(path, 04) == 0 ) {
        !          3648:        restore();
        !          3649:        fprintf(tf, "%s", BEGINGLOBAL);
        !          3650:        val = cat(path);
        !          3651:        fprintf(tf, "%s", ENDGLOBAL);
        !          3652:        save();
        !          3653:     }  /* End if */
        !          3654: 
        !          3655:     return(val);
        !          3656: 
        !          3657: }   /* End of exportfile */
        !          3658: 
        !          3659: /*****************************************************************************/
        !          3660: 
        !          3661: exportstring(str)
        !          3662: 
        !          3663:     char       *str;
        !          3664: 
        !          3665: {
        !          3666: 
        !          3667: /*
        !          3668:  *
        !          3669:  * Exports string str to the global environment. No return value needed yet.
        !          3670:  *
        !          3671:  */
        !          3672: 
        !          3673:     if ( tf == stdout && str != NULL && *str != '\0' ) {
        !          3674:        restore();
        !          3675:        fprintf(tf, "%s", BEGINGLOBAL);
        !          3676:        fprintf(tf, "%s", str);
        !          3677:        fprintf(tf, "%s", ENDGLOBAL);
        !          3678:        save();
        !          3679:     }  /* End if */
        !          3680: 
        !          3681: }   /* End of exportstring */
        !          3682: 
        !          3683: /*****************************************************************************/
        !          3684: 
        !          3685: redirect(pg)
        !          3686: 
        !          3687:     int                pg;
        !          3688: 
        !          3689: {
        !          3690: 
        !          3691:     static FILE        *fp_null = NULL;
        !          3692: 
        !          3693: /*
        !          3694:  *
        !          3695:  * If we're not supposed to print page pg, tf will be directed to /dev/null,
        !          3696:  * otherwise output goes to stdout.
        !          3697:  *
        !          3698:  */
        !          3699: 
        !          3700:     if ( pg >= 0 && in_olist(pg) == ON )
        !          3701:        tf = stdout;
        !          3702:     else if ( (tf = fp_null) == NULL )
        !          3703:        tf = fp_null = fopen("/dev/null", "w");
        !          3704: 
        !          3705: }   /* End of redirect */
        !          3706: 
        !          3707: /*****************************************************************************/
        !          3708: 
        !          3709: 0707070014231030451006440057030057030000010301400522627500600002700000010457post.src/dpost/dpost.h/*
        !          3710:  *
        !          3711:  * DEVNAME should be the name of a device whose font files accurately describe
        !          3712:  * what's available on the target printer. It's a string that's combined with
        !          3713:  * "/usr/lib/font/dev" to locate the final font directory. It can be changed
        !          3714:  * using the -T option, but you may end up getting garbage - the character code
        !          3715:  * field must agree with PostScript's character encoding scheme for each font and
        !          3716:  * troff's one or two character font names must be mapped into the appropriate
        !          3717:  * PostScript font names (typically in the prologue)
        !          3718:  *
        !          3719:  *
        !          3720:  */
        !          3721: 
        !          3722: #define        DEVNAME         "post"          /* name of the target printer */
        !          3723: 
        !          3724: /*
        !          3725:  *
        !          3726:  * SLOP controls how much horizontal positioning error we'll accept and primarily
        !          3727:  * helps when we're emulating another device. It's used when we output characters
        !          3728:  * in oput() to check if troff and the printer have gotten too far out of sync.
        !          3729:  * Given in units of points and can be changed using the -S option. Converted to
        !          3730:  * machine units in t_init() after the resolution is known.
        !          3731:  *
        !          3732:  */
        !          3733: 
        !          3734: #define SLOP           .2              /* horizontal error - in points */
        !          3735: 
        !          3736: /*
        !          3737:  *
        !          3738:  * Several different text line encoding schemes are supported. Print time should
        !          3739:  * decrease as the value assigned to encoding (in dpost.c) increases, although the
        !          3740:  * only encoding that's well tested is the lowest level one, which produces output
        !          3741:  * essentially identical to the original version of dpost. Setting DFLTENCODING to
        !          3742:  * 0 will give you the most stable (but slowest) encoding. The encoding scheme can
        !          3743:  * also be set on the command line using the -e option. Faster methods are based
        !          3744:  * on widthshow and may not place words exactly where troff wanted, but errors will
        !          3745:  * usually not be noticeable.
        !          3746:  *
        !          3747:  */
        !          3748: 
        !          3749: #define MAXENCODING    3
        !          3750: 
        !          3751: #ifndef DFLTENCODING
        !          3752: #define DFLTENCODING   2
        !          3753: #endif
        !          3754: 
        !          3755: /*
        !          3756:  *
        !          3757:  * The encoding scheme controls how lines of text are output. In the lower level
        !          3758:  * schemes words and horizontal positions are put on the stack as they're read and
        !          3759:  * when they're printed it's done in reverse order - the first string printed is
        !          3760:  * the one on top of the stack and it's the last one on the line. Faster methods
        !          3761:  * may be forced to reverse the order of strings on the stack, making the top one
        !          3762:  * the first string on the line. STRINGSPACE sets the size of a character array
        !          3763:  * that's used to save the strings that make up  a line of text so they can be
        !          3764:  * output in reverse order or perhaps combined in groups for widthshow.
        !          3765:  *
        !          3766:  * MAXSTACK controls how far we let PostScript's operand stack grow and determines
        !          3767:  * the number of strings we'll save before printing all or part of a line of text.
        !          3768:  * The internal limit in PostScript printers built by Adobe is 500, so MAXSTACK
        !          3769:  * should never be bigger than about 240!
        !          3770:  *
        !          3771:  * Line is a structure used to keep track of the words (or rather strings) on the
        !          3772:  * current line that have been read but not printed. dx is the width troff wants
        !          3773:  * to use for a space in the current string. start is where the string began, width
        !          3774:  * is the total width of the string, and spaces is the number of space characters
        !          3775:  * in the current string. *str points to the start of the string in the strings[]
        !          3776:  * array. The Line structure is only used in the higher level encoding schemes.
        !          3777:  * 
        !          3778:  */
        !          3779: 
        !          3780: #define        MAXSTACK        50              /* most strings we'll save at once */
        !          3781: #define        STRINGSPACE     2000            /* bytes available for string storage */
        !          3782: 
        !          3783: typedef struct {
        !          3784:        char    *str;                   /* where the string is stored */
        !          3785:        int     dx;                     /* width of a space */
        !          3786:        int     spaces;                 /* number of space characters */
        !          3787:        int     start;                  /* horizontal starting position */
        !          3788:        int     width;                  /* and its total width */
        !          3789: } Line;
        !          3790: 
        !          3791: /*
        !          3792:  *
        !          3793:  * Simple stuff used to map unrecognized font names into something reasonable. The
        !          3794:  * mapping array is initialized using FONTMAP and used in loadfont() whenever the
        !          3795:  * job tries to use a font that we don't recognize. Normally only needed when we're
        !          3796:  * emulating another device.
        !          3797:  *
        !          3798:  */
        !          3799: 
        !          3800: typedef struct {
        !          3801:        char    *name;                  /* font name we're looking for */
        !          3802:        char    *use;                   /* and this is what we should use */
        !          3803: } Fontmap;
        !          3804: 
        !          3805: #define        FONTMAP                                                         \
        !          3806:                                                                        \
        !          3807:        {                                                               \
        !          3808:            "G", "H",                                                   \
        !          3809:            "LO", "S",                                                  \
        !          3810:            "S2", "S",                                                  \
        !          3811:            "GI", "HI",                                                 \
        !          3812:            "HM", "H",                                                  \
        !          3813:            "HK", "H",                                                  \
        !          3814:            "HL", "H",                                                  \
        !          3815:            "PA", "R",                                                  \
        !          3816:            "PI", "I",                                                  \
        !          3817:            "PB", "B",                                                  \
        !          3818:            "PX", "BI",                                                 \
        !          3819:            NULL, NULL,                                                 \
        !          3820:        }
        !          3821: 
        !          3822: /*
        !          3823:  *
        !          3824:  * Non-integer valued functions.
        !          3825:  *
        !          3826:  */
        !          3827: 
        !          3828: extern char    *mapfont();
        !          3829: 
        !          3830: 0707070014231027401006400057030057030000010310030522633100300003000000005210post.src/dpost/dpost.mkMAKE=/bin/make
        !          3831: MAKEFILE=dpost.mk
        !          3832: 
        !          3833: SYSTEM=V9
        !          3834: VERSION=3.3.2
        !          3835: 
        !          3836: GROUP=bin
        !          3837: OWNER=bin
        !          3838: 
        !          3839: FONTDIR=/usr/lib/font
        !          3840: MAN1DIR=/tmp
        !          3841: POSTBIN=/usr/bin/postscript
        !          3842: POSTLIB=/usr/lib/postscript
        !          3843: 
        !          3844: COMMONDIR=../common
        !          3845: 
        !          3846: CFLGS=-O
        !          3847: LDFLGS=-s
        !          3848: 
        !          3849: CFLAGS=$(CFLGS) -I$(COMMONDIR)
        !          3850: LDFLAGS=$(LDFLGS)
        !          3851: 
        !          3852: HFILES=dpost.h\
        !          3853:        font.h\
        !          3854:        motion.h\
        !          3855:        ps_include.h\
        !          3856:        $(COMMONDIR)/comments.h\
        !          3857:        $(COMMONDIR)/ext.h\
        !          3858:        $(COMMONDIR)/gen.h\
        !          3859:        $(COMMONDIR)/path.h
        !          3860: 
        !          3861: OFILES=dpost.o\
        !          3862:        draw.o\
        !          3863:        color.o\
        !          3864:        font.o\
        !          3865:        pictures.o\
        !          3866:        ps_include.o\
        !          3867:        $(COMMONDIR)/bbox.o\
        !          3868:        $(COMMONDIR)/glob.o\
        !          3869:        $(COMMONDIR)/misc.o\
        !          3870:        $(COMMONDIR)/request.o\
        !          3871:        $(COMMONDIR)/tempnam.o
        !          3872: 
        !          3873: all : dpost
        !          3874: 
        !          3875: install : all
        !          3876:        @if [ ! -d "$(POSTBIN)" ]; then \
        !          3877:            mkdir $(POSTBIN); \
        !          3878:            chmod 755 $(POSTBIN); \
        !          3879:            chgrp $(GROUP) $(POSTBIN); \
        !          3880:            chown $(OWNER) $(POSTBIN); \
        !          3881:        fi
        !          3882:        @if [ ! -d "$(POSTLIB)" ]; then \
        !          3883:            mkdir $(POSTLIB); \
        !          3884:            chmod 755 $(POSTLIB); \
        !          3885:            chgrp $(GROUP) $(POSTLIB); \
        !          3886:            chown $(OWNER) $(POSTLIB); \
        !          3887:        fi
        !          3888:        cp dpost $(POSTBIN)/dpost
        !          3889:        @chmod 755 $(POSTBIN)/dpost
        !          3890:        @chgrp $(GROUP) $(POSTBIN)/dpost
        !          3891:        @chown $(OWNER) $(POSTBIN)/dpost
        !          3892:        cp dpost.ps $(POSTLIB)/dpost.ps
        !          3893:        @chmod 644 $(POSTLIB)/dpost.ps
        !          3894:        @chgrp $(GROUP) $(POSTLIB)/dpost.ps
        !          3895:        @chown $(OWNER) $(POSTLIB)/dpost.ps
        !          3896:        cp draw.ps $(POSTLIB)/draw.ps
        !          3897:        @chmod 644 $(POSTLIB)/draw.ps
        !          3898:        @chgrp $(GROUP) $(POSTLIB)/draw.ps
        !          3899:        @chown $(OWNER) $(POSTLIB)/draw.ps
        !          3900:        cp dpost.1 $(MAN1DIR)/dpost.1
        !          3901:        @chmod 644 $(MAN1DIR)/dpost.1
        !          3902:        @chgrp $(GROUP) $(MAN1DIR)/dpost.1
        !          3903:        @chown $(OWNER) $(MAN1DIR)/dpost.1
        !          3904: 
        !          3905: clean :
        !          3906:        rm -f *.o
        !          3907: 
        !          3908: clobber : clean
        !          3909:        rm -f dpost
        !          3910: 
        !          3911: dpost : $(OFILES)
        !          3912:        $(CC) $(CFLAGS) $(LDFLAGS) -o dpost $(OFILES) -lm
        !          3913: 
        !          3914: dpost.o : $(HFILES)
        !          3915: color.o : $(COMMONDIR)/ext.h $(COMMONDIR)/gen.h
        !          3916: draw.o : motion.h $(COMMONDIR)/ext.h $(COMMONDIR)/gen.h
        !          3917: font.o : font.h $(COMMONDIR)/gen.h
        !          3918: pictures.o : $(COMMONDIR)/comments.h $(COMMONDIR)/gen.h
        !          3919: ps_include.o : ps_include.h
        !          3920: 
        !          3921: $(COMMONDIR)/bbox.o\
        !          3922: $(COMMONDIR)/glob.o\
        !          3923: $(COMMONDIR)/misc.o\
        !          3924: $(COMMONDIR)/request.o\
        !          3925: $(COMMONDIR)/tempnam.o :
        !          3926:        @cd $(COMMONDIR); $(MAKE) -f common.mk SYSTEM=$(SYSTEM) `basename $@`
        !          3927: 
        !          3928: changes :
        !          3929:        @trap "" 1 2 3 15; \
        !          3930:        sed \
        !          3931:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
        !          3932:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
        !          3933:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          3934:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          3935:            -e "s'^FONTDIR=.*'FONTDIR=$(FONTDIR)'" \
        !          3936:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
        !          3937:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
        !          3938:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
        !          3939:        $(MAKEFILE) >XXX.mk; \
        !          3940:        mv XXX.mk $(MAKEFILE); \
        !          3941:        sed \
        !          3942:            -e "s'^.ds dF.*'.ds dF $(FONTDIR)'" \
        !          3943:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
        !          3944:        dpost.1 >XXX.1; \
        !          3945:        mv XXX.1 dpost.1
        !          3946: 
        !          3947: 0707070014231030471006440057030057030000010301600522627500600003000000011014post.src/dpost/dpost.ps%
        !          3948: % Version 3.3.2 prologue for troff files.
        !          3949: %
        !          3950: 
        !          3951: /#copies 1 store
        !          3952: /aspectratio 1 def
        !          3953: /formsperpage 1 def
        !          3954: /landscape false def
        !          3955: /linewidth .3 def
        !          3956: /magnification 1 def
        !          3957: /margin 0 def
        !          3958: /orientation 0 def
        !          3959: /resolution 720 def
        !          3960: /rotation 1 def
        !          3961: /xoffset 0 def
        !          3962: /yoffset 0 def
        !          3963: 
        !          3964: /roundpage true def
        !          3965: /useclippath true def
        !          3966: /pagebbox [0 0 612 792] def
        !          3967: 
        !          3968: /R  /Times-Roman def
        !          3969: /I  /Times-Italic def
        !          3970: /B  /Times-Bold def
        !          3971: /BI /Times-BoldItalic def
        !          3972: /H  /Helvetica def
        !          3973: /HI /Helvetica-Oblique def
        !          3974: /HB /Helvetica-Bold def
        !          3975: /HX /Helvetica-BoldOblique def
        !          3976: /CW /Courier def
        !          3977: /CO /Courier def
        !          3978: /CI /Courier-Oblique def
        !          3979: /CB /Courier-Bold def
        !          3980: /CX /Courier-BoldOblique def
        !          3981: /PA /Palatino-Roman def
        !          3982: /PI /Palatino-Italic def
        !          3983: /PB /Palatino-Bold def
        !          3984: /PX /Palatino-BoldItalic def
        !          3985: /Hr /Helvetica-Narrow def
        !          3986: /Hi /Helvetica-Narrow-Oblique def
        !          3987: /Hb /Helvetica-Narrow-Bold def
        !          3988: /Hx /Helvetica-Narrow-BoldOblique def
        !          3989: /KR /Bookman-Light def
        !          3990: /KI /Bookman-LightItalic def
        !          3991: /KB /Bookman-Demi def
        !          3992: /KX /Bookman-DemiItalic def
        !          3993: /AR /AvantGarde-Book def
        !          3994: /AI /AvantGarde-BookOblique def
        !          3995: /AB /AvantGarde-Demi def
        !          3996: /AX /AvantGarde-DemiOblique def
        !          3997: /NR /NewCenturySchlbk-Roman def
        !          3998: /NI /NewCenturySchlbk-Italic def
        !          3999: /NB /NewCenturySchlbk-Bold def
        !          4000: /NX /NewCenturySchlbk-BoldItalic def
        !          4001: /ZD /ZapfDingbats def
        !          4002: /ZI /ZapfChancery-MediumItalic def
        !          4003: /S  /S def
        !          4004: /S1 /S1 def
        !          4005: /GR /Symbol def
        !          4006: 
        !          4007: /inch {72 mul} bind def
        !          4008: /min {2 copy gt {exch} if pop} bind def
        !          4009: 
        !          4010: /setup {
        !          4011:        counttomark 2 idiv {def} repeat pop
        !          4012: 
        !          4013:        landscape {/orientation 90 orientation add def} if
        !          4014:        /scaling 72 resolution div def
        !          4015:        linewidth setlinewidth
        !          4016:        1 setlinecap
        !          4017: 
        !          4018:        pagedimensions
        !          4019:        xcenter ycenter translate
        !          4020:        orientation rotation mul rotate
        !          4021:        width 2 div neg height 2 div translate
        !          4022:        xoffset inch yoffset inch neg translate
        !          4023:        margin 2 div dup neg translate
        !          4024:        magnification dup aspectratio mul scale
        !          4025:        scaling scaling scale
        !          4026: 
        !          4027:        addmetrics
        !          4028:        0 0 moveto
        !          4029: } def
        !          4030: 
        !          4031: /pagedimensions {
        !          4032:        useclippath userdict /gotpagebbox known not and {
        !          4033:                /pagebbox [clippath pathbbox newpath] def
        !          4034:                roundpage currentdict /roundpagebbox known and {roundpagebbox} if
        !          4035:        } if
        !          4036:        pagebbox aload pop
        !          4037:        4 -1 roll exch 4 1 roll 4 copy
        !          4038:        landscape {4 2 roll} if
        !          4039:        sub /width exch def
        !          4040:        sub /height exch def
        !          4041:        add 2 div /xcenter exch def
        !          4042:        add 2 div /ycenter exch def
        !          4043:        userdict /gotpagebbox true put
        !          4044: } def
        !          4045: 
        !          4046: /addmetrics {
        !          4047:        /Symbol /S null Sdefs cf
        !          4048:        /Times-Roman /S1 StandardEncoding dup length array copy S1defs cf
        !          4049: } def
        !          4050: 
        !          4051: /pagesetup {
        !          4052:        /page exch def
        !          4053:        currentdict /pagedict known currentdict page known and {
        !          4054:                page load pagedict exch get cvx exec
        !          4055:        } if
        !          4056: } def
        !          4057: 
        !          4058: /decodingdefs [
        !          4059:        {counttomark 2 idiv {y moveto show} repeat}
        !          4060:        {neg /y exch def counttomark 2 idiv {y moveto show} repeat}
        !          4061:        {neg moveto {2 index stringwidth pop sub exch div 0 32 4 -1 roll widthshow} repeat}
        !          4062:        {neg moveto {spacewidth sub 0.0 32 4 -1 roll widthshow} repeat}
        !          4063:        {counttomark 2 idiv {y moveto show} repeat}
        !          4064:        {neg setfunnytext}
        !          4065: ] def
        !          4066: 
        !          4067: /setdecoding {/t decodingdefs 3 -1 roll get bind def} bind def
        !          4068: 
        !          4069: /w {neg moveto show} bind def
        !          4070: /m {neg dup /y exch def moveto} bind def
        !          4071: /done {/lastpage where {pop lastpage} if} def
        !          4072: 
        !          4073: /f {
        !          4074:        dup /font exch def findfont exch
        !          4075:        dup /ptsize exch def scaling div dup /size exch def scalefont setfont
        !          4076:        linewidth ptsize mul scaling 10 mul div setlinewidth
        !          4077:        /spacewidth ( ) stringwidth pop def
        !          4078: } bind def
        !          4079: 
        !          4080: /changefont {
        !          4081:        /fontheight exch def
        !          4082:        /fontslant exch def
        !          4083:        currentfont [
        !          4084:                1 0
        !          4085:                fontheight ptsize div fontslant sin mul fontslant cos div
        !          4086:                fontheight ptsize div
        !          4087:                0 0
        !          4088:        ] makefont setfont
        !          4089: } bind def
        !          4090: 
        !          4091: /sf {f} bind def
        !          4092: 
        !          4093: /cf {
        !          4094:        dup length 2 idiv
        !          4095:        /entries exch def
        !          4096:        /chtab exch def
        !          4097:        /newencoding exch def
        !          4098:        /newfont exch def
        !          4099: 
        !          4100:        findfont dup length 1 add dict
        !          4101:        /newdict exch def
        !          4102:        {1 index /FID ne {newdict 3 1 roll put}{pop pop} ifelse} forall
        !          4103: 
        !          4104:        newencoding type /arraytype eq {newdict /Encoding newencoding put} if
        !          4105: 
        !          4106:        newdict /Metrics entries dict put
        !          4107:        newdict /Metrics get
        !          4108:        begin
        !          4109:                chtab aload pop
        !          4110:                1 1 entries {pop def} for
        !          4111:                newfont newdict definefont pop
        !          4112:        end
        !          4113: } bind def
        !          4114: 
        !          4115: %
        !          4116: % A few arrays used to adjust reference points and character widths in some
        !          4117: % of the printer resident fonts. If square roots are too high try changing
        !          4118: % the lines describing /radical and /radicalex to,
        !          4119: %
        !          4120: %      /radical        [0 -75 550 0]
        !          4121: %      /radicalex      [-50 -75 500 0]
        !          4122: %
        !          4123: % Move braceleftbt a bit - default PostScript character is off a bit.
        !          4124: %
        !          4125: 
        !          4126: /Sdefs [
        !          4127:        /bracketlefttp          [201 500]
        !          4128:        /bracketleftbt          [201 500]
        !          4129:        /bracketrighttp         [-81 380]
        !          4130:        /bracketrightbt         [-83 380]
        !          4131:        /braceleftbt            [203 490]
        !          4132:        /bracketrightex         [220 -125 500 0]
        !          4133:        /radical                [0 0 550 0]
        !          4134:        /radicalex              [-50 0 500 0]
        !          4135:        /parenleftex            [-20 -170 0 0]
        !          4136:        /integral               [100 -50 500 0]
        !          4137:        /infinity               [10 -75 730 0]
        !          4138: ] def
        !          4139: 
        !          4140: /S1defs [
        !          4141:        /underscore             [0 80 500 0]
        !          4142:        /endash                 [7 90 650 0]
        !          4143: ] def
        !          4144: 0707070014231030501006440057030057030000010302000522627500600002600000061605post.src/dpost/draw.c/*
        !          4145:  *
        !          4146:  * Drawing routines used by dpost. Almost no real work is done here. Instead
        !          4147:  * the required calculations are done in special Postscript procedures that
        !          4148:  * include:
        !          4149:  *
        !          4150:  *
        !          4151:  *     Dl
        !          4152:  *
        !          4153:  *       x1 y1 x y Dl -
        !          4154:  *
        !          4155:  *         Starts a new path and then draws a line from the current point
        !          4156:  *         (x, y) to (x1, y1).
        !          4157:  *
        !          4158:  *     De
        !          4159:  *
        !          4160:  *       x y a b De -
        !          4161:  *
        !          4162:  *         Starts a new path and then draws an ellipse that has its left side
        !          4163:  *         at the current point (x, y) and horizontal and vertical axes lengths
        !          4164:  *         given by a and b respectively.
        !          4165:  *
        !          4166:  *     Da
        !          4167:  *
        !          4168:  *       x y dx1 dy1 dx2 dy2 Da -
        !          4169:  *
        !          4170:  *         Starts a new segment and then draws a circular arc from the current
        !          4171:  *         point (x, y) to (x + dx1 + dx2, y + dy1 + dy2). The center of the
        !          4172:  *         circle is at (x + dx1, y + dy1). Arcs always go counter-clockwise
        !          4173:  *         from the starting point to the end point.
        !          4174:  *
        !          4175:  *     DA
        !          4176:  *
        !          4177:  *       x y dx1 dy1 dx2 dy2 DA -
        !          4178:  *
        !          4179:  *         Draws a clockwise arc from (x, y) to (x + dx1 + dx2, y + dy1 + dy2)
        !          4180:  *         with center at (x + dx1, y + dy1). Only needed when we're building
        !          4181:  *         large paths that use arcs and want to control the current point. The
        !          4182:  *         arguments passed to drawarc() will be whatever they would have been
        !          4183:  *         for a counter-clockwise arc, so we need to map them into appropriate
        !          4184:  *         arguments for PostScript's arcn operator. The mapping is,
        !          4185:  *
        !          4186:  *                     x = hpos + dx1' + dx2'
        !          4187:  *                     y = vpos + dy1' + dy2'
        !          4188:  *                     dx1 = -dx2'
        !          4189:  *                     dy1 = -dy2'
        !          4190:  *                     dx2 = -dx1'
        !          4191:  *                     dy2 = -dy1'
        !          4192:  *
        !          4193:  *        where primed values represent the drawarc() arguments and (hpos, vpos)
        !          4194:  *        is our current position.
        !          4195:  *
        !          4196:  *     Ds
        !          4197:  *
        !          4198:  *       x0 y0 x1 y1 x2 y2 Ds -
        !          4199:  *
        !          4200:  *         Starts a new segment and then draws a quadratic spline connecting
        !          4201:  *         point ((x0 + x1)/2, (y0 + y1)/2) to ((x1 + x2)/2, (y1 + y2)/2).
        !          4202:  *         The points used in Postscript's curveto procedure are given by,
        !          4203:  *
        !          4204:  *             x0' = (x0 + 5 * x1) / 6
        !          4205:  *             x1' = (x2 + 5 * x1) / 6
        !          4206:  *             x2' = (x1 + x2) / 2
        !          4207:  *
        !          4208:  *         with similar equations for the y coordinates.
        !          4209:  *
        !          4210:  * By default all the PostScript drawing procedures begin with a newpath (just to
        !          4211:  * be safe) and end with a stroke, which essentially isolates the path elements
        !          4212:  * built by the drawing procedures. In order to accommodate big paths built from
        !          4213:  * smaller pieces each of the PostScript drawing procedures can forced to retain
        !          4214:  * the path that's being built. That's what happens in beginpath() when an "x X
        !          4215:  * BeginPath" command is read. beginpath() sets the PostScript variable inpath to
        !          4216:  * true, and that essentially eliminates the newpath/stroke pair that bracket the
        !          4217:  * individual pieces. In that case the path is terminated and drawn when dpost
        !          4218:  * reads an "x X DrawPath" command.
        !          4219:  *
        !          4220:  * Early versions of dpost included the PostScript drawing procedures as part of
        !          4221:  * the prologue, and as a result they were included with every job, even if they
        !          4222:  * were never used. This version has separated the drawing procedures from the
        !          4223:  * default prologue (they're now in *drawfile) and only includes them if they're
        !          4224:  * really needed, which is yet another convenient violation of page independence.
        !          4225:  * Routine getdraw() is responsible for adding *drawfile to the output file, and
        !          4226:  * if it can't read *drawfile it continues on as if nothing happened. That means
        !          4227:  * everything should still work if you append *drawfile to *prologue and then
        !          4228:  * delete *drawfile.
        !          4229:  *
        !          4230:  */
        !          4231: 
        !          4232: #include <stdio.h>
        !          4233: #include <math.h>
        !          4234: 
        !          4235: #include "gen.h"                       /* general purpose definitions */
        !          4236: #include "ext.h"                       /* external variable definitions */
        !          4237: #include "motion.h"                    /* positioning macros */
        !          4238: 
        !          4239: int    gotdraw = FALSE;                /* TRUE when *drawfile has been added */
        !          4240: int    gotbaseline = FALSE;            /* TRUE after *baselinefile is added */
        !          4241: int    inpath = FALSE;                 /* TRUE if we're putting pieces together */
        !          4242: 
        !          4243: /*
        !          4244:  *
        !          4245:  * All these should be defined in file dpost.c.
        !          4246:  *
        !          4247:  */
        !          4248: 
        !          4249: extern int             hpos;
        !          4250: extern int             vpos;
        !          4251: extern int             encoding;
        !          4252: extern int             maxencoding;
        !          4253: extern int             realencoding;
        !          4254: 
        !          4255: extern char            *drawfile;
        !          4256: extern char            *baselinefile;
        !          4257: extern FILE            *tf;
        !          4258: 
        !          4259: /*****************************************************************************/
        !          4260: 
        !          4261: getdraw()
        !          4262: 
        !          4263: {
        !          4264: 
        !          4265: /*
        !          4266:  *
        !          4267:  * Responsible for making sure the PostScript drawing procedures are downloaded
        !          4268:  * from *drawfile. Stuff is done at most once per job, and only if the job needs
        !          4269:  * them. For now I've decided not to quit if we can't read the drawing file. That
        !          4270:  * pretty much assumes an old version of prologue is being used that includes all
        !          4271:  * the drawing procedures.
        !          4272:  *
        !          4273:  */
        !          4274: 
        !          4275:     if ( gotdraw == FALSE )
        !          4276:        exportfile(drawfile);
        !          4277: 
        !          4278:     if ( tf == stdout )
        !          4279:        gotdraw = TRUE;
        !          4280: 
        !          4281: }   /* End of getdraw */
        !          4282: 
        !          4283: /*****************************************************************************/
        !          4284: 
        !          4285: drawline(dx, dy)
        !          4286: 
        !          4287:     int                dx, dy;                 /* endpoint is (hpos+dx, vpos+dy) */
        !          4288: 
        !          4289: {
        !          4290: 
        !          4291: /*
        !          4292:  *
        !          4293:  * Draws a line from (hpos, vpos) to (hpos+dx, vpos+dy), and leaves the current
        !          4294:  * position at the endpoint.
        !          4295:  *
        !          4296:  */
        !          4297: 
        !          4298:     if ( dx == 0 && dy == 0 )
        !          4299:        drawcirc(1);
        !          4300:     else fprintf(tf, "%d %d %d %d Dl\n", hpos + dx, vpos + dy, hpos, vpos);
        !          4301: 
        !          4302:     if ( dobbox == TRUE ) {
        !          4303:        cover((double)hpos, (double)-vpos);
        !          4304:        cover((double)(hpos + dx), (double)-(vpos + dy));
        !          4305:     }  /* End if */
        !          4306: 
        !          4307:     hgoto(hpos+dx);                    /* where troff expects to be */
        !          4308:     vgoto(vpos+dy);
        !          4309: 
        !          4310:     resetpos();                                /* not sure where the printer is */
        !          4311: 
        !          4312: }   /* End of drawline */
        !          4313: 
        !          4314: /*****************************************************************************/
        !          4315: 
        !          4316: drawcirc(d)
        !          4317: 
        !          4318:     int                d;                      /* diameter of the circle */
        !          4319: 
        !          4320: {
        !          4321: 
        !          4322: /*
        !          4323:  *
        !          4324:  * Draws a circle of diameter d with the left 'side' of the circle at the
        !          4325:  * current point. After we're finished drawing we move the current position
        !          4326:  * to the right side.
        !          4327:  *
        !          4328:  */
        !          4329: 
        !          4330:     drawellip(d, d);
        !          4331: 
        !          4332: }   /* End of drawcirc */
        !          4333: 
        !          4334: /*****************************************************************************/
        !          4335: 
        !          4336: drawellip(a, b)
        !          4337: 
        !          4338:     int                a, b;                   /* axes lengths for the ellipse */
        !          4339: 
        !          4340: {
        !          4341: 
        !          4342: /*
        !          4343:  *
        !          4344:  * Draws an ellipse having axes lengths horizontally and vertically of a and
        !          4345:  * b. The left side of the ellipse is at the current point. After we're done
        !          4346:  * drawing the path we move the current position to the right side.
        !          4347:  *
        !          4348:  */
        !          4349: 
        !          4350:     if ( a == 0 && b == 0 )
        !          4351:        return;
        !          4352: 
        !          4353:     fprintf(tf, "%d %d %d %d De\n", hpos, vpos, a, b);
        !          4354: 
        !          4355:     if ( dobbox == TRUE ) {
        !          4356:        cover((double)hpos, (double)-(vpos + b/2));
        !          4357:        cover((double)(hpos+a), (double)-(vpos - b/2));
        !          4358:     }  /* End if */
        !          4359: 
        !          4360:     hgoto(hpos + a);                   /* where troff expects to be */
        !          4361:     vgoto(vpos);
        !          4362: 
        !          4363:     resetpos();                                /* not sure where the printer is */
        !          4364: 
        !          4365: }   /* End of drawellip */
        !          4366: 
        !          4367: /*****************************************************************************/
        !          4368: 
        !          4369: drawarc(dx1, dy1, dx2, dy2, c)
        !          4370: 
        !          4371:     int                dx1, dy1;               /* vector from current pos to center */
        !          4372:     int                dx2, dy2;               /* from center to end of the arc */
        !          4373:     int                c;                      /* clockwise if c is A */
        !          4374: 
        !          4375: {
        !          4376: 
        !          4377: /*
        !          4378:  *
        !          4379:  * If c isn't set to 'A' a counter-clockwise arc is drawn from the current point
        !          4380:  * (hpos, vpos) to (hpos+dx1+dx2, vpos+dy1+dy2). The center of the circle is the
        !          4381:  * point (hpos+dx1, vpos+dy1). If c is 'A' the arc goes clockwise from the point
        !          4382:  * (hpos+dx1+dx2, vpos+dy1+dy2) to (hpos, vpos). Clockwise arcs are only needed
        !          4383:  * if we're building a larger path out of pieces that include arcs, and want to
        !          4384:  * have PostScript manage the path for us. Arguments (for a clockwise arc) are
        !          4385:  * what would have been supplied if the arc was drawn in a counter-clockwise
        !          4386:  * direction, and are converted to values suitable for use with PostScript's arcn
        !          4387:  * operator.
        !          4388:  *
        !          4389:  */
        !          4390: 
        !          4391:     if ( (dx1 != 0 || dy1 != 0) && (dx2 != 0 || dy2 != 0) ) {
        !          4392:        if ( c != 'A' )
        !          4393:            fprintf(tf, "%d %d %d %d %d %d Da\n", hpos, vpos, dx1, dy1, dx2, dy2);
        !          4394:        else fprintf(tf, "%d %d %d %d %d %d DA\n", hpos+dx1+dx2, vpos+dy1+dy2,
        !          4395:                                                -dx2, -dy2, -dx1, -dy1);
        !          4396: 
        !          4397:        if ( dobbox == TRUE )
        !          4398:            arc_extreme(dx1, dy1, dx2, dy2);
        !          4399:     }  /* End if */
        !          4400: 
        !          4401:     hgoto(hpos + dx1 + dx2);           /* where troff expects to be */
        !          4402:     vgoto(vpos + dy1 + dy2);
        !          4403: 
        !          4404:     resetpos();                                /* not sure where the printer is */
        !          4405: 
        !          4406: }   /* End of drawarc */
        !          4407: 
        !          4408: /*****************************************************************************/
        !          4409: 
        !          4410: drawspline(fp, flag)
        !          4411: 
        !          4412:     FILE       *fp;                    /* input for point list */
        !          4413:     int                flag;                   /* flag!=1 connect end points */
        !          4414: 
        !          4415: {
        !          4416: 
        !          4417:     int                x[100], y[100];
        !          4418:     int                i, N;
        !          4419: 
        !          4420: /*
        !          4421:  *
        !          4422:  * Spline drawing routine for Postscript printers. The complicated stuff is
        !          4423:  * handled by procedure Ds, which should be defined in the library file. I've
        !          4424:  * seen wrong implementations of troff's spline drawing, so fo the record I'll
        !          4425:  * write down the parametric equations and the necessary conversions to Bezier
        !          4426:  * cubic splines (as used in Postscript).
        !          4427:  *
        !          4428:  *
        !          4429:  * Parametric equation (x coordinate only):
        !          4430:  *
        !          4431:  *
        !          4432:  *         (x2 - 2 * x1 + x0)    2                    (x0 + x1)
        !          4433:  *     x = ------------------ * t   + (x1 - x0) * t + ---------
        !          4434:  *                 2                                      2
        !          4435:  *
        !          4436:  *
        !          4437:  * The coefficients in the Bezier cubic are,
        !          4438:  *
        !          4439:  *
        !          4440:  *     A = 0
        !          4441:  *     B = (x2 - 2 * x1 + x0) / 2
        !          4442:  *     C = x1 - x0
        !          4443:  *
        !          4444:  *
        !          4445:  * while the current point is,
        !          4446:  *
        !          4447:  *     current-point = (x0 + x1) / 2
        !          4448:  *
        !          4449:  * Using the relationships given in the Postscript manual (page 121) it's easy to
        !          4450:  * see that the control points are given by,
        !          4451:  *
        !          4452:  *
        !          4453:  *     x0' = (x0 + 5 * x1) / 6
        !          4454:  *     x1' = (x2 + 5 * x1) / 6
        !          4455:  *     x2' = (x1 + x2) / 2
        !          4456:  *
        !          4457:  *
        !          4458:  * where the primed variables are the ones used by curveto. The calculations
        !          4459:  * shown above are done in procedure Ds using the coordinates set up in both
        !          4460:  * the x[] and y[] arrays.
        !          4461:  *
        !          4462:  * A simple test of whether your spline drawing is correct would be to use cip
        !          4463:  * to draw a spline and some tangent lines at appropriate points and then print
        !          4464:  * the file.
        !          4465:  *
        !          4466:  */
        !          4467: 
        !          4468:     for ( N = 2; N < sizeof(x)/sizeof(x[0]); N++ )
        !          4469:        if (fscanf(fp, "%d %d", &x[N], &y[N]) != 2)
        !          4470:                break;
        !          4471: 
        !          4472:     x[0] = x[1] = hpos;
        !          4473:     y[0] = y[1] = vpos;
        !          4474: 
        !          4475:     for (i = 1; i < N; i++) {
        !          4476:        x[i+1] += x[i];
        !          4477:        y[i+1] += y[i];
        !          4478:     }  /* End for */
        !          4479: 
        !          4480:     x[N] = x[N-1];
        !          4481:     y[N] = y[N-1];
        !          4482: 
        !          4483:     for (i = ((flag!=1)?0:1); i < ((flag!=1)?N-1:N-2); i++) {
        !          4484:        fprintf(tf, "%d %d %d %d %d %d Ds\n", x[i], y[i], x[i+1], y[i+1], x[i+2], y[i+2]);
        !          4485:        if ( dobbox == TRUE ) {         /* could be better */
        !          4486:            cover((double)(x[i] + x[i+1])/2,(double)-(y[i] + y[i+1])/2);
        !          4487:            cover((double)x[i+1], (double)-y[i+1]);
        !          4488:            cover((double)(x[i+1] + x[i+2])/2, (double)-(y[i+1] + y[i+2])/2);
        !          4489:        }   /* End if */
        !          4490:     }  /* End for */
        !          4491: 
        !          4492:     hgoto(x[N]);                       /* where troff expects to be */
        !          4493:     vgoto(y[N]);
        !          4494: 
        !          4495:     resetpos();                                /* not sure where the printer is */
        !          4496: 
        !          4497: }   /* End of drawspline */
        !          4498: 
        !          4499: /*****************************************************************************/
        !          4500: 
        !          4501: arc_extreme(dx1, dy1, dx2, dy2)
        !          4502: 
        !          4503:     int                dx1, dy1, dx2, dy2;
        !          4504: 
        !          4505: {
        !          4506: 
        !          4507:     double     x0, y0, x1, y1, xc, yc;  /* start, end, center */
        !          4508:     double     r, xmin, ymin, xmax, ymax;
        !          4509:     int                j, k;
        !          4510: 
        !          4511: /*
        !          4512:  *
        !          4513:  * bounding box of a circular arc             Eric Grosse  24 May 84
        !          4514:  *
        !          4515:  * Conceptually, this routine generates a list consisting of the start,
        !          4516:  * end, and whichever north, east, south, and west points lie on the arc.
        !          4517:  * The bounding box is then the range of this list.
        !          4518:  *     list = {start,end}
        !          4519:  *     j = quadrant(start)
        !          4520:  *     k = quadrant(end)
        !          4521:  *     if( j==k && long way 'round )  append north,west,south,east
        !          4522:  *     else
        !          4523:  *       while( j != k )
        !          4524:  *          append center+radius*[j-th of north,west,south,east unit vectors]
        !          4525:  *          j += 1  (mod 4)
        !          4526:  *     return( bounding box of list )
        !          4527:  * The following code implements this, with simple optimizations.
        !          4528:  *
        !          4529:  */
        !          4530: 
        !          4531:     x0 = hpos;
        !          4532:     y0 = -vpos;
        !          4533:     x1 = hpos + dx1 + dx2;
        !          4534:     y1 = -(vpos + dy1 + dy2);
        !          4535:     xc = hpos + dx1;
        !          4536:     yc = -(vpos + dy1);
        !          4537: 
        !          4538:     x0 -= xc; y0 -= yc;                        /* move to center */
        !          4539:     x1 -= xc; y1 -= yc;
        !          4540:     xmin = (x0<x1)?x0:x1; ymin = (y0<y1)?y0:y1;
        !          4541:     xmax = (x0>x1)?x0:x1; ymax = (y0>y1)?y0:y1;
        !          4542:     r = sqrt(x0*x0 + y0*y0);
        !          4543:     if (r > 0.0) {
        !          4544:        j = quadrant(x0,y0);
        !          4545:        k = quadrant(x1,y1);
        !          4546:        if (j == k && y1*x0 < x1*y0) {
        !          4547:            /* viewed as complex numbers, if Im(z1/z0)<0, arc is big */
        !          4548:            if( xmin > -r) xmin = -r; if( ymin > -r) ymin = -r;
        !          4549:            if( xmax <  r) xmax =  r; if( ymax <  r) ymax =  r;
        !          4550:        } else {
        !          4551:            while (j != k) {
        !          4552:                switch (j) {
        !          4553:                    case 1: if( ymax <  r) ymax =  r; break; /* north */
        !          4554:                    case 2: if( xmin > -r) xmin = -r; break; /* west */
        !          4555:                    case 3: if( ymin > -r) ymin = -r; break; /* south */
        !          4556:                    case 4: if( xmax <  r) xmax =  r; break; /* east */
        !          4557:                }   /* End switch */
        !          4558:                j = j%4 + 1;
        !          4559:            }   /* End while */
        !          4560:        }   /* End else */
        !          4561:     }  /* End if */
        !          4562: 
        !          4563:     xmin += xc; ymin += yc;
        !          4564:     xmax += xc; ymax += yc;
        !          4565:     cover(xmin, ymin);
        !          4566:     cover(xmax, ymax);
        !          4567: 
        !          4568: }   /* End of arc_extreme */
        !          4569: 
        !          4570: /*****************************************************************************/
        !          4571: 
        !          4572: quadrant(x,y)
        !          4573: 
        !          4574:        double x, y;
        !          4575: 
        !          4576: {
        !          4577: 
        !          4578:     if (     x>=0.0 && y> 0.0) return(1);
        !          4579:     else if( x< 0.0 && y>=0.0) return(2);
        !          4580:     else if( x<=0.0 && y< 0.0) return(3);
        !          4581:     else if( x> 0.0 && y<=0.0) return(4);
        !          4582:     else                      return 0;        /* shut up lint */
        !          4583: 
        !          4584: }   /* End of quadrant */
        !          4585: 
        !          4586: /*****************************************************************************/
        !          4587: 
        !          4588: beginpath(buf, copy)
        !          4589: 
        !          4590:     char       *buf;                   /* whatever followed "x X BeginPath" */
        !          4591:     int                copy;                   /* ignore *buf if FALSE */
        !          4592: 
        !          4593: {
        !          4594: 
        !          4595: /*
        !          4596:  *
        !          4597:  * Called from devcntrl() whenever an "x X BeginPath" command is read. It's used
        !          4598:  * to mark the start of a sequence of drawing commands that should be grouped
        !          4599:  * together and treated as a single path. By default the drawing procedures in
        !          4600:  * *drawfile treat each drawing command as a separate object, and usually start
        !          4601:  * with a newpath (just as a precaution) and end with a stroke. The newpath and
        !          4602:  * stroke isolate individual drawing commands and make it impossible to deal with
        !          4603:  * composite objects. "x X BeginPath" can be used to mark the start of drawing
        !          4604:  * commands that should be grouped together and treated as a single object, and
        !          4605:  * part of what's done here ensures that the PostScript drawing commands defined
        !          4606:  * in *drawfile skip the newpath and stroke, until after the next "x X DrawPath"
        !          4607:  * command. At that point the path that's been built up can be manipulated in
        !          4608:  * various ways (eg. filled and/or stroked with a different line width).
        !          4609:  *
        !          4610:  * String *buf is unnecessary and is only included for compatibility with an early
        !          4611:  * verion of that's still in use. In that version "x X BeginObject" marked the
        !          4612:  * start of a graphical object, and whatever followed it was passed along in *buf
        !          4613:  * and copied to the output file. Color selection is one of the options that's
        !          4614:  * available in parsebuf(), so if we get here we add *colorfile to the output
        !          4615:  * file before doing anything important.
        !          4616:  *
        !          4617:  */
        !          4618: 
        !          4619:     if ( inpath == FALSE ) {
        !          4620:        flushtext();
        !          4621:        getdraw();
        !          4622:        getcolor();
        !          4623:        fprintf(tf, "gsave\n");
        !          4624:        fprintf(tf, "newpath\n");
        !          4625:        fprintf(tf, "%d %d m\n", hpos, vpos);
        !          4626:        fprintf(tf, "/inpath true def\n");
        !          4627:        if ( copy == TRUE )
        !          4628:            fprintf(tf, "%s", buf);
        !          4629:        inpath = TRUE;
        !          4630:     }  /* End if */
        !          4631: 
        !          4632: }   /* End of beginpath */
        !          4633: 
        !          4634: /*****************************************************************************/
        !          4635: 
        !          4636: drawpath(buf, copy)
        !          4637: 
        !          4638:     char       *buf;
        !          4639:     int                copy;
        !          4640: 
        !          4641: {
        !          4642: 
        !          4643: /*
        !          4644:  *
        !          4645:  * Called from devcntrl() whenever an "x X DrawPath" command is read. It marks the
        !          4646:  * end of the path started by the last "x X BeginPath" command and uses whatever
        !          4647:  * has been passed along in *buf to manipulate the path (eg. fill and/or stroke
        !          4648:  * the path). Once that's been done the drawing procedures are restored to their
        !          4649:  * default behavior in which each drawing command is treated as an isolated path.
        !          4650:  * The new version (called after "x X DrawPath") has copy set to FALSE, and calls
        !          4651:  * parsebuf() to figure out what goes in the output file. It's a feeble attempt
        !          4652:  * to free users and preprocessors (like pic) from having to know PostScript. The
        !          4653:  * comments in parsebuf() describe what's handled.
        !          4654:  *
        !          4655:  * In the early version a path was started with "x X BeginObject" and ended with
        !          4656:  * "x X EndObject". In both cases *buf was just copied to the output file, and
        !          4657:  * was expected to be legitimate PostScript that manipulated the current path.
        !          4658:  * The old escape sequence will be supported for a while (for Ravi), and always
        !          4659:  * call this routine with copy set to TRUE.
        !          4660:  * 
        !          4661:  *
        !          4662:  */
        !          4663: 
        !          4664:     if ( inpath == TRUE ) {
        !          4665:        if ( copy == TRUE )
        !          4666:            fprintf(tf, "%s", buf);
        !          4667:        else parsebuf(buf);
        !          4668:        fprintf(tf, "grestore\n");
        !          4669:        fprintf(tf, "/inpath false def\n");
        !          4670:        reset();
        !          4671:        inpath = FALSE;
        !          4672:     }  /* End if */
        !          4673: 
        !          4674: }   /* End of drawpath */
        !          4675: 
        !          4676: /*****************************************************************************/
        !          4677: 
        !          4678: parsebuf(buf)
        !          4679: 
        !          4680:     char       *buf;                   /* whatever followed "x X DrawPath" */
        !          4681: 
        !          4682: {
        !          4683: 
        !          4684:     char       *p;                     /* usually the next token */
        !          4685:     char       *p1;                    /* for grabbing arguments */
        !          4686:     char       *pend;                  /* end of the original string (ie. *buf) */
        !          4687:     int                gsavelevel = 0;         /* non-zero if we've done a gsave */
        !          4688: 
        !          4689: /*
        !          4690:  *
        !          4691:  * Simple minded attempt at parsing the string that followed an "x X DrawPath"
        !          4692:  * command. Everything not recognized here is simply ignored - there's absolutely
        !          4693:  * no error checking and what was originally in buf is clobbered by strtok().
        !          4694:  * A typical *buf might look like,
        !          4695:  *
        !          4696:  *     gray .9 fill stroke
        !          4697:  *
        !          4698:  * to fill the current path with a gray level of .9 and follow that by stroking the
        !          4699:  * outline of the path. Since unrecognized tokens are ignored the last example
        !          4700:  * could also be written as,
        !          4701:  *
        !          4702:  *     with gray .9 fill then stroke
        !          4703:  *
        !          4704:  * The "with" and "then" strings aren't recognized tokens and are simply discarded.
        !          4705:  * The "stroke", "fill", and "wfill" force out appropriate PostScript code and are
        !          4706:  * followed by a grestore. In otherwords changes to the grahics state (eg. a gray
        !          4707:  * level or color) are reset to default values immediately after the stroke, fill,
        !          4708:  * or wfill tokens. For now "fill" gets invokes PostScript's eofill operator and
        !          4709:  * "wfill" calls fill (ie. the operator that uses the non-zero winding rule).
        !          4710:  *
        !          4711:  * The tokens that cause temporary changes to the graphics state are "gray" (for
        !          4712:  * setting the gray level), "color" (for selecting a known color from the colordict
        !          4713:  * dictionary defined in *colorfile), and "line" (for setting the line width). All
        !          4714:  * three tokens can be extended since strncmp() makes the comparison. For example
        !          4715:  * the strings "line" and "linewidth" accomplish the same thing. Colors are named
        !          4716:  * (eg. "red"), but must be appropriately defined in *colorfile. For now all three
        !          4717:  * tokens must be followed immediately by their single argument. The gray level
        !          4718:  * (ie. the argument that follows "gray") should be a number between 0 and 1, with
        !          4719:  * 0 for black and 1 for white.
        !          4720:  *
        !          4721:  * To pass straight PostScript through enclose the appropriate commands in double
        !          4722:  * quotes. Straight PostScript is only bracketed by the outermost gsave/grestore
        !          4723:  * pair (ie. the one from the initial "x X BeginPath") although that's probably
        !          4724:  * a mistake. Suspect I may have to change the double quote delimiters.
        !          4725:  *
        !          4726:  */
        !          4727: 
        !          4728:     pend = buf + strlen(buf);
        !          4729:     p = strtok(buf, " \n");
        !          4730: 
        !          4731:     while ( p != NULL ) {
        !          4732:        if ( gsavelevel == 0 ) {
        !          4733:            fprintf(tf, "gsave\n");
        !          4734:            gsavelevel++;
        !          4735:        }   /* End if */
        !          4736:        if ( strcmp(p, "stroke") == 0 ) {
        !          4737:            fprintf(tf, "closepath stroke\ngrestore\n");
        !          4738:            gsavelevel--;
        !          4739:        } else if ( strcmp(p, "openstroke") == 0 ) {
        !          4740:            fprintf(tf, "stroke\ngrestore\n");
        !          4741:            gsavelevel--;
        !          4742:        } else if ( strcmp(p, "fill") == 0 ) {
        !          4743:            fprintf(tf, "eofill\ngrestore\n");
        !          4744:            gsavelevel--;
        !          4745:        } else if ( strcmp(p, "wfill") == 0 ) {
        !          4746:            fprintf(tf, "fill\ngrestore\n");
        !          4747:            gsavelevel--;
        !          4748:        } else if ( strcmp(p, "sfill") == 0 ) {
        !          4749:            fprintf(tf, "eofill\ngrestore\ngsave\nstroke\ngrestore\n");
        !          4750:            gsavelevel--;
        !          4751:        } else if ( strncmp(p, "gray", strlen("gray")) == 0 ) {
        !          4752:            p1 = strtok(NULL, " \n");
        !          4753:            fprintf(tf, "%s setgray\n", p1);
        !          4754:        } else if ( strncmp(p, "color", strlen("color")) == 0 ) {
        !          4755:            p1 = strtok(NULL, " \n");
        !          4756:            fprintf(tf, "/%s setcolor\n", p1);
        !          4757:        } else if ( strncmp(p, "line", strlen("line")) == 0 ) {
        !          4758:            p1 = strtok(NULL, " \n");
        !          4759:            fprintf(tf, "%s resolution mul 2 div setlinewidth\n", p1);
        !          4760:        } else if ( strncmp(p, "reverse", strlen("reverse")) == 0 )
        !          4761:            fprintf(tf, "reversepath\n");
        !          4762:        else if ( *p == '"' ) {
        !          4763:            for ( ; gsavelevel > 0; gsavelevel-- )
        !          4764:                fprintf(tf, "grestore\n");
        !          4765:            if ( (p1 = p + strlen(p)) < pend )
        !          4766:                *p1 = ' ';
        !          4767:            p = strtok(p, "\"\n");
        !          4768:            fprintf(tf, "%s\n", p);
        !          4769:        }   /* End else */
        !          4770:        p = strtok(NULL, " \n");
        !          4771:     }  /* End while */
        !          4772: 
        !          4773:     for ( ; gsavelevel > 0; gsavelevel-- )
        !          4774:        fprintf(tf, "grestore\n");
        !          4775: 
        !          4776: }   /* End of parsebuf */
        !          4777: 
        !          4778: /*****************************************************************************/
        !          4779: 
        !          4780: getbaseline()
        !          4781: 
        !          4782: {
        !          4783: 
        !          4784: /*
        !          4785:  *
        !          4786:  * Responsible for making sure the PostScript procedures needed for printing text
        !          4787:  * along an arbitrary baseline are downloaded from *baselinefile. Done at most
        !          4788:  * once per job, and only if the the stuff is really used.
        !          4789:  *
        !          4790:  */
        !          4791: 
        !          4792:     if ( gotbaseline == FALSE )
        !          4793:        exportfile(baselinefile);
        !          4794: 
        !          4795:     if ( tf == stdout )
        !          4796:        gotbaseline = TRUE;
        !          4797: 
        !          4798: }   /* End of getbaseline */
        !          4799: 
        !          4800: /*****************************************************************************/
        !          4801: 
        !          4802: newbaseline(buf)
        !          4803: 
        !          4804:     char       *buf;                   /* whatever followed "x X NewBaseline" */
        !          4805: 
        !          4806: {
        !          4807: 
        !          4808:     char       *p;                     /* for eliminating white space etc. */
        !          4809: 
        !          4810: /*
        !          4811:  *
        !          4812:  * Called from devcntrl() whenever an "x X NewBaseline" command is recognized. We
        !          4813:  * assume whatever is in *buf is a set of parametric equations that describe the
        !          4814:  * new baseline. Equations for x(t), y(t), dx/dt, and dy/dt must be written in
        !          4815:  * PostScript, bracketed by { and } characters, and supplied in exactly that order.
        !          4816:  * In particular the equation for x must come first in *buf and it ends up as the
        !          4817:  * last one on the stack, while the equation for dy/dt comes last (in *buf) and
        !          4818:  * ends up on the top of the PostScript stack. For example if *buf is given by,
        !          4819:  *
        !          4820:  *     {} {180 mul 3.1416 div cos} {pop 1} {180 mul 3.1416 div sin neg}
        !          4821:  *
        !          4822:  * text will be printed along the curve y = cos(x).
        !          4823:  *
        !          4824:  * Angles given in radians must be converted to degrees for the PostScript trig
        !          4825:  * functions, and things are scaled so that 1 unit maps into 1 inch. In the last
        !          4826:  * example the cosine curve that describes the baseline has an amplitude of 1 inch.
        !          4827:  * As another example of this rather confusing syntax if *buf is,
        !          4828:  *
        !          4829:  *     {} {} {pop 1} {pop 1}
        !          4830:  *
        !          4831:  * the baseline will be the 45 degree line y = x.
        !          4832:  *
        !          4833:  * When any of the four functions is used they're called with a single number on
        !          4834:  * the stack that's equal to the current value of the parameter t. The coordinate
        !          4835:  * system axes run parallel to the PostScript coordinate system that's currently
        !          4836:  * being used.
        !          4837:  *
        !          4838:  */
        !          4839: 
        !          4840:     for ( p = buf; *p; p++ )           /* eliminate trailing '\n' */
        !          4841:        if ( *p == '\n' ) {
        !          4842:            *p = '\0';
        !          4843:            break;
        !          4844:        }   /* End if */
        !          4845: 
        !          4846:     for ( p = buf; *p && (*p == ' ' || *p == ':'); p++ ) ;
        !          4847: 
        !          4848:     if ( *p != '\0' ) {                        /* something's there */
        !          4849:        flushtext();
        !          4850:        getbaseline();
        !          4851:        fprintf(tf, "mark resolution %s newbaseline\n", p);
        !          4852:        reset();
        !          4853:     }  /* End if */
        !          4854: 
        !          4855: }   /* End of newbaseline */
        !          4856: 
        !          4857: /*****************************************************************************/
        !          4858: 
        !          4859: drawtext(buf)
        !          4860: 
        !          4861:     char       *buf;                   /* whatever followed "x X DrawText */
        !          4862: 
        !          4863: {
        !          4864: 
        !          4865:     char       *p;                     /* for eliminating white space etc. */
        !          4866: 
        !          4867: /*
        !          4868:  *
        !          4869:  * Called from devcntrl() whenever an "x X DrawText command is recognized. *buf
        !          4870:  * should contain three arguments in the following order. First comes the text we
        !          4871:  * want to print along the current baseline. Right now the string should be given
        !          4872:  * as a PostScript string using characters '(' and ')' as the delimiters. Next in
        !          4873:  * *buf comes a justification mode that can be the words left, right, or center.
        !          4874:  * Last comes a number that represents the starting value of the parameter t that's
        !          4875:  * given as the argument to the parametric equations that describe the current
        !          4876:  * baseline. For example if *buf is given by,
        !          4877:  *
        !          4878:  *     (hello world) left .5
        !          4879:  *
        !          4880:  * hello world will be printed along the path described by the current baseline
        !          4881:  * and left justified at whatever (x(.5), y(.5)) happens to be. Usually will be
        !          4882:  * preceeded by an "x X NewBaseline" call that defines the current baseline. The
        !          4883:  * origin of the coordinate system used by the parametric equations will be the
        !          4884:  * current point.
        !          4885:  *
        !          4886:  */
        !          4887: 
        !          4888:     for ( p = buf; *p; p++ )           /* eliminate trailing '\n' */
        !          4889:        if ( *p == '\n' ) {
        !          4890:            *p = '\0';
        !          4891:            break;
        !          4892:        }   /* End if */
        !          4893: 
        !          4894:     for ( p = buf; *p && (*p == ' ' || *p == ':'); p++ ) ;
        !          4895: 
        !          4896:     if ( *p != '\0' ) {                        /* something's there */
        !          4897:        flushtext();
        !          4898:        getbaseline();
        !          4899:        xymove(hpos, vpos);
        !          4900:        fprintf(tf, "mark %s drawfunnytext\n", p);
        !          4901:        resetpos();
        !          4902:     }  /* End if */
        !          4903: 
        !          4904: }   /* End of drawtext */
        !          4905: 
        !          4906: /*****************************************************************************/
        !          4907: 
        !          4908: settext(buf)
        !          4909: 
        !          4910:     char       *buf;
        !          4911: 
        !          4912: {
        !          4913: 
        !          4914:     char       *p;
        !          4915: 
        !          4916: /*
        !          4917:  *
        !          4918:  * Does whatever is needed to ensure any text that follows will be set along the
        !          4919:  * curve described by the PostScript procedures listed in *buf. If *buf doesn't
        !          4920:  * contain anything useful (eg. just a newline) things are restored to whatever
        !          4921:  * they originally were. Doesn't work well if we try to start in the middle of a
        !          4922:  * line of text.
        !          4923:  *
        !          4924:  * The parametric equations needed are,
        !          4925:  *
        !          4926:  *     x = f(t)
        !          4927:  *     y = g(t)
        !          4928:  *     dx/dt = f'(t)
        !          4929:  *     dy/dt = g'(t)
        !          4930:  *
        !          4931:  * and must be given as proper PostScript procedures. The equation for x must come
        !          4932:  * first (ie. it ends up on the bottom of the stack) and the equation for dy/dt
        !          4933:  * must be given last (ie. it ends up on top of the stack). For example if *buf
        !          4934:  * is given by,
        !          4935:  *
        !          4936:  *     {} {180 mul 3.1416 div cos} {pop 1} {180 mul 3.1416 div sin neg}
        !          4937:  *
        !          4938:  * text will be set along the curve y=cos(x).
        !          4939:  *
        !          4940:  */
        !          4941: 
        !          4942:     flushtext();
        !          4943:     getbaseline();
        !          4944: 
        !          4945:     for ( p = buf; *p && *p == ' '; p++ ) ;
        !          4946: 
        !          4947:     if ( *p && *p != '\n' ) {
        !          4948:        encoding = maxencoding + 2;
        !          4949:        fprintf(tf, "mark resolution %s newbaseline\n", buf);
        !          4950:     } else encoding = realencoding;
        !          4951: 
        !          4952:     fprintf(tf, "%d setdecoding\n", encoding);
        !          4953:     resetpos();
        !          4954: 
        !          4955: }   /* End of settext */
        !          4956: 
        !          4957: /*****************************************************************************/
        !          4958: 
        !          4959: 0707070014231030511006440057030057030000010277260522627500600002700000002363post.src/dpost/draw.ps%
        !          4960: % Version 3.3.2 drawing procedures for dpost. Automatically pulled in when
        !          4961: % needed.
        !          4962: %
        !          4963: 
        !          4964: /inpath false def
        !          4965: /savematrix matrix def
        !          4966: 
        !          4967: /Dl {
        !          4968:        inpath
        !          4969:                {pop pop neg lineto}
        !          4970:                {newpath neg moveto neg lineto stroke}
        !          4971:        ifelse
        !          4972: } bind def
        !          4973: 
        !          4974: /De {
        !          4975:        /y1 exch 2 div def
        !          4976:        /x1 exch 2 div def
        !          4977:        /savematrix savematrix currentmatrix def
        !          4978:        neg exch x1 add exch translate
        !          4979:        x1 y1 scale
        !          4980:        0 0 1 0 360
        !          4981:        inpath
        !          4982:                {1 0 moveto arc savematrix setmatrix}
        !          4983:                {newpath arc savematrix setmatrix stroke}
        !          4984:        ifelse
        !          4985: } bind def
        !          4986: 
        !          4987: /Da {
        !          4988:        /dy2 exch def
        !          4989:        /dx2 exch def
        !          4990:        /dy1 exch def
        !          4991:        /dx1 exch def
        !          4992:        dy1 add neg exch dx1 add exch
        !          4993:        dx1 dx1 mul dy1 dy1 mul add sqrt
        !          4994:        dy1 dx1 neg atan
        !          4995:        dy2 neg dx2 atan
        !          4996:        inpath
        !          4997:                {arc}
        !          4998:                {newpath arc stroke}
        !          4999:        ifelse
        !          5000: } bind def
        !          5001: 
        !          5002: /DA {
        !          5003:        /dy2 exch def
        !          5004:        /dx2 exch def
        !          5005:        /dy1 exch def
        !          5006:        /dx1 exch def
        !          5007:        dy1 add neg exch dx1 add exch
        !          5008:        dx1 dx1 mul dy1 dy1 mul add sqrt
        !          5009:        dy1 dx1 neg atan
        !          5010:        dy2 neg dx2 atan
        !          5011:        inpath
        !          5012:                {arcn}
        !          5013:                {newpath arcn stroke}
        !          5014:        ifelse
        !          5015: } bind def
        !          5016: 
        !          5017: /Ds {
        !          5018:        /y2 exch def
        !          5019:        /x2 exch def
        !          5020:        /y1 exch def
        !          5021:        /x1 exch def
        !          5022:        /y0 exch def
        !          5023:        /x0 exch def
        !          5024:        x0 5 x1 mul add 6 div
        !          5025:        y0 5 y1 mul add -6 div
        !          5026:        x2 5 x1 mul add 6 div
        !          5027:        y2 5 y1 mul add -6 div
        !          5028:        x1 x2 add 2 div
        !          5029:        y1 y2 add -2 div
        !          5030:        inpath
        !          5031:                {curveto}
        !          5032:                {newpath x0 x1 add 2 div y0 y1 add -2 div moveto curveto stroke}
        !          5033:        ifelse
        !          5034: } bind def
        !          5035: 0707070014231030521006440057030057030000010302600522627500600002600000030664post.src/dpost/font.c/*
        !          5036:  *
        !          5037:  * Typesetter font tables routines - for postprocessors.
        !          5038:  *
        !          5039:  */
        !          5040: 
        !          5041: #include <stdio.h>
        !          5042: #include <ctype.h>
        !          5043: 
        !          5044: #include "gen.h"
        !          5045: #include "ext.h"
        !          5046: #include "font.h"
        !          5047: 
        !          5048: Font   *mount[MAXFONTS+1];             /* mount table - pointers into fonts[] */
        !          5049: Font   fonts[MAXFONTS+2];              /* font data - guarantee one empty slot */
        !          5050: 
        !          5051: int    fcount;                         /* entries in fonts[] */
        !          5052: int    mcount;                         /* fonts currently in memory */
        !          5053: int    mlimit = MAXFONTS+1;            /* and the most we'll allow */
        !          5054: 
        !          5055: char   *chnames[MAXCH];                /* special character hash table */
        !          5056: int    nchnames;                       /* number of entries in chnames[] */
        !          5057: 
        !          5058: extern int     devres;
        !          5059: extern int     unitwidth;
        !          5060: extern int     nfonts;
        !          5061: 
        !          5062: /*****************************************************************************/
        !          5063: 
        !          5064: checkdesc(path)
        !          5065: 
        !          5066:     char       *path;
        !          5067: 
        !          5068: {
        !          5069: 
        !          5070:     char       buf[150];
        !          5071:     FILE       *fp;
        !          5072:     int                val = 0;
        !          5073: 
        !          5074: /*
        !          5075:  *
        !          5076:  * Return non-zero if the typesetter description file path includes,
        !          5077:  *
        !          5078:  *     PDL PostScript
        !          5079:  *
        !          5080:  * before the charset table.
        !          5081:  *
        !          5082:  */
        !          5083: 
        !          5084:     if ( (fp = fopen(path, "r")) != NULL ) {
        !          5085:        while ( fscanf(fp, "%s", buf) != EOF ) {
        !          5086:            if ( strcmp(buf, "PDL") == 0 ) {
        !          5087:                fscanf(fp, "%s", buf);
        !          5088:                val = strcmp(buf, "PostScript") == 0;
        !          5089:                break;
        !          5090:            } else if ( strcmp(buf, "charset") == 0 )
        !          5091:                break;
        !          5092:            skipline(fp);
        !          5093:        }   /* End while */
        !          5094:        fclose(fp);
        !          5095:     }  /* End if */
        !          5096: 
        !          5097:     return(val);
        !          5098: 
        !          5099: }   /* End of checkdesc */
        !          5100: 
        !          5101: /*****************************************************************************/
        !          5102: 
        !          5103: getdesc(path)
        !          5104: 
        !          5105:     char       *path;
        !          5106: 
        !          5107: {
        !          5108: 
        !          5109:     char       buf[150];
        !          5110:     FILE       *fp;
        !          5111:     int                n;
        !          5112: 
        !          5113: /*
        !          5114:  *
        !          5115:  * Read a typesetter description file. Font and size lists are discarded. Only
        !          5116:  * used to get to the start of the next command.
        !          5117:  *
        !          5118:  */
        !          5119: 
        !          5120:     if ( (fp = fopen(path, "r")) == NULL )
        !          5121:        return(-1);
        !          5122: 
        !          5123:     while ( fscanf(fp, "%s", buf) != EOF ) {
        !          5124:        if ( strcmp(buf, "res") == 0 )
        !          5125:            fscanf(fp, "%d", &devres);
        !          5126:        else if ( strcmp(buf, "unitwidth") == 0 )
        !          5127:            fscanf(fp, "%d", &unitwidth);
        !          5128:        else if ( strcmp(buf, "sizes") == 0 )
        !          5129:            while ( fscanf(fp, "%d", &n) != EOF && n != 0 ) ;
        !          5130:        else if ( strcmp(buf, "inmemory") == 0 )
        !          5131:            fscanf(fp, "%d", &mlimit);
        !          5132:        else if ( strcmp(buf, "Encoding") == 0 ) {
        !          5133:            fscanf(fp, "%s", buf);
        !          5134:            fontencoding = strsave(buf);
        !          5135:        } else if ( strcmp(buf, "fonts") == 0 ) {
        !          5136:            fscanf(fp, "%d", &nfonts);
        !          5137:            for ( n = 0; n < nfonts; n++ )
        !          5138:                fscanf(fp, "%s", buf);
        !          5139:        } else if ( strcmp(buf, "charset") == 0 ) {
        !          5140:            while ( fscanf(fp, "%s", buf) != EOF )
        !          5141:                chadd(buf);
        !          5142:            break;
        !          5143:        }   /* End if */
        !          5144:        skipline(fp);
        !          5145:     }  /* End while */
        !          5146: 
        !          5147:     fclose(fp);
        !          5148:     return(1);
        !          5149: 
        !          5150: }   /* End of getdesc */
        !          5151: 
        !          5152: /*****************************************************************************/
        !          5153: 
        !          5154: getfont(path, fpos)
        !          5155: 
        !          5156:     char       *path;
        !          5157:     Font       *fpos;
        !          5158: 
        !          5159: {
        !          5160: 
        !          5161:     FILE       *fin;
        !          5162:     Chwid      chtemp[MAXCH];
        !          5163:     static     Chwid chinit;
        !          5164:     int                i, nw, n, wid, code;
        !          5165:     char       buf[300], ch[100], s1[100], s2[100], s3[100], cmd[100];
        !          5166: 
        !          5167: 
        !          5168: /*
        !          5169:  *
        !          5170:  * Read a width table from path into *fpos. Skip unnamed characters, spacewidth,
        !          5171:  * ligatures, ascender/descender entries, and anything else not recognized. All
        !          5172:  * calls should come through mountfont().
        !          5173:  *
        !          5174:  */
        !          5175: 
        !          5176:     if ( fpos->state == INMEMORY )
        !          5177:        return(1);
        !          5178: 
        !          5179:     if ( (fin = fopen(path, "r")) == NULL )
        !          5180:        return(-1);
        !          5181: 
        !          5182:     if ( fpos->state == NEWFONT ) {
        !          5183:        if ( ++fcount > MAXFONTS+1 )
        !          5184:            return(-1);
        !          5185:        fpos->path = strsave(path);
        !          5186:     }  /* End if */
        !          5187: 
        !          5188:     if ( ++mcount > mlimit && mcount > nfonts+1 )
        !          5189:        freefonts();
        !          5190: 
        !          5191:     for ( i = 0; i < ALPHABET-32; i++ )
        !          5192:        chtemp[i] = chinit;
        !          5193: 
        !          5194:     while ( fscanf(fin, "%s", cmd) != EOF ) {
        !          5195:        if ( strcmp(cmd, "name") == 0 ) {
        !          5196:            release(fpos->name);
        !          5197:            fscanf(fin, "%s", buf);
        !          5198:            fpos->name = strsave(buf);
        !          5199:        } else if ( strcmp(cmd, "fontname") == 0 ) {
        !          5200:            release(fpos->fontname);
        !          5201:            fscanf(fin, "%s", buf);
        !          5202:            fpos->fontname = strsave(buf);
        !          5203:        } else if ( strcmp(cmd, "special") == 0 )
        !          5204:            fpos->specfont = 1;
        !          5205:        else if ( strcmp(cmd, "named") == 0 )   /* in prologue or somewhere else */
        !          5206:            fpos->flags |= NAMED;
        !          5207:        else if ( strcmp(cmd, "charset") == 0 ) {
        !          5208:            skipline(fin);
        !          5209:            nw = ALPHABET-32;
        !          5210:            while ( fgets(buf, sizeof(buf), fin) != NULL ) {
        !          5211:                sscanf(buf, "%s %s %s %s", ch, s1, s2, s3);
        !          5212:                if ( s1[0] != '"' ) {           /* not a synonym */
        !          5213:                    sscanf(s1, "%d", &wid);
        !          5214:                    code = strtol(s3, 0, 0);    /* dec/oct/hex */
        !          5215:                }   /* End if */
        !          5216:                if ( strlen(ch) == 1 ) {        /* it's ascii */
        !          5217:                    n = ch[0] - 32;             /* origin omits non-graphics */
        !          5218:                    chtemp[n].num = ch[0];
        !          5219:                    chtemp[n].wid = wid;
        !          5220:                    chtemp[n].code = code;
        !          5221:                } else if ( ch[0] == '\\' && ch[1] == '0' ) {
        !          5222:                    n = strtol(ch+1, 0, 0) - 32;        /* check against ALPHABET? */
        !          5223:                    chtemp[n].num = n + 32;
        !          5224:                    chtemp[n].wid = wid;
        !          5225:                    chtemp[n].code = code;
        !          5226:                } else if ( strcmp(ch, "---") != 0 ) {  /* ignore unnamed chars */
        !          5227:                    if ( (n = chindex(ch)) == -1 )      /* global? */
        !          5228:                        n = chadd(ch);
        !          5229:                    chtemp[nw].num = n;
        !          5230:                    chtemp[nw].wid = wid;
        !          5231:                    chtemp[nw].code = code;
        !          5232:                    nw++;
        !          5233:                }   /* End else */
        !          5234:            }   /* End while */
        !          5235:            break;
        !          5236:        }   /* End else */
        !          5237:        skipline(fin);
        !          5238:     }  /* End while */
        !          5239: 
        !          5240:     fclose(fin);
        !          5241: 
        !          5242:     fpos->wp = (Chwid *)allocate(nw * sizeof(Chwid));
        !          5243:     for ( i = 0; i < nw; i++ )
        !          5244:        fpos->wp[i] = chtemp[i];
        !          5245: 
        !          5246:     fpos->nchars = nw;
        !          5247:     fpos->state = INMEMORY;
        !          5248: 
        !          5249:     return(1);
        !          5250: 
        !          5251: }   /* End of getfont */
        !          5252: 
        !          5253: /*****************************************************************************/
        !          5254: 
        !          5255: mountfont(path, m)
        !          5256: 
        !          5257:     char       *path;
        !          5258:     int                m;
        !          5259: 
        !          5260: {
        !          5261: 
        !          5262:     Font       *fpos;
        !          5263: 
        !          5264: /*
        !          5265:  *
        !          5266:  * Mount font table from file path at position m. Mounted fonts are guaranteed
        !          5267:  * to be in memory.
        !          5268:  *
        !          5269:  */
        !          5270: 
        !          5271:     if ( m < 0 || m > MAXFONTS )
        !          5272:        return(-1);
        !          5273: 
        !          5274:     if ( mount[m] != NULL ) {
        !          5275:        if ( mount[m]->path != NULL && strcmp(path, mount[m]->path) == 0 ) {
        !          5276:            if ( mount[m]->state == INMEMORY )
        !          5277:                return(1);
        !          5278:        } else {
        !          5279:            mount[m]->mounted--;
        !          5280:            mount[m] = NULL;
        !          5281:        }   /* End else */
        !          5282:     }  /* End if */
        !          5283: 
        !          5284:     mount[m] = fpos = &fonts[findfont(path)];
        !          5285:     mount[m]->mounted++;
        !          5286:     return(getfont(path, fpos));
        !          5287: 
        !          5288: }   /* End of mountfont */
        !          5289: 
        !          5290: /*****************************************************************************/
        !          5291: 
        !          5292: freefonts()
        !          5293: 
        !          5294: {
        !          5295: 
        !          5296:     int                n;
        !          5297: 
        !          5298: /*
        !          5299:  *
        !          5300:  * Release memory used by all unmounted fonts - except for the path string.
        !          5301:  *
        !          5302:  */
        !          5303: 
        !          5304:     for ( n = 0; n < MAXFONTS+2; n++ )
        !          5305:        if ( fonts[n].state == INMEMORY && fonts[n].mounted == 0 ) {
        !          5306:            release(fonts[n].wp);
        !          5307:            fonts[n].wp = NULL;
        !          5308:            fonts[n].state = RELEASED;
        !          5309:            mcount--;
        !          5310:        }   /* End if */
        !          5311: 
        !          5312: }   /* End of freefonts */
        !          5313: 
        !          5314: /*****************************************************************************/
        !          5315: 
        !          5316: findfont(path)
        !          5317: 
        !          5318:     char       *path;
        !          5319: 
        !          5320: {
        !          5321: 
        !          5322:     register   n;
        !          5323: 
        !          5324: /*
        !          5325:  *
        !          5326:  * Look for path in the fonts table. Returns the index where it was found or can
        !          5327:  * be inserted (if not found).
        !          5328:  *
        !          5329:  */
        !          5330: 
        !          5331:     for ( n = hash(path, MAXFONTS+2); fonts[n].state != NEWFONT; n = (n+1) % (MAXFONTS+2) )
        !          5332:        if ( strcmp(path, fonts[n].path) == 0 )
        !          5333:            break;
        !          5334:     return(n);
        !          5335: 
        !          5336: }   /* End of findfont */
        !          5337: 
        !          5338: /*****************************************************************************/
        !          5339: 
        !          5340: mounted(m)
        !          5341: 
        !          5342:     int                m;
        !          5343: 
        !          5344: {
        !          5345: 
        !          5346: /*
        !          5347:  *
        !          5348:  * Return 1 if a font is mounted at position m.
        !          5349:  *
        !          5350:  */
        !          5351: 
        !          5352:     return((m >= 0 && m <= MAXFONTS && mount[m] != NULL) ? 1 : 0);
        !          5353: 
        !          5354: }   /* End of mounted */
        !          5355: 
        !          5356: /*****************************************************************************/
        !          5357: 
        !          5358: onfont(c, m)
        !          5359: 
        !          5360:     int                c;
        !          5361:     int                m;
        !          5362: 
        !          5363: {
        !          5364: 
        !          5365:     register Font      *fp;
        !          5366:     register Chwid     *cp, *ep;
        !          5367: 
        !          5368: /*
        !          5369:  *
        !          5370:  * Returns the position of character c in the font mounted at m, or -1 if the
        !          5371:  * character is not found.
        !          5372:  *
        !          5373:  */
        !          5374: 
        !          5375:     if ( mounted(m) ) {
        !          5376:        fp = mount[m];
        !          5377:        if ( c < ALPHABET ) {
        !          5378:            if ( fp->wp[c-32].num == c )        /* ascii at front */
        !          5379:                return c - 32;
        !          5380:            else return -1;
        !          5381:        }   /* End if */
        !          5382: 
        !          5383:        cp = &fp->wp[ALPHABET-32];
        !          5384:        ep = &fp->wp[fp->nchars];
        !          5385:        for ( ; cp < ep; cp++ )                 /* search others */
        !          5386:            if ( cp->num == c )
        !          5387:                return cp - &fp->wp[0];
        !          5388:     }  /* End if */
        !          5389: 
        !          5390:     return -1;
        !          5391: 
        !          5392: }   /* End of onfont */
        !          5393: 
        !          5394: /*****************************************************************************/
        !          5395: 
        !          5396: chwidth(n, m)
        !          5397: 
        !          5398:     int                n;
        !          5399:     int                m;
        !          5400: 
        !          5401: {
        !          5402: 
        !          5403: /*
        !          5404:  *
        !          5405:  * Return width of the character at position n in the font mounted at m. Skip
        !          5406:  * bounds checks - assume it's already been done.
        !          5407:  *
        !          5408:  */
        !          5409: 
        !          5410:     return(mount[m]->wp[n].wid);
        !          5411: 
        !          5412: }   /* End of chwidth */
        !          5413: 
        !          5414: /*****************************************************************************/
        !          5415: 
        !          5416: chcode(n, m)
        !          5417: 
        !          5418:     int                n;
        !          5419:     int                m;
        !          5420: 
        !          5421: {
        !          5422: 
        !          5423: /*
        !          5424:  *
        !          5425:  * Return typesetter code for the character at position n in the font mounted
        !          5426:  * at m. Skip bounds checks - assume it's already been done. 
        !          5427:  *
        !          5428:  */
        !          5429: 
        !          5430:     return(mount[m]->wp[n].code);
        !          5431: 
        !          5432: }   /* End of chcode */
        !          5433: 
        !          5434: /*****************************************************************************/
        !          5435: 
        !          5436: chindex(s)
        !          5437: 
        !          5438:     char       *s;
        !          5439: 
        !          5440: {
        !          5441: 
        !          5442:     register   i;
        !          5443: 
        !          5444: /*
        !          5445:  *
        !          5446:  * Look for s in global character name table. Hash table is guaranteed to have
        !          5447:  * at least one empty slot (by chadd()) so the loop terminate.
        !          5448:  *
        !          5449:  */
        !          5450: 
        !          5451:     for ( i = hash(s, MAXCH); chnames[i] != NULL; i = (i+1) % MAXCH )
        !          5452:        if ( strcmp(s, chnames[i]) == 0 )
        !          5453:            return(i+ALPHABET);
        !          5454:     return(-1);
        !          5455: 
        !          5456: }   /* End of chindex */
        !          5457: 
        !          5458: /*****************************************************************************/
        !          5459: 
        !          5460: chadd(s)
        !          5461: 
        !          5462:     char       *s;
        !          5463: 
        !          5464: {
        !          5465: 
        !          5466:     register   i;
        !          5467: 
        !          5468: /*
        !          5469:  *
        !          5470:  * Add s to the global character name table. Leave one empty slot so loops
        !          5471:  * terminate.
        !          5472:  *
        !          5473:  */
        !          5474: 
        !          5475:     if ( nchnames >= MAXCH - 1 )
        !          5476:        error(FATAL, "out of table space adding character %s", s);
        !          5477: 
        !          5478:     for ( i = hash(s, MAXCH); chnames[i] != NULL; i = (i+1) % MAXCH ) ;
        !          5479: 
        !          5480:     nchnames++;
        !          5481:     chnames[i] = strsave(s);
        !          5482: 
        !          5483:     return(i+ALPHABET);
        !          5484: 
        !          5485: }   /* End of chadd */
        !          5486: 
        !          5487: /*****************************************************************************/
        !          5488: 
        !          5489: char *chname(n)
        !          5490: 
        !          5491:     int                n;
        !          5492: 
        !          5493: {
        !          5494: 
        !          5495: /*
        !          5496:  *
        !          5497:  * Returns string for the character with index n.
        !          5498:  *
        !          5499:  */
        !          5500: 
        !          5501:     return(chnames[n-ALPHABET]);
        !          5502: 
        !          5503: }   /* End of chname */
        !          5504: 
        !          5505: /*****************************************************************************/
        !          5506: 
        !          5507: hash(s, l)
        !          5508: 
        !          5509:     char       *s;
        !          5510:     int                l;
        !          5511: 
        !          5512: {
        !          5513: 
        !          5514:     register   i;
        !          5515: 
        !          5516: /*
        !          5517:  *
        !          5518:  * Return the hash index for string s in a table of length l. Probably should
        !          5519:  * make i unsigned and mod once at the end.
        !          5520:  *
        !          5521:  */
        !          5522: 
        !          5523:     for ( i = 0; *s != '\0'; s++ )
        !          5524:        i = (i * 10 + *s) % l;
        !          5525:     return(i);
        !          5526: 
        !          5527: }   /* End of hash */
        !          5528: 
        !          5529: /*****************************************************************************/
        !          5530: 
        !          5531: char *strsave(s)
        !          5532: 
        !          5533:     char       *s;
        !          5534: 
        !          5535: {
        !          5536: 
        !          5537:     char       *ptr = NULL;
        !          5538: 
        !          5539: /*
        !          5540:  *
        !          5541:  * Make a permanent copy of string s.
        !          5542:  *
        !          5543:  */
        !          5544: 
        !          5545:     if ( s != NULL ) {
        !          5546:        ptr = (char *)allocate(strlen(s)+1);
        !          5547:        strcpy(ptr, s);
        !          5548:     }  /* End if */
        !          5549:     return(ptr);
        !          5550: 
        !          5551: }   /* End of strsave */
        !          5552: 
        !          5553: /*****************************************************************************/
        !          5554: 
        !          5555: char *allocate(count)
        !          5556: 
        !          5557:     int                count;
        !          5558: 
        !          5559: {
        !          5560: 
        !          5561:     char       *ptr;
        !          5562: 
        !          5563: /*
        !          5564:  *
        !          5565:  * Allocates count bytes. Free unmounted fonts if the first attempt fails. To
        !          5566:  * be absolutely correct all memory allocation should be done by this routine.
        !          5567:  *
        !          5568:  */
        !          5569: 
        !          5570:     if ( (ptr = (char *)malloc(count)) == NULL ) {
        !          5571:        freefonts();
        !          5572:        if ( (ptr = (char *)malloc(count)) == NULL )
        !          5573:            error(FATAL, "no memory");
        !          5574:     }  /* End if */
        !          5575:     return(ptr);
        !          5576: 
        !          5577: }   /* End of allocate */
        !          5578: 
        !          5579: /*****************************************************************************/
        !          5580: 
        !          5581: release(ptr)
        !          5582: 
        !          5583:     char       *ptr;
        !          5584: 
        !          5585: {
        !          5586: 
        !          5587: /*
        !          5588:  *
        !          5589:  * Free memory provided ptr isn't NULL.
        !          5590:  *
        !          5591:  */
        !          5592: 
        !          5593:     if ( ptr != NULL )
        !          5594:        free(ptr);
        !          5595: 
        !          5596: }   /* End of release */
        !          5597: 
        !          5598: /*****************************************************************************/
        !          5599: 
        !          5600: dumpmount(m)
        !          5601: 
        !          5602:     int                m;
        !          5603: 
        !          5604: {
        !          5605: 
        !          5606: /*
        !          5607:  *
        !          5608:  * Dumps the font mounted at position n.
        !          5609:  *
        !          5610:  */
        !          5611: 
        !          5612:     if ( mount[m] != NULL )
        !          5613:        dumpfont((mount[m] - &fonts[0]));
        !          5614:     else fprintf(stderr, "no font mounted at %d\n", m);
        !          5615: 
        !          5616: }   /* End of dumpmount */
        !          5617: 
        !          5618: /*****************************************************************************/
        !          5619: 
        !          5620: dumpfont(n)
        !          5621: 
        !          5622:     int                n;
        !          5623: 
        !          5624: {
        !          5625: 
        !          5626:     int                i;
        !          5627:     Font       *fpos;
        !          5628:     char       *str;
        !          5629: 
        !          5630: /*
        !          5631:  *
        !          5632:  * Dump of everything known about the font saved at fonts[n].
        !          5633:  *
        !          5634:  */
        !          5635: 
        !          5636:     fpos = &fonts[n];
        !          5637: 
        !          5638:     if ( fpos->state ) {
        !          5639:        fprintf(stderr, "path %s\n", fpos->path);
        !          5640:        fprintf(stderr, "state %d\n", fpos->state);
        !          5641:        fprintf(stderr, "flags %d\n", fpos->flags);
        !          5642:        fprintf(stderr, "mounted %d\n", fpos->mounted);
        !          5643:        fprintf(stderr, "nchars %d\n", fpos->nchars);
        !          5644:        fprintf(stderr, "special %d\n", fpos->specfont);
        !          5645:        fprintf(stderr, "name %s\n", fpos->name);
        !          5646:        fprintf(stderr, "fontname %s\n", fpos->fontname);
        !          5647:        if ( fpos->state == INMEMORY ) {
        !          5648:            fprintf(stderr, "charset\n");
        !          5649:            for ( i = 0; i < fpos->nchars; i++ ) {
        !          5650:                if ( fpos->wp[i].num > 0 ) {
        !          5651:                    if ( fpos->wp[i].num < ALPHABET )
        !          5652:                        fprintf(stderr, "%c\t%d\t%d\n", fpos->wp[i].num,
        !          5653:                                fpos->wp[i].wid, fpos->wp[i].code);
        !          5654:                    else {
        !          5655:                        str = chname(fpos->wp[i].num);
        !          5656:                        if ( *str == '#' && isdigit(*(str+1)) && isdigit(*(str+2)) )
        !          5657:                            str = "---";
        !          5658:                        fprintf(stderr, "%s\t%d\t%d\n", str, fpos->wp[i].wid,
        !          5659:                                fpos->wp[i].code);
        !          5660:                    }   /* End else */
        !          5661:                }   /* End if */
        !          5662:            }   /* End for */
        !          5663:        } else fprintf(stderr, "charset: not in memory\n");
        !          5664:     } else fprintf(stderr, "empty font: %d\n", n);
        !          5665: 
        !          5666:     putc('\n', stderr);
        !          5667: 
        !          5668: }   /* End of dumpfont */
        !          5669: 
        !          5670: /*****************************************************************************/
        !          5671: 
        !          5672: 0707070014231030531006440057030057030000010277660522627500700002600000002616post.src/dpost/font.h/*
        !          5673:  *
        !          5674:  * Characteristics of a font - for postprocessors. Differs some from the troff
        !          5675:  * version.
        !          5676:  *
        !          5677:  */
        !          5678: 
        !          5679: #define ALPHABET       256             /* characters in basic alphabet */
        !          5680: #define MAXCH          512
        !          5681: #define MAXFONTS       99
        !          5682: 
        !          5683: /*
        !          5684:  *
        !          5685:  * State of a table entry in fonts[].
        !          5686:  *
        !          5687:  */
        !          5688: 
        !          5689: #define NEWFONT                0
        !          5690: #define RELEASED       1
        !          5691: #define INMEMORY       2
        !          5692: 
        !          5693: /*
        !          5694:  *
        !          5695:  * Flags - for setting bits in a font's flag field.
        !          5696:  *
        !          5697:  */
        !          5698: 
        !          5699: #define USED           1
        !          5700: #define NAMED          2
        !          5701: 
        !          5702: #define skipline(f)    while ( getc(f) != '\n' )
        !          5703: 
        !          5704: /*
        !          5705:  *
        !          5706:  * Data about each character on a font. Omitted the ascender/descender field.
        !          5707:  * An unsigned char is good enough for the code field on PostScript printers.
        !          5708:  *
        !          5709:  */
        !          5710: 
        !          5711: typedef struct {
        !          5712:        short           num;    /* 0 means not on this font */
        !          5713:        unsigned char   wid;    /* width */
        !          5714:        unsigned char   code;   /* code for actual device. */
        !          5715: } Chwid;
        !          5716: 
        !          5717: /*
        !          5718:  *
        !          5719:  * Font header - one for each available position.
        !          5720:  *
        !          5721:  */
        !          5722: 
        !          5723: typedef struct {
        !          5724:        char    *path;          /* where it came from */
        !          5725:        char    *name;          /* as known to troff */
        !          5726:        char    *fontname;      /* real name (e.g. Times-Roman) */
        !          5727:        char    state;          /* NEWFONT, RELEASED, or INMEMORY */
        !          5728:        char    flags;          /* for now just USED and NAMED */
        !          5729:        char    mounted;        /* mounted on this many positions */
        !          5730:        char    specfont;       /* 1 == special font */
        !          5731:        short   nchars;         /* number of width entries for this font */
        !          5732:        Chwid   *wp;            /* widths, etc., of the real characters */
        !          5733: } Font;
        !          5734: 
        !          5735: /*
        !          5736:  *
        !          5737:  * Non-integer functions.
        !          5738:  *
        !          5739:  */
        !          5740: 
        !          5741: extern char    *chname();
        !          5742: extern char    *strsave();
        !          5743: extern char    *allocate();
        !          5744: 
        !          5745: 0707070014231030541006440057030057030000010301450522627500700003000000000272post.src/dpost/motion.h/*
        !          5746:  *
        !          5747:  * Position adjusting macros.
        !          5748:  *
        !          5749:  */
        !          5750: 
        !          5751: #define hgoto(n)       hpos = n
        !          5752: #define hmot(n)                hpos += n
        !          5753: #define vgoto(n)       vpos = n
        !          5754: #define vmot(n)                vpos += n
        !          5755: 
        !          5756: extern int     hpos;
        !          5757: extern int     vpos;
        !          5758: 
        !          5759: 0707070014231030551006440057030057030000010303200522627500700003200000023077post.src/dpost/pictures.c/*
        !          5760:  *
        !          5761:  * PostScript picture inclusion routines. Support for managing in-line pictures
        !          5762:  * has been added, and works in combination with the simple picpack pre-processor
        !          5763:  * that's supplied with this package. An in-line picture begins with a special
        !          5764:  * device control command that looks like,
        !          5765:  *
        !          5766:  *             x X InlinPicture name size
        !          5767:  *
        !          5768:  * where name is the pathname of the original picture file and size is the number
        !          5769:  * of bytes in the picture, which begins immediately on the next line. When dpost
        !          5770:  * encounters the InlinePicture device control command inlinepic() is called and
        !          5771:  * that routine appends the string name and the integer size to a temporary file
        !          5772:  * (fp_pic) and then adds the next size bytes read from the current input file to
        !          5773:  * file fp_pic. All in-line pictures are saved in fp_pic and located later using
        !          5774:  * the name string and picture file size that separate pictures saved in fp_pic.
        !          5775:  *
        !          5776:  * When a picture request (ie. an "x X PI" command) is encountered picopen() is
        !          5777:  * called and it first looks for the picture file in fp_pic. If it's found there
        !          5778:  * the entire picture (ie. size bytes) is copied from fp_pic to a new temp file
        !          5779:  * and that temp file is used as the picture file. If there's nothing in fp_pic
        !          5780:  * or if the lookup failed the original route is taken.
        !          5781:  *
        !          5782:  * Support for in-line pictures is an attempt to address requirements, expressed
        !          5783:  * by several organizations, of being able to store a document as a single file
        !          5784:  * (usually troff input) that can then be sent through dpost and ultimately to
        !          5785:  * a PostScript printer. The mechanism may help some users, but the are obvious
        !          5786:  * disadvantages to this approach, and the original mechanism is the recommended
        !          5787:  * approach! Perhaps the most important problem is that troff output, with in-line
        !          5788:  * pictures included, doesn't fit the device independent language accepted by
        !          5789:  * important post-processors (like proff) and that means you won't be able to
        !          5790:  * reliably preview a packed file on your 5620 (or whatever).
        !          5791:  *
        !          5792:  */
        !          5793: 
        !          5794: #include <stdio.h>
        !          5795: 
        !          5796: #include "comments.h"                  /* PostScript file structuring comments */
        !          5797: #include "gen.h"                       /* general purpose definitions */
        !          5798: #include "path.h"                      /* just for TEMPDIR definition */
        !          5799: #include "ext.h"                       /* external variable declarations */
        !          5800: 
        !          5801: FILE   *fp_pic = NULL;                 /* in-line pictures go here */
        !          5802: FILE   *picopen();
        !          5803: 
        !          5804: extern int     res, hpos, vpos;
        !          5805: extern int     picflag;
        !          5806: extern FILE    *tf;
        !          5807: 
        !          5808: /*****************************************************************************/
        !          5809: 
        !          5810: picture(buf)
        !          5811: 
        !          5812:     char       *buf;           /* stuff following 'x X PI' command */
        !          5813: 
        !          5814: {
        !          5815: 
        !          5816:     int                poffset;        /* page offset */
        !          5817:     int                indent;         /* indent */
        !          5818:     int                length;         /* line length  */
        !          5819:     int                totrap;         /* distance to next trap */
        !          5820:     char       name[100];      /* picture file and page string */
        !          5821:     char       hwo[40], *p;    /* height, width and offset strings */
        !          5822:     char       flags[20];      /* miscellaneous stuff */
        !          5823:     int                page = 1;       /* page number pulled from name[] */
        !          5824:     double     frame[4];       /* height, width, y, and x offsets from hwo[] */
        !          5825:     char       units;          /* scale indicator for frame dimensions */
        !          5826:     int                whiteout = 0;   /* white out the box? */
        !          5827:     int                outline = 0;    /* draw a box around the picture? */
        !          5828:     int                scaleboth = 0;  /* scale both dimensions? */
        !          5829:     double     adjx = 0.5;     /* left-right adjustment */
        !          5830:     double     adjy = 0.5;     /* top-bottom adjustment */
        !          5831:     double     rot = 0;        /* rotation in clockwise degrees */
        !          5832:     FILE       *fp_in;         /* for *name */
        !          5833:     int                i;              /* loop index */
        !          5834: 
        !          5835:     char       *strchr();
        !          5836: 
        !          5837: /*
        !          5838:  *
        !          5839:  * Called from devcntrl() after an 'x X PI' command is found. The syntax of that
        !          5840:  * command is:
        !          5841:  *
        !          5842:  *     x X PI:args
        !          5843:  *
        !          5844:  * with args separated by colons and given by:
        !          5845:  *
        !          5846:  *     poffset
        !          5847:  *     indent
        !          5848:  *     length
        !          5849:  *     totrap
        !          5850:  *     file[(page)]
        !          5851:  *     height[,width[,yoffset[,xoffset]]]
        !          5852:  *     [flags]
        !          5853:  *
        !          5854:  * poffset, indent, length, and totrap are given in machine units. height, width,
        !          5855:  * and offset refer to the picture frame in inches, unless they're followed by
        !          5856:  * the u scale indicator. flags is a string that provides a little bit of control
        !          5857:  * over the placement of the picture in the frame. Rotation of the picture, in
        !          5858:  * clockwise degrees, is set by the a flag. If it's not followed by an angle
        !          5859:  * the current rotation angle is incremented by 90 degrees, otherwise the angle
        !          5860:  * is set by the number that immediately follows the a.
        !          5861:  *
        !          5862:  */
        !          5863: 
        !          5864:     if ( picflag == OFF )              /* skip it */
        !          5865:        return;
        !          5866: 
        !          5867:     flushtext();
        !          5868: 
        !          5869:     flags[0] = '\0';                   /* just to be safe */
        !          5870:     if ( sscanf(buf, "%d:%d:%d:%d:%[^:]:%[^:]:%[^:]", &poffset, &indent,
        !          5871:                &length, &totrap, name, hwo, flags) < 6 ) {
        !          5872:            error(NON_FATAL, "too few arguments to specify picture");
        !          5873:            return;
        !          5874:     }  /* End if */
        !          5875: 
        !          5876:     if ( sscanf(name, "%*[^(](%d", &page) == 1 )       /* grab the page number */
        !          5877:        strtok(name, "(");                      /* and separate it from the name */
        !          5878: 
        !          5879:     if ( (fp_in = picopen(name)) == NULL ) {
        !          5880:        error(NON_FATAL, "can't open picture file %s", name);
        !          5881:        return;
        !          5882:     }  /* End if */
        !          5883: 
        !          5884:     frame[0] = frame[1] = -1;          /* default frame height, width */
        !          5885:     frame[2] = frame[3] = 0;           /* and y and x offsets */
        !          5886: 
        !          5887:     for ( i = 0, p = hwo-1; i < 4 && p != NULL; i++, p = strchr(p, ',') )
        !          5888:        if ( sscanf(++p, "%lf%c", &frame[i], &units) == 2 )
        !          5889:            if ( units == 'i' || units == ',' || units == '\0' )
        !          5890:                frame[i] *= res;
        !          5891: 
        !          5892:     if ( frame[0] <= 0 )               /* check what we got for height */
        !          5893:        frame[0] = totrap;
        !          5894: 
        !          5895:     if ( frame[1] <= 0 )               /* and width - check too big?? */
        !          5896:        frame[1] = length - indent;
        !          5897: 
        !          5898:     frame[3] += poffset + indent;      /* real x offset */
        !          5899: 
        !          5900:     for ( i = 0; flags[i]; i++ )
        !          5901:        switch ( flags[i] ) {
        !          5902:            case 'c': adjx = adjy = 0.5; break; /* move to the center */
        !          5903:            case 'l': adjx = 0; break;          /* left */
        !          5904:            case 'r': adjx = 1; break;          /* right */
        !          5905:            case 't': adjy = 1; break;          /* top */
        !          5906:            case 'b': adjy = 0; break;          /* or bottom justify */
        !          5907:            case 'o': outline = 1; break;       /* outline the picture */
        !          5908:            case 'w': whiteout = 1; break;      /* white out the box */
        !          5909:            case 's': scaleboth = 1; break;     /* scale both dimensions */
        !          5910:            case 'a': if ( sscanf(&flags[i+1], "%lf", &rot) != 1 )
        !          5911:                          rot += 90;
        !          5912:        }   /* End switch */
        !          5913: 
        !          5914:     restore();
        !          5915:     ps_include(fp_in, tf, page, whiteout, outline, scaleboth,
        !          5916:                frame[3]+frame[1]/2, -vpos-frame[2]-frame[0]/2, frame[1], frame[0], adjx, adjy, -rot);
        !          5917:     save();
        !          5918:     fclose(fp_in);
        !          5919: 
        !          5920: }   /* End of picture */
        !          5921: 
        !          5922: /*****************************************************************************/
        !          5923: 
        !          5924: FILE *picopen(path)
        !          5925: 
        !          5926:     char       *path;                  /* picture file pathname */
        !          5927: 
        !          5928: {
        !          5929: 
        !          5930:     char       name[100];              /* pathnames */
        !          5931:     long       pos;                    /* current position */
        !          5932:     long       total;                  /* and sizes - from *fp_pic */
        !          5933:     char       *tname;                 /* pathname */
        !          5934:     FILE       *fp;                    /* and pointer for the new temp file */
        !          5935: 
        !          5936: /*
        !          5937:  *
        !          5938:  * Responsible for finding and opening the next picture file. If we've accumulated
        !          5939:  * any in-line pictures fp_pic won't be NULL and we'll look there first. If *path
        !          5940:  * is found in *fp_pic we create another temp file, open it for update, unlink it,
        !          5941:  * copy in the picture, seek back to the start of the new temp file, and return
        !          5942:  * the file pointer to the caller. If fp_pic is NULL or the lookup fails we just
        !          5943:  * open file *path and return the resulting file pointer to the caller.
        !          5944:  *
        !          5945:  */
        !          5946: 
        !          5947:     if ( fp_pic != NULL ) {
        !          5948:        fseek(fp_pic, 0L, 0);
        !          5949:        while ( fscanf(fp_pic, "%s %ld\n", name, &total) != EOF ) {
        !          5950:            pos = ftell(fp_pic);
        !          5951:            if ( strcmp(path, name) == 0 ) {
        !          5952:                if ( (tname = tempnam(TEMPDIR, "dpost")) == NULL )
        !          5953:                    error(FATAL, "can't generate temp file name");
        !          5954:                if ( (fp = fopen(tname, "w+r")) == NULL )
        !          5955:                    error(FATAL, "can't open %s", tname);
        !          5956:                unlink(tname);
        !          5957:                free(tname);
        !          5958:                piccopy(fp_pic, fp, total);
        !          5959:                fseek(fp, 0L, 0);
        !          5960:                return(fp);
        !          5961:            }   /* End if */
        !          5962:            fseek(fp_pic, total+pos, 0);
        !          5963:        }   /* End while */
        !          5964:     }  /* End if */
        !          5965: 
        !          5966:     return(fopen(path, "r"));
        !          5967: 
        !          5968: }   /* End of picopen */
        !          5969: 
        !          5970: /*****************************************************************************/
        !          5971: 
        !          5972: inlinepic(fp, buf)
        !          5973: 
        !          5974:     FILE       *fp;                    /* current input file */
        !          5975:     char       *buf;                   /* whatever followed "x X InlinePicture" */
        !          5976: 
        !          5977: {
        !          5978: 
        !          5979:     char       *tname;                 /* temp file pathname - for *fp_pic */
        !          5980:     char       name[100];              /* picture file pathname */
        !          5981:     long       total;                  /* and size - both from *buf */
        !          5982: 
        !          5983: /*
        !          5984:  *
        !          5985:  * Adds an in-line picture file to the end of temporary file *fp_pic. All pictures
        !          5986:  * grabbed from the input file are saved in the same temp file. Each is preceeded
        !          5987:  * by a one line header that includes the original picture file pathname and the
        !          5988:  * size of the picture in bytes. The in-line picture file is opened for update,
        !          5989:  * left open, and unlinked so it disappears when we do.
        !          5990:  *
        !          5991:  */
        !          5992: 
        !          5993:     if ( fp_pic == NULL ) {
        !          5994:        if ( (tname = tempnam(TEMPDIR, "dpost")) == NULL )
        !          5995:            error(FATAL, "can't generate in-line picture file name");
        !          5996:        if ( (fp_pic = fopen(tname, "w+r")) == NULL )
        !          5997:            error(FATAL, "can't open in-line picture file %s", tname);
        !          5998:        unlink(tname);
        !          5999:     }  /* End if */
        !          6000: 
        !          6001:     if ( sscanf(buf, "%s %ld", name, &total) != 2 )
        !          6002:        error(FATAL, "in-line picture error");
        !          6003: 
        !          6004:     fseek(fp_pic, 0L, 2);
        !          6005:     fprintf(fp_pic, "%s %ld\n", name, total);
        !          6006:     getc(fp);
        !          6007:     fflush(fp_pic);
        !          6008:     piccopy(fp, fp_pic, total);
        !          6009:     ungetc('\n', fp);
        !          6010: 
        !          6011: }   /* End of inlinepic */
        !          6012: 
        !          6013: /*****************************************************************************/
        !          6014: 
        !          6015: piccopy(fp_in, fp_out, total)
        !          6016: 
        !          6017:     FILE       *fp_in;                 /* input */
        !          6018:     FILE       *fp_out;                /* and output file pointers */
        !          6019:     long       total;                  /* number of bytes to be copied */
        !          6020: 
        !          6021: {
        !          6022: 
        !          6023:     long       i;                      /* loop index */
        !          6024: 
        !          6025: /*
        !          6026:  *
        !          6027:  * Copies total bytes from file fp_in to fp_out. Used to append picture files to
        !          6028:  * *fp_pic and then copy them to yet another temporary file immediately before
        !          6029:  * they're used (in picture()).
        !          6030:  *
        !          6031:  */
        !          6032: 
        !          6033:     for ( i = 0; i < total; i++ )
        !          6034:        if ( putc(getc(fp_in), fp_out) == EOF )
        !          6035:            error(FATAL, "error copying in-line picture file");
        !          6036:     fflush(fp_out);
        !          6037: 
        !          6038: }   /* End of piccopy */
        !          6039: 
        !          6040: /*****************************************************************************/
        !          6041: 
        !          6042: 0707070014231030561006440057030057030000010301650522627500700003600000000262post.src/dpost/ps_include.awk/^->/ {
        !          6043:        if(ndef)
        !          6044:                printf("\t0\n};\n\n")
        !          6045:        printf("static char *%s[] = {\n", $2)
        !          6046:        ndef++
        !          6047:        next
        !          6048: }
        !          6049: /^#/ {next}
        !          6050: $0 != "" {printf("\t\"%s\",\n", $0); next}
        !          6051: END {printf("\t0\n};\n")}
        !          6052: 0707070014231030571006440057030057030000010303400522627500700003400000012407post.src/dpost/ps_include.c
        !          6053: #include <stdio.h>
        !          6054: #include "ps_include.h"
        !          6055: 
        !          6056: #define has(word)      (strncmp(buf, word, strlen(word)) == 0)
        !          6057: #define grab(n)                ((Section *)(nglobal \
        !          6058:                        ? realloc((char *)global, n*sizeof(Section)) \
        !          6059:                        : calloc(n, sizeof(Section))))
        !          6060: 
        !          6061: char   buf[512];
        !          6062: typedef struct {long start, end;} Section;
        !          6063: 
        !          6064: extern char    *calloc(), *realloc();
        !          6065: 
        !          6066: 
        !          6067: ps_include(fin, fout, page_no, whiteout, outline, scaleboth, cx, cy, sx, sy, ax, ay, rot)
        !          6068: 
        !          6069: 
        !          6070:     FILE       *fin, *fout;            /* input and output files */
        !          6071:     int                page_no;                /* physical page number from *fin */
        !          6072:     int                whiteout;               /* erase picture area */
        !          6073:     int                outline;                /* draw a box around it and */
        !          6074:     int                scaleboth;              /* scale both dimensions - if not zero */
        !          6075:     double     cx, cy;                 /* center of the picture and */
        !          6076:     double     sx, sy;                 /* its size - in current coordinates */
        !          6077:     double     ax, ay;                 /* left-right, up-down adjustment */
        !          6078:     double     rot;                    /* rotation - in clockwise degrees */
        !          6079: 
        !          6080: 
        !          6081: {
        !          6082: 
        !          6083: 
        !          6084:     int                foundpage = 0;          /* found the page when non zero */
        !          6085:     int                foundpbox = 0;          /* found the page bounding box */
        !          6086:     int                nglobal = 0;            /* number of global defs so far */
        !          6087:     int                maxglobal = 0;          /* and the number we've got room for */
        !          6088:     Section    prolog, page, trailer;  /* prologue, page, and trailer offsets */
        !          6089:     Section    *global;                /* offsets for all global definitions */
        !          6090:     double     llx, lly;               /* lower left and */
        !          6091:     double     urx, ury;               /* upper right corners - default coords */
        !          6092:     double     w = whiteout != 0;      /* mostly for the var() macro */
        !          6093:     double     o = outline != 0;
        !          6094:     double     s = scaleboth != 0;
        !          6095:     int                i;                      /* loop index */
        !          6096: 
        !          6097: 
        !          6098: /*
        !          6099:  *
        !          6100:  * Reads a PostScript file (*fin), and uses structuring comments to locate the
        !          6101:  * prologue, trailer, global definitions, and the requested page. After the whole
        !          6102:  * file is scanned, the  special ps_include PostScript definitions are copied to
        !          6103:  * *fout, followed by the prologue, global definitions, the requested page, and
        !          6104:  * the trailer. Before returning the initial environment (saved in PS_head) is
        !          6105:  * restored.
        !          6106:  *
        !          6107:  * By default we assume the picture is 8.5 by 11 inches, but the BoundingBox
        !          6108:  * comment, if found, takes precedence.
        !          6109:  *
        !          6110:  */
        !          6111: 
        !          6112: 
        !          6113:        llx = lly = 0;                  /* default BoundingBox - 8.5x11 inches */
        !          6114:        urx = 72 * 8.5;
        !          6115:        ury = 72 * 11.0;
        !          6116: 
        !          6117:        /* section boundaries and bounding box */
        !          6118: 
        !          6119:        prolog.start = prolog.end = 0;
        !          6120:        page.start = page.end = 0;
        !          6121:        trailer.start = 0;
        !          6122:        fseek(fin, 0L, 0);
        !          6123: 
        !          6124:        while ( fgets(buf, sizeof(buf), fin) != NULL )
        !          6125:                if (!has("%%"))
        !          6126:                        continue;
        !          6127:                else if (has("%%Page: ")) {
        !          6128:                        if (!foundpage)
        !          6129:                                page.start = ftell(fin);
        !          6130:                        sscanf(buf, "%*s %*s %d", &i);
        !          6131:                        if (i == page_no)
        !          6132:                                foundpage = 1;
        !          6133:                        else if (foundpage && page.end <= page.start)
        !          6134:                                page.end = ftell(fin);
        !          6135:                } else if (has("%%EndPage: ")) {
        !          6136:                        sscanf(buf, "%*s %*s %d", &i);
        !          6137:                        if (i == page_no) {
        !          6138:                                foundpage = 1;
        !          6139:                                page.end = ftell(fin);
        !          6140:                        }
        !          6141:                        if (!foundpage)
        !          6142:                                page.start = ftell(fin);
        !          6143:                } else if (has("%%PageBoundingBox: ")) {
        !          6144:                        if (i == page_no) {
        !          6145:                                foundpbox = 1;
        !          6146:                                sscanf(buf, "%*s %lf %lf %lf %lf",
        !          6147:                                                &llx, &lly, &urx, &ury);
        !          6148:                        }
        !          6149:                } else if (has("%%BoundingBox: ")) {
        !          6150:                        if (!foundpbox)
        !          6151:                                sscanf(buf,"%*s %lf %lf %lf %lf",
        !          6152:                                                &llx, &lly, &urx, &ury);
        !          6153:                } else if (has("%%EndProlog") || has("%%EndSetup") || has("%%EndDocumentSetup"))
        !          6154:                        prolog.end = page.start = ftell(fin);
        !          6155:                else if (has("%%Trailer"))
        !          6156:                        trailer.start = ftell(fin);
        !          6157:                else if (has("%%BeginGlobal")) {
        !          6158:                        if (page.end <= page.start) {
        !          6159:                                if (nglobal >= maxglobal) {
        !          6160:                                        maxglobal += 20;
        !          6161:                                        global = grab(maxglobal);
        !          6162:                                }
        !          6163:                                global[nglobal].start = ftell(fin);
        !          6164:                        }
        !          6165:                } else if (has("%%EndGlobal"))
        !          6166:                        if (page.end <= page.start)
        !          6167:                                global[nglobal++].end = ftell(fin);
        !          6168: 
        !          6169:        fseek(fin, 0L, 2);
        !          6170:        if (trailer.start == 0)
        !          6171:                trailer.start = ftell(fin);
        !          6172:        trailer.end = ftell(fin);
        !          6173: 
        !          6174:        if (page.end <= page.start)
        !          6175:                page.end = trailer.start;
        !          6176: 
        !          6177: /*
        !          6178: fprintf(stderr, "prolog=(%d,%d)\n", prolog.start, prolog.end);
        !          6179: fprintf(stderr, "page=(%d,%d)\n", page.start, page.end);
        !          6180: for(i = 0; i < nglobal; i++)
        !          6181:        fprintf(stderr, "global[%d]=(%d,%d)\n", i, global[i].start, global[i].end);
        !          6182: fprintf(stderr, "trailer=(%d,%d)\n", trailer.start, trailer.end);
        !          6183: */
        !          6184: 
        !          6185:        /* all output here */
        !          6186:        print(fout, PS_head);
        !          6187: /*
        !          6188:  * Unix 4.0 didn't like the var macro.
        !          6189:  *
        !          6190:        var(llx); var(lly); var(urx); var(ury); var(w); var(o); var(s);
        !          6191:        var(cx); var(cy); var(sx); var(sy); var(ax); var(ay); var(rot);
        !          6192:  *
        !          6193:  */
        !          6194: 
        !          6195:        fprintf(fout, "/llx %g def\n", llx);
        !          6196:        fprintf(fout, "/lly %g def\n", lly);
        !          6197:        fprintf(fout, "/urx %g def\n", urx);
        !          6198:        fprintf(fout, "/ury %g def\n", ury);
        !          6199:        fprintf(fout, "/w %g def\n", w);
        !          6200:        fprintf(fout, "/o %g def\n", o);
        !          6201:        fprintf(fout, "/s %g def\n", s);
        !          6202:        fprintf(fout, "/cx %g def\n", cx);
        !          6203:        fprintf(fout, "/cy %g def\n", cy);
        !          6204:        fprintf(fout, "/sx %g def\n", sx);
        !          6205:        fprintf(fout, "/sy %g def\n", sy);
        !          6206:        fprintf(fout, "/ax %g def\n", ax);
        !          6207:        fprintf(fout, "/ay %g def\n", ay);
        !          6208:        fprintf(fout, "/rot %g def\n", rot);
        !          6209: 
        !          6210:        print(fout, PS_setup);
        !          6211:        copy(fin, fout, &prolog);
        !          6212:        for(i = 0; i < nglobal; i++)
        !          6213:                copy(fin, fout, &global[i]);
        !          6214:        copy(fin, fout, &page);
        !          6215:        copy(fin, fout, &trailer);
        !          6216:        print(fout, PS_tail);
        !          6217: 
        !          6218:        if(nglobal)
        !          6219:                free(global);
        !          6220: 
        !          6221: }
        !          6222: 
        !          6223: static
        !          6224: print(fout, s)
        !          6225: FILE *fout;
        !          6226: char **s;
        !          6227: {
        !          6228:        while (*s)
        !          6229:                fprintf(fout, "%s\n", *s++);
        !          6230: }
        !          6231: 
        !          6232: static
        !          6233: copy(fin, fout, s)
        !          6234: FILE *fin, *fout;
        !          6235: Section *s;
        !          6236: {
        !          6237:        if (s->end <= s->start)
        !          6238:                return;
        !          6239:        fseek(fin, s->start, 0);
        !          6240:        while (ftell(fin) < s->end && fgets(buf, sizeof(buf), fin) != NULL)
        !          6241:                if (buf[0] != '%')
        !          6242:                        fprintf(fout, "%s", buf);
        !          6243: }
        !          6244: 
        !          6245: 0707070014231030601006440057030057030000010301660522627500700003400000003752post.src/dpost/ps_include.hstatic char *PS_head[] = {
        !          6246:        "%ps_include: begin",
        !          6247:        "save",
        !          6248:        "/ed {exch def} def",
        !          6249:        "{} /showpage ed",
        !          6250:        "{} /copypage ed",
        !          6251:        "{} /erasepage ed",
        !          6252:        "{} /letter ed",
        !          6253:        "currentdict /findfont known systemdict /findfont known and {",
        !          6254:        "       /findfont systemdict /findfont get def",
        !          6255:        "} if",
        !          6256:        "36 dict dup /PS-include-dict-dw ed begin",
        !          6257:        "/context ed",
        !          6258:        "count array astore /o-stack ed",
        !          6259:        "%ps_include: variables begin",
        !          6260:        0
        !          6261: };
        !          6262: 
        !          6263: static char *PS_setup[] = {
        !          6264:        "%ps_include: variables end",
        !          6265:        "{llx lly urx ury} /bbox ed",
        !          6266:        "{newpath 2 index exch 2 index exch dup 6 index exch",
        !          6267:        " moveto 3 {lineto} repeat closepath} /boxpath ed",
        !          6268:        "{dup mul exch dup mul add sqrt} /len ed",
        !          6269:        "{2 copy gt {exch} if pop} /min ed",
        !          6270:        "{2 copy lt {exch} if pop} /max ed",
        !          6271:        "{transform round exch round exch A itransform} /nice ed",
        !          6272:        "{6 array} /n ed",
        !          6273:        "n defaultmatrix n currentmatrix n invertmatrix n concatmatrix /A ed",
        !          6274:        "urx llx sub 0 A dtransform len /Sx ed",
        !          6275:        "0 ury lly sub A dtransform len /Sy ed",
        !          6276:        "llx urx add 2 div lly ury add 2 div A transform /Cy ed /Cx ed",
        !          6277:        "rot dup sin abs /S ed cos abs /C ed",
        !          6278:        "Sx S mul Sy C mul add /H ed",
        !          6279:        "Sx C mul Sy S mul add /W ed",
        !          6280:        "sy H div /Scaley ed",
        !          6281:        "sx W div /Scalex ed",
        !          6282:        "s 0 eq {Scalex Scaley min dup /Scalex ed /Scaley ed} if",
        !          6283:        "sx Scalex W mul sub 0 max ax 0.5 sub mul cx add /cx ed",
        !          6284:        "sy Scaley H mul sub 0 max ay 0.5 sub mul cy add /cy ed",
        !          6285:        "urx llx sub 0 A dtransform exch atan rot exch sub /rot ed",
        !          6286:        "n currentmatrix initgraphics setmatrix",
        !          6287:        "cx cy translate",
        !          6288:        "Scalex Scaley scale",
        !          6289:        "rot rotate",
        !          6290:        "Cx neg Cy neg translate",
        !          6291:        "A concat",
        !          6292:        "bbox boxpath clip newpath",
        !          6293:        "w 0 ne {gsave bbox boxpath 1 setgray fill grestore} if",
        !          6294:        "end",
        !          6295:        "gsave",
        !          6296:        "%ps_include: inclusion begin",
        !          6297:        0
        !          6298: };
        !          6299: 
        !          6300: static char *PS_tail[] = {
        !          6301:        "%ps_include: inclusion end",
        !          6302:        "grestore",
        !          6303:        "PS-include-dict-dw begin",
        !          6304:        "o 0 ne {gsave A defaultmatrix /A ed llx lly nice urx ury nice",
        !          6305:        "       initgraphics 0.1 setlinewidth boxpath stroke grestore} if",
        !          6306:        "clear o-stack aload pop",
        !          6307:        "context end restore",
        !          6308:        "%ps_include: end",
        !          6309:        0
        !          6310: };
        !          6311: 0707070014231030611006440057030057030000010303600522627500700003500000007004post.src/dpost/ps_include.ps-> PS_head
        !          6312: 
        !          6313: %ps_include: begin
        !          6314: save
        !          6315: /ed {exch def} def
        !          6316: 
        !          6317: # redefine dangerous operators
        !          6318: {} /showpage ed
        !          6319: {} /copypage ed
        !          6320: {} /erasepage ed
        !          6321: {} /letter ed
        !          6322: 
        !          6323: # restore findfont from systemdict if it looks like it's be redefined
        !          6324: currentdict /findfont known systemdict /findfont known and {
        !          6325:        /findfont systemdict /findfont get def
        !          6326: } if
        !          6327: 
        !          6328: # computations are done in the context of a new dictionary
        !          6329: 36 dict dup /PS-include-dict-dw ed begin
        !          6330: 
        !          6331: # context holds the save object created earlier
        !          6332: /context ed
        !          6333: 
        !          6334: # save and clear the operand stack
        !          6335: count array astore /o-stack ed
        !          6336: 
        !          6337: # the following variables are now expected:
        !          6338: #      llx,lly,urx,ury bounding box of picture to be included
        !          6339: #      w               nonzero if space should be painted white to start
        !          6340: #      o               nonzero if space should be outlined
        !          6341: #      s               nonzero if both dimensions should be scaled
        !          6342: #      cx,cy           center of page space in current coordinates
        !          6343: #      sx,sy           size of page space in current coordinates
        !          6344: #      ax,ay           left-right, up-down adjustment of picture in page space
        !          6345: #      rot             rotation of picture in page space
        !          6346: %ps_include: variables begin
        !          6347: 
        !          6348: 
        !          6349: 
        !          6350: -> PS_setup
        !          6351: 
        !          6352: %ps_include: variables end
        !          6353: 
        !          6354: # some routines:
        !          6355: # - BBOX llx lly urx ury       put bounding box on stack
        !          6356: # llx lly urx ury BOXPATH -    make a path with given box corners
        !          6357: # dx dy LEN length             compute length of positionless vector
        !          6358: # a b MIN min                  compute minimum of two numbers
        !          6359: # a b MAX max                  compute maximum of two numbers
        !          6360: # x y NICE x y                 move to pixel boundaries in default coords
        !          6361: {llx lly urx ury} /bbox ed
        !          6362: {newpath 2 index exch 2 index exch dup 6 index exch
        !          6363:  moveto 3 {lineto} repeat closepath} /boxpath ed
        !          6364: {dup mul exch dup mul add sqrt} /len ed
        !          6365: {2 copy gt {exch} if pop} /min ed
        !          6366: {2 copy lt {exch} if pop} /max ed
        !          6367: {transform round exch round exch A itransform} /nice ed
        !          6368: 
        !          6369: # A is the transformation from default to current coordinates
        !          6370: {6 array} /n ed
        !          6371: n defaultmatrix n currentmatrix n invertmatrix n concatmatrix /A ed
        !          6372: 
        !          6373: # Sx,Sy and Cx,Cy are dimensions and size of bounding box in current coordinates
        !          6374: urx llx sub 0 A dtransform len /Sx ed
        !          6375: 0 ury lly sub A dtransform len /Sy ed
        !          6376: llx urx add 2 div lly ury add 2 div A transform /Cy ed /Cx ed
        !          6377: 
        !          6378: # H and W are height and width of rotated box in current coordinates
        !          6379: rot dup sin abs /S ed cos abs /C ed
        !          6380: Sx S mul Sy C mul add /H ed
        !          6381: Sx C mul Sy S mul add /W ed
        !          6382: 
        !          6383: # Scalex and Scaley are the required horizontal and vertical scaling factors
        !          6384: sy H div /Scaley ed
        !          6385: sx W div /Scalex ed
        !          6386: 
        !          6387: # Preserve aspect ratio if we're not scaling both dimensions (ie. s is 0)
        !          6388: s 0 eq {Scalex Scaley min dup /Scalex ed /Scaley ed} if
        !          6389: 
        !          6390: # add to cx,cy the shift needed within the page space
        !          6391: sx Scalex W mul sub 0 max ax 0.5 sub mul cx add /cx ed
        !          6392: sy Scaley H mul sub 0 max ay 0.5 sub mul cy add /cy ed
        !          6393: 
        !          6394: # the actual rotation needed is rot less the current rotation
        !          6395: urx llx sub 0 A dtransform exch atan rot exch sub /rot ed
        !          6396: 
        !          6397: # set up the coordinate system
        !          6398: n currentmatrix initgraphics setmatrix
        !          6399: cx cy translate
        !          6400: Scalex Scaley scale
        !          6401: rot rotate
        !          6402: Cx neg Cy neg translate
        !          6403: A concat
        !          6404: 
        !          6405: # set the clipping region, and conditionally whiteout and outline
        !          6406: bbox boxpath clip newpath
        !          6407: w 0 ne {gsave bbox boxpath 1 setgray fill grestore} if
        !          6408: 
        !          6409: # pop local dictionary from the dict stack
        !          6410: end
        !          6411: 
        !          6412: # now begins the actual material extracted from the file
        !          6413: gsave
        !          6414: %ps_include: inclusion begin
        !          6415: 
        !          6416: 
        !          6417: 
        !          6418: -> PS_tail
        !          6419: 
        !          6420: %ps_include: inclusion end
        !          6421: grestore
        !          6422: 
        !          6423: # within the context of the local dictionary ...
        !          6424: PS-include-dict-dw begin
        !          6425: 
        !          6426: o 0 ne {gsave A defaultmatrix /A ed llx lly nice urx ury nice
        !          6427:        initgraphics 0.1 setlinewidth boxpath stroke grestore} if
        !          6428: 
        !          6429: # ... restore the operand stack and the save context
        !          6430: clear o-stack aload pop
        !          6431: context end restore
        !          6432: %ps_include: end
        !          6433: 0707070014231216400407550057030057030000020630640522633076600002300000000000post.src/postprint0707070014231216411006440057030057030000010630650522627500700003200000000175post.src/postprint/README
        !          6434: Simple ASCII file to PostScript translator. The -e options is new
        !          6435: and allows access to all characters in PostScript fonts.
        !          6436: 
        !          6437: 0707070014231216421006440057030057030000010636000522627500700003700000051204post.src/postprint/postprint.c/*
        !          6438:  *
        !          6439:  * postprint - PostScript translator for ASCII files.
        !          6440:  *
        !          6441:  * A simple program that translates ASCII files into PostScript. All it really
        !          6442:  * does is expand tabs and backspaces, handle character quoting, print text lines,
        !          6443:  * and control when pages are started based on the requested number of lines per
        !          6444:  * page.
        !          6445:  *
        !          6446:  * The PostScript prologue is copied from *prologue before any of the input files
        !          6447:  * are translated. The program expects that the following procedures are defined
        !          6448:  * in that file:
        !          6449:  *
        !          6450:  *     setup
        !          6451:  *
        !          6452:  *       mark ... setup -
        !          6453:  *
        !          6454:  *         Handles special initialization stuff that depends on how the program
        !          6455:  *         was called. Expects to find a mark followed by key/value pairs on the
        !          6456:  *         stack. The def operator is applied to each pair up to the mark, then
        !          6457:  *         the default state is set up.
        !          6458:  *
        !          6459:  *     pagesetup
        !          6460:  *
        !          6461:  *       page pagesetup -
        !          6462:  *
        !          6463:  *         Does whatever is needed to set things up for the next page. Expects
        !          6464:  *         to find the current page number on the stack.
        !          6465:  *
        !          6466:  *     l
        !          6467:  *
        !          6468:  *       string l -
        !          6469:  *
        !          6470:  *         Prints string starting in the first column and then goes to the next
        !          6471:  *         line.
        !          6472:  *
        !          6473:  *     L
        !          6474:  *
        !          6475:  *       mark string column string column ... L mark
        !          6476:  *
        !          6477:  *         Prints each string on the stack starting at the horizontal position
        !          6478:  *         selected by column. Used when tabs and spaces can be sufficiently well
        !          6479:  *         compressed to make the printer overhead worthwhile. Always used when
        !          6480:  *         we have to back up.
        !          6481:  *
        !          6482:  *     LL
        !          6483:  *
        !          6484:  *       mark string column string column ... LL mark
        !          6485:  *
        !          6486:  *         Like L, but only used to prevent potential PostScript stack overflow
        !          6487:  *         from too many string/column pairs. Stays on the current line. It will
        !          6488:  *         not be needed often!!
        !          6489:  *
        !          6490:  *     done
        !          6491:  *
        !          6492:  *       done
        !          6493:  *
        !          6494:  *         Makes sure the last page is printed. Only needed when we're printing
        !          6495:  *         more than one page on each sheet of paper.
        !          6496:  *
        !          6497:  * Almost everything has been changed in this version of postprint. The program
        !          6498:  * is more intelligent, especially about tabs, spaces, and backspacing, and as a
        !          6499:  * result output files usually print faster. Output files also now conform to
        !          6500:  * Adobe's file structuring conventions, which is undoubtedly something I should
        !          6501:  * have done in the first version of the program. If the number of lines per page
        !          6502:  * is set to 0, which can be done using the -l option, pointsize will be used to
        !          6503:  * guess a reasonable value. The estimate is based on the values of LINESPP,
        !          6504:  * POINTSIZE, and pointsize, and assumes LINESPP lines would fit on a page if
        !          6505:  * we printed in size POINTSIZE. Selecting a point size using the -s option and
        !          6506:  * adding -l0 to the command line forces the guess to be made.
        !          6507:  *
        !          6508:  * Many default values, like the magnification and orientation, are defined in 
        !          6509:  * the prologue, which is where they belong. If they're changed (by options), an
        !          6510:  * appropriate definition is made after the prologue is added to the output file.
        !          6511:  * The -P option passes arbitrary PostScript through to the output file. Among
        !          6512:  * other things it can be used to set (or change) values that can't be accessed by
        !          6513:  * other options.
        !          6514:  *
        !          6515:  */
        !          6516: 
        !          6517: #include <stdio.h>
        !          6518: #include <signal.h>
        !          6519: #include <ctype.h>
        !          6520: #include <fcntl.h>
        !          6521: 
        !          6522: #include "comments.h"                  /* PostScript file structuring comments */
        !          6523: #include "gen.h"                       /* general purpose definitions */
        !          6524: #include "path.h"                      /* for the prologue */
        !          6525: #include "ext.h"                       /* external variable declarations */
        !          6526: #include "postprint.h"                 /* a few special definitions */
        !          6527: 
        !          6528: char   *optnames = "a:c:ef:l:m:n:o:p:r:s:t:x:y:A:C:E:J:L:P:R:DI";
        !          6529: 
        !          6530: char   *prologue = POSTPRINT;          /* default PostScript prologue */
        !          6531: char   *formfile = FORMFILE;           /* stuff for multiple pages per sheet */
        !          6532: 
        !          6533: int    formsperpage = 1;               /* page images on each piece of paper */
        !          6534: int    copies = 1;                     /* and this many copies of each sheet */
        !          6535: 
        !          6536: int    linespp = LINESPP;              /* number of lines per page */
        !          6537: int    pointsize = POINTSIZE;          /* in this point size */
        !          6538: int    tabstops = TABSTOPS;            /* tabs set at these columns */
        !          6539: int    crmode = 0;                     /* carriage return mode - 0, 1, or 2 */
        !          6540: int    extended = TRUE;                /* use escapes for unprintable chars */
        !          6541: 
        !          6542: int    col = 1;                        /* next character goes in this column */
        !          6543: int    line = 1;                       /* on this line */
        !          6544: 
        !          6545: int    stringcount = 0;                /* number of strings on the stack */
        !          6546: int    stringstart = 1;                /* column where current one starts */
        !          6547: 
        !          6548: Fontmap        fontmap[] = FONTMAP;            /* for translating font names */
        !          6549: char   *fontname = "Courier";          /* use this PostScript font */
        !          6550: 
        !          6551: int    page = 0;                       /* page we're working on */
        !          6552: int    printed = 0;                    /* printed this many pages */
        !          6553: 
        !          6554: FILE   *fp_in = stdin;                 /* read from this file */
        !          6555: FILE   *fp_out = stdout;               /* and write stuff here */
        !          6556: FILE   *fp_acct = NULL;                /* for accounting data */
        !          6557: 
        !          6558: /*****************************************************************************/
        !          6559: 
        !          6560: main(agc, agv)
        !          6561: 
        !          6562:     int                agc;
        !          6563:     char       *agv[];
        !          6564: 
        !          6565: {
        !          6566: 
        !          6567: /*
        !          6568:  *
        !          6569:  * A simple program that translates ASCII files into PostScript. If there's more
        !          6570:  * than one input file, each begins on a new page.
        !          6571:  *
        !          6572:  */
        !          6573: 
        !          6574:     argc = agc;                                /* other routines may want them */
        !          6575:     argv = agv;
        !          6576: 
        !          6577:     prog_name = argv[0];               /* really just for error messages */
        !          6578: 
        !          6579:     init_signals();                    /* sets up interrupt handling */
        !          6580:     header();                          /* PostScript header and prologue */
        !          6581:     options();                         /* handle the command line options */
        !          6582:     setup();                           /* for PostScript */
        !          6583:     arguments();                       /* followed by each input file */
        !          6584:     done();                            /* print the last page etc. */
        !          6585:     account();                         /* job accounting data */
        !          6586: 
        !          6587:     exit(x_stat);                      /* not much could be wrong */
        !          6588: 
        !          6589: }   /* End of main */
        !          6590: 
        !          6591: /*****************************************************************************/
        !          6592: 
        !          6593: init_signals()
        !          6594: 
        !          6595: {
        !          6596: 
        !          6597: /*
        !          6598:  *
        !          6599:  * Makes sure we handle interrupts.
        !          6600:  *
        !          6601:  */
        !          6602: 
        !          6603:     if ( signal(SIGINT, interrupt) == SIG_IGN ) {
        !          6604:        signal(SIGINT, SIG_IGN);
        !          6605:        signal(SIGQUIT, SIG_IGN);
        !          6606:        signal(SIGHUP, SIG_IGN);
        !          6607:     } else {
        !          6608:        signal(SIGHUP, interrupt);
        !          6609:        signal(SIGQUIT, interrupt);
        !          6610:     }   /* End else */
        !          6611: 
        !          6612:     signal(SIGTERM, interrupt);
        !          6613: 
        !          6614: }   /* End of init_signals */
        !          6615: 
        !          6616: /*****************************************************************************/
        !          6617: 
        !          6618: header()
        !          6619: 
        !          6620: {
        !          6621: 
        !          6622:     int                ch;                     /* return value from getopt() */
        !          6623:     int                old_optind = optind;    /* for restoring optind - should be 1 */
        !          6624: 
        !          6625: /*
        !          6626:  *
        !          6627:  * Scans the option list looking for things, like the prologue file, that we need
        !          6628:  * right away but could be changed from the default. Doing things this way is an
        !          6629:  * attempt to conform to Adobe's latest file structuring conventions. In particular
        !          6630:  * they now say there should be nothing executed in the prologue, and they have
        !          6631:  * added two new comments that delimit global initialization calls. Once we know
        !          6632:  * where things really are we write out the job header, follow it by the prologue,
        !          6633:  * and then add the ENDPROLOG and BEGINSETUP comments.
        !          6634:  *
        !          6635:  */
        !          6636: 
        !          6637:     while ( (ch = getopt(argc, argv, optnames)) != EOF )
        !          6638:        if ( ch == 'L' )
        !          6639:            prologue = optarg;
        !          6640:        else if ( ch == '?' )
        !          6641:            error(FATAL, "");
        !          6642: 
        !          6643:     optind = old_optind;               /* get ready for option scanning */
        !          6644: 
        !          6645:     fprintf(stdout, "%s", CONFORMING);
        !          6646:     fprintf(stdout, "%s %s\n", VERSION, PROGRAMVERSION);
        !          6647:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, ATEND);
        !          6648:     fprintf(stdout, "%s %s\n", PAGES, ATEND);
        !          6649:     fprintf(stdout, "%s", ENDCOMMENTS);
        !          6650: 
        !          6651:     if ( cat(prologue) == FALSE )
        !          6652:        error(FATAL, "can't read %s", prologue);
        !          6653: 
        !          6654:     if ( DOROUND )
        !          6655:        cat(ROUNDPAGE);
        !          6656: 
        !          6657:     fprintf(stdout, "%s", ENDPROLOG);
        !          6658:     fprintf(stdout, "%s", BEGINSETUP);
        !          6659:     fprintf(stdout, "mark\n");
        !          6660: 
        !          6661: }   /* End of header */
        !          6662: 
        !          6663: /*****************************************************************************/
        !          6664: 
        !          6665: options()
        !          6666: 
        !          6667: {
        !          6668: 
        !          6669:     int                ch;                     /* return value from getopt() */
        !          6670: 
        !          6671: /*
        !          6672:  *
        !          6673:  * Reads and processes the command line options. Added the -P option so arbitrary
        !          6674:  * PostScript code can be passed through. Expect it could be useful for changing
        !          6675:  * definitions in the prologue for which options have not been defined.
        !          6676:  *
        !          6677:  * Although any PostScript font can be used, things will only work well for
        !          6678:  * constant width fonts.
        !          6679:  *
        !          6680:  */
        !          6681: 
        !          6682:     while ( (ch = getopt(argc, argv, optnames)) != EOF ) {
        !          6683:        switch ( ch ) {
        !          6684: 
        !          6685:            case 'a':                   /* aspect ratio */
        !          6686:                    fprintf(stdout, "/aspectratio %s def\n", optarg);
        !          6687:                    break;
        !          6688: 
        !          6689:            case 'c':                   /* copies */
        !          6690:                    copies = atoi(optarg);
        !          6691:                    fprintf(stdout, "/#copies %s store\n", optarg);
        !          6692:                    break;
        !          6693: 
        !          6694:            case 'e':                   /* obsolete - it's now always on */
        !          6695:                    extended = TRUE;
        !          6696:                    break;
        !          6697: 
        !          6698:            case 'f':                   /* use this PostScript font */
        !          6699:                    fontname = get_font(optarg);
        !          6700:                    fprintf(stdout, "/font /%s def\n", fontname);
        !          6701:                    break;
        !          6702: 
        !          6703:            case 'l':                   /* lines per page */
        !          6704:                    linespp = atoi(optarg);
        !          6705:                    break;
        !          6706: 
        !          6707:            case 'm':                   /* magnification */
        !          6708:                    fprintf(stdout, "/magnification %s def\n", optarg);
        !          6709:                    break;
        !          6710: 
        !          6711:            case 'n':                   /* forms per page */
        !          6712:                    formsperpage = atoi(optarg);
        !          6713:                    fprintf(stdout, "%s %s\n", FORMSPERPAGE, optarg);
        !          6714:                    fprintf(stdout, "/formsperpage %s def\n", optarg);
        !          6715:                    break;
        !          6716: 
        !          6717:            case 'o':                   /* output page list */
        !          6718:                    out_list(optarg);
        !          6719:                    break;
        !          6720: 
        !          6721:            case 'p':                   /* landscape or portrait mode */
        !          6722:                    if ( *optarg == 'l' )
        !          6723:                        fprintf(stdout, "/landscape true def\n");
        !          6724:                    else fprintf(stdout, "/landscape false def\n");
        !          6725:                    break;
        !          6726: 
        !          6727:            case 'r':                   /* carriage return mode */
        !          6728:                    crmode = atoi(optarg);
        !          6729:                    break;
        !          6730: 
        !          6731:            case 's':                   /* point size */
        !          6732:                    pointsize = atoi(optarg);
        !          6733:                    fprintf(stdout, "/pointsize %s def\n", optarg);
        !          6734:                    break;
        !          6735: 
        !          6736:            case 't':                   /* tabstops */
        !          6737:                    tabstops = atoi(optarg);
        !          6738:                    break;
        !          6739: 
        !          6740:            case 'x':                   /* shift things horizontally */
        !          6741:                    fprintf(stdout, "/xoffset %s def\n", optarg);
        !          6742:                    break;
        !          6743: 
        !          6744:            case 'y':                   /* and vertically on the page */
        !          6745:                    fprintf(stdout, "/yoffset %s def\n", optarg);
        !          6746:                    break;
        !          6747: 
        !          6748:            case 'A':                   /* force job accounting */
        !          6749:            case 'J':
        !          6750:                    if ( (fp_acct = fopen(optarg, "a")) == NULL )
        !          6751:                        error(FATAL, "can't open accounting file %s", optarg);
        !          6752:                    break;
        !          6753: 
        !          6754:            case 'C':                   /* copy file straight to output */
        !          6755:                    if ( cat(optarg) == FALSE )
        !          6756:                        error(FATAL, "can't read %s", optarg);
        !          6757:                    break;
        !          6758: 
        !          6759:            case 'E':                   /* text font encoding */
        !          6760:                    fontencoding = optarg;
        !          6761:                    break;
        !          6762: 
        !          6763:            case 'L':                   /* PostScript prologue file */
        !          6764:                    prologue = optarg;
        !          6765:                    break;
        !          6766: 
        !          6767:            case 'P':                   /* PostScript pass through */
        !          6768:                    fprintf(stdout, "%s\n", optarg);
        !          6769:                    break;
        !          6770: 
        !          6771:            case 'R':                   /* special global or page level request */
        !          6772:                    saverequest(optarg);
        !          6773:                    break;
        !          6774: 
        !          6775:            case 'D':                   /* debug flag */
        !          6776:                    debug = ON;
        !          6777:                    break;
        !          6778: 
        !          6779:            case 'I':                   /* ignore FATAL errors */
        !          6780:                    ignore = ON;
        !          6781:                    break;
        !          6782: 
        !          6783:            case '?':                   /* don't understand the option */
        !          6784:                    error(FATAL, "");
        !          6785:                    break;
        !          6786: 
        !          6787:            default:                    /* don't know what to do for ch */
        !          6788:                    error(FATAL, "missing case for option %c\n", ch);
        !          6789:                    break;
        !          6790:        }   /* End switch */
        !          6791:     }   /* End while */
        !          6792: 
        !          6793:     argc -= optind;                    /* get ready for non-option args */
        !          6794:     argv += optind;
        !          6795: 
        !          6796: }   /* End of options */
        !          6797: 
        !          6798: /*****************************************************************************/
        !          6799: 
        !          6800: char *get_font(name)
        !          6801: 
        !          6802:     char       *name;                  /* name the user asked for */
        !          6803: 
        !          6804: {
        !          6805: 
        !          6806:     int                i;                      /* for looking through fontmap[] */
        !          6807: 
        !          6808: /*
        !          6809:  *
        !          6810:  * Called from options() to map a user's font name into a legal PostScript name.
        !          6811:  * If the lookup fails *name is returned to the caller. That should let you choose
        !          6812:  * any PostScript font, although things will only work well for constant width
        !          6813:  * fonts.
        !          6814:  *
        !          6815:  */
        !          6816: 
        !          6817:     for ( i = 0; fontmap[i].name != NULL; i++ )
        !          6818:        if ( strcmp(name, fontmap[i].name) == 0 )
        !          6819:            return(fontmap[i].val);
        !          6820: 
        !          6821:     return(name);
        !          6822: 
        !          6823: }   /* End of get_font */
        !          6824: 
        !          6825: /*****************************************************************************/
        !          6826: 
        !          6827: setup()
        !          6828: 
        !          6829: {
        !          6830: 
        !          6831: /*
        !          6832:  *
        !          6833:  * Handles things that must be done after the options are read but before the
        !          6834:  * input files are processed. linespp (lines per page) can be set using the -l
        !          6835:  * option. If it's not positive we calculate a reasonable value using the
        !          6836:  * requested point size - assuming LINESPP lines fit on a page in point size
        !          6837:  * POINTSIZE.
        !          6838:  *
        !          6839:  */
        !          6840: 
        !          6841:     writerequest(0, stdout);           /* global requests eg. manual feed */
        !          6842:     setencoding(fontencoding);
        !          6843:     fprintf(stdout, "setup\n");
        !          6844: 
        !          6845:     if ( formsperpage > 1 ) {
        !          6846:        if ( cat(formfile) == FALSE )
        !          6847:            error(FATAL, "can't read %s", formfile);
        !          6848:        fprintf(stdout, "%d setupforms\n", formsperpage);
        !          6849:     }  /* End if */
        !          6850: 
        !          6851:     fprintf(stdout, "%s", ENDSETUP);
        !          6852: 
        !          6853:     if ( linespp <= 0 )
        !          6854:        linespp = LINESPP * POINTSIZE / pointsize;
        !          6855: 
        !          6856: }   /* End of setup */
        !          6857: 
        !          6858: /*****************************************************************************/
        !          6859: 
        !          6860: arguments()
        !          6861: 
        !          6862: {
        !          6863: 
        !          6864: /*
        !          6865:  *
        !          6866:  * Makes sure all the non-option command line arguments are processed. If we get
        !          6867:  * here and there aren't any arguments left, or if '-' is one of the input files
        !          6868:  * we'll translate stdin.
        !          6869:  *
        !          6870:  */
        !          6871: 
        !          6872:     if ( argc < 1 )
        !          6873:        text();
        !          6874:     else {                             /* at least one argument is left */
        !          6875:        while ( argc > 0 ) {
        !          6876:            if ( strcmp(*argv, "-") == 0 )
        !          6877:                fp_in = stdin;
        !          6878:            else if ( (fp_in = fopen(*argv, "r")) == NULL )
        !          6879:                error(FATAL, "can't open %s", *argv);
        !          6880:            text();
        !          6881:            if ( fp_in != stdin )
        !          6882:                fclose(fp_in);
        !          6883:            argc--;
        !          6884:            argv++;
        !          6885:        }   /* End while */
        !          6886:     }   /* End else */
        !          6887: 
        !          6888: }   /* End of arguments */
        !          6889: 
        !          6890: /*****************************************************************************/
        !          6891: 
        !          6892: done()
        !          6893: 
        !          6894: {
        !          6895: 
        !          6896: /*
        !          6897:  *
        !          6898:  * Finished with all the input files, so mark the end of the pages with a TRAILER
        !          6899:  * comment, make sure the last page prints, and add things like the PAGES comment
        !          6900:  * that can only be determined after all the input files have been read.
        !          6901:  *
        !          6902:  */
        !          6903: 
        !          6904:     fprintf(stdout, "%s", TRAILER);
        !          6905:     fprintf(stdout, "done\n");
        !          6906:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, fontname);
        !          6907:     fprintf(stdout, "%s %d\n", PAGES, printed);
        !          6908: 
        !          6909: }   /* End of done */
        !          6910: 
        !          6911: /*****************************************************************************/
        !          6912: 
        !          6913: account()
        !          6914: 
        !          6915: {
        !          6916: 
        !          6917: /*
        !          6918:  *
        !          6919:  * Writes an accounting record to *fp_acct provided it's not NULL. Accounting is
        !          6920:  * requested using the -A or -J options.
        !          6921:  *
        !          6922:  */
        !          6923: 
        !          6924:     if ( fp_acct != NULL )
        !          6925:        fprintf(fp_acct, " print %d\n copies %d\n", printed, copies);
        !          6926: 
        !          6927: }   /* End of account */
        !          6928: 
        !          6929: /*****************************************************************************/
        !          6930: 
        !          6931: text()
        !          6932: 
        !          6933: {
        !          6934: 
        !          6935:     int                ch;                     /* next input character */
        !          6936: 
        !          6937: /*
        !          6938:  *
        !          6939:  * Translates *fp_in into PostScript. Intercepts space, tab, backspace, newline,
        !          6940:  * return, and formfeed. Everything else goes to oput(), which handles quoting
        !          6941:  * (if needed) and escapes for nonascii characters if extended is TRUE. The
        !          6942:  * redirect(-1) call forces the initial output to go to /dev/null - so stuff
        !          6943:  * that formfeed() does at the end of each page goes to /dev/null rather than
        !          6944:  * the real output file.
        !          6945:  *
        !          6946:  */
        !          6947: 
        !          6948:     redirect(-1);                      /* get ready for the first page */
        !          6949:     formfeed();                                /* force PAGE comment etc. */
        !          6950: 
        !          6951:     while ( (ch = getc(fp_in)) != EOF )
        !          6952:        switch ( ch ) {
        !          6953:            case '\n':
        !          6954:                    newline();
        !          6955:                    break;
        !          6956: 
        !          6957:            case '\t':
        !          6958:            case '\b':
        !          6959:            case ' ':
        !          6960:                    spaces(ch);
        !          6961:                    break;
        !          6962: 
        !          6963:            case '\014':
        !          6964:                    formfeed();
        !          6965:                    break;
        !          6966: 
        !          6967:            case '\r':
        !          6968:                    if ( crmode == 1 )
        !          6969:                        spaces(ch);
        !          6970:                    else if ( crmode == 2 )
        !          6971:                        newline();
        !          6972:                    break;
        !          6973: 
        !          6974:            default:
        !          6975:                    oput(ch);
        !          6976:                    break;
        !          6977:        }   /* End switch */
        !          6978: 
        !          6979:     formfeed();                                /* next file starts on a new page? */
        !          6980: 
        !          6981: }   /* End of text */
        !          6982: 
        !          6983: /*****************************************************************************/
        !          6984: 
        !          6985: formfeed()
        !          6986: 
        !          6987: {
        !          6988: 
        !          6989: /*
        !          6990:  *
        !          6991:  * Called whenever we've finished with the last page and want to get ready for the
        !          6992:  * next one. Also used at the beginning and end of each input file, so we have to
        !          6993:  * be careful about what's done. The first time through (up to the redirect() call)
        !          6994:  * output goes to /dev/null.
        !          6995:  *
        !          6996:  * Adobe now recommends that the showpage operator occur after the page level
        !          6997:  * restore so it can be easily redefined to have side-effects in the printer's VM.
        !          6998:  * Although it seems reasonable I haven't implemented it, because it makes other
        !          6999:  * things, like selectively setting manual feed or choosing an alternate paper
        !          7000:  * tray, clumsy - at least on a per page basis. 
        !          7001:  *
        !          7002:  */
        !          7003: 
        !          7004:     if ( fp_out == stdout )            /* count the last page */
        !          7005:        printed++;
        !          7006: 
        !          7007:     endline();                         /* print the last line */
        !          7008: 
        !          7009:     fprintf(fp_out, "cleartomark\n");
        !          7010:     fprintf(fp_out, "showpage\n");
        !          7011:     fprintf(fp_out, "saveobj restore\n");
        !          7012:     fprintf(fp_out, "%s %d %d\n", ENDPAGE, page, printed);
        !          7013: 
        !          7014:     if ( ungetc(getc(fp_in), fp_in) == EOF )
        !          7015:        redirect(-1);
        !          7016:     else redirect(++page);
        !          7017: 
        !          7018:     fprintf(fp_out, "%s %d %d\n", PAGE, page, printed+1);
        !          7019:     fprintf(fp_out, "/saveobj save def\n");
        !          7020:     fprintf(fp_out, "mark\n");
        !          7021:     writerequest(printed+1, fp_out);
        !          7022:     fprintf(fp_out, "%d pagesetup\n", printed+1);
        !          7023: 
        !          7024:     line = 1;
        !          7025: 
        !          7026: }   /* End of formfeed */
        !          7027: 
        !          7028: /*****************************************************************************/
        !          7029: 
        !          7030: newline()
        !          7031: 
        !          7032: {
        !          7033: 
        !          7034: /*
        !          7035:  *
        !          7036:  * Called when we've read a newline character. The call to startline() ensures
        !          7037:  * that at least an empty string is on the stack.
        !          7038:  *
        !          7039:  */
        !          7040: 
        !          7041:     startline();
        !          7042:     endline();                         /* print the current line */
        !          7043: 
        !          7044:     if ( ++line > linespp )            /* done with this page */
        !          7045:        formfeed();
        !          7046: 
        !          7047: }   /* End of newline */
        !          7048: 
        !          7049: /*****************************************************************************/
        !          7050: 
        !          7051: spaces(ch)
        !          7052: 
        !          7053:     int                ch;                     /* next input character */
        !          7054: 
        !          7055: {
        !          7056: 
        !          7057:     int                endcol;                 /* ending column */
        !          7058:     int                i;                      /* final distance - in spaces */
        !          7059: 
        !          7060: /*
        !          7061:  *
        !          7062:  * Counts consecutive spaces, tabs, and backspaces and figures out where the next
        !          7063:  * string should start. Once that's been done we try to choose an efficient way
        !          7064:  * to output the required number of spaces. The choice is between using procedure
        !          7065:  * l with a single string on the stack and L with several string and column pairs.
        !          7066:  * We usually break even, in terms of the size of the output file, if we need four
        !          7067:  * consecutive spaces. More means using L decreases the size of the file. For now
        !          7068:  * if there are less than 6 consecutive spaces we just add them to the current
        !          7069:  * string, otherwise we end that string, follow it by its starting position, and
        !          7070:  * begin a new one that starts at endcol. Backspacing is always handled this way.
        !          7071:  *
        !          7072:  */
        !          7073: 
        !          7074:     startline();                       /* so col makes sense */
        !          7075:     endcol = col;
        !          7076: 
        !          7077:     do {
        !          7078:        if ( ch == ' ' )
        !          7079:            endcol++;
        !          7080:        else if ( ch == '\t' )
        !          7081:            endcol += tabstops - ((endcol - 1) % tabstops);
        !          7082:        else if ( ch == '\b' )
        !          7083:            endcol--;
        !          7084:        else if ( ch == '\r' )
        !          7085:            endcol = 1;
        !          7086:        else break;
        !          7087:     } while ( ch = getc(fp_in) );      /* if ch is 0 we'd quit anyway */
        !          7088: 
        !          7089:     ungetc(ch, fp_in);                 /* wasn't a space, tab, or backspace */
        !          7090: 
        !          7091:     if ( endcol < 1 )                  /* can't move past left edge */
        !          7092:        endcol = 1;
        !          7093: 
        !          7094:     if ( (i = endcol - col) >= 0 && i < 6 )
        !          7095:        for ( ; i > 0; i-- )
        !          7096:            oput((int)' ');
        !          7097:     else {
        !          7098:        endstring();
        !          7099:        col = stringstart = endcol;
        !          7100:     }  /* End else */
        !          7101: 
        !          7102: }   /* End of spaces */
        !          7103: 
        !          7104: /*****************************************************************************/
        !          7105: 
        !          7106: startline()
        !          7107: 
        !          7108: {
        !          7109: 
        !          7110: /*
        !          7111:  *
        !          7112:  * Called whenever we want to be certain we're ready to start pushing characters
        !          7113:  * into an open string on the stack. If stringcount is positive we've already
        !          7114:  * started, so there's nothing to do. The first string starts in column 1.
        !          7115:  *
        !          7116:  */
        !          7117: 
        !          7118:     if ( stringcount < 1 ) {
        !          7119:        putc('(', fp_out);
        !          7120:        stringstart = col = 1;
        !          7121:        stringcount = 1;
        !          7122:     }  /* End if */
        !          7123: 
        !          7124: }   /* End of startline */
        !          7125: 
        !          7126: /*****************************************************************************/
        !          7127: 
        !          7128: endstring()
        !          7129: 
        !          7130: {
        !          7131: 
        !          7132: /*
        !          7133:  *
        !          7134:  * End the current string and start a new one.
        !          7135:  *
        !          7136:  */
        !          7137: 
        !          7138:     if ( stringcount > 100 ) {         /* don't put too much on the stack */
        !          7139:        fprintf(fp_out, ")%d LL\n(", stringstart-1);
        !          7140:        stringcount = 2;                /* kludge - don't let endline() use l */
        !          7141:     } else {
        !          7142:        fprintf(fp_out, ")%d(", stringstart-1);
        !          7143:        stringcount++;
        !          7144:     }   /* End else */
        !          7145: 
        !          7146: }   /* End of endstring */
        !          7147: 
        !          7148: /*****************************************************************************/
        !          7149: 
        !          7150: endline()
        !          7151: 
        !          7152: {
        !          7153: 
        !          7154: /*
        !          7155:  *
        !          7156:  * Generates a call to the PostScript procedure that processes all the text on
        !          7157:  * the stack - provided stringcount is positive. If one string is on the stack
        !          7158:  * the fast procedure (ie. l) is used to print the line, otherwise the slower
        !          7159:  * one that processes string and column pairs is used.
        !          7160:  *
        !          7161:  */
        !          7162: 
        !          7163:     if ( stringcount == 1 )
        !          7164:        fprintf(fp_out, ")l\n");
        !          7165:     else if ( stringcount > 1 )
        !          7166:        fprintf(fp_out, ")%d L\n", stringstart-1);
        !          7167: 
        !          7168:     stringcount = 0;
        !          7169: 
        !          7170: }   /* End of endline */
        !          7171: 
        !          7172: /*****************************************************************************/
        !          7173: 
        !          7174: oput(ch)
        !          7175: 
        !          7176:     int                ch;                     /* next output character */
        !          7177: 
        !          7178: {
        !          7179: 
        !          7180: /*
        !          7181:  *
        !          7182:  * Responsible for adding all printing characters from the input file to the
        !          7183:  * open string on top of the stack.
        !          7184:  *
        !          7185:  */
        !          7186: 
        !          7187:     if ( isascii(ch) && isprint(ch) ) {
        !          7188:        startline();
        !          7189:        if ( ch == '(' || ch == ')' || ch == '\\' )
        !          7190:            putc('\\', fp_out);
        !          7191:        putc(ch, fp_out);
        !          7192:        col++;
        !          7193:     } else if ( extended == TRUE ) {
        !          7194:        startline();
        !          7195:        fprintf(fp_out, "\\%.3o", ch & 0377);
        !          7196:        col++;
        !          7197:     }  /* End if */
        !          7198: 
        !          7199: }   /* End of oput */
        !          7200: 
        !          7201: /*****************************************************************************/
        !          7202: 
        !          7203: redirect(pg)
        !          7204: 
        !          7205:     int                pg;                     /* next page we're printing */
        !          7206: 
        !          7207: {
        !          7208: 
        !          7209:     static FILE        *fp_null = NULL;        /* if output is turned off */
        !          7210: 
        !          7211: /*
        !          7212:  *
        !          7213:  * If we're not supposed to print page pg, fp_out will be directed to /dev/null,
        !          7214:  * otherwise output goes to stdout.
        !          7215:  *
        !          7216:  */
        !          7217: 
        !          7218:     if ( pg >= 0 && in_olist(pg) == ON )
        !          7219:        fp_out = stdout;
        !          7220:     else if ( (fp_out = fp_null) == NULL )
        !          7221:        fp_out = fp_null = fopen("/dev/null", "w");
        !          7222: 
        !          7223: }   /* End of redirect */
        !          7224: 
        !          7225: /*****************************************************************************/
        !          7226: 
        !          7227: 0707070014231216431006440057030057030000010636260522627500700003700000002055post.src/postprint/postprint.h/*
        !          7228:  *
        !          7229:  * Default lines per page, tab stops, and point size.
        !          7230:  *
        !          7231:  */
        !          7232: 
        !          7233: #define LINESPP                66
        !          7234: #define TABSTOPS       8
        !          7235: #define POINTSIZE      10
        !          7236: 
        !          7237: /*
        !          7238:  *
        !          7239:  * An array of type Fontmap helps convert font names requested by users into
        !          7240:  * legitimate PostScript names. The array is initialized using FONTMAP, which must
        !          7241:  * end with an entry that has NULL defined as its name field. The only fonts that
        !          7242:  * are guaranteed to work well are the constant width fonts.
        !          7243:  *
        !          7244:  */
        !          7245: 
        !          7246: typedef struct {
        !          7247:        char    *name;                  /* user's font name */
        !          7248:        char    *val;                   /* corresponding PostScript name */
        !          7249: } Fontmap;
        !          7250: 
        !          7251: #define FONTMAP                                                                \
        !          7252:                                                                        \
        !          7253:        {                                                               \
        !          7254:            "R", "Courier",                                             \
        !          7255:            "I", "Courier-Oblique",                                     \
        !          7256:            "B", "Courier-Bold",                                        \
        !          7257:            "CO", "Courier",                                            \
        !          7258:            "CI", "Courier-Oblique",                                    \
        !          7259:            "CB", "Courier-Bold",                                       \
        !          7260:            "CW", "Courier",                                            \
        !          7261:            "PO", "Courier",                                            \
        !          7262:            "courier", "Courier",                                       \
        !          7263:            "cour", "Courier",                                          \
        !          7264:            "co", "Courier",                                            \
        !          7265:            NULL, NULL                                                  \
        !          7266:        }
        !          7267: 
        !          7268: /*
        !          7269:  *
        !          7270:  * Some of the non-integer functions in postprint.c.
        !          7271:  *
        !          7272:  */
        !          7273: 
        !          7274: char   *get_font();
        !          7275: 
        !          7276: 0707070014231215121006400057030057030000010637050522633076500004000000004020post.src/postprint/postprint.mkMAKE=/bin/make
        !          7277: MAKEFILE=postprint.mk
        !          7278: 
        !          7279: SYSTEM=V9
        !          7280: VERSION=3.3.2
        !          7281: 
        !          7282: GROUP=bin
        !          7283: OWNER=bin
        !          7284: 
        !          7285: MAN1DIR=/tmp
        !          7286: POSTBIN=/usr/bin/postscript
        !          7287: POSTLIB=/usr/lib/postscript
        !          7288: 
        !          7289: COMMONDIR=../common
        !          7290: 
        !          7291: CFLGS=-O
        !          7292: LDFLGS=-s
        !          7293: 
        !          7294: CFLAGS=$(CFLGS) -I$(COMMONDIR)
        !          7295: LDFLAGS=$(LDFLGS)
        !          7296: 
        !          7297: HFILES=postprint.h\
        !          7298:        $(COMMONDIR)/comments.h\
        !          7299:        $(COMMONDIR)/ext.h\
        !          7300:        $(COMMONDIR)/gen.h\
        !          7301:        $(COMMONDIR)/path.h
        !          7302: 
        !          7303: OFILES=postprint.o\
        !          7304:        $(COMMONDIR)/glob.o\
        !          7305:        $(COMMONDIR)/misc.o\
        !          7306:        $(COMMONDIR)/request.o
        !          7307: 
        !          7308: all : postprint
        !          7309: 
        !          7310: install : all
        !          7311:        @if [ ! -d "$(POSTBIN)" ]; then \
        !          7312:            mkdir $(POSTBIN); \
        !          7313:            chmod 755 $(POSTBIN); \
        !          7314:            chgrp $(GROUP) $(POSTBIN); \
        !          7315:            chown $(OWNER) $(POSTBIN); \
        !          7316:        fi
        !          7317:        @if [ ! -d "$(POSTLIB)" ]; then \
        !          7318:            mkdir $(POSTLIB); \
        !          7319:            chmod 755 $(POSTLIB); \
        !          7320:            chgrp $(GROUP) $(POSTLIB); \
        !          7321:            chown $(OWNER) $(POSTLIB); \
        !          7322:        fi
        !          7323:        cp postprint $(POSTBIN)/postprint
        !          7324:        @chmod 755 $(POSTBIN)/postprint
        !          7325:        @chgrp $(GROUP) $(POSTBIN)/postprint
        !          7326:        @chown $(OWNER) $(POSTBIN)/postprint
        !          7327:        cp postprint.ps $(POSTLIB)/postprint.ps
        !          7328:        @chmod 644 $(POSTLIB)/postprint.ps
        !          7329:        @chgrp $(GROUP) $(POSTLIB)/postprint.ps
        !          7330:        @chown $(OWNER) $(POSTLIB)/postprint.ps
        !          7331:        cp postprint.1 $(MAN1DIR)/postprint.1
        !          7332:        @chmod 644 $(MAN1DIR)/postprint.1
        !          7333:        @chgrp $(GROUP) $(MAN1DIR)/postprint.1
        !          7334:        @chown $(OWNER) $(MAN1DIR)/postprint.1
        !          7335: 
        !          7336: clean :
        !          7337:        rm -f *.o
        !          7338: 
        !          7339: clobber : clean
        !          7340:        rm -f postprint
        !          7341: 
        !          7342: postprint : $(OFILES)
        !          7343:        $(CC) $(CFLAGS) $(LDFLAGS) -o postprint $(OFILES)
        !          7344: 
        !          7345: postprint.o : $(HFILES)
        !          7346: 
        !          7347: $(COMMONDIR)/glob.o\
        !          7348: $(COMMONDIR)/misc.o\
        !          7349: $(COMMONDIR)/request.o :
        !          7350:        @cd $(COMMONDIR); $(MAKE) -f common.mk `basename $@`
        !          7351: 
        !          7352: changes :
        !          7353:        @trap "" 1 2 3 15; \
        !          7354:        sed \
        !          7355:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
        !          7356:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
        !          7357:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          7358:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          7359:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
        !          7360:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
        !          7361:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
        !          7362:        $(MAKEFILE) >XXX.mk; \
        !          7363:        mv XXX.mk $(MAKEFILE); \
        !          7364:        sed \
        !          7365:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
        !          7366:        postprint.1 >XXX.1; \
        !          7367:        mv XXX.1 postprint.1
        !          7368: 
        !          7369: 0707070014231215061006400057030057030000010551100522633076600003700000010703post.src/postprint/postprint.1.ds dQ /usr/lib/postscript
        !          7370: .TH POSTPRINT 1 "DWB 3.2"
        !          7371: .SH NAME
        !          7372: .B postprint
        !          7373: \- PostScript translator for text files
        !          7374: .SH SYNOPSIS
        !          7375: \*(mBpostprint\f1
        !          7376: .OP "" options []
        !          7377: .OP "" files []
        !          7378: .SH DESCRIPTION
        !          7379: .B postprint
        !          7380: translates text
        !          7381: .I files
        !          7382: into PostScript and writes the results on the
        !          7383: standard output.
        !          7384: If no
        !          7385: .I files
        !          7386: are specified, or if
        !          7387: .OP \-
        !          7388: is one of the input
        !          7389: .IR files ,
        !          7390: the standard input is read.
        !          7391: The following
        !          7392: .I options
        !          7393: are understood:
        !          7394: .TP 0.75i
        !          7395: .OP \-c num
        !          7396: Print
        !          7397: .I num
        !          7398: copies of each page.
        !          7399: By default only one copy is printed.
        !          7400: .TP 
        !          7401: .OP \-f name
        !          7402: Print
        !          7403: .I files
        !          7404: using font
        !          7405: .IR name .
        !          7406: Any PostScript font can be used,
        !          7407: although the best results will only be
        !          7408: obtained with constant width fonts.
        !          7409: The default font is Courier.
        !          7410: .TP 
        !          7411: .OP \-l num
        !          7412: Set the length of a page to
        !          7413: .I num
        !          7414: lines.
        !          7415: By default
        !          7416: .I num
        !          7417: is 66.
        !          7418: Setting
        !          7419: .I num
        !          7420: to 0 is allowed, and will cause
        !          7421: .B postprint
        !          7422: to guess a value, based on the point size that is being used.
        !          7423: .TP 
        !          7424: .OP \-m num
        !          7425: Magnify each logical page by the factor
        !          7426: .IR num .
        !          7427: Pages are scaled uniformly about the origin,
        !          7428: which is located near the upper left corner of
        !          7429: each page.
        !          7430: The default magnification is 1.0.
        !          7431: .TP 
        !          7432: .OP \-n num
        !          7433: Print
        !          7434: .I num
        !          7435: logical pages on each piece of paper,
        !          7436: where
        !          7437: .I num
        !          7438: can be any positive integer.
        !          7439: By default
        !          7440: .I num
        !          7441: is set to 1.
        !          7442: .TP 
        !          7443: .OP \-o list
        !          7444: Print pages whose numbers are given in the comma-separated
        !          7445: .IR list .
        !          7446: The list contains single numbers
        !          7447: .I N
        !          7448: and ranges
        !          7449: .IR N1\-\|N2 .
        !          7450: A missing
        !          7451: .I N1
        !          7452: means the lowest numbered page, a missing
        !          7453: .I N2
        !          7454: means the highest.
        !          7455: .TP 
        !          7456: .OP \-p mode
        !          7457: Print
        !          7458: .I files
        !          7459: in either \*(mBportrait\fP or \*(mBlandscape\fP
        !          7460: .IR mode .
        !          7461: Only the first character of
        !          7462: .I mode
        !          7463: is significant.
        !          7464: The default
        !          7465: .I mode
        !          7466: is \*(mBportrait\fP.
        !          7467: .TP 
        !          7468: .OP \-r num
        !          7469: Selects carriage return behavior.
        !          7470: Carriage returns are ignored if
        !          7471: .I num
        !          7472: is 0,
        !          7473: cause a return to column 1 if
        !          7474: .I num
        !          7475: is 1,
        !          7476: and generate a newline if
        !          7477: .I num
        !          7478: is 2.
        !          7479: The default
        !          7480: .I num
        !          7481: is 0.
        !          7482: .TP 
        !          7483: .OP \-s num
        !          7484: Print
        !          7485: .I files
        !          7486: using point size
        !          7487: .IR num .
        !          7488: When printing in landscape mode
        !          7489: .I num
        !          7490: is scaled by a factor that depends on the
        !          7491: imaging area of the device.
        !          7492: The default size for portrait mode is 10.
        !          7493: .TP 
        !          7494: .OP \-t num
        !          7495: Assume tabs are set every
        !          7496: .I num
        !          7497: columns, starting with the first column.
        !          7498: By default tabs are set every 8 columns.
        !          7499: .TP 
        !          7500: .OP \-x num
        !          7501: Translate the origin
        !          7502: .I num
        !          7503: inches along the positive x axis.
        !          7504: The default
        !          7505: coordinate system has the origin fixed near the
        !          7506: upper left corner of the page, with positive
        !          7507: x to the right and positive y down the page.
        !          7508: Positive
        !          7509: .I num
        !          7510: moves everything right.
        !          7511: The default offset is 0.25 inches.
        !          7512: .TP 
        !          7513: .OP \-y num
        !          7514: Translate the origin
        !          7515: .I num
        !          7516: inches along the positive y axis.
        !          7517: Positive
        !          7518: .I num
        !          7519: moves text down the page.
        !          7520: The default offset is 0.25 inches.
        !          7521: .TP 
        !          7522: .OP \-E name
        !          7523: Set the character encoding for text fonts to
        !          7524: .IR name .
        !          7525: Requesting
        !          7526: .I name
        !          7527: means include file
        !          7528: .MI \*(dQ/ name .enc \f1.
        !          7529: A nonexistent encoding file is silently ignored.
        !          7530: The default selects file
        !          7531: .MR \*(dQ/Default.enc .
        !          7532: .TP 
        !          7533: .OP \-L file
        !          7534: Use
        !          7535: .I file
        !          7536: as the PostScript prologue.
        !          7537: .br
        !          7538: The default is
        !          7539: .MR \*(dQ/postprint.ps .
        !          7540: .PP
        !          7541: Three options allow insertion of arbitrary PostScript
        !          7542: at controlled points in the translation process:
        !          7543: .TP  0.75i
        !          7544: .OP \-C file
        !          7545: Copy
        !          7546: .I file
        !          7547: to the output file;
        !          7548: .I file
        !          7549: must contain legitimate PostScript.
        !          7550: .TP 
        !          7551: .OP \-P string
        !          7552: Include
        !          7553: .I string
        !          7554: in the output file;
        !          7555: .I string
        !          7556: must be legitimate PostScript.
        !          7557: .TP 
        !          7558: .OP \-R action
        !          7559: Requests special
        !          7560: .I action
        !          7561: (e.g.,
        !          7562: .MR manualfeed )
        !          7563: on a per page or global basis.
        !          7564: The
        !          7565: .I action
        !          7566: string can be given as
        !          7567: .IR request ,
        !          7568: .IM request : page\f1\|,
        !          7569: or
        !          7570: .IM request : page : file\f1\|.
        !          7571: If
        !          7572: .I page
        !          7573: is omitted or given as 0, the request
        !          7574: applies to all pages.
        !          7575: If
        !          7576: .I file
        !          7577: is omitted, the request
        !          7578: lookup is done in
        !          7579: .MR \*(dQ/ps.requests .
        !          7580: .PP
        !          7581: A new logical page is started after 66 lines have been printed
        !          7582: on the current page, or whenever an
        !          7583: .SM ASCII
        !          7584: form feed character is read.
        !          7585: The number of lines per page can be changed using the
        !          7586: .OP \-l
        !          7587: option.
        !          7588: Unprintable
        !          7589: .SM ASCII
        !          7590: characters are ignored,
        !          7591: and lines that are too long are silently truncated
        !          7592: by the printer.
        !          7593: .SH EXAMPLES
        !          7594: .PP
        !          7595: Print
        !          7596: .I file1
        !          7597: and
        !          7598: .I file2
        !          7599: in landscape mode:
        !          7600: .EX
        !          7601: postprint -pland \f2file1 file2
        !          7602: .EE
        !          7603: Print three logical pages on each physical page in portrait mode:
        !          7604: .EX
        !          7605: postprint -n3 \f2file
        !          7606: .EE
        !          7607: .SH DIAGNOSTICS
        !          7608: A 0 exit status is returned if
        !          7609: .I files
        !          7610: were successfully processed.
        !          7611: .SH FILES
        !          7612: .MW \*(dQ/postprint.ps
        !          7613: .br
        !          7614: .MW \*(dQ/forms.ps
        !          7615: .br
        !          7616: .MW \*(dQ/ps.requests
        !          7617: .SH SEE ALSO
        !          7618: .BR dpost (1),
        !          7619: .BR postdaisy(1),
        !          7620: .BR postdmd(1),
        !          7621: .BR postio(1),
        !          7622: .BR postmd(1),
        !          7623: .BR postreverse(1),
        !          7624: .BR posttek(1),
        !          7625: .BR psencoding (1)
        !          7626: 0707070014231216461006440057030057030000010637200522627500700004000000047760post.src/postprint/Lpostprint.c/*
        !          7627:  *
        !          7628:  * postprint - PostScript translator for ASCII files.
        !          7629:  *
        !          7630:  * A simple program that translates ASCII files into PostScript. All it really
        !          7631:  * does is expand tabs and backspaces, handle character quoting, print text lines,
        !          7632:  * and control when pages are started based on the requested number of lines per
        !          7633:  * page.
        !          7634:  *
        !          7635:  * The PostScript prologue is copied from *prologue before any of the input files
        !          7636:  * are translated. The program expects that the following procedures are defined
        !          7637:  * in that file:
        !          7638:  *
        !          7639:  *     setup
        !          7640:  *
        !          7641:  *       mark ... setup -
        !          7642:  *
        !          7643:  *         Handles special initialization stuff that depends on how the program
        !          7644:  *         was called. Expects to find a mark followed by key/value pairs on the
        !          7645:  *         stack. The def operator is applied to each pair up to the mark, then
        !          7646:  *         the default state is set up.
        !          7647:  *
        !          7648:  *     pagesetup
        !          7649:  *
        !          7650:  *       page pagesetup -
        !          7651:  *
        !          7652:  *         Does whatever is needed to set things up for the next page. Expects
        !          7653:  *         to find the current page number on the stack.
        !          7654:  *
        !          7655:  *     l
        !          7656:  *
        !          7657:  *       string l -
        !          7658:  *
        !          7659:  *         Prints string starting in the first column and then goes to the next
        !          7660:  *         line.
        !          7661:  *
        !          7662:  *     L
        !          7663:  *
        !          7664:  *       mark string column string column ... L mark
        !          7665:  *
        !          7666:  *         Prints each string on the stack starting at the horizontal position
        !          7667:  *         selected by column. Used when tabs and spaces can be sufficiently well
        !          7668:  *         compressed to make the printer overhead worthwhile. Always used when
        !          7669:  *         we have to back up.
        !          7670:  *
        !          7671:  *     done
        !          7672:  *
        !          7673:  *       done
        !          7674:  *
        !          7675:  *         Makes sure the last page is printed. Only needed when we're printing
        !          7676:  *         more than one page on each sheet of paper.
        !          7677:  *
        !          7678:  * Almost everything has been changed in this version of postprint. The program
        !          7679:  * is more intelligent, especially about tabs, spaces, and backspacing, and as a
        !          7680:  * result output files usually print faster. Output files also now conform to
        !          7681:  * Adobe's file structuring conventions, which is undoubtedly something I should
        !          7682:  * have done in the first version of the program. If the number of lines per page
        !          7683:  * is set to 0, which can be done using the -l option, pointsize will be used to
        !          7684:  * guess a reasonable value. The estimate is based on the values of LINESPP,
        !          7685:  * POINTSIZE, and pointsize, and assumes LINESPP lines would fit on a page if
        !          7686:  * we printed in size POINTSIZE. Selecting a point size using the -s option and
        !          7687:  * adding -l0 to the command line forces the guess to be made.
        !          7688:  *
        !          7689:  * Many default values, like the magnification and orientation, are defined in 
        !          7690:  * the prologue, which is where they belong. If they're changed (by options), an
        !          7691:  * appropriate definition is made after the prologue is added to the output file.
        !          7692:  * The -P option passes arbitrary PostScript through to the output file. Among
        !          7693:  * other things it can be used to set (or change) values that can't be accessed by
        !          7694:  * other options.
        !          7695:  *
        !          7696:  */
        !          7697: 
        !          7698: #include <stdio.h>
        !          7699: #include <signal.h>
        !          7700: #include <ctype.h>
        !          7701: #include <fcntl.h>
        !          7702: 
        !          7703: #include "comments.h"                  /* PostScript file structuring comments */
        !          7704: #include "gen.h"                       /* general purpose definitions */
        !          7705: #include "path.h"                      /* for the prologue */
        !          7706: #include "ext.h"                       /* external variable declarations */
        !          7707: #include "postprint.h"                 /* a few special definitions */
        !          7708: 
        !          7709: char   *optnames = "a:c:ef:l:m:n:o:p:r:s:t:x:y:A:C:E:J:L:P:R:DI";
        !          7710: 
        !          7711: char   *prologue = POSTPRINT;          /* default PostScript prologue */
        !          7712: char   *formfile = FORMFILE;           /* stuff for multiple pages per sheet */
        !          7713: 
        !          7714: int    formsperpage = 1;               /* page images on each piece of paper */
        !          7715: int    copies = 1;                     /* and this many copies of each sheet */
        !          7716: 
        !          7717: int    linespp = LINESPP;              /* number of lines per page */
        !          7718: int    pointsize = POINTSIZE;          /* in this point size */
        !          7719: int    tabstops = TABSTOPS;            /* tabs set at these columns */
        !          7720: int    crmode = 0;                     /* carriage return mode - 0, 1, or 2 */
        !          7721: int    extended = TRUE;                /* use escapes for unprintable chars */
        !          7722: 
        !          7723: int    col = 1;                        /* next character goes in this column */
        !          7724: int    line = 1;                       /* on this line */
        !          7725: 
        !          7726: int    stringcount = 0;                /* number of strings on the stack */
        !          7727: int    stringstart = 1;                /* column where current one starts */
        !          7728: 
        !          7729: Fontmap        fontmap[] = FONTMAP;            /* for translating font names */
        !          7730: char   *fontname = "Courier";          /* use this PostScript font */
        !          7731: 
        !          7732: int    page = 0;                       /* page we're working on */
        !          7733: int    printed = 0;                    /* printed this many pages */
        !          7734: 
        !          7735: FILE   *fp_in = stdin;                 /* read from this file */
        !          7736: FILE   *fp_out = stdout;               /* and write stuff here */
        !          7737: FILE   *fp_acct = NULL;                /* for accounting data */
        !          7738: 
        !          7739: /*****************************************************************************/
        !          7740: 
        !          7741: main(agc, agv)
        !          7742: 
        !          7743:     int                agc;
        !          7744:     char       *agv[];
        !          7745: 
        !          7746: {
        !          7747: 
        !          7748: /*
        !          7749:  *
        !          7750:  * A simple program that translates ASCII files into PostScript. If there's more
        !          7751:  * than one input file, each begins on a new page.
        !          7752:  *
        !          7753:  */
        !          7754: 
        !          7755:     argc = agc;                                /* other routines may want them */
        !          7756:     argv = agv;
        !          7757: 
        !          7758:     prog_name = argv[0];               /* really just for error messages */
        !          7759: 
        !          7760:     init_signals();                    /* sets up interrupt handling */
        !          7761:     header();                          /* PostScript header and prologue */
        !          7762:     options();                         /* handle the command line options */
        !          7763:     setup();                           /* for PostScript */
        !          7764:     arguments();                       /* followed by each input file */
        !          7765:     done();                            /* print the last page etc. */
        !          7766:     account();                         /* job accounting data */
        !          7767: 
        !          7768:     exit(x_stat);                      /* not much could be wrong */
        !          7769: 
        !          7770: }   /* End of main */
        !          7771: 
        !          7772: /*****************************************************************************/
        !          7773: 
        !          7774: init_signals()
        !          7775: 
        !          7776: {
        !          7777: 
        !          7778: /*
        !          7779:  *
        !          7780:  * Makes sure we handle interrupts.
        !          7781:  *
        !          7782:  */
        !          7783: 
        !          7784:     if ( signal(SIGINT, interrupt) == SIG_IGN ) {
        !          7785:        signal(SIGINT, SIG_IGN);
        !          7786:        signal(SIGQUIT, SIG_IGN);
        !          7787:        signal(SIGHUP, SIG_IGN);
        !          7788:     } else {
        !          7789:        signal(SIGHUP, interrupt);
        !          7790:        signal(SIGQUIT, interrupt);
        !          7791:     }   /* End else */
        !          7792: 
        !          7793:     signal(SIGTERM, interrupt);
        !          7794: 
        !          7795: }   /* End of init_signals */
        !          7796: 
        !          7797: /*****************************************************************************/
        !          7798: 
        !          7799: header()
        !          7800: 
        !          7801: {
        !          7802: 
        !          7803:     int                ch;                     /* return value from getopt() */
        !          7804:     int                old_optind = optind;    /* for restoring optind - should be 1 */
        !          7805: 
        !          7806: /*
        !          7807:  *
        !          7808:  * Scans the option list looking for things, like the prologue file, that we need
        !          7809:  * right away but could be changed from the default. Doing things this way is an
        !          7810:  * attempt to conform to Adobe's latest file structuring conventions. In particular
        !          7811:  * they now say there should be nothing executed in the prologue, and they have
        !          7812:  * added two new comments that delimit global initialization calls. Once we know
        !          7813:  * where things really are we write out the job header, follow it by the prologue,
        !          7814:  * and then add the ENDPROLOG and BEGINSETUP comments.
        !          7815:  *
        !          7816:  */
        !          7817: 
        !          7818:     while ( (ch = getopt(argc, argv, optnames)) != EOF )
        !          7819:        if ( ch == 'L' )
        !          7820:            prologue = optarg;
        !          7821:        else if ( ch == '?' )
        !          7822:            error(FATAL, "");
        !          7823: 
        !          7824:     optind = old_optind;               /* get ready for option scanning */
        !          7825: 
        !          7826:     fprintf(stdout, "%s", CONFORMING);
        !          7827:     fprintf(stdout, "%s %s\n", VERSION, PROGRAMVERSION);
        !          7828:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, ATEND);
        !          7829:     fprintf(stdout, "%s %s\n", PAGES, ATEND);
        !          7830:     fprintf(stdout, "%s", ENDCOMMENTS);
        !          7831: 
        !          7832:     if ( cat(prologue) == FALSE )
        !          7833:        error(FATAL, "can't read %s", prologue);
        !          7834: 
        !          7835:     if ( DOROUND )
        !          7836:        cat(ROUNDPAGE);
        !          7837: 
        !          7838:     fprintf(stdout, "%s", ENDPROLOG);
        !          7839:     fprintf(stdout, "%s", BEGINSETUP);
        !          7840:     fprintf(stdout, "mark\n");
        !          7841: 
        !          7842: }   /* End of header */
        !          7843: 
        !          7844: /*****************************************************************************/
        !          7845: 
        !          7846: options()
        !          7847: 
        !          7848: {
        !          7849: 
        !          7850:     int                ch;                     /* return value from getopt() */
        !          7851: 
        !          7852: /*
        !          7853:  *
        !          7854:  * Reads and processes the command line options. Added the -P option so arbitrary
        !          7855:  * PostScript code can be passed through. Expect it could be useful for changing
        !          7856:  * definitions in the prologue for which options have not been defined.
        !          7857:  *
        !          7858:  * Although any PostScript font can be used, things will only work well for
        !          7859:  * constant width fonts.
        !          7860:  *
        !          7861:  */
        !          7862: 
        !          7863:     while ( (ch = getopt(argc, argv, optnames)) != EOF ) {
        !          7864:        switch ( ch ) {
        !          7865: 
        !          7866:            case 'a':                   /* aspect ratio */
        !          7867:                    fprintf(stdout, "/aspectratio %s def\n", optarg);
        !          7868:                    break;
        !          7869: 
        !          7870:            case 'c':                   /* copies */
        !          7871:                    copies = atoi(optarg);
        !          7872:                    fprintf(stdout, "/#copies %s store\n", optarg);
        !          7873:                    break;
        !          7874: 
        !          7875:            case 'e':                   /* obsolete - it's now always on */
        !          7876:                    extended = TRUE;
        !          7877:                    break;
        !          7878: 
        !          7879:            case 'f':                   /* use this PostScript font */
        !          7880:                    fontname = get_font(optarg);
        !          7881:                    fprintf(stdout, "/font /%s def\n", fontname);
        !          7882:                    break;
        !          7883: 
        !          7884:            case 'l':                   /* lines per page */
        !          7885:                    linespp = atoi(optarg);
        !          7886:                    break;
        !          7887: 
        !          7888:            case 'm':                   /* magnification */
        !          7889:                    fprintf(stdout, "/magnification %s def\n", optarg);
        !          7890:                    break;
        !          7891: 
        !          7892:            case 'n':                   /* forms per page */
        !          7893:                    formsperpage = atoi(optarg);
        !          7894:                    fprintf(stdout, "%s %s\n", FORMSPERPAGE, optarg);
        !          7895:                    fprintf(stdout, "/formsperpage %s def\n", optarg);
        !          7896:                    break;
        !          7897: 
        !          7898:            case 'o':                   /* output page list */
        !          7899:                    out_list(optarg);
        !          7900:                    break;
        !          7901: 
        !          7902:            case 'p':                   /* landscape or portrait mode */
        !          7903:                    if ( *optarg == 'l' )
        !          7904:                        fprintf(stdout, "/landscape true def\n");
        !          7905:                    else fprintf(stdout, "/landscape false def\n");
        !          7906:                    break;
        !          7907: 
        !          7908:            case 'r':                   /* carriage return mode */
        !          7909:                    crmode = atoi(optarg);
        !          7910:                    break;
        !          7911: 
        !          7912:            case 's':                   /* point size */
        !          7913:                    pointsize = atoi(optarg);
        !          7914:                    fprintf(stdout, "/pointsize %s def\n", optarg);
        !          7915:                    break;
        !          7916: 
        !          7917:            case 't':                   /* tabstops */
        !          7918:                    tabstops = atoi(optarg);
        !          7919:                    break;
        !          7920: 
        !          7921:            case 'x':                   /* shift things horizontally */
        !          7922:                    fprintf(stdout, "/xoffset %s def\n", optarg);
        !          7923:                    break;
        !          7924: 
        !          7925:            case 'y':                   /* and vertically on the page */
        !          7926:                    fprintf(stdout, "/yoffset %s def\n", optarg);
        !          7927:                    break;
        !          7928: 
        !          7929:            case 'A':                   /* force job accounting */
        !          7930:            case 'J':
        !          7931:                    if ( (fp_acct = fopen(optarg, "a")) == NULL )
        !          7932:                        error(FATAL, "can't open accounting file %s", optarg);
        !          7933:                    break;
        !          7934: 
        !          7935:            case 'C':                   /* copy file straight to output */
        !          7936:                    if ( cat(optarg) == FALSE )
        !          7937:                        error(FATAL, "can't read %s", optarg);
        !          7938:                    break;
        !          7939: 
        !          7940:            case 'E':                   /* text font encoding */
        !          7941:                    fontencoding = optarg;
        !          7942:                    break;
        !          7943: 
        !          7944:            case 'L':                   /* PostScript prologue file */
        !          7945:                    prologue = optarg;
        !          7946:                    break;
        !          7947: 
        !          7948:            case 'P':                   /* PostScript pass through */
        !          7949:                    fprintf(stdout, "%s\n", optarg);
        !          7950:                    break;
        !          7951: 
        !          7952:            case 'R':                   /* special global or page level request */
        !          7953:                    saverequest(optarg);
        !          7954:                    break;
        !          7955: 
        !          7956:            case 'D':                   /* debug flag */
        !          7957:                    debug = ON;
        !          7958:                    break;
        !          7959: 
        !          7960:            case 'I':                   /* ignore FATAL errors */
        !          7961:                    ignore = ON;
        !          7962:                    break;
        !          7963: 
        !          7964:            case '?':                   /* don't understand the option */
        !          7965:                    error(FATAL, "");
        !          7966:                    break;
        !          7967: 
        !          7968:            default:                    /* don't know what to do for ch */
        !          7969:                    error(FATAL, "missing case for option %c\n", ch);
        !          7970:                    break;
        !          7971:        }   /* End switch */
        !          7972:     }   /* End while */
        !          7973: 
        !          7974:     argc -= optind;                    /* get ready for non-option args */
        !          7975:     argv += optind;
        !          7976: 
        !          7977: }   /* End of options */
        !          7978: 
        !          7979: /*****************************************************************************/
        !          7980: 
        !          7981: char *get_font(name)
        !          7982: 
        !          7983:     char       *name;                  /* name the user asked for */
        !          7984: 
        !          7985: {
        !          7986: 
        !          7987:     int                i;                      /* for looking through fontmap[] */
        !          7988: 
        !          7989: /*
        !          7990:  *
        !          7991:  * Called from options() to map a user's font name into a legal PostScript name.
        !          7992:  * If the lookup fails *name is returned to the caller. That should let you choose
        !          7993:  * any PostScript font, although things will only work well for constant width
        !          7994:  * fonts.
        !          7995:  *
        !          7996:  */
        !          7997: 
        !          7998:     for ( i = 0; fontmap[i].name != NULL; i++ )
        !          7999:        if ( strcmp(name, fontmap[i].name) == 0 )
        !          8000:            return(fontmap[i].val);
        !          8001: 
        !          8002:     return(name);
        !          8003: 
        !          8004: }   /* End of get_font */
        !          8005: 
        !          8006: /*****************************************************************************/
        !          8007: 
        !          8008: setup()
        !          8009: 
        !          8010: {
        !          8011: 
        !          8012: /*
        !          8013:  *
        !          8014:  * Handles things that must be done after the options are read but before the
        !          8015:  * input files are processed. linespp (lines per page) can be set using the -l
        !          8016:  * option. If it's not positive we calculate a reasonable value using the
        !          8017:  * requested point size - assuming LINESPP lines fit on a page in point size
        !          8018:  * POINTSIZE.
        !          8019:  *
        !          8020:  */
        !          8021: 
        !          8022:     writerequest(0, stdout);           /* global requests eg. manual feed */
        !          8023:     setencoding(fontencoding);
        !          8024:     fprintf(stdout, "setup\n");
        !          8025: 
        !          8026:     if ( formsperpage > 1 ) {
        !          8027:        if ( cat(formfile) == FALSE )
        !          8028:            error(FATAL, "can't read %s", formfile);
        !          8029:        fprintf(stdout, "%d setupforms\n", formsperpage);
        !          8030:     }  /* End if */
        !          8031: 
        !          8032:     fprintf(stdout, "%s", ENDSETUP);
        !          8033: 
        !          8034:     if ( linespp <= 0 )
        !          8035:        linespp = LINESPP * POINTSIZE / pointsize;
        !          8036: 
        !          8037: }   /* End of setup */
        !          8038: 
        !          8039: /*****************************************************************************/
        !          8040: 
        !          8041: arguments()
        !          8042: 
        !          8043: {
        !          8044: 
        !          8045: /*
        !          8046:  *
        !          8047:  * Makes sure all the non-option command line arguments are processed. If we get
        !          8048:  * here and there aren't any arguments left, or if '-' is one of the input files
        !          8049:  * we'll translate stdin.
        !          8050:  *
        !          8051:  */
        !          8052: 
        !          8053:     if ( argc < 1 )
        !          8054:        text();
        !          8055:     else {                             /* at least one argument is left */
        !          8056:        while ( argc > 0 ) {
        !          8057:            if ( strcmp(*argv, "-") == 0 )
        !          8058:                fp_in = stdin;
        !          8059:            else if ( (fp_in = fopen(*argv, "r")) == NULL )
        !          8060:                error(FATAL, "can't open %s", *argv);
        !          8061:            text();
        !          8062:            if ( fp_in != stdin )
        !          8063:                fclose(fp_in);
        !          8064:            argc--;
        !          8065:            argv++;
        !          8066:        }   /* End while */
        !          8067:     }   /* End else */
        !          8068: 
        !          8069: }   /* End of arguments */
        !          8070: 
        !          8071: /*****************************************************************************/
        !          8072: 
        !          8073: done()
        !          8074: 
        !          8075: {
        !          8076: 
        !          8077: /*
        !          8078:  *
        !          8079:  * Finished with all the input files, so mark the end of the pages with a TRAILER
        !          8080:  * comment, make sure the last page prints, and add things like the PAGES comment
        !          8081:  * that can only be determined after all the input files have been read.
        !          8082:  *
        !          8083:  */
        !          8084: 
        !          8085:     fprintf(stdout, "%s", TRAILER);
        !          8086:     fprintf(stdout, "done\n");
        !          8087:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, fontname);
        !          8088:     fprintf(stdout, "%s %d\n", PAGES, printed);
        !          8089: 
        !          8090: }   /* End of done */
        !          8091: 
        !          8092: /*****************************************************************************/
        !          8093: 
        !          8094: account()
        !          8095: 
        !          8096: {
        !          8097: 
        !          8098: /*
        !          8099:  *
        !          8100:  * Writes an accounting record to *fp_acct provided it's not NULL. Accounting is
        !          8101:  * requested using the -A or -J options.
        !          8102:  *
        !          8103:  */
        !          8104: 
        !          8105:     if ( fp_acct != NULL )
        !          8106:        fprintf(fp_acct, " print %d\n copies %d\n", printed, copies);
        !          8107: 
        !          8108: }   /* End of account */
        !          8109: 
        !          8110: /*****************************************************************************/
        !          8111: 
        !          8112: text()
        !          8113: 
        !          8114: {
        !          8115: 
        !          8116:     int                ch;                     /* next input character */
        !          8117: 
        !          8118: /*
        !          8119:  *
        !          8120:  * Translates *fp_in into PostScript. Intercepts space, tab, backspace, newline,
        !          8121:  * return, and formfeed. Everything else goes to oput(), which handles quoting
        !          8122:  * (if needed) and escapes for nonascii characters if extended is TRUE. The
        !          8123:  * redirect(-1) call forces the initial output to go to /dev/null - so stuff
        !          8124:  * that formfeed() does at the end of each page goes to /dev/null rather than
        !          8125:  * the real output file.
        !          8126:  *
        !          8127:  */
        !          8128: 
        !          8129:     redirect(-1);                      /* get ready for the first page */
        !          8130:     formfeed();                                /* force PAGE comment etc. */
        !          8131: 
        !          8132:     while ( (ch = getc(fp_in)) != EOF )
        !          8133:        switch ( ch ) {
        !          8134:            case '\n':
        !          8135:                    newline();
        !          8136:                    break;
        !          8137: 
        !          8138:            case '\t':
        !          8139:            case '\b':
        !          8140:            case ' ':
        !          8141:                    spaces(ch);
        !          8142:                    break;
        !          8143: 
        !          8144:            case '\014':
        !          8145:                    formfeed();
        !          8146:                    break;
        !          8147: 
        !          8148:            case '\r':
        !          8149:                    if ( crmode == 1 )
        !          8150:                        spaces(ch);
        !          8151:                    else if ( crmode == 2 )
        !          8152:                        newline();
        !          8153:                    break;
        !          8154: 
        !          8155:            default:
        !          8156:                    oput(ch);
        !          8157:                    break;
        !          8158:        }   /* End switch */
        !          8159: 
        !          8160:     formfeed();                                /* next file starts on a new page? */
        !          8161: 
        !          8162: }   /* End of text */
        !          8163: 
        !          8164: /*****************************************************************************/
        !          8165: 
        !          8166: formfeed()
        !          8167: 
        !          8168: {
        !          8169: 
        !          8170: /*
        !          8171:  *
        !          8172:  * Called whenever we've finished with the last page and want to get ready for the
        !          8173:  * next one. Also used at the beginning and end of each input file, so we have to
        !          8174:  * be careful about what's done. The first time through (up to the redirect() call)
        !          8175:  * output goes to /dev/null.
        !          8176:  *
        !          8177:  * Adobe now recommends that the showpage operator occur after the page level
        !          8178:  * restore so it can be easily redefined to have side-effects in the printer's VM.
        !          8179:  * Although it seems reasonable I haven't implemented it, because it makes other
        !          8180:  * things, like selectively setting manual feed or choosing an alternate paper
        !          8181:  * tray, clumsy - at least on a per page basis. 
        !          8182:  *
        !          8183:  */
        !          8184: 
        !          8185:     if ( fp_out == stdout )            /* count the last page */
        !          8186:        printed++;
        !          8187: 
        !          8188:     endline();                         /* print the last line */
        !          8189: 
        !          8190:     fprintf(fp_out, "cleartomark\n");
        !          8191:     fprintf(fp_out, "showpage\n");
        !          8192:     fprintf(fp_out, "saveobj restore\n");
        !          8193:     fprintf(fp_out, "%s %d %d\n", ENDPAGE, page, printed);
        !          8194: 
        !          8195:     if ( ungetc(getc(fp_in), fp_in) == EOF )
        !          8196:        redirect(-1);
        !          8197:     else redirect(++page);
        !          8198: 
        !          8199:     fprintf(fp_out, "%s %d %d\n", PAGE, page, printed+1);
        !          8200:     fprintf(fp_out, "/saveobj save def\n");
        !          8201:     fprintf(fp_out, "mark\n");
        !          8202:     writerequest(printed+1, fp_out);
        !          8203:     fprintf(fp_out, "%d pagesetup\n", printed+1);
        !          8204: 
        !          8205:     line = 1;
        !          8206: 
        !          8207: }   /* End of formfeed */
        !          8208: 
        !          8209: /*****************************************************************************/
        !          8210: 
        !          8211: newline()
        !          8212: 
        !          8213: {
        !          8214: 
        !          8215: /*
        !          8216:  *
        !          8217:  * Called when we've read a newline character. The call to startline() ensures
        !          8218:  * that at least an empty string is on the stack.
        !          8219:  *
        !          8220:  */
        !          8221: 
        !          8222:     startline();
        !          8223:     endline();                         /* print the current line */
        !          8224: 
        !          8225:     if ( ++line > linespp )            /* done with this page */
        !          8226:        formfeed();
        !          8227: 
        !          8228: }   /* End of newline */
        !          8229: 
        !          8230: /*****************************************************************************/
        !          8231: 
        !          8232: spaces(ch)
        !          8233: 
        !          8234:     int                ch;                     /* next input character */
        !          8235: 
        !          8236: {
        !          8237: 
        !          8238:     int                endcol;                 /* ending column */
        !          8239:     int                i;                      /* final distance - in spaces */
        !          8240: 
        !          8241: /*
        !          8242:  *
        !          8243:  * Counts consecutive spaces, tabs, and backspaces and figures out where the next
        !          8244:  * string should start. Once that's been done we try to choose an efficient way
        !          8245:  * to output the required number of spaces. The choice is between using procedure
        !          8246:  * l with a single string on the stack and L with several string and column pairs.
        !          8247:  * We usually break even, in terms of the size of the output file, if we need four
        !          8248:  * consecutive spaces. More means using L decreases the size of the file. For now
        !          8249:  * if there are less than 6 consecutive spaces we just add them to the current
        !          8250:  * string, otherwise we end that string, follow it by its starting position, and
        !          8251:  * begin a new one that starts at endcol. Backspacing is always handled this way.
        !          8252:  *
        !          8253:  */
        !          8254: 
        !          8255:     startline();                       /* so col makes sense */
        !          8256:     endcol = col;
        !          8257: 
        !          8258:     do {
        !          8259:        if ( ch == ' ' )
        !          8260:            endcol++;
        !          8261:        else if ( ch == '\t' )
        !          8262:            endcol += tabstops - ((endcol - 1) % tabstops);
        !          8263:        else if ( ch == '\b' )
        !          8264:            endcol--;
        !          8265:        else if ( ch == '\r' )
        !          8266:            endcol = 1;
        !          8267:        else break;
        !          8268:     } while ( ch = getc(fp_in) );      /* if ch is 0 we'd quit anyway */
        !          8269: 
        !          8270:     ungetc(ch, fp_in);                 /* wasn't a space, tab, or backspace */
        !          8271: 
        !          8272:     if ( endcol < 1 )                  /* can't move past left edge */
        !          8273:        endcol = 1;
        !          8274: 
        !          8275:     if ( (i = endcol - col) >= 0 && i < 6 )
        !          8276:        for ( ; i > 0; i-- )
        !          8277:            oput((int)' ');
        !          8278:     else {
        !          8279:        fprintf(fp_out, ")%d(", stringstart-1);
        !          8280:        stringcount++;
        !          8281:        col = stringstart = endcol;
        !          8282:     }  /* End else */
        !          8283: 
        !          8284: }   /* End of spaces */
        !          8285: 
        !          8286: /*****************************************************************************/
        !          8287: 
        !          8288: startline()
        !          8289: 
        !          8290: {
        !          8291: 
        !          8292: /*
        !          8293:  *
        !          8294:  * Called whenever we want to be certain we're ready to start pushing characters
        !          8295:  * into an open string on the stack. If stringcount is positive we've already
        !          8296:  * started, so there's nothing to do. The first string starts in column 1.
        !          8297:  *
        !          8298:  */
        !          8299: 
        !          8300:     if ( stringcount < 1 ) {
        !          8301:        putc('(', fp_out);
        !          8302:        stringstart = col = 1;
        !          8303:        stringcount = 1;
        !          8304:     }  /* End if */
        !          8305: 
        !          8306: }   /* End of startline */
        !          8307: 
        !          8308: /*****************************************************************************/
        !          8309: 
        !          8310: endline()
        !          8311: 
        !          8312: {
        !          8313: 
        !          8314: /*
        !          8315:  *
        !          8316:  * Generates a call to the PostScript procedure that processes all the text on
        !          8317:  * the stack - provided stringcount is positive. If one string is on the stack
        !          8318:  * the fast procedure (ie. l) is used to print the line, otherwise the slower
        !          8319:  * one that processes string and column pairs is used.
        !          8320:  *
        !          8321:  */
        !          8322: 
        !          8323:     if ( stringcount == 1 )
        !          8324:        fprintf(fp_out, ")l\n");
        !          8325:     else if ( stringcount > 1 )
        !          8326:        fprintf(fp_out, ")%d L\n", stringstart-1);
        !          8327: 
        !          8328:     stringcount = 0;
        !          8329: 
        !          8330: }   /* End of endline */
        !          8331: 
        !          8332: /*****************************************************************************/
        !          8333: 
        !          8334: oput(ch)
        !          8335: 
        !          8336:     int                ch;                     /* next output character */
        !          8337: 
        !          8338: {
        !          8339: 
        !          8340: /*
        !          8341:  *
        !          8342:  * Responsible for adding all printing characters from the input file to the
        !          8343:  * open string on top of the stack.
        !          8344:  *
        !          8345:  */
        !          8346: 
        !          8347:     if ( isascii(ch) && isprint(ch) ) {
        !          8348:        startline();
        !          8349:        if ( ch == '(' || ch == ')' || ch == '\\' )
        !          8350:            putc('\\', fp_out);
        !          8351:        putc(ch, fp_out);
        !          8352:        col++;
        !          8353:     } else if ( extended == TRUE ) {
        !          8354:        startline();
        !          8355:        fprintf(fp_out, "\\%.3o", ch & 0377);
        !          8356:        col++;
        !          8357:     }  /* End if */
        !          8358: 
        !          8359: }   /* End of oput */
        !          8360: 
        !          8361: /*****************************************************************************/
        !          8362: 
        !          8363: redirect(pg)
        !          8364: 
        !          8365:     int                pg;                     /* next page we're printing */
        !          8366: 
        !          8367: {
        !          8368: 
        !          8369:     static FILE        *fp_null = NULL;        /* if output is turned off */
        !          8370: 
        !          8371: /*
        !          8372:  *
        !          8373:  * If we're not supposed to print page pg, fp_out will be directed to /dev/null,
        !          8374:  * otherwise output goes to stdout.
        !          8375:  *
        !          8376:  */
        !          8377: 
        !          8378:     if ( pg >= 0 && in_olist(pg) == ON )
        !          8379:        fp_out = stdout;
        !          8380:     else if ( (fp_out = fp_null) == NULL )
        !          8381:        fp_out = fp_null = fopen("/dev/null", "w");
        !          8382: 
        !          8383: }   /* End of redirect */
        !          8384: 
        !          8385: /*****************************************************************************/
        !          8386: 
        !          8387: 0707070014231216471006440057030057030000010643660522630326300004000000003403post.src/postprint/postprint.ps%
        !          8388: % Version 3.3.2 prologue for text files.
        !          8389: %
        !          8390: 
        !          8391: /#copies 1 store
        !          8392: /aspectratio 1 def
        !          8393: /font /Courier def
        !          8394: /formsperpage 1 def
        !          8395: /landscape false def
        !          8396: /magnification 1 def
        !          8397: /margin 10 def
        !          8398: /orientation 0 def
        !          8399: /pointsize 10 def
        !          8400: /rotation 1 def
        !          8401: /xoffset .25 def
        !          8402: /yoffset .25 def
        !          8403: 
        !          8404: /roundpage true def
        !          8405: /useclippath true def
        !          8406: /pagebbox [0 0 612 792] def
        !          8407: 
        !          8408: /inch {72 mul} bind def
        !          8409: /min {2 copy gt {exch} if pop} bind def
        !          8410: 
        !          8411: /show {show} bind def          % so later references don't bind
        !          8412: /stringwidth {stringwidth} bind def
        !          8413: 
        !          8414: /setup {
        !          8415:        counttomark 2 idiv {def} repeat pop
        !          8416: 
        !          8417:        landscape {/orientation 90 orientation add def} if
        !          8418:        font findfont pointsize scalefont setfont
        !          8419:        /charwidth (M) stringwidth pop def
        !          8420:        /linespace pointsize pointsize .10 mul add neg def
        !          8421: 
        !          8422:        pagedimensions
        !          8423:        xcenter ycenter translate
        !          8424:        orientation rotation mul rotate
        !          8425:        width 2 div neg height 2 div translate
        !          8426:        xoffset inch yoffset inch neg translate
        !          8427:        margin 2 div dup neg translate
        !          8428:        magnification dup aspectratio mul scale
        !          8429:        height width div 1 min dup scale
        !          8430:        0 linespace translate
        !          8431: } def
        !          8432: 
        !          8433: /pagedimensions {
        !          8434:        useclippath userdict /gotpagebbox known not and {
        !          8435:                /pagebbox [clippath pathbbox newpath] def
        !          8436:                roundpage currentdict /roundpagebbox known and {roundpagebbox} if
        !          8437:        } if
        !          8438:        pagebbox aload pop
        !          8439:        4 -1 roll exch 4 1 roll 4 copy
        !          8440:        landscape {4 2 roll} if
        !          8441:        sub /width exch def
        !          8442:        sub /height exch def
        !          8443:        add 2 div /xcenter exch def
        !          8444:        add 2 div /ycenter exch def
        !          8445:        userdict /gotpagebbox true put
        !          8446: } def
        !          8447: 
        !          8448: /pagesetup {/page exch def 0 0 moveto 0} bind def
        !          8449: 
        !          8450: /L {
        !          8451:        counttomark 2 idiv {charwidth mul currentpoint exch pop moveto show} repeat
        !          8452:        linespace add dup 0 exch moveto
        !          8453: } bind def
        !          8454: 
        !          8455: /l {show linespace add dup 0 exch moveto} bind def
        !          8456: 
        !          8457: /LL {
        !          8458:        counttomark 2 idiv {charwidth mul currentpoint exch pop moveto show} repeat
        !          8459: } bind def
        !          8460: 
        !          8461: /done {/lastpage where {pop lastpage} if} def
        !          8462: 0707070014231030621006440057030057030000010252400522633110300002700000012724post.src/postscript.mk#
        !          8463: # Top level makefile. Instructions are included here and in the README file.
        !          8464: #
        !          8465: # First save a copy of this file. Then adjust the following definitions (all
        !          8466: # come immediatedly after the initial block of comments):
        !          8467: #
        !          8468: #     MAKE     where make lives
        !          8469: #
        !          8470: #     MAKEFILE name of this file - for recursive make calls. Must change
        !          8471: #              if you rename this file.
        !          8472: #
        !          8473: #     SYSTEM   best match for your version of Unix. Current choices for
        !          8474: #              SYSTEM are:
        !          8475: #
        !          8476: #                      SYSV    - System V
        !          8477: #                      V9      - Ninth Edition
        !          8478: #                      BSD4_2  - Berkeley (eg. Sun)
        !          8479: #
        !          8480: #              Controls conditional compilation in a few places.
        !          8481: #
        !          8482: #     VERSION  refers to the Version of the DWB package
        !          8483: #
        !          8484: #     GROUP    group assigned to all installed files
        !          8485: #
        !          8486: #     OWNER    owner of everything that's installed
        !          8487: #
        !          8488: #     HOSTDIR  hostresident font directory for PostScript printers. Only
        !          8489: #              used in the font download program.
        !          8490: #
        !          8491: #     FONTDIR  width table directory - for troff and dpost
        !          8492: #
        !          8493: #     MAN1DIR  command manpages. A command and its manpage are installed
        !          8494: #              together - there's no easy way to avoid it. Setting MAN1DIR
        !          8495: #              to an existing temporary directory (e.g. /tmp) means an
        !          8496: #              install will work but manpages won't go anywhere permanent.
        !          8497: #              MAN1DIR must already exist - it will not be created during
        !          8498: #              an install.
        !          8499: #
        !          8500: #     POSTBIN  where most PostScript support programs go. dpost and picpack
        !          8501: #              are the exceptions.
        !          8502: #
        !          8503: #     POSTLIB  prologues and miscellaneous PostScript files. Primarily for
        !          8504: #              the programs that live in POSTBIN.
        !          8505: #
        !          8506: #     CFLGS    common compiler options - used to build CFLAGS in the low
        !          8507: #              level makefiles. CFLGS and LDFLGS are best set on the make
        !          8508: #              command line.
        !          8509: #
        !          8510: #     LDFLGS   common link editor options - used to build LDFLAGS in the
        !          8511: #              low level makefiles. LDFLGS and CFLGS are best set on the
        !          8512: #              make command line.
        !          8513: #
        !          8514: #     DKHOST   set it to TRUE to compile the DKHOST Datakit support code
        !          8515: #              in postio. Temporarily resets SYSTEM to SYSV if DKHOST is
        !          8516: #              TRUE and SYSTEM is BSD4_2. Ignored if SYSTEM is not SYSV
        !          8517: #              or BSD4_2.
        !          8518: #
        !          8519: #     DKSTREAMS enables streams based DKHOST support in postio when DKHOST
        !          8520: #              is TRUE and SYSTEM is SYSV or BSD4_2. Choices are TRUE,
        !          8521: #              FALSE, or a stream module name (e.g. dknetty or dkty). TRUE
        !          8522: #              selects dknetty. Newer systems may expect dkty.
        !          8523: #
        !          8524: #     ROUNDPAGE        must only be set to TRUE or FALSE. TRUE means translators
        !          8525: #              include code that maps clipping path dimensions into known
        !          8526: #              paper sizes.
        !          8527: #
        !          8528: #     TARGETS  the default list of what's built by make. Each target must
        !          8529: #              be the name of a source directory. A target that names a
        !          8530: #              non-existent source directory is ignored. Setting TARGETS
        !          8531: #              on the make command line overrides the default list.
        !          8532: #
        !          8533: # Source files must be updated whenever this file changes. If you change any
        !          8534: # definitions type,
        !          8535: #
        !          8536: #      make -f postscript.mk changes
        !          8537: #
        !          8538: # to update the source files, man pages, and low level makefiles.
        !          8539: #
        !          8540: # To build (but not install) the default package (i.e. everything named by
        !          8541: # TARGETS) type,
        !          8542: #
        !          8543: #      make -f postscript.mk all
        !          8544: #
        !          8545: # The recommended way to build and install the package is,
        !          8546: #
        !          8547: #      make -f postscript.mk all install
        !          8548: #
        !          8549: # Although you'll likely have to be root for the install to work.
        !          8550: #
        !          8551: # After the package is installed use,
        !          8552: #
        !          8553: #      make -f postscript.mk clobber
        !          8554: #
        !          8555: # to delete binary files and compiled programs from the source directories.
        !          8556: #
        !          8557: # Set TARGETS on the command line to select part of the package. For example,
        !          8558: #
        !          8559: #      make -f postscript.mk TARGETS="dpost devpost" all install
        !          8560: #
        !          8561: # builds and installs dpsot and the PostScript font tables. Quotes hide white
        !          8562: # space from the shell.
        !          8563: #
        !          8564: 
        !          8565: MAKE=/bin/make
        !          8566: MAKEFILE=postscript.mk
        !          8567: 
        !          8568: SYSTEM=V9
        !          8569: VERSION=3.3.2
        !          8570: 
        !          8571: GROUP=bin
        !          8572: OWNER=bin
        !          8573: 
        !          8574: ROOT=
        !          8575: FONTDIR=$(ROOT)/usr/lib/font
        !          8576: HOSTDIR=$(ROOT)/usr/lib/font/postscript
        !          8577: MAN1DIR=$(ROOT)/tmp
        !          8578: POSTBIN=$(ROOT)/usr/bin/postscript
        !          8579: POSTLIB=$(ROOT)/usr/lib/postscript
        !          8580: TMACDIR=$(ROOT)/usr/lib/tmac
        !          8581: 
        !          8582: COMMONDIR=common
        !          8583: CURRENTDIR=.
        !          8584: 
        !          8585: CFLGS=-O
        !          8586: LDFLGS=-s
        !          8587: 
        !          8588: DKHOST=FALSE
        !          8589: DKSTREAMS=FALSE
        !          8590: ROUNDPAGE=TRUE
        !          8591: 
        !          8592: #
        !          8593: # $(TARGETS) is the default list of things built by make. Pick dpost or
        !          8594: # dpost.utf but not both!
        !          8595: #
        !          8596: 
        !          8597: TARGETS=buildtables\
        !          8598:        common\
        !          8599:        cropmarks\
        !          8600:        devLatin1\
        !          8601:        devpost\
        !          8602:        download\
        !          8603:        dpost.utf\
        !          8604:        grabit\
        !          8605:        hardcopy\
        !          8606:        mpictures\
        !          8607:        picpack\
        !          8608:         postbgi\
        !          8609:         postdaisy\
        !          8610:         postdmd\
        !          8611:        postgif\
        !          8612:        postio\
        !          8613:        postmd\
        !          8614:         postprint\
        !          8615:        postreverse\
        !          8616:         posttek\
        !          8617:        printfont\
        !          8618:        psencoding\
        !          8619:        psfiles\
        !          8620:        trofftable
        !          8621: 
        !          8622: ACTION=all
        !          8623: 
        !          8624: all : $(TARGETS)
        !          8625: 
        !          8626: clean clobber :
        !          8627:        @$(MAKE) -e -f $(MAKEFILE) MAKE=$(MAKE) ACTION=$@ $(TARGETS)
        !          8628: 
        !          8629: install changes :
        !          8630:        @SYSTEM='$(SYSTEM)'; export SYSTEM; \
        !          8631:        VERSION='$(VERSION)'; export VERSION; \
        !          8632:        GROUP='$(GROUP)'; export GROUP; \
        !          8633:        OWNER='$(OWNER)'; export OWNER; \
        !          8634:        FONTDIR='$(FONTDIR)'; export FONTDIR; \
        !          8635:        HOSTDIR='$(HOSTDIR)'; export HOSTDIR; \
        !          8636:        MAN1DIR='$(MAN1DIR)'; export MAN1DIR; \
        !          8637:        POSTBIN='$(POSTBIN)'; export POSTBIN; \
        !          8638:        POSTLIB='$(POSTLIB)'; export POSTLIB; \
        !          8639:        TMACDIR='$(TMACDIR)'; export TMACDIR; \
        !          8640:        ROUNDPAGE='$(ROUNDPAGE)'; export ROUNDPAGE; \
        !          8641:        $(MAKE) -e -f $(MAKEFILE) MAKE=$(MAKE) ACTION=$@ $(TARGETS)
        !          8642: 
        !          8643: $(TARGETS) ::
        !          8644:        @TARGETS=; unset TARGETS; \
        !          8645:        HFILES=; unset HFILES; \
        !          8646:        OFILES=; unset OFILES; \
        !          8647:        CFLAGS=; unset CFLAGS; \
        !          8648:        LDFLAGS=; unset LDFLAGS; \
        !          8649:        YFLAGS=; unset YFLAGS; \
        !          8650:        SYSTEM='$(SYSTEM)'; export SYSTEM; \
        !          8651:        VERSION='$(VERSION)'; export VERSION; \
        !          8652:        CFLGS='$(CFLGS)'; export CFLGS; \
        !          8653:        LDFLGS='$(LDFLGS)'; export LDFLGS; \
        !          8654:        COMMONDIR='../$(COMMONDIR)'; export COMMONDIR; \
        !          8655:        DKHOST='$(DKHOST)'; export DKHOST; \
        !          8656:        DKSTREAMS='$(DKSTREAMS)'; export DKSTREAMS; \
        !          8657:        if [ -d $@ -a -f $@/[email protected] ]; then  \
        !          8658:            cd $@; \
        !          8659:            echo "---- Making $(ACTION) in directory $(CURRENTDIR)/$@ ----"; \
        !          8660:            $(MAKE) -e -f [email protected] MAKE=$(MAKE) $(ACTION); \
        !          8661:            echo; \
        !          8662:        fi
        !          8663: 
        !          8664: 0707070014231123300407550057030057030000020437670522633100000002400000000000post.src/psencoding0707070014231123311006440057030057030000010440040522627501000003700000006703post.src/psencoding/Latin1.enc%
        !          8665: % Encoding vector and redefinition of findfont for the ISO Latin1 standard.
        !          8666: % The 18 characters missing from ROM based fonts on older printers are noted
        !          8667: % below.
        !          8668: %
        !          8669: 
        !          8670: /ISOLatin1Encoding [
        !          8671:        /.notdef
        !          8672:        /.notdef
        !          8673:        /.notdef
        !          8674:        /.notdef
        !          8675:        /.notdef
        !          8676:        /.notdef
        !          8677:        /.notdef
        !          8678:        /.notdef
        !          8679:        /.notdef
        !          8680:        /.notdef
        !          8681:        /.notdef
        !          8682:        /.notdef
        !          8683:        /.notdef
        !          8684:        /.notdef
        !          8685:        /.notdef
        !          8686:        /.notdef
        !          8687:        /.notdef
        !          8688:        /.notdef
        !          8689:        /.notdef
        !          8690:        /.notdef
        !          8691:        /.notdef
        !          8692:        /.notdef
        !          8693:        /.notdef
        !          8694:        /.notdef
        !          8695:        /.notdef
        !          8696:        /.notdef
        !          8697:        /.notdef
        !          8698:        /.notdef
        !          8699:        /.notdef
        !          8700:        /.notdef
        !          8701:        /.notdef
        !          8702:        /.notdef
        !          8703:        /space
        !          8704:        /exclam
        !          8705:        /quotedbl
        !          8706:        /numbersign
        !          8707:        /dollar
        !          8708:        /percent
        !          8709:        /ampersand
        !          8710:        /quoteright
        !          8711:        /parenleft
        !          8712:        /parenright
        !          8713:        /asterisk
        !          8714:        /plus
        !          8715:        /comma
        !          8716:        /minus
        !          8717:        /period
        !          8718:        /slash
        !          8719:        /zero
        !          8720:        /one
        !          8721:        /two
        !          8722:        /three
        !          8723:        /four
        !          8724:        /five
        !          8725:        /six
        !          8726:        /seven
        !          8727:        /eight
        !          8728:        /nine
        !          8729:        /colon
        !          8730:        /semicolon
        !          8731:        /less
        !          8732:        /equal
        !          8733:        /greater
        !          8734:        /question
        !          8735:        /at
        !          8736:        /A
        !          8737:        /B
        !          8738:        /C
        !          8739:        /D
        !          8740:        /E
        !          8741:        /F
        !          8742:        /G
        !          8743:        /H
        !          8744:        /I
        !          8745:        /J
        !          8746:        /K
        !          8747:        /L
        !          8748:        /M
        !          8749:        /N
        !          8750:        /O
        !          8751:        /P
        !          8752:        /Q
        !          8753:        /R
        !          8754:        /S
        !          8755:        /T
        !          8756:        /U
        !          8757:        /V
        !          8758:        /W
        !          8759:        /X
        !          8760:        /Y
        !          8761:        /Z
        !          8762:        /bracketleft
        !          8763:        /backslash
        !          8764:        /bracketright
        !          8765:        /asciicircum
        !          8766:        /underscore
        !          8767:        /quoteleft
        !          8768:        /a
        !          8769:        /b
        !          8770:        /c
        !          8771:        /d
        !          8772:        /e
        !          8773:        /f
        !          8774:        /g
        !          8775:        /h
        !          8776:        /i
        !          8777:        /j
        !          8778:        /k
        !          8779:        /l
        !          8780:        /m
        !          8781:        /n
        !          8782:        /o
        !          8783:        /p
        !          8784:        /q
        !          8785:        /r
        !          8786:        /s
        !          8787:        /t
        !          8788:        /u
        !          8789:        /v
        !          8790:        /w
        !          8791:        /x
        !          8792:        /y
        !          8793:        /z
        !          8794:        /braceleft
        !          8795:        /bar
        !          8796:        /braceright
        !          8797:        /asciitilde
        !          8798:        /.notdef
        !          8799:        /.notdef
        !          8800:        /.notdef
        !          8801:        /.notdef
        !          8802:        /.notdef
        !          8803:        /.notdef
        !          8804:        /.notdef
        !          8805:        /.notdef
        !          8806:        /.notdef
        !          8807:        /.notdef
        !          8808:        /.notdef
        !          8809:        /.notdef
        !          8810:        /.notdef
        !          8811:        /.notdef
        !          8812:        /.notdef
        !          8813:        /.notdef
        !          8814:        /.notdef
        !          8815:        /dotlessi
        !          8816:        /grave
        !          8817:        /acute
        !          8818:        /circumflex
        !          8819:        /tilde
        !          8820:        /macron
        !          8821:        /breve
        !          8822:        /dotaccent
        !          8823:        /dieresis
        !          8824:        /.notdef
        !          8825:        /ring
        !          8826:        /cedilla
        !          8827:        /.notdef
        !          8828:        /hungarumlaut
        !          8829:        /ogonek
        !          8830:        /caron
        !          8831:        /space
        !          8832:        /exclamdown
        !          8833:        /cent
        !          8834:        /sterling
        !          8835:        /currency
        !          8836:        /yen
        !          8837:        /brokenbar              % missing
        !          8838:        /section
        !          8839:        /dieresis
        !          8840:        /copyright
        !          8841:        /ordfeminine
        !          8842:        /guillemotleft
        !          8843:        /logicalnot
        !          8844:        /hyphen
        !          8845:        /registered
        !          8846:        /macron
        !          8847:        /degree                 % missing
        !          8848:        /plusminus              % missing
        !          8849:        /twosuperior            % missing
        !          8850:        /threesuperior          % missing
        !          8851:        /acute
        !          8852:        /mu                     % missing
        !          8853:        /paragraph
        !          8854:        /periodcentered
        !          8855:        /cedilla
        !          8856:        /onesuperior            % missing
        !          8857:        /ordmasculine
        !          8858:        /guillemotright
        !          8859:        /onequarter             % missing
        !          8860:        /onehalf                % missing
        !          8861:        /threequarters          % missing
        !          8862:        /questiondown
        !          8863:        /Agrave
        !          8864:        /Aacute
        !          8865:        /Acircumflex
        !          8866:        /Atilde
        !          8867:        /Adieresis
        !          8868:        /Aring
        !          8869:        /AE
        !          8870:        /Ccedilla
        !          8871:        /Egrave
        !          8872:        /Eacute
        !          8873:        /Ecircumflex
        !          8874:        /Edieresis
        !          8875:        /Igrave
        !          8876:        /Iacute
        !          8877:        /Icircumflex
        !          8878:        /Idieresis
        !          8879:        /Eth                    % missing
        !          8880:        /Ntilde
        !          8881:        /Ograve
        !          8882:        /Oacute
        !          8883:        /Ocircumflex
        !          8884:        /Otilde
        !          8885:        /Odieresis
        !          8886:        /multiply               % missing
        !          8887:        /Oslash
        !          8888:        /Ugrave
        !          8889:        /Uacute
        !          8890:        /Ucircumflex
        !          8891:        /Udieresis
        !          8892:        /Yacute                 % missing
        !          8893:        /Thorn                  % missing
        !          8894:        /germandbls
        !          8895:        /agrave
        !          8896:        /aacute
        !          8897:        /acircumflex
        !          8898:        /atilde
        !          8899:        /adieresis
        !          8900:        /aring
        !          8901:        /ae
        !          8902:        /ccedilla
        !          8903:        /egrave
        !          8904:        /eacute
        !          8905:        /ecircumflex
        !          8906:        /edieresis
        !          8907:        /igrave
        !          8908:        /iacute
        !          8909:        /icircumflex
        !          8910:        /idieresis
        !          8911:        /eth                    % missing
        !          8912:        /ntilde
        !          8913:        /ograve
        !          8914:        /oacute
        !          8915:        /ocircumflex
        !          8916:        /otilde
        !          8917:        /odieresis
        !          8918:        /divide                 % missing
        !          8919:        /oslash
        !          8920:        /ugrave
        !          8921:        /uacute
        !          8922:        /ucircumflex
        !          8923:        /udieresis
        !          8924:        /yacute                 % missing
        !          8925:        /thorn                  % missing
        !          8926:        /ydieresis
        !          8927: ] def
        !          8928: 
        !          8929: /NewFontDirectory FontDirectory maxlength dict def
        !          8930: 
        !          8931: %
        !          8932: % Apparently no guarantee findfont is defined in systemdict so the obvious
        !          8933: %
        !          8934: %      systemdict /findfont get exec
        !          8935: %
        !          8936: % can generate an error. So far the only exception is a VT600 (version 48.0).
        !          8937: %
        !          8938: 
        !          8939: userdict /@RealFindfont known not {
        !          8940:        userdict begin
        !          8941:                /@RealFindfont systemdict begin /findfont load end def
        !          8942:        end
        !          8943: } if
        !          8944: 
        !          8945: /findfont {
        !          8946:        dup NewFontDirectory exch known not {
        !          8947:                dup
        !          8948:                %dup systemdict /findfont get exec      % not always in systemdict
        !          8949:                dup userdict /@RealFindfont get exec
        !          8950:                dup /Encoding get StandardEncoding eq {
        !          8951:                        dup length dict begin
        !          8952:                                {1 index /FID ne {def}{pop pop} ifelse} forall
        !          8953:                                /Encoding ISOLatin1Encoding def
        !          8954:                                currentdict
        !          8955:                        end
        !          8956:                        /DummyFontName exch definefont
        !          8957:                } if
        !          8958:                NewFontDirectory 3 1 roll put
        !          8959:        } if
        !          8960:        NewFontDirectory exch get
        !          8961: } bind def
        !          8962: 
        !          8963: 0707070014231123321006440057030057030000010440200522627501000004200000001523post.src/psencoding/psencoding.sh#
        !          8964: # Trivial script for checking and setting the default PostScript font
        !          8965: # encoding. Changing the default assumes you can write in $POSTLIB.
        !          8966: # Available font encodings are files in $POSTLIB that end in .enc.
        !          8967: # The default is $POSTLIB/Default.enc.
        !          8968: #
        !          8969: 
        !          8970: POSTLIB=/usr/lib/postscript
        !          8971: DEFAULT=Default.enc
        !          8972: CURRENTDEFAULT=
        !          8973: 
        !          8974: case "$1" in
        !          8975:     Default) ;;
        !          8976:  
        !          8977:     Standard)
        !          8978:        rm -f $POSTLIB/$DEFAULT;;
        !          8979: 
        !          8980:     "") cd $POSTLIB
        !          8981:        for i in *.enc; do
        !          8982:            if [ -f "$i" -a "$i" != $DEFAULT ]; then
        !          8983:                NAME=`echo $i | sed s/\\.enc//`
        !          8984:                if cmp $i $DEFAULT >/dev/null 2>/dev/null; then
        !          8985:                    CURRENTDEFAULT=$NAME
        !          8986:                fi
        !          8987:                echo $NAME
        !          8988:            fi
        !          8989:        done
        !          8990:        echo Standard
        !          8991:        echo "Default=${CURRENTDEFAULT:-Standard}";;
        !          8992: 
        !          8993:     *)  if [ -f "$POSTLIB/$1.enc" ]
        !          8994:            then rm -f $POSTLIB/$DEFAULT
        !          8995:                 ln $POSTLIB/$1.enc $POSTLIB/$DEFAULT
        !          8996:            else echo "unrecognized encoding name $1" >&2
        !          8997:        fi;;
        !          8998: esac
        !          8999: 
        !          9000: 0707070014231122361006400057030057030000010446000522633077700004200000003265post.src/psencoding/psencoding.mkMAKE=/bin/make
        !          9001: MAKEFILE=psencoding.mk
        !          9002: 
        !          9003: OWNER=bin
        !          9004: GROUP=bin
        !          9005: 
        !          9006: MAN1DIR=/tmp
        !          9007: MAN5DIR=/usr/man/p_man/man5
        !          9008: POSTLIB=/usr/lib/postscript
        !          9009: POSTBIN=/usr/bin/postscript
        !          9010: 
        !          9011: all : psencoding
        !          9012: 
        !          9013: install : all
        !          9014:        @if [ ! -d "$(POSTBIN)" ]; then \
        !          9015:            mkdir $(POSTBIN); \
        !          9016:            chmod 755 $(POSTBIN); \
        !          9017:            chgrp $(GROUP) $(POSTBIN); \
        !          9018:            chown $(OWNER) $(POSTBIN); \
        !          9019:        fi
        !          9020:        @if [ ! -d "$(POSTLIB)" ]; then \
        !          9021:            mkdir $(POSTLIB); \
        !          9022:            chmod 755 $(POSTLIB); \
        !          9023:            chgrp $(GROUP) $(POSTLIB); \
        !          9024:            chown $(OWNER) $(POSTLIB); \
        !          9025:        fi
        !          9026:        cp psencoding $(POSTBIN)/psencoding
        !          9027:        @chmod 755 $(POSTBIN)/psencoding
        !          9028:        @chgrp $(GROUP) $(POSTBIN)/psencoding
        !          9029:        @chown $(OWNER) $(POSTBIN)/psencoding
        !          9030:        cp Latin1.enc $(POSTLIB)/Latin1.enc
        !          9031:        @chmod 644 $(POSTLIB)/Latin1.enc
        !          9032:        @chgrp $(GROUP) $(POSTLIB)/Latin1.enc
        !          9033:        @chown $(OWNER) $(POSTLIB)/Latin1.enc
        !          9034:        cp UTF.enc $(POSTLIB)/UTF.enc
        !          9035:        @chmod 644 $(POSTLIB)/UTF.enc
        !          9036:        @chgrp $(GROUP) $(POSTLIB)/UTF.enc
        !          9037:        @chown $(OWNER) $(POSTLIB)/UTF.enc
        !          9038:        cp psencoding.1 $(MAN1DIR)/psencoding.1
        !          9039:        @chmod 644 $(MAN1DIR)/psencoding.1
        !          9040:        @chgrp $(GROUP) $(MAN1DIR)/psencoding.1
        !          9041:        @chown $(OWNER) $(MAN1DIR)/psencoding.1
        !          9042: 
        !          9043: clean :
        !          9044: 
        !          9045: clobber : clean
        !          9046:        rm -f psencoding
        !          9047: 
        !          9048: psencoding : psencoding.sh
        !          9049:        sed "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" psencoding.sh >psencoding
        !          9050:        @chmod 755 psencoding
        !          9051: 
        !          9052: changes :
        !          9053:        @trap "" 1 2 3 15; \
        !          9054:        sed \
        !          9055:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          9056:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          9057:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
        !          9058:            -e "s'^MAN5DIR=.*'MAN5DIR=$(MAN5DIR)'" \
        !          9059:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
        !          9060:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
        !          9061:        $(MAKEFILE) >XXX.mk; \
        !          9062:        mv XXX.mk $(MAKEFILE); \
        !          9063:        sed \
        !          9064:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
        !          9065:        psencoding.1 >XXX.1; \
        !          9066:        mv XXX.1 psencoding.1
        !          9067: 
        !          9068: 0707070014231122321006400057030057030000010370160522633100000004100000001571post.src/psencoding/psencoding.1.ds dQ /usr/lib/postscript
        !          9069: .TH PSENCODING 1 "DWB 3.2"
        !          9070: .SH NAME
        !          9071: .B psencoding
        !          9072: \- check or set the default PostScript font encoding
        !          9073: .SH SYNOPSIS
        !          9074: \*(mBpsencoding\f1
        !          9075: .OP "" encoding []
        !          9076: .SH DESCRIPTION
        !          9077: .B psencoding
        !          9078: sets the default font Encoding used by many PostScript translators to
        !          9079: .IR encoding .
        !          9080: No arguments means list the available choices and the current default.
        !          9081: .PP
        !          9082: PostScript encoding files are in directory
        !          9083: .MR \*(dQ .
        !          9084: Many existing PostScript translators include the encoding file
        !          9085: .MR Default.enc ,
        !          9086: if it exists, in the output they generate.
        !          9087: .PP
        !          9088: Requesting
        !          9089: .I encoding
        !          9090: as the default means link the file
        !          9091: .MI \*(dQ/ encoding .enc
        !          9092: to the file
        !          9093: .MR \*(dQ/Default.enc .
        !          9094: Changing the default encoding assumes you can write in directory
        !          9095: .MR \*(dQ .
        !          9096: .SH FILES
        !          9097: .MW \*(dQ/Default.enc
        !          9098: .br
        !          9099: .MW \*(dQ/*.enc
        !          9100: .SH SEE ALSO
        !          9101: .BR buildtables (1),
        !          9102: .BR dpost (1),
        !          9103: .BR postprint (1),
        !          9104: .BR trofftable (1)
        !          9105: 0707070014231123351006440057030057030000010440400522627501000003400000010340post.src/psencoding/UTF.enc%
        !          9106: % Encoding vector, operator and procedure redefinitions for Plan 9 UTF
        !          9107: % encoding. Prologues are expected to take steps to ensure operator
        !          9108: % redefinitions given here are actually used. Current implementation
        !          9109: % assumes UTF byte streams that represent ASCII or Latin1 text.
        !          9110: %
        !          9111: 
        !          9112: /UTFLatin1Encoding [
        !          9113:        /.notdef
        !          9114:        /.notdef
        !          9115:        /.notdef
        !          9116:        /.notdef
        !          9117:        /.notdef
        !          9118:        /.notdef
        !          9119:        /.notdef
        !          9120:        /.notdef
        !          9121:        /.notdef
        !          9122:        /.notdef
        !          9123:        /.notdef
        !          9124:        /.notdef
        !          9125:        /.notdef
        !          9126:        /.notdef
        !          9127:        /.notdef
        !          9128:        /.notdef
        !          9129:        /.notdef
        !          9130:        /.notdef
        !          9131:        /.notdef
        !          9132:        /.notdef
        !          9133:        /.notdef
        !          9134:        /.notdef
        !          9135:        /.notdef
        !          9136:        /.notdef
        !          9137:        /.notdef
        !          9138:        /.notdef
        !          9139:        /.notdef
        !          9140:        /.notdef
        !          9141:        /.notdef
        !          9142:        /.notdef
        !          9143:        /.notdef
        !          9144:        /.notdef
        !          9145:        /space
        !          9146:        /exclam
        !          9147:        /quotedbl
        !          9148:        /numbersign
        !          9149:        /dollar
        !          9150:        /percent
        !          9151:        /ampersand
        !          9152:        /quoteright
        !          9153:        /parenleft
        !          9154:        /parenright
        !          9155:        /asterisk
        !          9156:        /plus
        !          9157:        /comma
        !          9158:        /minus
        !          9159:        /period
        !          9160:        /slash
        !          9161:        /zero
        !          9162:        /one
        !          9163:        /two
        !          9164:        /three
        !          9165:        /four
        !          9166:        /five
        !          9167:        /six
        !          9168:        /seven
        !          9169:        /eight
        !          9170:        /nine
        !          9171:        /colon
        !          9172:        /semicolon
        !          9173:        /less
        !          9174:        /equal
        !          9175:        /greater
        !          9176:        /question
        !          9177:        /at
        !          9178:        /A
        !          9179:        /B
        !          9180:        /C
        !          9181:        /D
        !          9182:        /E
        !          9183:        /F
        !          9184:        /G
        !          9185:        /H
        !          9186:        /I
        !          9187:        /J
        !          9188:        /K
        !          9189:        /L
        !          9190:        /M
        !          9191:        /N
        !          9192:        /O
        !          9193:        /P
        !          9194:        /Q
        !          9195:        /R
        !          9196:        /S
        !          9197:        /T
        !          9198:        /U
        !          9199:        /V
        !          9200:        /W
        !          9201:        /X
        !          9202:        /Y
        !          9203:        /Z
        !          9204:        /bracketleft
        !          9205:        /backslash
        !          9206:        /bracketright
        !          9207:        /asciicircum
        !          9208:        /underscore
        !          9209:        /quoteleft
        !          9210:        /a
        !          9211:        /b
        !          9212:        /c
        !          9213:        /d
        !          9214:        /e
        !          9215:        /f
        !          9216:        /g
        !          9217:        /h
        !          9218:        /i
        !          9219:        /j
        !          9220:        /k
        !          9221:        /l
        !          9222:        /m
        !          9223:        /n
        !          9224:        /o
        !          9225:        /p
        !          9226:        /q
        !          9227:        /r
        !          9228:        /s
        !          9229:        /t
        !          9230:        /u
        !          9231:        /v
        !          9232:        /w
        !          9233:        /x
        !          9234:        /y
        !          9235:        /z
        !          9236:        /braceleft
        !          9237:        /bar
        !          9238:        /braceright
        !          9239:        /asciitilde
        !          9240:        /.notdef
        !          9241:        /.notdef
        !          9242:        /.notdef
        !          9243:        /.notdef
        !          9244:        /.notdef
        !          9245:        /.notdef
        !          9246:        /.notdef
        !          9247:        /.notdef
        !          9248:        /.notdef
        !          9249:        /.notdef
        !          9250:        /.notdef
        !          9251:        /.notdef
        !          9252:        /.notdef
        !          9253:        /.notdef
        !          9254:        /.notdef
        !          9255:        /.notdef
        !          9256:        /.notdef
        !          9257:        /dotlessi
        !          9258:        /grave
        !          9259:        /acute
        !          9260:        /circumflex
        !          9261:        /tilde
        !          9262:        /macron
        !          9263:        /breve
        !          9264:        /dotaccent
        !          9265:        /dieresis
        !          9266:        /.notdef
        !          9267:        /ring
        !          9268:        /cedilla
        !          9269:        /.notdef
        !          9270:        /hungarumlaut
        !          9271:        /ogonek
        !          9272:        /caron
        !          9273:        /.notdef                % was space
        !          9274:        /exclamdown
        !          9275:        /cent
        !          9276:        /sterling
        !          9277:        /currency
        !          9278:        /yen
        !          9279:        /brokenbar
        !          9280:        /section
        !          9281:        /dieresis
        !          9282:        /copyright
        !          9283:        /ordfeminine
        !          9284:        /guillemotleft
        !          9285:        /logicalnot
        !          9286:        /hyphen
        !          9287:        /registered
        !          9288:        /macron
        !          9289:        /degree
        !          9290:        /plusminus
        !          9291:        /twosuperior
        !          9292:        /threesuperior
        !          9293:        /acute
        !          9294:        /mu
        !          9295:        /paragraph
        !          9296:        /periodcentered
        !          9297:        /cedilla
        !          9298:        /onesuperior
        !          9299:        /ordmasculine
        !          9300:        /guillemotright
        !          9301:        /onequarter
        !          9302:        /onehalf
        !          9303:        /threequarters
        !          9304:        /questiondown
        !          9305:        /Agrave
        !          9306:        /Aacute
        !          9307:        /Acircumflex
        !          9308:        /Atilde
        !          9309:        /Adieresis
        !          9310:        /Aring
        !          9311:        /AE
        !          9312:        /Ccedilla
        !          9313:        /Egrave
        !          9314:        /Eacute
        !          9315:        /Ecircumflex
        !          9316:        /Edieresis
        !          9317:        /Igrave
        !          9318:        /Iacute
        !          9319:        /Icircumflex
        !          9320:        /Idieresis
        !          9321:        /Eth
        !          9322:        /Ntilde
        !          9323:        /Ograve
        !          9324:        /Oacute
        !          9325:        /Ocircumflex
        !          9326:        /Otilde
        !          9327:        /Odieresis
        !          9328:        /multiply
        !          9329:        /Oslash
        !          9330:        /Ugrave
        !          9331:        /Uacute
        !          9332:        /Ucircumflex
        !          9333:        /Udieresis
        !          9334:        /Yacute
        !          9335:        /Thorn
        !          9336:        /germandbls
        !          9337:        /agrave
        !          9338:        /aacute
        !          9339:        /acircumflex
        !          9340:        /atilde
        !          9341:        /adieresis
        !          9342:        /aring
        !          9343:        /ae
        !          9344:        /ccedilla
        !          9345:        /egrave
        !          9346:        /eacute
        !          9347:        /ecircumflex
        !          9348:        /edieresis
        !          9349:        /igrave
        !          9350:        /iacute
        !          9351:        /icircumflex
        !          9352:        /idieresis
        !          9353:        /eth
        !          9354:        /ntilde
        !          9355:        /ograve
        !          9356:        /oacute
        !          9357:        /ocircumflex
        !          9358:        /otilde
        !          9359:        /odieresis
        !          9360:        /divide
        !          9361:        /oslash
        !          9362:        /ugrave
        !          9363:        /uacute
        !          9364:        /ucircumflex
        !          9365:        /udieresis
        !          9366:        /yacute
        !          9367:        /thorn
        !          9368:        /ydieresis
        !          9369: ] def
        !          9370: 
        !          9371: /NewFontDirectory FontDirectory maxlength dict def
        !          9372: 
        !          9373: %
        !          9374: % Apparently no guarantee findfont is defined in systemdict so the obvious
        !          9375: %
        !          9376: %      systemdict /findfont get exec
        !          9377: %
        !          9378: % can generate an error. So far the only exception is a VT600 (version 48.0).
        !          9379: %
        !          9380: 
        !          9381: userdict /@RealFindfont known not {
        !          9382:        userdict begin
        !          9383:                /@RealFindfont systemdict begin /findfont load end def
        !          9384:        end
        !          9385: } if
        !          9386: 
        !          9387: /findfont {
        !          9388:        dup NewFontDirectory exch known not {
        !          9389:                dup
        !          9390:                %dup systemdict /findfont get exec      % not always in systemdict
        !          9391:                dup userdict /@RealFindfont get exec
        !          9392:                dup /Encoding get StandardEncoding eq {
        !          9393:                        dup length 1 add dict begin
        !          9394:                                {1 index /FID ne {def}{pop pop} ifelse} forall
        !          9395:                                /Encoding UTFLatin1Encoding def
        !          9396:                                /Metrics 1 dict def
        !          9397:                                Metrics /.notdef 0 put
        !          9398:                                currentdict
        !          9399:                        end
        !          9400:                        /DummyFontName exch definefont
        !          9401:                } if
        !          9402:                NewFontDirectory 3 1 roll put
        !          9403:        } if
        !          9404:        NewFontDirectory exch get
        !          9405: } bind def
        !          9406: 
        !          9407: %
        !          9408: % Assume A0, except for A0A0 which is replaced by 20A0, can be ignored.
        !          9409: % Works with ASCII or Latin1 because A0 has been re-encoded as a zero
        !          9410: % width non-printing character. 
        !          9411: %
        !          9412: 
        !          9413: /UTFstring {
        !          9414:        dup {
        !          9415:                (\240\240) search {
        !          9416:                        pop
        !          9417:                        0 16#20 put
        !          9418:                }{pop exit} ifelse
        !          9419:        } loop
        !          9420: } bind def
        !          9421: 
        !          9422: /ashow {mark 4 1 roll UTFstring //ashow cvx exec cleartomark} bind def
        !          9423: /awidthshow {mark 7 1 roll UTFstring //awidthshow cvx exec cleartomark} bind def
        !          9424: /show {mark exch UTFstring //show cvx exec cleartomark} bind def
        !          9425: /stringwidth {UTFstring //stringwidth cvx exec} bind def
        !          9426: /widthshow {mark 5 1 roll UTFstring //widthshow cvx exec cleartomark} bind def
        !          9427: 
        !          9428: %
        !          9429: % kshow is harder - stack can't change because of the procedure.
        !          9430: %
        !          9431: 
        !          9432: /kshow dup load type /operatortype eq
        !          9433:        {{UTFstring kshow} bind}
        !          9434:        {{UTFstring //kshow cvx exec} bind}
        !          9435: ifelse def
        !          9436: 
        !          9437: 0707070014231216500407550057030057030000030636470522633073600002100000000000post.src/devpost0707070014231216511006440057030057030000010637600522627501000002400000003371post.src/devpost/ABname AB
        !          9438: fontname AvantGarde-Demi
        !          9439: named in prologue
        !          9440: ligatures fi fl 0
        !          9441: spacewidth 28
        !          9442: charset
        !          9443: !      28      2       33
        !          9444: "      36      2       34
        !          9445: dq     "
        !          9446: #      60      2       35
        !          9447: $      56      2       36
        !          9448: %      86      2       37
        !          9449: &      68      2       38
        !          9450: '      28      2       39
        !          9451: (      38      3       40
        !          9452: )      38      3       41
        !          9453: *      44      2       42
        !          9454: +      60      0       43
        !          9455: ,      28      1       44
        !          9456: hy     42      0       45
        !          9457: -      "
        !          9458: .      28      0       46
        !          9459: /      46      3       47
        !          9460: 0      56      2       48
        !          9461: 1      56      2       49
        !          9462: 2      56      2       50
        !          9463: 3      56      2       51
        !          9464: 4      56      2       52
        !          9465: 5      56      2       53
        !          9466: 6      56      2       54
        !          9467: 7      56      2       55
        !          9468: 8      56      2       56
        !          9469: 9      56      2       57
        !          9470: :      28      0       58
        !          9471: ;      28      1       59
        !          9472: ---    60      0       60
        !          9473: =      60      0       61
        !          9474: ---    60      0       62
        !          9475: ?      56      2       63
        !          9476: @      74      2       64
        !          9477: A      74      2       65
        !          9478: B      58      2       66
        !          9479: C      78      2       67
        !          9480: D      70      2       68
        !          9481: E      52      2       69
        !          9482: F      48      2       70
        !          9483: G      84      2       71
        !          9484: H      68      2       72
        !          9485: I      28      2       73
        !          9486: J      48      2       74
        !          9487: K      62      2       75
        !          9488: L      44      2       76
        !          9489: M      90      2       77
        !          9490: N      74      2       78
        !          9491: O      84      2       79
        !          9492: P      56      2       80
        !          9493: Q      84      2       81
        !          9494: R      58      2       82
        !          9495: S      52      2       83
        !          9496: T      42      2       84
        !          9497: U      64      2       85
        !          9498: V      70      2       86
        !          9499: W      90      2       87
        !          9500: X      68      2       88
        !          9501: Y      62      2       89
        !          9502: Z      50      2       90
        !          9503: [      32      3       91
        !          9504: \      64      2       92
        !          9505: bs     "
        !          9506: ]      32      3       93
        !          9507: ---    60      2       94
        !          9508: ---    50      1       95
        !          9509: `      28      2       96
        !          9510: a      66      0       97
        !          9511: b      66      2       98
        !          9512: c      64      0       99
        !          9513: d      66      2       100
        !          9514: e      64      0       101
        !          9515: f      28      2       102
        !          9516: g      66      1       103
        !          9517: h      60      2       104
        !          9518: i      24      2       105
        !          9519: j      26      3       106
        !          9520: k      58      2       107
        !          9521: l      24      2       108
        !          9522: m      94      0       109
        !          9523: n      60      0       110
        !          9524: o      64      0       111
        !          9525: p      66      1       112
        !          9526: q      66      1       113
        !          9527: r      32      0       114
        !          9528: s      44      0       115
        !          9529: t      30      2       116
        !          9530: u      60      0       117
        !          9531: v      56      0       118
        !          9532: w      80      0       119
        !          9533: x      56      0       120
        !          9534: y      58      1       121
        !          9535: z      46      0       122
        !          9536: {      34      3       123
        !          9537: ---    60      2       124
        !          9538: }      34      3       125
        !          9539: ---    60      0       126
        !          9540: !!     28      1       161
        !          9541: ct     56      2       162
        !          9542: ps     56      2       163
        !          9543: fr     16      2       164
        !          9544: yn     56      2       165
        !          9545: fn     56      3       166
        !          9546: sc     56      3       167
        !          9547: cr     60      2       168
        !          9548: ---    22      2       169
        !          9549: ``     48      2       170
        !          9550: ---    46      0       171
        !          9551: ---    24      0       172
        !          9552: ---    24      0       173
        !          9553: fi     52      2       174
        !          9554: fl     52      2       175
        !          9555: en     50      0       177
        !          9556: \-     "
        !          9557: dg     56      3       178
        !          9558: dd     56      3       179
        !          9559: ---    28      0       180
        !          9560: pg     60      3       182
        !          9561: ---    60      0       183
        !          9562: ---    28      1       184
        !          9563: ---    48      1       185
        !          9564: ''     48      2       186
        !          9565: ---    46      0       187
        !          9566: ---    100     0       188
        !          9567: ---    128     2       189
        !          9568: ??     56      1       191
        !          9569: ga     42      2       193
        !          9570: \`     "
        !          9571: aa     42      2       194
        !          9572: \'     "
        !          9573: ^a     54      2       195
        !          9574: ^      "
        !          9575: ~a     48      2       196
        !          9576: ~      "
        !          9577: -a     42      2       197
        !          9578: Ua     48      2       198
        !          9579: .a     28      2       199
        !          9580: :a     50      2       200
        !          9581: oa     36      2       202
        !          9582: ,a     34      1       203
        !          9583: "a     70      2       205
        !          9584: Ca     34      1       206
        !          9585: va     54      2       207
        !          9586: em     100     0       208
        !          9587: ---    90      2       225
        !          9588: ---    36      2       227
        !          9589: ---    48      2       232
        !          9590: ---    84      2       233
        !          9591: ---    106     2       234
        !          9592: ---    36      2       235
        !          9593: ---    108     0       241
        !          9594: ---    24      0       245
        !          9595: ---    32      2       248
        !          9596: ---    66      0       249
        !          9597: ---    108     0       250
        !          9598: ---    60      2       251
        !          9599: 0707070014231216521006440057030057030000010637620522627501000002400000003400post.src/devpost/AIname AI
        !          9600: fontname AvantGarde-BookOblique
        !          9601: named in prologue
        !          9602: ligatures fi fl 0
        !          9603: spacewidth 28
        !          9604: charset
        !          9605: !      29      2       33
        !          9606: "      31      2       34
        !          9607: dq     "
        !          9608: #      72      2       35
        !          9609: $      55      2       36
        !          9610: %      77      2       37
        !          9611: &      76      2       38
        !          9612: '      35      2       39
        !          9613: (      37      3       40
        !          9614: )      37      3       41
        !          9615: *      42      2       42
        !          9616: +      61      0       43
        !          9617: ,      28      0       44
        !          9618: hy     33      0       45
        !          9619: -      "
        !          9620: .      28      0       46
        !          9621: /      44      3       47
        !          9622: 0      55      2       48
        !          9623: 1      55      2       49
        !          9624: 2      55      2       50
        !          9625: 3      55      2       51
        !          9626: 4      55      2       52
        !          9627: 5      55      2       53
        !          9628: 6      55      2       54
        !          9629: 7      55      2       55
        !          9630: 8      55      2       56
        !          9631: 9      55      2       57
        !          9632: :      28      0       58
        !          9633: ;      28      0       59
        !          9634: ---    61      0       60
        !          9635: =      61      0       61
        !          9636: ---    61      0       62
        !          9637: ?      59      2       63
        !          9638: @      87      2       64
        !          9639: A      74      2       65
        !          9640: B      57      2       66
        !          9641: C      81      2       67
        !          9642: D      74      2       68
        !          9643: E      54      2       69
        !          9644: F      49      2       70
        !          9645: G      87      2       71
        !          9646: H      68      2       72
        !          9647: I      23      2       73
        !          9648: J      48      2       74
        !          9649: K      59      2       75
        !          9650: L      46      2       76
        !          9651: M      92      2       77
        !          9652: N      74      2       78
        !          9653: O      87      2       79
        !          9654: P      59      2       80
        !          9655: Q      87      2       81
        !          9656: R      61      2       82
        !          9657: S      50      2       83
        !          9658: T      43      2       84
        !          9659: U      66      2       85
        !          9660: V      70      2       86
        !          9661: W      96      2       87
        !          9662: X      61      2       88
        !          9663: Y      59      2       89
        !          9664: Z      48      2       90
        !          9665: [      35      3       91
        !          9666: \      61      2       92
        !          9667: bs     "
        !          9668: ]      35      3       93
        !          9669: ---    67      2       94
        !          9670: ---    50      1       95
        !          9671: `      35      2       96
        !          9672: a      68      0       97
        !          9673: b      68      2       98
        !          9674: c      65      0       99
        !          9675: d      69      2       100
        !          9676: e      65      0       101
        !          9677: f      31      2       102
        !          9678: g      67      1       103
        !          9679: h      61      2       104
        !          9680: i      20      2       105
        !          9681: j      20      3       106
        !          9682: k      50      2       107
        !          9683: l      20      2       108
        !          9684: m      94      0       109
        !          9685: n      61      0       110
        !          9686: o      66      0       111
        !          9687: p      68      1       112
        !          9688: q      68      1       113
        !          9689: r      30      0       114
        !          9690: s      39      0       115
        !          9691: t      34      2       116
        !          9692: u      61      0       117
        !          9693: v      55      0       118
        !          9694: w      83      0       119
        !          9695: x      48      0       120
        !          9696: y      54      1       121
        !          9697: z      42      0       122
        !          9698: {      35      3       123
        !          9699: ---    67      2       124
        !          9700: }      35      3       125
        !          9701: ---    61      0       126
        !          9702: !!     29      1       161
        !          9703: ct     55      2       162
        !          9704: ps     55      2       163
        !          9705: fr     17      2       164
        !          9706: yn     55      2       165
        !          9707: fn     55      3       166
        !          9708: sc     61      3       167
        !          9709: cr     55      0       168
        !          9710: ---    20      2       169
        !          9711: ``     50      2       170
        !          9712: ---    42      0       171
        !          9713: ---    25      0       172
        !          9714: ---    25      0       173
        !          9715: fi     49      2       174
        !          9716: fl     49      2       175
        !          9717: en     50      0       177
        !          9718: \-     "
        !          9719: dg     55      3       178
        !          9720: dd     55      3       179
        !          9721: ---    28      0       180
        !          9722: pg     56      3       182
        !          9723: ---    61      0       183
        !          9724: ---    35      0       184
        !          9725: ---    50      0       185
        !          9726: ''     48      2       186
        !          9727: ---    42      0       187
        !          9728: ---    100     0       188
        !          9729: ---    117     2       189
        !          9730: ??     59      1       191
        !          9731: ga     38      2       193
        !          9732: \`     "
        !          9733: aa     38      2       194
        !          9734: \'     "
        !          9735: ^a     50      2       195
        !          9736: ^      "
        !          9737: ~a     44      2       196
        !          9738: ~      "
        !          9739: -a     49      2       197
        !          9740: Ua     45      2       198
        !          9741: .a     22      2       199
        !          9742: :a     37      2       200
        !          9743: oa     33      2       202
        !          9744: ,a     32      1       203
        !          9745: "a     55      2       205
        !          9746: Ca     30      1       206
        !          9747: va     50      2       207
        !          9748: em     100     0       208
        !          9749: ---    99      2       225
        !          9750: ---    37      2       227
        !          9751: ---    52      2       232
        !          9752: ---    87      2       233
        !          9753: ---    119     2       234
        !          9754: ---    37      2       235
        !          9755: ---    116     0       241
        !          9756: ---    20      0       245
        !          9757: ---    30      2       248
        !          9758: ---    65      0       249
        !          9759: ---    114     0       250
        !          9760: ---    55      2       251
        !          9761: 0707070014231216531006440057030057030000010637640522627501000002400000003371post.src/devpost/ARname AR
        !          9762: fontname AvantGarde-Book
        !          9763: named in prologue
        !          9764: ligatures fi fl 0
        !          9765: spacewidth 28
        !          9766: charset
        !          9767: !      29      2       33
        !          9768: "      31      2       34
        !          9769: dq     "
        !          9770: #      72      2       35
        !          9771: $      55      2       36
        !          9772: %      77      2       37
        !          9773: &      76      2       38
        !          9774: '      35      2       39
        !          9775: (      37      3       40
        !          9776: )      37      3       41
        !          9777: *      42      2       42
        !          9778: +      61      0       43
        !          9779: ,      28      0       44
        !          9780: hy     33      0       45
        !          9781: -      "
        !          9782: .      28      0       46
        !          9783: /      44      3       47
        !          9784: 0      55      2       48
        !          9785: 1      55      2       49
        !          9786: 2      55      2       50
        !          9787: 3      55      2       51
        !          9788: 4      55      2       52
        !          9789: 5      55      2       53
        !          9790: 6      55      2       54
        !          9791: 7      55      2       55
        !          9792: 8      55      2       56
        !          9793: 9      55      2       57
        !          9794: :      28      0       58
        !          9795: ;      28      0       59
        !          9796: ---    61      0       60
        !          9797: =      61      0       61
        !          9798: ---    61      0       62
        !          9799: ?      59      2       63
        !          9800: @      87      2       64
        !          9801: A      74      2       65
        !          9802: B      57      2       66
        !          9803: C      81      2       67
        !          9804: D      74      2       68
        !          9805: E      54      2       69
        !          9806: F      49      2       70
        !          9807: G      87      2       71
        !          9808: H      68      2       72
        !          9809: I      23      2       73
        !          9810: J      48      2       74
        !          9811: K      59      2       75
        !          9812: L      46      2       76
        !          9813: M      92      2       77
        !          9814: N      74      2       78
        !          9815: O      87      2       79
        !          9816: P      59      2       80
        !          9817: Q      87      2       81
        !          9818: R      61      2       82
        !          9819: S      50      2       83
        !          9820: T      43      2       84
        !          9821: U      66      2       85
        !          9822: V      70      2       86
        !          9823: W      96      2       87
        !          9824: X      61      2       88
        !          9825: Y      59      2       89
        !          9826: Z      48      2       90
        !          9827: [      35      3       91
        !          9828: \      61      2       92
        !          9829: bs     "
        !          9830: ]      35      3       93
        !          9831: ---    67      2       94
        !          9832: ---    50      1       95
        !          9833: `      35      2       96
        !          9834: a      68      0       97
        !          9835: b      68      2       98
        !          9836: c      65      0       99
        !          9837: d      69      2       100
        !          9838: e      65      0       101
        !          9839: f      31      2       102
        !          9840: g      67      1       103
        !          9841: h      61      2       104
        !          9842: i      20      2       105
        !          9843: j      20      3       106
        !          9844: k      50      2       107
        !          9845: l      20      2       108
        !          9846: m      94      0       109
        !          9847: n      61      0       110
        !          9848: o      66      0       111
        !          9849: p      68      1       112
        !          9850: q      68      1       113
        !          9851: r      30      0       114
        !          9852: s      39      0       115
        !          9853: t      34      2       116
        !          9854: u      61      0       117
        !          9855: v      55      0       118
        !          9856: w      83      0       119
        !          9857: x      48      0       120
        !          9858: y      54      1       121
        !          9859: z      42      0       122
        !          9860: {      35      3       123
        !          9861: ---    67      2       124
        !          9862: }      35      3       125
        !          9863: ---    61      0       126
        !          9864: !!     29      1       161
        !          9865: ct     55      2       162
        !          9866: ps     55      2       163
        !          9867: fr     17      2       164
        !          9868: yn     55      2       165
        !          9869: fn     55      3       166
        !          9870: sc     61      3       167
        !          9871: cr     55      0       168
        !          9872: ---    20      2       169
        !          9873: ``     50      2       170
        !          9874: ---    42      0       171
        !          9875: ---    25      0       172
        !          9876: ---    25      0       173
        !          9877: fi     49      2       174
        !          9878: fl     49      2       175
        !          9879: en     50      0       177
        !          9880: \-     "
        !          9881: dg     55      3       178
        !          9882: dd     55      3       179
        !          9883: ---    28      0       180
        !          9884: pg     56      3       182
        !          9885: ---    61      0       183
        !          9886: ---    35      0       184
        !          9887: ---    50      0       185
        !          9888: ''     48      2       186
        !          9889: ---    42      0       187
        !          9890: ---    100     0       188
        !          9891: ---    117     2       189
        !          9892: ??     59      1       191
        !          9893: ga     38      2       193
        !          9894: \`     "
        !          9895: aa     38      2       194
        !          9896: \'     "
        !          9897: ^a     50      2       195
        !          9898: ^      "
        !          9899: ~a     44      2       196
        !          9900: ~      "
        !          9901: -a     49      2       197
        !          9902: Ua     45      2       198
        !          9903: .a     22      2       199
        !          9904: :a     37      2       200
        !          9905: oa     33      2       202
        !          9906: ,a     32      1       203
        !          9907: "a     55      2       205
        !          9908: Ca     30      1       206
        !          9909: va     50      2       207
        !          9910: em     100     0       208
        !          9911: ---    99      2       225
        !          9912: ---    37      2       227
        !          9913: ---    52      2       232
        !          9914: ---    87      2       233
        !          9915: ---    119     2       234
        !          9916: ---    37      2       235
        !          9917: ---    116     0       241
        !          9918: ---    20      0       245
        !          9919: ---    30      2       248
        !          9920: ---    65      0       249
        !          9921: ---    114     0       250
        !          9922: ---    55      2       251
        !          9923: 0707070014231216541006440057030057030000010637660522627501000002400000003400post.src/devpost/AXname AX
        !          9924: fontname AvantGarde-DemiOblique
        !          9925: named in prologue
        !          9926: ligatures fi fl 0
        !          9927: spacewidth 28
        !          9928: charset
        !          9929: !      28      2       33
        !          9930: "      36      2       34
        !          9931: dq     "
        !          9932: #      60      2       35
        !          9933: $      56      2       36
        !          9934: %      86      2       37
        !          9935: &      68      2       38
        !          9936: '      28      2       39
        !          9937: (      38      3       40
        !          9938: )      38      3       41
        !          9939: *      44      2       42
        !          9940: +      60      0       43
        !          9941: ,      28      1       44
        !          9942: hy     42      0       45
        !          9943: -      "
        !          9944: .      28      0       46
        !          9945: /      46      3       47
        !          9946: 0      56      2       48
        !          9947: 1      56      2       49
        !          9948: 2      56      2       50
        !          9949: 3      56      2       51
        !          9950: 4      56      2       52
        !          9951: 5      56      2       53
        !          9952: 6      56      2       54
        !          9953: 7      56      2       55
        !          9954: 8      56      2       56
        !          9955: 9      56      2       57
        !          9956: :      28      0       58
        !          9957: ;      28      1       59
        !          9958: ---    60      0       60
        !          9959: =      60      0       61
        !          9960: ---    60      0       62
        !          9961: ?      56      2       63
        !          9962: @      74      2       64
        !          9963: A      74      2       65
        !          9964: B      58      2       66
        !          9965: C      78      2       67
        !          9966: D      70      2       68
        !          9967: E      52      2       69
        !          9968: F      48      2       70
        !          9969: G      84      2       71
        !          9970: H      68      2       72
        !          9971: I      28      2       73
        !          9972: J      48      2       74
        !          9973: K      62      2       75
        !          9974: L      44      2       76
        !          9975: M      90      2       77
        !          9976: N      74      2       78
        !          9977: O      84      2       79
        !          9978: P      56      2       80
        !          9979: Q      84      2       81
        !          9980: R      58      2       82
        !          9981: S      52      2       83
        !          9982: T      42      2       84
        !          9983: U      64      2       85
        !          9984: V      70      2       86
        !          9985: W      90      2       87
        !          9986: X      68      2       88
        !          9987: Y      62      2       89
        !          9988: Z      50      2       90
        !          9989: [      32      3       91
        !          9990: \      64      2       92
        !          9991: bs     "
        !          9992: ]      32      3       93
        !          9993: ---    60      2       94
        !          9994: ---    50      1       95
        !          9995: `      28      2       96
        !          9996: a      66      0       97
        !          9997: b      66      2       98
        !          9998: c      64      0       99
        !          9999: d      66      2       100
        !          10000: e      64      0       101
        !          10001: f      28      2       102
        !          10002: g      66      1       103
        !          10003: h      60      2       104
        !          10004: i      24      2       105
        !          10005: j      26      3       106
        !          10006: k      58      2       107
        !          10007: l      24      2       108
        !          10008: m      94      0       109
        !          10009: n      60      0       110
        !          10010: o      64      0       111
        !          10011: p      66      1       112
        !          10012: q      66      1       113
        !          10013: r      32      0       114
        !          10014: s      44      0       115
        !          10015: t      30      2       116
        !          10016: u      60      0       117
        !          10017: v      56      0       118
        !          10018: w      80      0       119
        !          10019: x      56      0       120
        !          10020: y      58      1       121
        !          10021: z      46      0       122
        !          10022: {      34      3       123
        !          10023: ---    60      2       124
        !          10024: }      34      3       125
        !          10025: ---    60      0       126
        !          10026: !!     28      1       161
        !          10027: ct     56      2       162
        !          10028: ps     56      2       163
        !          10029: fr     16      2       164
        !          10030: yn     56      2       165
        !          10031: fn     56      3       166
        !          10032: sc     56      3       167
        !          10033: cr     60      2       168
        !          10034: ---    22      2       169
        !          10035: ``     48      2       170
        !          10036: ---    46      0       171
        !          10037: ---    24      0       172
        !          10038: ---    24      0       173
        !          10039: fi     52      2       174
        !          10040: fl     52      2       175
        !          10041: en     50      0       177
        !          10042: \-     "
        !          10043: dg     56      3       178
        !          10044: dd     56      3       179
        !          10045: ---    28      0       180
        !          10046: pg     60      3       182
        !          10047: ---    60      0       183
        !          10048: ---    28      1       184
        !          10049: ---    48      1       185
        !          10050: ''     48      2       186
        !          10051: ---    46      0       187
        !          10052: ---    100     0       188
        !          10053: ---    128     2       189
        !          10054: ??     56      1       191
        !          10055: ga     42      2       193
        !          10056: \`     "
        !          10057: aa     42      2       194
        !          10058: \'     "
        !          10059: ^a     54      2       195
        !          10060: ^      "
        !          10061: ~a     48      2       196
        !          10062: ~      "
        !          10063: -a     42      2       197
        !          10064: Ua     48      2       198
        !          10065: .a     28      2       199
        !          10066: :a     50      2       200
        !          10067: oa     36      2       202
        !          10068: ,a     34      1       203
        !          10069: "a     70      2       205
        !          10070: Ca     34      1       206
        !          10071: va     54      2       207
        !          10072: em     100     0       208
        !          10073: ---    90      2       225
        !          10074: ---    36      2       227
        !          10075: ---    48      2       232
        !          10076: ---    84      2       233
        !          10077: ---    106     2       234
        !          10078: ---    36      2       235
        !          10079: ---    108     0       241
        !          10080: ---    24      0       245
        !          10081: ---    32      2       248
        !          10082: ---    66      0       249
        !          10083: ---    108     0       250
        !          10084: ---    60      2       251
        !          10085: 0707070014231216551006440057030057030000010640200522627501000002300000003364post.src/devpost/Bname B
        !          10086: fontname Times-Bold
        !          10087: named in prologue
        !          10088: ligatures fi fl 0
        !          10089: spacewidth 25
        !          10090: charset
        !          10091: !      33      2       33
        !          10092: "      56      2       34
        !          10093: dq     "
        !          10094: #      50      2       35
        !          10095: $      50      3       36
        !          10096: %      100     2       37
        !          10097: &      83      2       38
        !          10098: '      33      2       39
        !          10099: (      33      3       40
        !          10100: )      33      3       41
        !          10101: *      50      2       42
        !          10102: +      57      0       43
        !          10103: ,      25      1       44
        !          10104: hy     33      0       45
        !          10105: -      "
        !          10106: .      25      0       46
        !          10107: /      28      2       47
        !          10108: 0      50      2       48
        !          10109: 1      50      2       49
        !          10110: 2      50      2       50
        !          10111: 3      50      2       51
        !          10112: 4      50      2       52
        !          10113: 5      50      2       53
        !          10114: 6      50      2       54
        !          10115: 7      50      2       55
        !          10116: 8      50      2       56
        !          10117: 9      50      2       57
        !          10118: :      33      0       58
        !          10119: ;      33      1       59
        !          10120: ---    57      0       60
        !          10121: =      57      0       61
        !          10122: ---    57      0       62
        !          10123: ?      50      2       63
        !          10124: @      93      3       64
        !          10125: A      72      2       65
        !          10126: B      67      2       66
        !          10127: C      72      2       67
        !          10128: D      72      2       68
        !          10129: E      67      2       69
        !          10130: F      61      2       70
        !          10131: G      78      2       71
        !          10132: H      78      2       72
        !          10133: I      39      2       73
        !          10134: J      50      2       74
        !          10135: K      78      2       75
        !          10136: L      67      2       76
        !          10137: M      94      2       77
        !          10138: N      72      2       78
        !          10139: O      78      2       79
        !          10140: P      61      2       80
        !          10141: Q      78      3       81
        !          10142: R      72      2       82
        !          10143: S      56      2       83
        !          10144: T      67      2       84
        !          10145: U      72      2       85
        !          10146: V      72      2       86
        !          10147: W      100     2       87
        !          10148: X      72      2       88
        !          10149: Y      72      2       89
        !          10150: Z      67      2       90
        !          10151: [      33      3       91
        !          10152: \      28      2       92
        !          10153: bs     "
        !          10154: ]      33      3       93
        !          10155: ---    58      2       94
        !          10156: ---    50      1       95
        !          10157: `      33      2       96
        !          10158: a      50      0       97
        !          10159: b      56      2       98
        !          10160: c      44      0       99
        !          10161: d      56      2       100
        !          10162: e      44      0       101
        !          10163: f      33      2       102
        !          10164: g      50      1       103
        !          10165: h      56      2       104
        !          10166: i      28      2       105
        !          10167: j      33      3       106
        !          10168: k      56      2       107
        !          10169: l      28      2       108
        !          10170: m      83      0       109
        !          10171: n      56      0       110
        !          10172: o      50      0       111
        !          10173: p      56      1       112
        !          10174: q      56      1       113
        !          10175: r      44      0       114
        !          10176: s      39      0       115
        !          10177: t      33      2       116
        !          10178: u      56      0       117
        !          10179: v      50      0       118
        !          10180: w      72      0       119
        !          10181: x      50      0       120
        !          10182: y      50      1       121
        !          10183: z      44      0       122
        !          10184: {      39      3       123
        !          10185: ---    22      3       124
        !          10186: }      39      3       125
        !          10187: ---    52      0       126
        !          10188: !!     33      1       161
        !          10189: ct     50      3       162
        !          10190: ps     50      2       163
        !          10191: fr     17      2       164
        !          10192: yn     50      2       165
        !          10193: fn     50      3       166
        !          10194: sc     50      3       167
        !          10195: cr     50      2       168
        !          10196: ---    28      2       169
        !          10197: ``     50      2       170
        !          10198: ---    50      0       171
        !          10199: ---    33      0       172
        !          10200: ---    33      0       173
        !          10201: fi     56      2       174
        !          10202: fl     56      2       175
        !          10203: en     50      0       177
        !          10204: \-     "
        !          10205: dg     50      3       178
        !          10206: dd     50      3       179
        !          10207: ---    25      0       180
        !          10208: pg     54      3       182
        !          10209: ---    35      0       183
        !          10210: ---    33      1       184
        !          10211: ---    50      1       185
        !          10212: ''     50      2       186
        !          10213: ---    50      0       187
        !          10214: ---    100     0       188
        !          10215: ---    100     2       189
        !          10216: ??     50      1       191
        !          10217: ga     33      2       193
        !          10218: \`     "
        !          10219: aa     33      2       194
        !          10220: \'     "
        !          10221: ^a     33      2       195
        !          10222: ^      "
        !          10223: ~a     33      2       196
        !          10224: ~      "
        !          10225: -a     33      2       197
        !          10226: Ua     33      2       198
        !          10227: .a     33      2       199
        !          10228: :a     33      2       200
        !          10229: oa     33      2       202
        !          10230: ,a     33      1       203
        !          10231: "a     33      2       205
        !          10232: Ca     33      1       206
        !          10233: va     33      2       207
        !          10234: em     100     0       208
        !          10235: ---    100     2       225
        !          10236: ---    30      2       227
        !          10237: ---    67      2       232
        !          10238: ---    78      2       233
        !          10239: ---    100     2       234
        !          10240: ---    33      2       235
        !          10241: ---    72      0       241
        !          10242: ---    28      0       245
        !          10243: ---    28      2       248
        !          10244: ---    50      2       249
        !          10245: ---    72      0       250
        !          10246: ---    56      2       251
        !          10247: 0707070014231216561006440057030057030000010640220522627501000002400000003367post.src/devpost/BIname BI
        !          10248: fontname Times-BoldItalic
        !          10249: named in prologue
        !          10250: ligatures fi fl 0
        !          10251: spacewidth 25
        !          10252: charset
        !          10253: !      39      2       33
        !          10254: "      56      2       34
        !          10255: dq     "
        !          10256: #      50      2       35
        !          10257: $      50      2       36
        !          10258: %      83      2       37
        !          10259: &      78      2       38
        !          10260: '      33      2       39
        !          10261: (      33      3       40
        !          10262: )      33      3       41
        !          10263: *      50      2       42
        !          10264: +      57      0       43
        !          10265: ,      25      1       44
        !          10266: hy     33      0       45
        !          10267: -      "
        !          10268: .      25      0       46
        !          10269: /      28      2       47
        !          10270: 0      50      2       48
        !          10271: 1      50      2       49
        !          10272: 2      50      2       50
        !          10273: 3      50      2       51
        !          10274: 4      50      2       52
        !          10275: 5      50      2       53
        !          10276: 6      50      2       54
        !          10277: 7      50      2       55
        !          10278: 8      50      2       56
        !          10279: 9      50      2       57
        !          10280: :      33      0       58
        !          10281: ;      33      1       59
        !          10282: ---    57      2       60
        !          10283: =      57      0       61
        !          10284: ---    57      2       62
        !          10285: ?      50      2       63
        !          10286: @      83      3       64
        !          10287: A      67      2       65
        !          10288: B      67      2       66
        !          10289: C      67      2       67
        !          10290: D      72      2       68
        !          10291: E      67      2       69
        !          10292: F      67      2       70
        !          10293: G      72      2       71
        !          10294: H      78      2       72
        !          10295: I      39      2       73
        !          10296: J      50      2       74
        !          10297: K      67      2       75
        !          10298: L      61      2       76
        !          10299: M      89      2       77
        !          10300: N      72      2       78
        !          10301: O      72      2       79
        !          10302: P      61      2       80
        !          10303: Q      72      3       81
        !          10304: R      67      2       82
        !          10305: S      56      2       83
        !          10306: T      61      2       84
        !          10307: U      72      2       85
        !          10308: V      67      2       86
        !          10309: W      89      2       87
        !          10310: X      67      2       88
        !          10311: Y      61      2       89
        !          10312: Z      61      2       90
        !          10313: [      33      3       91
        !          10314: \      28      2       92
        !          10315: bs     "
        !          10316: ]      33      3       93
        !          10317: ---    57      2       94
        !          10318: ---    50      1       95
        !          10319: `      33      2       96
        !          10320: a      50      0       97
        !          10321: b      50      2       98
        !          10322: c      44      0       99
        !          10323: d      50      2       100
        !          10324: e      44      0       101
        !          10325: f      33      3       102
        !          10326: g      50      1       103
        !          10327: h      56      2       104
        !          10328: i      28      2       105
        !          10329: j      28      3       106
        !          10330: k      50      2       107
        !          10331: l      28      2       108
        !          10332: m      78      0       109
        !          10333: n      56      0       110
        !          10334: o      50      0       111
        !          10335: p      50      1       112
        !          10336: q      50      1       113
        !          10337: r      39      0       114
        !          10338: s      39      0       115
        !          10339: t      28      2       116
        !          10340: u      56      0       117
        !          10341: v      44      0       118
        !          10342: w      67      0       119
        !          10343: x      50      0       120
        !          10344: y      44      1       121
        !          10345: z      39      0       122
        !          10346: {      35      3       123
        !          10347: ---    22      2       124
        !          10348: }      35      3       125
        !          10349: ---    57      0       126
        !          10350: !!     39      1       161
        !          10351: ct     50      3       162
        !          10352: ps     50      2       163
        !          10353: fr     17      2       164
        !          10354: yn     50      2       165
        !          10355: fn     50      3       166
        !          10356: sc     50      3       167
        !          10357: cr     50      2       168
        !          10358: ---    28      2       169
        !          10359: ``     50      2       170
        !          10360: ---    50      0       171
        !          10361: ---    33      0       172
        !          10362: ---    33      0       173
        !          10363: fi     56      3       174
        !          10364: fl     56      3       175
        !          10365: en     50      0       177
        !          10366: \-     "
        !          10367: dg     50      3       178
        !          10368: dd     50      3       179
        !          10369: ---    25      0       180
        !          10370: pg     50      3       182
        !          10371: ---    35      0       183
        !          10372: ---    33      1       184
        !          10373: ---    50      1       185
        !          10374: ''     50      2       186
        !          10375: ---    50      0       187
        !          10376: ---    100     0       188
        !          10377: ---    100     2       189
        !          10378: ??     50      1       191
        !          10379: ga     33      2       193
        !          10380: \`     "
        !          10381: aa     33      2       194
        !          10382: \'     "
        !          10383: ^a     33      2       195
        !          10384: ^      "
        !          10385: ~a     33      2       196
        !          10386: ~      "
        !          10387: -a     33      2       197
        !          10388: Ua     33      2       198
        !          10389: .a     33      2       199
        !          10390: :a     33      2       200
        !          10391: oa     33      2       202
        !          10392: ,a     33      1       203
        !          10393: "a     33      2       205
        !          10394: Ca     33      1       206
        !          10395: va     33      2       207
        !          10396: em     100     0       208
        !          10397: ---    94      2       225
        !          10398: ---    27      2       227
        !          10399: ---    61      2       232
        !          10400: ---    72      3       233
        !          10401: ---    94      2       234
        !          10402: ---    30      2       235
        !          10403: ---    72      0       241
        !          10404: ---    28      0       245
        !          10405: ---    28      2       248
        !          10406: ---    50      3       249
        !          10407: ---    72      0       250
        !          10408: ---    50      3       251
        !          10409: 0707070014231216571006440057030057030000010640240522627501000002400000003272post.src/devpost/CBname CB
        !          10410: fontname Courier-Bold
        !          10411: named in prologue
        !          10412: spacewidth 60
        !          10413: charset
        !          10414: !      60      2       33
        !          10415: "      60      2       34
        !          10416: dq     "
        !          10417: #      60      2       35
        !          10418: $      60      2       36
        !          10419: %      60      2       37
        !          10420: &      60      2       38
        !          10421: '      60      2       39
        !          10422: (      60      3       40
        !          10423: )      60      3       41
        !          10424: *      60      2       42
        !          10425: +      60      2       43
        !          10426: ,      60      1       44
        !          10427: hy     60      0       45
        !          10428: -      "
        !          10429: .      60      0       46
        !          10430: /      60      2       47
        !          10431: 0      60      2       48
        !          10432: 1      60      2       49
        !          10433: 2      60      2       50
        !          10434: 3      60      2       51
        !          10435: 4      60      2       52
        !          10436: 5      60      2       53
        !          10437: 6      60      2       54
        !          10438: 7      60      2       55
        !          10439: 8      60      2       56
        !          10440: 9      60      2       57
        !          10441: :      60      0       58
        !          10442: ;      60      0       59
        !          10443: <      60      2       60
        !          10444: =      60      0       61
        !          10445: >      60      2       62
        !          10446: ?      60      2       63
        !          10447: @      60      2       64
        !          10448: A      60      2       65
        !          10449: B      60      2       66
        !          10450: C      60      2       67
        !          10451: D      60      2       68
        !          10452: E      60      2       69
        !          10453: F      60      2       70
        !          10454: G      60      2       71
        !          10455: H      60      2       72
        !          10456: I      60      2       73
        !          10457: J      60      2       74
        !          10458: K      60      2       75
        !          10459: L      60      2       76
        !          10460: M      60      2       77
        !          10461: N      60      2       78
        !          10462: O      60      2       79
        !          10463: P      60      2       80
        !          10464: Q      60      3       81
        !          10465: R      60      2       82
        !          10466: S      60      2       83
        !          10467: T      60      2       84
        !          10468: U      60      2       85
        !          10469: V      60      2       86
        !          10470: W      60      2       87
        !          10471: X      60      2       88
        !          10472: Y      60      2       89
        !          10473: Z      60      2       90
        !          10474: [      60      3       91
        !          10475: \      60      2       92
        !          10476: bs     "
        !          10477: ]      60      3       93
        !          10478: ^      60      2       94
        !          10479: _      60      1       95
        !          10480: `      60      2       96
        !          10481: a      60      0       97
        !          10482: b      60      2       98
        !          10483: c      60      0       99
        !          10484: d      60      2       100
        !          10485: e      60      0       101
        !          10486: f      60      2       102
        !          10487: g      60      1       103
        !          10488: h      60      2       104
        !          10489: i      60      2       105
        !          10490: j      60      3       106
        !          10491: k      60      2       107
        !          10492: l      60      2       108
        !          10493: m      60      0       109
        !          10494: n      60      0       110
        !          10495: o      60      0       111
        !          10496: p      60      1       112
        !          10497: q      60      1       113
        !          10498: r      60      0       114
        !          10499: s      60      0       115
        !          10500: t      60      2       116
        !          10501: u      60      0       117
        !          10502: v      60      0       118
        !          10503: w      60      0       119
        !          10504: x      60      0       120
        !          10505: y      60      1       121
        !          10506: z      60      0       122
        !          10507: {      60      3       123
        !          10508: |      60      3       124
        !          10509: }      60      3       125
        !          10510: ~      60      0       126
        !          10511: !!     60      1       161
        !          10512: ct     60      2       162
        !          10513: ps     60      2       163
        !          10514: fr     60      2       164
        !          10515: yn     60      2       165
        !          10516: fn     60      2       166
        !          10517: sc     60      2       167
        !          10518: cr     60      2       168
        !          10519: ---    60      2       169
        !          10520: ``     60      2       170
        !          10521: ---    60      0       171
        !          10522: ---    60      0       172
        !          10523: ---    60      0       173
        !          10524: en     60      0       177
        !          10525: \-     "
        !          10526: dg     60      2       178
        !          10527: dd     60      2       179
        !          10528: ---    60      0       180
        !          10529: pg     60      2       182
        !          10530: ---    60      0       183
        !          10531: ---    60      1       184
        !          10532: ---    60      1       185
        !          10533: ''     60      2       186
        !          10534: ---    60      0       187
        !          10535: ---    60      0       188
        !          10536: ---    60      2       189
        !          10537: ??     60      1       191
        !          10538: ga     60      2       193
        !          10539: \`     "
        !          10540: aa     60      2       194
        !          10541: \'     "
        !          10542: ^a     60      2       195
        !          10543: ^      "
        !          10544: ~a     60      2       196
        !          10545: ~      "
        !          10546: -a     60      2       197
        !          10547: Ua     60      2       198
        !          10548: .a     60      2       199
        !          10549: :a     60      2       200
        !          10550: oa     60      2       202
        !          10551: ,a     60      1       203
        !          10552: "a     60      2       205
        !          10553: Ca     60      1       206
        !          10554: va     60      2       207
        !          10555: em     60      0       208
        !          10556: ---    60      2       225
        !          10557: ---    60      2       227
        !          10558: ---    60      2       232
        !          10559: ---    60      2       233
        !          10560: ---    60      2       234
        !          10561: ---    60      2       235
        !          10562: ---    60      0       241
        !          10563: ---    60      0       245
        !          10564: ---    60      2       248
        !          10565: ---    60      0       249
        !          10566: ---    60      0       250
        !          10567: ---    60      2       251
        !          10568: 0707070014231216601006440057030057030000010640260522627501000002400000003275post.src/devpost/CIname CI
        !          10569: fontname Courier-Oblique
        !          10570: named in prologue
        !          10571: spacewidth 60
        !          10572: charset
        !          10573: !      60      2       33
        !          10574: "      60      2       34
        !          10575: dq     "
        !          10576: #      60      2       35
        !          10577: $      60      2       36
        !          10578: %      60      2       37
        !          10579: &      60      2       38
        !          10580: '      60      2       39
        !          10581: (      60      3       40
        !          10582: )      60      3       41
        !          10583: *      60      2       42
        !          10584: +      60      2       43
        !          10585: ,      60      1       44
        !          10586: hy     60      0       45
        !          10587: -      "
        !          10588: .      60      0       46
        !          10589: /      60      2       47
        !          10590: 0      60      2       48
        !          10591: 1      60      2       49
        !          10592: 2      60      2       50
        !          10593: 3      60      2       51
        !          10594: 4      60      2       52
        !          10595: 5      60      2       53
        !          10596: 6      60      2       54
        !          10597: 7      60      2       55
        !          10598: 8      60      2       56
        !          10599: 9      60      2       57
        !          10600: :      60      0       58
        !          10601: ;      60      0       59
        !          10602: <      60      2       60
        !          10603: =      60      0       61
        !          10604: >      60      2       62
        !          10605: ?      60      2       63
        !          10606: @      60      2       64
        !          10607: A      60      2       65
        !          10608: B      60      2       66
        !          10609: C      60      2       67
        !          10610: D      60      2       68
        !          10611: E      60      2       69
        !          10612: F      60      2       70
        !          10613: G      60      2       71
        !          10614: H      60      2       72
        !          10615: I      60      2       73
        !          10616: J      60      2       74
        !          10617: K      60      2       75
        !          10618: L      60      2       76
        !          10619: M      60      2       77
        !          10620: N      60      2       78
        !          10621: O      60      2       79
        !          10622: P      60      2       80
        !          10623: Q      60      3       81
        !          10624: R      60      2       82
        !          10625: S      60      2       83
        !          10626: T      60      2       84
        !          10627: U      60      2       85
        !          10628: V      60      2       86
        !          10629: W      60      2       87
        !          10630: X      60      2       88
        !          10631: Y      60      2       89
        !          10632: Z      60      2       90
        !          10633: [      60      3       91
        !          10634: \      60      2       92
        !          10635: bs     "
        !          10636: ]      60      3       93
        !          10637: ^      60      2       94
        !          10638: _      60      1       95
        !          10639: `      60      2       96
        !          10640: a      60      0       97
        !          10641: b      60      2       98
        !          10642: c      60      0       99
        !          10643: d      60      2       100
        !          10644: e      60      0       101
        !          10645: f      60      2       102
        !          10646: g      60      1       103
        !          10647: h      60      2       104
        !          10648: i      60      2       105
        !          10649: j      60      3       106
        !          10650: k      60      2       107
        !          10651: l      60      2       108
        !          10652: m      60      0       109
        !          10653: n      60      0       110
        !          10654: o      60      0       111
        !          10655: p      60      1       112
        !          10656: q      60      1       113
        !          10657: r      60      0       114
        !          10658: s      60      0       115
        !          10659: t      60      2       116
        !          10660: u      60      0       117
        !          10661: v      60      0       118
        !          10662: w      60      0       119
        !          10663: x      60      0       120
        !          10664: y      60      1       121
        !          10665: z      60      0       122
        !          10666: {      60      3       123
        !          10667: |      60      3       124
        !          10668: }      60      3       125
        !          10669: ~      60      0       126
        !          10670: !!     60      1       161
        !          10671: ct     60      2       162
        !          10672: ps     60      2       163
        !          10673: fr     60      2       164
        !          10674: yn     60      2       165
        !          10675: fn     60      2       166
        !          10676: sc     60      2       167
        !          10677: cr     60      2       168
        !          10678: ---    60      2       169
        !          10679: ``     60      2       170
        !          10680: ---    60      0       171
        !          10681: ---    60      0       172
        !          10682: ---    60      0       173
        !          10683: en     60      0       177
        !          10684: \-     "
        !          10685: dg     60      2       178
        !          10686: dd     60      2       179
        !          10687: ---    60      0       180
        !          10688: pg     60      2       182
        !          10689: ---    60      0       183
        !          10690: ---    60      1       184
        !          10691: ---    60      1       185
        !          10692: ''     60      2       186
        !          10693: ---    60      0       187
        !          10694: ---    60      0       188
        !          10695: ---    60      2       189
        !          10696: ??     60      1       191
        !          10697: ga     60      2       193
        !          10698: \`     "
        !          10699: aa     60      2       194
        !          10700: \'     "
        !          10701: ^a     60      2       195
        !          10702: ^      "
        !          10703: ~a     60      2       196
        !          10704: ~      "
        !          10705: -a     60      2       197
        !          10706: Ua     60      2       198
        !          10707: .a     60      2       199
        !          10708: :a     60      2       200
        !          10709: oa     60      2       202
        !          10710: ,a     60      1       203
        !          10711: "a     60      2       205
        !          10712: Ca     60      1       206
        !          10713: va     60      2       207
        !          10714: em     60      0       208
        !          10715: ---    60      2       225
        !          10716: ---    60      2       227
        !          10717: ---    60      2       232
        !          10718: ---    60      2       233
        !          10719: ---    60      2       234
        !          10720: ---    60      2       235
        !          10721: ---    60      0       241
        !          10722: ---    60      0       245
        !          10723: ---    60      2       248
        !          10724: ---    60      0       249
        !          10725: ---    60      0       250
        !          10726: ---    60      2       251
        !          10727: 0707070014231216611006440057030057030000010640400522627501000002400000003265post.src/devpost/COname CO
        !          10728: fontname Courier
        !          10729: named in prologue
        !          10730: spacewidth 60
        !          10731: charset
        !          10732: !      60      2       33
        !          10733: "      60      2       34
        !          10734: dq     "
        !          10735: #      60      2       35
        !          10736: $      60      2       36
        !          10737: %      60      2       37
        !          10738: &      60      2       38
        !          10739: '      60      2       39
        !          10740: (      60      3       40
        !          10741: )      60      3       41
        !          10742: *      60      2       42
        !          10743: +      60      2       43
        !          10744: ,      60      1       44
        !          10745: hy     60      0       45
        !          10746: -      "
        !          10747: .      60      0       46
        !          10748: /      60      2       47
        !          10749: 0      60      2       48
        !          10750: 1      60      2       49
        !          10751: 2      60      2       50
        !          10752: 3      60      2       51
        !          10753: 4      60      2       52
        !          10754: 5      60      2       53
        !          10755: 6      60      2       54
        !          10756: 7      60      2       55
        !          10757: 8      60      2       56
        !          10758: 9      60      2       57
        !          10759: :      60      0       58
        !          10760: ;      60      0       59
        !          10761: <      60      2       60
        !          10762: =      60      0       61
        !          10763: >      60      2       62
        !          10764: ?      60      2       63
        !          10765: @      60      2       64
        !          10766: A      60      2       65
        !          10767: B      60      2       66
        !          10768: C      60      2       67
        !          10769: D      60      2       68
        !          10770: E      60      2       69
        !          10771: F      60      2       70
        !          10772: G      60      2       71
        !          10773: H      60      2       72
        !          10774: I      60      2       73
        !          10775: J      60      2       74
        !          10776: K      60      2       75
        !          10777: L      60      2       76
        !          10778: M      60      2       77
        !          10779: N      60      2       78
        !          10780: O      60      2       79
        !          10781: P      60      2       80
        !          10782: Q      60      3       81
        !          10783: R      60      2       82
        !          10784: S      60      2       83
        !          10785: T      60      2       84
        !          10786: U      60      2       85
        !          10787: V      60      2       86
        !          10788: W      60      2       87
        !          10789: X      60      2       88
        !          10790: Y      60      2       89
        !          10791: Z      60      2       90
        !          10792: [      60      3       91
        !          10793: \      60      2       92
        !          10794: bs     "
        !          10795: ]      60      3       93
        !          10796: ^      60      2       94
        !          10797: _      60      1       95
        !          10798: `      60      2       96
        !          10799: a      60      0       97
        !          10800: b      60      2       98
        !          10801: c      60      0       99
        !          10802: d      60      2       100
        !          10803: e      60      0       101
        !          10804: f      60      2       102
        !          10805: g      60      1       103
        !          10806: h      60      2       104
        !          10807: i      60      2       105
        !          10808: j      60      3       106
        !          10809: k      60      2       107
        !          10810: l      60      2       108
        !          10811: m      60      0       109
        !          10812: n      60      0       110
        !          10813: o      60      0       111
        !          10814: p      60      1       112
        !          10815: q      60      1       113
        !          10816: r      60      0       114
        !          10817: s      60      0       115
        !          10818: t      60      2       116
        !          10819: u      60      0       117
        !          10820: v      60      0       118
        !          10821: w      60      0       119
        !          10822: x      60      0       120
        !          10823: y      60      1       121
        !          10824: z      60      0       122
        !          10825: {      60      3       123
        !          10826: |      60      3       124
        !          10827: }      60      3       125
        !          10828: ~      60      0       126
        !          10829: !!     60      1       161
        !          10830: ct     60      2       162
        !          10831: ps     60      2       163
        !          10832: fr     60      2       164
        !          10833: yn     60      2       165
        !          10834: fn     60      2       166
        !          10835: sc     60      2       167
        !          10836: cr     60      2       168
        !          10837: ---    60      2       169
        !          10838: ``     60      2       170
        !          10839: ---    60      0       171
        !          10840: ---    60      0       172
        !          10841: ---    60      0       173
        !          10842: en     60      0       177
        !          10843: \-     "
        !          10844: dg     60      2       178
        !          10845: dd     60      2       179
        !          10846: ---    60      0       180
        !          10847: pg     60      2       182
        !          10848: ---    60      0       183
        !          10849: ---    60      1       184
        !          10850: ---    60      1       185
        !          10851: ''     60      2       186
        !          10852: ---    60      0       187
        !          10853: ---    60      0       188
        !          10854: ---    60      2       189
        !          10855: ??     60      1       191
        !          10856: ga     60      2       193
        !          10857: \`     "
        !          10858: aa     60      2       194
        !          10859: \'     "
        !          10860: ^a     60      2       195
        !          10861: ^      "
        !          10862: ~a     60      2       196
        !          10863: ~      "
        !          10864: -a     60      2       197
        !          10865: Ua     60      2       198
        !          10866: .a     60      2       199
        !          10867: :a     60      2       200
        !          10868: oa     60      2       202
        !          10869: ,a     60      1       203
        !          10870: "a     60      2       205
        !          10871: Ca     60      1       206
        !          10872: va     60      2       207
        !          10873: em     60      0       208
        !          10874: ---    60      2       225
        !          10875: ---    60      2       227
        !          10876: ---    60      2       232
        !          10877: ---    60      2       233
        !          10878: ---    60      2       234
        !          10879: ---    60      2       235
        !          10880: ---    60      0       241
        !          10881: ---    60      0       245
        !          10882: ---    60      2       248
        !          10883: ---    60      0       249
        !          10884: ---    60      0       250
        !          10885: ---    60      2       251
        !          10886: 0707070014231216621006440057030057030000010640420522627501100002400000003265post.src/devpost/CWname CW
        !          10887: fontname Courier
        !          10888: named in prologue
        !          10889: spacewidth 60
        !          10890: charset
        !          10891: !      60      2       33
        !          10892: "      60      2       34
        !          10893: dq     "
        !          10894: #      60      2       35
        !          10895: $      60      2       36
        !          10896: %      60      2       37
        !          10897: &      60      2       38
        !          10898: '      60      2       39
        !          10899: (      60      3       40
        !          10900: )      60      3       41
        !          10901: *      60      2       42
        !          10902: +      60      2       43
        !          10903: ,      60      1       44
        !          10904: hy     60      0       45
        !          10905: -      "
        !          10906: .      60      0       46
        !          10907: /      60      2       47
        !          10908: 0      60      2       48
        !          10909: 1      60      2       49
        !          10910: 2      60      2       50
        !          10911: 3      60      2       51
        !          10912: 4      60      2       52
        !          10913: 5      60      2       53
        !          10914: 6      60      2       54
        !          10915: 7      60      2       55
        !          10916: 8      60      2       56
        !          10917: 9      60      2       57
        !          10918: :      60      0       58
        !          10919: ;      60      0       59
        !          10920: <      60      2       60
        !          10921: =      60      0       61
        !          10922: >      60      2       62
        !          10923: ?      60      2       63
        !          10924: @      60      2       64
        !          10925: A      60      2       65
        !          10926: B      60      2       66
        !          10927: C      60      2       67
        !          10928: D      60      2       68
        !          10929: E      60      2       69
        !          10930: F      60      2       70
        !          10931: G      60      2       71
        !          10932: H      60      2       72
        !          10933: I      60      2       73
        !          10934: J      60      2       74
        !          10935: K      60      2       75
        !          10936: L      60      2       76
        !          10937: M      60      2       77
        !          10938: N      60      2       78
        !          10939: O      60      2       79
        !          10940: P      60      2       80
        !          10941: Q      60      3       81
        !          10942: R      60      2       82
        !          10943: S      60      2       83
        !          10944: T      60      2       84
        !          10945: U      60      2       85
        !          10946: V      60      2       86
        !          10947: W      60      2       87
        !          10948: X      60      2       88
        !          10949: Y      60      2       89
        !          10950: Z      60      2       90
        !          10951: [      60      3       91
        !          10952: \      60      2       92
        !          10953: bs     "
        !          10954: ]      60      3       93
        !          10955: ^      60      2       94
        !          10956: _      60      1       95
        !          10957: `      60      2       96
        !          10958: a      60      0       97
        !          10959: b      60      2       98
        !          10960: c      60      0       99
        !          10961: d      60      2       100
        !          10962: e      60      0       101
        !          10963: f      60      2       102
        !          10964: g      60      1       103
        !          10965: h      60      2       104
        !          10966: i      60      2       105
        !          10967: j      60      3       106
        !          10968: k      60      2       107
        !          10969: l      60      2       108
        !          10970: m      60      0       109
        !          10971: n      60      0       110
        !          10972: o      60      0       111
        !          10973: p      60      1       112
        !          10974: q      60      1       113
        !          10975: r      60      0       114
        !          10976: s      60      0       115
        !          10977: t      60      2       116
        !          10978: u      60      0       117
        !          10979: v      60      0       118
        !          10980: w      60      0       119
        !          10981: x      60      0       120
        !          10982: y      60      1       121
        !          10983: z      60      0       122
        !          10984: {      60      3       123
        !          10985: |      60      3       124
        !          10986: }      60      3       125
        !          10987: ~      60      0       126
        !          10988: !!     60      1       161
        !          10989: ct     60      2       162
        !          10990: ps     60      2       163
        !          10991: fr     60      2       164
        !          10992: yn     60      2       165
        !          10993: fn     60      2       166
        !          10994: sc     60      2       167
        !          10995: cr     60      2       168
        !          10996: ---    60      2       169
        !          10997: ``     60      2       170
        !          10998: ---    60      0       171
        !          10999: ---    60      0       172
        !          11000: ---    60      0       173
        !          11001: en     60      0       177
        !          11002: \-     "
        !          11003: dg     60      2       178
        !          11004: dd     60      2       179
        !          11005: ---    60      0       180
        !          11006: pg     60      2       182
        !          11007: ---    60      0       183
        !          11008: ---    60      1       184
        !          11009: ---    60      1       185
        !          11010: ''     60      2       186
        !          11011: ---    60      0       187
        !          11012: ---    60      0       188
        !          11013: ---    60      2       189
        !          11014: ??     60      1       191
        !          11015: ga     60      2       193
        !          11016: \`     "
        !          11017: aa     60      2       194
        !          11018: \'     "
        !          11019: ^a     60      2       195
        !          11020: ^      "
        !          11021: ~a     60      2       196
        !          11022: ~      "
        !          11023: -a     60      2       197
        !          11024: Ua     60      2       198
        !          11025: .a     60      2       199
        !          11026: :a     60      2       200
        !          11027: oa     60      2       202
        !          11028: ,a     60      1       203
        !          11029: "a     60      2       205
        !          11030: Ca     60      1       206
        !          11031: va     60      2       207
        !          11032: em     60      0       208
        !          11033: ---    60      2       225
        !          11034: ---    60      2       227
        !          11035: ---    60      2       232
        !          11036: ---    60      2       233
        !          11037: ---    60      2       234
        !          11038: ---    60      2       235
        !          11039: ---    60      0       241
        !          11040: ---    60      0       245
        !          11041: ---    60      2       248
        !          11042: ---    60      0       249
        !          11043: ---    60      0       250
        !          11044: ---    60      2       251
        !          11045: 0707070014231216631006440057030057030000010640440522627501100002400000003301post.src/devpost/CXname CX
        !          11046: fontname Courier-BoldOblique
        !          11047: named in prologue
        !          11048: spacewidth 60
        !          11049: charset
        !          11050: !      60      2       33
        !          11051: "      60      2       34
        !          11052: dq     "
        !          11053: #      60      2       35
        !          11054: $      60      2       36
        !          11055: %      60      2       37
        !          11056: &      60      2       38
        !          11057: '      60      2       39
        !          11058: (      60      3       40
        !          11059: )      60      3       41
        !          11060: *      60      2       42
        !          11061: +      60      2       43
        !          11062: ,      60      1       44
        !          11063: hy     60      0       45
        !          11064: -      "
        !          11065: .      60      0       46
        !          11066: /      60      2       47
        !          11067: 0      60      2       48
        !          11068: 1      60      2       49
        !          11069: 2      60      2       50
        !          11070: 3      60      2       51
        !          11071: 4      60      2       52
        !          11072: 5      60      2       53
        !          11073: 6      60      2       54
        !          11074: 7      60      2       55
        !          11075: 8      60      2       56
        !          11076: 9      60      2       57
        !          11077: :      60      0       58
        !          11078: ;      60      0       59
        !          11079: <      60      2       60
        !          11080: =      60      0       61
        !          11081: >      60      2       62
        !          11082: ?      60      2       63
        !          11083: @      60      2       64
        !          11084: A      60      2       65
        !          11085: B      60      2       66
        !          11086: C      60      2       67
        !          11087: D      60      2       68
        !          11088: E      60      2       69
        !          11089: F      60      2       70
        !          11090: G      60      2       71
        !          11091: H      60      2       72
        !          11092: I      60      2       73
        !          11093: J      60      2       74
        !          11094: K      60      2       75
        !          11095: L      60      2       76
        !          11096: M      60      2       77
        !          11097: N      60      2       78
        !          11098: O      60      2       79
        !          11099: P      60      2       80
        !          11100: Q      60      3       81
        !          11101: R      60      2       82
        !          11102: S      60      2       83
        !          11103: T      60      2       84
        !          11104: U      60      2       85
        !          11105: V      60      2       86
        !          11106: W      60      2       87
        !          11107: X      60      2       88
        !          11108: Y      60      2       89
        !          11109: Z      60      2       90
        !          11110: [      60      3       91
        !          11111: \      60      2       92
        !          11112: bs     "
        !          11113: ]      60      3       93
        !          11114: ^      60      2       94
        !          11115: _      60      1       95
        !          11116: `      60      2       96
        !          11117: a      60      0       97
        !          11118: b      60      2       98
        !          11119: c      60      0       99
        !          11120: d      60      2       100
        !          11121: e      60      0       101
        !          11122: f      60      2       102
        !          11123: g      60      1       103
        !          11124: h      60      2       104
        !          11125: i      60      2       105
        !          11126: j      60      3       106
        !          11127: k      60      2       107
        !          11128: l      60      2       108
        !          11129: m      60      0       109
        !          11130: n      60      0       110
        !          11131: o      60      0       111
        !          11132: p      60      1       112
        !          11133: q      60      1       113
        !          11134: r      60      0       114
        !          11135: s      60      0       115
        !          11136: t      60      2       116
        !          11137: u      60      0       117
        !          11138: v      60      0       118
        !          11139: w      60      0       119
        !          11140: x      60      0       120
        !          11141: y      60      1       121
        !          11142: z      60      0       122
        !          11143: {      60      3       123
        !          11144: |      60      3       124
        !          11145: }      60      3       125
        !          11146: ~      60      0       126
        !          11147: !!     60      1       161
        !          11148: ct     60      2       162
        !          11149: ps     60      2       163
        !          11150: fr     60      2       164
        !          11151: yn     60      2       165
        !          11152: fn     60      2       166
        !          11153: sc     60      2       167
        !          11154: cr     60      2       168
        !          11155: ---    60      2       169
        !          11156: ``     60      2       170
        !          11157: ---    60      0       171
        !          11158: ---    60      0       172
        !          11159: ---    60      0       173
        !          11160: en     60      0       177
        !          11161: \-     "
        !          11162: dg     60      2       178
        !          11163: dd     60      2       179
        !          11164: ---    60      0       180
        !          11165: pg     60      2       182
        !          11166: ---    60      0       183
        !          11167: ---    60      1       184
        !          11168: ---    60      1       185
        !          11169: ''     60      2       186
        !          11170: ---    60      0       187
        !          11171: ---    60      0       188
        !          11172: ---    60      2       189
        !          11173: ??     60      1       191
        !          11174: ga     60      2       193
        !          11175: \`     "
        !          11176: aa     60      2       194
        !          11177: \'     "
        !          11178: ^a     60      2       195
        !          11179: ^      "
        !          11180: ~a     60      2       196
        !          11181: ~      "
        !          11182: -a     60      2       197
        !          11183: Ua     60      2       198
        !          11184: .a     60      2       199
        !          11185: :a     60      2       200
        !          11186: oa     60      2       202
        !          11187: ,a     60      1       203
        !          11188: "a     60      2       205
        !          11189: Ca     60      1       206
        !          11190: va     60      2       207
        !          11191: em     60      0       208
        !          11192: ---    60      2       225
        !          11193: ---    60      2       227
        !          11194: ---    60      2       232
        !          11195: ---    60      2       233
        !          11196: ---    60      2       234
        !          11197: ---    60      2       235
        !          11198: ---    60      0       241
        !          11199: ---    60      0       245
        !          11200: ---    60      2       248
        !          11201: ---    60      0       249
        !          11202: ---    60      0       250
        !          11203: ---    60      2       251
        !          11204: 0707070014231216641006440057030057030000010640460522627501100002600000001740post.src/devpost/DESC#Device Description - original PostScript character set
        !          11205: 
        !          11206: PDL PostScript
        !          11207: 
        !          11208: fonts 10 R I B BI CW H HI HB S1 S
        !          11209: sizes 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
        !          11210: 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 40 42 44 46
        !          11211: 48 50 52 54 56 58 60 64 68 72 78 84 90 96 100 105 110 115
        !          11212: 120 125 130 135 140 145 150 155 160 0
        !          11213: 
        !          11214: res 720
        !          11215: hor 1
        !          11216: vert 1
        !          11217: unitwidth 10
        !          11218: 
        !          11219: charset
        !          11220: dq hy bs !! ct ps fr yn fn sc cr `` fi fl en \- dg dd pg ''
        !          11221: ?? ga \` aa \' ^a ~a -a Ua .a :a oa ,a "a Ca va em fa te st
        !          11222: ** pl mi sl eq cg *A *B *X *D *E *F *G *Y *I *K *L *M *N *O
        !          11223: *P *H *R *S *T *U ts *W *C *Q *Z tf pp ul rn *a *b *x *d *e
        !          11224: *f *g *y *i *k *l *m *n *o *p *h *r *s *t *u *w *c *q *z or
        !          11225: ap fm <= if ab <- ua -> da de +- >= mu pt pd bu di != == ~~
        !          11226: el av ah CR af If Rf ws Ox O+ es ca cu sp ip !b sb ib mo !m
        !          11227: an gr rg co tm sr c. no l& l| lz b< RG CO TM LT br LX LB lc
        !          11228: lx lf lt lk lb bv b> is RT RX RB rc rx rf rt rk rb ~= ru ff
        !          11229: Fi Fl 14 12 34 bx ob ci sq Sl L1 LA LV LH lh rh lH rH PC DG
        !          11230: -+ cs cy as os =. ld rd le ge 
        !          11231: 0707070014231215101006400057030057030000010554200522633073600003400000003054post.src/devpost/devpost.mkMAKE=/bin/make
        !          11232: MAKEFILE=devpost.mk
        !          11233: 
        !          11234: SYSTEM=V9
        !          11235: VERSION=3.3.2
        !          11236: 
        !          11237: GROUP=bin
        !          11238: OWNER=bin
        !          11239: 
        !          11240: FONTDIR=/usr/lib/font
        !          11241: FONTFILES=DESC ? ?? [A-Z]??* shell.lib
        !          11242: 
        !          11243: all :
        !          11244:        @if [ -r LINKFILE ]; then sh LINKFILE; fi;
        !          11245: 
        !          11246: install : all
        !          11247:        @rm -f $(FONTDIR)/devpost/*.out
        !          11248:        @if [ ! -d $(FONTDIR) ]; then \
        !          11249:            mkdir $(FONTDIR); \
        !          11250:            chmod 755 $(FONTDIR); \
        !          11251:            chgrp $(GROUP) $(FONTDIR); \
        !          11252:            chown $(OWNER) $(FONTDIR); \
        !          11253:        fi
        !          11254:        @if [ ! -d $(FONTDIR)/devpost ]; then \
        !          11255:            mkdir $(FONTDIR)/devpost; \
        !          11256:            chmod 755 $(FONTDIR)/devpost; \
        !          11257:            chgrp $(GROUP) $(FONTDIR)/devpost; \
        !          11258:            chown $(OWNER) $(FONTDIR)/devpost; \
        !          11259:        fi
        !          11260:        @if [ ! -d $(FONTDIR)/devpost/charlib ]; then \
        !          11261:            mkdir $(FONTDIR)/devpost/charlib; \
        !          11262:            chmod 755 $(FONTDIR)/devpost/charlib; \
        !          11263:            chgrp $(GROUP) $(FONTDIR)/devpost/charlib; \
        !          11264:            chown $(OWNER) $(FONTDIR)/devpost/charlib; \
        !          11265:        fi
        !          11266:        cp $(FONTFILES) $(FONTDIR)/devpost
        !          11267:        @for i in $(FONTFILES); do \
        !          11268:            chmod 644 $(FONTDIR)/devpost/$$i; \
        !          11269:            chgrp $(GROUP) $(FONTDIR)/devpost/$$i; \
        !          11270:            chown $(OWNER) $(FONTDIR)/devpost/$$i; \
        !          11271:        done
        !          11272:        cp charlib/* $(FONTDIR)/devpost/charlib
        !          11273:        @for i in charlib/*; do \
        !          11274:            chmod 644 $(FONTDIR)/devpost/$$i; \
        !          11275:            chgrp $(GROUP) $(FONTDIR)/devpost/$$i; \
        !          11276:            chown $(OWNER) $(FONTDIR)/devpost/$$i; \
        !          11277:        done
        !          11278: 
        !          11279: clean :
        !          11280: 
        !          11281: clobber : clean
        !          11282: 
        !          11283: changes :
        !          11284:        @trap "" 1 2 3 15; \
        !          11285:        sed \
        !          11286:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
        !          11287:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
        !          11288:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          11289:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          11290:            -e "s'^FONTDIR=.*'FONTDIR=$(FONTDIR)'" \
        !          11291:        $(MAKEFILE) >XXX.mk; \
        !          11292:        mv XXX.mk $(MAKEFILE)
        !          11293: 
        !          11294: 0707070014231216661006440057030057030000010640470522627501100002400000001145post.src/devpost/GRname GR
        !          11295: fontname Symbol
        !          11296: named in prologue
        !          11297: spacewidth 25
        !          11298: charset
        !          11299: *A     72      2       65
        !          11300: *B     67      2       66
        !          11301: *X     72      2       67
        !          11302: *D     61      2       68
        !          11303: *E     61      2       69
        !          11304: *F     76      2       70
        !          11305: *G     60      2       71
        !          11306: *Y     72      2       72
        !          11307: *I     33      2       73
        !          11308: *K     72      2       75
        !          11309: *L     69      2       76
        !          11310: *M     89      2       77
        !          11311: *N     72      2       78
        !          11312: *O     72      2       79
        !          11313: *P     77      2       80
        !          11314: *H     74      2       81
        !          11315: *R     56      2       82
        !          11316: *S     59      2       83
        !          11317: *T     61      2       84
        !          11318: *U     69      2       85
        !          11319: *W     77      2       87
        !          11320: *C     65      2       88
        !          11321: *Q     80      2       89
        !          11322: *Z     61      2       90
        !          11323: *a     63      0       97
        !          11324: *b     55      3       98
        !          11325: *x     55      1       99
        !          11326: *d     49      2       100
        !          11327: *e     44      0       101
        !          11328: *f     52      3       102
        !          11329: *g     41      1       103
        !          11330: *y     60      1       104
        !          11331: *i     33      0       105
        !          11332: *k     55      0       107
        !          11333: *l     55      2       108
        !          11334: *m     58      1       109
        !          11335: *n     52      0       110
        !          11336: *o     55      0       111
        !          11337: *p     55      0       112
        !          11338: *h     52      2       113
        !          11339: *r     55      1       114
        !          11340: *s     60      0       115
        !          11341: *t     44      0       116
        !          11342: *u     58      0       117
        !          11343: *w     69      0       119
        !          11344: *c     49      3       120
        !          11345: *q     69      1       121
        !          11346: *z     49      3       122
        !          11347: 0707070014231216671006440057030057030000010641020522627501100002300000003362post.src/devpost/Hname H
        !          11348: fontname Helvetica
        !          11349: named in prologue
        !          11350: ligatures fi fl 0
        !          11351: spacewidth 28
        !          11352: charset
        !          11353: !      28      2       33
        !          11354: "      36      2       34
        !          11355: dq     "
        !          11356: #      56      2       35
        !          11357: $      56      3       36
        !          11358: %      89      2       37
        !          11359: &      67      2       38
        !          11360: '      22      2       39
        !          11361: (      33      3       40
        !          11362: )      33      3       41
        !          11363: *      39      2       42
        !          11364: +      58      0       43
        !          11365: ,      28      1       44
        !          11366: hy     33      0       45
        !          11367: -      "
        !          11368: .      28      0       46
        !          11369: /      28      2       47
        !          11370: 0      56      2       48
        !          11371: 1      56      2       49
        !          11372: 2      56      2       50
        !          11373: 3      56      2       51
        !          11374: 4      56      2       52
        !          11375: 5      56      2       53
        !          11376: 6      56      2       54
        !          11377: 7      56      2       55
        !          11378: 8      56      2       56
        !          11379: 9      56      2       57
        !          11380: :      28      0       58
        !          11381: ;      28      1       59
        !          11382: ---    58      0       60
        !          11383: =      58      0       61
        !          11384: ---    58      0       62
        !          11385: ?      56      2       63
        !          11386: @      102     3       64
        !          11387: A      67      2       65
        !          11388: B      67      2       66
        !          11389: C      72      2       67
        !          11390: D      72      2       68
        !          11391: E      67      2       69
        !          11392: F      61      2       70
        !          11393: G      78      2       71
        !          11394: H      72      2       72
        !          11395: I      28      2       73
        !          11396: J      50      2       74
        !          11397: K      67      2       75
        !          11398: L      56      2       76
        !          11399: M      83      2       77
        !          11400: N      72      2       78
        !          11401: O      78      2       79
        !          11402: P      67      2       80
        !          11403: Q      78      2       81
        !          11404: R      72      2       82
        !          11405: S      67      2       83
        !          11406: T      61      2       84
        !          11407: U      72      2       85
        !          11408: V      67      2       86
        !          11409: W      94      2       87
        !          11410: X      67      2       88
        !          11411: Y      67      2       89
        !          11412: Z      61      2       90
        !          11413: [      28      3       91
        !          11414: \      28      2       92
        !          11415: bs     "
        !          11416: ]      28      3       93
        !          11417: ---    47      2       94
        !          11418: ---    56      1       95
        !          11419: `      22      2       96
        !          11420: a      56      0       97
        !          11421: b      56      2       98
        !          11422: c      50      0       99
        !          11423: d      56      2       100
        !          11424: e      56      0       101
        !          11425: f      28      2       102
        !          11426: g      56      1       103
        !          11427: h      56      2       104
        !          11428: i      22      2       105
        !          11429: j      22      3       106
        !          11430: k      50      2       107
        !          11431: l      22      2       108
        !          11432: m      83      0       109
        !          11433: n      56      0       110
        !          11434: o      56      0       111
        !          11435: p      56      1       112
        !          11436: q      56      1       113
        !          11437: r      33      0       114
        !          11438: s      50      0       115
        !          11439: t      28      2       116
        !          11440: u      56      0       117
        !          11441: v      50      0       118
        !          11442: w      72      0       119
        !          11443: x      50      0       120
        !          11444: y      50      1       121
        !          11445: z      50      0       122
        !          11446: {      33      3       123
        !          11447: ---    26      3       124
        !          11448: }      33      3       125
        !          11449: ---    58      0       126
        !          11450: !!     33      1       161
        !          11451: ct     56      3       162
        !          11452: ps     56      2       163
        !          11453: fr     17      2       164
        !          11454: yn     56      2       165
        !          11455: fn     56      3       166
        !          11456: sc     56      3       167
        !          11457: cr     56      0       168
        !          11458: ---    19      2       169
        !          11459: ``     33      2       170
        !          11460: ---    56      0       171
        !          11461: ---    33      0       172
        !          11462: ---    33      0       173
        !          11463: fi     50      2       174
        !          11464: fl     50      2       175
        !          11465: en     56      0       177
        !          11466: \-     "
        !          11467: dg     56      3       178
        !          11468: dd     56      3       179
        !          11469: ---    28      0       180
        !          11470: pg     54      3       182
        !          11471: ---    35      0       183
        !          11472: ---    22      1       184
        !          11473: ---    33      1       185
        !          11474: ''     33      2       186
        !          11475: ---    56      0       187
        !          11476: ---    100     0       188
        !          11477: ---    100     2       189
        !          11478: ??     61      1       191
        !          11479: ga     33      2       193
        !          11480: \`     "
        !          11481: aa     33      2       194
        !          11482: \'     "
        !          11483: ^a     33      2       195
        !          11484: ^      "
        !          11485: ~a     33      2       196
        !          11486: ~      "
        !          11487: -a     33      2       197
        !          11488: Ua     33      2       198
        !          11489: .a     33      2       199
        !          11490: :a     33      2       200
        !          11491: oa     33      2       202
        !          11492: ,a     33      1       203
        !          11493: "a     33      2       205
        !          11494: Ca     33      1       206
        !          11495: va     33      2       207
        !          11496: em     100     0       208
        !          11497: ---    100     2       225
        !          11498: ---    37      2       227
        !          11499: ---    56      2       232
        !          11500: ---    78      2       233
        !          11501: ---    100     2       234
        !          11502: ---    36      2       235
        !          11503: ---    89      0       241
        !          11504: ---    28      0       245
        !          11505: ---    22      2       248
        !          11506: ---    61      0       249
        !          11507: ---    94      0       250
        !          11508: ---    61      2       251
        !          11509: 0707070014231216701006440057030057030000010641040522627501100002400000003367post.src/devpost/HBname HB
        !          11510: fontname Helvetica-Bold
        !          11511: named in prologue
        !          11512: ligatures fi fl 0
        !          11513: spacewidth 28
        !          11514: charset
        !          11515: !      33      2       33
        !          11516: "      47      2       34
        !          11517: dq     "
        !          11518: #      56      2       35
        !          11519: $      56      3       36
        !          11520: %      89      2       37
        !          11521: &      72      2       38
        !          11522: '      28      2       39
        !          11523: (      33      3       40
        !          11524: )      33      3       41
        !          11525: *      39      2       42
        !          11526: +      58      0       43
        !          11527: ,      28      1       44
        !          11528: hy     33      0       45
        !          11529: -      "
        !          11530: .      28      0       46
        !          11531: /      28      2       47
        !          11532: 0      56      2       48
        !          11533: 1      56      2       49
        !          11534: 2      56      2       50
        !          11535: 3      56      2       51
        !          11536: 4      56      2       52
        !          11537: 5      56      2       53
        !          11538: 6      56      2       54
        !          11539: 7      56      2       55
        !          11540: 8      56      2       56
        !          11541: 9      56      2       57
        !          11542: :      33      0       58
        !          11543: ;      33      1       59
        !          11544: ---    58      0       60
        !          11545: =      58      0       61
        !          11546: ---    58      0       62
        !          11547: ?      61      2       63
        !          11548: @      98      3       64
        !          11549: A      72      2       65
        !          11550: B      72      2       66
        !          11551: C      72      2       67
        !          11552: D      72      2       68
        !          11553: E      67      2       69
        !          11554: F      61      2       70
        !          11555: G      78      2       71
        !          11556: H      72      2       72
        !          11557: I      28      2       73
        !          11558: J      56      2       74
        !          11559: K      72      2       75
        !          11560: L      61      2       76
        !          11561: M      83      2       77
        !          11562: N      72      2       78
        !          11563: O      78      2       79
        !          11564: P      67      2       80
        !          11565: Q      78      2       81
        !          11566: R      72      2       82
        !          11567: S      67      2       83
        !          11568: T      61      2       84
        !          11569: U      72      2       85
        !          11570: V      67      2       86
        !          11571: W      94      2       87
        !          11572: X      67      2       88
        !          11573: Y      67      2       89
        !          11574: Z      61      2       90
        !          11575: [      33      3       91
        !          11576: \      28      2       92
        !          11577: bs     "
        !          11578: ]      33      3       93
        !          11579: ---    58      2       94
        !          11580: ---    56      1       95
        !          11581: `      28      2       96
        !          11582: a      56      0       97
        !          11583: b      61      2       98
        !          11584: c      56      0       99
        !          11585: d      61      2       100
        !          11586: e      56      0       101
        !          11587: f      33      2       102
        !          11588: g      61      1       103
        !          11589: h      61      2       104
        !          11590: i      28      2       105
        !          11591: j      28      3       106
        !          11592: k      56      2       107
        !          11593: l      28      2       108
        !          11594: m      89      0       109
        !          11595: n      61      0       110
        !          11596: o      61      0       111
        !          11597: p      61      1       112
        !          11598: q      61      1       113
        !          11599: r      39      0       114
        !          11600: s      56      0       115
        !          11601: t      33      2       116
        !          11602: u      61      0       117
        !          11603: v      56      0       118
        !          11604: w      78      0       119
        !          11605: x      56      0       120
        !          11606: y      56      1       121
        !          11607: z      50      0       122
        !          11608: {      39      3       123
        !          11609: ---    28      3       124
        !          11610: }      39      3       125
        !          11611: ---    58      0       126
        !          11612: !!     33      1       161
        !          11613: ct     56      3       162
        !          11614: ps     56      2       163
        !          11615: fr     17      2       164
        !          11616: yn     56      2       165
        !          11617: fn     56      3       166
        !          11618: sc     56      3       167
        !          11619: cr     56      2       168
        !          11620: ---    24      2       169
        !          11621: ``     50      2       170
        !          11622: ---    56      0       171
        !          11623: ---    33      0       172
        !          11624: ---    33      0       173
        !          11625: fi     61      2       174
        !          11626: fl     61      2       175
        !          11627: en     56      0       177
        !          11628: \-     "
        !          11629: dg     56      3       178
        !          11630: dd     56      3       179
        !          11631: ---    28      0       180
        !          11632: pg     56      3       182
        !          11633: ---    35      0       183
        !          11634: ---    28      1       184
        !          11635: ---    50      1       185
        !          11636: ''     50      2       186
        !          11637: ---    56      0       187
        !          11638: ---    100     0       188
        !          11639: ---    100     2       189
        !          11640: ??     61      1       191
        !          11641: ga     33      2       193
        !          11642: \`     "
        !          11643: aa     33      2       194
        !          11644: \'     "
        !          11645: ^a     33      2       195
        !          11646: ^      "
        !          11647: ~a     33      2       196
        !          11648: ~      "
        !          11649: -a     33      2       197
        !          11650: Ua     33      2       198
        !          11651: .a     33      2       199
        !          11652: :a     33      2       200
        !          11653: oa     33      2       202
        !          11654: ,a     33      1       203
        !          11655: "a     33      2       205
        !          11656: Ca     33      1       206
        !          11657: va     33      2       207
        !          11658: em     100     0       208
        !          11659: ---    100     2       225
        !          11660: ---    37      2       227
        !          11661: ---    61      2       232
        !          11662: ---    78      2       233
        !          11663: ---    100     2       234
        !          11664: ---    36      2       235
        !          11665: ---    89      0       241
        !          11666: ---    28      0       245
        !          11667: ---    28      2       248
        !          11668: ---    61      0       249
        !          11669: ---    94      0       250
        !          11670: ---    61      2       251
        !          11671: 0707070014231216711006440057030057030000010641060522627501100002400000003373post.src/devpost/HIname HI
        !          11672: fontname Helvetica-Oblique
        !          11673: named in prologue
        !          11674: ligatures fi fl 0
        !          11675: spacewidth 28
        !          11676: charset
        !          11677: !      28      2       33
        !          11678: "      36      2       34
        !          11679: dq     "
        !          11680: #      56      2       35
        !          11681: $      56      3       36
        !          11682: %      89      2       37
        !          11683: &      67      2       38
        !          11684: '      22      2       39
        !          11685: (      33      3       40
        !          11686: )      33      3       41
        !          11687: *      39      2       42
        !          11688: +      58      0       43
        !          11689: ,      28      1       44
        !          11690: hy     33      0       45
        !          11691: -      "
        !          11692: .      28      0       46
        !          11693: /      28      2       47
        !          11694: 0      56      2       48
        !          11695: 1      56      2       49
        !          11696: 2      56      2       50
        !          11697: 3      56      2       51
        !          11698: 4      56      2       52
        !          11699: 5      56      2       53
        !          11700: 6      56      2       54
        !          11701: 7      56      2       55
        !          11702: 8      56      2       56
        !          11703: 9      56      2       57
        !          11704: :      28      0       58
        !          11705: ;      28      1       59
        !          11706: ---    58      0       60
        !          11707: =      58      0       61
        !          11708: ---    58      0       62
        !          11709: ?      56      2       63
        !          11710: @      102     3       64
        !          11711: A      67      2       65
        !          11712: B      67      2       66
        !          11713: C      72      2       67
        !          11714: D      72      2       68
        !          11715: E      67      2       69
        !          11716: F      61      2       70
        !          11717: G      78      2       71
        !          11718: H      72      2       72
        !          11719: I      28      2       73
        !          11720: J      50      2       74
        !          11721: K      67      2       75
        !          11722: L      56      2       76
        !          11723: M      83      2       77
        !          11724: N      72      2       78
        !          11725: O      78      2       79
        !          11726: P      67      2       80
        !          11727: Q      78      2       81
        !          11728: R      72      2       82
        !          11729: S      67      2       83
        !          11730: T      61      2       84
        !          11731: U      72      2       85
        !          11732: V      67      2       86
        !          11733: W      94      2       87
        !          11734: X      67      2       88
        !          11735: Y      67      2       89
        !          11736: Z      61      2       90
        !          11737: [      28      3       91
        !          11738: \      28      2       92
        !          11739: bs     "
        !          11740: ]      28      3       93
        !          11741: ---    47      2       94
        !          11742: ---    56      1       95
        !          11743: `      22      2       96
        !          11744: a      56      0       97
        !          11745: b      56      2       98
        !          11746: c      50      0       99
        !          11747: d      56      2       100
        !          11748: e      56      0       101
        !          11749: f      28      2       102
        !          11750: g      56      1       103
        !          11751: h      56      2       104
        !          11752: i      22      2       105
        !          11753: j      22      3       106
        !          11754: k      50      2       107
        !          11755: l      22      2       108
        !          11756: m      83      0       109
        !          11757: n      56      0       110
        !          11758: o      56      0       111
        !          11759: p      56      1       112
        !          11760: q      56      1       113
        !          11761: r      33      0       114
        !          11762: s      50      0       115
        !          11763: t      28      2       116
        !          11764: u      56      0       117
        !          11765: v      50      0       118
        !          11766: w      72      0       119
        !          11767: x      50      0       120
        !          11768: y      50      1       121
        !          11769: z      50      0       122
        !          11770: {      33      3       123
        !          11771: ---    26      3       124
        !          11772: }      33      3       125
        !          11773: ---    58      0       126
        !          11774: !!     33      1       161
        !          11775: ct     56      3       162
        !          11776: ps     56      2       163
        !          11777: fr     17      2       164
        !          11778: yn     56      2       165
        !          11779: fn     56      3       166
        !          11780: sc     56      3       167
        !          11781: cr     56      0       168
        !          11782: ---    19      2       169
        !          11783: ``     33      2       170
        !          11784: ---    56      0       171
        !          11785: ---    33      0       172
        !          11786: ---    33      0       173
        !          11787: fi     50      2       174
        !          11788: fl     50      2       175
        !          11789: en     56      0       177
        !          11790: \-     "
        !          11791: dg     56      3       178
        !          11792: dd     56      3       179
        !          11793: ---    28      0       180
        !          11794: pg     54      3       182
        !          11795: ---    35      0       183
        !          11796: ---    22      1       184
        !          11797: ---    33      1       185
        !          11798: ''     33      2       186
        !          11799: ---    56      0       187
        !          11800: ---    100     0       188
        !          11801: ---    100     2       189
        !          11802: ??     61      1       191
        !          11803: ga     33      2       193
        !          11804: \`     "
        !          11805: aa     33      2       194
        !          11806: \'     "
        !          11807: ^a     33      2       195
        !          11808: ^      "
        !          11809: ~a     33      2       196
        !          11810: ~      "
        !          11811: -a     33      2       197
        !          11812: Ua     33      2       198
        !          11813: .a     33      2       199
        !          11814: :a     33      2       200
        !          11815: oa     33      2       202
        !          11816: ,a     33      1       203
        !          11817: "a     33      2       205
        !          11818: Ca     33      1       206
        !          11819: va     33      2       207
        !          11820: em     100     0       208
        !          11821: ---    100     2       225
        !          11822: ---    37      2       227
        !          11823: ---    56      2       232
        !          11824: ---    78      2       233
        !          11825: ---    100     2       234
        !          11826: ---    36      2       235
        !          11827: ---    89      0       241
        !          11828: ---    28      0       245
        !          11829: ---    22      2       248
        !          11830: ---    61      0       249
        !          11831: ---    94      0       250
        !          11832: ---    61      2       251
        !          11833: 0707070014231216721006440057030057030000010641400522627501100002400000003376post.src/devpost/HXname HX
        !          11834: fontname Helvetica-BoldOblique
        !          11835: named in prologue
        !          11836: ligatures fi fl 0
        !          11837: spacewidth 28
        !          11838: charset
        !          11839: !      33      2       33
        !          11840: "      47      2       34
        !          11841: dq     "
        !          11842: #      56      2       35
        !          11843: $      56      3       36
        !          11844: %      89      2       37
        !          11845: &      72      2       38
        !          11846: '      28      2       39
        !          11847: (      33      3       40
        !          11848: )      33      3       41
        !          11849: *      39      2       42
        !          11850: +      58      0       43
        !          11851: ,      28      1       44
        !          11852: hy     33      0       45
        !          11853: -      "
        !          11854: .      28      0       46
        !          11855: /      28      2       47
        !          11856: 0      56      2       48
        !          11857: 1      56      2       49
        !          11858: 2      56      2       50
        !          11859: 3      56      2       51
        !          11860: 4      56      2       52
        !          11861: 5      56      2       53
        !          11862: 6      56      2       54
        !          11863: 7      56      2       55
        !          11864: 8      56      2       56
        !          11865: 9      56      2       57
        !          11866: :      33      0       58
        !          11867: ;      33      1       59
        !          11868: ---    58      0       60
        !          11869: =      58      0       61
        !          11870: ---    58      0       62
        !          11871: ?      61      2       63
        !          11872: @      98      3       64
        !          11873: A      72      2       65
        !          11874: B      72      2       66
        !          11875: C      72      2       67
        !          11876: D      72      2       68
        !          11877: E      67      2       69
        !          11878: F      61      2       70
        !          11879: G      78      2       71
        !          11880: H      72      2       72
        !          11881: I      28      2       73
        !          11882: J      56      2       74
        !          11883: K      72      2       75
        !          11884: L      61      2       76
        !          11885: M      83      2       77
        !          11886: N      72      2       78
        !          11887: O      78      2       79
        !          11888: P      67      2       80
        !          11889: Q      78      2       81
        !          11890: R      72      2       82
        !          11891: S      67      2       83
        !          11892: T      61      2       84
        !          11893: U      72      2       85
        !          11894: V      67      2       86
        !          11895: W      94      2       87
        !          11896: X      67      2       88
        !          11897: Y      67      2       89
        !          11898: Z      61      2       90
        !          11899: [      33      3       91
        !          11900: \      28      2       92
        !          11901: bs     "
        !          11902: ]      33      3       93
        !          11903: ---    58      2       94
        !          11904: ---    56      1       95
        !          11905: `      28      2       96
        !          11906: a      56      0       97
        !          11907: b      61      2       98
        !          11908: c      56      0       99
        !          11909: d      61      2       100
        !          11910: e      56      0       101
        !          11911: f      33      2       102
        !          11912: g      61      1       103
        !          11913: h      61      2       104
        !          11914: i      28      2       105
        !          11915: j      28      3       106
        !          11916: k      56      2       107
        !          11917: l      28      2       108
        !          11918: m      89      0       109
        !          11919: n      61      0       110
        !          11920: o      61      0       111
        !          11921: p      61      1       112
        !          11922: q      61      1       113
        !          11923: r      39      0       114
        !          11924: s      56      0       115
        !          11925: t      33      2       116
        !          11926: u      61      0       117
        !          11927: v      56      0       118
        !          11928: w      78      0       119
        !          11929: x      56      0       120
        !          11930: y      56      1       121
        !          11931: z      50      0       122
        !          11932: {      39      3       123
        !          11933: ---    28      3       124
        !          11934: }      39      3       125
        !          11935: ---    58      0       126
        !          11936: !!     33      1       161
        !          11937: ct     56      3       162
        !          11938: ps     56      2       163
        !          11939: fr     17      2       164
        !          11940: yn     56      2       165
        !          11941: fn     56      3       166
        !          11942: sc     56      3       167
        !          11943: cr     56      2       168
        !          11944: ---    24      2       169
        !          11945: ``     50      2       170
        !          11946: ---    56      0       171
        !          11947: ---    33      0       172
        !          11948: ---    33      0       173
        !          11949: fi     61      2       174
        !          11950: fl     61      2       175
        !          11951: en     56      0       177
        !          11952: \-     "
        !          11953: dg     56      3       178
        !          11954: dd     56      3       179
        !          11955: ---    28      0       180
        !          11956: pg     56      3       182
        !          11957: ---    35      0       183
        !          11958: ---    28      1       184
        !          11959: ---    50      1       185
        !          11960: ''     50      2       186
        !          11961: ---    56      0       187
        !          11962: ---    100     0       188
        !          11963: ---    100     2       189
        !          11964: ??     61      1       191
        !          11965: ga     33      2       193
        !          11966: \`     "
        !          11967: aa     33      2       194
        !          11968: \'     "
        !          11969: ^a     33      2       195
        !          11970: ^      "
        !          11971: ~a     33      2       196
        !          11972: ~      "
        !          11973: -a     33      2       197
        !          11974: Ua     33      2       198
        !          11975: .a     33      2       199
        !          11976: :a     33      2       200
        !          11977: oa     33      2       202
        !          11978: ,a     33      1       203
        !          11979: "a     33      2       205
        !          11980: Ca     33      1       206
        !          11981: va     33      2       207
        !          11982: em     100     0       208
        !          11983: ---    100     2       225
        !          11984: ---    37      2       227
        !          11985: ---    61      2       232
        !          11986: ---    78      2       233
        !          11987: ---    100     2       234
        !          11988: ---    36      2       235
        !          11989: ---    89      0       241
        !          11990: ---    28      0       245
        !          11991: ---    28      2       248
        !          11992: ---    61      0       249
        !          11993: ---    94      0       250
        !          11994: ---    61      2       251
        !          11995: 0707070014231216731006440057030057030000010641420522627501100002400000003371post.src/devpost/Hbname Hb
        !          11996: fontname Helvetica-Narrow-Bold
        !          11997: named in prologue
        !          11998: ligatures fi fl 0
        !          11999: spacewidth 23
        !          12000: charset
        !          12001: !      27      2       33
        !          12002: "      39      2       34
        !          12003: dq     "
        !          12004: #      46      2       35
        !          12005: $      46      3       36
        !          12006: %      73      2       37
        !          12007: &      59      2       38
        !          12008: '      23      2       39
        !          12009: (      27      3       40
        !          12010: )      27      3       41
        !          12011: *      32      2       42
        !          12012: +      48      0       43
        !          12013: ,      23      1       44
        !          12014: hy     27      0       45
        !          12015: -      "
        !          12016: .      23      0       46
        !          12017: /      23      2       47
        !          12018: 0      46      2       48
        !          12019: 1      46      2       49
        !          12020: 2      46      2       50
        !          12021: 3      46      2       51
        !          12022: 4      46      2       52
        !          12023: 5      46      2       53
        !          12024: 6      46      2       54
        !          12025: 7      46      2       55
        !          12026: 8      46      2       56
        !          12027: 9      46      2       57
        !          12028: :      27      0       58
        !          12029: ;      27      1       59
        !          12030: ---    48      0       60
        !          12031: =      48      0       61
        !          12032: ---    48      0       62
        !          12033: ?      50      2       63
        !          12034: @      80      3       64
        !          12035: A      59      2       65
        !          12036: B      59      2       66
        !          12037: C      59      2       67
        !          12038: D      59      2       68
        !          12039: E      55      2       69
        !          12040: F      50      2       70
        !          12041: G      64      2       71
        !          12042: H      59      2       72
        !          12043: I      23      2       73
        !          12044: J      46      2       74
        !          12045: K      59      2       75
        !          12046: L      50      2       76
        !          12047: M      68      2       77
        !          12048: N      59      2       78
        !          12049: O      64      2       79
        !          12050: P      55      2       80
        !          12051: Q      64      2       81
        !          12052: R      59      2       82
        !          12053: S      55      2       83
        !          12054: T      50      2       84
        !          12055: U      59      2       85
        !          12056: V      55      2       86
        !          12057: W      77      2       87
        !          12058: X      55      2       88
        !          12059: Y      55      2       89
        !          12060: Z      50      2       90
        !          12061: [      27      3       91
        !          12062: \      23      2       92
        !          12063: bs     "
        !          12064: ]      27      3       93
        !          12065: ---    48      2       94
        !          12066: ---    46      1       95
        !          12067: `      23      2       96
        !          12068: a      46      0       97
        !          12069: b      50      2       98
        !          12070: c      46      0       99
        !          12071: d      50      2       100
        !          12072: e      46      0       101
        !          12073: f      27      2       102
        !          12074: g      50      1       103
        !          12075: h      50      2       104
        !          12076: i      23      2       105
        !          12077: j      23      3       106
        !          12078: k      46      2       107
        !          12079: l      23      2       108
        !          12080: m      73      0       109
        !          12081: n      50      0       110
        !          12082: o      50      0       111
        !          12083: p      50      1       112
        !          12084: q      50      1       113
        !          12085: r      32      0       114
        !          12086: s      46      0       115
        !          12087: t      27      2       116
        !          12088: u      50      0       117
        !          12089: v      46      0       118
        !          12090: w      64      0       119
        !          12091: x      46      0       120
        !          12092: y      46      1       121
        !          12093: z      41      0       122
        !          12094: {      32      3       123
        !          12095: ---    23      3       124
        !          12096: }      32      3       125
        !          12097: ---    48      0       126
        !          12098: !!     27      1       161
        !          12099: ct     46      3       162
        !          12100: ps     46      2       163
        !          12101: fr     14      2       164
        !          12102: yn     46      2       165
        !          12103: fn     46      3       166
        !          12104: sc     46      3       167
        !          12105: cr     46      2       168
        !          12106: ---    20      2       169
        !          12107: ``     41      2       170
        !          12108: ---    46      0       171
        !          12109: ---    27      0       172
        !          12110: ---    27      0       173
        !          12111: fi     50      2       174
        !          12112: fl     50      2       175
        !          12113: en     46      0       177
        !          12114: \-     "
        !          12115: dg     46      3       178
        !          12116: dd     46      3       179
        !          12117: ---    23      0       180
        !          12118: pg     46      3       182
        !          12119: ---    29      0       183
        !          12120: ---    23      1       184
        !          12121: ---    41      1       185
        !          12122: ''     41      2       186
        !          12123: ---    46      0       187
        !          12124: ---    82      0       188
        !          12125: ---    82      2       189
        !          12126: ??     50      1       191
        !          12127: ga     27      2       193
        !          12128: \`     "
        !          12129: aa     27      2       194
        !          12130: \'     "
        !          12131: ^a     27      2       195
        !          12132: ^      "
        !          12133: ~a     27      2       196
        !          12134: ~      "
        !          12135: -a     27      2       197
        !          12136: Ua     27      2       198
        !          12137: .a     27      2       199
        !          12138: :a     27      2       200
        !          12139: oa     27      2       202
        !          12140: ,a     27      1       203
        !          12141: "a     27      2       205
        !          12142: Ca     27      1       206
        !          12143: va     27      2       207
        !          12144: em     82      0       208
        !          12145: ---    82      2       225
        !          12146: ---    30      2       227
        !          12147: ---    50      2       232
        !          12148: ---    64      2       233
        !          12149: ---    82      2       234
        !          12150: ---    30      2       235
        !          12151: ---    73      0       241
        !          12152: ---    23      0       245
        !          12153: ---    23      2       248
        !          12154: ---    50      0       249
        !          12155: ---    77      0       250
        !          12156: ---    50      2       251
        !          12157: 0707070014231216741006440057030057030000010641440522627501100002400000003374post.src/devpost/Hiname Hi
        !          12158: fontname Helvetica-Narrow-Oblique
        !          12159: named in prologue
        !          12160: ligatures fi fl 0
        !          12161: spacewidth 23
        !          12162: charset
        !          12163: !      23      2       33
        !          12164: "      29      2       34
        !          12165: dq     "
        !          12166: #      46      2       35
        !          12167: $      46      3       36
        !          12168: %      73      2       37
        !          12169: &      55      2       38
        !          12170: '      18      2       39
        !          12171: (      27      3       40
        !          12172: )      27      3       41
        !          12173: *      32      2       42
        !          12174: +      48      0       43
        !          12175: ,      23      1       44
        !          12176: hy     27      0       45
        !          12177: -      "
        !          12178: .      23      0       46
        !          12179: /      23      2       47
        !          12180: 0      46      2       48
        !          12181: 1      46      2       49
        !          12182: 2      46      2       50
        !          12183: 3      46      2       51
        !          12184: 4      46      2       52
        !          12185: 5      46      2       53
        !          12186: 6      46      2       54
        !          12187: 7      46      2       55
        !          12188: 8      46      2       56
        !          12189: 9      46      2       57
        !          12190: :      23      0       58
        !          12191: ;      23      1       59
        !          12192: ---    48      0       60
        !          12193: =      48      0       61
        !          12194: ---    48      0       62
        !          12195: ?      46      2       63
        !          12196: @      83      3       64
        !          12197: A      55      2       65
        !          12198: B      55      2       66
        !          12199: C      59      2       67
        !          12200: D      59      2       68
        !          12201: E      55      2       69
        !          12202: F      50      2       70
        !          12203: G      64      2       71
        !          12204: H      59      2       72
        !          12205: I      23      2       73
        !          12206: J      41      2       74
        !          12207: K      55      2       75
        !          12208: L      46      2       76
        !          12209: M      68      2       77
        !          12210: N      59      2       78
        !          12211: O      64      2       79
        !          12212: P      55      2       80
        !          12213: Q      64      2       81
        !          12214: R      59      2       82
        !          12215: S      55      2       83
        !          12216: T      50      2       84
        !          12217: U      59      2       85
        !          12218: V      55      2       86
        !          12219: W      77      2       87
        !          12220: X      55      2       88
        !          12221: Y      55      2       89
        !          12222: Z      50      2       90
        !          12223: [      23      3       91
        !          12224: \      23      2       92
        !          12225: bs     "
        !          12226: ]      23      3       93
        !          12227: ---    38      2       94
        !          12228: ---    46      1       95
        !          12229: `      18      2       96
        !          12230: a      46      0       97
        !          12231: b      46      2       98
        !          12232: c      41      0       99
        !          12233: d      46      2       100
        !          12234: e      46      0       101
        !          12235: f      23      2       102
        !          12236: g      46      1       103
        !          12237: h      46      2       104
        !          12238: i      18      2       105
        !          12239: j      18      3       106
        !          12240: k      41      2       107
        !          12241: l      18      2       108
        !          12242: m      68      0       109
        !          12243: n      46      0       110
        !          12244: o      46      0       111
        !          12245: p      46      1       112
        !          12246: q      46      1       113
        !          12247: r      27      0       114
        !          12248: s      41      0       115
        !          12249: t      23      2       116
        !          12250: u      46      0       117
        !          12251: v      41      0       118
        !          12252: w      59      0       119
        !          12253: x      41      0       120
        !          12254: y      41      1       121
        !          12255: z      41      0       122
        !          12256: {      27      3       123
        !          12257: ---    21      3       124
        !          12258: }      27      3       125
        !          12259: ---    48      0       126
        !          12260: !!     27      1       161
        !          12261: ct     46      3       162
        !          12262: ps     46      2       163
        !          12263: fr     14      2       164
        !          12264: yn     46      2       165
        !          12265: fn     46      3       166
        !          12266: sc     46      3       167
        !          12267: cr     46      0       168
        !          12268: ---    16      2       169
        !          12269: ``     27      2       170
        !          12270: ---    46      0       171
        !          12271: ---    27      0       172
        !          12272: ---    27      0       173
        !          12273: fi     41      2       174
        !          12274: fl     41      2       175
        !          12275: en     46      0       177
        !          12276: \-     "
        !          12277: dg     46      3       178
        !          12278: dd     46      3       179
        !          12279: ---    23      0       180
        !          12280: pg     44      3       182
        !          12281: ---    29      0       183
        !          12282: ---    18      1       184
        !          12283: ---    27      1       185
        !          12284: ''     27      2       186
        !          12285: ---    46      0       187
        !          12286: ---    82      0       188
        !          12287: ---    82      2       189
        !          12288: ??     50      1       191
        !          12289: ga     27      2       193
        !          12290: \`     "
        !          12291: aa     27      2       194
        !          12292: \'     "
        !          12293: ^a     27      2       195
        !          12294: ^      "
        !          12295: ~a     27      2       196
        !          12296: ~      "
        !          12297: -a     27      2       197
        !          12298: Ua     27      2       198
        !          12299: .a     27      2       199
        !          12300: :a     27      2       200
        !          12301: oa     27      2       202
        !          12302: ,a     27      1       203
        !          12303: "a     27      2       205
        !          12304: Ca     27      1       206
        !          12305: va     27      2       207
        !          12306: em     82      0       208
        !          12307: ---    82      2       225
        !          12308: ---    30      2       227
        !          12309: ---    46      2       232
        !          12310: ---    64      2       233
        !          12311: ---    82      2       234
        !          12312: ---    30      2       235
        !          12313: ---    73      0       241
        !          12314: ---    23      0       245
        !          12315: ---    18      2       248
        !          12316: ---    50      0       249
        !          12317: ---    77      0       250
        !          12318: ---    50      2       251
        !          12319: 0707070014231216751006440057030057030000010641460522627501100002400000003364post.src/devpost/Hrname Hr
        !          12320: fontname Helvetica-Narrow
        !          12321: named in prologue
        !          12322: ligatures fi fl 0
        !          12323: spacewidth 23
        !          12324: charset
        !          12325: !      23      2       33
        !          12326: "      29      2       34
        !          12327: dq     "
        !          12328: #      46      2       35
        !          12329: $      46      3       36
        !          12330: %      73      2       37
        !          12331: &      55      2       38
        !          12332: '      18      2       39
        !          12333: (      27      3       40
        !          12334: )      27      3       41
        !          12335: *      32      2       42
        !          12336: +      48      0       43
        !          12337: ,      23      1       44
        !          12338: hy     27      0       45
        !          12339: -      "
        !          12340: .      23      0       46
        !          12341: /      23      2       47
        !          12342: 0      46      2       48
        !          12343: 1      46      2       49
        !          12344: 2      46      2       50
        !          12345: 3      46      2       51
        !          12346: 4      46      2       52
        !          12347: 5      46      2       53
        !          12348: 6      46      2       54
        !          12349: 7      46      2       55
        !          12350: 8      46      2       56
        !          12351: 9      46      2       57
        !          12352: :      23      0       58
        !          12353: ;      23      1       59
        !          12354: ---    48      0       60
        !          12355: =      48      0       61
        !          12356: ---    48      0       62
        !          12357: ?      46      2       63
        !          12358: @      83      3       64
        !          12359: A      55      2       65
        !          12360: B      55      2       66
        !          12361: C      59      2       67
        !          12362: D      59      2       68
        !          12363: E      55      2       69
        !          12364: F      50      2       70
        !          12365: G      64      2       71
        !          12366: H      59      2       72
        !          12367: I      23      2       73
        !          12368: J      41      2       74
        !          12369: K      55      2       75
        !          12370: L      46      2       76
        !          12371: M      68      2       77
        !          12372: N      59      2       78
        !          12373: O      64      2       79
        !          12374: P      55      2       80
        !          12375: Q      64      2       81
        !          12376: R      59      2       82
        !          12377: S      55      2       83
        !          12378: T      50      2       84
        !          12379: U      59      2       85
        !          12380: V      55      2       86
        !          12381: W      77      2       87
        !          12382: X      55      2       88
        !          12383: Y      55      2       89
        !          12384: Z      50      2       90
        !          12385: [      23      3       91
        !          12386: \      23      2       92
        !          12387: bs     "
        !          12388: ]      23      3       93
        !          12389: ---    38      2       94
        !          12390: ---    46      1       95
        !          12391: `      18      2       96
        !          12392: a      46      0       97
        !          12393: b      46      2       98
        !          12394: c      41      0       99
        !          12395: d      46      2       100
        !          12396: e      46      0       101
        !          12397: f      23      2       102
        !          12398: g      46      1       103
        !          12399: h      46      2       104
        !          12400: i      18      2       105
        !          12401: j      18      3       106
        !          12402: k      41      2       107
        !          12403: l      18      2       108
        !          12404: m      68      0       109
        !          12405: n      46      0       110
        !          12406: o      46      0       111
        !          12407: p      46      1       112
        !          12408: q      46      1       113
        !          12409: r      27      0       114
        !          12410: s      41      0       115
        !          12411: t      23      2       116
        !          12412: u      46      0       117
        !          12413: v      41      0       118
        !          12414: w      59      0       119
        !          12415: x      41      0       120
        !          12416: y      41      1       121
        !          12417: z      41      0       122
        !          12418: {      27      3       123
        !          12419: ---    21      3       124
        !          12420: }      27      3       125
        !          12421: ---    48      0       126
        !          12422: !!     27      1       161
        !          12423: ct     46      3       162
        !          12424: ps     46      2       163
        !          12425: fr     14      2       164
        !          12426: yn     46      2       165
        !          12427: fn     46      3       166
        !          12428: sc     46      3       167
        !          12429: cr     46      0       168
        !          12430: ---    16      2       169
        !          12431: ``     27      2       170
        !          12432: ---    46      0       171
        !          12433: ---    27      0       172
        !          12434: ---    27      0       173
        !          12435: fi     41      2       174
        !          12436: fl     41      2       175
        !          12437: en     46      0       177
        !          12438: \-     "
        !          12439: dg     46      3       178
        !          12440: dd     46      3       179
        !          12441: ---    23      0       180
        !          12442: pg     44      3       182
        !          12443: ---    29      0       183
        !          12444: ---    18      1       184
        !          12445: ---    27      1       185
        !          12446: ''     27      2       186
        !          12447: ---    46      0       187
        !          12448: ---    82      0       188
        !          12449: ---    82      2       189
        !          12450: ??     50      1       191
        !          12451: ga     27      2       193
        !          12452: \`     "
        !          12453: aa     27      2       194
        !          12454: \'     "
        !          12455: ^a     27      2       195
        !          12456: ^      "
        !          12457: ~a     27      2       196
        !          12458: ~      "
        !          12459: -a     27      2       197
        !          12460: Ua     27      2       198
        !          12461: .a     27      2       199
        !          12462: :a     27      2       200
        !          12463: oa     27      2       202
        !          12464: ,a     27      1       203
        !          12465: "a     27      2       205
        !          12466: Ca     27      1       206
        !          12467: va     27      2       207
        !          12468: em     82      0       208
        !          12469: ---    82      2       225
        !          12470: ---    30      2       227
        !          12471: ---    46      2       232
        !          12472: ---    64      2       233
        !          12473: ---    82      2       234
        !          12474: ---    30      2       235
        !          12475: ---    73      0       241
        !          12476: ---    23      0       245
        !          12477: ---    18      2       248
        !          12478: ---    50      0       249
        !          12479: ---    77      0       250
        !          12480: ---    50      2       251
        !          12481: 0707070014231216761006440057030057030000010641600522627501100002400000003400post.src/devpost/Hxname Hx
        !          12482: fontname Helvetica-Narrow-BoldOblique
        !          12483: named in prologue
        !          12484: ligatures fi fl 0
        !          12485: spacewidth 23
        !          12486: charset
        !          12487: !      27      2       33
        !          12488: "      39      2       34
        !          12489: dq     "
        !          12490: #      46      2       35
        !          12491: $      46      3       36
        !          12492: %      73      2       37
        !          12493: &      59      2       38
        !          12494: '      23      2       39
        !          12495: (      27      3       40
        !          12496: )      27      3       41
        !          12497: *      32      2       42
        !          12498: +      48      0       43
        !          12499: ,      23      1       44
        !          12500: hy     27      0       45
        !          12501: -      "
        !          12502: .      23      0       46
        !          12503: /      23      2       47
        !          12504: 0      46      2       48
        !          12505: 1      46      2       49
        !          12506: 2      46      2       50
        !          12507: 3      46      2       51
        !          12508: 4      46      2       52
        !          12509: 5      46      2       53
        !          12510: 6      46      2       54
        !          12511: 7      46      2       55
        !          12512: 8      46      2       56
        !          12513: 9      46      2       57
        !          12514: :      27      0       58
        !          12515: ;      27      1       59
        !          12516: ---    48      0       60
        !          12517: =      48      0       61
        !          12518: ---    48      0       62
        !          12519: ?      50      2       63
        !          12520: @      80      3       64
        !          12521: A      59      2       65
        !          12522: B      59      2       66
        !          12523: C      59      2       67
        !          12524: D      59      2       68
        !          12525: E      55      2       69
        !          12526: F      50      2       70
        !          12527: G      64      2       71
        !          12528: H      59      2       72
        !          12529: I      23      2       73
        !          12530: J      46      2       74
        !          12531: K      59      2       75
        !          12532: L      50      2       76
        !          12533: M      68      2       77
        !          12534: N      59      2       78
        !          12535: O      64      2       79
        !          12536: P      55      2       80
        !          12537: Q      64      2       81
        !          12538: R      59      2       82
        !          12539: S      55      2       83
        !          12540: T      50      2       84
        !          12541: U      59      2       85
        !          12542: V      55      2       86
        !          12543: W      77      2       87
        !          12544: X      55      2       88
        !          12545: Y      55      2       89
        !          12546: Z      50      2       90
        !          12547: [      27      3       91
        !          12548: \      23      2       92
        !          12549: bs     "
        !          12550: ]      27      3       93
        !          12551: ---    48      2       94
        !          12552: ---    46      1       95
        !          12553: `      23      2       96
        !          12554: a      46      0       97
        !          12555: b      50      2       98
        !          12556: c      46      0       99
        !          12557: d      50      2       100
        !          12558: e      46      0       101
        !          12559: f      27      2       102
        !          12560: g      50      1       103
        !          12561: h      50      2       104
        !          12562: i      23      2       105
        !          12563: j      23      3       106
        !          12564: k      46      2       107
        !          12565: l      23      2       108
        !          12566: m      73      0       109
        !          12567: n      50      0       110
        !          12568: o      50      0       111
        !          12569: p      50      1       112
        !          12570: q      50      1       113
        !          12571: r      32      0       114
        !          12572: s      46      0       115
        !          12573: t      27      2       116
        !          12574: u      50      0       117
        !          12575: v      46      0       118
        !          12576: w      64      0       119
        !          12577: x      46      0       120
        !          12578: y      46      1       121
        !          12579: z      41      0       122
        !          12580: {      32      3       123
        !          12581: ---    23      3       124
        !          12582: }      32      3       125
        !          12583: ---    48      0       126
        !          12584: !!     27      1       161
        !          12585: ct     46      3       162
        !          12586: ps     46      2       163
        !          12587: fr     14      2       164
        !          12588: yn     46      2       165
        !          12589: fn     46      3       166
        !          12590: sc     46      3       167
        !          12591: cr     46      2       168
        !          12592: ---    20      2       169
        !          12593: ``     41      2       170
        !          12594: ---    46      0       171
        !          12595: ---    27      0       172
        !          12596: ---    27      0       173
        !          12597: fi     50      2       174
        !          12598: fl     50      2       175
        !          12599: en     46      0       177
        !          12600: \-     "
        !          12601: dg     46      3       178
        !          12602: dd     46      3       179
        !          12603: ---    23      0       180
        !          12604: pg     46      3       182
        !          12605: ---    29      0       183
        !          12606: ---    23      1       184
        !          12607: ---    41      1       185
        !          12608: ''     41      2       186
        !          12609: ---    46      0       187
        !          12610: ---    82      0       188
        !          12611: ---    82      2       189
        !          12612: ??     50      1       191
        !          12613: ga     27      2       193
        !          12614: \`     "
        !          12615: aa     27      2       194
        !          12616: \'     "
        !          12617: ^a     27      2       195
        !          12618: ^      "
        !          12619: ~a     27      2       196
        !          12620: ~      "
        !          12621: -a     27      2       197
        !          12622: Ua     27      2       198
        !          12623: .a     27      2       199
        !          12624: :a     27      2       200
        !          12625: oa     27      2       202
        !          12626: ,a     27      1       203
        !          12627: "a     27      2       205
        !          12628: Ca     27      1       206
        !          12629: va     27      2       207
        !          12630: em     82      0       208
        !          12631: ---    82      2       225
        !          12632: ---    30      2       227
        !          12633: ---    50      2       232
        !          12634: ---    64      2       233
        !          12635: ---    82      2       234
        !          12636: ---    30      2       235
        !          12637: ---    73      0       241
        !          12638: ---    23      0       245
        !          12639: ---    23      2       248
        !          12640: ---    50      0       249
        !          12641: ---    77      0       250
        !          12642: ---    50      2       251
        !          12643: 0707070014231216771006440057030057030000010641620522627501100002300000003360post.src/devpost/Iname I
        !          12644: fontname Times-Italic
        !          12645: named in prologue
        !          12646: ligatures fi fl 0
        !          12647: spacewidth 25
        !          12648: charset
        !          12649: !      33      2       33
        !          12650: "      42      2       34
        !          12651: dq     "
        !          12652: #      50      2       35
        !          12653: $      50      2       36
        !          12654: %      83      2       37
        !          12655: &      78      2       38
        !          12656: '      33      2       39
        !          12657: (      33      3       40
        !          12658: )      33      3       41
        !          12659: *      50      2       42
        !          12660: +      68      2       43
        !          12661: ,      25      1       44
        !          12662: hy     33      0       45
        !          12663: -      "
        !          12664: .      25      0       46
        !          12665: /      28      2       47
        !          12666: 0      50      2       48
        !          12667: 1      50      2       49
        !          12668: 2      50      2       50
        !          12669: 3      50      2       51
        !          12670: 4      50      2       52
        !          12671: 5      50      2       53
        !          12672: 6      50      2       54
        !          12673: 7      50      2       55
        !          12674: 8      50      2       56
        !          12675: 9      50      2       57
        !          12676: :      33      0       58
        !          12677: ;      33      1       59
        !          12678: ---    68      2       60
        !          12679: =      68      0       61
        !          12680: ---    68      2       62
        !          12681: ?      50      2       63
        !          12682: @      92      3       64
        !          12683: A      61      2       65
        !          12684: B      61      2       66
        !          12685: C      67      2       67
        !          12686: D      72      2       68
        !          12687: E      61      2       69
        !          12688: F      61      2       70
        !          12689: G      72      2       71
        !          12690: H      72      2       72
        !          12691: I      33      2       73
        !          12692: J      44      2       74
        !          12693: K      67      2       75
        !          12694: L      56      2       76
        !          12695: M      83      2       77
        !          12696: N      67      2       78
        !          12697: O      72      2       79
        !          12698: P      61      2       80
        !          12699: Q      72      3       81
        !          12700: R      61      2       82
        !          12701: S      50      2       83
        !          12702: T      56      2       84
        !          12703: U      72      2       85
        !          12704: V      61      2       86
        !          12705: W      83      2       87
        !          12706: X      61      2       88
        !          12707: Y      56      2       89
        !          12708: Z      56      2       90
        !          12709: [      39      3       91
        !          12710: \      28      2       92
        !          12711: bs     "
        !          12712: ]      39      3       93
        !          12713: ---    42      2       94
        !          12714: ---    50      1       95
        !          12715: `      33      2       96
        !          12716: a      50      0       97
        !          12717: b      50      2       98
        !          12718: c      44      0       99
        !          12719: d      50      2       100
        !          12720: e      44      0       101
        !          12721: f      28      3       102
        !          12722: g      50      1       103
        !          12723: h      50      2       104
        !          12724: i      28      2       105
        !          12725: j      28      3       106
        !          12726: k      44      2       107
        !          12727: l      28      2       108
        !          12728: m      72      0       109
        !          12729: n      50      0       110
        !          12730: o      50      0       111
        !          12731: p      50      1       112
        !          12732: q      50      1       113
        !          12733: r      39      0       114
        !          12734: s      39      0       115
        !          12735: t      28      2       116
        !          12736: u      50      0       117
        !          12737: v      44      0       118
        !          12738: w      67      0       119
        !          12739: x      44      0       120
        !          12740: y      44      1       121
        !          12741: z      39      0       122
        !          12742: {      40      3       123
        !          12743: ---    27      3       124
        !          12744: }      40      3       125
        !          12745: ---    54      0       126
        !          12746: !!     39      1       161
        !          12747: ct     50      3       162
        !          12748: ps     50      2       163
        !          12749: fr     17      2       164
        !          12750: yn     50      2       165
        !          12751: fn     50      3       166
        !          12752: sc     50      2       167
        !          12753: cr     50      2       168
        !          12754: ---    21      2       169
        !          12755: ``     56      2       170
        !          12756: ---    50      0       171
        !          12757: ---    33      0       172
        !          12758: ---    33      0       173
        !          12759: fi     50      3       174
        !          12760: fl     50      3       175
        !          12761: en     50      0       177
        !          12762: \-     "
        !          12763: dg     50      2       178
        !          12764: dd     50      2       179
        !          12765: ---    25      0       180
        !          12766: pg     52      3       182
        !          12767: ---    35      0       183
        !          12768: ---    33      1       184
        !          12769: ---    56      1       185
        !          12770: ''     56      2       186
        !          12771: ---    50      0       187
        !          12772: ---    89      0       188
        !          12773: ---    100     2       189
        !          12774: ??     50      1       191
        !          12775: ga     33      2       193
        !          12776: \`     "
        !          12777: aa     33      2       194
        !          12778: \'     "
        !          12779: ^a     33      2       195
        !          12780: ^      "
        !          12781: ~a     33      2       196
        !          12782: ~      "
        !          12783: -a     33      2       197
        !          12784: Ua     33      2       198
        !          12785: .a     33      2       199
        !          12786: :a     33      2       200
        !          12787: oa     33      2       202
        !          12788: ,a     33      1       203
        !          12789: "a     33      2       205
        !          12790: Ca     33      1       206
        !          12791: va     33      2       207
        !          12792: em     89      0       208
        !          12793: ---    89      2       225
        !          12794: ---    28      2       227
        !          12795: ---    56      2       232
        !          12796: ---    72      3       233
        !          12797: ---    94      2       234
        !          12798: ---    31      2       235
        !          12799: ---    67      0       241
        !          12800: ---    28      0       245
        !          12801: ---    28      2       248
        !          12802: ---    50      3       249
        !          12803: ---    67      0       250
        !          12804: ---    50      3       251
        !          12805: 0707070014231217001006440057030057030000010641640522627501100002400000003366post.src/devpost/KBname KB
        !          12806: fontname Bookman-Demi
        !          12807: named in prologue
        !          12808: ligatures fi fl 0
        !          12809: spacewidth 34
        !          12810: charset
        !          12811: !      36      2       33
        !          12812: "      42      2       34
        !          12813: dq     "
        !          12814: #      60      2       35
        !          12815: $      66      3       36
        !          12816: %      94      2       37
        !          12817: &      80      2       38
        !          12818: '      32      2       39
        !          12819: (      32      3       40
        !          12820: )      32      3       41
        !          12821: *      46      2       42
        !          12822: +      60      0       43
        !          12823: ,      34      1       44
        !          12824: hy     36      0       45
        !          12825: -      "
        !          12826: .      34      0       46
        !          12827: /      60      3       47
        !          12828: 0      66      2       48
        !          12829: 1      66      2       49
        !          12830: 2      66      2       50
        !          12831: 3      66      2       51
        !          12832: 4      66      2       52
        !          12833: 5      66      2       53
        !          12834: 6      66      2       54
        !          12835: 7      66      2       55
        !          12836: 8      66      2       56
        !          12837: 9      66      2       57
        !          12838: :      34      0       58
        !          12839: ;      34      1       59
        !          12840: ---    60      0       60
        !          12841: =      60      0       61
        !          12842: ---    60      0       62
        !          12843: ?      66      2       63
        !          12844: @      82      2       64
        !          12845: A      72      2       65
        !          12846: B      72      2       66
        !          12847: C      74      2       67
        !          12848: D      78      2       68
        !          12849: E      72      2       69
        !          12850: F      68      2       70
        !          12851: G      78      2       71
        !          12852: H      82      2       72
        !          12853: I      40      2       73
        !          12854: J      64      2       74
        !          12855: K      80      2       75
        !          12856: L      64      2       76
        !          12857: M      94      2       77
        !          12858: N      74      2       78
        !          12859: O      80      2       79
        !          12860: P      66      2       80
        !          12861: Q      80      3       81
        !          12862: R      78      2       82
        !          12863: S      66      2       83
        !          12864: T      70      2       84
        !          12865: U      74      2       85
        !          12866: V      72      2       86
        !          12867: W      94      2       87
        !          12868: X      78      2       88
        !          12869: Y      70      2       89
        !          12870: Z      64      2       90
        !          12871: [      30      3       91
        !          12872: \      60      2       92
        !          12873: bs     "
        !          12874: ]      30      3       93
        !          12875: ---    60      2       94
        !          12876: ---    50      1       95
        !          12877: `      32      2       96
        !          12878: a      58      0       97
        !          12879: b      60      2       98
        !          12880: c      58      0       99
        !          12881: d      64      2       100
        !          12882: e      58      0       101
        !          12883: f      38      2       102
        !          12884: g      58      3       103
        !          12885: h      68      2       104
        !          12886: i      36      2       105
        !          12887: j      34      3       106
        !          12888: k      66      2       107
        !          12889: l      34      2       108
        !          12890: m      100     0       109
        !          12891: n      68      0       110
        !          12892: o      62      0       111
        !          12893: p      64      1       112
        !          12894: q      62      1       113
        !          12895: r      46      0       114
        !          12896: s      52      0       115
        !          12897: t      46      2       116
        !          12898: u      66      0       117
        !          12899: v      60      0       118
        !          12900: w      80      0       119
        !          12901: x      60      0       120
        !          12902: y      62      1       121
        !          12903: z      56      0       122
        !          12904: {      32      3       123
        !          12905: ---    60      2       124
        !          12906: }      32      3       125
        !          12907: ---    60      0       126
        !          12908: !!     36      1       161
        !          12909: ct     66      2       162
        !          12910: ps     66      2       163
        !          12911: fr     12      2       164
        !          12912: yn     66      2       165
        !          12913: fn     66      3       166
        !          12914: sc     60      3       167
        !          12915: cr     60      2       168
        !          12916: ---    24      2       169
        !          12917: ``     54      2       170
        !          12918: ---    40      0       171
        !          12919: ---    22      0       172
        !          12920: ---    22      0       173
        !          12921: fi     74      2       174
        !          12922: fl     74      2       175
        !          12923: en     50      0       177
        !          12924: \-     "
        !          12925: dg     44      3       178
        !          12926: dd     38      3       179
        !          12927: ---    34      0       180
        !          12928: pg     80      2       182
        !          12929: ---    46      0       183
        !          12930: ---    32      1       184
        !          12931: ---    54      1       185
        !          12932: ''     54      2       186
        !          12933: ---    40      0       187
        !          12934: ---    100     0       188
        !          12935: ---    136     2       189
        !          12936: ??     66      1       191
        !          12937: ga     40      2       193
        !          12938: \`     "
        !          12939: aa     40      2       194
        !          12940: \'     "
        !          12941: ^a     50      2       195
        !          12942: ^      "
        !          12943: ~a     48      2       196
        !          12944: ~      "
        !          12945: -a     46      2       197
        !          12946: Ua     50      2       198
        !          12947: .a     32      2       199
        !          12948: :a     50      2       200
        !          12949: oa     34      2       202
        !          12950: ,a     36      1       203
        !          12951: "a     44      2       205
        !          12952: Ca     32      1       206
        !          12953: va     50      2       207
        !          12954: em     100     0       208
        !          12955: ---    114     2       225
        !          12956: ---    40      2       227
        !          12957: ---    64      2       232
        !          12958: ---    80      3       233
        !          12959: ---    122     2       234
        !          12960: ---    40      2       235
        !          12961: ---    88      0       241
        !          12962: ---    36      0       245
        !          12963: ---    34      2       248
        !          12964: ---    62      0       249
        !          12965: ---    94      0       250
        !          12966: ---    66      2       251
        !          12967: 0707070014231217011006440057030057030000010641660522627501100002400000003373post.src/devpost/KIname KI
        !          12968: fontname Bookman-LightItalic
        !          12969: named in prologue
        !          12970: ligatures fi fl 0
        !          12971: spacewidth 30
        !          12972: charset
        !          12973: !      32      2       33
        !          12974: "      36      2       34
        !          12975: dq     "
        !          12976: #      60      2       35
        !          12977: $      62      2       36
        !          12978: %      80      2       37
        !          12979: &      82      2       38
        !          12980: '      28      2       39
        !          12981: (      28      3       40
        !          12982: )      28      3       41
        !          12983: *      44      2       42
        !          12984: +      60      2       43
        !          12985: ,      30      1       44
        !          12986: hy     32      0       45
        !          12987: -      "
        !          12988: .      30      0       46
        !          12989: /      60      3       47
        !          12990: 0      62      2       48
        !          12991: 1      62      2       49
        !          12992: 2      62      2       50
        !          12993: 3      62      2       51
        !          12994: 4      62      2       52
        !          12995: 5      62      2       53
        !          12996: 6      62      2       54
        !          12997: 7      62      2       55
        !          12998: 8      62      2       56
        !          12999: 9      62      2       57
        !          13000: :      30      0       58
        !          13001: ;      30      1       59
        !          13002: ---    60      2       60
        !          13003: =      60      0       61
        !          13004: ---    60      2       62
        !          13005: ?      54      2       63
        !          13006: @      78      2       64
        !          13007: A      70      2       65
        !          13008: B      72      2       66
        !          13009: C      72      2       67
        !          13010: D      74      2       68
        !          13011: E      68      2       69
        !          13012: F      62      2       70
        !          13013: G      76      2       71
        !          13014: H      80      2       72
        !          13015: I      32      2       73
        !          13016: J      56      2       74
        !          13017: K      72      2       75
        !          13018: L      58      2       76
        !          13019: M      86      2       77
        !          13020: N      72      2       78
        !          13021: O      76      2       79
        !          13022: P      60      2       80
        !          13023: Q      78      3       81
        !          13024: R      70      2       82
        !          13025: S      64      2       83
        !          13026: T      60      2       84
        !          13027: U      72      2       85
        !          13028: V      68      2       86
        !          13029: W      96      2       87
        !          13030: X      70      2       88
        !          13031: Y      66      2       89
        !          13032: Z      58      2       90
        !          13033: [      26      3       91
        !          13034: \      60      2       92
        !          13035: bs     "
        !          13036: ]      26      3       93
        !          13037: ---    60      2       94
        !          13038: ---    50      1       95
        !          13039: `      28      2       96
        !          13040: a      62      0       97
        !          13041: b      60      2       98
        !          13042: c      48      0       99
        !          13043: d      64      2       100
        !          13044: e      54      0       101
        !          13045: f      34      3       102
        !          13046: g      56      1       103
        !          13047: h      62      2       104
        !          13048: i      28      2       105
        !          13049: j      28      3       106
        !          13050: k      60      2       107
        !          13051: l      28      2       108
        !          13052: m      88      0       109
        !          13053: n      62      0       110
        !          13054: o      54      0       111
        !          13055: p      60      1       112
        !          13056: q      56      1       113
        !          13057: r      40      0       114
        !          13058: s      54      0       115
        !          13059: t      34      2       116
        !          13060: u      62      0       117
        !          13061: v      54      0       118
        !          13062: w      88      0       119
        !          13063: x      54      0       120
        !          13064: y      60      1       121
        !          13065: z      52      0       122
        !          13066: {      36      3       123
        !          13067: ---    60      2       124
        !          13068: }      38      3       125
        !          13069: ---    60      0       126
        !          13070: !!     32      1       161
        !          13071: ct     62      2       162
        !          13072: ps     62      2       163
        !          13073: fr     2       2       164
        !          13074: yn     62      2       165
        !          13075: fn     62      3       166
        !          13076: sc     62      3       167
        !          13077: cr     60      2       168
        !          13078: ---    20      2       169
        !          13079: ``     44      2       170
        !          13080: ---    30      0       171
        !          13081: ---    18      0       172
        !          13082: ---    18      0       173
        !          13083: fi     64      3       174
        !          13084: fl     66      3       175
        !          13085: en     50      0       177
        !          13086: \-     "
        !          13087: dg     62      3       178
        !          13088: dd     62      3       179
        !          13089: ---    30      0       180
        !          13090: pg     62      2       182
        !          13091: ---    46      0       183
        !          13092: ---    32      1       184
        !          13093: ---    48      1       185
        !          13094: ''     44      2       186
        !          13095: ---    30      0       187
        !          13096: ---    100     0       188
        !          13097: ---    118     2       189
        !          13098: ??     54      1       191
        !          13099: ga     34      2       193
        !          13100: \`     "
        !          13101: aa     32      2       194
        !          13102: \'     "
        !          13103: ^a     44      2       195
        !          13104: ^      "
        !          13105: ~a     44      2       196
        !          13106: ~      "
        !          13107: -a     44      2       197
        !          13108: Ua     44      2       198
        !          13109: .a     26      2       199
        !          13110: :a     42      2       200
        !          13111: oa     30      2       202
        !          13112: ,a     32      1       203
        !          13113: "a     34      2       205
        !          13114: Ca     26      1       206
        !          13115: va     44      2       207
        !          13116: em     100     0       208
        !          13117: ---    122     2       225
        !          13118: ---    44      2       227
        !          13119: ---    58      2       232
        !          13120: ---    76      2       233
        !          13121: ---    118     2       234
        !          13122: ---    40      2       235
        !          13123: ---    88      0       241
        !          13124: ---    28      0       245
        !          13125: ---    34      2       248
        !          13126: ---    54      0       249
        !          13127: ---    90      0       250
        !          13128: ---    62      3       251
        !          13129: 0707070014231217021006440057030057030000010642000522627501100002400000003366post.src/devpost/KRname KR
        !          13130: fontname Bookman-Light
        !          13131: named in prologue
        !          13132: ligatures fi fl 0
        !          13133: spacewidth 32
        !          13134: charset
        !          13135: !      30      2       33
        !          13136: "      38      2       34
        !          13137: dq     "
        !          13138: #      60      2       35
        !          13139: $      62      2       36
        !          13140: %      90      2       37
        !          13141: &      80      2       38
        !          13142: '      22      2       39
        !          13143: (      30      3       40
        !          13144: )      30      3       41
        !          13145: *      44      2       42
        !          13146: +      60      0       43
        !          13147: ,      32      1       44
        !          13148: hy     40      0       45
        !          13149: -      "
        !          13150: .      32      0       46
        !          13151: /      60      3       47
        !          13152: 0      62      2       48
        !          13153: 1      62      2       49
        !          13154: 2      62      2       50
        !          13155: 3      62      2       51
        !          13156: 4      62      2       52
        !          13157: 5      62      2       53
        !          13158: 6      62      2       54
        !          13159: 7      62      2       55
        !          13160: 8      62      2       56
        !          13161: 9      62      2       57
        !          13162: :      32      0       58
        !          13163: ;      32      1       59
        !          13164: ---    60      0       60
        !          13165: =      60      0       61
        !          13166: ---    60      0       62
        !          13167: ?      54      2       63
        !          13168: @      82      2       64
        !          13169: A      68      2       65
        !          13170: B      74      2       66
        !          13171: C      74      2       67
        !          13172: D      80      2       68
        !          13173: E      72      2       69
        !          13174: F      64      2       70
        !          13175: G      80      2       71
        !          13176: H      80      2       72
        !          13177: I      34      2       73
        !          13178: J      60      2       74
        !          13179: K      72      2       75
        !          13180: L      60      2       76
        !          13181: M      92      2       77
        !          13182: N      74      2       78
        !          13183: O      80      2       79
        !          13184: P      62      2       80
        !          13185: Q      82      3       81
        !          13186: R      72      2       82
        !          13187: S      66      2       83
        !          13188: T      62      2       84
        !          13189: U      78      2       85
        !          13190: V      70      2       86
        !          13191: W      96      2       87
        !          13192: X      72      2       88
        !          13193: Y      64      2       89
        !          13194: Z      64      2       90
        !          13195: [      30      3       91
        !          13196: \      60      2       92
        !          13197: bs     "
        !          13198: ]      30      3       93
        !          13199: ---    60      2       94
        !          13200: ---    50      1       95
        !          13201: `      22      2       96
        !          13202: a      58      0       97
        !          13203: b      62      2       98
        !          13204: c      52      0       99
        !          13205: d      62      2       100
        !          13206: e      52      0       101
        !          13207: f      32      2       102
        !          13208: g      54      3       103
        !          13209: h      66      2       104
        !          13210: i      30      2       105
        !          13211: j      30      3       106
        !          13212: k      62      2       107
        !          13213: l      30      2       108
        !          13214: m      94      0       109
        !          13215: n      66      0       110
        !          13216: o      56      0       111
        !          13217: p      62      1       112
        !          13218: q      58      1       113
        !          13219: r      44      0       114
        !          13220: s      52      0       115
        !          13221: t      38      2       116
        !          13222: u      68      0       117
        !          13223: v      52      0       118
        !          13224: w      78      0       119
        !          13225: x      56      0       120
        !          13226: y      54      1       121
        !          13227: z      48      0       122
        !          13228: {      28      3       123
        !          13229: ---    60      2       124
        !          13230: }      28      3       125
        !          13231: ---    60      0       126
        !          13232: !!     30      1       161
        !          13233: ct     62      2       162
        !          13234: ps     62      2       163
        !          13235: fr     14      2       164
        !          13236: yn     62      2       165
        !          13237: fn     62      3       166
        !          13238: sc     52      3       167
        !          13239: cr     60      2       168
        !          13240: ---    22      2       169
        !          13241: ``     40      2       170
        !          13242: ---    36      0       171
        !          13243: ---    24      0       172
        !          13244: ---    24      0       173
        !          13245: fi     62      2       174
        !          13246: fl     62      2       175
        !          13247: en     50      0       177
        !          13248: \-     "
        !          13249: dg     54      3       178
        !          13250: dd     54      3       179
        !          13251: ---    32      0       180
        !          13252: pg     60      2       182
        !          13253: ---    46      0       183
        !          13254: ---    22      0       184
        !          13255: ---    40      0       185
        !          13256: ''     40      2       186
        !          13257: ---    36      0       187
        !          13258: ---    100     0       188
        !          13259: ---    128     2       189
        !          13260: ??     54      1       191
        !          13261: ga     34      2       193
        !          13262: \`     "
        !          13263: aa     34      2       194
        !          13264: \'     "
        !          13265: ^a     42      2       195
        !          13266: ^      "
        !          13267: ~a     44      2       196
        !          13268: ~      "
        !          13269: -a     44      2       197
        !          13270: Ua     46      2       198
        !          13271: .a     26      2       199
        !          13272: :a     42      2       200
        !          13273: oa     32      2       202
        !          13274: ,a     32      1       203
        !          13275: "a     38      2       205
        !          13276: Ca     32      1       206
        !          13277: va     42      2       207
        !          13278: em     100     0       208
        !          13279: ---    126     2       225
        !          13280: ---    42      2       227
        !          13281: ---    60      2       232
        !          13282: ---    80      2       233
        !          13283: ---    124     2       234
        !          13284: ---    42      2       235
        !          13285: ---    86      0       241
        !          13286: ---    30      0       245
        !          13287: ---    32      2       248
        !          13288: ---    56      0       249
        !          13289: ---    90      0       250
        !          13290: ---    66      2       251
        !          13291: 0707070014231217031006440057030057030000010642020522627501100002400000003374post.src/devpost/KXname KX
        !          13292: fontname Bookman-DemiItalic
        !          13293: named in prologue
        !          13294: ligatures fi fl 0
        !          13295: spacewidth 34
        !          13296: charset
        !          13297: !      32      2       33
        !          13298: "      38      2       34
        !          13299: dq     "
        !          13300: #      60      2       35
        !          13301: $      68      3       36
        !          13302: %      88      2       37
        !          13303: &      98      2       38
        !          13304: '      32      2       39
        !          13305: (      26      3       40
        !          13306: )      26      3       41
        !          13307: *      46      2       42
        !          13308: +      60      0       43
        !          13309: ,      34      1       44
        !          13310: hy     28      0       45
        !          13311: -      "
        !          13312: .      34      0       46
        !          13313: /      36      2       47
        !          13314: 0      68      2       48
        !          13315: 1      68      2       49
        !          13316: 2      68      2       50
        !          13317: 3      68      2       51
        !          13318: 4      68      2       52
        !          13319: 5      68      2       53
        !          13320: 6      68      2       54
        !          13321: 7      68      2       55
        !          13322: 8      68      2       56
        !          13323: 9      68      2       57
        !          13324: :      34      0       58
        !          13325: ;      34      1       59
        !          13326: ---    62      0       60
        !          13327: =      60      0       61
        !          13328: ---    62      0       62
        !          13329: ?      62      2       63
        !          13330: @      78      2       64
        !          13331: A      72      2       65
        !          13332: B      72      2       66
        !          13333: C      70      2       67
        !          13334: D      76      2       68
        !          13335: E      72      2       69
        !          13336: F      66      2       70
        !          13337: G      76      2       71
        !          13338: H      80      2       72
        !          13339: I      38      2       73
        !          13340: J      62      2       74
        !          13341: K      78      2       75
        !          13342: L      64      2       76
        !          13343: M      86      2       77
        !          13344: N      74      2       78
        !          13345: O      76      2       79
        !          13346: P      64      2       80
        !          13347: Q      76      3       81
        !          13348: R      74      2       82
        !          13349: S      70      2       83
        !          13350: T      70      2       84
        !          13351: U      74      2       85
        !          13352: V      66      2       86
        !          13353: W      100     2       87
        !          13354: X      74      2       88
        !          13355: Y      66      2       89
        !          13356: Z      68      2       90
        !          13357: [      26      3       91
        !          13358: \      58      2       92
        !          13359: bs     "
        !          13360: ]      26      3       93
        !          13361: ---    62      2       94
        !          13362: ---    50      1       95
        !          13363: `      32      2       96
        !          13364: a      68      0       97
        !          13365: b      60      2       98
        !          13366: c      56      0       99
        !          13367: d      68      2       100
        !          13368: e      56      0       101
        !          13369: f      42      3       102
        !          13370: g      62      1       103
        !          13371: h      70      2       104
        !          13372: i      38      2       105
        !          13373: j      32      3       106
        !          13374: k      70      2       107
        !          13375: l      38      2       108
        !          13376: m      96      0       109
        !          13377: n      68      0       110
        !          13378: o      60      0       111
        !          13379: p      66      1       112
        !          13380: q      62      1       113
        !          13381: r      50      0       114
        !          13382: s      54      0       115
        !          13383: t      44      2       116
        !          13384: u      68      0       117
        !          13385: v      54      0       118
        !          13386: w      86      0       119
        !          13387: x      62      0       120
        !          13388: y      60      1       121
        !          13389: z      56      0       122
        !          13390: {      30      3       123
        !          13391: ---    62      2       124
        !          13392: }      30      3       125
        !          13393: ---    62      0       126
        !          13394: !!     32      1       161
        !          13395: ct     68      2       162
        !          13396: ps     68      2       163
        !          13397: fr     12      2       164
        !          13398: yn     68      2       165
        !          13399: fn     68      3       166
        !          13400: sc     62      3       167
        !          13401: cr     68      2       168
        !          13402: ---    18      2       169
        !          13403: ``     52      2       170
        !          13404: ---    38      0       171
        !          13405: ---    22      0       172
        !          13406: ---    22      0       173
        !          13407: fi     82      3       174
        !          13408: fl     82      3       175
        !          13409: en     50      0       177
        !          13410: \-     "
        !          13411: dg     42      3       178
        !          13412: dd     42      3       179
        !          13413: ---    34      0       180
        !          13414: pg     68      3       182
        !          13415: ---    36      0       183
        !          13416: ---    30      1       184
        !          13417: ---    52      1       185
        !          13418: ''     52      2       186
        !          13419: ---    38      0       187
        !          13420: ---    100     0       188
        !          13421: ---    136     2       189
        !          13422: ??     62      1       191
        !          13423: ga     38      2       193
        !          13424: \`     "
        !          13425: aa     34      2       194
        !          13426: \'     "
        !          13427: ^a     48      2       195
        !          13428: ^      "
        !          13429: ~a     48      2       196
        !          13430: ~      "
        !          13431: -a     48      2       197
        !          13432: Ua     46      2       198
        !          13433: .a     38      2       199
        !          13434: :a     52      2       200
        !          13435: oa     36      2       202
        !          13436: ,a     36      1       203
        !          13437: "a     56      2       205
        !          13438: Ca     32      1       206
        !          13439: va     48      2       207
        !          13440: em     100     0       208
        !          13441: ---    114     2       225
        !          13442: ---    44      2       227
        !          13443: ---    64      2       232
        !          13444: ---    76      2       233
        !          13445: ---    118     2       234
        !          13446: ---    44      2       235
        !          13447: ---    88      0       241
        !          13448: ---    38      0       245
        !          13449: ---    38      2       248
        !          13450: ---    60      2       249
        !          13451: ---    92      0       250
        !          13452: ---    66      3       251
        !          13453: 0707070014231217041006440057030057030000010642040522627501100002300000003242post.src/devpost/Cname C
        !          13454: fontname Courier
        !          13455: spacewidth 60
        !          13456: charset
        !          13457: !      60      2       33
        !          13458: "      60      2       34
        !          13459: dq     "
        !          13460: #      60      2       35
        !          13461: $      60      2       36
        !          13462: %      60      2       37
        !          13463: &      60      2       38
        !          13464: '      60      2       39
        !          13465: (      60      3       40
        !          13466: )      60      3       41
        !          13467: *      60      2       42
        !          13468: +      60      2       43
        !          13469: ,      60      1       44
        !          13470: hy     60      0       45
        !          13471: -      "
        !          13472: .      60      0       46
        !          13473: /      60      2       47
        !          13474: 0      60      2       48
        !          13475: 1      60      2       49
        !          13476: 2      60      2       50
        !          13477: 3      60      2       51
        !          13478: 4      60      2       52
        !          13479: 5      60      2       53
        !          13480: 6      60      2       54
        !          13481: 7      60      2       55
        !          13482: 8      60      2       56
        !          13483: 9      60      2       57
        !          13484: :      60      0       58
        !          13485: ;      60      0       59
        !          13486: <      60      2       60
        !          13487: =      60      0       61
        !          13488: >      60      2       62
        !          13489: ?      60      2       63
        !          13490: @      60      2       64
        !          13491: A      60      2       65
        !          13492: B      60      2       66
        !          13493: C      60      2       67
        !          13494: D      60      2       68
        !          13495: E      60      2       69
        !          13496: F      60      2       70
        !          13497: G      60      2       71
        !          13498: H      60      2       72
        !          13499: I      60      2       73
        !          13500: J      60      2       74
        !          13501: K      60      2       75
        !          13502: L      60      2       76
        !          13503: M      60      2       77
        !          13504: N      60      2       78
        !          13505: O      60      2       79
        !          13506: P      60      2       80
        !          13507: Q      60      3       81
        !          13508: R      60      2       82
        !          13509: S      60      2       83
        !          13510: T      60      2       84
        !          13511: U      60      2       85
        !          13512: V      60      2       86
        !          13513: W      60      2       87
        !          13514: X      60      2       88
        !          13515: Y      60      2       89
        !          13516: Z      60      2       90
        !          13517: [      60      3       91
        !          13518: \      60      2       92
        !          13519: bs     "
        !          13520: ]      60      3       93
        !          13521: ^      60      2       94
        !          13522: _      60      1       95
        !          13523: `      60      2       96
        !          13524: a      60      0       97
        !          13525: b      60      2       98
        !          13526: c      60      0       99
        !          13527: d      60      2       100
        !          13528: e      60      0       101
        !          13529: f      60      2       102
        !          13530: g      60      1       103
        !          13531: h      60      2       104
        !          13532: i      60      2       105
        !          13533: j      60      3       106
        !          13534: k      60      2       107
        !          13535: l      60      2       108
        !          13536: m      60      0       109
        !          13537: n      60      0       110
        !          13538: o      60      0       111
        !          13539: p      60      1       112
        !          13540: q      60      1       113
        !          13541: r      60      0       114
        !          13542: s      60      0       115
        !          13543: t      60      2       116
        !          13544: u      60      0       117
        !          13545: v      60      0       118
        !          13546: w      60      0       119
        !          13547: x      60      0       120
        !          13548: y      60      1       121
        !          13549: z      60      0       122
        !          13550: {      60      3       123
        !          13551: |      60      3       124
        !          13552: }      60      3       125
        !          13553: ~      60      0       126
        !          13554: !!     60      1       161
        !          13555: ct     60      2       162
        !          13556: ps     60      2       163
        !          13557: fr     60      2       164
        !          13558: yn     60      2       165
        !          13559: fn     60      2       166
        !          13560: sc     60      2       167
        !          13561: cr     60      2       168
        !          13562: ---    60      2       169
        !          13563: ``     60      2       170
        !          13564: ---    60      0       171
        !          13565: ---    60      0       172
        !          13566: ---    60      0       173
        !          13567: en     60      0       177
        !          13568: \-     "
        !          13569: dg     60      2       178
        !          13570: dd     60      2       179
        !          13571: ---    60      0       180
        !          13572: pg     60      2       182
        !          13573: ---    60      0       183
        !          13574: ---    60      1       184
        !          13575: ---    60      1       185
        !          13576: ''     60      2       186
        !          13577: ---    60      0       187
        !          13578: ---    60      0       188
        !          13579: ---    60      2       189
        !          13580: ??     60      1       191
        !          13581: ga     60      2       193
        !          13582: \`     "
        !          13583: aa     60      2       194
        !          13584: \'     "
        !          13585: ^a     60      2       195
        !          13586: ^      "
        !          13587: ~a     60      2       196
        !          13588: ~      "
        !          13589: -a     60      2       197
        !          13590: Ua     60      2       198
        !          13591: .a     60      2       199
        !          13592: :a     60      2       200
        !          13593: oa     60      2       202
        !          13594: ,a     60      1       203
        !          13595: "a     60      2       205
        !          13596: Ca     60      1       206
        !          13597: va     60      2       207
        !          13598: em     60      0       208
        !          13599: ---    60      2       225
        !          13600: ---    60      2       227
        !          13601: ---    60      2       232
        !          13602: ---    60      2       233
        !          13603: ---    60      2       234
        !          13604: ---    60      2       235
        !          13605: ---    60      0       241
        !          13606: ---    60      0       245
        !          13607: ---    60      2       248
        !          13608: ---    60      0       249
        !          13609: ---    60      0       250
        !          13610: ---    60      2       251
        !          13611: 0707070014231217051006440057030057030000010642060522627501200002400000003375post.src/devpost/NBname NB
        !          13612: fontname NewCenturySchlbk-Bold
        !          13613: named in prologue
        !          13614: ligatures fi fl 0
        !          13615: spacewidth 29
        !          13616: charset
        !          13617: !      30      2       33
        !          13618: "      33      2       34
        !          13619: dq     "
        !          13620: #      57      2       35
        !          13621: $      57      3       36
        !          13622: %      83      2       37
        !          13623: &      85      2       38
        !          13624: '      24      2       39
        !          13625: (      39      3       40
        !          13626: )      39      3       41
        !          13627: *      50      2       42
        !          13628: +      61      0       43
        !          13629: ,      28      1       44
        !          13630: hy     33      0       45
        !          13631: -      "
        !          13632: .      28      0       46
        !          13633: /      28      2       47
        !          13634: 0      57      2       48
        !          13635: 1      57      2       49
        !          13636: 2      57      2       50
        !          13637: 3      57      2       51
        !          13638: 4      57      2       52
        !          13639: 5      57      2       53
        !          13640: 6      57      2       54
        !          13641: 7      57      2       55
        !          13642: 8      57      2       56
        !          13643: 9      57      2       57
        !          13644: :      28      0       58
        !          13645: ;      28      1       59
        !          13646: ---    61      0       60
        !          13647: =      61      0       61
        !          13648: ---    61      0       62
        !          13649: ?      50      2       63
        !          13650: @      75      2       64
        !          13651: A      76      2       65
        !          13652: B      78      2       66
        !          13653: C      78      2       67
        !          13654: D      83      2       68
        !          13655: E      76      2       69
        !          13656: F      72      2       70
        !          13657: G      83      2       71
        !          13658: H      87      2       72
        !          13659: I      44      2       73
        !          13660: J      65      2       74
        !          13661: K      81      2       75
        !          13662: L      72      2       76
        !          13663: M      98      2       77
        !          13664: N      83      2       78
        !          13665: O      83      2       79
        !          13666: P      76      2       80
        !          13667: Q      83      3       81
        !          13668: R      81      2       82
        !          13669: S      67      2       83
        !          13670: T      72      2       84
        !          13671: U      83      2       85
        !          13672: V      76      2       86
        !          13673: W      98      2       87
        !          13674: X      72      2       88
        !          13675: Y      72      2       89
        !          13676: Z      67      2       90
        !          13677: [      39      3       91
        !          13678: \      61      2       92
        !          13679: bs     "
        !          13680: ]      39      3       93
        !          13681: ---    61      2       94
        !          13682: ---    50      1       95
        !          13683: `      24      2       96
        !          13684: a      61      0       97
        !          13685: b      65      2       98
        !          13686: c      56      0       99
        !          13687: d      67      2       100
        !          13688: e      57      0       101
        !          13689: f      39      2       102
        !          13690: g      61      1       103
        !          13691: h      69      2       104
        !          13692: i      37      2       105
        !          13693: j      35      3       106
        !          13694: k      67      2       107
        !          13695: l      35      2       108
        !          13696: m      96      0       109
        !          13697: n      69      0       110
        !          13698: o      61      0       111
        !          13699: p      67      1       112
        !          13700: q      65      1       113
        !          13701: r      52      0       114
        !          13702: s      50      0       115
        !          13703: t      43      2       116
        !          13704: u      69      0       117
        !          13705: v      61      0       118
        !          13706: w      89      0       119
        !          13707: x      61      0       120
        !          13708: y      61      1       121
        !          13709: z      54      0       122
        !          13710: {      39      3       123
        !          13711: ---    61      2       124
        !          13712: }      39      3       125
        !          13713: ---    61      0       126
        !          13714: !!     30      1       161
        !          13715: ct     57      3       162
        !          13716: ps     57      2       163
        !          13717: fr     17      2       164
        !          13718: yn     72      2       165
        !          13719: fn     57      3       166
        !          13720: sc     50      2       167
        !          13721: cr     61      2       168
        !          13722: ---    24      2       169
        !          13723: ``     48      2       170
        !          13724: ---    50      0       171
        !          13725: ---    33      0       172
        !          13726: ---    33      0       173
        !          13727: fi     69      2       174
        !          13728: fl     69      2       175
        !          13729: en     50      0       177
        !          13730: \-     "
        !          13731: dg     50      2       178
        !          13732: dd     50      2       179
        !          13733: ---    28      0       180
        !          13734: pg     75      2       182
        !          13735: ---    61      0       183
        !          13736: ---    24      1       184
        !          13737: ---    48      1       185
        !          13738: ''     48      2       186
        !          13739: ---    50      0       187
        !          13740: ---    100     0       188
        !          13741: ---    100     2       189
        !          13742: ??     50      1       191
        !          13743: ga     33      2       193
        !          13744: \`     "
        !          13745: aa     33      2       194
        !          13746: \'     "
        !          13747: ^a     33      2       195
        !          13748: ^      "
        !          13749: ~a     33      2       196
        !          13750: ~      "
        !          13751: -a     33      2       197
        !          13752: Ua     33      2       198
        !          13753: .a     33      2       199
        !          13754: :a     33      2       200
        !          13755: oa     33      2       202
        !          13756: ,a     33      1       203
        !          13757: "a     33      2       205
        !          13758: Ca     33      1       206
        !          13759: va     33      2       207
        !          13760: em     100     0       208
        !          13761: ---    98      2       225
        !          13762: ---    37      2       227
        !          13763: ---    72      2       232
        !          13764: ---    83      2       233
        !          13765: ---    100     2       234
        !          13766: ---    37      2       235
        !          13767: ---    87      0       241
        !          13768: ---    37      0       245
        !          13769: ---    35      2       248
        !          13770: ---    61      3       249
        !          13771: ---    91      0       250
        !          13772: ---    61      2       251
        !          13773: 0707070014231217061006440057030057030000010642400522627501200002400000003376post.src/devpost/NIname NI
        !          13774: fontname NewCenturySchlbk-Italic
        !          13775: named in prologue
        !          13776: ligatures fi fl 0
        !          13777: spacewidth 28
        !          13778: charset
        !          13779: !      33      2       33
        !          13780: "      40      2       34
        !          13781: dq     "
        !          13782: #      61      2       35
        !          13783: $      56      3       36
        !          13784: %      83      2       37
        !          13785: &      85      2       38
        !          13786: '      20      2       39
        !          13787: (      33      3       40
        !          13788: )      33      3       41
        !          13789: *      50      2       42
        !          13790: +      61      0       43
        !          13791: ,      28      1       44
        !          13792: hy     33      0       45
        !          13793: -      "
        !          13794: .      28      0       46
        !          13795: /      61      2       47
        !          13796: 0      56      2       48
        !          13797: 1      56      2       49
        !          13798: 2      56      2       50
        !          13799: 3      56      2       51
        !          13800: 4      56      2       52
        !          13801: 5      56      2       53
        !          13802: 6      56      2       54
        !          13803: 7      56      2       55
        !          13804: 8      56      2       56
        !          13805: 9      56      2       57
        !          13806: :      28      0       58
        !          13807: ;      28      1       59
        !          13808: ---    61      0       60
        !          13809: =      61      0       61
        !          13810: ---    61      0       62
        !          13811: ?      44      2       63
        !          13812: @      75      2       64
        !          13813: A      70      2       65
        !          13814: B      72      2       66
        !          13815: C      72      2       67
        !          13816: D      78      2       68
        !          13817: E      72      2       69
        !          13818: F      67      2       70
        !          13819: G      78      2       71
        !          13820: H      83      2       72
        !          13821: I      41      2       73
        !          13822: J      61      2       74
        !          13823: K      74      2       75
        !          13824: L      67      2       76
        !          13825: M      94      2       77
        !          13826: N      81      2       78
        !          13827: O      78      2       79
        !          13828: P      67      2       80
        !          13829: Q      78      3       81
        !          13830: R      74      2       82
        !          13831: S      67      2       83
        !          13832: T      69      2       84
        !          13833: U      81      2       85
        !          13834: V      70      2       86
        !          13835: W      93      2       87
        !          13836: X      70      2       88
        !          13837: Y      69      2       89
        !          13838: Z      67      2       90
        !          13839: [      33      3       91
        !          13840: \      61      2       92
        !          13841: bs     "
        !          13842: ]      33      3       93
        !          13843: ---    61      2       94
        !          13844: ---    50      1       95
        !          13845: `      20      2       96
        !          13846: a      57      0       97
        !          13847: b      56      2       98
        !          13848: c      44      0       99
        !          13849: d      61      2       100
        !          13850: e      44      0       101
        !          13851: f      33      3       102
        !          13852: g      54      1       103
        !          13853: h      61      2       104
        !          13854: i      33      2       105
        !          13855: j      32      3       106
        !          13856: k      56      2       107
        !          13857: l      33      2       108
        !          13858: m      89      0       109
        !          13859: n      61      0       110
        !          13860: o      50      0       111
        !          13861: p      57      1       112
        !          13862: q      56      1       113
        !          13863: r      44      0       114
        !          13864: s      44      0       115
        !          13865: t      35      2       116
        !          13866: u      61      0       117
        !          13867: v      52      0       118
        !          13868: w      78      0       119
        !          13869: x      50      0       120
        !          13870: y      50      1       121
        !          13871: z      46      0       122
        !          13872: {      33      3       123
        !          13873: ---    61      2       124
        !          13874: }      33      3       125
        !          13875: ---    61      0       126
        !          13876: !!     33      3       161
        !          13877: ct     56      3       162
        !          13878: ps     56      2       163
        !          13879: fr     17      2       164
        !          13880: yn     56      2       165
        !          13881: fn     56      3       166
        !          13882: sc     50      3       167
        !          13883: cr     61      2       168
        !          13884: ---    28      2       169
        !          13885: ``     39      2       170
        !          13886: ---    43      0       171
        !          13887: ---    33      0       172
        !          13888: ---    33      0       173
        !          13889: fi     61      3       174
        !          13890: fl     61      3       175
        !          13891: en     50      0       177
        !          13892: \-     "
        !          13893: dg     50      3       178
        !          13894: dd     50      3       179
        !          13895: ---    28      0       180
        !          13896: pg     65      2       182
        !          13897: ---    61      2       183
        !          13898: ---    20      1       184
        !          13899: ---    39      1       185
        !          13900: ''     39      2       186
        !          13901: ---    43      0       187
        !          13902: ---    100     0       188
        !          13903: ---    100     2       189
        !          13904: ??     44      3       191
        !          13905: ga     33      2       193
        !          13906: \`     "
        !          13907: aa     33      2       194
        !          13908: \'     "
        !          13909: ^a     33      2       195
        !          13910: ^      "
        !          13911: ~a     33      2       196
        !          13912: ~      "
        !          13913: -a     33      2       197
        !          13914: Ua     33      2       198
        !          13915: .a     33      2       199
        !          13916: :a     33      2       200
        !          13917: oa     33      2       202
        !          13918: ,a     33      1       203
        !          13919: "a     33      2       205
        !          13920: Ca     33      1       206
        !          13921: va     33      2       207
        !          13922: em     100     0       208
        !          13923: ---    87      2       225
        !          13924: ---    42      2       227
        !          13925: ---    67      2       232
        !          13926: ---    78      2       233
        !          13927: ---    98      2       234
        !          13928: ---    37      2       235
        !          13929: ---    72      0       241
        !          13930: ---    33      0       245
        !          13931: ---    33      2       248
        !          13932: ---    50      3       249
        !          13933: ---    78      0       250
        !          13934: ---    56      3       251
        !          13935: 0707070014231217071006440057030057030000010642420522627501200002400000003377post.src/devpost/NRname NR
        !          13936: fontname NewCenturySchlbk-Roman
        !          13937: named in prologue
        !          13938: ligatures fi fl 0
        !          13939: spacewidth 28
        !          13940: charset
        !          13941: !      30      2       33
        !          13942: "      39      2       34
        !          13943: dq     "
        !          13944: #      56      2       35
        !          13945: $      56      3       36
        !          13946: %      83      2       37
        !          13947: &      81      2       38
        !          13948: '      20      2       39
        !          13949: (      33      3       40
        !          13950: )      33      3       41
        !          13951: *      50      2       42
        !          13952: +      61      0       43
        !          13953: ,      28      1       44
        !          13954: hy     33      0       45
        !          13955: -      "
        !          13956: .      28      0       46
        !          13957: /      28      2       47
        !          13958: 0      56      2       48
        !          13959: 1      56      2       49
        !          13960: 2      56      2       50
        !          13961: 3      56      2       51
        !          13962: 4      56      2       52
        !          13963: 5      56      2       53
        !          13964: 6      56      2       54
        !          13965: 7      56      2       55
        !          13966: 8      56      2       56
        !          13967: 9      56      2       57
        !          13968: :      28      0       58
        !          13969: ;      28      1       59
        !          13970: ---    61      0       60
        !          13971: =      61      0       61
        !          13972: ---    61      0       62
        !          13973: ?      44      2       63
        !          13974: @      74      2       64
        !          13975: A      72      2       65
        !          13976: B      72      2       66
        !          13977: C      72      2       67
        !          13978: D      78      2       68
        !          13979: E      72      2       69
        !          13980: F      67      2       70
        !          13981: G      78      2       71
        !          13982: H      83      2       72
        !          13983: I      41      2       73
        !          13984: J      56      2       74
        !          13985: K      78      2       75
        !          13986: L      67      2       76
        !          13987: M      94      2       77
        !          13988: N      81      2       78
        !          13989: O      78      2       79
        !          13990: P      67      2       80
        !          13991: Q      78      3       81
        !          13992: R      72      2       82
        !          13993: S      63      2       83
        !          13994: T      67      2       84
        !          13995: U      81      2       85
        !          13996: V      72      2       86
        !          13997: W      98      2       87
        !          13998: X      70      2       88
        !          13999: Y      70      2       89
        !          14000: Z      61      2       90
        !          14001: [      33      3       91
        !          14002: \      61      2       92
        !          14003: bs     "
        !          14004: ]      33      3       93
        !          14005: ---    61      2       94
        !          14006: ---    50      1       95
        !          14007: `      20      2       96
        !          14008: a      56      0       97
        !          14009: b      56      2       98
        !          14010: c      44      0       99
        !          14011: d      57      2       100
        !          14012: e      50      0       101
        !          14013: f      33      2       102
        !          14014: g      54      1       103
        !          14015: h      61      2       104
        !          14016: i      32      2       105
        !          14017: j      30      3       106
        !          14018: k      59      2       107
        !          14019: l      32      2       108
        !          14020: m      89      0       109
        !          14021: n      61      0       110
        !          14022: o      50      0       111
        !          14023: p      57      1       112
        !          14024: q      56      1       113
        !          14025: r      44      0       114
        !          14026: s      46      0       115
        !          14027: t      39      2       116
        !          14028: u      61      0       117
        !          14029: v      54      0       118
        !          14030: w      78      0       119
        !          14031: x      54      0       120
        !          14032: y      54      1       121
        !          14033: z      48      0       122
        !          14034: {      33      3       123
        !          14035: ---    61      2       124
        !          14036: }      33      3       125
        !          14037: ---    61      0       126
        !          14038: !!     30      3       161
        !          14039: ct     56      3       162
        !          14040: ps     56      2       163
        !          14041: fr     17      2       164
        !          14042: yn     70      2       165
        !          14043: fn     56      3       166
        !          14044: sc     50      3       167
        !          14045: cr     61      2       168
        !          14046: ---    20      2       169
        !          14047: ``     39      2       170
        !          14048: ---    43      0       171
        !          14049: ---    26      0       172
        !          14050: ---    26      0       173
        !          14051: fi     61      2       174
        !          14052: fl     61      2       175
        !          14053: en     56      0       177
        !          14054: \-     "
        !          14055: dg     50      3       178
        !          14056: dd     50      3       179
        !          14057: ---    28      0       180
        !          14058: pg     61      3       182
        !          14059: ---    61      2       183
        !          14060: ---    20      1       184
        !          14061: ---    39      1       185
        !          14062: ''     39      2       186
        !          14063: ---    43      0       187
        !          14064: ---    100     0       188
        !          14065: ---    100     2       189
        !          14066: ??     44      3       191
        !          14067: ga     33      2       193
        !          14068: \`     "
        !          14069: aa     33      2       194
        !          14070: \'     "
        !          14071: ^a     33      2       195
        !          14072: ^      "
        !          14073: ~a     33      2       196
        !          14074: ~      "
        !          14075: -a     33      2       197
        !          14076: Ua     33      2       198
        !          14077: .a     33      2       199
        !          14078: :a     33      2       200
        !          14079: oa     33      2       202
        !          14080: ,a     33      1       203
        !          14081: "a     33      2       205
        !          14082: Ca     33      1       206
        !          14083: va     33      2       207
        !          14084: em     100     0       208
        !          14085: ---    100     2       225
        !          14086: ---    33      2       227
        !          14087: ---    67      2       232
        !          14088: ---    78      2       233
        !          14089: ---    100     2       234
        !          14090: ---    30      2       235
        !          14091: ---    80      0       241
        !          14092: ---    32      0       245
        !          14093: ---    32      2       248
        !          14094: ---    50      2       249
        !          14095: ---    83      0       250
        !          14096: ---    57      2       251
        !          14097: 0707070014231217101006440057030057030000010642440522627501200002400000003402post.src/devpost/NXname NX
        !          14098: fontname NewCenturySchlbk-BoldItalic
        !          14099: named in prologue
        !          14100: ligatures fi fl 0
        !          14101: spacewidth 29
        !          14102: charset
        !          14103: !      33      2       33
        !          14104: "      40      2       34
        !          14105: dq     "
        !          14106: #      61      2       35
        !          14107: $      57      3       36
        !          14108: %      89      2       37
        !          14109: &      89      2       38
        !          14110: '      26      2       39
        !          14111: (      41      3       40
        !          14112: )      41      3       41
        !          14113: *      50      2       42
        !          14114: +      61      0       43
        !          14115: ,      29      1       44
        !          14116: hy     33      0       45
        !          14117: -      "
        !          14118: .      29      0       46
        !          14119: /      28      2       47
        !          14120: 0      57      2       48
        !          14121: 1      57      2       49
        !          14122: 2      57      2       50
        !          14123: 3      57      2       51
        !          14124: 4      57      2       52
        !          14125: 5      57      2       53
        !          14126: 6      57      2       54
        !          14127: 7      57      2       55
        !          14128: 8      57      2       56
        !          14129: 9      57      2       57
        !          14130: :      29      0       58
        !          14131: ;      29      1       59
        !          14132: ---    61      0       60
        !          14133: =      61      0       61
        !          14134: ---    61      0       62
        !          14135: ?      48      2       63
        !          14136: @      75      2       64
        !          14137: A      74      2       65
        !          14138: B      76      2       66
        !          14139: C      76      2       67
        !          14140: D      83      2       68
        !          14141: E      74      2       69
        !          14142: F      70      2       70
        !          14143: G      81      2       71
        !          14144: H      87      2       72
        !          14145: I      44      2       73
        !          14146: J      67      2       74
        !          14147: K      78      2       75
        !          14148: L      70      2       76
        !          14149: M      94      2       77
        !          14150: N      85      2       78
        !          14151: O      83      2       79
        !          14152: P      74      2       80
        !          14153: Q      83      3       81
        !          14154: R      80      2       82
        !          14155: S      69      2       83
        !          14156: T      72      2       84
        !          14157: U      83      2       85
        !          14158: V      74      2       86
        !          14159: W      94      2       87
        !          14160: X      74      2       88
        !          14161: Y      70      2       89
        !          14162: Z      70      2       90
        !          14163: [      41      3       91
        !          14164: \      61      2       92
        !          14165: bs     "
        !          14166: ]      41      3       93
        !          14167: ---    61      2       94
        !          14168: ---    50      1       95
        !          14169: `      26      2       96
        !          14170: a      67      0       97
        !          14171: b      61      2       98
        !          14172: c      54      0       99
        !          14173: d      67      2       100
        !          14174: e      52      0       101
        !          14175: f      39      3       102
        !          14176: g      61      1       103
        !          14177: h      69      2       104
        !          14178: i      39      2       105
        !          14179: j      37      3       106
        !          14180: k      65      2       107
        !          14181: l      39      2       108
        !          14182: m      94      0       109
        !          14183: n      69      0       110
        !          14184: o      57      0       111
        !          14185: p      65      1       112
        !          14186: q      63      1       113
        !          14187: r      52      0       114
        !          14188: s      48      0       115
        !          14189: t      41      2       116
        !          14190: u      69      0       117
        !          14191: v      56      0       118
        !          14192: w      83      0       119
        !          14193: x      57      0       120
        !          14194: y      52      1       121
        !          14195: z      52      0       122
        !          14196: {      41      3       123
        !          14197: ---    61      2       124
        !          14198: }      41      3       125
        !          14199: ---    61      0       126
        !          14200: !!     33      3       161
        !          14201: ct     57      3       162
        !          14202: ps     57      2       163
        !          14203: fr     17      2       164
        !          14204: yn     57      2       165
        !          14205: fn     57      3       166
        !          14206: sc     50      3       167
        !          14207: cr     57      2       168
        !          14208: ---    29      2       169
        !          14209: ``     48      2       170
        !          14210: ---    48      0       171
        !          14211: ---    28      0       172
        !          14212: ---    28      0       173
        !          14213: fi     69      3       174
        !          14214: fl     69      3       175
        !          14215: en     50      0       177
        !          14216: \-     "
        !          14217: dg     50      3       178
        !          14218: dd     50      3       179
        !          14219: ---    29      0       180
        !          14220: pg     65      2       182
        !          14221: ---    61      0       183
        !          14222: ---    26      1       184
        !          14223: ---    48      1       185
        !          14224: ''     48      2       186
        !          14225: ---    48      0       187
        !          14226: ---    100     0       188
        !          14227: ---    117     2       189
        !          14228: ??     48      3       191
        !          14229: ga     33      2       193
        !          14230: \`     "
        !          14231: aa     33      2       194
        !          14232: \'     "
        !          14233: ^a     33      2       195
        !          14234: ^      "
        !          14235: ~a     33      2       196
        !          14236: ~      "
        !          14237: -a     33      2       197
        !          14238: Ua     33      2       198
        !          14239: .a     33      2       199
        !          14240: :a     33      2       200
        !          14241: oa     33      2       202
        !          14242: ,a     33      1       203
        !          14243: "a     33      2       205
        !          14244: Ca     33      1       206
        !          14245: va     33      2       207
        !          14246: em     100     0       208
        !          14247: ---    89      2       225
        !          14248: ---    41      2       227
        !          14249: ---    70      2       232
        !          14250: ---    83      2       233
        !          14251: ---    96      2       234
        !          14252: ---    36      2       235
        !          14253: ---    81      0       241
        !          14254: ---    39      0       245
        !          14255: ---    39      2       248
        !          14256: ---    57      3       249
        !          14257: ---    85      0       250
        !          14258: ---    57      3       251
        !          14259: 0707070014231217111006440057030057030000010642460522627501200002400000003367post.src/devpost/PAname PA
        !          14260: fontname Palatino-Roman
        !          14261: named in prologue
        !          14262: ligatures fi fl 0
        !          14263: spacewidth 25
        !          14264: charset
        !          14265: !      28      2       33
        !          14266: "      37      2       34
        !          14267: dq     "
        !          14268: #      50      2       35
        !          14269: $      50      2       36
        !          14270: %      84      2       37
        !          14271: &      78      2       38
        !          14272: '      28      2       39
        !          14273: (      33      2       40
        !          14274: )      33      2       41
        !          14275: *      39      2       42
        !          14276: +      61      0       43
        !          14277: ,      25      1       44
        !          14278: hy     33      0       45
        !          14279: -      "
        !          14280: .      25      0       46
        !          14281: /      61      2       47
        !          14282: 0      50      2       48
        !          14283: 1      50      2       49
        !          14284: 2      50      2       50
        !          14285: 3      50      2       51
        !          14286: 4      50      2       52
        !          14287: 5      50      2       53
        !          14288: 6      50      2       54
        !          14289: 7      50      2       55
        !          14290: 8      50      2       56
        !          14291: 9      50      2       57
        !          14292: :      25      0       58
        !          14293: ;      25      1       59
        !          14294: ---    61      0       60
        !          14295: =      61      0       61
        !          14296: ---    61      0       62
        !          14297: ?      44      2       63
        !          14298: @      75      2       64
        !          14299: A      78      2       65
        !          14300: B      61      2       66
        !          14301: C      71      2       67
        !          14302: D      77      2       68
        !          14303: E      61      2       69
        !          14304: F      56      2       70
        !          14305: G      76      2       71
        !          14306: H      83      2       72
        !          14307: I      34      2       73
        !          14308: J      33      3       74
        !          14309: K      73      2       75
        !          14310: L      61      2       76
        !          14311: M      95      2       77
        !          14312: N      83      2       78
        !          14313: O      79      2       79
        !          14314: P      60      2       80
        !          14315: Q      79      3       81
        !          14316: R      67      2       82
        !          14317: S      53      2       83
        !          14318: T      61      2       84
        !          14319: U      78      2       85
        !          14320: V      72      2       86
        !          14321: W      100     2       87
        !          14322: X      67      2       88
        !          14323: Y      67      2       89
        !          14324: Z      67      2       90
        !          14325: [      33      2       91
        !          14326: \      61      2       92
        !          14327: bs     "
        !          14328: ]      33      2       93
        !          14329: ---    61      2       94
        !          14330: ---    50      1       95
        !          14331: `      28      2       96
        !          14332: a      50      0       97
        !          14333: b      55      2       98
        !          14334: c      44      0       99
        !          14335: d      61      2       100
        !          14336: e      48      0       101
        !          14337: f      33      2       102
        !          14338: g      56      1       103
        !          14339: h      58      2       104
        !          14340: i      29      2       105
        !          14341: j      23      3       106
        !          14342: k      56      2       107
        !          14343: l      29      2       108
        !          14344: m      88      0       109
        !          14345: n      58      0       110
        !          14346: o      55      0       111
        !          14347: p      60      1       112
        !          14348: q      56      1       113
        !          14349: r      40      0       114
        !          14350: s      42      0       115
        !          14351: t      33      2       116
        !          14352: u      60      0       117
        !          14353: v      56      0       118
        !          14354: w      83      0       119
        !          14355: x      52      0       120
        !          14356: y      56      1       121
        !          14357: z      50      0       122
        !          14358: {      33      2       123
        !          14359: ---    61      2       124
        !          14360: }      33      2       125
        !          14361: ---    61      0       126
        !          14362: !!     28      1       161
        !          14363: ct     50      2       162
        !          14364: ps     50      2       163
        !          14365: fr     17      2       164
        !          14366: yn     50      2       165
        !          14367: fn     50      3       166
        !          14368: sc     50      3       167
        !          14369: cr     50      2       168
        !          14370: ---    21      2       169
        !          14371: ``     50      2       170
        !          14372: ---    50      0       171
        !          14373: ---    33      0       172
        !          14374: ---    33      0       173
        !          14375: fi     61      2       174
        !          14376: fl     61      2       175
        !          14377: en     50      0       177
        !          14378: \-     "
        !          14379: dg     50      2       178
        !          14380: dd     50      3       179
        !          14381: ---    25      0       180
        !          14382: pg     63      3       182
        !          14383: ---    61      0       183
        !          14384: ---    28      1       184
        !          14385: ---    50      1       185
        !          14386: ''     50      2       186
        !          14387: ---    50      0       187
        !          14388: ---    100     0       188
        !          14389: ---    114     2       189
        !          14390: ??     44      1       191
        !          14391: ga     33      2       193
        !          14392: \`     "
        !          14393: aa     33      2       194
        !          14394: \'     "
        !          14395: ^a     33      2       195
        !          14396: ^      "
        !          14397: ~a     33      2       196
        !          14398: ~      "
        !          14399: -a     33      2       197
        !          14400: Ua     33      2       198
        !          14401: .a     25      2       199
        !          14402: :a     33      2       200
        !          14403: oa     33      2       202
        !          14404: ,a     33      1       203
        !          14405: "a     38      2       205
        !          14406: Ca     31      1       206
        !          14407: va     33      2       207
        !          14408: em     100     0       208
        !          14409: ---    94      2       225
        !          14410: ---    33      2       227
        !          14411: ---    61      2       232
        !          14412: ---    83      2       233
        !          14413: ---    100     2       234
        !          14414: ---    33      2       235
        !          14415: ---    76      0       241
        !          14416: ---    29      0       245
        !          14417: ---    29      2       248
        !          14418: ---    56      0       249
        !          14419: ---    83      0       250
        !          14420: ---    56      2       251
        !          14421: 0707070014231217121006440057030057030000010643200522627501200002400000003370post.src/devpost/PBname PB
        !          14422: fontname Palatino-Bold
        !          14423: named in prologue
        !          14424: ligatures fi fl 0
        !          14425: spacewidth 25
        !          14426: charset
        !          14427: !      28      2       33
        !          14428: "      40      2       34
        !          14429: dq     "
        !          14430: #      50      2       35
        !          14431: $      50      2       36
        !          14432: %      89      2       37
        !          14433: &      83      2       38
        !          14434: '      28      2       39
        !          14435: (      33      2       40
        !          14436: )      33      2       41
        !          14437: *      44      2       42
        !          14438: +      61      0       43
        !          14439: ,      25      1       44
        !          14440: hy     33      0       45
        !          14441: -      "
        !          14442: .      25      0       46
        !          14443: /      30      2       47
        !          14444: 0      50      2       48
        !          14445: 1      50      2       49
        !          14446: 2      50      2       50
        !          14447: 3      50      2       51
        !          14448: 4      50      2       52
        !          14449: 5      50      2       53
        !          14450: 6      50      2       54
        !          14451: 7      50      2       55
        !          14452: 8      50      2       56
        !          14453: 9      50      2       57
        !          14454: :      25      0       58
        !          14455: ;      25      1       59
        !          14456: ---    61      0       60
        !          14457: =      61      0       61
        !          14458: ---    61      0       62
        !          14459: ?      44      2       63
        !          14460: @      75      2       64
        !          14461: A      78      2       65
        !          14462: B      67      2       66
        !          14463: C      72      2       67
        !          14464: D      83      2       68
        !          14465: E      61      2       69
        !          14466: F      56      2       70
        !          14467: G      83      2       71
        !          14468: H      83      2       72
        !          14469: I      39      2       73
        !          14470: J      39      3       74
        !          14471: K      78      2       75
        !          14472: L      61      2       76
        !          14473: M      100     2       77
        !          14474: N      83      2       78
        !          14475: O      83      2       79
        !          14476: P      61      2       80
        !          14477: Q      83      3       81
        !          14478: R      72      2       82
        !          14479: S      61      2       83
        !          14480: T      67      2       84
        !          14481: U      78      2       85
        !          14482: V      78      2       86
        !          14483: W      100     2       87
        !          14484: X      67      2       88
        !          14485: Y      67      2       89
        !          14486: Z      67      2       90
        !          14487: [      33      2       91
        !          14488: \      61      2       92
        !          14489: bs     "
        !          14490: ]      33      2       93
        !          14491: ---    61      2       94
        !          14492: ---    50      1       95
        !          14493: `      28      2       96
        !          14494: a      50      0       97
        !          14495: b      61      2       98
        !          14496: c      44      0       99
        !          14497: d      61      2       100
        !          14498: e      50      0       101
        !          14499: f      39      2       102
        !          14500: g      56      1       103
        !          14501: h      61      2       104
        !          14502: i      33      2       105
        !          14503: j      33      3       106
        !          14504: k      61      2       107
        !          14505: l      33      2       108
        !          14506: m      89      0       109
        !          14507: n      61      0       110
        !          14508: o      56      0       111
        !          14509: p      61      1       112
        !          14510: q      61      1       113
        !          14511: r      39      0       114
        !          14512: s      44      0       115
        !          14513: t      33      2       116
        !          14514: u      61      0       117
        !          14515: v      56      0       118
        !          14516: w      83      0       119
        !          14517: x      50      0       120
        !          14518: y      56      1       121
        !          14519: z      50      0       122
        !          14520: {      31      2       123
        !          14521: ---    61      2       124
        !          14522: }      31      2       125
        !          14523: ---    61      0       126
        !          14524: !!     28      1       161
        !          14525: ct     50      2       162
        !          14526: ps     50      2       163
        !          14527: fr     17      2       164
        !          14528: yn     50      2       165
        !          14529: fn     50      3       166
        !          14530: sc     50      3       167
        !          14531: cr     50      2       168
        !          14532: ---    23      2       169
        !          14533: ``     50      2       170
        !          14534: ---    50      0       171
        !          14535: ---    39      0       172
        !          14536: ---    39      0       173
        !          14537: fi     61      2       174
        !          14538: fl     61      2       175
        !          14539: en     50      0       177
        !          14540: \-     "
        !          14541: dg     50      2       178
        !          14542: dd     50      3       179
        !          14543: ---    25      0       180
        !          14544: pg     64      3       182
        !          14545: ---    61      0       183
        !          14546: ---    33      1       184
        !          14547: ---    50      1       185
        !          14548: ''     50      2       186
        !          14549: ---    50      0       187
        !          14550: ---    100     0       188
        !          14551: ---    100     2       189
        !          14552: ??     44      1       191
        !          14553: ga     33      2       193
        !          14554: \`     "
        !          14555: aa     33      2       194
        !          14556: \'     "
        !          14557: ^a     33      2       195
        !          14558: ^      "
        !          14559: ~a     33      2       196
        !          14560: ~      "
        !          14561: -a     33      2       197
        !          14562: Ua     33      2       198
        !          14563: .a     33      2       199
        !          14564: :a     33      2       200
        !          14565: oa     33      2       202
        !          14566: ,a     33      1       203
        !          14567: "a     33      2       205
        !          14568: Ca     33      1       206
        !          14569: va     33      2       207
        !          14570: em     100     0       208
        !          14571: ---    100     2       225
        !          14572: ---    44      2       227
        !          14573: ---    61      2       232
        !          14574: ---    83      2       233
        !          14575: ---    100     2       234
        !          14576: ---    49      2       235
        !          14577: ---    78      0       241
        !          14578: ---    33      0       245
        !          14579: ---    33      2       248
        !          14580: ---    56      0       249
        !          14581: ---    83      0       250
        !          14582: ---    61      2       251
        !          14583: 0707070014231217131006440057030057030000010643220522627501200002400000003367post.src/devpost/PIname PI
        !          14584: fontname Palatino-Italic
        !          14585: named in prologue
        !          14586: ligatures fi fl 0
        !          14587: spacewidth 25
        !          14588: charset
        !          14589: !      33      2       33
        !          14590: "      50      2       34
        !          14591: dq     "
        !          14592: #      50      2       35
        !          14593: $      50      2       36
        !          14594: %      89      2       37
        !          14595: &      78      2       38
        !          14596: '      28      2       39
        !          14597: (      33      2       40
        !          14598: )      33      2       41
        !          14599: *      39      2       42
        !          14600: +      61      0       43
        !          14601: ,      25      1       44
        !          14602: hy     33      0       45
        !          14603: -      "
        !          14604: .      25      0       46
        !          14605: /      30      3       47
        !          14606: 0      50      2       48
        !          14607: 1      50      2       49
        !          14608: 2      50      2       50
        !          14609: 3      50      2       51
        !          14610: 4      50      2       52
        !          14611: 5      50      2       53
        !          14612: 6      50      2       54
        !          14613: 7      50      2       55
        !          14614: 8      50      2       56
        !          14615: 9      50      2       57
        !          14616: :      25      0       58
        !          14617: ;      25      1       59
        !          14618: ---    61      0       60
        !          14619: =      61      0       61
        !          14620: ---    61      0       62
        !          14621: ?      50      2       63
        !          14622: @      75      2       64
        !          14623: A      72      2       65
        !          14624: B      61      2       66
        !          14625: C      67      2       67
        !          14626: D      78      2       68
        !          14627: E      61      2       69
        !          14628: F      56      2       70
        !          14629: G      72      2       71
        !          14630: H      78      2       72
        !          14631: I      33      2       73
        !          14632: J      33      3       74
        !          14633: K      67      2       75
        !          14634: L      56      2       76
        !          14635: M      94      2       77
        !          14636: N      78      2       78
        !          14637: O      78      2       79
        !          14638: P      61      2       80
        !          14639: Q      78      3       81
        !          14640: R      67      2       82
        !          14641: S      56      2       83
        !          14642: T      61      2       84
        !          14643: U      78      2       85
        !          14644: V      72      2       86
        !          14645: W      94      2       87
        !          14646: X      72      2       88
        !          14647: Y      67      2       89
        !          14648: Z      67      2       90
        !          14649: [      33      2       91
        !          14650: \      61      2       92
        !          14651: bs     "
        !          14652: ]      33      2       93
        !          14653: ---    61      2       94
        !          14654: ---    50      1       95
        !          14655: `      28      2       96
        !          14656: a      44      0       97
        !          14657: b      46      2       98
        !          14658: c      41      0       99
        !          14659: d      50      2       100
        !          14660: e      39      0       101
        !          14661: f      28      3       102
        !          14662: g      50      1       103
        !          14663: h      50      2       104
        !          14664: i      28      2       105
        !          14665: j      28      3       106
        !          14666: k      44      2       107
        !          14667: l      28      2       108
        !          14668: m      78      0       109
        !          14669: n      56      0       110
        !          14670: o      44      0       111
        !          14671: p      50      1       112
        !          14672: q      46      1       113
        !          14673: r      39      0       114
        !          14674: s      39      0       115
        !          14675: t      33      2       116
        !          14676: u      56      0       117
        !          14677: v      50      0       118
        !          14678: w      72      0       119
        !          14679: x      50      0       120
        !          14680: y      50      1       121
        !          14681: z      44      0       122
        !          14682: {      33      2       123
        !          14683: ---    61      2       124
        !          14684: }      33      2       125
        !          14685: ---    61      0       126
        !          14686: !!     33      1       161
        !          14687: ct     50      2       162
        !          14688: ps     50      2       163
        !          14689: fr     17      2       164
        !          14690: yn     50      2       165
        !          14691: fn     50      3       166
        !          14692: sc     50      3       167
        !          14693: cr     50      2       168
        !          14694: ---    33      2       169
        !          14695: ``     50      2       170
        !          14696: ---    50      0       171
        !          14697: ---    33      0       172
        !          14698: ---    33      0       173
        !          14699: fi     53      3       174
        !          14700: fl     54      3       175
        !          14701: en     50      0       177
        !          14702: \-     "
        !          14703: dg     50      2       178
        !          14704: dd     50      3       179
        !          14705: ---    25      0       180
        !          14706: pg     50      3       182
        !          14707: ---    50      0       183
        !          14708: ---    28      0       184
        !          14709: ---    50      0       185
        !          14710: ''     50      2       186
        !          14711: ---    50      0       187
        !          14712: ---    100     0       188
        !          14713: ---    100     2       189
        !          14714: ??     50      1       191
        !          14715: ga     33      2       193
        !          14716: \`     "
        !          14717: aa     33      2       194
        !          14718: \'     "
        !          14719: ^a     33      2       195
        !          14720: ^      "
        !          14721: ~a     33      2       196
        !          14722: ~      "
        !          14723: -a     33      2       197
        !          14724: Ua     33      2       198
        !          14725: .a     33      2       199
        !          14726: :a     33      2       200
        !          14727: oa     33      2       202
        !          14728: ,a     33      1       203
        !          14729: "a     33      2       205
        !          14730: Ca     33      1       206
        !          14731: va     33      2       207
        !          14732: em     100     0       208
        !          14733: ---    94      2       225
        !          14734: ---    33      2       227
        !          14735: ---    56      2       232
        !          14736: ---    78      2       233
        !          14737: ---    103     2       234
        !          14738: ---    33      2       235
        !          14739: ---    64      0       241
        !          14740: ---    28      0       245
        !          14741: ---    28      2       248
        !          14742: ---    44      0       249
        !          14743: ---    67      0       250
        !          14744: ---    50      3       251
        !          14745: 0707070014231217141006440057030057030000010643240522627501200002400000003373post.src/devpost/PXname PX
        !          14746: fontname Palatino-BoldItalic
        !          14747: named in prologue
        !          14748: ligatures fi fl 0
        !          14749: spacewidth 25
        !          14750: charset
        !          14751: !      33      2       33
        !          14752: "      50      2       34
        !          14753: dq     "
        !          14754: #      50      2       35
        !          14755: $      50      2       36
        !          14756: %      89      2       37
        !          14757: &      83      2       38
        !          14758: '      28      2       39
        !          14759: (      33      2       40
        !          14760: )      33      2       41
        !          14761: *      44      2       42
        !          14762: +      61      0       43
        !          14763: ,      25      1       44
        !          14764: hy     39      0       45
        !          14765: -      "
        !          14766: .      25      0       46
        !          14767: /      32      2       47
        !          14768: 0      50      2       48
        !          14769: 1      50      2       49
        !          14770: 2      50      2       50
        !          14771: 3      50      2       51
        !          14772: 4      50      2       52
        !          14773: 5      50      2       53
        !          14774: 6      50      2       54
        !          14775: 7      50      2       55
        !          14776: 8      50      2       56
        !          14777: 9      50      2       57
        !          14778: :      25      0       58
        !          14779: ;      25      1       59
        !          14780: ---    61      0       60
        !          14781: =      61      0       61
        !          14782: ---    61      0       62
        !          14783: ?      44      2       63
        !          14784: @      83      2       64
        !          14785: A      72      2       65
        !          14786: B      67      2       66
        !          14787: C      69      2       67
        !          14788: D      78      2       68
        !          14789: E      61      2       69
        !          14790: F      56      2       70
        !          14791: G      78      2       71
        !          14792: H      78      2       72
        !          14793: I      39      2       73
        !          14794: J      39      3       74
        !          14795: K      72      2       75
        !          14796: L      61      2       76
        !          14797: M      94      2       77
        !          14798: N      78      2       78
        !          14799: O      83      2       79
        !          14800: P      67      2       80
        !          14801: Q      83      3       81
        !          14802: R      72      2       82
        !          14803: S      56      2       83
        !          14804: T      61      2       84
        !          14805: U      78      2       85
        !          14806: V      67      2       86
        !          14807: W      100     2       87
        !          14808: X      72      2       88
        !          14809: Y      61      2       89
        !          14810: Z      67      2       90
        !          14811: [      33      2       91
        !          14812: \      61      2       92
        !          14813: bs     "
        !          14814: ]      33      2       93
        !          14815: ---    61      2       94
        !          14816: ---    50      1       95
        !          14817: `      28      2       96
        !          14818: a      56      0       97
        !          14819: b      54      2       98
        !          14820: c      44      0       99
        !          14821: d      56      2       100
        !          14822: e      44      0       101
        !          14823: f      33      3       102
        !          14824: g      50      1       103
        !          14825: h      56      2       104
        !          14826: i      33      2       105
        !          14827: j      33      3       106
        !          14828: k      56      2       107
        !          14829: l      33      2       108
        !          14830: m      83      0       109
        !          14831: n      56      0       110
        !          14832: o      56      0       111
        !          14833: p      56      1       112
        !          14834: q      54      1       113
        !          14835: r      39      0       114
        !          14836: s      44      0       115
        !          14837: t      39      2       116
        !          14838: u      56      0       117
        !          14839: v      56      0       118
        !          14840: w      83      0       119
        !          14841: x      50      0       120
        !          14842: y      56      1       121
        !          14843: z      50      0       122
        !          14844: {      33      2       123
        !          14845: ---    61      2       124
        !          14846: }      33      2       125
        !          14847: ---    61      0       126
        !          14848: !!     33      1       161
        !          14849: ct     50      2       162
        !          14850: ps     50      2       163
        !          14851: fr     17      2       164
        !          14852: yn     50      2       165
        !          14853: fn     50      3       166
        !          14854: sc     56      3       167
        !          14855: cr     50      2       168
        !          14856: ---    25      2       169
        !          14857: ``     50      2       170
        !          14858: ---    50      0       171
        !          14859: ---    33      0       172
        !          14860: ---    33      0       173
        !          14861: fi     61      3       174
        !          14862: fl     61      3       175
        !          14863: en     50      0       177
        !          14864: \-     "
        !          14865: dg     56      2       178
        !          14866: dd     56      3       179
        !          14867: ---    25      0       180
        !          14868: pg     56      3       182
        !          14869: ---    61      0       183
        !          14870: ---    25      1       184
        !          14871: ---    50      1       185
        !          14872: ''     50      2       186
        !          14873: ---    50      0       187
        !          14874: ---    100     0       188
        !          14875: ---    100     2       189
        !          14876: ??     44      1       191
        !          14877: ga     33      2       193
        !          14878: \`     "
        !          14879: aa     33      2       194
        !          14880: \'     "
        !          14881: ^a     33      2       195
        !          14882: ^      "
        !          14883: ~a     33      2       196
        !          14884: ~      "
        !          14885: -a     33      2       197
        !          14886: Ua     33      2       198
        !          14887: .a     33      2       199
        !          14888: :a     33      2       200
        !          14889: oa     56      2       202
        !          14890: ,a     33      1       203
        !          14891: "a     33      2       205
        !          14892: Ca     33      1       206
        !          14893: va     33      2       207
        !          14894: em     100     0       208
        !          14895: ---    94      2       225
        !          14896: ---    33      2       227
        !          14897: ---    61      2       232
        !          14898: ---    83      2       233
        !          14899: ---    94      2       234
        !          14900: ---    33      2       235
        !          14901: ---    74      0       241
        !          14902: ---    33      0       245
        !          14903: ---    33      2       248
        !          14904: ---    56      0       249
        !          14905: ---    78      0       250
        !          14906: ---    56      3       251
        !          14907: 0707070014231217151006440057030057030000010643260522627501200002300000003361post.src/devpost/Rname R
        !          14908: fontname Times-Roman
        !          14909: named in prologue
        !          14910: ligatures fi fl 0
        !          14911: spacewidth 25
        !          14912: charset
        !          14913: !      33      2       33
        !          14914: "      41      2       34
        !          14915: dq     "
        !          14916: #      50      2       35
        !          14917: $      50      2       36
        !          14918: %      83      2       37
        !          14919: &      78      2       38
        !          14920: '      33      2       39
        !          14921: (      33      3       40
        !          14922: )      33      3       41
        !          14923: *      50      2       42
        !          14924: +      56      0       43
        !          14925: ,      25      1       44
        !          14926: hy     33      0       45
        !          14927: -      "
        !          14928: .      25      0       46
        !          14929: /      28      2       47
        !          14930: 0      50      2       48
        !          14931: 1      50      2       49
        !          14932: 2      50      2       50
        !          14933: 3      50      2       51
        !          14934: 4      50      2       52
        !          14935: 5      50      2       53
        !          14936: 6      50      2       54
        !          14937: 7      50      2       55
        !          14938: 8      50      2       56
        !          14939: 9      50      2       57
        !          14940: :      28      0       58
        !          14941: ;      28      1       59
        !          14942: ---    56      2       60
        !          14943: =      56      0       61
        !          14944: ---    56      2       62
        !          14945: ?      44      2       63
        !          14946: @      92      3       64
        !          14947: A      72      2       65
        !          14948: B      67      2       66
        !          14949: C      67      2       67
        !          14950: D      72      2       68
        !          14951: E      61      2       69
        !          14952: F      56      2       70
        !          14953: G      72      2       71
        !          14954: H      72      2       72
        !          14955: I      33      2       73
        !          14956: J      39      2       74
        !          14957: K      72      2       75
        !          14958: L      61      2       76
        !          14959: M      89      2       77
        !          14960: N      72      2       78
        !          14961: O      72      2       79
        !          14962: P      56      2       80
        !          14963: Q      72      3       81
        !          14964: R      67      2       82
        !          14965: S      56      2       83
        !          14966: T      61      2       84
        !          14967: U      72      2       85
        !          14968: V      72      2       86
        !          14969: W      94      2       87
        !          14970: X      72      2       88
        !          14971: Y      72      2       89
        !          14972: Z      61      2       90
        !          14973: [      33      3       91
        !          14974: \      28      2       92
        !          14975: bs     "
        !          14976: ]      33      3       93
        !          14977: ---    47      2       94
        !          14978: ---    50      1       95
        !          14979: `      33      2       96
        !          14980: a      44      0       97
        !          14981: b      50      2       98
        !          14982: c      44      0       99
        !          14983: d      50      2       100
        !          14984: e      44      0       101
        !          14985: f      33      2       102
        !          14986: g      50      1       103
        !          14987: h      50      2       104
        !          14988: i      28      2       105
        !          14989: j      28      3       106
        !          14990: k      50      2       107
        !          14991: l      28      2       108
        !          14992: m      78      0       109
        !          14993: n      50      0       110
        !          14994: o      50      0       111
        !          14995: p      50      1       112
        !          14996: q      50      1       113
        !          14997: r      33      0       114
        !          14998: s      39      0       115
        !          14999: t      28      2       116
        !          15000: u      50      0       117
        !          15001: v      50      0       118
        !          15002: w      72      0       119
        !          15003: x      50      0       120
        !          15004: y      50      1       121
        !          15005: z      44      0       122
        !          15006: {      48      3       123
        !          15007: ---    20      2       124
        !          15008: }      48      3       125
        !          15009: ---    54      0       126
        !          15010: !!     33      1       161
        !          15011: ct     50      3       162
        !          15012: ps     50      2       163
        !          15013: fr     17      2       164
        !          15014: yn     50      2       165
        !          15015: fn     50      3       166
        !          15016: sc     50      3       167
        !          15017: cr     50      2       168
        !          15018: ---    18      2       169
        !          15019: ``     44      2       170
        !          15020: ---    50      0       171
        !          15021: ---    33      0       172
        !          15022: ---    33      0       173
        !          15023: fi     56      2       174
        !          15024: fl     56      2       175
        !          15025: en     50      0       177
        !          15026: \-     "
        !          15027: dg     50      3       178
        !          15028: dd     50      3       179
        !          15029: ---    25      0       180
        !          15030: pg     45      3       182
        !          15031: ---    35      0       183
        !          15032: ---    33      1       184
        !          15033: ---    44      1       185
        !          15034: ''     44      2       186
        !          15035: ---    50      0       187
        !          15036: ---    100     0       188
        !          15037: ---    100     2       189
        !          15038: ??     44      1       191
        !          15039: ga     33      2       193
        !          15040: \`     "
        !          15041: aa     33      2       194
        !          15042: \'     "
        !          15043: ^a     33      2       195
        !          15044: ^      "
        !          15045: ~a     33      2       196
        !          15046: ~      "
        !          15047: -a     33      2       197
        !          15048: Ua     33      2       198
        !          15049: .a     33      2       199
        !          15050: :a     33      2       200
        !          15051: oa     33      2       202
        !          15052: ,a     33      1       203
        !          15053: "a     33      2       205
        !          15054: Ca     33      1       206
        !          15055: va     33      2       207
        !          15056: em     100     0       208
        !          15057: ---    89      2       225
        !          15058: ---    28      2       227
        !          15059: ---    61      2       232
        !          15060: ---    72      2       233
        !          15061: ---    89      2       234
        !          15062: ---    31      2       235
        !          15063: ---    67      0       241
        !          15064: ---    28      0       245
        !          15065: ---    28      2       248
        !          15066: ---    50      2       249
        !          15067: ---    72      0       250
        !          15068: ---    50      2       251
        !          15069: 0707070014231217161006440057030057030000010643400522627501200002300000004400post.src/devpost/Sname S
        !          15070: fontname Symbol
        !          15071: named in prologue
        !          15072: special
        !          15073: charset
        !          15074: ---    33      2       33
        !          15075: fa     71      2       34
        !          15076: ---    50      2       35
        !          15077: te     55      2       36
        !          15078: ---    83      2       37
        !          15079: ---    78      2       38
        !          15080: st     44      0       39
        !          15081: ---    33      3       40
        !          15082: ---    33      3       41
        !          15083: **     50      2       42
        !          15084: pl     55      0       43
        !          15085: ---    25      1       44
        !          15086: mi     55      0       45
        !          15087: ---    25      0       46
        !          15088: sl     28      2       47
        !          15089: ---    50      2       48
        !          15090: ---    50      2       49
        !          15091: ---    50      2       50
        !          15092: ---    50      2       51
        !          15093: ---    50      2       52
        !          15094: ---    50      2       53
        !          15095: ---    50      2       54
        !          15096: ---    50      2       55
        !          15097: ---    50      2       56
        !          15098: ---    50      2       57
        !          15099: ---    28      0       58
        !          15100: ---    28      1       59
        !          15101: <      55      0       60
        !          15102: eq     55      0       61
        !          15103: >      55      0       62
        !          15104: ---    44      2       63
        !          15105: cg     55      0       64
        !          15106: *A     72      2       65
        !          15107: *B     67      2       66
        !          15108: *X     72      2       67
        !          15109: *D     61      2       68
        !          15110: *E     61      2       69
        !          15111: *F     76      2       70
        !          15112: *G     60      2       71
        !          15113: *Y     72      2       72
        !          15114: *I     33      2       73
        !          15115: ---    63      2       74
        !          15116: *K     72      2       75
        !          15117: *L     69      2       76
        !          15118: *M     89      2       77
        !          15119: *N     72      2       78
        !          15120: *O     72      2       79
        !          15121: *P     77      2       80
        !          15122: *H     74      2       81
        !          15123: *R     56      2       82
        !          15124: *S     59      2       83
        !          15125: *T     61      2       84
        !          15126: *U     69      2       85
        !          15127: ts     44      1       86
        !          15128: *W     77      2       87
        !          15129: *C     65      2       88
        !          15130: *Q     80      2       89
        !          15131: *Z     61      2       90
        !          15132: ---    33      3       91
        !          15133: tf     86      0       92
        !          15134: ---    33      3       93
        !          15135: pp     66      2       94
        !          15136: ul     50      1       95
        !          15137: _      "
        !          15138: rn     50      2       96
        !          15139: *a     63      0       97
        !          15140: *b     55      3       98
        !          15141: *x     55      1       99
        !          15142: *d     49      2       100
        !          15143: *e     44      0       101
        !          15144: *f     52      3       102
        !          15145: *g     41      1       103
        !          15146: *y     60      1       104
        !          15147: *i     33      0       105
        !          15148: ---    60      1       106
        !          15149: *k     55      0       107
        !          15150: *l     55      2       108
        !          15151: *m     58      1       109
        !          15152: *n     52      0       110
        !          15153: *o     55      0       111
        !          15154: *p     55      0       112
        !          15155: *h     52      2       113
        !          15156: *r     55      1       114
        !          15157: *s     60      0       115
        !          15158: *t     44      0       116
        !          15159: *u     58      0       117
        !          15160: ---    71      2       118
        !          15161: *w     69      0       119
        !          15162: *c     49      3       120
        !          15163: *q     69      1       121
        !          15164: *z     49      3       122
        !          15165: ---    48      3       123
        !          15166: or     20      3       124
        !          15167: ---    48      3       125
        !          15168: ap     55      0       126
        !          15169: ---    62      2       161
        !          15170: fm     25      2       162
        !          15171: <=     55      2       163
        !          15172: ---    17      2       164
        !          15173: if     73      0       165
        !          15174: ---    50      3       166
        !          15175: ---    75      0       167
        !          15176: ---    75      2       168
        !          15177: ---    75      0       169
        !          15178: ---    75      2       170
        !          15179: ab     104     0       171
        !          15180: <-     99      0       172
        !          15181: ua     60      2       173
        !          15182: ->     99      0       174
        !          15183: da     60      2       175
        !          15184: de     40      2       176
        !          15185: +-     55      2       177
        !          15186: ---    41      2       178
        !          15187: >=     55      2       179
        !          15188: mu     55      0       180
        !          15189: pt     71      0       181
        !          15190: pd     49      2       182
        !          15191: bu     46      0       183
        !          15192: di     55      0       184
        !          15193: !=     55      2       185
        !          15194: ==     55      0       186
        !          15195: ~~     55      0       187
        !          15196: el     100     0       188
        !          15197: av     60      3       189
        !          15198: ah     100     0       190
        !          15199: CR     66      2       191
        !          15200: af     82      2       192
        !          15201: If     69      2       193
        !          15202: Rf     80      2       194
        !          15203: ws     99      3       195
        !          15204: Ox     77      2       196
        !          15205: O+     77      2       197
        !          15206: es     82      2       198
        !          15207: ca     77      0       199
        !          15208: cu     77      0       200
        !          15209: sp     71      0       201
        !          15210: ip     71      1       202
        !          15211: !b     71      0       203
        !          15212: sb     71      0       204
        !          15213: ib     71      1       205
        !          15214: mo     71      0       206
        !          15215: !m     71      2       207
        !          15216: an     77      2       208
        !          15217: gr     71      2       209
        !          15218: rg     79      2       210
        !          15219: co     79      2       211
        !          15220: tm     89      2       212
        !          15221: ---    82      2       213
        !          15222: sr     55      2       214
        !          15223: c.     25      0       215
        !          15224: no     71      0       216
        !          15225: l&     60      0       217
        !          15226: l|     60      0       218
        !          15227: ---    104     0       219
        !          15228: ---    99      0       220
        !          15229: ---    60      2       221
        !          15230: ---    99      0       222
        !          15231: ---    60      2       223
        !          15232: lz     49      2       224
        !          15233: b<     33      3       225
        !          15234: RG     79      2       226
        !          15235: CO     79      2       227
        !          15236: TM     79      2       228
        !          15237: ---    71      2       229
        !          15238: LT     38      3       230
        !          15239: br     0       3       231
        !          15240: LX     "
        !          15241: LB     38      3       232
        !          15242: lc     50      2       233
        !          15243: lx     38      2       234
        !          15244: lf     50      2       235
        !          15245: lt     49      2       236
        !          15246: lk     49      2       237
        !          15247: lb     49      2       238
        !          15248: bv     49      2       239
        !          15249: |      "
        !          15250: b>     33      3       241
        !          15251: is     50      3       242
        !          15252: ---    69      2       243
        !          15253: ---    69      2       244
        !          15254: ---    69      2       245
        !          15255: RT     38      3       246
        !          15256: RX     38      2       247
        !          15257: RB     38      3       248
        !          15258: rc     38      2       249
        !          15259: rx     50      3       250
        !          15260: rf     38      2       251
        !          15261: rt     49      2       252
        !          15262: rk     49      2       253
        !          15263: rb     49      2       254
        !          15264: ~=     55      0       1
        !          15265: 0707070014231217171006440057030057030000010643430522627501200002400000000501post.src/devpost/S1# Times-Roman special font
        !          15266: name S1
        !          15267: fontname Times-Roman
        !          15268: named in prologue
        !          15269: special
        !          15270: charset
        !          15271: ru     50      0       95
        !          15272: ff     60      2       1
        !          15273: Fi     84      2       1
        !          15274: Fl     84      2       1
        !          15275: 14     75      2       1
        !          15276: 12     75      2       1
        !          15277: 34     75      2       1
        !          15278: bx     50      2       1
        !          15279: ob     38      2       1
        !          15280: ci     75      0       1
        !          15281: sq     50      2       1
        !          15282: Sl     50      2       1
        !          15283: L1     110     1       1
        !          15284: LA     110     1       1
        !          15285: LV     110     3       1
        !          15286: LH     210     1       1
        !          15287: lh     100     0       1
        !          15288: rh     100     0       1
        !          15289: lH     100     0       1
        !          15290: rH     100     0       1
        !          15291: PC     220     2       1
        !          15292: DG     185     2       1
        !          15293: 0707070014231217201006440057030057030000010643440522627501200002400000004134post.src/devpost/ZDname ZD
        !          15294: fontname ZapfDingbats
        !          15295: named in prologue
        !          15296: charset
        !          15297: !      97      2       33
        !          15298: "      96      2       34
        !          15299: #      97      2       35
        !          15300: $      98      3       36
        !          15301: %      72      2       37
        !          15302: &      79      3       38
        !          15303: '      79      3       39
        !          15304: (      79      3       40
        !          15305: )      69      2       41
        !          15306: *      96      2       42
        !          15307: +      94      2       43
        !          15308: ,      55      3       44
        !          15309: -      86      2       45
        !          15310: .      91      2       46
        !          15311: /      93      2       47
        !          15312: 0      91      2       48
        !          15313: 1      94      2       49
        !          15314: 2      97      2       50
        !          15315: 3      76      3       51
        !          15316: 4      85      3       52
        !          15317: 5      76      2       53
        !          15318: 6      76      2       54
        !          15319: 7      57      3       55
        !          15320: 8      68      3       56
        !          15321: 9      76      2       57
        !          15322: :      76      2       58
        !          15323: ;      76      2       59
        !          15324: <      75      3       60
        !          15325: =      49      2       61
        !          15326: >      55      2       62
        !          15327: ?      54      3       63
        !          15328: @      58      2       64
        !          15329: A      69      3       65
        !          15330: B      79      3       66
        !          15331: C      79      3       67
        !          15332: D      79      3       68
        !          15333: E      79      3       69
        !          15334: F      79      3       70
        !          15335: G      79      3       71
        !          15336: H      82      3       72
        !          15337: I      82      3       73
        !          15338: J      79      3       74
        !          15339: K      84      3       75
        !          15340: L      82      3       76
        !          15341: M      83      3       77
        !          15342: N      82      3       78
        !          15343: O      83      3       79
        !          15344: P      92      3       80
        !          15345: Q      74      2       81
        !          15346: R      72      2       82
        !          15347: S      75      2       83
        !          15348: T      79      3       84
        !          15349: U      79      3       85
        !          15350: V      69      3       86
        !          15351: W      78      3       87
        !          15352: X      77      3       88
        !          15353: Y      79      3       89
        !          15354: Z      76      2       90
        !          15355: [      71      3       91
        !          15356: \      71      3       92
        !          15357: ]      68      3       93
        !          15358: ^      70      3       94
        !          15359: _      83      3       95
        !          15360: `      81      3       96
        !          15361: a      79      3       97
        !          15362: b      79      3       98
        !          15363: c      71      3       99
        !          15364: d      69      2       100
        !          15365: e      70      2       101
        !          15366: f      69      2       102
        !          15367: g      79      3       103
        !          15368: h      79      3       104
        !          15369: i      71      3       105
        !          15370: j      79      3       106
        !          15371: k      78      3       107
        !          15372: l      79      3       108
        !          15373: m      87      3       109
        !          15374: n      76      2       110
        !          15375: o      76      2       111
        !          15376: p      76      2       112
        !          15377: q      76      3       113
        !          15378: r      76      3       114
        !          15379: s      89      2       115
        !          15380: t      89      3       116
        !          15381: u      79      3       117
        !          15382: v      78      3       118
        !          15383: w      44      3       119
        !          15384: x      14      2       120
        !          15385: y      28      2       121
        !          15386: z      41      2       122
        !          15387: {      39      2       123
        !          15388: |      39      2       124
        !          15389: }      67      2       125
        !          15390: ~      67      2       126
        !          15391: hy     73      3       161
        !          15392: em     54      3       162
        !          15393: de     54      3       163
        !          15394: \-     91      2       164
        !          15395: en     67      3       165
        !          15396: ff     76      3       166
        !          15397: fi     76      2       167
        !          15398: fl     78      2       168
        !          15399: Fi     60      3       169
        !          15400: Fl     69      3       170
        !          15401: fm     63      3       171
        !          15402: ru     79      3       172
        !          15403: dg     79      3       173
        !          15404: bu     79      3       174
        !          15405: 14     79      3       175
        !          15406: 34     79      3       176
        !          15407: 12     79      3       177
        !          15408: ct     79      3       178
        !          15409: rg     79      3       179
        !          15410: sq     79      3       180
        !          15411: sl     79      3       181
        !          15412: ul     79      3       182
        !          15413: or     79      3       183
        !          15414: no     79      3       184
        !          15415: ->     79      3       185
        !          15416: <-     79      3       186
        !          15417: da     79      3       187
        !          15418: lh     79      3       188
        !          15419: ua     79      3       189
        !          15420: ab     79      3       190
        !          15421: !b     79      3       191
        !          15422: aa     79      3       192
        !          15423: !m     79      3       193
        !          15424: ga     79      3       194
        !          15425: pl     79      3       195
        !          15426: mi     79      3       196
        !          15427: mu     79      3       197
        !          15428: di     79      3       198
        !          15429: eq     79      3       199
        !          15430: ==     79      3       200
        !          15431: >=     79      3       201
        !          15432: <=     79      3       202
        !          15433: !=     79      3       203
        !          15434: +-     79      3       204
        !          15435: -+     79      3       205
        !          15436: ap     79      3       206
        !          15437: ~=     79      3       207
        !          15438: gr     79      3       208
        !          15439: is     79      3       209
        !          15440: pd     79      3       210
        !          15441: if     79      3       211
        !          15442: sr     89      2       212
        !          15443: rn     84      2       213
        !          15444: sb     102     2       214
        !          15445: sp     46      3       215
        !          15446: cu     75      2       216
        !          15447: ca     92      2       217
        !          15448: ib     75      2       218
        !          15449: ip     92      2       219
        !          15450: mo     93      2       220
        !          15451: es     93      2       221
        !          15452: sc     93      2       222
        !          15453: dd     83      2       223
        !          15454: lc     87      2       224
        !          15455: rc     83      2       225
        !          15456: lf     92      2       226
        !          15457: rf     92      2       227
        !          15458: bv     92      2       228
        !          15459: **     93      2       229
        !          15460: br     93      2       230
        !          15461: ci     46      3       231
        !          15462: ts     88      2       232
        !          15463: co     84      2       233
        !          15464: lt     84      2       234
        !          15465: rt     87      2       235
        !          15466: lb     87      2       236
        !          15467: rb     70      2       237
        !          15468: lk     70      2       238
        !          15469: rk     87      2       239
        !          15470: rh     87      2       241
        !          15471: tm     76      2       242
        !          15472: Sl     95      2       243
        !          15473: ps     77      2       244
        !          15474: cs     86      2       245
        !          15475: cy     77      2       246
        !          15476: as     89      3       247
        !          15477: os     97      2       248
        !          15478: =.     89      3       249
        !          15479: ld     83      2       250
        !          15480: rd     87      2       251
        !          15481: le     93      2       252
        !          15482: ge     97      2       253
        !          15483: pp     92      2       254
        !          15484: 0707070014231217211006440057030057030000010643600522627501200002400000003376post.src/devpost/ZIname ZI
        !          15485: fontname ZapfChancery-MediumItalic
        !          15486: named in prologue
        !          15487: ligatures fi fl 0
        !          15488: spacewidth 22
        !          15489: charset
        !          15490: !      28      2       33
        !          15491: "      22      2       34
        !          15492: dq     "
        !          15493: #      68      2       35
        !          15494: $      44      3       36
        !          15495: %      68      2       37
        !          15496: &      78      2       38
        !          15497: '      24      2       39
        !          15498: (      26      3       40
        !          15499: )      22      3       41
        !          15500: *      42      2       42
        !          15501: +      52      0       43
        !          15502: ,      22      0       44
        !          15503: hy     28      0       45
        !          15504: -      "
        !          15505: .      22      0       46
        !          15506: /      34      3       47
        !          15507: 0      44      2       48
        !          15508: 1      44      2       49
        !          15509: 2      44      2       50
        !          15510: 3      44      2       51
        !          15511: 4      44      2       52
        !          15512: 5      44      2       53
        !          15513: 6      44      2       54
        !          15514: 7      44      2       55
        !          15515: 8      44      2       56
        !          15516: 9      44      2       57
        !          15517: :      26      0       58
        !          15518: ;      24      0       59
        !          15519: ---    52      0       60
        !          15520: =      52      0       61
        !          15521: ---    52      0       62
        !          15522: ?      38      2       63
        !          15523: @      70      2       64
        !          15524: A      62      2       65
        !          15525: B      60      2       66
        !          15526: C      52      2       67
        !          15527: D      70      2       68
        !          15528: E      62      2       69
        !          15529: F      58      2       70
        !          15530: G      62      3       71
        !          15531: H      68      2       72
        !          15532: I      38      2       73
        !          15533: J      40      2       74
        !          15534: K      66      3       75
        !          15535: L      58      2       76
        !          15536: M      84      2       77
        !          15537: N      70      3       78
        !          15538: O      60      2       79
        !          15539: P      54      2       80
        !          15540: Q      60      3       81
        !          15541: R      60      3       82
        !          15542: S      46      2       83
        !          15543: T      50      2       84
        !          15544: U      74      2       85
        !          15545: V      64      2       86
        !          15546: W      88      2       87
        !          15547: X      56      2       88
        !          15548: Y      56      3       89
        !          15549: Z      62      2       90
        !          15550: [      24      3       91
        !          15551: \      48      2       92
        !          15552: bs     "
        !          15553: ]      32      3       93
        !          15554: ---    52      2       94
        !          15555: ---    50      1       95
        !          15556: `      24      2       96
        !          15557: a      42      0       97
        !          15558: b      42      2       98
        !          15559: c      34      0       99
        !          15560: d      44      2       100
        !          15561: e      34      0       101
        !          15562: f      32      3       102
        !          15563: g      40      1       103
        !          15564: h      44      2       104
        !          15565: i      24      2       105
        !          15566: j      22      3       106
        !          15567: k      44      3       107
        !          15568: l      24      2       108
        !          15569: m      62      0       109
        !          15570: n      46      0       110
        !          15571: o      40      0       111
        !          15572: p      44      1       112
        !          15573: q      40      3       113
        !          15574: r      30      0       114
        !          15575: s      32      0       115
        !          15576: t      32      2       116
        !          15577: u      46      0       117
        !          15578: v      44      0       118
        !          15579: w      68      0       119
        !          15580: x      42      1       120
        !          15581: y      40      1       121
        !          15582: z      44      0       122
        !          15583: {      24      3       123
        !          15584: ---    52      2       124
        !          15585: }      24      3       125
        !          15586: ---    52      0       126
        !          15587: !!     28      1       161
        !          15588: ct     44      2       162
        !          15589: ps     48      2       163
        !          15590: fr     6       2       164
        !          15591: yn     72      3       165
        !          15592: fn     40      3       166
        !          15593: sc     42      3       167
        !          15594: cr     60      2       168
        !          15595: ---    16      2       169
        !          15596: ``     34      2       170
        !          15597: ---    34      0       171
        !          15598: ---    24      0       172
        !          15599: ---    26      0       173
        !          15600: fi     52      3       174
        !          15601: fl     52      3       175
        !          15602: en     50      0       177
        !          15603: \-     "
        !          15604: dg     46      3       178
        !          15605: dd     48      3       179
        !          15606: ---    22      0       180
        !          15607: pg     50      3       182
        !          15608: ---    60      2       183
        !          15609: ---    18      0       184
        !          15610: ---    28      0       185
        !          15611: ''     36      2       186
        !          15612: ---    38      0       187
        !          15613: ---    100     0       188
        !          15614: ---    96      2       189
        !          15615: ??     40      1       191
        !          15616: ga     22      2       193
        !          15617: \`     "
        !          15618: aa     30      2       194
        !          15619: \'     "
        !          15620: ^a     34      2       195
        !          15621: ^      "
        !          15622: ~a     44      2       196
        !          15623: ~      "
        !          15624: -a     44      2       197
        !          15625: Ua     44      2       198
        !          15626: .a     22      2       199
        !          15627: :a     36      2       200
        !          15628: oa     30      2       202
        !          15629: ,a     30      1       203
        !          15630: "a     40      2       205
        !          15631: Ca     28      1       206
        !          15632: va     34      2       207
        !          15633: em     100     0       208
        !          15634: ---    74      2       225
        !          15635: ---    26      2       227
        !          15636: ---    58      2       232
        !          15637: ---    66      3       233
        !          15638: ---    82      2       234
        !          15639: ---    26      2       235
        !          15640: ---    54      0       241
        !          15641: ---    24      0       245
        !          15642: ---    30      2       248
        !          15643: ---    44      3       249
        !          15644: ---    56      0       250
        !          15645: ---    42      3       251
        !          15646: 0707070014230000050407550057030057030000020036570522627501400003100000000000post.src/devpost/charlib0707070014230001611006440057030057030000010072070522627501200003400000000421post.src/devpost/charlib/12/build_12 {
        !          15647:     pop
        !          15648:     /optsize ptsize def
        !          15649:     /osize size def
        !          15650:     /ofont font def
        !          15651: 
        !          15652:     optsize 2 div dup R exch R f
        !          15653:     0 size 2 mul 3 div dup neg exch 0 exch rmoveto
        !          15654: 
        !          15655:     (1) show
        !          15656:     rmoveto
        !          15657:     optsize R f
        !          15658:     (\244) show
        !          15659:     f
        !          15660:     (2) show
        !          15661: 
        !          15662:     optsize ofont f
        !          15663: } def
        !          15664: 0707070014230001731006440057030057030000010032400522627501200003400000000421post.src/devpost/charlib/14/build_14 {
        !          15665:     pop
        !          15666:     /optsize ptsize def
        !          15667:     /osize size def
        !          15668:     /ofont font def
        !          15669: 
        !          15670:     optsize 2 div dup R exch R f
        !          15671:     0 size 2 mul 3 div dup neg exch 0 exch rmoveto
        !          15672: 
        !          15673:     (1) show
        !          15674:     rmoveto
        !          15675:     optsize R f
        !          15676:     (\244) show
        !          15677:     f
        !          15678:     (4) show
        !          15679: 
        !          15680:     optsize ofont f
        !          15681: } def
        !          15682: 0707070014230001741006440057030057030000010032410522627501200003400000000421post.src/devpost/charlib/34/build_34 {
        !          15683:     pop
        !          15684:     /optsize ptsize def
        !          15685:     /osize size def
        !          15686:     /ofont font def
        !          15687: 
        !          15688:     optsize 2 div dup R exch R f
        !          15689:     0 size 2 mul 3 div dup neg exch 0 exch rmoveto
        !          15690: 
        !          15691:     (3) show
        !          15692:     rmoveto
        !          15693:     optsize R f
        !          15694:     (\244) show
        !          15695:     f
        !          15696:     (4) show
        !          15697: 
        !          15698:     optsize ofont f
        !          15699: } def
        !          15700: 0707070014230005521006440057030057030000010073200522627501300003400000014726post.src/devpost/charlib/LV%
        !          15701: % PostScript 12 and 8 line logos - vertical configuration. Switch occurs
        !          15702: % automatically below point size 29. Code from Matthijs Melchior.
        !          15703: %
        !          15704: 
        !          15705: /LOGO-dict-mm where not {
        !          15706:        64 dict /LOGO-dict-mm exch def
        !          15707: }{pop} ifelse
        !          15708: LOGO-dict-mm begin             % initialize dictionary
        !          15709: 
        !          15710: 
        !          15711: /globesetup {
        !          15712: /r exch def
        !          15713: /N exch def
        !          15714: /d 2 N r mul N 1 sub add div def
        !          15715: /h d r mul def
        !          15716: } def
        !          15717: /mkabs {
        !          15718: /yp exch def
        !          15719: /xl exch def
        !          15720: dup dup 0 get xl mul 0 exch put
        !          15721: dup dup 1 get h mul yp add 1 exch put
        !          15722: dup dup 2 get xl mul 2 exch put
        !          15723: dup dup 3 get h mul yp add 3 exch put
        !          15724: dup dup 4 get xl mul 4 exch put
        !          15725: dup dup 5 get h mul yp add 5 exch put
        !          15726: } def
        !          15727: /topsegment {
        !          15728: /n exch def
        !          15729: /y n r mul n .5 add add d mul def
        !          15730: /a y 1 y dup mul sub sqrt atan def
        !          15731: /x a cos def
        !          15732: /c2 exch x y mkabs def
        !          15733: /ly1 exch h mul y add def
        !          15734: /lx1 exch x abs mul def
        !          15735: /c1 exch x y mkabs def
        !          15736: x y /moveto load
        !          15737: 0 0 1 a 180 a sub /arc load
        !          15738: c1 aload pop /curveto load
        !          15739: lx1 ly1 /lineto load
        !          15740: c2 aload pop /curveto load
        !          15741: /closepath load
        !          15742: } def
        !          15743: /botsegment {
        !          15744: /n exch 1 add def
        !          15745: /y n r mul n .5 sub add d mul def
        !          15746: /a y 1 y dup mul sub sqrt atan def
        !          15747: /x a cos def
        !          15748: /c2 exch x y mkabs def
        !          15749: /ly1 exch h mul y add def
        !          15750: /lx1 exch x abs mul def
        !          15751: /c1 exch x y mkabs def
        !          15752: x y /moveto load
        !          15753: 0 0 1 a 540 a sub /arcn load
        !          15754: c1 aload pop /curveto load
        !          15755: lx1 ly1 /lineto load
        !          15756: c2 aload pop /curveto load
        !          15757: /closepath load
        !          15758: } def
        !          15759: /segment {
        !          15760: /n exch def
        !          15761: /dh exch 1 exch sub 2 div def
        !          15762: /ylb n r mul n 0.5 add add d mul def
        !          15763: /ylt ylb h add def
        !          15764: /yrb ylb h dh mul add def
        !          15765: /yrt ylt h dh mul sub def
        !          15766: /alb ylb 1 ylb dup mul sub sqrt atan def
        !          15767: /alt ylt 1 ylt dup mul sub sqrt atan def
        !          15768: /arb yrb 1 yrb dup mul sub sqrt atan 180 exch sub def
        !          15769: /art yrt 1 yrt dup mul sub sqrt atan 180 exch sub def
        !          15770: /xlb alb cos def
        !          15771: /xlt alt cos def
        !          15772: /xrb arb cos def
        !          15773: /xrt art cos def
        !          15774: /c4 exch xrb abs ylb mkabs def
        !          15775: /ly2 exch h mul ylb add def
        !          15776: /lx2 exch xrb abs mul def
        !          15777: /c3 exch xrb abs ylb mkabs def
        !          15778: /c2 exch xrt abs ylt mkabs def
        !          15779: /ly1 exch h mul ylt add def
        !          15780: /lx1 exch xrt abs mul def
        !          15781: /c1 exch xrt abs ylt mkabs def
        !          15782: xlb ylb /moveto load
        !          15783: 0 0 1 alb alt /arc load
        !          15784: c2 4 get c2 5 get /lineto load
        !          15785: c2 2 get c2 3 get
        !          15786: c2 0 get c2 1 get
        !          15787: lx1 ly1        /curveto load
        !          15788: c1 4 get c1 5 get /lineto load
        !          15789: c1 2 get c1 3 get
        !          15790: c1 0 get c1 1 get
        !          15791: xrt yrt /curveto load
        !          15792: 0 0 1 art arb /arc load
        !          15793: c3 aload pop /curveto load
        !          15794: lx2 ly2 /lineto load
        !          15795: c4 aload pop /curveto load
        !          15796: /closepath load
        !          15797: } def
        !          15798: 8 2.5 globesetup
        !          15799: /globe8 [
        !          15800: /newpath load
        !          15801: [ -.9   .1  -.6   .2  -.5   .2  ] -.5   .2  [ -.4   .2   .0  .0  .4  .0 ] 3 topsegment
        !          15802: [ -.9  -.35 -.85 -.35 -.8  -.35 ] -.1  -.35 [  .1  -.35  .3  .0  .5  .0 ]
        !          15803: [ -.8   .35 -.75  .35 -.7   .35 ] -.1   .35 [  .1   .35  .4  .0  .55 .0 ] .55 2 segment
        !          15804: [ -.8  -.35 -.75 -.35 -.7  -.35 ]  .05 -.35 [  .2  -.35  .4  .0  .55 .0 ]
        !          15805: [ -.8   .35 -.75  .35 -.7   .35 ]  .05  .35 [  .2   .35  .45 .0  .6  .0 ] .7  1 segment
        !          15806: [ -.8  -.35 -.75 -.35 -.7  -.35 ]  .0  -.35 [  .15 -.35  .4  .0  .6  .0 ]
        !          15807: [ -.8   .35 -.75  .35 -.7   .35 ]  .0   .35 [  .15  .35  .4  .0  .6  .0 ] .7  0 segment
        !          15808: [ -.7  -.35 -.65 -.35 -.6  -.35 ] -.1  -.35 [  .05 -.35  .35 .0  .55 .0 ]
        !          15809: [ -.7   .35 -.65  .35 -.6   .35 ] -.1   .35 [  .05  .35  .25 .0  .4  .0 ] .8 -1 segment
        !          15810: [ -.65 -.2  -.55 -.2 -.45  -.2  ] -.3   -.2 [ -.2  -.2   .2  .0  .3  .0 ]
        !          15811: [ -.65  .1  -.55  .1 -.45   .1  ] -.45  .1  [ -.3   .1  -.1  .0  .0  .0 ] .96 -2 segment
        !          15812: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
        !          15813: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]  1 -3 segment
        !          15814: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] -4 botsegment
        !          15815: ] cvx def
        !          15816: 12 3 globesetup
        !          15817: /globe12 [
        !          15818: /newpath load
        !          15819: [ -.8   .2  -.7  .25 -.5   .25 ] -.4  .25 [ -.2   .25  .0  .0  .2  .0 ] 5 topsegment
        !          15820: [ -.7  -.35 -.7 -.35 -.6  -.35 ] -.3 -.35 [ -.1  -.35  .3  .0  .55 .0 ]
        !          15821: [ -.7   .35 -.7  .35 -.6   .35 ] -.25 .35 [ -.05  .35  .4  .0  .55 .0 ] .6  4 segment
        !          15822: [ -.8  -.35 -.7 -.35 -.6  -.35 ] -.1 -.35 [  .1  -.35  .4  .0  .5  .0 ]
        !          15823: [ -.8   .35 -.7  .35 -.6   .35 ] -.1  .35 [  .1   .35  .4  .0  .5  .0 ] .7  3 segment
        !          15824: [ -.8  -.35 -.7 -.35 -.6  -.35 ]  .0 -.35 [  .1  -.35  .45 .0  .55 .0 ]
        !          15825: [ -.8   .35 -.7  .35 -.6   .35 ]  .0  .35 [  .15  .35  .4  .0  .5  .0 ] .8  2 segment
        !          15826: [ -.75 -.35 -.7 -.35 -.6  -.35 ]  .0 -.35 [  .2  -.35  .4  .0  .5  .0 ]
        !          15827: [ -.75  .35 -.7  .35 -.6   .35 ]  .0  .35 [  .2   .35  .45 .0  .55 .0 ] .9  1 segment
        !          15828: [ -.7  -.35 -.6 -.35 -.55 -.35 ]  .0 -.35 [  .1  -.35  .45 .0  .55 .0 ]
        !          15829: [ -.7   .35 -.6  .35 -.55  .35 ]  .0  .35 [  .1   .35  .5  .0  .6  .0 ] .9  0 segment
        !          15830: ] cvx
        !          15831: [
        !          15832: [ -.7 -.35 -.6 -.35 -.5  -.35 ] -.15 -.35 [  .0  -.35  .4  .0  .5  .0 ]
        !          15833: [ -.65 .35 -.55 .35 -.45  .35 ] -.15  .35 [  .0   .35  .35 .0  .45 .0 ] .9 -1 segment
        !          15834: [ -.8 -.1  -.5 -.3  -.4  -.3  ] -.2  -.3  [  .0  -.3   .3  .0  .4  .0 ]
        !          15835: [ -.8  .1  -.5  .3  -.4   .3  ] -.2   .3  [  .0   .3   .2  .0  .3  .0 ] 1 -2 segment
        !          15836: [ -.7 -.1  -.5 -.15 -.4  -.15 ] -.3  -.15 [ -.2  -.15  .0  .0  .2  .0 ]
        !          15837: [ -.7  .05 -.5  .1  -.4   .1  ] -.4   .1  [ -.3   .1   .0  .0  .2  .0 ] 1 -3 segment
        !          15838: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
        !          15839: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] 1 -4 segment
        !          15840: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
        !          15841: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] 1 -5 segment
        !          15842: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] -6 botsegment
        !          15843: ] cvx
        !          15844: 4 array cvx
        !          15845: dup 0 5 -1 roll put
        !          15846: dup 1 /exec load put
        !          15847: dup 2 4 -1 roll put
        !          15848: dup 3 /exec load put
        !          15849: def
        !          15850: 
        !          15851: /l {  lineto } def
        !          15852: /rl {  rlineto } def
        !          15853: /m {  moveto } def
        !          15854: /rm {  rmoveto } def
        !          15855: /C { closepath } def
        !          15856: /c {  curveto } def
        !          15857: /rc {  rcurveto } def
        !          15858: /T { m 0 29 rl -9.5 0 rl 0 7 rl 29 0 rl 0 -7 rl -9.5 0 rl 0 -29 rl C } def
        !          15859: /ATT {
        !          15860: newpath
        !          15861: 1 36 div dup scale
        !          15862: 0  0 m  12 36 rl  8 0 rl -11 -36 rl C
        !          15863: 25  0 m -11 36 rl  8 0 rl  12 -36 rl C
        !          15864: 10  7 m   0  7 rl 14 0 rl   0  -7 rl C
        !          15865: 36  0 T
        !          15866: 80  6 m -3 0 -5 1.2 -6 2 rc -12 10 rl -2.4 2 -2.7 6 0 6 rc
        !          15867: 1 0 2 -1 2 -2 rc 0 -4 rl 7 0 rl 0 4 rl
        !          15868: 0 5 -3 7 -9 7 rc -6 0 -9 -3 -9 -7 rc
        !          15869: 0 -2 0 -3.6 2 -6 rc 12 -10 rl 6 -5 10 -6 13 -6 rc C
        !          15870: 71 18 m 0 -6 rl 0 -5 -3 -7 -7 -7 rc -3 0 -5 2 -5 4 rc 0 1 0 3 2 4 rc
        !          15871: -4 5 rl -4 -2 -6 -6 -6 -9 rc 0 -7 6 -10 13 -10 rc
        !          15872: 9 0 14 6 14 11 rc 0 8 rl C
        !          15873: 82  0 T
        !          15874: 36 dup scale
        !          15875: } def
        !          15876: 
        !          15877: end
        !          15878: 
        !          15879: /build_LV { % standard ATT logo
        !          15880:     LOGO-dict-mm begin
        !          15881:        /w exch def
        !          15882:        ptsize 29 lt    % select globe, # lines depends on point size
        !          15883:                { /globe /globe8 load def }
        !          15884:                { /globe /globe12 load def } ifelse
        !          15885:        gsave
        !          15886:         currentpoint translate
        !          15887:         size 2 div dup scale
        !          15888:         gsave
        !          15889:          1.02 1 transform round exch round exch itransform
        !          15890:          translate
        !          15891:          globe fill
        !          15892:         grestore
        !          15893:         gsave
        !          15894:          %2.15 .62 translate
        !          15895:          -0.1 -1.0 translate
        !          15896:          .78 dup scale
        !          15897:          ATT fill
        !          15898:         grestore
        !          15899:        grestore
        !          15900:     end
        !          15901: } def
        !          15902: 0707070014230005531006440057030057030000010073270522627501300003400000000075post.src/devpost/charlib/Fi/build_Fi {
        !          15903:     pop
        !          15904:     size .05 mul neg 0 (ffi) ashow
        !          15905: } def
        !          15906: 0707070014230005541006440057030057030000010041550522627501300003400000000075post.src/devpost/charlib/Fl/build_Fl {
        !          15907:     pop
        !          15908:     size .05 mul neg 0 (ffl) ashow
        !          15909: } def
        !          15910: 0707070014230005551006440057030057030000010110620522627501300003400000012536post.src/devpost/charlib/L1/LOGO-dict-mm dup where not
        !          15911: { dup 64 dict def currentdict } if
        !          15912: exch get
        !          15913: begin
        !          15914: /globesetup {
        !          15915: /r exch def
        !          15916: /N exch def
        !          15917: /d 2 N r mul N 1 sub add div def
        !          15918: /h d r mul def
        !          15919: } def
        !          15920: /mkabs {
        !          15921: /yp exch def
        !          15922: /xl exch def
        !          15923: dup dup 0 get xl mul 0 exch put
        !          15924: dup dup 1 get h mul yp add 1 exch put
        !          15925: dup dup 2 get xl mul 2 exch put
        !          15926: dup dup 3 get h mul yp add 3 exch put
        !          15927: dup dup 4 get xl mul 4 exch put
        !          15928: dup dup 5 get h mul yp add 5 exch put
        !          15929: } def
        !          15930: /topsegment {
        !          15931: /n exch def
        !          15932: /y n r mul n .5 add add d mul def
        !          15933: /a y 1 y dup mul sub sqrt atan def
        !          15934: /x a cos def
        !          15935: /c2 exch x y mkabs def
        !          15936: /ly1 exch h mul y add def
        !          15937: /lx1 exch x abs mul def
        !          15938: /c1 exch x y mkabs def
        !          15939: x y /moveto load
        !          15940: 0 0 1 a 180 a sub /arc load
        !          15941: c1 aload pop /curveto load
        !          15942: lx1 ly1 /lineto load
        !          15943: c2 aload pop /curveto load
        !          15944: /closepath load
        !          15945: } def
        !          15946: /botsegment {
        !          15947: /n exch 1 add def
        !          15948: /y n r mul n .5 sub add d mul def
        !          15949: /a y 1 y dup mul sub sqrt atan def
        !          15950: /x a cos def
        !          15951: /c2 exch x y mkabs def
        !          15952: /ly1 exch h mul y add def
        !          15953: /lx1 exch x abs mul def
        !          15954: /c1 exch x y mkabs def
        !          15955: x y /moveto load
        !          15956: 0 0 1 a 540 a sub /arcn load
        !          15957: c1 aload pop /curveto load
        !          15958: lx1 ly1 /lineto load
        !          15959: c2 aload pop /curveto load
        !          15960: /closepath load
        !          15961: } def
        !          15962: /segment {
        !          15963: /n exch def
        !          15964: /dh exch 1 exch sub 2 div def
        !          15965: /ylb n r mul n 0.5 add add d mul def
        !          15966: /ylt ylb h add def
        !          15967: /yrb ylb h dh mul add def
        !          15968: /yrt ylt h dh mul sub def
        !          15969: /alb ylb 1 ylb dup mul sub sqrt atan def
        !          15970: /alt ylt 1 ylt dup mul sub sqrt atan def
        !          15971: /arb yrb 1 yrb dup mul sub sqrt atan 180 exch sub def
        !          15972: /art yrt 1 yrt dup mul sub sqrt atan 180 exch sub def
        !          15973: /xlb alb cos def
        !          15974: /xlt alt cos def
        !          15975: /xrb arb cos def
        !          15976: /xrt art cos def
        !          15977: /c4 exch xrb abs ylb mkabs def
        !          15978: /ly2 exch h mul ylb add def
        !          15979: /lx2 exch xrb abs mul def
        !          15980: /c3 exch xrb abs ylb mkabs def
        !          15981: /c2 exch xrt abs ylt mkabs def
        !          15982: /ly1 exch h mul ylt add def
        !          15983: /lx1 exch xrt abs mul def
        !          15984: /c1 exch xrt abs ylt mkabs def
        !          15985: xlb ylb /moveto load
        !          15986: 0 0 1 alb alt /arc load
        !          15987: c2 4 get c2 5 get /lineto load
        !          15988: c2 2 get c2 3 get
        !          15989: c2 0 get c2 1 get
        !          15990: lx1 ly1        /curveto load
        !          15991: c1 4 get c1 5 get /lineto load
        !          15992: c1 2 get c1 3 get
        !          15993: c1 0 get c1 1 get
        !          15994: xrt yrt /curveto load
        !          15995: 0 0 1 art arb /arc load
        !          15996: c3 aload pop /curveto load
        !          15997: lx2 ly2 /lineto load
        !          15998: c4 aload pop /curveto load
        !          15999: /closepath load
        !          16000: } def
        !          16001: 8 2.5 globesetup
        !          16002: /globe8 [
        !          16003: /newpath load
        !          16004: [ -.9   .1  -.6   .2  -.5   .2  ] -.5   .2  [ -.4   .2   .0  .0  .4  .0 ] 3 topsegment
        !          16005: [ -.9  -.35 -.85 -.35 -.8  -.35 ] -.1  -.35 [  .1  -.35  .3  .0  .5  .0 ]
        !          16006: [ -.8   .35 -.75  .35 -.7   .35 ] -.1   .35 [  .1   .35  .4  .0  .55 .0 ] .55 2 segment
        !          16007: [ -.8  -.35 -.75 -.35 -.7  -.35 ]  .05 -.35 [  .2  -.35  .4  .0  .55 .0 ]
        !          16008: [ -.8   .35 -.75  .35 -.7   .35 ]  .05  .35 [  .2   .35  .45 .0  .6  .0 ] .7  1 segment
        !          16009: [ -.8  -.35 -.75 -.35 -.7  -.35 ]  .0  -.35 [  .15 -.35  .4  .0  .6  .0 ]
        !          16010: [ -.8   .35 -.75  .35 -.7   .35 ]  .0   .35 [  .15  .35  .4  .0  .6  .0 ] .7  0 segment
        !          16011: [ -.7  -.35 -.65 -.35 -.6  -.35 ] -.1  -.35 [  .05 -.35  .35 .0  .55 .0 ]
        !          16012: [ -.7   .35 -.65  .35 -.6   .35 ] -.1   .35 [  .05  .35  .25 .0  .4  .0 ] .8 -1 segment
        !          16013: [ -.65 -.2  -.55 -.2 -.45  -.2  ] -.3   -.2 [ -.2  -.2   .2  .0  .3  .0 ]
        !          16014: [ -.65  .1  -.55  .1 -.45   .1  ] -.45  .1  [ -.3   .1  -.1  .0  .0  .0 ] .96 -2 segment
        !          16015: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
        !          16016: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]  1 -3 segment
        !          16017: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] -4 botsegment
        !          16018: ] cvx def
        !          16019: 12 3 globesetup
        !          16020: /globe12 [
        !          16021: /newpath load
        !          16022: [ -.8   .2  -.7  .25 -.5   .25 ] -.4  .25 [ -.2   .25  .0  .0  .2  .0 ] 5 topsegment
        !          16023: [ -.7  -.35 -.7 -.35 -.6  -.35 ] -.3 -.35 [ -.1  -.35  .3  .0  .55 .0 ]
        !          16024: [ -.7   .35 -.7  .35 -.6   .35 ] -.25 .35 [ -.05  .35  .4  .0  .55 .0 ] .6  4 segment
        !          16025: [ -.8  -.35 -.7 -.35 -.6  -.35 ] -.1 -.35 [  .1  -.35  .4  .0  .5  .0 ]
        !          16026: [ -.8   .35 -.7  .35 -.6   .35 ] -.1  .35 [  .1   .35  .4  .0  .5  .0 ] .7  3 segment
        !          16027: [ -.8  -.35 -.7 -.35 -.6  -.35 ]  .0 -.35 [  .1  -.35  .45 .0  .55 .0 ]
        !          16028: [ -.8   .35 -.7  .35 -.6   .35 ]  .0  .35 [  .15  .35  .4  .0  .5  .0 ] .8  2 segment
        !          16029: [ -.75 -.35 -.7 -.35 -.6  -.35 ]  .0 -.35 [  .2  -.35  .4  .0  .5  .0 ]
        !          16030: [ -.75  .35 -.7  .35 -.6   .35 ]  .0  .35 [  .2   .35  .45 .0  .55 .0 ] .9  1 segment
        !          16031: [ -.7  -.35 -.6 -.35 -.55 -.35 ]  .0 -.35 [  .1  -.35  .45 .0  .55 .0 ]
        !          16032: [ -.7   .35 -.6  .35 -.55  .35 ]  .0  .35 [  .1   .35  .5  .0  .6  .0 ] .9  0 segment
        !          16033: ] cvx
        !          16034: [
        !          16035: [ -.7 -.35 -.6 -.35 -.5  -.35 ] -.15 -.35 [  .0  -.35  .4  .0  .5  .0 ]
        !          16036: [ -.65 .35 -.55 .35 -.45  .35 ] -.15  .35 [  .0   .35  .35 .0  .45 .0 ] .9 -1 segment
        !          16037: [ -.8 -.1  -.5 -.3  -.4  -.3  ] -.2  -.3  [  .0  -.3   .3  .0  .4  .0 ]
        !          16038: [ -.8  .1  -.5  .3  -.4   .3  ] -.2   .3  [  .0   .3   .2  .0  .3  .0 ] 1 -2 segment
        !          16039: [ -.7 -.1  -.5 -.15 -.4  -.15 ] -.3  -.15 [ -.2  -.15  .0  .0  .2  .0 ]
        !          16040: [ -.7  .05 -.5  .1  -.4   .1  ] -.4   .1  [ -.3   .1   .0  .0  .2  .0 ] 1 -3 segment
        !          16041: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
        !          16042: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] 1 -4 segment
        !          16043: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
        !          16044: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] 1 -5 segment
        !          16045: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] -6 botsegment
        !          16046: ] cvx
        !          16047: 4 array cvx
        !          16048: dup 0 5 -1 roll put
        !          16049: dup 1 /exec load put
        !          16050: dup 2 4 -1 roll put
        !          16051: dup 3 /exec load put
        !          16052: def
        !          16053: end
        !          16054: /build_L1 {
        !          16055: pop
        !          16056: LOGO-dict-mm begin
        !          16057: ptsize 29 lt
        !          16058: { /globe /globe8 load def }
        !          16059: { /globe /globe12 load def } ifelse
        !          16060: gsave
        !          16061: currentpoint translate
        !          16062: size 2 div dup scale
        !          16063: 1.02 1 transform round exch round exch itransform
        !          16064: translate
        !          16065: globe fill
        !          16066: grestore
        !          16067: end
        !          16068: } def
        !          16069: 0707070014230005561006440057030057030000010073400522627501300003400000014673post.src/devpost/charlib/LH%
        !          16070: % PostScript 12 and 8 line logos - horizontal configuration. Switch occurs
        !          16071: % automatically below point size 29. Code from Matthijs Melchior.
        !          16072: %
        !          16073: 
        !          16074: /LOGO-dict-mm where not {
        !          16075:        64 dict /LOGO-dict-mm exch def
        !          16076: }{pop} ifelse
        !          16077: LOGO-dict-mm begin             % initialize dictionary
        !          16078: 
        !          16079: 
        !          16080: /globesetup {
        !          16081: /r exch def
        !          16082: /N exch def
        !          16083: /d 2 N r mul N 1 sub add div def
        !          16084: /h d r mul def
        !          16085: } def
        !          16086: /mkabs {
        !          16087: /yp exch def
        !          16088: /xl exch def
        !          16089: dup dup 0 get xl mul 0 exch put
        !          16090: dup dup 1 get h mul yp add 1 exch put
        !          16091: dup dup 2 get xl mul 2 exch put
        !          16092: dup dup 3 get h mul yp add 3 exch put
        !          16093: dup dup 4 get xl mul 4 exch put
        !          16094: dup dup 5 get h mul yp add 5 exch put
        !          16095: } def
        !          16096: /topsegment {
        !          16097: /n exch def
        !          16098: /y n r mul n .5 add add d mul def
        !          16099: /a y 1 y dup mul sub sqrt atan def
        !          16100: /x a cos def
        !          16101: /c2 exch x y mkabs def
        !          16102: /ly1 exch h mul y add def
        !          16103: /lx1 exch x abs mul def
        !          16104: /c1 exch x y mkabs def
        !          16105: x y /moveto load
        !          16106: 0 0 1 a 180 a sub /arc load
        !          16107: c1 aload pop /curveto load
        !          16108: lx1 ly1 /lineto load
        !          16109: c2 aload pop /curveto load
        !          16110: /closepath load
        !          16111: } def
        !          16112: /botsegment {
        !          16113: /n exch 1 add def
        !          16114: /y n r mul n .5 sub add d mul def
        !          16115: /a y 1 y dup mul sub sqrt atan def
        !          16116: /x a cos def
        !          16117: /c2 exch x y mkabs def
        !          16118: /ly1 exch h mul y add def
        !          16119: /lx1 exch x abs mul def
        !          16120: /c1 exch x y mkabs def
        !          16121: x y /moveto load
        !          16122: 0 0 1 a 540 a sub /arcn load
        !          16123: c1 aload pop /curveto load
        !          16124: lx1 ly1 /lineto load
        !          16125: c2 aload pop /curveto load
        !          16126: /closepath load
        !          16127: } def
        !          16128: /segment {
        !          16129: /n exch def
        !          16130: /dh exch 1 exch sub 2 div def
        !          16131: /ylb n r mul n 0.5 add add d mul def
        !          16132: /ylt ylb h add def
        !          16133: /yrb ylb h dh mul add def
        !          16134: /yrt ylt h dh mul sub def
        !          16135: /alb ylb 1 ylb dup mul sub sqrt atan def
        !          16136: /alt ylt 1 ylt dup mul sub sqrt atan def
        !          16137: /arb yrb 1 yrb dup mul sub sqrt atan 180 exch sub def
        !          16138: /art yrt 1 yrt dup mul sub sqrt atan 180 exch sub def
        !          16139: /xlb alb cos def
        !          16140: /xlt alt cos def
        !          16141: /xrb arb cos def
        !          16142: /xrt art cos def
        !          16143: /c4 exch xrb abs ylb mkabs def
        !          16144: /ly2 exch h mul ylb add def
        !          16145: /lx2 exch xrb abs mul def
        !          16146: /c3 exch xrb abs ylb mkabs def
        !          16147: /c2 exch xrt abs ylt mkabs def
        !          16148: /ly1 exch h mul ylt add def
        !          16149: /lx1 exch xrt abs mul def
        !          16150: /c1 exch xrt abs ylt mkabs def
        !          16151: xlb ylb /moveto load
        !          16152: 0 0 1 alb alt /arc load
        !          16153: c2 4 get c2 5 get /lineto load
        !          16154: c2 2 get c2 3 get
        !          16155: c2 0 get c2 1 get
        !          16156: lx1 ly1        /curveto load
        !          16157: c1 4 get c1 5 get /lineto load
        !          16158: c1 2 get c1 3 get
        !          16159: c1 0 get c1 1 get
        !          16160: xrt yrt /curveto load
        !          16161: 0 0 1 art arb /arc load
        !          16162: c3 aload pop /curveto load
        !          16163: lx2 ly2 /lineto load
        !          16164: c4 aload pop /curveto load
        !          16165: /closepath load
        !          16166: } def
        !          16167: 8 2.5 globesetup
        !          16168: /globe8 [
        !          16169: /newpath load
        !          16170: [ -.9   .1  -.6   .2  -.5   .2  ] -.5   .2  [ -.4   .2   .0  .0  .4  .0 ] 3 topsegment
        !          16171: [ -.9  -.35 -.85 -.35 -.8  -.35 ] -.1  -.35 [  .1  -.35  .3  .0  .5  .0 ]
        !          16172: [ -.8   .35 -.75  .35 -.7   .35 ] -.1   .35 [  .1   .35  .4  .0  .55 .0 ] .55 2 segment
        !          16173: [ -.8  -.35 -.75 -.35 -.7  -.35 ]  .05 -.35 [  .2  -.35  .4  .0  .55 .0 ]
        !          16174: [ -.8   .35 -.75  .35 -.7   .35 ]  .05  .35 [  .2   .35  .45 .0  .6  .0 ] .7  1 segment
        !          16175: [ -.8  -.35 -.75 -.35 -.7  -.35 ]  .0  -.35 [  .15 -.35  .4  .0  .6  .0 ]
        !          16176: [ -.8   .35 -.75  .35 -.7   .35 ]  .0   .35 [  .15  .35  .4  .0  .6  .0 ] .7  0 segment
        !          16177: [ -.7  -.35 -.65 -.35 -.6  -.35 ] -.1  -.35 [  .05 -.35  .35 .0  .55 .0 ]
        !          16178: [ -.7   .35 -.65  .35 -.6   .35 ] -.1   .35 [  .05  .35  .25 .0  .4  .0 ] .8 -1 segment
        !          16179: [ -.65 -.2  -.55 -.2 -.45  -.2  ] -.3   -.2 [ -.2  -.2   .2  .0  .3  .0 ]
        !          16180: [ -.65  .1  -.55  .1 -.45   .1  ] -.45  .1  [ -.3   .1  -.1  .0  .0  .0 ] .96 -2 segment
        !          16181: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
        !          16182: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]  1 -3 segment
        !          16183: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] -4 botsegment
        !          16184: ] cvx def
        !          16185: 12 3 globesetup
        !          16186: /globe12 [
        !          16187: /newpath load
        !          16188: [ -.8   .2  -.7  .25 -.5   .25 ] -.4  .25 [ -.2   .25  .0  .0  .2  .0 ] 5 topsegment
        !          16189: [ -.7  -.35 -.7 -.35 -.6  -.35 ] -.3 -.35 [ -.1  -.35  .3  .0  .55 .0 ]
        !          16190: [ -.7   .35 -.7  .35 -.6   .35 ] -.25 .35 [ -.05  .35  .4  .0  .55 .0 ] .6  4 segment
        !          16191: [ -.8  -.35 -.7 -.35 -.6  -.35 ] -.1 -.35 [  .1  -.35  .4  .0  .5  .0 ]
        !          16192: [ -.8   .35 -.7  .35 -.6   .35 ] -.1  .35 [  .1   .35  .4  .0  .5  .0 ] .7  3 segment
        !          16193: [ -.8  -.35 -.7 -.35 -.6  -.35 ]  .0 -.35 [  .1  -.35  .45 .0  .55 .0 ]
        !          16194: [ -.8   .35 -.7  .35 -.6   .35 ]  .0  .35 [  .15  .35  .4  .0  .5  .0 ] .8  2 segment
        !          16195: [ -.75 -.35 -.7 -.35 -.6  -.35 ]  .0 -.35 [  .2  -.35  .4  .0  .5  .0 ]
        !          16196: [ -.75  .35 -.7  .35 -.6   .35 ]  .0  .35 [  .2   .35  .45 .0  .55 .0 ] .9  1 segment
        !          16197: [ -.7  -.35 -.6 -.35 -.55 -.35 ]  .0 -.35 [  .1  -.35  .45 .0  .55 .0 ]
        !          16198: [ -.7   .35 -.6  .35 -.55  .35 ]  .0  .35 [  .1   .35  .5  .0  .6  .0 ] .9  0 segment
        !          16199: ] cvx
        !          16200: [
        !          16201: [ -.7 -.35 -.6 -.35 -.5  -.35 ] -.15 -.35 [  .0  -.35  .4  .0  .5  .0 ]
        !          16202: [ -.65 .35 -.55 .35 -.45  .35 ] -.15  .35 [  .0   .35  .35 .0  .45 .0 ] .9 -1 segment
        !          16203: [ -.8 -.1  -.5 -.3  -.4  -.3  ] -.2  -.3  [  .0  -.3   .3  .0  .4  .0 ]
        !          16204: [ -.8  .1  -.5  .3  -.4   .3  ] -.2   .3  [  .0   .3   .2  .0  .3  .0 ] 1 -2 segment
        !          16205: [ -.7 -.1  -.5 -.15 -.4  -.15 ] -.3  -.15 [ -.2  -.15  .0  .0  .2  .0 ]
        !          16206: [ -.7  .05 -.5  .1  -.4   .1  ] -.4   .1  [ -.3   .1   .0  .0  .2  .0 ] 1 -3 segment
        !          16207: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
        !          16208: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] 1 -4 segment
        !          16209: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
        !          16210: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] 1 -5 segment
        !          16211: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] -6 botsegment
        !          16212: ] cvx
        !          16213: 4 array cvx
        !          16214: dup 0 5 -1 roll put
        !          16215: dup 1 /exec load put
        !          16216: dup 2 4 -1 roll put
        !          16217: dup 3 /exec load put
        !          16218: def
        !          16219: 
        !          16220: /l {  lineto } def
        !          16221: /rl {  rlineto } def
        !          16222: /m {  moveto } def
        !          16223: /rm {  rmoveto } def
        !          16224: /C { closepath } def
        !          16225: /c {  curveto } def
        !          16226: /rc {  rcurveto } def
        !          16227: /T { m 0 29 rl -9.5 0 rl 0 7 rl 29 0 rl 0 -7 rl -9.5 0 rl 0 -29 rl C } def
        !          16228: /ATT {
        !          16229: newpath
        !          16230: 1 36 div dup scale
        !          16231: 0  0 m  12 36 rl  8 0 rl -11 -36 rl C
        !          16232: 25  0 m -11 36 rl  8 0 rl  12 -36 rl C
        !          16233: 10  7 m   0  7 rl 14 0 rl   0  -7 rl C
        !          16234: 36  0 T
        !          16235: 80  6 m -3 0 -5 1.2 -6 2 rc -12 10 rl -2.4 2 -2.7 6 0 6 rc
        !          16236: 1 0 2 -1 2 -2 rc 0 -4 rl 7 0 rl 0 4 rl
        !          16237: 0 5 -3 7 -9 7 rc -6 0 -9 -3 -9 -7 rc
        !          16238: 0 -2 0 -3.6 2 -6 rc 12 -10 rl 6 -5 10 -6 13 -6 rc C
        !          16239: 71 18 m 0 -6 rl 0 -5 -3 -7 -7 -7 rc -3 0 -5 2 -5 4 rc 0 1 0 3 2 4 rc
        !          16240: -4 5 rl -4 -2 -6 -6 -6 -9 rc 0 -7 6 -10 13 -10 rc
        !          16241: 9 0 14 6 14 11 rc 0 8 rl C
        !          16242: 82  0 T
        !          16243: 36 dup scale
        !          16244: } def
        !          16245: 
        !          16246: end
        !          16247: 
        !          16248: /build_LH { % standard ATT logo
        !          16249:     LOGO-dict-mm begin
        !          16250:        /w exch def
        !          16251:        ptsize 29 lt    % select globe, # lines depends on point size
        !          16252:                { /globe /globe8 load def }
        !          16253:                { /globe /globe12 load def } ifelse
        !          16254:        gsave
        !          16255:         currentpoint translate
        !          16256:         size 2 div dup scale
        !          16257:         gsave
        !          16258:          1.02 1 transform round exch round exch itransform
        !          16259:          translate
        !          16260:          globe fill
        !          16261:         grestore
        !          16262:         gsave
        !          16263:          2.15 .62 translate
        !          16264:          .78 dup scale
        !          16265:          ATT fill
        !          16266:         grestore
        !          16267:        grestore
        !          16268:     end
        !          16269: } def
        !          16270: 0707070014230005571006440057030057030000010041560522627501300004000000001173post.src/devpost/charlib/READMEPostscript definitions for special troff characters. File names are
        !          16271: the two character troff names. Each defines a PostScript procedure
        !          16272: that begins with build_ and ends with the character's name. The
        !          16273: build_?? procedure is called with the character width as it's only
        !          16274: argument. The .map files contain extra character data (e.g. image
        !          16275: data) that dpost downloads immediately after the build_?? call,
        !          16276: if the character's font table code field is 2 (rather than 1).
        !          16277: 
        !          16278: The following PostScript variables are available:
        !          16279: 
        !          16280:        font            current font
        !          16281:        ptsize          current point size
        !          16282:        size            actual font size - scaled up from ptsize
        !          16283: 
        !          16284: Don't overuse this stuff!
        !          16285: 
        !          16286: 0707070014230005601006440057030057030000010041760522627501300003400000002631post.src/devpost/charlib/Sl/build_Sl {
        !          16287: pop
        !          16288: gsave
        !          16289: size .0022 mul dup scale
        !          16290: currentpoint translate
        !          16291: 14 93 moveto
        !          16292: 14 96 lineto
        !          16293: 29 110 lineto
        !          16294: 44 121 lineto
        !          16295: 54 127 lineto
        !          16296: 55 132 lineto
        !          16297: 57 146 lineto
        !          16298: 59 157 lineto
        !          16299: 62 171 lineto
        !          16300: 66 186 lineto
        !          16301: 70 199 lineto
        !          16302: 75 213 lineto
        !          16303: 81 228 lineto
        !          16304: 88 243 lineto
        !          16305: 96 257 lineto
        !          16306: 106 272 lineto
        !          16307: 118 287 lineto
        !          16308: 133 300 lineto
        !          16309: 148 307 lineto
        !          16310: 163 308 lineto
        !          16311: 178 304 lineto
        !          16312: 191 293 lineto
        !          16313: 197 281 lineto
        !          16314: 198 277 lineto
        !          16315: 198 260 lineto
        !          16316: 194 246 lineto
        !          16317: 187 231 lineto
        !          16318: 179 217 lineto
        !          16319: 168 202 lineto
        !          16320: 155 187 lineto
        !          16321: 141 172 lineto
        !          16322: 126 158 lineto
        !          16323: 111 146 lineto
        !          16324: 96 136 lineto
        !          16325: 94 131 lineto
        !          16326: 93 123 lineto
        !          16327: 92 112 lineto
        !          16328: 91 103 lineto
        !          16329: 90 93 lineto
        !          16330: 89 81 lineto
        !          16331: 89 40 lineto
        !          16332: 92 28 lineto
        !          16333: 97 18 lineto
        !          16334: 108 10 lineto
        !          16335: 122 10 lineto
        !          16336: 134 18 lineto
        !          16337: 145 33 lineto
        !          16338: 152 48 lineto
        !          16339: 158 62 lineto
        !          16340: 168 58 lineto
        !          16341: 168 59 lineto
        !          16342: 163 45 lineto
        !          16343: 157 31 lineto
        !          16344: 148 16 lineto
        !          16345: 133 3 lineto
        !          16346: 118 -1 lineto
        !          16347: 103 0 lineto
        !          16348: 88 5 lineto
        !          16349: 73 18 lineto
        !          16350: 64 31 lineto
        !          16351: 58 46 lineto
        !          16352: 55 59 lineto
        !          16353: 53 73 lineto
        !          16354: 52 111 lineto
        !          16355: 37 101 lineto
        !          16356: 22 86 lineto
        !          16357: 14 93 lineto
        !          16358: 
        !          16359: 97 152 moveto
        !          16360: 97 153 lineto
        !          16361: 99 166 lineto
        !          16362: 101 178 lineto
        !          16363: 103 190 lineto
        !          16364: 106 205 lineto
        !          16365: 109 218 lineto
        !          16366: 113 232 lineto
        !          16367: 118 246 lineto
        !          16368: 124 261 lineto
        !          16369: 132 275 lineto
        !          16370: 144 290 lineto
        !          16371: 157 298 lineto
        !          16372: 171 298 lineto
        !          16373: 181 291 lineto
        !          16374: 186 283 lineto
        !          16375: 187 279 lineto
        !          16376: 187 264 lineto
        !          16377: 186 260 lineto
        !          16378: 181 246 lineto
        !          16379: 174 233 lineto
        !          16380: 165 218 lineto
        !          16381: 155 204 lineto
        !          16382: 142 190 lineto
        !          16383: 127 175 lineto
        !          16384: 112 162 lineto
        !          16385: 97 152 lineto
        !          16386: 
        !          16387: eofill
        !          16388: grestore
        !          16389: } def
        !          16390: 0707070014230005611006440057030057030000010073470522627501300003400000000264post.src/devpost/charlib/bx/build_bx {
        !          16391:     pop
        !          16392:     size 2 div /side exch def
        !          16393:     currentpoint
        !          16394:     newpath
        !          16395:     moveto
        !          16396:     0 side rlineto
        !          16397:     side 0 rlineto
        !          16398:     0 side neg rlineto
        !          16399:     closepath
        !          16400:     fill
        !          16401: } def
        !          16402: 0707070014230005621006440057030057030000010044040522627501300003400000000221post.src/devpost/charlib/ci/build_ci {
        !          16403:     pop
        !          16404:     size 3 mul 8 div /rad exch def
        !          16405:     currentpoint
        !          16406:     newpath
        !          16407:     rad add exch rad add exch rad 0 360 arc
        !          16408:     stroke
        !          16409: } def
        !          16410: 0707070014230005631006440057030057030000010044050522627501300003400000000074post.src/devpost/charlib/ff/build_ff {
        !          16411:     pop
        !          16412:     size .05 mul neg 0 (ff) ashow
        !          16413: } def
        !          16414: 0707070014230005641006440057030057030000010073050522627501300003400000001716post.src/devpost/charlib/lc%
        !          16415: % This stuff has gotten terribly complicated - sorry.
        !          16416: %
        !          16417: 
        !          16418: currentdict /bvbbox known not {/bvbbox [0 0 0 0 0 0 0] def} if
        !          16419: 
        !          16420: /build_lc {
        !          16421:     pop
        !          16422:     gsave
        !          16423:        currentpoint translate newpath
        !          16424:        bvbbox 6 get size ne {
        !          16425:            gsave
        !          16426:                initgraphics
        !          16427:                scaling scaling scale
        !          16428:                0 0 moveto
        !          16429:                (\357) false charpath flattenpath pathbbox 0 0 size bvbbox astore pop
        !          16430:                0 1 idtransform dup mul exch dup mul add sqrt dup
        !          16431:                bvbbox 1 get add bvbbox 1 3 -1 roll put
        !          16432:                bvbbox 3 get exch sub bvbbox 3 3 -1 roll put
        !          16433:                bvbbox 2 get bvbbox 0 get sub bvbbox 4 3 -1 roll put
        !          16434:                bvbbox 2 get bvbbox 0 get add 2 div bvbbox 5 3 -1 roll put
        !          16435:            grestore
        !          16436:        } if
        !          16437:        bvbbox 0 get bvbbox 1 get moveto
        !          16438:        bvbbox 0 get bvbbox 3 get lineto
        !          16439:        bvbbox 5 get bvbbox 4 get 8 mul add dup bvbbox 3 get lineto
        !          16440:        bvbbox 1 get lineto closepath clip newpath
        !          16441:        0 0 moveto (\357) show
        !          16442:        bvbbox 5 get bvbbox 3 get moveto
        !          16443:        bvbbox 4 get dup dup
        !          16444:        8 mul 0 rlineto
        !          16445:        0 exch neg rlineto
        !          16446:        8 mul neg 0 rlineto
        !          16447:        closepath clip eofill
        !          16448:     grestore
        !          16449: } def
        !          16450: 0707070014230005651006440057030057030000010073060522627501300003400000001712post.src/devpost/charlib/lf%
        !          16451: % This stuff has gotten terribly complicated - sorry.
        !          16452: %
        !          16453: 
        !          16454: currentdict /bvbbox known not {/bvbbox [0 0 0 0 0 0 0] def} if
        !          16455: 
        !          16456: /build_lf {
        !          16457:     pop
        !          16458:     gsave
        !          16459:        currentpoint translate newpath
        !          16460:        bvbbox 6 get size ne {
        !          16461:            gsave
        !          16462:                initgraphics
        !          16463:                scaling scaling scale
        !          16464:                0 0 moveto
        !          16465:                (\357) false charpath flattenpath pathbbox 0 0 size bvbbox astore pop
        !          16466:                0 1 idtransform dup mul exch dup mul add sqrt dup
        !          16467:                bvbbox 1 get add bvbbox 1 3 -1 roll put
        !          16468:                bvbbox 3 get exch sub bvbbox 3 3 -1 roll put
        !          16469:                bvbbox 2 get bvbbox 0 get sub bvbbox 4 3 -1 roll put
        !          16470:                bvbbox 2 get bvbbox 0 get add 2 div bvbbox 5 3 -1 roll put
        !          16471:            grestore
        !          16472:        } if
        !          16473:        bvbbox 0 get bvbbox 1 get moveto
        !          16474:        bvbbox 0 get bvbbox 3 get lineto
        !          16475:        bvbbox 5 get bvbbox 4 get 8 mul add dup bvbbox 3 get lineto
        !          16476:        bvbbox 1 get lineto closepath clip newpath
        !          16477:        0 0 moveto (\357) show
        !          16478:        bvbbox 5 get bvbbox 1 get moveto
        !          16479:        bvbbox 4 get dup dup
        !          16480:        8 mul 0 rlineto
        !          16481:        0 exch rlineto
        !          16482:        8 mul neg 0 rlineto
        !          16483:        closepath clip eofill
        !          16484:     grestore
        !          16485: } def
        !          16486: 0707070014230005661006440057030057030000010073600522627501300003400000004412post.src/devpost/charlib/lh/build_lh {
        !          16487: pop
        !          16488: gsave
        !          16489: size .0022 mul dup scale
        !          16490: currentpoint translate
        !          16491: 
        !          16492: 16 177 moveto
        !          16493: 16 188 lineto
        !          16494: 21 193 lineto
        !          16495: 30 193 lineto
        !          16496: 34 189 lineto
        !          16497: 36 183 lineto
        !          16498: 36 180 lineto
        !          16499: 34 174 lineto
        !          16500: 27 170 lineto
        !          16501: 19 172 lineto
        !          16502: 16 177 lineto
        !          16503: stroke
        !          16504: 
        !          16505: 38 194 moveto
        !          16506: 38 196 lineto
        !          16507: 53 199 lineto
        !          16508: 68 201 lineto
        !          16509: 83 202 lineto
        !          16510: 98 203 lineto
        !          16511: 113 204 lineto
        !          16512: 128 204 lineto
        !          16513: 143 205 lineto
        !          16514: 158 205 lineto
        !          16515: 173 205 lineto
        !          16516: 188 204 lineto
        !          16517: 203 203 lineto
        !          16518: 218 202 lineto
        !          16519: 233 200 lineto
        !          16520: 248 198 lineto
        !          16521: 263 196 lineto
        !          16522: 278 194 lineto
        !          16523: 293 190 lineto
        !          16524: 308 186 lineto
        !          16525: 323 181 lineto
        !          16526: 338 176 lineto
        !          16527: 353 168 lineto
        !          16528: 361 162 lineto
        !          16529: 364 153 lineto
        !          16530: 366 138 lineto
        !          16531: 367 126 lineto
        !          16532: 368 106 lineto
        !          16533: 369 80 lineto
        !          16534: 369 74 lineto
        !          16535: 368 60 lineto
        !          16536: 367 54 lineto
        !          16537: 362 43 lineto
        !          16538: 348 34 lineto
        !          16539: 333 28 lineto
        !          16540: 318 25 lineto
        !          16541: 303 26 lineto
        !          16542: 288 29 lineto
        !          16543: 273 31 lineto
        !          16544: 258 32 lineto
        !          16545: 243 32 lineto
        !          16546: 228 30 lineto
        !          16547: 213 27 lineto
        !          16548: 198 24 lineto
        !          16549: 183 23 lineto
        !          16550: 168 23 lineto
        !          16551: 153 27 lineto
        !          16552: 148 34 lineto
        !          16553: 148 47 lineto
        !          16554: 153 54 lineto
        !          16555: 168 58 lineto
        !          16556: 183 58 lineto
        !          16557: 198 58 lineto
        !          16558: 213 59 lineto
        !          16559: 226 60 lineto
        !          16560: 228 62 lineto
        !          16561: 228 67 lineto
        !          16562: 223 71 lineto
        !          16563: 208 71 lineto
        !          16564: 193 70 lineto
        !          16565: 178 70 lineto
        !          16566: 163 70 lineto
        !          16567: 148 70 lineto
        !          16568: 133 71 lineto
        !          16569: 123 76 lineto
        !          16570: 120 84 lineto
        !          16571: 120 91 lineto
        !          16572: 122 98 lineto
        !          16573: 129 104 lineto
        !          16574: 144 106 lineto
        !          16575: 159 107 lineto
        !          16576: 174 107 lineto
        !          16577: 189 107 lineto
        !          16578: 202 108 lineto
        !          16579: 204 110 lineto
        !          16580: 204 117 lineto
        !          16581: 201 119 lineto
        !          16582: 186 119 lineto
        !          16583: 171 119 lineto
        !          16584: 156 119 lineto
        !          16585: 141 119 lineto
        !          16586: 126 119 lineto
        !          16587: 111 121 lineto
        !          16588: 103 128 lineto
        !          16589: 101 137 lineto
        !          16590: 101 142 lineto
        !          16591: 103 150 lineto
        !          16592: 111 158 lineto
        !          16593: 126 161 lineto
        !          16594: 141 161 lineto
        !          16595: 156 162 lineto
        !          16596: 171 163 lineto
        !          16597: 186 163 lineto
        !          16598: 191 165 lineto
        !          16599: 192 167 lineto
        !          16600: 192 171 lineto
        !          16601: 190 174 lineto
        !          16602: 176 175 lineto
        !          16603: 161 175 lineto
        !          16604: 146 175 lineto
        !          16605: 131 174 lineto
        !          16606: 116 174 lineto
        !          16607: 101 174 lineto
        !          16608: 86 173 lineto
        !          16609: 71 172 lineto
        !          16610: 56 171 lineto
        !          16611: 41 171 lineto
        !          16612: 41 174 lineto
        !          16613: 43 178 lineto
        !          16614: 43 187 lineto
        !          16615: 38 194 lineto
        !          16616: stroke
        !          16617: 
        !          16618: 373 169 moveto
        !          16619: 373 176 lineto
        !          16620: 375 182 lineto
        !          16621: 386 190 lineto
        !          16622: 401 193 lineto
        !          16623: 408 191 lineto
        !          16624: 411 185 lineto
        !          16625: 412 181 lineto
        !          16626: 414 167 lineto
        !          16627: 415 158 lineto
        !          16628: 416 144 lineto
        !          16629: 417 128 lineto
        !          16630: 418 110 lineto
        !          16631: 418 60 lineto
        !          16632: 417 45 lineto
        !          16633: 415 37 lineto
        !          16634: 409 34 lineto
        !          16635: 394 31 lineto
        !          16636: 381 35 lineto
        !          16637: 379 42 lineto
        !          16638: 379 52 lineto
        !          16639: 380 67 lineto
        !          16640: 380 77 lineto
        !          16641: 379 77 lineto
        !          16642: 378 106 lineto
        !          16643: 377 121 lineto
        !          16644: 376 133 lineto
        !          16645: 375 147 lineto
        !          16646: 374 158 lineto
        !          16647: 373 169 lineto
        !          16648: 
        !          16649: stroke
        !          16650: grestore
        !          16651: } def
        !          16652: 0707070014230005671006440057030057030000010073070522627501300003400000000222post.src/devpost/charlib/ob/build_ob {
        !          16653:     pop
        !          16654:     size 3 mul 16 div /rad exch def
        !          16655:     currentpoint
        !          16656:     newpath
        !          16657:     rad add exch rad add exch rad 0 360 arc
        !          16658:     stroke
        !          16659: } def
        !          16660: 0707070014230005701006440057030057030000010073630522627501300003400000001716post.src/devpost/charlib/rc%
        !          16661: % This stuff has gotten terribly complicated - sorry.
        !          16662: %
        !          16663: 
        !          16664: currentdict /bvbbox known not {/bvbbox [0 0 0 0 0 0 0] def} if
        !          16665: 
        !          16666: /build_rc {
        !          16667:     pop
        !          16668:     gsave
        !          16669:        currentpoint translate newpath
        !          16670:        bvbbox 6 get size ne {
        !          16671:            gsave
        !          16672:                initgraphics
        !          16673:                scaling scaling scale
        !          16674:                0 0 moveto
        !          16675:                (\357) false charpath flattenpath pathbbox 0 0 size bvbbox astore pop
        !          16676:                0 1 idtransform dup mul exch dup mul add sqrt dup
        !          16677:                bvbbox 1 get add bvbbox 1 3 -1 roll put
        !          16678:                bvbbox 3 get exch sub bvbbox 3 3 -1 roll put
        !          16679:                bvbbox 2 get bvbbox 0 get sub bvbbox 4 3 -1 roll put
        !          16680:                bvbbox 2 get bvbbox 0 get add 2 div bvbbox 5 3 -1 roll put
        !          16681:            grestore
        !          16682:        } if
        !          16683:        bvbbox 2 get bvbbox 1 get moveto
        !          16684:        bvbbox 2 get bvbbox 3 get lineto
        !          16685:        bvbbox 5 get bvbbox 4 get 8 mul sub dup bvbbox 3 get lineto
        !          16686:        bvbbox 1 get lineto closepath clip newpath
        !          16687:        0 0 moveto (\357) show
        !          16688:        bvbbox 5 get bvbbox 3 get moveto
        !          16689:        bvbbox 4 get dup dup
        !          16690:        8 mul neg 0 rlineto
        !          16691:        0 exch neg rlineto
        !          16692:        8 mul 0 rlineto
        !          16693:        closepath clip eofill
        !          16694:     grestore
        !          16695: } def
        !          16696: 0707070014230005711006440057030057030000010073640522627501300003400000001712post.src/devpost/charlib/rf%
        !          16697: % This stuff has gotten terribly complicated - sorry.
        !          16698: %
        !          16699: 
        !          16700: currentdict /bvbbox known not {/bvbbox [0 0 0 0 0 0 0] def} if
        !          16701: 
        !          16702: /build_rf {
        !          16703:     pop
        !          16704:     gsave
        !          16705:        currentpoint translate newpath
        !          16706:        bvbbox 6 get size ne {
        !          16707:            gsave
        !          16708:                initgraphics
        !          16709:                scaling scaling scale
        !          16710:                0 0 moveto
        !          16711:                (\357) false charpath flattenpath pathbbox 0 0 size bvbbox astore pop
        !          16712:                0 1 idtransform dup mul exch dup mul add sqrt dup
        !          16713:                bvbbox 1 get add bvbbox 1 3 -1 roll put
        !          16714:                bvbbox 3 get exch sub bvbbox 3 3 -1 roll put
        !          16715:                bvbbox 2 get bvbbox 0 get sub bvbbox 4 3 -1 roll put
        !          16716:                bvbbox 2 get bvbbox 0 get add 2 div bvbbox 5 3 -1 roll put
        !          16717:            grestore
        !          16718:        } if
        !          16719:        bvbbox 2 get bvbbox 1 get moveto
        !          16720:        bvbbox 2 get bvbbox 3 get lineto
        !          16721:        bvbbox 5 get bvbbox 4 get 8 mul sub dup bvbbox 3 get lineto
        !          16722:        bvbbox 1 get lineto closepath clip newpath
        !          16723:        0 0 moveto (\357) show
        !          16724:        bvbbox 5 get bvbbox 1 get moveto
        !          16725:        bvbbox 4 get dup dup
        !          16726:        8 mul neg 0 rlineto
        !          16727:        0 exch rlineto
        !          16728:        8 mul 0 rlineto
        !          16729:        closepath clip eofill
        !          16730:     grestore
        !          16731: } def
        !          16732: 0707070014230005721006440057030057030000010073650522627501300003400000004171post.src/devpost/charlib/rh/build_rh {
        !          16733: pop
        !          16734: gsave
        !          16735: size .0022 mul dup scale
        !          16736: currentpoint translate
        !          16737: 
        !          16738: 15 66 moveto
        !          16739: 15 86 lineto
        !          16740: 16 131 lineto
        !          16741: 17 146 lineto
        !          16742: 18 158 lineto
        !          16743: 19 167 lineto
        !          16744: 21 181 lineto
        !          16745: 24 190 lineto
        !          16746: 34 193 lineto
        !          16747: 49 189 lineto
        !          16748: 58 182 lineto
        !          16749: 60 177 lineto
        !          16750: 60 166 lineto
        !          16751: 59 156 lineto
        !          16752: 58 143 lineto
        !          16753: 57 130 lineto
        !          16754: 56 117 lineto
        !          16755: 55 102 lineto
        !          16756: 54 42 lineto
        !          16757: 53 39 lineto
        !          16758: 49 35 lineto
        !          16759: 34 34 lineto
        !          16760: 19 39 lineto
        !          16761: 16 47 lineto
        !          16762: 15 66 lineto
        !          16763: stroke
        !          16764: 
        !          16765: 65 60 moveto
        !          16766: 65 111 lineto
        !          16767: 66 127 lineto
        !          16768: 67 139 lineto
        !          16769: 69 153 lineto
        !          16770: 72 163 lineto
        !          16771: 83 171 lineto
        !          16772: 98 177 lineto
        !          16773: 113 182 lineto
        !          16774: 128 187 lineto
        !          16775: 143 190 lineto
        !          16776: 158 194 lineto
        !          16777: 173 196 lineto
        !          16778: 188 199 lineto
        !          16779: 203 201 lineto
        !          16780: 218 203 lineto
        !          16781: 233 205 lineto
        !          16782: 248 205 lineto
        !          16783: 263 206 lineto
        !          16784: 278 206 lineto
        !          16785: 293 206 lineto
        !          16786: 308 206 lineto
        !          16787: 323 206 lineto
        !          16788: 338 205 lineto
        !          16789: 353 203 lineto
        !          16790: 368 202 lineto
        !          16791: 383 200 lineto
        !          16792: 394 197 lineto
        !          16793: 389 190 lineto
        !          16794: 389 180 lineto
        !          16795: 391 176 lineto
        !          16796: 391 173 lineto
        !          16797: 380 173 lineto
        !          16798: 365 173 lineto
        !          16799: 350 174 lineto
        !          16800: 335 175 lineto
        !          16801: 320 176 lineto
        !          16802: 305 176 lineto
        !          16803: 290 176 lineto
        !          16804: 275 177 lineto
        !          16805: 260 177 lineto
        !          16806: 245 177 lineto
        !          16807: 240 173 lineto
        !          16808: 240 170 lineto
        !          16809: 245 165 lineto
        !          16810: 260 164 lineto
        !          16811: 275 164 lineto
        !          16812: 290 164 lineto
        !          16813: 305 163 lineto
        !          16814: 320 160 lineto
        !          16815: 327 155 lineto
        !          16816: 330 149 lineto
        !          16817: 330 134 lineto
        !          16818: 328 129 lineto
        !          16819: 323 124 lineto
        !          16820: 309 121 lineto
        !          16821: 294 121 lineto
        !          16822: 279 121 lineto
        !          16823: 264 121 lineto
        !          16824: 249 121 lineto
        !          16825: 234 121 lineto
        !          16826: 228 118 lineto
        !          16827: 228 112 lineto
        !          16828: 234 109 lineto
        !          16829: 249 109 lineto
        !          16830: 264 109 lineto
        !          16831: 279 108 lineto
        !          16832: 294 108 lineto
        !          16833: 306 104 lineto
        !          16834: 311 97 lineto
        !          16835: 312 91 lineto
        !          16836: 312 88 lineto
        !          16837: 311 82 lineto
        !          16838: 305 74 lineto
        !          16839: 290 72 lineto
        !          16840: 275 72 lineto
        !          16841: 260 72 lineto
        !          16842: 245 73 lineto
        !          16843: 230 73 lineto
        !          16844: 215 73 lineto
        !          16845: 205 70 lineto
        !          16846: 205 63 lineto
        !          16847: 217 60 lineto
        !          16848: 232 60 lineto
        !          16849: 247 60 lineto
        !          16850: 262 60 lineto
        !          16851: 277 57 lineto
        !          16852: 283 52 lineto
        !          16853: 285 44 lineto
        !          16854: 285 41 lineto
        !          16855: 284 35 lineto
        !          16856: 280 30 lineto
        !          16857: 268 26 lineto
        !          16858: 253 25 lineto
        !          16859: 238 26 lineto
        !          16860: 223 28 lineto
        !          16861: 208 31 lineto
        !          16862: 193 33 lineto
        !          16863: 178 34 lineto
        !          16864: 163 33 lineto
        !          16865: 148 31 lineto
        !          16866: 133 28 lineto
        !          16867: 118 27 lineto
        !          16868: 103 28 lineto
        !          16869: 88 34 lineto
        !          16870: 73 43 lineto
        !          16871: 67 52 lineto
        !          16872: 65 60 lineto
        !          16873: stroke
        !          16874: 
        !          16875: 396 180 moveto
        !          16876: 396 188 lineto
        !          16877: 399 194 lineto
        !          16878: 410 196 lineto
        !          16879: 416 190 lineto
        !          16880: 416 180 lineto
        !          16881: 415 177 lineto
        !          16882: 411 173 lineto
        !          16883: 400 173 lineto
        !          16884: 396 180 lineto
        !          16885: stroke
        !          16886: 
        !          16887: grestore
        !          16888: } def
        !          16889: 0707070014230005731006440057030057030000010074000522627501300003400000000320post.src/devpost/charlib/sq/build_sq {
        !          16890:     pop
        !          16891:     size 2 div /side exch def
        !          16892:     currentpoint
        !          16893:     newpath
        !          16894:     moveto
        !          16895:     0 side rlineto
        !          16896:     side 0 rlineto
        !          16897:     0 side neg rlineto
        !          16898:     closepath
        !          16899:     font B eq {fill} {stroke} ifelse
        !          16900: } def
        !          16901: 0707070014230005741006440057030057030000010074010522627501400003400000000130post.src/devpost/charlib/~=/build_~= {
        !          16902:     pop
        !          16903:     (\176) stringwidth pop neg size -.15 mul (\176\055) ashow
        !          16904: } def
        !          16905: 0707070014230005751006440057030057030000010074020522627501400003400000000327post.src/devpost/charlib/RC/build_RC {
        !          16906:     pop
        !          16907:     size 4 div /side exch def
        !          16908:     currentpoint
        !          16909:     newpath
        !          16910:     moveto
        !          16911:     0 side 1.5 mul rmoveto
        !          16912:     0 side rlineto
        !          16913:     side 2.5 mul 0 rlineto
        !          16914:     0 side neg rlineto
        !          16915:     closepath
        !          16916:     fill
        !          16917: } def
        !          16918: 0707070014230005761006440057030057030000010074030522627501400003400000001051post.src/devpost/charlib/DG%
        !          16919: % UMDS danger sign - needs to be cleaned up!
        !          16920: %
        !          16921: 
        !          16922: /build_DG {
        !          16923:     /x0 1.5 6 div 72 mul def   % triangle length
        !          16924:     pop
        !          16925:     gsave
        !          16926:        currentpoint translate
        !          16927:        1 scaling div ptsize 10 div mul dup scale
        !          16928:        2 setlinewidth
        !          16929:        0 setlinecap
        !          16930:        newpath
        !          16931:        0 0 moveto
        !          16932:        x0 0 lineto
        !          16933:        x0 2 div x0 3 sqrt 2 div mul lineto
        !          16934:        closepath fill
        !          16935:        1 setgray
        !          16936:        /Helvetica-Bold findfont 12 scalefont setfont
        !          16937:        0 0 moveto
        !          16938:        (!) false charpath pathbbox
        !          16939:        exch 4 -1 roll add 2 div x0 2 div exch sub 0 moveto
        !          16940:        exch sub x0 3 sqrt 2 div mul exch sub 3 div 0 exch rmoveto
        !          16941:        (!) show
        !          16942:     grestore
        !          16943: } def
        !          16944: 
        !          16945: 0707070014230005771006440057030057030000010074040522627501400003400000000735post.src/devpost/charlib/PC%
        !          16946: % UMDS pencil - needs to be cleaned up.
        !          16947: %
        !          16948: 
        !          16949: /build_PC {
        !          16950:     pop
        !          16951:     gsave
        !          16952:        currentpoint translate
        !          16953:        1 scaling div ptsize 10 div mul dup scale
        !          16954:        newpath
        !          16955:        0 setlinecap
        !          16956:        1 setlinejoin
        !          16957:        2 setlinewidth
        !          16958:        0 1 moveto 12 0 rlineto stroke
        !          16959:        0 5 moveto 12 0 rlineto stroke
        !          16960:        0 9 moveto 12 0 rlineto stroke
        !          16961:        1 setlinewidth
        !          16962:        12 .5 moveto 21.27362 5 lineto 12 9.5 lineto stroke
        !          16963:        21.27362 5 moveto
        !          16964:        .4 9.27362 mul neg .4 4 mul rlineto
        !          16965:        0 .8 4 mul neg rlineto
        !          16966:        closepath fill
        !          16967:     grestore
        !          16968: } def
        !          16969: 
        !          16970: 0707070014230006001006440057030057030000010074050522627501400003400000004404post.src/devpost/charlib/lH/build_lH {
        !          16971: pop
        !          16972: gsave
        !          16973: size .0022 mul dup scale
        !          16974: currentpoint translate
        !          16975: 
        !          16976: 16 177 moveto
        !          16977: 16 188 lineto
        !          16978: 21 193 lineto
        !          16979: 30 193 lineto
        !          16980: 34 189 lineto
        !          16981: 36 183 lineto
        !          16982: 36 180 lineto
        !          16983: 34 174 lineto
        !          16984: 27 170 lineto
        !          16985: 19 172 lineto
        !          16986: 16 177 lineto
        !          16987: fill
        !          16988: 
        !          16989: 38 194 moveto
        !          16990: 38 196 lineto
        !          16991: 53 199 lineto
        !          16992: 68 201 lineto
        !          16993: 83 202 lineto
        !          16994: 98 203 lineto
        !          16995: 113 204 lineto
        !          16996: 128 204 lineto
        !          16997: 143 205 lineto
        !          16998: 158 205 lineto
        !          16999: 173 205 lineto
        !          17000: 188 204 lineto
        !          17001: 203 203 lineto
        !          17002: 218 202 lineto
        !          17003: 233 200 lineto
        !          17004: 248 198 lineto
        !          17005: 263 196 lineto
        !          17006: 278 194 lineto
        !          17007: 293 190 lineto
        !          17008: 308 186 lineto
        !          17009: 323 181 lineto
        !          17010: 338 176 lineto
        !          17011: 353 168 lineto
        !          17012: 361 162 lineto
        !          17013: 364 153 lineto
        !          17014: 366 138 lineto
        !          17015: 367 126 lineto
        !          17016: 368 106 lineto
        !          17017: 369 80 lineto
        !          17018: 369 74 lineto
        !          17019: 368 60 lineto
        !          17020: 367 54 lineto
        !          17021: 362 43 lineto
        !          17022: 348 34 lineto
        !          17023: 333 28 lineto
        !          17024: 318 25 lineto
        !          17025: 303 26 lineto
        !          17026: 288 29 lineto
        !          17027: 273 31 lineto
        !          17028: 258 32 lineto
        !          17029: 243 32 lineto
        !          17030: 228 30 lineto
        !          17031: 213 27 lineto
        !          17032: 198 24 lineto
        !          17033: 183 23 lineto
        !          17034: 168 23 lineto
        !          17035: 153 27 lineto
        !          17036: 148 34 lineto
        !          17037: 148 47 lineto
        !          17038: 153 54 lineto
        !          17039: 168 58 lineto
        !          17040: 183 58 lineto
        !          17041: 198 58 lineto
        !          17042: 213 59 lineto
        !          17043: 226 60 lineto
        !          17044: 228 62 lineto
        !          17045: 228 67 lineto
        !          17046: 223 71 lineto
        !          17047: 208 71 lineto
        !          17048: 193 70 lineto
        !          17049: 178 70 lineto
        !          17050: 163 70 lineto
        !          17051: 148 70 lineto
        !          17052: 133 71 lineto
        !          17053: 123 76 lineto
        !          17054: 120 84 lineto
        !          17055: 120 91 lineto
        !          17056: 122 98 lineto
        !          17057: 129 104 lineto
        !          17058: 144 106 lineto
        !          17059: 159 107 lineto
        !          17060: 174 107 lineto
        !          17061: 189 107 lineto
        !          17062: 202 108 lineto
        !          17063: 204 110 lineto
        !          17064: 204 117 lineto
        !          17065: 201 119 lineto
        !          17066: 186 119 lineto
        !          17067: 171 119 lineto
        !          17068: 156 119 lineto
        !          17069: 141 119 lineto
        !          17070: 126 119 lineto
        !          17071: 111 121 lineto
        !          17072: 103 128 lineto
        !          17073: 101 137 lineto
        !          17074: 101 142 lineto
        !          17075: 103 150 lineto
        !          17076: 111 158 lineto
        !          17077: 126 161 lineto
        !          17078: 141 161 lineto
        !          17079: 156 162 lineto
        !          17080: 171 163 lineto
        !          17081: 186 163 lineto
        !          17082: 191 165 lineto
        !          17083: 192 167 lineto
        !          17084: 192 171 lineto
        !          17085: 190 174 lineto
        !          17086: 176 175 lineto
        !          17087: 161 175 lineto
        !          17088: 146 175 lineto
        !          17089: 131 174 lineto
        !          17090: 116 174 lineto
        !          17091: 101 174 lineto
        !          17092: 86 173 lineto
        !          17093: 71 172 lineto
        !          17094: 56 171 lineto
        !          17095: 41 171 lineto
        !          17096: 41 174 lineto
        !          17097: 43 178 lineto
        !          17098: 43 187 lineto
        !          17099: 38 194 lineto
        !          17100: fill
        !          17101: 
        !          17102: 373 169 moveto
        !          17103: 373 176 lineto
        !          17104: 375 182 lineto
        !          17105: 386 190 lineto
        !          17106: 401 193 lineto
        !          17107: 408 191 lineto
        !          17108: 411 185 lineto
        !          17109: 412 181 lineto
        !          17110: 414 167 lineto
        !          17111: 415 158 lineto
        !          17112: 416 144 lineto
        !          17113: 417 128 lineto
        !          17114: 418 110 lineto
        !          17115: 418 60 lineto
        !          17116: 417 45 lineto
        !          17117: 415 37 lineto
        !          17118: 409 34 lineto
        !          17119: 394 31 lineto
        !          17120: 381 35 lineto
        !          17121: 379 42 lineto
        !          17122: 379 52 lineto
        !          17123: 380 67 lineto
        !          17124: 380 77 lineto
        !          17125: 379 77 lineto
        !          17126: 378 106 lineto
        !          17127: 377 121 lineto
        !          17128: 376 133 lineto
        !          17129: 375 147 lineto
        !          17130: 374 158 lineto
        !          17131: 373 169 lineto
        !          17132: 
        !          17133: fill
        !          17134: grestore
        !          17135: } def
        !          17136: 0707070014230006011006440057030057030000010074200522627501400003400000004163post.src/devpost/charlib/rH/build_rH {
        !          17137: pop
        !          17138: gsave
        !          17139: size .0022 mul dup scale
        !          17140: currentpoint translate
        !          17141: 
        !          17142: 15 66 moveto
        !          17143: 15 86 lineto
        !          17144: 16 131 lineto
        !          17145: 17 146 lineto
        !          17146: 18 158 lineto
        !          17147: 19 167 lineto
        !          17148: 21 181 lineto
        !          17149: 24 190 lineto
        !          17150: 34 193 lineto
        !          17151: 49 189 lineto
        !          17152: 58 182 lineto
        !          17153: 60 177 lineto
        !          17154: 60 166 lineto
        !          17155: 59 156 lineto
        !          17156: 58 143 lineto
        !          17157: 57 130 lineto
        !          17158: 56 117 lineto
        !          17159: 55 102 lineto
        !          17160: 54 42 lineto
        !          17161: 53 39 lineto
        !          17162: 49 35 lineto
        !          17163: 34 34 lineto
        !          17164: 19 39 lineto
        !          17165: 16 47 lineto
        !          17166: 15 66 lineto
        !          17167: fill
        !          17168: 
        !          17169: 65 60 moveto
        !          17170: 65 111 lineto
        !          17171: 66 127 lineto
        !          17172: 67 139 lineto
        !          17173: 69 153 lineto
        !          17174: 72 163 lineto
        !          17175: 83 171 lineto
        !          17176: 98 177 lineto
        !          17177: 113 182 lineto
        !          17178: 128 187 lineto
        !          17179: 143 190 lineto
        !          17180: 158 194 lineto
        !          17181: 173 196 lineto
        !          17182: 188 199 lineto
        !          17183: 203 201 lineto
        !          17184: 218 203 lineto
        !          17185: 233 205 lineto
        !          17186: 248 205 lineto
        !          17187: 263 206 lineto
        !          17188: 278 206 lineto
        !          17189: 293 206 lineto
        !          17190: 308 206 lineto
        !          17191: 323 206 lineto
        !          17192: 338 205 lineto
        !          17193: 353 203 lineto
        !          17194: 368 202 lineto
        !          17195: 383 200 lineto
        !          17196: 394 197 lineto
        !          17197: 389 190 lineto
        !          17198: 389 180 lineto
        !          17199: 391 176 lineto
        !          17200: 391 173 lineto
        !          17201: 380 173 lineto
        !          17202: 365 173 lineto
        !          17203: 350 174 lineto
        !          17204: 335 175 lineto
        !          17205: 320 176 lineto
        !          17206: 305 176 lineto
        !          17207: 290 176 lineto
        !          17208: 275 177 lineto
        !          17209: 260 177 lineto
        !          17210: 245 177 lineto
        !          17211: 240 173 lineto
        !          17212: 240 170 lineto
        !          17213: 245 165 lineto
        !          17214: 260 164 lineto
        !          17215: 275 164 lineto
        !          17216: 290 164 lineto
        !          17217: 305 163 lineto
        !          17218: 320 160 lineto
        !          17219: 327 155 lineto
        !          17220: 330 149 lineto
        !          17221: 330 134 lineto
        !          17222: 328 129 lineto
        !          17223: 323 124 lineto
        !          17224: 309 121 lineto
        !          17225: 294 121 lineto
        !          17226: 279 121 lineto
        !          17227: 264 121 lineto
        !          17228: 249 121 lineto
        !          17229: 234 121 lineto
        !          17230: 228 118 lineto
        !          17231: 228 112 lineto
        !          17232: 234 109 lineto
        !          17233: 249 109 lineto
        !          17234: 264 109 lineto
        !          17235: 279 108 lineto
        !          17236: 294 108 lineto
        !          17237: 306 104 lineto
        !          17238: 311 97 lineto
        !          17239: 312 91 lineto
        !          17240: 312 88 lineto
        !          17241: 311 82 lineto
        !          17242: 305 74 lineto
        !          17243: 290 72 lineto
        !          17244: 275 72 lineto
        !          17245: 260 72 lineto
        !          17246: 245 73 lineto
        !          17247: 230 73 lineto
        !          17248: 215 73 lineto
        !          17249: 205 70 lineto
        !          17250: 205 63 lineto
        !          17251: 217 60 lineto
        !          17252: 232 60 lineto
        !          17253: 247 60 lineto
        !          17254: 262 60 lineto
        !          17255: 277 57 lineto
        !          17256: 283 52 lineto
        !          17257: 285 44 lineto
        !          17258: 285 41 lineto
        !          17259: 284 35 lineto
        !          17260: 280 30 lineto
        !          17261: 268 26 lineto
        !          17262: 253 25 lineto
        !          17263: 238 26 lineto
        !          17264: 223 28 lineto
        !          17265: 208 31 lineto
        !          17266: 193 33 lineto
        !          17267: 178 34 lineto
        !          17268: 163 33 lineto
        !          17269: 148 31 lineto
        !          17270: 133 28 lineto
        !          17271: 118 27 lineto
        !          17272: 103 28 lineto
        !          17273: 88 34 lineto
        !          17274: 73 43 lineto
        !          17275: 67 52 lineto
        !          17276: 65 60 lineto
        !          17277: fill
        !          17278: 
        !          17279: 396 180 moveto
        !          17280: 396 188 lineto
        !          17281: 399 194 lineto
        !          17282: 410 196 lineto
        !          17283: 416 190 lineto
        !          17284: 416 180 lineto
        !          17285: 415 177 lineto
        !          17286: 411 173 lineto
        !          17287: 400 173 lineto
        !          17288: 396 180 lineto
        !          17289: fill
        !          17290: 
        !          17291: grestore
        !          17292: } def
        !          17293: 0707070014230006021006440057030057030000010074230522627501400004400000010521post.src/devpost/charlib/LH.example%
        !          17294: % An example logo character. Building the PostScript program that prints
        !          17295: % your company logo is not addressed here; we assume you already have
        !          17296: % such a program, that it's relatively simple, and that it prints the
        !          17297: % logo by itself on a page. What you'll find here are instructions for
        !          17298: % converting that logo program into a character that can be accessed by
        !          17299: % troff and dpost.
        !          17300: %
        !          17301: % Building a new charlib character involves some PostScript programming.
        !          17302: % We've tried to isolate parameters that you'll need to change (Xoffset,
        !          17303: % Yoffset, and Scaling), but we can't guarantee things will work properly
        !          17304: % with every logo program. PostScript is a complex language and subtle
        !          17305: % interactions between your logo program and what we've done here can
        !          17306: % cause problems.
        !          17307: %
        !          17308: % Tuning the new character is an iterative process. You may want to adjust
        !          17309: % the size of the logo (via Scaling), it's position relative to adjacent
        !          17310: % characters and the baseline (Xoffset and Yoffset), and the distance troff
        !          17311: % moves after printing the character (width field in file ../S1). The steps
        !          17312: % to follow are:
        !          17313: %
        !          17314: %      1: Create a simple troff test file for the new character. Something
        !          17315: %         like,
        !          17316: %
        !          17317: %              .sp 1i
        !          17318: %              .ps 10
        !          17319: %              size 10: \(LH
        !          17320: %              .sp 1i
        !          17321: %              .ps 18
        !          17322: %              size 18: \(LH
        !          17323: %              .sp 1i
        !          17324: %              .ps 36
        !          17325: %              size 36: \(LH
        !          17326: %              .sp 1i
        !          17327: %              .ps 10
        !          17328: %              four logo characters: \(LH\(LH\(LH\(LH
        !          17329: %
        !          17330: %         is sufficient. The test file can go anywhere.
        !          17331: % 
        !          17332: %      2: Change into directory /usr/lib/font/devpost/charlib. All file
        !          17333: %         pathnames will be relative to that directory.
        !          17334: %
        !          17335: %      3: Save a copy of the working LH logo file. Then replace LH with
        !          17336: %         this file (i.e. LH.example). Changes described below should be
        !          17337: %         be made in the new LH file (not in LH.example).
        !          17338: %
        !          17339: %      4: Your PostScript logo program will eventually replace whatever
        !          17340: %         you find between the <<StartLogo>> and <<EndLogo>> comment lines
        !          17341: %         in the PostScript build_LH procedure (below). What's there now
        !          17342: %         prints an example logo that you can use until you understand the
        !          17343: %         remaining steps.
        !          17344: %
        !          17345: %      5: Print your troff test file using (assuming your making changes
        !          17346: %         in the devpost charlib directory),
        !          17347: %
        !          17348: %              troff -Tpost testfile | dpost | lp ...
        !          17349: %
        !          17350: %      6: Adjust the logo positioning by changing the numbers assigned to
        !          17351: %         Xoffset and Yoffset (below). Both are in units of 72 per inch.
        !          17352: %         Positive offsets should move the logo to the right and up the
        !          17353: %         page.
        !          17354: %
        !          17355: %      7: Adjust the logo size by changing the the number assigned to
        !          17356: %         Scaling. Unitsize also controls scaling, but there's no good
        !          17357: %         reason to change both Scaling and Unitsize.
        !          17358: %
        !          17359: %      8: Control the horizontal distance troff moves after printing the
        !          17360: %         new LH character by changing the width (i.e. the number in the
        !          17361: %         second column) assigned to LH in file ../S1. Character width
        !          17362: %         adjustments should probably wait until you're satisfied with
        !          17363: %         the Scaling set in step 7.
        !          17364: %
        !          17365: %      9: Back to step 5 until your satisfied with the output.
        !          17366: %
        !          17367: % The remaining steps are suggested but not required:
        !          17368: %
        !          17369: %      10: Delete PostScript comments in your new LH charlib file - comments
        !          17370: %         start with % and go to the end of the line.
        !          17371: %
        !          17372: %      11: Update the width field assigned to LH in file ../shell.lib. The
        !          17373: %         new width should reflect what's currently in your S1 font file.
        !          17374: %
        !          17375: %      12: Make a similiar set of changes in /usr/lib/font/devLatin1/charlib.
        !          17376: %         You can use the devpost version of LH to devLatin1/charlib/LH,
        !          17377: %         but changes to files devLatin1/S1 and devLatin1/shell.lib must be
        !          17378: %         entered by hand.
        !          17379: %
        !          17380: 
        !          17381: /Logo_Dict 100 dict dup begin
        !          17382:        /Xoffset 0 def                  % 72 dpi with positive to the right
        !          17383:        /Yoffset 0 def                  % 72 dpi with positive up the page
        !          17384:        /Scaling 1.0 def                % adjust this number to change the size
        !          17385:        /Unitsize 36 def                % for point size scaling - leave it be
        !          17386:        /showpage {} def
        !          17387: end def
        !          17388: 
        !          17389: /build_LH {                            % don't bind this procedure
        !          17390:        Logo_Dict begin
        !          17391:                gsave
        !          17392:                /charwidth exch def
        !          17393:                currentpoint translate
        !          17394:                resolution 72 div dup scale
        !          17395:                Xoffset Yoffset translate
        !          17396:                Scaling Scaling scale
        !          17397:                ptsize Unitsize div dup scale
        !          17398: 
        !          17399:                %% Replace everything between the <<StartLogo>> and <<EndLogo>>
        !          17400:                %% comment lines by the PostScript program that prints your
        !          17401:                %% logo.
        !          17402: 
        !          17403:                %% <<StartLogo>>
        !          17404:                        newpath
        !          17405:                        .5 .5 scale
        !          17406:                        0 0 moveto
        !          17407:                        100 0 lineto
        !          17408:                        100 100 lineto
        !          17409:                        closepath
        !          17410:                        .5 setgray
        !          17411:                        fill
        !          17412:                        0 setgray
        !          17413:                        10 10 translate
        !          17414:                        45 rotate
        !          17415:                        0 5 moveto
        !          17416:                        /Helvetica findfont 18 scalefont setfont
        !          17417:                        (Example Logo) show
        !          17418:                %% <<EndLogo>>
        !          17419: 
        !          17420:                grestore
        !          17421:        end
        !          17422: } def
        !          17423: 
        !          17424: 0707070014230006031006440057030057030000010074400522627501400003400000001725post.src/devpost/charlib/LA/LOGO-dict-mm dup where not
        !          17425: { dup 64 dict def currentdict } if
        !          17426: exch get
        !          17427: begin
        !          17428: /l {  lineto } def
        !          17429: /rl {  rlineto } def
        !          17430: /m {  moveto } def
        !          17431: /rm {  rmoveto } def
        !          17432: /C { closepath } def
        !          17433: /c {  curveto } def
        !          17434: /rc {  rcurveto } def
        !          17435: /T { m 0 29 rl -9.5 0 rl 0 7 rl 29 0 rl 0 -7 rl -9.5 0 rl 0 -29 rl C } def
        !          17436: /ATT {
        !          17437: newpath
        !          17438: 1 36 div dup scale
        !          17439: 0  0 m  12 36 rl  8 0 rl -11 -36 rl C
        !          17440: 25  0 m -11 36 rl  8 0 rl  12 -36 rl C
        !          17441: 10  7 m   0  7 rl 14 0 rl   0  -7 rl C
        !          17442: 36  0 T
        !          17443: 80  6 m -3 0 -5 1.2 -6 2 rc -12 10 rl -2.4 2 -2.7 6 0 6 rc
        !          17444: 1 0 2 -1 2 -2 rc 0 -4 rl 7 0 rl 0 4 rl
        !          17445: 0 5 -3 7 -9 7 rc -6 0 -9 -3 -9 -7 rc
        !          17446: 0 -2 0 -3.6 2 -6 rc 12 -10 rl 6 -5 10 -6 13 -6 rc C
        !          17447: 71 18 m 0 -6 rl 0 -5 -3 -7 -7 -7 rc -3 0 -5 2 -5 4 rc 0 1 0 3 2 4 rc
        !          17448: -4 5 rl -4 -2 -6 -6 -6 -9 rc 0 -7 6 -10 13 -10 rc
        !          17449: 9 0 14 6 14 11 rc 0 8 rl C
        !          17450: 82  0 T
        !          17451: 36 dup scale
        !          17452: } def
        !          17453: end
        !          17454: /build_LA {
        !          17455: pop
        !          17456: LOGO-dict-mm begin
        !          17457: gsave
        !          17458: currentpoint translate
        !          17459: size 2.56 div dup scale                % was size 2.75 div dup scale
        !          17460: .02 0 translate
        !          17461: ATT fill
        !          17462: grestore
        !          17463: end
        !          17464: } def
        !          17465: 0707070014231217221006440057030057030000010644200522627501400003300000035321post.src/devpost/shell.lib#
        !          17466: # Shell library - for building devpost tables. Original collection was
        !          17467: # built on a Version 47.0 PS-810.
        !          17468: #
        !          17469: 
        !          17470: RESOLUTION=720
        !          17471: UNITWIDTH=10
        !          17472: 
        !          17473: #
        !          17474: # BuiltinTables returns command lines that generate PostScript programs
        !          17475: # for building a typesetter description file and font width tables for
        !          17476: # a relatively standard collection of fonts. Use awk to select a command
        !          17477: # line or modify an existing command to build a width table for a new
        !          17478: # font.
        !          17479: #
        !          17480: 
        !          17481: BuiltinTables() {
        !          17482:        cat <<-'//End of BuiltinTables'
        !          17483:                Proportional    R       Times-Roman
        !          17484:                Proportional    I       Times-Italic
        !          17485:                Proportional    B       Times-Bold
        !          17486:                Proportional    BI      Times-BoldItalic
        !          17487:                Proportional    AB      AvantGarde-Demi
        !          17488:                Proportional    AI      AvantGarde-BookOblique
        !          17489:                Proportional    AR      AvantGarde-Book
        !          17490:                Proportional    AX      AvantGarde-DemiOblique
        !          17491:                Proportional    H       Helvetica
        !          17492:                Proportional    HB      Helvetica-Bold
        !          17493:                Proportional    HI      Helvetica-Oblique
        !          17494:                Proportional    HX      Helvetica-BoldOblique
        !          17495:                Proportional    Hb      Helvetica-Narrow-Bold
        !          17496:                Proportional    Hi      Helvetica-Narrow-Oblique
        !          17497:                Proportional    Hr      Helvetica-Narrow
        !          17498:                Proportional    Hx      Helvetica-Narrow-BoldOblique
        !          17499:                Proportional    KB      Bookman-Demi
        !          17500:                Proportional    KI      Bookman-LightItalic
        !          17501:                Proportional    KR      Bookman-Light
        !          17502:                Proportional    KX      Bookman-DemiItalic
        !          17503:                Proportional    NB      NewCenturySchlbk-Bold
        !          17504:                Proportional    NI      NewCenturySchlbk-Italic
        !          17505:                Proportional    NR      NewCenturySchlbk-Roman
        !          17506:                Proportional    NX      NewCenturySchlbk-BoldItalic
        !          17507:                Proportional    PA      Palatino-Roman
        !          17508:                Proportional    PB      Palatino-Bold
        !          17509:                Proportional    PI      Palatino-Italic
        !          17510:                Proportional    PX      Palatino-BoldItalic
        !          17511:                Proportional    ZI      ZapfChancery-MediumItalic
        !          17512:                FixedWidth      C       Courier
        !          17513:                FixedWidth      CB      Courier-Bold
        !          17514:                FixedWidth      CI      Courier-Oblique
        !          17515:                FixedWidth      CO      Courier
        !          17516:                FixedWidth      CW      Courier
        !          17517:                FixedWidth      CX      Courier-BoldOblique
        !          17518:                Dingbats        ZD      ZapfDingbats
        !          17519:                Greek           GR      Symbol
        !          17520:                Symbol          S       Symbol
        !          17521:                Special         S1      Times-Roman
        !          17522:                Description     DESC    ---
        !          17523:        //End of BuiltinTables
        !          17524: }
        !          17525: 
        !          17526: #
        !          17527: # AllTables prints the complete list of builtin font names.
        !          17528: #
        !          17529: 
        !          17530: AllTables() {
        !          17531:        BuiltinTables | awk '{print $2}'
        !          17532: }
        !          17533: 
        !          17534: #
        !          17535: # Charset functions generate keyword/value pairs (as PostScript objects)
        !          17536: # that describe the character set available in a font. The keyword is a
        !          17537: # PostScript string that represents troff's name for the character. The
        !          17538: # value is usually the literal name (i.e. begins with a /) assigned to
        !          17539: # the character in the PostScript font. The value can also be an integer
        !          17540: # or a PostScript string. An integer value is used as an index in the
        !          17541: # current font's Encoding array. A string value is returned to the host
        !          17542: # unchanged when the entry for the character is constructed. Entries that
        !          17543: # have (") as their value are synonyms for the preceeding character.
        !          17544: #
        !          17545: 
        !          17546: StandardCharset() {
        !          17547:        cat <<-'//End of StandardCharset'
        !          17548:                (!)     /exclam
        !          17549:                (")     /quotedbl
        !          17550:                (dq)    (")
        !          17551:                (#)     /numbersign
        !          17552:                ($)     /dollar
        !          17553:                (%)     /percent
        !          17554:                (&)     /ampersand
        !          17555:                (')     /quoteright
        !          17556:                (\()    /parenleft
        !          17557:                (\))    /parenright
        !          17558:                (*)     /asterisk
        !          17559:                (+)     /plus
        !          17560:                (,)     /comma
        !          17561:                (hy)    /hyphen
        !          17562:                (-)     (")                     % synonym
        !          17563:                (.)     /period
        !          17564:                (/)     /slash
        !          17565:                (0)     /zero
        !          17566:                (1)     /one
        !          17567:                (2)     /two
        !          17568:                (3)     /three
        !          17569:                (4)     /four
        !          17570:                (5)     /five
        !          17571:                (6)     /six
        !          17572:                (7)     /seven
        !          17573:                (8)     /eight
        !          17574:                (9)     /nine
        !          17575:                (:)     /colon
        !          17576:                (;)     /semicolon
        !          17577:                (<)     /less
        !          17578:                (=)     /equal
        !          17579:                (>)     /greater
        !          17580:                (?)     /question
        !          17581:                (@)     /at
        !          17582:                (A)     /A
        !          17583:                (B)     /B
        !          17584:                (C)     /C
        !          17585:                (D)     /D
        !          17586:                (E)     /E
        !          17587:                (F)     /F
        !          17588:                (G)     /G
        !          17589:                (H)     /H
        !          17590:                (I)     /I
        !          17591:                (J)     /J
        !          17592:                (K)     /K
        !          17593:                (L)     /L
        !          17594:                (M)     /M
        !          17595:                (N)     /N
        !          17596:                (O)     /O
        !          17597:                (P)     /P
        !          17598:                (Q)     /Q
        !          17599:                (R)     /R
        !          17600:                (S)     /S
        !          17601:                (T)     /T
        !          17602:                (U)     /U
        !          17603:                (V)     /V
        !          17604:                (W)     /W
        !          17605:                (X)     /X
        !          17606:                (Y)     /Y
        !          17607:                (Z)     /Z
        !          17608:                ([)     /bracketleft
        !          17609:                (\\)    /backslash
        !          17610:                (bs)    (")
        !          17611:                (])     /bracketright
        !          17612:                (^)     /asciicircum
        !          17613:                (_)     /underscore
        !          17614:                (`)     /quoteleft
        !          17615:                (a)     /a
        !          17616:                (b)     /b
        !          17617:                (c)     /c
        !          17618:                (d)     /d
        !          17619:                (e)     /e
        !          17620:                (f)     /f
        !          17621:                (g)     /g
        !          17622:                (h)     /h
        !          17623:                (i)     /i
        !          17624:                (j)     /j
        !          17625:                (k)     /k
        !          17626:                (l)     /l
        !          17627:                (m)     /m
        !          17628:                (n)     /n
        !          17629:                (o)     /o
        !          17630:                (p)     /p
        !          17631:                (q)     /q
        !          17632:                (r)     /r
        !          17633:                (s)     /s
        !          17634:                (t)     /t
        !          17635:                (u)     /u
        !          17636:                (v)     /v
        !          17637:                (w)     /w
        !          17638:                (x)     /x
        !          17639:                (y)     /y
        !          17640:                (z)     /z
        !          17641:                ({)     /braceleft
        !          17642:                (|)     /bar
        !          17643:                (})     /braceright
        !          17644:                (~)     /asciitilde
        !          17645:                (!!)    /exclamdown
        !          17646:                (ct)    /cent
        !          17647:                (ps)    /sterling
        !          17648:                (fr)    /fraction
        !          17649:                (yn)    /yen
        !          17650:                (fn)    /florin
        !          17651:                (sc)    /section
        !          17652:                (cr)    /currency
        !          17653:                (---)   /quotesingle
        !          17654:                (``)    /quotedblleft
        !          17655:                (---)   /guillemotleft
        !          17656:                (---)   /guilsinglleft
        !          17657:                (---)   /guilsinglright
        !          17658:                (fi)    /fi
        !          17659:                (fl)    /fl
        !          17660:                (en)    /endash
        !          17661:                (\\-)   (")
        !          17662:                (dg)    /dagger
        !          17663:                (dd)    /daggerdbl
        !          17664:                (---)   /periodcentered
        !          17665:                (pg)    /paragraph
        !          17666:                (---)   /bullet
        !          17667:                (---)   /quotesinglbase
        !          17668:                (---)   /quotedblbase
        !          17669:                ('')    /quotedblright
        !          17670:                (---)   /guillemotright
        !          17671:                (---)   /ellipsis
        !          17672:                (---)   /perthousand
        !          17673:                (??)    /questiondown
        !          17674:                (ga)    /grave
        !          17675:                (\\`)   (")
        !          17676:                (aa)    /acute
        !          17677:                (\\')   (")
        !          17678:                (^a)    /circumflex
        !          17679:                (~a)    /tilde
        !          17680:                (-a)    /macron
        !          17681:                (Ua)    /breve
        !          17682:                (.a)    /dotaccent
        !          17683:                (:a)    /dieresis
        !          17684:                (oa)    /ring
        !          17685:                (,a)    /cedilla
        !          17686:                ("a)    /hungarumlaut
        !          17687:                (Ca)    /ogonek
        !          17688:                (va)    /caron
        !          17689:                (em)    /emdash
        !          17690:                (---)   /AE
        !          17691:                (---)   /ordfeminine
        !          17692:                (---)   /Lslash
        !          17693:                (---)   /Oslash
        !          17694:                (---)   /OE
        !          17695:                (---)   /ordmasculine
        !          17696:                (---)   /ae
        !          17697:                (---)   /dotlessi
        !          17698:                (---)   /lslash
        !          17699:                (---)   /oslash
        !          17700:                (---)   /oe
        !          17701:                (---)   /germandbls
        !          17702:        //End of StandardCharset
        !          17703: }
        !          17704: 
        !          17705: SymbolCharset() {
        !          17706:        cat <<-'//End of SymbolCharset'
        !          17707:                (---)   /exclam
        !          17708:                (fa)    /universal
        !          17709:                (---)   /numbersign
        !          17710:                (te)    /existential
        !          17711:                (---)   /percent
        !          17712:                (---)   /ampersand
        !          17713:                (st)    /suchthat
        !          17714:                (---)   /parenleft
        !          17715:                (---)   /parenright
        !          17716:                (**)    /asteriskmath
        !          17717:                (pl)    /plus
        !          17718:                (---)   /comma
        !          17719:                (mi)    /minus
        !          17720:                (---)   /period
        !          17721:                (sl)    /slash
        !          17722:                (---)   /zero
        !          17723:                (---)   /one
        !          17724:                (---)   /two
        !          17725:                (---)   /three
        !          17726:                (---)   /four
        !          17727:                (---)   /five
        !          17728:                (---)   /six
        !          17729:                (---)   /seven
        !          17730:                (---)   /eight
        !          17731:                (---)   /nine
        !          17732:                (---)   /colon
        !          17733:                (---)   /semicolon
        !          17734:                (<)     /less
        !          17735:                (eq)    /equal
        !          17736:                (>)     /greater
        !          17737:                (---)   /question
        !          17738:                (cg)    /congruent
        !          17739:                (*A)    /Alpha
        !          17740:                (*B)    /Beta
        !          17741:                (*X)    /Chi
        !          17742:                (*D)    /Delta
        !          17743:                (*E)    /Epsilon
        !          17744:                (*F)    /Phi
        !          17745:                (*G)    /Gamma
        !          17746:                (*Y)    /Eta
        !          17747:                (*I)    /Iota
        !          17748:                (---)   /theta1
        !          17749:                (*K)    /Kappa
        !          17750:                (*L)    /Lambda
        !          17751:                (*M)    /Mu
        !          17752:                (*N)    /Nu
        !          17753:                (*O)    /Omicron
        !          17754:                (*P)    /Pi
        !          17755:                (*H)    /Theta
        !          17756:                (*R)    /Rho
        !          17757:                (*S)    /Sigma
        !          17758:                (*T)    /Tau
        !          17759:                (*U)    /Upsilon
        !          17760:                (ts)    /sigma1
        !          17761:                (*W)    /Omega
        !          17762:                (*C)    /Xi
        !          17763:                (*Q)    /Psi
        !          17764:                (*Z)    /Zeta
        !          17765:                (---)   /bracketleft
        !          17766:                (tf)    /therefore
        !          17767:                (---)   /bracketright
        !          17768:                (pp)    /perpendicular
        !          17769:                (ul)    /underscore
        !          17770:                (_)     (")                     % synonym
        !          17771:                (rn)    /radicalex
        !          17772:                (*a)    /alpha
        !          17773:                (*b)    /beta
        !          17774:                (*x)    /chi
        !          17775:                (*d)    /delta
        !          17776:                (*e)    /epsilon
        !          17777:                (*f)    /phi
        !          17778:                (*g)    /gamma
        !          17779:                (*y)    /eta
        !          17780:                (*i)    /iota
        !          17781:                (---)   /phi1
        !          17782:                (*k)    /kappa
        !          17783:                (*l)    /lambda
        !          17784:                (*m)    /mu
        !          17785:                (*n)    /nu
        !          17786:                (*o)    /omicron
        !          17787:                (*p)    /pi
        !          17788:                (*h)    /theta
        !          17789:                (*r)    /rho
        !          17790:                (*s)    /sigma
        !          17791:                (*t)    /tau
        !          17792:                (*u)    /upsilon
        !          17793:                (---)   /omega1
        !          17794:                (*w)    /omega
        !          17795:                (*c)    /xi
        !          17796:                (*q)    /psi
        !          17797:                (*z)    /zeta
        !          17798:                (---)   /braceleft
        !          17799:                (or)    /bar
        !          17800:                (---)   /braceright
        !          17801:                (ap)    /similar
        !          17802:                (---)   /Upsilon1
        !          17803:                (fm)    /minute
        !          17804:                (<=)    /lessequal
        !          17805:                (---)   /fraction
        !          17806:                (if)    /infinity
        !          17807:                (---)   /florin
        !          17808:                (---)   /club
        !          17809:                (---)   /diamond
        !          17810:                (---)   /heart
        !          17811:                (---)   /spade
        !          17812:                (ab)    /arrowboth
        !          17813:                (<-)    /arrowleft
        !          17814:                (ua)    /arrowup
        !          17815:                (->)    /arrowright
        !          17816:                (da)    /arrowdown
        !          17817:                (de)    /degree
        !          17818:                (+-)    /plusminus
        !          17819:                (---)   /second
        !          17820:                (>=)    /greaterequal
        !          17821:                (mu)    /multiply
        !          17822:                (pt)    /proportional
        !          17823:                (pd)    /partialdiff
        !          17824:                (bu)    /bullet
        !          17825:                (di)    /divide
        !          17826:                (!=)    /notequal
        !          17827:                (==)    /equivalence
        !          17828:                (~~)    /approxequal
        !          17829:                (el)    /ellipsis
        !          17830:                (av)    /arrowvertex
        !          17831:                (ah)    /arrowhorizex
        !          17832:                (CR)    /carriagereturn
        !          17833:                (af)    /aleph
        !          17834:                (If)    /Ifraktur
        !          17835:                (Rf)    /Rfraktur
        !          17836:                (ws)    /weierstrass
        !          17837:                (Ox)    /circlemultiply
        !          17838:                (O+)    /circleplus
        !          17839:                (es)    /emptyset
        !          17840:                (ca)    /intersection
        !          17841:                (cu)    /union
        !          17842:                (sp)    /propersuperset
        !          17843:                (ip)    /reflexsuperset
        !          17844:                (!b)    /notsubset
        !          17845:                (sb)    /propersubset
        !          17846:                (ib)    /reflexsubset
        !          17847:                (mo)    /element
        !          17848:                (!m)    /notelement
        !          17849:                (an)    /angle
        !          17850:                (gr)    /gradient
        !          17851:                (rg)    /registerserif
        !          17852:                (co)    /copyrightserif
        !          17853:                (tm)    /trademarkserif
        !          17854:                (---)   /product
        !          17855:                (sr)    /radical
        !          17856:                (c.)    /dotmath
        !          17857:                (no)    /logicalnot
        !          17858:                (l&)    /logicaland
        !          17859:                (l|)    /logicalor
        !          17860:                (---)   /arrowdblboth
        !          17861:                (---)   /arrowdblleft
        !          17862:                (---)   /arrowdblup
        !          17863:                (---)   /arrowdblright
        !          17864:                (---)   /arrowdbldown
        !          17865:                (lz)    /lozenge
        !          17866:                (b<)    /angleleft
        !          17867:                (RG)    /registersans
        !          17868:                (CO)    /copyrightsans
        !          17869:                (TM)    /trademarksans
        !          17870:                (---)   /summation
        !          17871:                (LT)    /parenlefttp
        !          17872:                (br)    /parenleftex
        !          17873:                (LX)    (")                     % synonym
        !          17874:                (LB)    /parenleftbt
        !          17875:                (lc)    /bracketlefttp
        !          17876:                (lx)    /bracketleftex
        !          17877:                (lf)    /bracketleftbt
        !          17878:                (lt)    /bracelefttp
        !          17879:                (lk)    /braceleftmid
        !          17880:                (lb)    /braceleftbt
        !          17881:                (bv)    /braceex
        !          17882:                (|)     (")                     % synonym
        !          17883:                (b>)    /angleright
        !          17884:                (is)    /integral
        !          17885:                (---)   /integraltp
        !          17886:                (---)   /integralex
        !          17887:                (---)   /integralbt
        !          17888:                (RT)    /parenrighttp
        !          17889:                (RX)    /parenrightex
        !          17890:                (RB)    /parenrightbt
        !          17891:                (rc)    /bracketrighttp
        !          17892:                (rx)    /bracketrightex
        !          17893:                (rf)    /bracketrightbt
        !          17894:                (rt)    /bracerighttp
        !          17895:                (rk)    /bracerightmid
        !          17896:                (rb)    /bracerightbt
        !          17897:                (~=)    (55     0       1)      % charlib
        !          17898:        //End of SymbolCharset
        !          17899: }
        !          17900: 
        !          17901: SpecialCharset() {
        !          17902:        cat <<-'//End of SpecialCharset'
        !          17903:                (ru)    /underscore
        !          17904:                (ff)    (60     2       1)      % charlib
        !          17905:                (Fi)    (84     2       1)      % charlib
        !          17906:                (Fl)    (84     2       1)      % charlib
        !          17907:                (14)    (75     2       1)      % charlib
        !          17908:                (12)    (75     2       1)      % charlib
        !          17909:                (34)    (75     2       1)      % charlib
        !          17910:                (bx)    (50     2       1)      % charlib
        !          17911:                (ob)    (38     2       1)      % charlib
        !          17912:                (ci)    (75     0       1)      % charlib
        !          17913:                (sq)    (50     2       1)      % charlib
        !          17914:                (Sl)    (50     2       1)      % charlib
        !          17915:                (L1)    (110    1       1)      % charlib
        !          17916:                (LA)    (110    1       1)      % charlib
        !          17917:                (LV)    (110    3       1)      % charlib
        !          17918:                (LH)    (210    1       1)      % charlib
        !          17919:                (lh)    (100    0       1)      % charlib
        !          17920:                (rh)    (100    0       1)      % charlib
        !          17921:                (lH)    (100    0       1)      % charlib
        !          17922:                (rH)    (100    0       1)      % charlib
        !          17923:                (PC)    (220    2       1)      % charlib
        !          17924:                (DG)    (185    2       1)      % charlib
        !          17925:        //End of SpecialCharset
        !          17926: }
        !          17927: 
        !          17928: DingbatsCharset() {
        !          17929:        cat <<-'//End of DingbatsCharset'
        !          17930:                (!)     33
        !          17931:                (")     34
        !          17932:                (#)     35
        !          17933:                ($)     36
        !          17934:                (%)     37
        !          17935:                (&)     38
        !          17936:                (')     39
        !          17937:                (\()    40
        !          17938:                (\))    41
        !          17939:                (*)     42
        !          17940:                (+)     43
        !          17941:                (,)     44
        !          17942:                (-)     45
        !          17943:                (.)     46
        !          17944:                (/)     47
        !          17945:                (0)     48
        !          17946:                (1)     49
        !          17947:                (2)     50
        !          17948:                (3)     51
        !          17949:                (4)     52
        !          17950:                (5)     53
        !          17951:                (6)     54
        !          17952:                (7)     55
        !          17953:                (8)     56
        !          17954:                (9)     57
        !          17955:                (:)     58
        !          17956:                (;)     59
        !          17957:                (<)     60
        !          17958:                (=)     61
        !          17959:                (>)     62
        !          17960:                (?)     63
        !          17961:                (@)     64
        !          17962:                (A)     65
        !          17963:                (B)     66
        !          17964:                (C)     67
        !          17965:                (D)     68
        !          17966:                (E)     69
        !          17967:                (F)     70
        !          17968:                (G)     71
        !          17969:                (H)     72
        !          17970:                (I)     73
        !          17971:                (J)     74
        !          17972:                (K)     75
        !          17973:                (L)     76
        !          17974:                (M)     77
        !          17975:                (N)     78
        !          17976:                (O)     79
        !          17977:                (P)     80
        !          17978:                (Q)     81
        !          17979:                (R)     82
        !          17980:                (S)     83
        !          17981:                (T)     84
        !          17982:                (U)     85
        !          17983:                (V)     86
        !          17984:                (W)     87
        !          17985:                (X)     88
        !          17986:                (Y)     89
        !          17987:                (Z)     90
        !          17988:                ([)     91
        !          17989:                (\\)    92
        !          17990:                (])     93
        !          17991:                (^)     94
        !          17992:                (_)     95
        !          17993:                (`)     96
        !          17994:                (a)     97
        !          17995:                (b)     98
        !          17996:                (c)     99
        !          17997:                (d)     100
        !          17998:                (e)     101
        !          17999:                (f)     102
        !          18000:                (g)     103
        !          18001:                (h)     104
        !          18002:                (i)     105
        !          18003:                (j)     106
        !          18004:                (k)     107
        !          18005:                (l)     108
        !          18006:                (m)     109
        !          18007:                (n)     110
        !          18008:                (o)     111
        !          18009:                (p)     112
        !          18010:                (q)     113
        !          18011:                (r)     114
        !          18012:                (s)     115
        !          18013:                (t)     116
        !          18014:                (u)     117
        !          18015:                (v)     118
        !          18016:                (w)     119
        !          18017:                (x)     120
        !          18018:                (y)     121
        !          18019:                (z)     122
        !          18020:                ({)     123
        !          18021:                (|)     124
        !          18022:                (})     125
        !          18023:                (~)     126
        !          18024:                (hy)    161
        !          18025:                (em)    162
        !          18026:                (de)    163
        !          18027:                (\\-)   164
        !          18028:                (en)    165
        !          18029:                (ff)    166
        !          18030:                (fi)    167
        !          18031:                (fl)    168
        !          18032:                (Fi)    169
        !          18033:                (Fl)    170
        !          18034:                (fm)    171
        !          18035:                (ru)    172
        !          18036:                (dg)    173
        !          18037:                (bu)    174
        !          18038:                (14)    175
        !          18039:                (34)    176
        !          18040:                (12)    177
        !          18041:                (ct)    178
        !          18042:                (rg)    179
        !          18043:                (sq)    180
        !          18044:                (sl)    181
        !          18045:                (ul)    182
        !          18046:                (or)    183
        !          18047:                (no)    184
        !          18048:                (->)    185
        !          18049:                (<-)    186
        !          18050:                (da)    187
        !          18051:                (lh)    188
        !          18052:                (ua)    189
        !          18053:                (ab)    190
        !          18054:                (!b)    191
        !          18055:                (aa)    192
        !          18056:                (!m)    193
        !          18057:                (ga)    194
        !          18058:                (pl)    195
        !          18059:                (mi)    196
        !          18060:                (mu)    197
        !          18061:                (di)    198
        !          18062:                (eq)    199
        !          18063:                (==)    200
        !          18064:                (>=)    201
        !          18065:                (<=)    202
        !          18066:                (!=)    203
        !          18067:                (+-)    204
        !          18068:                (-+)    205
        !          18069:                (ap)    206
        !          18070:                (~=)    207
        !          18071:                (gr)    208
        !          18072:                (is)    209
        !          18073:                (pd)    210
        !          18074:                (if)    211
        !          18075:                (sr)    212
        !          18076:                (rn)    213
        !          18077:                (sb)    214
        !          18078:                (sp)    215
        !          18079:                (cu)    216
        !          18080:                (ca)    217
        !          18081:                (ib)    218
        !          18082:                (ip)    219
        !          18083:                (mo)    220
        !          18084:                (es)    221
        !          18085:                (sc)    222
        !          18086:                (dd)    223
        !          18087:                (lc)    224
        !          18088:                (rc)    225
        !          18089:                (lf)    226
        !          18090:                (rf)    227
        !          18091:                (bv)    228
        !          18092:                (**)    229
        !          18093:                (br)    230
        !          18094:                (ci)    231
        !          18095:                (ts)    232
        !          18096:                (co)    233
        !          18097:                (lt)    234
        !          18098:                (rt)    235
        !          18099:                (lb)    236
        !          18100:                (rb)    237
        !          18101:                (lk)    238
        !          18102:                (rk)    239
        !          18103:                (rh)    241
        !          18104:                (tm)    242
        !          18105:                (Sl)    243
        !          18106:                (ps)    244
        !          18107:                (cs)    245
        !          18108:                (cy)    246
        !          18109:                (as)    247
        !          18110:                (os)    248
        !          18111:                (=.)    249
        !          18112:                (ld)    250
        !          18113:                (rd)    251
        !          18114:                (le)    252
        !          18115:                (ge)    253
        !          18116:                (pp)    254
        !          18117:        //End of DingbatsCharset
        !          18118: }
        !          18119: 
        !          18120: #
        !          18121: # Generating functions output PostScript programs that build font width
        !          18122: # tables or a typesetter description file. Send the program to a printer
        !          18123: # and the complete table will come back on the serial port. All write on
        !          18124: # stdout and assume the prologue and other required PostScript files are
        !          18125: # all available.
        !          18126: #
        !          18127: 
        !          18128: Proportional() {
        !          18129:        echo "/unitwidth $UNITWIDTH def"
        !          18130:        echo "/resolution $RESOLUTION def"
        !          18131:        echo "/charset ["
        !          18132:                # Get <>_ and | from S. Use accents for ascii ^ and ~.
        !          18133:                StandardCharset | awk '
        !          18134:                        $1 == "(<)" && $2 == "/less" {$1 = "(---)"}
        !          18135:                        $1 == "(>)" && $2 == "/greater" {$1 = "(---)"}
        !          18136:                        $1 == "(_)" && $2 == "/underscore" {$1 = "(---)"}
        !          18137:                        $1 == "(|)" && $2 == "/bar" {$1 = "(---)"}
        !          18138:                        $1 == "(^)" && $2 == "/asciicircum" {$1 = "(---)"}
        !          18139:                        $1 == "(~)" && $2 == "/asciitilde" {$1 = "(---)"}
        !          18140:                        {printf "%s\t%s\n", $1, $2}
        !          18141:                        $2 == "/circumflex" {printf "(^)\t(\")\n"}
        !          18142:                        $2 == "/tilde" {printf "(~)\t(\")\n"}
        !          18143:                '
        !          18144:        echo "] def"
        !          18145: 
        !          18146:        echo "/$2 SelectFont"
        !          18147:        echo "(opO) SetAscender"
        !          18148: 
        !          18149:        echo "(name $1\\\\n) Print"
        !          18150:        echo "(fontname $2\\\\n) Print"
        !          18151:        echo "/$1 NamedInPrologue"
        !          18152:        echo "(ligatures fi fl 0\\\\n) Print"
        !          18153:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
        !          18154:        echo "(charset\\\\n) Print"
        !          18155:        echo "BuildFontCharset"
        !          18156: }
        !          18157: 
        !          18158: FixedWidth() {
        !          18159:        echo "/unitwidth $UNITWIDTH def"
        !          18160:        echo "/resolution $RESOLUTION def"
        !          18161:        echo "/charset ["
        !          18162:                # awk is not important - it's only here for compatibility
        !          18163:                StandardCharset | awk '
        !          18164:                        $1 == "(fi)" || $1 == "(fl)" {next}
        !          18165:                        {printf "%s\t%s\n", $1, $2}
        !          18166:                        $2 == "/circumflex" {printf "(^)\t(\")\n"}
        !          18167:                        $2 == "/tilde" {printf "(~)\t(\")\n"}
        !          18168:        '
        !          18169:        echo "] def"
        !          18170: 
        !          18171:        echo "/$2 SelectFont"
        !          18172:        echo "(opO) SetAscender"
        !          18173: 
        !          18174:        echo "(name $1\\\\n) Print"
        !          18175:        echo "(fontname $2\\\\n) Print"
        !          18176:        echo "/$1 NamedInPrologue"
        !          18177:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
        !          18178:        echo "(charset\\\\n) Print"
        !          18179:        echo "BuildFontCharset"
        !          18180: }
        !          18181: 
        !          18182: Dingbats() {
        !          18183:        echo "/unitwidth $UNITWIDTH def"
        !          18184:        echo "/resolution $RESOLUTION def"
        !          18185:        echo "/charset ["
        !          18186:                DingbatsCharset
        !          18187:        echo "] def"
        !          18188: 
        !          18189:        echo "/$2 SelectFont"
        !          18190:        echo "(   ) SetAscender"
        !          18191: 
        !          18192:        echo "(name $1\\\\n) Print"
        !          18193:        echo "(fontname $2\\\\n) Print"
        !          18194:        echo "/$1 NamedInPrologue"
        !          18195:        echo "(charset\\\\n) Print"
        !          18196:        echo "BuildFontCharset"
        !          18197: }
        !          18198: 
        !          18199: Greek() {
        !          18200:        echo "/unitwidth $UNITWIDTH def"
        !          18201:        echo "/resolution $RESOLUTION def"
        !          18202:        echo "/charset ["
        !          18203:                SymbolCharset | awk '$1 ~ /\(\*[a-zA-Z]\)/'
        !          18204:        echo "] def"
        !          18205: 
        !          18206:        echo "/$2 SelectFont"
        !          18207:        echo "(orO) SetAscender"
        !          18208: 
        !          18209:        echo "(name $1\\\\n) Print"
        !          18210:        echo "(fontname $2\\\\n) Print"
        !          18211:        echo "/$1 NamedInPrologue"
        !          18212:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
        !          18213:        echo "(charset\\\\n) Print"
        !          18214:        echo "BuildFontCharset"
        !          18215: }
        !          18216: 
        !          18217: Symbol() {
        !          18218:        echo "/unitwidth $UNITWIDTH def"
        !          18219:        echo "/resolution $RESOLUTION def"
        !          18220:        echo "/charset ["
        !          18221:                SymbolCharset
        !          18222:        echo "] def"
        !          18223: 
        !          18224:        echo "ChangeMetrics"
        !          18225:        echo "/S SelectFont"
        !          18226:        echo "(orO) SetAscender"
        !          18227: 
        !          18228:        echo "(name $1\\\\n) Print"
        !          18229:        echo "(fontname $2\\\\n) Print"
        !          18230:        echo "/$1 NamedInPrologue"
        !          18231:        echo "(special\\\\n) Print"
        !          18232:        echo "(charset\\\\n) Print"
        !          18233:        echo "BuildFontCharset"
        !          18234: }
        !          18235: 
        !          18236: Special() {
        !          18237:        echo "/unitwidth $UNITWIDTH def"
        !          18238:        echo "/resolution $RESOLUTION def"
        !          18239:        echo "/charset ["
        !          18240:                SpecialCharset
        !          18241:        echo "] def"
        !          18242: 
        !          18243:        echo "ChangeMetrics"
        !          18244:        echo "/S1 SelectFont"
        !          18245: 
        !          18246:        echo "(# Times-Roman special font\\\\n) Print"
        !          18247:        echo "(name $1\\\\n) Print"
        !          18248:        echo "(fontname $2\\\\n) Print"
        !          18249:        echo "/$1 NamedInPrologue"
        !          18250:        echo "(special\\\\n) Print"
        !          18251:        echo "(charset\\\\n) Print"
        !          18252:        echo "BuildFontCharset"
        !          18253: }
        !          18254: 
        !          18255: #
        !          18256: # The DESC file doesn't have to be built on a printer. It's only here for
        !          18257: # consistency.
        !          18258: #
        !          18259: 
        !          18260: Description() {
        !          18261:        echo "/charset ["       # awk - so the stack doesn't overflow
        !          18262:                StandardCharset | awk '$1 != "(---)" {print $1}'
        !          18263:                SymbolCharset | awk '$1 != "(---)" {print $1}'
        !          18264:                SpecialCharset | awk '$1 != "(---)" {print $1}'
        !          18265:                DingbatsCharset | awk '$1 != "(---)" {print $1}'
        !          18266:        echo "] def"
        !          18267: 
        !          18268:        cat <<-//DESC
        !          18269:                (#Device Description - original PostScript character set
        !          18270: 
        !          18271:                PDL PostScript
        !          18272: 
        !          18273:                fonts 10 R I B BI CW H HI HB S1 S
        !          18274:                sizes 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
        !          18275:                23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 40 42 44 46
        !          18276:                48 50 52 54 56 58 60 64 68 72 78 84 90 96 100 105 110 115
        !          18277:                120 125 130 135 140 145 150 155 160 0
        !          18278: 
        !          18279:                res $RESOLUTION
        !          18280:                hor 1
        !          18281:                vert 1
        !          18282:                unitwidth $UNITWIDTH
        !          18283: 
        !          18284:                ) Print
        !          18285:        //DESC
        !          18286:        echo "(charset\\\\n) Print"
        !          18287:        echo "BuildDescCharset"
        !          18288:        echo "(\\\\n) Print"
        !          18289: }
        !          18290: 
        !          18291: 0707070014231217231006440057030057030000010643620522627501400002400000003355post.src/devpost/HKname HK
        !          18292: fontname Helvetica-LightOblique
        !          18293: ligatures fi fl 0
        !          18294: spacewidth 28
        !          18295: charset
        !          18296: !      33      2       33
        !          18297: "      28      2       34
        !          18298: dq     "
        !          18299: #      56      2       35
        !          18300: $      56      2       36
        !          18301: %      89      2       37
        !          18302: &      67      2       38
        !          18303: '      22      2       39
        !          18304: (      33      3       40
        !          18305: )      33      3       41
        !          18306: *      39      2       42
        !          18307: +      66      0       43
        !          18308: ,      28      1       44
        !          18309: hy     33      0       45
        !          18310: -      "
        !          18311: .      28      0       46
        !          18312: /      28      2       47
        !          18313: 0      56      2       48
        !          18314: 1      56      2       49
        !          18315: 2      56      2       50
        !          18316: 3      56      2       51
        !          18317: 4      56      2       52
        !          18318: 5      56      2       53
        !          18319: 6      56      2       54
        !          18320: 7      56      2       55
        !          18321: 8      56      2       56
        !          18322: 9      56      2       57
        !          18323: :      28      0       58
        !          18324: ;      28      1       59
        !          18325: ---    66      0       60
        !          18326: =      66      0       61
        !          18327: ---    66      0       62
        !          18328: ?      50      2       63
        !          18329: @      80      2       64
        !          18330: A      67      2       65
        !          18331: B      67      2       66
        !          18332: C      72      2       67
        !          18333: D      72      2       68
        !          18334: E      61      2       69
        !          18335: F      56      2       70
        !          18336: G      78      2       71
        !          18337: H      72      2       72
        !          18338: I      28      2       73
        !          18339: J      50      2       74
        !          18340: K      67      2       75
        !          18341: L      56      2       76
        !          18342: M      83      2       77
        !          18343: N      72      2       78
        !          18344: O      78      2       79
        !          18345: P      61      2       80
        !          18346: Q      78      2       81
        !          18347: R      67      2       82
        !          18348: S      61      2       83
        !          18349: T      56      2       84
        !          18350: U      72      2       85
        !          18351: V      61      2       86
        !          18352: W      89      2       87
        !          18353: X      61      2       88
        !          18354: Y      61      2       89
        !          18355: Z      61      2       90
        !          18356: [      33      3       91
        !          18357: \      28      2       92
        !          18358: bs     "
        !          18359: ]      33      3       93
        !          18360: ---    66      2       94
        !          18361: ---    50      1       95
        !          18362: `      22      2       96
        !          18363: a      56      0       97
        !          18364: b      61      2       98
        !          18365: c      56      0       99
        !          18366: d      61      2       100
        !          18367: e      56      0       101
        !          18368: f      28      2       102
        !          18369: g      61      1       103
        !          18370: h      56      2       104
        !          18371: i      22      2       105
        !          18372: j      22      3       106
        !          18373: k      50      2       107
        !          18374: l      22      2       108
        !          18375: m      83      0       109
        !          18376: n      56      0       110
        !          18377: o      56      0       111
        !          18378: p      61      1       112
        !          18379: q      61      1       113
        !          18380: r      33      0       114
        !          18381: s      50      0       115
        !          18382: t      28      2       116
        !          18383: u      56      0       117
        !          18384: v      50      0       118
        !          18385: w      72      0       119
        !          18386: x      50      0       120
        !          18387: y      50      1       121
        !          18388: z      50      0       122
        !          18389: {      33      3       123
        !          18390: ---    22      2       124
        !          18391: }      33      3       125
        !          18392: ---    66      0       126
        !          18393: !!     33      1       161
        !          18394: ct     56      3       162
        !          18395: ps     56      2       163
        !          18396: fr     17      2       164
        !          18397: yn     56      2       165
        !          18398: fn     56      3       166
        !          18399: sc     56      3       167
        !          18400: cr     56      0       168
        !          18401: ---    22      2       169
        !          18402: ``     39      2       170
        !          18403: ---    56      0       171
        !          18404: ---    39      0       172
        !          18405: ---    39      0       173
        !          18406: fi     50      2       174
        !          18407: fl     50      2       175
        !          18408: en     50      0       177
        !          18409: \-     "
        !          18410: dg     56      3       178
        !          18411: dd     56      3       179
        !          18412: ---    28      0       180
        !          18413: pg     65      3       182
        !          18414: ---    50      0       183
        !          18415: ---    22      1       184
        !          18416: ---    39      1       185
        !          18417: ''     39      2       186
        !          18418: ---    56      0       187
        !          18419: ---    100     0       188
        !          18420: ---    100     2       189
        !          18421: ??     50      1       191
        !          18422: ga     33      2       193
        !          18423: \`     "
        !          18424: aa     33      2       194
        !          18425: \'     "
        !          18426: ^a     33      2       195
        !          18427: ^      "
        !          18428: ~a     33      2       196
        !          18429: ~      "
        !          18430: -a     33      2       197
        !          18431: Ua     33      2       198
        !          18432: .a     33      2       199
        !          18433: :a     33      2       200
        !          18434: oa     33      2       202
        !          18435: ,a     33      1       203
        !          18436: "a     33      2       205
        !          18437: Ca     33      1       206
        !          18438: va     33      2       207
        !          18439: em     100     0       208
        !          18440: ---    100     2       225
        !          18441: ---    33      2       227
        !          18442: ---    56      2       232
        !          18443: ---    78      2       233
        !          18444: ---    100     2       234
        !          18445: ---    33      2       235
        !          18446: ---    89      0       241
        !          18447: ---    22      0       245
        !          18448: ---    22      2       248
        !          18449: ---    56      0       249
        !          18450: ---    94      0       250
        !          18451: ---    50      2       251
        !          18452: 0707070014231217241006440057030057030000010643640522627501400002400000003346post.src/devpost/HLname HL
        !          18453: fontname Helvetica-Light
        !          18454: ligatures fi fl 0
        !          18455: spacewidth 28
        !          18456: charset
        !          18457: !      33      2       33
        !          18458: "      28      2       34
        !          18459: dq     "
        !          18460: #      56      2       35
        !          18461: $      56      2       36
        !          18462: %      89      2       37
        !          18463: &      67      2       38
        !          18464: '      22      2       39
        !          18465: (      33      3       40
        !          18466: )      33      3       41
        !          18467: *      39      2       42
        !          18468: +      66      0       43
        !          18469: ,      28      1       44
        !          18470: hy     33      0       45
        !          18471: -      "
        !          18472: .      28      0       46
        !          18473: /      28      2       47
        !          18474: 0      56      2       48
        !          18475: 1      56      2       49
        !          18476: 2      56      2       50
        !          18477: 3      56      2       51
        !          18478: 4      56      2       52
        !          18479: 5      56      2       53
        !          18480: 6      56      2       54
        !          18481: 7      56      2       55
        !          18482: 8      56      2       56
        !          18483: 9      56      2       57
        !          18484: :      28      0       58
        !          18485: ;      28      1       59
        !          18486: ---    66      0       60
        !          18487: =      66      0       61
        !          18488: ---    66      0       62
        !          18489: ?      50      2       63
        !          18490: @      80      2       64
        !          18491: A      67      2       65
        !          18492: B      67      2       66
        !          18493: C      72      2       67
        !          18494: D      72      2       68
        !          18495: E      61      2       69
        !          18496: F      56      2       70
        !          18497: G      78      2       71
        !          18498: H      72      2       72
        !          18499: I      28      2       73
        !          18500: J      50      2       74
        !          18501: K      67      2       75
        !          18502: L      56      2       76
        !          18503: M      83      2       77
        !          18504: N      72      2       78
        !          18505: O      78      2       79
        !          18506: P      61      2       80
        !          18507: Q      78      2       81
        !          18508: R      67      2       82
        !          18509: S      61      2       83
        !          18510: T      56      2       84
        !          18511: U      72      2       85
        !          18512: V      61      2       86
        !          18513: W      89      2       87
        !          18514: X      61      2       88
        !          18515: Y      61      2       89
        !          18516: Z      61      2       90
        !          18517: [      33      3       91
        !          18518: \      28      2       92
        !          18519: bs     "
        !          18520: ]      33      3       93
        !          18521: ---    66      2       94
        !          18522: ---    50      1       95
        !          18523: `      22      2       96
        !          18524: a      56      0       97
        !          18525: b      61      2       98
        !          18526: c      56      0       99
        !          18527: d      61      2       100
        !          18528: e      56      0       101
        !          18529: f      28      2       102
        !          18530: g      61      1       103
        !          18531: h      56      2       104
        !          18532: i      22      2       105
        !          18533: j      22      3       106
        !          18534: k      50      2       107
        !          18535: l      22      2       108
        !          18536: m      83      0       109
        !          18537: n      56      0       110
        !          18538: o      56      0       111
        !          18539: p      61      1       112
        !          18540: q      61      1       113
        !          18541: r      33      0       114
        !          18542: s      50      0       115
        !          18543: t      28      2       116
        !          18544: u      56      0       117
        !          18545: v      50      0       118
        !          18546: w      72      0       119
        !          18547: x      50      0       120
        !          18548: y      50      1       121
        !          18549: z      50      0       122
        !          18550: {      33      3       123
        !          18551: ---    22      2       124
        !          18552: }      33      3       125
        !          18553: ---    66      0       126
        !          18554: !!     33      1       161
        !          18555: ct     56      3       162
        !          18556: ps     56      2       163
        !          18557: fr     17      2       164
        !          18558: yn     56      2       165
        !          18559: fn     56      3       166
        !          18560: sc     56      3       167
        !          18561: cr     56      0       168
        !          18562: ---    22      2       169
        !          18563: ``     39      2       170
        !          18564: ---    56      0       171
        !          18565: ---    39      0       172
        !          18566: ---    39      0       173
        !          18567: fi     50      2       174
        !          18568: fl     50      2       175
        !          18569: en     50      0       177
        !          18570: \-     "
        !          18571: dg     56      3       178
        !          18572: dd     56      3       179
        !          18573: ---    28      0       180
        !          18574: pg     65      3       182
        !          18575: ---    50      0       183
        !          18576: ---    22      1       184
        !          18577: ---    39      1       185
        !          18578: ''     39      2       186
        !          18579: ---    56      0       187
        !          18580: ---    100     0       188
        !          18581: ---    100     2       189
        !          18582: ??     50      1       191
        !          18583: ga     33      2       193
        !          18584: \`     "
        !          18585: aa     33      2       194
        !          18586: \'     "
        !          18587: ^a     33      2       195
        !          18588: ^      "
        !          18589: ~a     33      2       196
        !          18590: ~      "
        !          18591: -a     33      2       197
        !          18592: Ua     33      2       198
        !          18593: .a     33      2       199
        !          18594: :a     33      2       200
        !          18595: oa     33      2       202
        !          18596: ,a     33      1       203
        !          18597: "a     33      2       205
        !          18598: Ca     33      1       206
        !          18599: va     33      2       207
        !          18600: em     100     0       208
        !          18601: ---    100     2       225
        !          18602: ---    33      2       227
        !          18603: ---    56      2       232
        !          18604: ---    78      2       233
        !          18605: ---    100     2       234
        !          18606: ---    33      2       235
        !          18607: ---    89      0       241
        !          18608: ---    22      0       245
        !          18609: ---    22      2       248
        !          18610: ---    56      0       249
        !          18611: ---    94      0       250
        !          18612: ---    50      2       251
        !          18613: 0707070014231215111006400057030057030000010554220522632552300002400000003362post.src/devpost/HMname H
        !          18614: fontname Helvetica
        !          18615: named in prologue
        !          18616: ligatures fi fl 0
        !          18617: spacewidth 28
        !          18618: charset
        !          18619: !      28      2       33
        !          18620: "      36      2       34
        !          18621: dq     "
        !          18622: #      56      2       35
        !          18623: $      56      3       36
        !          18624: %      89      2       37
        !          18625: &      67      2       38
        !          18626: '      22      2       39
        !          18627: (      33      3       40
        !          18628: )      33      3       41
        !          18629: *      39      2       42
        !          18630: +      58      0       43
        !          18631: ,      28      1       44
        !          18632: hy     33      0       45
        !          18633: -      "
        !          18634: .      28      0       46
        !          18635: /      28      2       47
        !          18636: 0      56      2       48
        !          18637: 1      56      2       49
        !          18638: 2      56      2       50
        !          18639: 3      56      2       51
        !          18640: 4      56      2       52
        !          18641: 5      56      2       53
        !          18642: 6      56      2       54
        !          18643: 7      56      2       55
        !          18644: 8      56      2       56
        !          18645: 9      56      2       57
        !          18646: :      28      0       58
        !          18647: ;      28      1       59
        !          18648: ---    58      0       60
        !          18649: =      58      0       61
        !          18650: ---    58      0       62
        !          18651: ?      56      2       63
        !          18652: @      102     3       64
        !          18653: A      67      2       65
        !          18654: B      67      2       66
        !          18655: C      72      2       67
        !          18656: D      72      2       68
        !          18657: E      67      2       69
        !          18658: F      61      2       70
        !          18659: G      78      2       71
        !          18660: H      72      2       72
        !          18661: I      28      2       73
        !          18662: J      50      2       74
        !          18663: K      67      2       75
        !          18664: L      56      2       76
        !          18665: M      83      2       77
        !          18666: N      72      2       78
        !          18667: O      78      2       79
        !          18668: P      67      2       80
        !          18669: Q      78      2       81
        !          18670: R      72      2       82
        !          18671: S      67      2       83
        !          18672: T      61      2       84
        !          18673: U      72      2       85
        !          18674: V      67      2       86
        !          18675: W      94      2       87
        !          18676: X      67      2       88
        !          18677: Y      67      2       89
        !          18678: Z      61      2       90
        !          18679: [      28      3       91
        !          18680: \      28      2       92
        !          18681: bs     "
        !          18682: ]      28      3       93
        !          18683: ---    47      2       94
        !          18684: ---    56      1       95
        !          18685: `      22      2       96
        !          18686: a      56      0       97
        !          18687: b      56      2       98
        !          18688: c      50      0       99
        !          18689: d      56      2       100
        !          18690: e      56      0       101
        !          18691: f      28      2       102
        !          18692: g      56      1       103
        !          18693: h      56      2       104
        !          18694: i      22      2       105
        !          18695: j      22      3       106
        !          18696: k      50      2       107
        !          18697: l      22      2       108
        !          18698: m      83      0       109
        !          18699: n      56      0       110
        !          18700: o      56      0       111
        !          18701: p      56      1       112
        !          18702: q      56      1       113
        !          18703: r      33      0       114
        !          18704: s      50      0       115
        !          18705: t      28      2       116
        !          18706: u      56      0       117
        !          18707: v      50      0       118
        !          18708: w      72      0       119
        !          18709: x      50      0       120
        !          18710: y      50      1       121
        !          18711: z      50      0       122
        !          18712: {      33      3       123
        !          18713: ---    26      3       124
        !          18714: }      33      3       125
        !          18715: ---    58      0       126
        !          18716: !!     33      1       161
        !          18717: ct     56      3       162
        !          18718: ps     56      2       163
        !          18719: fr     17      2       164
        !          18720: yn     56      2       165
        !          18721: fn     56      3       166
        !          18722: sc     56      3       167
        !          18723: cr     56      0       168
        !          18724: ---    19      2       169
        !          18725: ``     33      2       170
        !          18726: ---    56      0       171
        !          18727: ---    33      0       172
        !          18728: ---    33      0       173
        !          18729: fi     50      2       174
        !          18730: fl     50      2       175
        !          18731: en     56      0       177
        !          18732: \-     "
        !          18733: dg     56      3       178
        !          18734: dd     56      3       179
        !          18735: ---    28      0       180
        !          18736: pg     54      3       182
        !          18737: ---    35      0       183
        !          18738: ---    22      1       184
        !          18739: ---    33      1       185
        !          18740: ''     33      2       186
        !          18741: ---    56      0       187
        !          18742: ---    100     0       188
        !          18743: ---    100     2       189
        !          18744: ??     61      1       191
        !          18745: ga     33      2       193
        !          18746: \`     "
        !          18747: aa     33      2       194
        !          18748: \'     "
        !          18749: ^a     33      2       195
        !          18750: ^      "
        !          18751: ~a     33      2       196
        !          18752: ~      "
        !          18753: -a     33      2       197
        !          18754: Ua     33      2       198
        !          18755: .a     33      2       199
        !          18756: :a     33      2       200
        !          18757: oa     33      2       202
        !          18758: ,a     33      1       203
        !          18759: "a     33      2       205
        !          18760: Ca     33      1       206
        !          18761: va     33      2       207
        !          18762: em     100     0       208
        !          18763: ---    100     2       225
        !          18764: ---    37      2       227
        !          18765: ---    56      2       232
        !          18766: ---    78      2       233
        !          18767: ---    100     2       234
        !          18768: ---    36      2       235
        !          18769: ---    89      0       241
        !          18770: ---    28      0       245
        !          18771: ---    22      2       248
        !          18772: ---    61      0       249
        !          18773: ---    94      0       250
        !          18774: ---    61      2       251
        !          18775: 0707070014231217261006440057030057030000010644600522627501400003700000035275post.src/devpost/shell.lib.bak#
        !          18776: # Shell library - for building devpost tables. Original collection was
        !          18777: # built on a Version 47.0 PS-810.
        !          18778: #
        !          18779: 
        !          18780: RESOLUTION=720
        !          18781: UNITWIDTH=10
        !          18782: 
        !          18783: #
        !          18784: # BuiltinTables returns command lines that generate PostScript programs
        !          18785: # for building a typesetter description file and font width tables for
        !          18786: # a relatively standard collection of fonts. Use awk to select a command
        !          18787: # line or modify an existing command to build a width table for a new
        !          18788: # font.
        !          18789: #
        !          18790: 
        !          18791: BuiltinTables() {
        !          18792:        cat <<-'//End of BuiltinTables'
        !          18793:                Proportional    R       Times-Roman
        !          18794:                Proportional    I       Times-Italic
        !          18795:                Proportional    B       Times-Bold
        !          18796:                Proportional    BI      Times-BoldItalic
        !          18797:                Proportional    AB      AvantGarde-Demi
        !          18798:                Proportional    AI      AvantGarde-BookOblique
        !          18799:                Proportional    AR      AvantGarde-Book
        !          18800:                Proportional    AX      AvantGarde-DemiOblique
        !          18801:                Proportional    H       Helvetica
        !          18802:                Proportional    HB      Helvetica-Bold
        !          18803:                Proportional    HI      Helvetica-Oblique
        !          18804:                Proportional    HX      Helvetica-BoldOblique
        !          18805:                Proportional    Hb      Helvetica-Narrow-Bold
        !          18806:                Proportional    Hi      Helvetica-Narrow-Oblique
        !          18807:                Proportional    Hr      Helvetica-Narrow
        !          18808:                Proportional    Hx      Helvetica-Narrow-BoldOblique
        !          18809:                Proportional    KB      Bookman-Demi
        !          18810:                Proportional    KI      Bookman-LightItalic
        !          18811:                Proportional    KR      Bookman-Light
        !          18812:                Proportional    KX      Bookman-DemiItalic
        !          18813:                Proportional    NB      NewCenturySchlbk-Bold
        !          18814:                Proportional    NI      NewCenturySchlbk-Italic
        !          18815:                Proportional    NR      NewCenturySchlbk-Roman
        !          18816:                Proportional    NX      NewCenturySchlbk-BoldItalic
        !          18817:                Proportional    PA      Palatino-Roman
        !          18818:                Proportional    PB      Palatino-Bold
        !          18819:                Proportional    PI      Palatino-Italic
        !          18820:                Proportional    PX      Palatino-BoldItalic
        !          18821:                Proportional    ZI      ZapfChancery-MediumItalic
        !          18822:                FixedWidth      C       Courier
        !          18823:                FixedWidth      CB      Courier-Bold
        !          18824:                FixedWidth      CI      Courier-Oblique
        !          18825:                FixedWidth      CO      Courier
        !          18826:                FixedWidth      CW      Courier
        !          18827:                FixedWidth      CX      Courier-BoldOblique
        !          18828:                Dingbats        ZD      ZapfDingbats
        !          18829:                Greek           GR      Symbol
        !          18830:                Symbol          S       Symbol
        !          18831:                Special         S1      Times-Roman
        !          18832:                Description     DESC    ---
        !          18833:        //End of BuiltinTables
        !          18834: }
        !          18835: 
        !          18836: #
        !          18837: # AllTables prints the complete list of builtin font names.
        !          18838: #
        !          18839: 
        !          18840: AllTables() {
        !          18841:        BuiltinTables | awk '{print $2}'
        !          18842: }
        !          18843: 
        !          18844: #
        !          18845: # Charset functions generate keyword/value pairs (as PostScript objects)
        !          18846: # that describe the character set available in a font. The keyword is a
        !          18847: # PostScript string that represents troff's name for the character. The
        !          18848: # value is usually the literal name (i.e. begins with a /) assigned to
        !          18849: # the character in the PostScript font. The value can also be an integer
        !          18850: # or a PostScript string. An integer value is used as an index in the
        !          18851: # current font's Encoding array. A string value is returned to the host
        !          18852: # unchanged when the entry for the character is constructed. Entries that
        !          18853: # have (") as their value are synonyms for the preceeding character.
        !          18854: #
        !          18855: 
        !          18856: StandardCharset() {
        !          18857:        cat <<-'//End of StandardCharset'
        !          18858:                (!)     /exclam
        !          18859:                (")     /quotedbl
        !          18860:                (#)     /numbersign
        !          18861:                ($)     /dollar
        !          18862:                (%)     /percent
        !          18863:                (&)     /ampersand
        !          18864:                (')     /quoteright
        !          18865:                (\()    /parenleft
        !          18866:                (\))    /parenright
        !          18867:                (*)     /asterisk
        !          18868:                (+)     /plus
        !          18869:                (,)     /comma
        !          18870:                (hy)    /hyphen
        !          18871:                (-)     (")                     % synonym
        !          18872:                (.)     /period
        !          18873:                (/)     /slash
        !          18874:                (0)     /zero
        !          18875:                (1)     /one
        !          18876:                (2)     /two
        !          18877:                (3)     /three
        !          18878:                (4)     /four
        !          18879:                (5)     /five
        !          18880:                (6)     /six
        !          18881:                (7)     /seven
        !          18882:                (8)     /eight
        !          18883:                (9)     /nine
        !          18884:                (:)     /colon
        !          18885:                (;)     /semicolon
        !          18886:                (<)     /less
        !          18887:                (=)     /equal
        !          18888:                (>)     /greater
        !          18889:                (?)     /question
        !          18890:                (@)     /at
        !          18891:                (A)     /A
        !          18892:                (B)     /B
        !          18893:                (C)     /C
        !          18894:                (D)     /D
        !          18895:                (E)     /E
        !          18896:                (F)     /F
        !          18897:                (G)     /G
        !          18898:                (H)     /H
        !          18899:                (I)     /I
        !          18900:                (J)     /J
        !          18901:                (K)     /K
        !          18902:                (L)     /L
        !          18903:                (M)     /M
        !          18904:                (N)     /N
        !          18905:                (O)     /O
        !          18906:                (P)     /P
        !          18907:                (Q)     /Q
        !          18908:                (R)     /R
        !          18909:                (S)     /S
        !          18910:                (T)     /T
        !          18911:                (U)     /U
        !          18912:                (V)     /V
        !          18913:                (W)     /W
        !          18914:                (X)     /X
        !          18915:                (Y)     /Y
        !          18916:                (Z)     /Z
        !          18917:                ([)     /bracketleft
        !          18918:                (\\)    /backslash
        !          18919:                (])     /bracketright
        !          18920:                (^)     /asciicircum
        !          18921:                (_)     /underscore
        !          18922:                (`)     /quoteleft
        !          18923:                (a)     /a
        !          18924:                (b)     /b
        !          18925:                (c)     /c
        !          18926:                (d)     /d
        !          18927:                (e)     /e
        !          18928:                (f)     /f
        !          18929:                (g)     /g
        !          18930:                (h)     /h
        !          18931:                (i)     /i
        !          18932:                (j)     /j
        !          18933:                (k)     /k
        !          18934:                (l)     /l
        !          18935:                (m)     /m
        !          18936:                (n)     /n
        !          18937:                (o)     /o
        !          18938:                (p)     /p
        !          18939:                (q)     /q
        !          18940:                (r)     /r
        !          18941:                (s)     /s
        !          18942:                (t)     /t
        !          18943:                (u)     /u
        !          18944:                (v)     /v
        !          18945:                (w)     /w
        !          18946:                (x)     /x
        !          18947:                (y)     /y
        !          18948:                (z)     /z
        !          18949:                ({)     /braceleft
        !          18950:                (|)     /bar
        !          18951:                (})     /braceright
        !          18952:                (~)     /asciitilde
        !          18953:                (---)   /exclamdown
        !          18954:                (ct)    /cent
        !          18955:                (ps)    /sterling
        !          18956:                (fr)    /fraction
        !          18957:                (yn)    /yen
        !          18958:                (fn)    /florin
        !          18959:                (sc)    /section
        !          18960:                (cr)    /currency
        !          18961:                (---)   /quotesingle
        !          18962:                (``)    /quotedblleft
        !          18963:                (---)   /guillemotleft
        !          18964:                (---)   /guilsinglleft
        !          18965:                (---)   /guilsinglright
        !          18966:                (fi)    /fi
        !          18967:                (fl)    /fl
        !          18968:                (en)    /endash
        !          18969:                (\\-)   (")
        !          18970:                (dg)    /dagger
        !          18971:                (dd)    /daggerdbl
        !          18972:                (---)   /periodcentered
        !          18973:                (pg)    /paragraph
        !          18974:                (---)   /bullet
        !          18975:                (---)   /quotesinglbase
        !          18976:                (---)   /quotedblbase
        !          18977:                ('')    /quotedblright
        !          18978:                (---)   /guillemotright
        !          18979:                (---)   /ellipsis
        !          18980:                (---)   /perthousand
        !          18981:                (---)   /questiondown
        !          18982:                (ga)    /grave
        !          18983:                (\\`)   (")
        !          18984:                (aa)    /acute
        !          18985:                (\\')   (")
        !          18986:                (^a)    /circumflex
        !          18987:                (~a)    /tilde
        !          18988:                (-a)    /macron
        !          18989:                (Ua)    /breve
        !          18990:                (.a)    /dotaccent
        !          18991:                (:a)    /dieresis
        !          18992:                (oa)    /ring
        !          18993:                (,a)    /cedilla
        !          18994:                ("a)    /hungarumlaut
        !          18995:                (Ca)    /ogonek
        !          18996:                (va)    /caron
        !          18997:                (em)    /emdash
        !          18998:                (---)   /AE
        !          18999:                (---)   /ordfeminine
        !          19000:                (---)   /Lslash
        !          19001:                (---)   /Oslash
        !          19002:                (---)   /OE
        !          19003:                (---)   /ordmasculine
        !          19004:                (---)   /ae
        !          19005:                (---)   /dotlessi
        !          19006:                (---)   /lslash
        !          19007:                (---)   /oslash
        !          19008:                (---)   /oe
        !          19009:                (---)   /germandbls
        !          19010:        //End of StandardCharset
        !          19011: }
        !          19012: 
        !          19013: SymbolCharset() {
        !          19014:        cat <<-'//End of SymbolCharset'
        !          19015:                (---)   /exclam
        !          19016:                (fa)    /universal
        !          19017:                (---)   /numbersign
        !          19018:                (te)    /existential
        !          19019:                (---)   /percent
        !          19020:                (---)   /ampersand
        !          19021:                (st)    /suchthat
        !          19022:                (---)   /parenleft
        !          19023:                (---)   /parenright
        !          19024:                (**)    /asteriskmath
        !          19025:                (pl)    /plus
        !          19026:                (---)   /comma
        !          19027:                (mi)    /minus
        !          19028:                (---)   /period
        !          19029:                (sl)    /slash
        !          19030:                (---)   /zero
        !          19031:                (---)   /one
        !          19032:                (---)   /two
        !          19033:                (---)   /three
        !          19034:                (---)   /four
        !          19035:                (---)   /five
        !          19036:                (---)   /six
        !          19037:                (---)   /seven
        !          19038:                (---)   /eight
        !          19039:                (---)   /nine
        !          19040:                (---)   /colon
        !          19041:                (---)   /semicolon
        !          19042:                (<)     /less
        !          19043:                (eq)    /equal
        !          19044:                (>)     /greater
        !          19045:                (---)   /question
        !          19046:                (cg)    /congruent
        !          19047:                (*A)    /Alpha
        !          19048:                (*B)    /Beta
        !          19049:                (*X)    /Chi
        !          19050:                (*D)    /Delta
        !          19051:                (*E)    /Epsilon
        !          19052:                (*F)    /Phi
        !          19053:                (*G)    /Gamma
        !          19054:                (*Y)    /Eta
        !          19055:                (*I)    /Iota
        !          19056:                (---)   /theta1
        !          19057:                (*K)    /Kappa
        !          19058:                (*L)    /Lambda
        !          19059:                (*M)    /Mu
        !          19060:                (*N)    /Nu
        !          19061:                (*O)    /Omicron
        !          19062:                (*P)    /Pi
        !          19063:                (*H)    /Theta
        !          19064:                (*R)    /Rho
        !          19065:                (*S)    /Sigma
        !          19066:                (*T)    /Tau
        !          19067:                (*U)    /Upsilon
        !          19068:                (ts)    /sigma1
        !          19069:                (*W)    /Omega
        !          19070:                (*C)    /Xi
        !          19071:                (*Q)    /Psi
        !          19072:                (*Z)    /Zeta
        !          19073:                (---)   /bracketleft
        !          19074:                (tf)    /therefore
        !          19075:                (---)   /bracketright
        !          19076:                (pp)    /perpendicular
        !          19077:                (ul)    /underscore
        !          19078:                (_)     (")                     % synonym
        !          19079:                (rn)    /radicalex
        !          19080:                (*a)    /alpha
        !          19081:                (*b)    /beta
        !          19082:                (*x)    /chi
        !          19083:                (*d)    /delta
        !          19084:                (*e)    /epsilon
        !          19085:                (*f)    /phi
        !          19086:                (*g)    /gamma
        !          19087:                (*y)    /eta
        !          19088:                (*i)    /iota
        !          19089:                (---)   /phi1
        !          19090:                (*k)    /kappa
        !          19091:                (*l)    /lambda
        !          19092:                (*m)    /mu
        !          19093:                (*n)    /nu
        !          19094:                (*o)    /omicron
        !          19095:                (*p)    /pi
        !          19096:                (*h)    /theta
        !          19097:                (*r)    /rho
        !          19098:                (*s)    /sigma
        !          19099:                (*t)    /tau
        !          19100:                (*u)    /upsilon
        !          19101:                (---)   /omega1
        !          19102:                (*w)    /omega
        !          19103:                (*c)    /xi
        !          19104:                (*q)    /psi
        !          19105:                (*z)    /zeta
        !          19106:                (---)   /braceleft
        !          19107:                (or)    /bar
        !          19108:                (---)   /braceright
        !          19109:                (ap)    /similar
        !          19110:                (---)   /Upsilon1
        !          19111:                (fm)    /minute
        !          19112:                (<=)    /lessequal
        !          19113:                (---)   /fraction
        !          19114:                (if)    /infinity
        !          19115:                (---)   /florin
        !          19116:                (---)   /club
        !          19117:                (---)   /diamond
        !          19118:                (---)   /heart
        !          19119:                (---)   /spade
        !          19120:                (ab)    /arrowboth
        !          19121:                (<-)    /arrowleft
        !          19122:                (ua)    /arrowup
        !          19123:                (->)    /arrowright
        !          19124:                (da)    /arrowdown
        !          19125:                (de)    /degree
        !          19126:                (+-)    /plusminus
        !          19127:                (---)   /second
        !          19128:                (>=)    /greaterequal
        !          19129:                (mu)    /multiply
        !          19130:                (pt)    /proportional
        !          19131:                (pd)    /partialdiff
        !          19132:                (bu)    /bullet
        !          19133:                (di)    /divide
        !          19134:                (!=)    /notequal
        !          19135:                (==)    /equivalence
        !          19136:                (~~)    /approxequal
        !          19137:                (el)    /ellipsis
        !          19138:                (av)    /arrowvertex
        !          19139:                (ah)    /arrowhorizex
        !          19140:                (CR)    /carriagereturn
        !          19141:                (af)    /aleph
        !          19142:                (If)    /Ifraktur
        !          19143:                (Rf)    /Rfraktur
        !          19144:                (ws)    /weierstrass
        !          19145:                (Ox)    /circlemultiply
        !          19146:                (O+)    /circleplus
        !          19147:                (es)    /emptyset
        !          19148:                (ca)    /intersection
        !          19149:                (cu)    /union
        !          19150:                (sp)    /propersuperset
        !          19151:                (ip)    /reflexsuperset
        !          19152:                (!b)    /notsubset
        !          19153:                (sb)    /propersubset
        !          19154:                (ib)    /reflexsubset
        !          19155:                (mo)    /element
        !          19156:                (!m)    /notelement
        !          19157:                (an)    /angle
        !          19158:                (gr)    /gradient
        !          19159:                (rg)    /registerserif
        !          19160:                (co)    /copyrightserif
        !          19161:                (tm)    /trademarkserif
        !          19162:                (---)   /product
        !          19163:                (sr)    /radical
        !          19164:                (c.)    /dotmath
        !          19165:                (no)    /logicalnot
        !          19166:                (l&)    /logicaland
        !          19167:                (l|)    /logicalor
        !          19168:                (---)   /arrowdblboth
        !          19169:                (---)   /arrowdblleft
        !          19170:                (---)   /arrowdblup
        !          19171:                (---)   /arrowdblright
        !          19172:                (---)   /arrowdbldown
        !          19173:                (lz)    /lozenge
        !          19174:                (b<)    /angleleft
        !          19175:                (RG)    /registersans
        !          19176:                (CO)    /copyrightsans
        !          19177:                (TM)    /trademarksans
        !          19178:                (---)   /summation
        !          19179:                (LT)    /parenlefttp
        !          19180:                (br)    /parenleftex
        !          19181:                (LX)    (")                     % synonym
        !          19182:                (LB)    /parenleftbt
        !          19183:                (lc)    /bracketlefttp
        !          19184:                (lx)    /bracketleftex
        !          19185:                (lf)    /bracketleftbt
        !          19186:                (lt)    /bracelefttp
        !          19187:                (lk)    /braceleftmid
        !          19188:                (lb)    /braceleftbt
        !          19189:                (bv)    /braceex
        !          19190:                (|)     (")                     % synonym
        !          19191:                (b>)    /angleright
        !          19192:                (is)    /integral
        !          19193:                (---)   /integraltp
        !          19194:                (---)   /integralex
        !          19195:                (---)   /integralbt
        !          19196:                (RT)    /parenrighttp
        !          19197:                (RX)    /parenrightex
        !          19198:                (RB)    /parenrightbt
        !          19199:                (rc)    /bracketrighttp
        !          19200:                (rx)    /bracketrightex
        !          19201:                (rf)    /bracketrightbt
        !          19202:                (rt)    /bracerighttp
        !          19203:                (rk)    /bracerightmid
        !          19204:                (rb)    /bracerightbt
        !          19205:                (~=)    (55     0       1)      % charlib
        !          19206:        //End of SymbolCharset
        !          19207: }
        !          19208: 
        !          19209: SpecialCharset() {
        !          19210:        cat <<-'//End of SpecialCharset'
        !          19211:                (ru)    /underscore
        !          19212:                (ff)    (60     2       1)      % charlib
        !          19213:                (Fi)    (84     2       1)      % charlib
        !          19214:                (Fl)    (84     2       1)      % charlib
        !          19215:                (14)    (75     2       1)      % charlib
        !          19216:                (12)    (75     2       1)      % charlib
        !          19217:                (34)    (75     2       1)      % charlib
        !          19218:                (bx)    (50     2       1)      % charlib
        !          19219:                (ob)    (38     2       1)      % charlib
        !          19220:                (ci)    (75     0       1)      % charlib
        !          19221:                (sq)    (50     2       1)      % charlib
        !          19222:                (Sl)    (50     2       1)      % charlib
        !          19223:                (L1)    (110    1       2)      % charlib
        !          19224:                (LA)    (110    1       2)      % charlib
        !          19225:                (LV)    (110    3       1)      % charlib
        !          19226:                (LH)    (210    1       1)      % charlib
        !          19227:                (lh)    (100    0       1)      % charlib
        !          19228:                (rh)    (100    0       1)      % charlib
        !          19229:                (lH)    (100    0       1)      % charlib
        !          19230:                (rH)    (100    0       1)      % charlib
        !          19231:                (PC)    (220    2       1)      % charlib
        !          19232:                (DG)    (185    2       1)      % charlib
        !          19233:        //End of SpecialCharset
        !          19234: }
        !          19235: 
        !          19236: DingbatsCharset() {
        !          19237:        cat <<-'//End of DingbatsCharset'
        !          19238:                (!)     33
        !          19239:                (")     34
        !          19240:                (#)     35
        !          19241:                ($)     36
        !          19242:                (%)     37
        !          19243:                (&)     38
        !          19244:                (')     39
        !          19245:                (\()    40
        !          19246:                (\))    41
        !          19247:                (*)     42
        !          19248:                (+)     43
        !          19249:                (,)     44
        !          19250:                (-)     45
        !          19251:                (.)     46
        !          19252:                (/)     47
        !          19253:                (0)     48
        !          19254:                (1)     49
        !          19255:                (2)     50
        !          19256:                (3)     51
        !          19257:                (4)     52
        !          19258:                (5)     53
        !          19259:                (6)     54
        !          19260:                (7)     55
        !          19261:                (8)     56
        !          19262:                (9)     57
        !          19263:                (:)     58
        !          19264:                (;)     59
        !          19265:                (<)     60
        !          19266:                (=)     61
        !          19267:                (>)     62
        !          19268:                (?)     63
        !          19269:                (@)     64
        !          19270:                (A)     65
        !          19271:                (B)     66
        !          19272:                (C)     67
        !          19273:                (D)     68
        !          19274:                (E)     69
        !          19275:                (F)     70
        !          19276:                (G)     71
        !          19277:                (H)     72
        !          19278:                (I)     73
        !          19279:                (J)     74
        !          19280:                (K)     75
        !          19281:                (L)     76
        !          19282:                (M)     77
        !          19283:                (N)     78
        !          19284:                (O)     79
        !          19285:                (P)     80
        !          19286:                (Q)     81
        !          19287:                (R)     82
        !          19288:                (S)     83
        !          19289:                (T)     84
        !          19290:                (U)     85
        !          19291:                (V)     86
        !          19292:                (W)     87
        !          19293:                (X)     88
        !          19294:                (Y)     89
        !          19295:                (Z)     90
        !          19296:                ([)     91
        !          19297:                (\\)    92
        !          19298:                (])     93
        !          19299:                (^)     94
        !          19300:                (_)     95
        !          19301:                (`)     96
        !          19302:                (a)     97
        !          19303:                (b)     98
        !          19304:                (c)     99
        !          19305:                (d)     100
        !          19306:                (e)     101
        !          19307:                (f)     102
        !          19308:                (g)     103
        !          19309:                (h)     104
        !          19310:                (i)     105
        !          19311:                (j)     106
        !          19312:                (k)     107
        !          19313:                (l)     108
        !          19314:                (m)     109
        !          19315:                (n)     110
        !          19316:                (o)     111
        !          19317:                (p)     112
        !          19318:                (q)     113
        !          19319:                (r)     114
        !          19320:                (s)     115
        !          19321:                (t)     116
        !          19322:                (u)     117
        !          19323:                (v)     118
        !          19324:                (w)     119
        !          19325:                (x)     120
        !          19326:                (y)     121
        !          19327:                (z)     122
        !          19328:                ({)     123
        !          19329:                (|)     124
        !          19330:                (})     125
        !          19331:                (~)     126
        !          19332:                (hy)    161
        !          19333:                (em)    162
        !          19334:                (de)    163
        !          19335:                (\\-)   164
        !          19336:                (en)    165
        !          19337:                (ff)    166
        !          19338:                (fi)    167
        !          19339:                (fl)    168
        !          19340:                (Fi)    169
        !          19341:                (Fl)    170
        !          19342:                (fm)    171
        !          19343:                (ru)    172
        !          19344:                (dg)    173
        !          19345:                (bu)    174
        !          19346:                (14)    175
        !          19347:                (34)    176
        !          19348:                (12)    177
        !          19349:                (ct)    178
        !          19350:                (rg)    179
        !          19351:                (sq)    180
        !          19352:                (sl)    181
        !          19353:                (ul)    182
        !          19354:                (or)    183
        !          19355:                (no)    184
        !          19356:                (->)    185
        !          19357:                (<-)    186
        !          19358:                (da)    187
        !          19359:                (lh)    188
        !          19360:                (ua)    189
        !          19361:                (ab)    190
        !          19362:                (!b)    191
        !          19363:                (aa)    192
        !          19364:                (!m)    193
        !          19365:                (ga)    194
        !          19366:                (pl)    195
        !          19367:                (mi)    196
        !          19368:                (mu)    197
        !          19369:                (di)    198
        !          19370:                (eq)    199
        !          19371:                (==)    200
        !          19372:                (>=)    201
        !          19373:                (<=)    202
        !          19374:                (!=)    203
        !          19375:                (+-)    204
        !          19376:                (-+)    205
        !          19377:                (ap)    206
        !          19378:                (~=)    207
        !          19379:                (gr)    208
        !          19380:                (is)    209
        !          19381:                (pd)    210
        !          19382:                (if)    211
        !          19383:                (sr)    212
        !          19384:                (rn)    213
        !          19385:                (sb)    214
        !          19386:                (sp)    215
        !          19387:                (cu)    216
        !          19388:                (ca)    217
        !          19389:                (ib)    218
        !          19390:                (ip)    219
        !          19391:                (mo)    220
        !          19392:                (es)    221
        !          19393:                (sc)    222
        !          19394:                (dd)    223
        !          19395:                (lc)    224
        !          19396:                (rc)    225
        !          19397:                (lf)    226
        !          19398:                (rf)    227
        !          19399:                (bv)    228
        !          19400:                (**)    229
        !          19401:                (br)    230
        !          19402:                (ci)    231
        !          19403:                (ts)    232
        !          19404:                (co)    233
        !          19405:                (lt)    234
        !          19406:                (rt)    235
        !          19407:                (lb)    236
        !          19408:                (rb)    237
        !          19409:                (lk)    238
        !          19410:                (rk)    239
        !          19411:                (rh)    241
        !          19412:                (tm)    242
        !          19413:                (Sl)    243
        !          19414:                (ps)    244
        !          19415:                (cs)    245
        !          19416:                (cy)    246
        !          19417:                (as)    247
        !          19418:                (os)    248
        !          19419:                (=.)    249
        !          19420:                (ld)    250
        !          19421:                (rd)    251
        !          19422:                (le)    252
        !          19423:                (ge)    253
        !          19424:                (pp)    254
        !          19425:        //End of DingbatsCharset
        !          19426: }
        !          19427: 
        !          19428: #
        !          19429: # Generating functions output PostScript programs that build font width
        !          19430: # tables or a typesetter description file. Send the program to a printer
        !          19431: # and the complete table will come back on the serial port. All write on
        !          19432: # stdout and assume the prologue and other required PostScript files are
        !          19433: # all available.
        !          19434: #
        !          19435: 
        !          19436: Proportional() {
        !          19437:        echo "/unitwidth $UNITWIDTH def"
        !          19438:        echo "/resolution $RESOLUTION def"
        !          19439:        echo "/charset ["
        !          19440:                # Get <>_ and | from S. Use accents for ascii ^ and ~.
        !          19441:                StandardCharset | awk '
        !          19442:                        $1 == "(<)" && $2 == "/less" {$1 = "(---)"}
        !          19443:                        $1 == "(>)" && $2 == "/greater" {$1 = "(---)"}
        !          19444:                        $1 == "(_)" && $2 == "/underscore" {$1 = "(---)"}
        !          19445:                        $1 == "(|)" && $2 == "/bar" {$1 = "(---)"}
        !          19446:                        $1 == "(^)" && $2 == "/asciicircum" {$1 = "(---)"}
        !          19447:                        $1 == "(~)" && $2 == "/asciitilde" {$1 = "(---)"}
        !          19448:                        {printf "%s\t%s\n", $1, $2}
        !          19449:                        $2 == "/circumflex" {printf "(^)\t(\")\n"}
        !          19450:                        $2 == "/tilde" {printf "(~)\t(\")\n"}
        !          19451:                '
        !          19452:        echo "] def"
        !          19453: 
        !          19454:        echo "/$2 SelectFont"
        !          19455:        echo "(opO) SetAscender"
        !          19456: 
        !          19457:        echo "(name $1\\\\n) Print"
        !          19458:        echo "(fontname $2\\\\n) Print"
        !          19459:        echo "/$1 NamedInPrologue"
        !          19460:        echo "(ligatures fi fl 0\\\\n) Print"
        !          19461:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
        !          19462:        echo "(charset\\\\n) Print"
        !          19463:        echo "BuildFontCharset"
        !          19464: }
        !          19465: 
        !          19466: FixedWidth() {
        !          19467:        echo "/unitwidth $UNITWIDTH def"
        !          19468:        echo "/resolution $RESOLUTION def"
        !          19469:        echo "/charset ["
        !          19470:                # awk is not important - it's only here for compatibility
        !          19471:                StandardCharset | awk '
        !          19472:                        $1 == "(fi)" || $1 == "(fl)" {next}
        !          19473:                        {printf "%s\t%s\n", $1, $2}
        !          19474:                        $2 == "/circumflex" {printf "(^)\t(\")\n"}
        !          19475:                        $2 == "/tilde" {printf "(~)\t(\")\n"}
        !          19476:        '
        !          19477:        echo "] def"
        !          19478: 
        !          19479:        echo "/$2 SelectFont"
        !          19480:        echo "(opO) SetAscender"
        !          19481: 
        !          19482:        echo "(name $1\\\\n) Print"
        !          19483:        echo "(fontname $2\\\\n) Print"
        !          19484:        echo "/$1 NamedInPrologue"
        !          19485:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
        !          19486:        echo "(charset\\\\n) Print"
        !          19487:        echo "BuildFontCharset"
        !          19488: }
        !          19489: 
        !          19490: Dingbats() {
        !          19491:        echo "/unitwidth $UNITWIDTH def"
        !          19492:        echo "/resolution $RESOLUTION def"
        !          19493:        echo "/charset ["
        !          19494:                DingbatsCharset
        !          19495:        echo "] def"
        !          19496: 
        !          19497:        echo "/$2 SelectFont"
        !          19498:        echo "(   ) SetAscender"
        !          19499: 
        !          19500:        echo "(name $1\\\\n) Print"
        !          19501:        echo "(fontname $2\\\\n) Print"
        !          19502:        echo "/$1 NamedInPrologue"
        !          19503:        echo "(charset\\\\n) Print"
        !          19504:        echo "BuildFontCharset"
        !          19505: }
        !          19506: 
        !          19507: Greek() {
        !          19508:        echo "/unitwidth $UNITWIDTH def"
        !          19509:        echo "/resolution $RESOLUTION def"
        !          19510:        echo "/charset ["
        !          19511:                SymbolCharset | awk '$1 ~ /\(\*[a-zA-Z]\)/'
        !          19512:        echo "] def"
        !          19513: 
        !          19514:        echo "/$2 SelectFont"
        !          19515:        echo "(orO) SetAscender"
        !          19516: 
        !          19517:        echo "(name $1\\\\n) Print"
        !          19518:        echo "(fontname $2\\\\n) Print"
        !          19519:        echo "/$1 NamedInPrologue"
        !          19520:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
        !          19521:        echo "(charset\\\\n) Print"
        !          19522:        echo "BuildFontCharset"
        !          19523: }
        !          19524: 
        !          19525: Symbol() {
        !          19526:        echo "/unitwidth $UNITWIDTH def"
        !          19527:        echo "/resolution $RESOLUTION def"
        !          19528:        echo "/charset ["
        !          19529:                SymbolCharset
        !          19530:        echo "] def"
        !          19531: 
        !          19532:        echo "ChangeMetrics"
        !          19533:        echo "/S SelectFont"
        !          19534:        echo "(orO) SetAscender"
        !          19535: 
        !          19536:        echo "(name $1\\\\n) Print"
        !          19537:        echo "(fontname $2\\\\n) Print"
        !          19538:        echo "/$1 NamedInPrologue"
        !          19539:        echo "(special\\\\n) Print"
        !          19540:        echo "(charset\\\\n) Print"
        !          19541:        echo "BuildFontCharset"
        !          19542: }
        !          19543: 
        !          19544: Special() {
        !          19545:        echo "/unitwidth $UNITWIDTH def"
        !          19546:        echo "/resolution $RESOLUTION def"
        !          19547:        echo "/charset ["
        !          19548:                SpecialCharset
        !          19549:        echo "] def"
        !          19550: 
        !          19551:        echo "ChangeMetrics"
        !          19552:        echo "/S1 SelectFont"
        !          19553: 
        !          19554:        echo "(# Times-Roman special font\\\\n) Print"
        !          19555:        echo "(name $1\\\\n) Print"
        !          19556:        echo "(fontname $2\\\\n) Print"
        !          19557:        echo "/$1 NamedInPrologue"
        !          19558:        echo "(special\\\\n) Print"
        !          19559:        echo "(charset\\\\n) Print"
        !          19560:        echo "BuildFontCharset"
        !          19561: }
        !          19562: 
        !          19563: #
        !          19564: # The DESC file doesn't have to be built on a printer. It's only here for
        !          19565: # consistency.
        !          19566: #
        !          19567: 
        !          19568: Description() {
        !          19569:        echo "/charset ["       # awk - so the stack doesn't overflow
        !          19570:                StandardCharset | awk '$1 != "(---)" {print $1}'
        !          19571:                SymbolCharset | awk '$1 != "(---)" {print $1}'
        !          19572:                SpecialCharset | awk '$1 != "(---)" {print $1}'
        !          19573:                DingbatsCharset | awk '$1 != "(---)" {print $1}'
        !          19574:        echo "] def"
        !          19575: 
        !          19576:        cat <<-//DESC
        !          19577:                (#Device Description - original PostScript character set
        !          19578: 
        !          19579:                PDL PostScript
        !          19580: 
        !          19581:                fonts 10 R I B BI CW H HI HB S1 S
        !          19582:                sizes 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
        !          19583:                23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 40 42 44 46
        !          19584:                48 50 52 54 56 58 60 64 68 72 78 84 90 96 100 105 110 115
        !          19585:                120 125 130 135 140 145 150 155 160 0
        !          19586: 
        !          19587:                res $RESOLUTION
        !          19588:                hor 1
        !          19589:                vert 1
        !          19590:                unitwidth $UNITWIDTH
        !          19591: 
        !          19592:                ) Print
        !          19593:        //DESC
        !          19594:        echo "(charset\\\\n) Print"
        !          19595:        echo "BuildDescCharset"
        !          19596:        echo "(\\\\n) Print"
        !          19597: }
        !          19598: 
        !          19599: 0707070014231217271006440057030057030000010643470522627501400003200000000111post.src/devpost/LINKFILE#
        !          19600: # Creates missing width tables from existing ones.
        !          19601: #
        !          19602: 
        !          19603: rm -f HM
        !          19604: cp H HM
        !          19605: 0707070014231123360407550057030057030000030440450522633073400002300000000000post.src/devLatin10707070014231123371006440057030057030000010440600522627501500003500000053076post.src/devLatin1/shell.lib#
        !          19606: # Shell library - for building devLatin1 tables.
        !          19607: #
        !          19608: # The full ISO Latin1 alphabet appeared in Adobe's interpreter sometime
        !          19609: # around Version 50.0. Prior to that ROM resident Type 1 text fonts were
        !          19610: # missing 18 characters that are now part of the Latin1 standard. Width
        !          19611: # tables will not build on printers that lack full Latin1 support. Error
        !          19612: # message will likely reflect a missing ISOLatin1Encoding array.
        !          19613: #
        !          19614: 
        !          19615: RESOLUTION=720
        !          19616: UNITWIDTH=10
        !          19617: 
        !          19618: OCTALESCAPES=${OCTALESCAPES:-160}      # <= code means add \0ddd names
        !          19619: DOWNLOADVECTOR=FALSE                   # TRUE can mean incomplete tables
        !          19620: 
        !          19621: #
        !          19622: # BuiltinTables returns command lines that generate PostScript programs
        !          19623: # for building a typesetter description file and font width tables for
        !          19624: # a relatively standard collection of fonts. Use awk to select a command
        !          19625: # line or modify an existing command to build a width table for a new
        !          19626: # font.
        !          19627: #
        !          19628: 
        !          19629: BuiltinTables() {
        !          19630:        cat <<-'//End of BuiltinTables'
        !          19631:                Proportional    R       Times-Roman
        !          19632:                Proportional    I       Times-Italic
        !          19633:                Proportional    B       Times-Bold
        !          19634:                Proportional    BI      Times-BoldItalic
        !          19635:                Proportional    AB      AvantGarde-Demi
        !          19636:                Proportional    AI      AvantGarde-BookOblique
        !          19637:                Proportional    AR      AvantGarde-Book
        !          19638:                Proportional    AX      AvantGarde-DemiOblique
        !          19639:                Proportional    H       Helvetica
        !          19640:                Proportional    HB      Helvetica-Bold
        !          19641:                Proportional    HI      Helvetica-Oblique
        !          19642:                Proportional    HX      Helvetica-BoldOblique
        !          19643:                Proportional    Hb      Helvetica-Narrow-Bold
        !          19644:                Proportional    Hi      Helvetica-Narrow-Oblique
        !          19645:                Proportional    Hr      Helvetica-Narrow
        !          19646:                Proportional    Hx      Helvetica-Narrow-BoldOblique
        !          19647:                Proportional    KB      Bookman-Demi
        !          19648:                Proportional    KI      Bookman-LightItalic
        !          19649:                Proportional    KR      Bookman-Light
        !          19650:                Proportional    KX      Bookman-DemiItalic
        !          19651:                Proportional    NB      NewCenturySchlbk-Bold
        !          19652:                Proportional    NI      NewCenturySchlbk-Italic
        !          19653:                Proportional    NR      NewCenturySchlbk-Roman
        !          19654:                Proportional    NX      NewCenturySchlbk-BoldItalic
        !          19655:                Proportional    PA      Palatino-Roman
        !          19656:                Proportional    PB      Palatino-Bold
        !          19657:                Proportional    PI      Palatino-Italic
        !          19658:                Proportional    PX      Palatino-BoldItalic
        !          19659:                Proportional    ZI      ZapfChancery-MediumItalic
        !          19660:                FixedWidth      C       Courier
        !          19661:                FixedWidth      CB      Courier-Bold
        !          19662:                FixedWidth      CI      Courier-Oblique
        !          19663:                FixedWidth      CO      Courier
        !          19664:                FixedWidth      CW      Courier
        !          19665:                FixedWidth      CX      Courier-BoldOblique
        !          19666:                Dingbats        ZD      ZapfDingbats
        !          19667:                Greek           GR      Symbol
        !          19668:                Symbol          S       Symbol
        !          19669:                Special         S1      Times-Roman
        !          19670:                Description     DESC    ---
        !          19671:        //End of BuiltinTables
        !          19672: }
        !          19673: 
        !          19674: #
        !          19675: # AllTables prints the complete list of builtin font names.
        !          19676: #
        !          19677: 
        !          19678: AllTables() {
        !          19679:        BuiltinTables | awk '{print $2}'
        !          19680: }
        !          19681: 
        !          19682: #
        !          19683: # Charset functions generate keyword/value pairs (as PostScript objects)
        !          19684: # that describe the character set available in a font. The keyword is a
        !          19685: # PostScript string that represents troff's name for the character. The
        !          19686: # value is usually the literal name (i.e. begins with a /) assigned to
        !          19687: # the character in the PostScript font. The value can also be an integer
        !          19688: # or a PostScript string. An integer value is used as an index in the
        !          19689: # current font's Encoding array. A string value is returned to the host
        !          19690: # unchanged when the entry for the character is constructed. Entries that
        !          19691: # have (") as their value are synonyms for the preceeding character.
        !          19692: #
        !          19693: # The 18 characters missing from ROM resident fonts on older printers are
        !          19694: # flagged with the PostScript comment "% missing".
        !          19695: #
        !          19696: 
        !          19697: StandardCharset() {
        !          19698:        cat <<-'//End of StandardCharset'
        !          19699:                (!)     /exclam
        !          19700:                (")     /quotedbl
        !          19701:                (dq)    (")                     % synonym
        !          19702:                (#)     /numbersign
        !          19703:                ($)     /dollar
        !          19704:                (%)     /percent
        !          19705:                (&)     /ampersand
        !          19706:                (')     /quoteright
        !          19707:                (\()    /parenleft
        !          19708:                (\))    /parenright
        !          19709:                (*)     /asterisk
        !          19710:                (+)     /plus
        !          19711:                (,)     /comma
        !          19712:                (-)     /hyphen                 % changed from minus by request
        !          19713:                (.)     /period
        !          19714:                (/)     /slash
        !          19715:                (0)     /zero
        !          19716:                (1)     /one
        !          19717:                (2)     /two
        !          19718:                (3)     /three
        !          19719:                (4)     /four
        !          19720:                (5)     /five
        !          19721:                (6)     /six
        !          19722:                (7)     /seven
        !          19723:                (8)     /eight
        !          19724:                (9)     /nine
        !          19725:                (:)     /colon
        !          19726:                (;)     /semicolon
        !          19727:                (<)     /less
        !          19728:                (=)     /equal
        !          19729:                (>)     /greater
        !          19730:                (?)     /question
        !          19731:                (@)     /at
        !          19732:                (A)     /A
        !          19733:                (B)     /B
        !          19734:                (C)     /C
        !          19735:                (D)     /D
        !          19736:                (E)     /E
        !          19737:                (F)     /F
        !          19738:                (G)     /G
        !          19739:                (H)     /H
        !          19740:                (I)     /I
        !          19741:                (J)     /J
        !          19742:                (K)     /K
        !          19743:                (L)     /L
        !          19744:                (M)     /M
        !          19745:                (N)     /N
        !          19746:                (O)     /O
        !          19747:                (P)     /P
        !          19748:                (Q)     /Q
        !          19749:                (R)     /R
        !          19750:                (S)     /S
        !          19751:                (T)     /T
        !          19752:                (U)     /U
        !          19753:                (V)     /V
        !          19754:                (W)     /W
        !          19755:                (X)     /X
        !          19756:                (Y)     /Y
        !          19757:                (Z)     /Z
        !          19758:                ([)     /bracketleft
        !          19759:                (\\)    /backslash
        !          19760:                (bs)    (")                     % synonym
        !          19761:                (])     /bracketright
        !          19762:                (^)     /asciicircum
        !          19763:                (_)     /underscore
        !          19764:                (`)     /quoteleft
        !          19765:                (a)     /a
        !          19766:                (b)     /b
        !          19767:                (c)     /c
        !          19768:                (d)     /d
        !          19769:                (e)     /e
        !          19770:                (f)     /f
        !          19771:                (g)     /g
        !          19772:                (h)     /h
        !          19773:                (i)     /i
        !          19774:                (j)     /j
        !          19775:                (k)     /k
        !          19776:                (l)     /l
        !          19777:                (m)     /m
        !          19778:                (n)     /n
        !          19779:                (o)     /o
        !          19780:                (p)     /p
        !          19781:                (q)     /q
        !          19782:                (r)     /r
        !          19783:                (s)     /s
        !          19784:                (t)     /t
        !          19785:                (u)     /u
        !          19786:                (v)     /v
        !          19787:                (w)     /w
        !          19788:                (x)     /x
        !          19789:                (y)     /y
        !          19790:                (z)     /z
        !          19791:                ({)     /braceleft
        !          19792:                (|)     /bar
        !          19793:                (})     /braceright
        !          19794:                (~)     /asciitilde
        !          19795:                (\\`)   /grave                  % devpost character
        !          19796:                (ga)    (")                     % synonym
        !          19797:                (!!)    /exclamdown
        !          19798:                (c|)    /cent
        !          19799:                (ct)    (")                     % devpost synonym
        !          19800:                (L-)    /sterling
        !          19801:                (ps)    (")                     % devpost synonym
        !          19802:                (xo)    /currency
        !          19803:                (cr)    (")                     % devpost synonym
        !          19804:                (Y-)    /yen
        !          19805:                (yn)    (")                     % devpost synonym
        !          19806:                (||)    /brokenbar              % missing
        !          19807:                (so)    /section
        !          19808:                (sc)    (")                     % devpost synonym
        !          19809:                ("")    /dieresis
        !          19810:                (:a)    (")                     % devpost synonym
        !          19811:                (co)    /copyright
        !          19812:                (a_)    /ordfeminine
        !          19813:                (<<)    /guillemotleft
        !          19814:                (-,)    /logicalnot
        !          19815:                (hy)    /hyphen
        !          19816:                (--)    /minus
        !          19817:                (ro)    /registered
        !          19818:                (rg)    (")                     % devpost synonym
        !          19819:                (-^)    /macron
        !          19820:                (-a)    (")                     % devpost synonym
        !          19821:                (0^)    /degree                 % missing
        !          19822:                (+-)    /plusminus              % missing
        !          19823:                (2^)    /twosuperior            % missing
        !          19824:                (3^)    /threesuperior          % missing
        !          19825:                (\\')   /acute
        !          19826:                (aa)    (")                     % devpost synonym
        !          19827:                (/u)    /mu                     % missing
        !          19828:                (P!)    /paragraph
        !          19829:                (pg)    (")                     % devpost synonym
        !          19830:                (.^)    /periodcentered
        !          19831:                (,,)    /cedilla
        !          19832:                (,a)    (")                     % devpost synonym
        !          19833:                (1^)    /onesuperior            % missing
        !          19834:                (o_)    /ordmasculine
        !          19835:                (>>)    /guillemotright
        !          19836:                (14)    /onequarter             % missing
        !          19837:                (12)    /onehalf                % missing
        !          19838:                (34)    /threequarters          % missing
        !          19839:                (??)    /questiondown
        !          19840:                (A`)    /Agrave
        !          19841:                (A')    /Aacute
        !          19842:                (A^)    /Acircumflex
        !          19843:                (A~)    /Atilde
        !          19844:                (A")    /Adieresis
        !          19845:                (A*)    /Aring
        !          19846:                (AE)    /AE
        !          19847:                (C,)    /Ccedilla
        !          19848:                (E`)    /Egrave
        !          19849:                (E')    /Eacute
        !          19850:                (E^)    /Ecircumflex
        !          19851:                (E")    /Edieresis
        !          19852:                (I`)    /Igrave
        !          19853:                (I')    /Iacute
        !          19854:                (I^)    /Icircumflex
        !          19855:                (I")    /Idieresis
        !          19856:                (D-)    /Eth                    % missing
        !          19857:                (N~)    /Ntilde
        !          19858:                (O`)    /Ograve
        !          19859:                (O')    /Oacute
        !          19860:                (O^)    /Ocircumflex
        !          19861:                (O~)    /Otilde
        !          19862:                (O")    /Odieresis
        !          19863:                (xx)    /multiply               % missing
        !          19864:                (O/)    /Oslash
        !          19865:                (U`)    /Ugrave
        !          19866:                (U')    /Uacute
        !          19867:                (U^)    /Ucircumflex
        !          19868:                (U")    /Udieresis
        !          19869:                (Y')    /Yacute                 % missing
        !          19870:                (TH)    /Thorn                  % missing
        !          19871:                (ss)    /germandbls
        !          19872:                (a`)    /agrave
        !          19873:                (a')    /aacute
        !          19874:                (a^)    /acircumflex
        !          19875:                (a~)    /atilde
        !          19876:                (a")    /adieresis
        !          19877:                (a*)    /aring
        !          19878:                (ae)    /ae
        !          19879:                (c,)    /ccedilla
        !          19880:                (e`)    /egrave
        !          19881:                (e')    /eacute
        !          19882:                (e^)    /ecircumflex
        !          19883:                (e")    /edieresis
        !          19884:                (i`)    /igrave
        !          19885:                (i')    /iacute
        !          19886:                (i^)    /icircumflex
        !          19887:                (i")    /idieresis
        !          19888:                (d-)    /eth                    % missing
        !          19889:                (n~)    /ntilde
        !          19890:                (o`)    /ograve
        !          19891:                (o')    /oacute
        !          19892:                (o^)    /ocircumflex
        !          19893:                (o~)    /otilde
        !          19894:                (o")    /odieresis
        !          19895:                (-:)    /divide                 % missing
        !          19896:                (o/)    /oslash
        !          19897:                (u`)    /ugrave
        !          19898:                (u')    /uacute
        !          19899:                (u^)    /ucircumflex
        !          19900:                (u")    /udieresis
        !          19901:                (y')    /yacute                 % missing
        !          19902:                (th)    /thorn                  % missing
        !          19903:                (y")    /ydieresis
        !          19904:                (^a)    /circumflex             % devpost accent
        !          19905:                (~a)    /tilde                  % devpost accent
        !          19906:                (Ua)    /breve                  % devpost accent
        !          19907:                (.a)    /dotaccent              % devpost accent
        !          19908:                (oa)    /ring                   % devpost accent
        !          19909:                ("a)    /hungarumlaut           % devpost accent
        !          19910:                (Ca)    /ogonek                 % devpost accent
        !          19911:                (va)    /caron                  % devpost accent
        !          19912:        //End of StandardCharset
        !          19913: }
        !          19914: 
        !          19915: #
        !          19916: # DingbatsCharset guarantees changes in StandardCharset don't show up in ZD.
        !          19917: #
        !          19918: 
        !          19919: DingbatsCharset() {
        !          19920:        cat <<-'//End of DingbatsCharset'
        !          19921:                (!)     /exclam
        !          19922:                (")     /quotedbl
        !          19923:                (#)     /numbersign
        !          19924:                ($)     /dollar
        !          19925:                (%)     /percent
        !          19926:                (&)     /ampersand
        !          19927:                (')     /quoteright
        !          19928:                (\()    /parenleft
        !          19929:                (\))    /parenright
        !          19930:                (*)     /asterisk
        !          19931:                (+)     /plus
        !          19932:                (,)     /comma
        !          19933:                (-)     /minus          % also hyphen in devpost
        !          19934:                (.)     /period
        !          19935:                (/)     /slash
        !          19936:                (0)     /zero
        !          19937:                (1)     /one
        !          19938:                (2)     /two
        !          19939:                (3)     /three
        !          19940:                (4)     /four
        !          19941:                (5)     /five
        !          19942:                (6)     /six
        !          19943:                (7)     /seven
        !          19944:                (8)     /eight
        !          19945:                (9)     /nine
        !          19946:                (:)     /colon
        !          19947:                (;)     /semicolon
        !          19948:                (<)     /less
        !          19949:                (=)     /equal
        !          19950:                (>)     /greater
        !          19951:                (?)     /question
        !          19952:                (@)     /at
        !          19953:                (A)     /A
        !          19954:                (B)     /B
        !          19955:                (C)     /C
        !          19956:                (D)     /D
        !          19957:                (E)     /E
        !          19958:                (F)     /F
        !          19959:                (G)     /G
        !          19960:                (H)     /H
        !          19961:                (I)     /I
        !          19962:                (J)     /J
        !          19963:                (K)     /K
        !          19964:                (L)     /L
        !          19965:                (M)     /M
        !          19966:                (N)     /N
        !          19967:                (O)     /O
        !          19968:                (P)     /P
        !          19969:                (Q)     /Q
        !          19970:                (R)     /R
        !          19971:                (S)     /S
        !          19972:                (T)     /T
        !          19973:                (U)     /U
        !          19974:                (V)     /V
        !          19975:                (W)     /W
        !          19976:                (X)     /X
        !          19977:                (Y)     /Y
        !          19978:                (Z)     /Z
        !          19979:                ([)     /bracketleft
        !          19980:                (\\)    /backslash
        !          19981:                (])     /bracketright
        !          19982:                (^)     /asciicircum
        !          19983:                (_)     /underscore
        !          19984:                (`)     /quoteleft
        !          19985:                (a)     /a
        !          19986:                (b)     /b
        !          19987:                (c)     /c
        !          19988:                (d)     /d
        !          19989:                (e)     /e
        !          19990:                (f)     /f
        !          19991:                (g)     /g
        !          19992:                (h)     /h
        !          19993:                (i)     /i
        !          19994:                (j)     /j
        !          19995:                (k)     /k
        !          19996:                (l)     /l
        !          19997:                (m)     /m
        !          19998:                (n)     /n
        !          19999:                (o)     /o
        !          20000:                (p)     /p
        !          20001:                (q)     /q
        !          20002:                (r)     /r
        !          20003:                (s)     /s
        !          20004:                (t)     /t
        !          20005:                (u)     /u
        !          20006:                (v)     /v
        !          20007:                (w)     /w
        !          20008:                (x)     /x
        !          20009:                (y)     /y
        !          20010:                (z)     /z
        !          20011:                ({)     /braceleft
        !          20012:                (|)     /bar
        !          20013:                (})     /braceright
        !          20014:                (~)     /asciitilde
        !          20015:                (\\`)   /grave                  % devpost character
        !          20016:                (!!)    /exclamdown
        !          20017:                (c|)    /cent
        !          20018:                (L-)    /sterling
        !          20019:                (xo)    /currency
        !          20020:                (Y-)    /yen
        !          20021:                (||)    /brokenbar              % missing
        !          20022:                (so)    /section
        !          20023:                ("")    /dieresis
        !          20024:                (co)    /copyright
        !          20025:                (a_)    /ordfeminine
        !          20026:                (<<)    /guillemotleft
        !          20027:                (-,)    /logicalnot
        !          20028:                (hy)    /hyphen
        !          20029:                (ro)    /registered
        !          20030:                (-^)    /macron
        !          20031:                (0^)    /degree                 % missing
        !          20032:                (+-)    /plusminus              % missing
        !          20033:                (2^)    /twosuperior            % missing
        !          20034:                (3^)    /threesuperior          % missing
        !          20035:                (\\')   /acute
        !          20036:                (/u)    /mu                     % missing
        !          20037:                (P!)    /paragraph
        !          20038:                (.^)    /periodcentered
        !          20039:                (,,)    /cedilla
        !          20040:                (1^)    /onesuperior            % missing
        !          20041:                (o_)    /ordmasculine
        !          20042:                (>>)    /guillemotright
        !          20043:                (14)    /onequarter             % missing
        !          20044:                (12)    /onehalf                % missing
        !          20045:                (34)    /threequarters          % missing
        !          20046:                (??)    /questiondown
        !          20047:                (A`)    /Agrave
        !          20048:                (A')    /Aacute
        !          20049:                (A^)    /Acircumflex
        !          20050:                (A~)    /Atilde
        !          20051:                (A")    /Adieresis
        !          20052:                (A*)    /Aring
        !          20053:                (AE)    /AE
        !          20054:                (C,)    /Ccedilla
        !          20055:                (E`)    /Egrave
        !          20056:                (E')    /Eacute
        !          20057:                (E^)    /Ecircumflex
        !          20058:                (E")    /Edieresis
        !          20059:                (I`)    /Igrave
        !          20060:                (I')    /Iacute
        !          20061:                (I^)    /Icircumflex
        !          20062:                (I")    /Idieresis
        !          20063:                (D-)    /Eth                    % missing
        !          20064:                (N~)    /Ntilde
        !          20065:                (O`)    /Ograve
        !          20066:                (O')    /Oacute
        !          20067:                (O^)    /Ocircumflex
        !          20068:                (O~)    /Otilde
        !          20069:                (O")    /Odieresis
        !          20070:                (xx)    /multiply               % missing
        !          20071:                (O/)    /Oslash
        !          20072:                (U`)    /Ugrave
        !          20073:                (U')    /Uacute
        !          20074:                (U^)    /Ucircumflex
        !          20075:                (U")    /Udieresis
        !          20076:                (Y')    /Yacute                 % missing
        !          20077:                (TH)    /Thorn                  % missing
        !          20078:                (ss)    /germandbls
        !          20079:                (a`)    /agrave
        !          20080:                (a')    /aacute
        !          20081:                (a^)    /acircumflex
        !          20082:                (a~)    /atilde
        !          20083:                (a")    /adieresis
        !          20084:                (a*)    /aring
        !          20085:                (ae)    /ae
        !          20086:                (c,)    /ccedilla
        !          20087:                (e`)    /egrave
        !          20088:                (e')    /eacute
        !          20089:                (e^)    /ecircumflex
        !          20090:                (e")    /edieresis
        !          20091:                (i`)    /igrave
        !          20092:                (i')    /iacute
        !          20093:                (i^)    /icircumflex
        !          20094:                (i")    /idieresis
        !          20095:                (d-)    /eth                    % missing
        !          20096:                (n~)    /ntilde
        !          20097:                (o`)    /ograve
        !          20098:                (o')    /oacute
        !          20099:                (o^)    /ocircumflex
        !          20100:                (o~)    /otilde
        !          20101:                (o")    /odieresis
        !          20102:                (-:)    /divide                 % missing
        !          20103:                (o/)    /oslash
        !          20104:                (u`)    /ugrave
        !          20105:                (u')    /uacute
        !          20106:                (u^)    /ucircumflex
        !          20107:                (u")    /udieresis
        !          20108:                (y')    /yacute                 % missing
        !          20109:                (th)    /thorn                  % missing
        !          20110:                (y")    /ydieresis
        !          20111:        //End of DingbatsCharset
        !          20112: }
        !          20113: 
        !          20114: SymbolCharset() {
        !          20115:        cat <<-'//End of SymbolCharset'
        !          20116:                (---)   /exclam
        !          20117:                (fa)    /universal
        !          20118:                (---)   /numbersign
        !          20119:                (te)    /existential
        !          20120:                (---)   /percent
        !          20121:                (---)   /ampersand
        !          20122:                (st)    /suchthat
        !          20123:                (---)   /parenleft
        !          20124:                (---)   /parenright
        !          20125:                (**)    /asteriskmath
        !          20126:                (pl)    /plus
        !          20127:                (---)   /comma
        !          20128:                (mi)    /minus
        !          20129:                (---)   /period
        !          20130:                (sl)    /slash
        !          20131:                (---)   /zero
        !          20132:                (---)   /one
        !          20133:                (---)   /two
        !          20134:                (---)   /three
        !          20135:                (---)   /four
        !          20136:                (---)   /five
        !          20137:                (---)   /six
        !          20138:                (---)   /seven
        !          20139:                (---)   /eight
        !          20140:                (---)   /nine
        !          20141:                (---)   /colon
        !          20142:                (---)   /semicolon
        !          20143:                (<)     /less
        !          20144:                (eq)    /equal
        !          20145:                (>)     /greater
        !          20146:                (---)   /question
        !          20147:                (cg)    /congruent
        !          20148:                (*A)    /Alpha
        !          20149:                (*B)    /Beta
        !          20150:                (*X)    /Chi
        !          20151:                (*D)    /Delta
        !          20152:                (*E)    /Epsilon
        !          20153:                (*F)    /Phi
        !          20154:                (*G)    /Gamma
        !          20155:                (*Y)    /Eta
        !          20156:                (*I)    /Iota
        !          20157:                (---)   /theta1
        !          20158:                (*K)    /Kappa
        !          20159:                (*L)    /Lambda
        !          20160:                (*M)    /Mu
        !          20161:                (*N)    /Nu
        !          20162:                (*O)    /Omicron
        !          20163:                (*P)    /Pi
        !          20164:                (*H)    /Theta
        !          20165:                (*R)    /Rho
        !          20166:                (*S)    /Sigma
        !          20167:                (*T)    /Tau
        !          20168:                (*U)    /Upsilon
        !          20169:                (ts)    /sigma1
        !          20170:                (*W)    /Omega
        !          20171:                (*C)    /Xi
        !          20172:                (*Q)    /Psi
        !          20173:                (*Z)    /Zeta
        !          20174:                (---)   /bracketleft
        !          20175:                (tf)    /therefore
        !          20176:                (---)   /bracketright
        !          20177:                (pp)    /perpendicular
        !          20178:                (ul)    /underscore
        !          20179:                (_)     (")                     % synonym
        !          20180:                (rn)    /radicalex
        !          20181:                (*a)    /alpha
        !          20182:                (*b)    /beta
        !          20183:                (*x)    /chi
        !          20184:                (*d)    /delta
        !          20185:                (*e)    /epsilon
        !          20186:                (*f)    /phi
        !          20187:                (*g)    /gamma
        !          20188:                (*y)    /eta
        !          20189:                (*i)    /iota
        !          20190:                (---)   /phi1
        !          20191:                (*k)    /kappa
        !          20192:                (*l)    /lambda
        !          20193:                (*m)    /mu
        !          20194:                (*n)    /nu
        !          20195:                (*o)    /omicron
        !          20196:                (*p)    /pi
        !          20197:                (*h)    /theta
        !          20198:                (*r)    /rho
        !          20199:                (*s)    /sigma
        !          20200:                (*t)    /tau
        !          20201:                (*u)    /upsilon
        !          20202:                (---)   /omega1
        !          20203:                (*w)    /omega
        !          20204:                (*c)    /xi
        !          20205:                (*q)    /psi
        !          20206:                (*z)    /zeta
        !          20207:                (---)   /braceleft
        !          20208:                (or)    /bar
        !          20209:                (---)   /braceright
        !          20210:                (ap)    /similar
        !          20211:                (---)   /Upsilon1
        !          20212:                (fm)    /minute
        !          20213:                (<=)    /lessequal
        !          20214:                (fr)    /fraction               % devpost character
        !          20215:                (if)    /infinity
        !          20216:                (fn)    /florin                 % devpost character
        !          20217:                (---)   /club
        !          20218:                (---)   /diamond
        !          20219:                (---)   /heart
        !          20220:                (---)   /spade
        !          20221:                (ab)    /arrowboth
        !          20222:                (<-)    /arrowleft
        !          20223:                (ua)    /arrowup
        !          20224:                (->)    /arrowright
        !          20225:                (da)    /arrowdown
        !          20226:                (de)    /degree
        !          20227:                (+-)    /plusminus
        !          20228:                (---)   /second
        !          20229:                (>=)    /greaterequal
        !          20230:                (mu)    /multiply
        !          20231:                (pt)    /proportional
        !          20232:                (pd)    /partialdiff
        !          20233:                (bu)    /bullet
        !          20234:                (di)    /divide
        !          20235:                (!=)    /notequal
        !          20236:                (==)    /equivalence
        !          20237:                (~~)    /approxequal
        !          20238:                (el)    /ellipsis
        !          20239:                (av)    /arrowvertex
        !          20240:                (ah)    /arrowhorizex
        !          20241:                (CR)    /carriagereturn
        !          20242:                (af)    /aleph
        !          20243:                (If)    /Ifraktur
        !          20244:                (Rf)    /Rfraktur
        !          20245:                (ws)    /weierstrass
        !          20246:                (Ox)    /circlemultiply
        !          20247:                (O+)    /circleplus
        !          20248:                (es)    /emptyset
        !          20249:                (ca)    /intersection
        !          20250:                (cu)    /union
        !          20251:                (sp)    /propersuperset
        !          20252:                (ip)    /reflexsuperset
        !          20253:                (!b)    /notsubset
        !          20254:                (sb)    /propersubset
        !          20255:                (ib)    /reflexsubset
        !          20256:                (mo)    /element
        !          20257:                (!m)    /notelement
        !          20258:                (an)    /angle
        !          20259:                (gr)    /gradient
        !          20260:                (rg)    /registerserif
        !          20261:                (co)    /copyrightserif
        !          20262:                (tm)    /trademarkserif
        !          20263:                (---)   /product
        !          20264:                (sr)    /radical
        !          20265:                (c.)    /dotmath
        !          20266:                (no)    /logicalnot
        !          20267:                (l&)    /logicaland
        !          20268:                (l|)    /logicalor
        !          20269:                (---)   /arrowdblboth
        !          20270:                (---)   /arrowdblleft
        !          20271:                (---)   /arrowdblup
        !          20272:                (---)   /arrowdblright
        !          20273:                (---)   /arrowdbldown
        !          20274:                (lz)    /lozenge
        !          20275:                (b<)    /angleleft
        !          20276:                (RG)    /registersans
        !          20277:                (CO)    /copyrightsans
        !          20278:                (TM)    /trademarksans
        !          20279:                (---)   /summation
        !          20280:                (LT)    /parenlefttp
        !          20281:                (br)    /parenleftex
        !          20282:                (LX)    (")                     % synonym
        !          20283:                (LB)    /parenleftbt
        !          20284:                (lc)    /bracketlefttp
        !          20285:                (lx)    /bracketleftex
        !          20286:                (lf)    /bracketleftbt
        !          20287:                (lt)    /bracelefttp
        !          20288:                (lk)    /braceleftmid
        !          20289:                (lb)    /braceleftbt
        !          20290:                (bv)    /braceex
        !          20291:                (|)     (")                     % synonym
        !          20292:                (b>)    /angleright
        !          20293:                (is)    /integral
        !          20294:                (---)   /integraltp
        !          20295:                (---)   /integralex
        !          20296:                (---)   /integralbt
        !          20297:                (RT)    /parenrighttp
        !          20298:                (RX)    /parenrightex
        !          20299:                (RB)    /parenrightbt
        !          20300:                (rc)    /bracketrighttp
        !          20301:                (rx)    /bracketrightex
        !          20302:                (rf)    /bracketrightbt
        !          20303:                (rt)    /bracerighttp
        !          20304:                (rk)    /bracerightmid
        !          20305:                (rb)    /bracerightbt
        !          20306:                (~=)    (55     0       1)      % charlib
        !          20307:        //End of SymbolCharset
        !          20308: }
        !          20309: 
        !          20310: SpecialCharset() {
        !          20311:        cat <<-'//End of SpecialCharset'
        !          20312:                (ru)    /underscore
        !          20313:                ('')    /quotedblright          % devpost character
        !          20314:                (``)    /quotedblleft           % devpost character
        !          20315:                (dg)    /dagger                 % devpost character
        !          20316:                (dd)    /daggerdbl              % devpost character
        !          20317:                (en)    /endash                 % devpost character
        !          20318:                (\\-)   (")                     % synonym
        !          20319:                (em)    /emdash
        !          20320: %              (ff)    (60     2       1)      % charlib
        !          20321: %              (Fi)    (84     2       1)      % charlib
        !          20322: %              (Fl)    (84     2       1)      % charlib
        !          20323:                (14)    (75     2       1)      % charlib
        !          20324:                (12)    (75     2       1)      % charlib
        !          20325:                (34)    (75     2       1)      % charlib
        !          20326:                (bx)    (50     2       1)      % charlib
        !          20327:                (ob)    (38     2       1)      % charlib
        !          20328:                (ci)    (75     0       1)      % charlib
        !          20329:                (sq)    (50     2       1)      % charlib
        !          20330:                (Sl)    (50     2       1)      % charlib
        !          20331:                (L1)    (110    1       1)      % charlib
        !          20332:                (LA)    (110    1       1)      % charlib
        !          20333:                (LV)    (110    3       1)      % charlib
        !          20334:                (LH)    (210    1       1)      % charlib
        !          20335:                (lh)    (100    0       1)      % charlib
        !          20336:                (rh)    (100    0       1)      % charlib
        !          20337:                (lH)    (100    0       1)      % charlib
        !          20338:                (rH)    (100    0       1)      % charlib
        !          20339:                (PC)    (220    2       1)      % charlib
        !          20340:                (DG)    (185    2       1)      % charlib
        !          20341:        //End of SpecialCharset
        !          20342: }
        !          20343: 
        !          20344: #
        !          20345: # Latin1 ensures a font uses the ISOLatin1Encoding vector, although only
        !          20346: # text fonts should be re-encoded. Downloading the Encoding vector doesn't
        !          20347: # often make sense. No ISOLatin1Encoding array likely means ROM based fonts
        !          20348: # on your printer are incomplete. Type 1 fonts with a full Latin1 character
        !          20349: # set appeared sometime after Version 50.0.
        !          20350: #
        !          20351: 
        !          20352: Latin1() {
        !          20353:        if [ "$DOWNLOADVECTOR" = TRUE ]; then
        !          20354:                cat <<-'//End of ISOLatin1Encoding'
        !          20355:                        /ISOLatin1Encoding [
        !          20356:                                /.notdef
        !          20357:                                /.notdef
        !          20358:                                /.notdef
        !          20359:                                /.notdef
        !          20360:                                /.notdef
        !          20361:                                /.notdef
        !          20362:                                /.notdef
        !          20363:                                /.notdef
        !          20364:                                /.notdef
        !          20365:                                /.notdef
        !          20366:                                /.notdef
        !          20367:                                /.notdef
        !          20368:                                /.notdef
        !          20369:                                /.notdef
        !          20370:                                /.notdef
        !          20371:                                /.notdef
        !          20372:                                /.notdef
        !          20373:                                /.notdef
        !          20374:                                /.notdef
        !          20375:                                /.notdef
        !          20376:                                /.notdef
        !          20377:                                /.notdef
        !          20378:                                /.notdef
        !          20379:                                /.notdef
        !          20380:                                /.notdef
        !          20381:                                /.notdef
        !          20382:                                /.notdef
        !          20383:                                /.notdef
        !          20384:                                /.notdef
        !          20385:                                /.notdef
        !          20386:                                /.notdef
        !          20387:                                /.notdef
        !          20388:                                /space
        !          20389:                                /exclam
        !          20390:                                /quotedbl
        !          20391:                                /numbersign
        !          20392:                                /dollar
        !          20393:                                /percent
        !          20394:                                /ampersand
        !          20395:                                /quoteright
        !          20396:                                /parenleft
        !          20397:                                /parenright
        !          20398:                                /asterisk
        !          20399:                                /plus
        !          20400:                                /comma
        !          20401:                                /minus
        !          20402:                                /period
        !          20403:                                /slash
        !          20404:                                /zero
        !          20405:                                /one
        !          20406:                                /two
        !          20407:                                /three
        !          20408:                                /four
        !          20409:                                /five
        !          20410:                                /six
        !          20411:                                /seven
        !          20412:                                /eight
        !          20413:                                /nine
        !          20414:                                /colon
        !          20415:                                /semicolon
        !          20416:                                /less
        !          20417:                                /equal
        !          20418:                                /greater
        !          20419:                                /question
        !          20420:                                /at
        !          20421:                                /A
        !          20422:                                /B
        !          20423:                                /C
        !          20424:                                /D
        !          20425:                                /E
        !          20426:                                /F
        !          20427:                                /G
        !          20428:                                /H
        !          20429:                                /I
        !          20430:                                /J
        !          20431:                                /K
        !          20432:                                /L
        !          20433:                                /M
        !          20434:                                /N
        !          20435:                                /O
        !          20436:                                /P
        !          20437:                                /Q
        !          20438:                                /R
        !          20439:                                /S
        !          20440:                                /T
        !          20441:                                /U
        !          20442:                                /V
        !          20443:                                /W
        !          20444:                                /X
        !          20445:                                /Y
        !          20446:                                /Z
        !          20447:                                /bracketleft
        !          20448:                                /backslash
        !          20449:                                /bracketright
        !          20450:                                /asciicircum
        !          20451:                                /underscore
        !          20452:                                /quoteleft
        !          20453:                                /a
        !          20454:                                /b
        !          20455:                                /c
        !          20456:                                /d
        !          20457:                                /e
        !          20458:                                /f
        !          20459:                                /g
        !          20460:                                /h
        !          20461:                                /i
        !          20462:                                /j
        !          20463:                                /k
        !          20464:                                /l
        !          20465:                                /m
        !          20466:                                /n
        !          20467:                                /o
        !          20468:                                /p
        !          20469:                                /q
        !          20470:                                /r
        !          20471:                                /s
        !          20472:                                /t
        !          20473:                                /u
        !          20474:                                /v
        !          20475:                                /w
        !          20476:                                /x
        !          20477:                                /y
        !          20478:                                /z
        !          20479:                                /braceleft
        !          20480:                                /bar
        !          20481:                                /braceright
        !          20482:                                /asciitilde
        !          20483:                                /.notdef
        !          20484:                                /.notdef
        !          20485:                                /.notdef
        !          20486:                                /.notdef
        !          20487:                                /.notdef
        !          20488:                                /.notdef
        !          20489:                                /.notdef
        !          20490:                                /.notdef
        !          20491:                                /.notdef
        !          20492:                                /.notdef
        !          20493:                                /.notdef
        !          20494:                                /.notdef
        !          20495:                                /.notdef
        !          20496:                                /.notdef
        !          20497:                                /.notdef
        !          20498:                                /.notdef
        !          20499:                                /.notdef
        !          20500:                                /dotlessi
        !          20501:                                /grave
        !          20502:                                /acute
        !          20503:                                /circumflex
        !          20504:                                /tilde
        !          20505:                                /macron
        !          20506:                                /breve
        !          20507:                                /dotaccent
        !          20508:                                /dieresis
        !          20509:                                /.notdef
        !          20510:                                /ring
        !          20511:                                /cedilla
        !          20512:                                /.notdef
        !          20513:                                /hungarumlaut
        !          20514:                                /ogonek
        !          20515:                                /caron
        !          20516:                                /space
        !          20517:                                /exclamdown
        !          20518:                                /cent
        !          20519:                                /sterling
        !          20520:                                /currency
        !          20521:                                /yen
        !          20522:                                /brokenbar
        !          20523:                                /section
        !          20524:                                /dieresis
        !          20525:                                /copyright
        !          20526:                                /ordfeminine
        !          20527:                                /guillemotleft
        !          20528:                                /logicalnot
        !          20529:                                /hyphen
        !          20530:                                /registered
        !          20531:                                /macron
        !          20532:                                /degree
        !          20533:                                /plusminus
        !          20534:                                /twosuperior
        !          20535:                                /threesuperior
        !          20536:                                /acute
        !          20537:                                /mu
        !          20538:                                /paragraph
        !          20539:                                /periodcentered
        !          20540:                                /cedilla
        !          20541:                                /onesuperior
        !          20542:                                /ordmasculine
        !          20543:                                /guillemotright
        !          20544:                                /onequarter
        !          20545:                                /onehalf
        !          20546:                                /threequarters
        !          20547:                                /questiondown
        !          20548:                                /Agrave
        !          20549:                                /Aacute
        !          20550:                                /Acircumflex
        !          20551:                                /Atilde
        !          20552:                                /Adieresis
        !          20553:                                /Aring
        !          20554:                                /AE
        !          20555:                                /Ccedilla
        !          20556:                                /Egrave
        !          20557:                                /Eacute
        !          20558:                                /Ecircumflex
        !          20559:                                /Edieresis
        !          20560:                                /Igrave
        !          20561:                                /Iacute
        !          20562:                                /Icircumflex
        !          20563:                                /Idieresis
        !          20564:                                /Eth
        !          20565:                                /Ntilde
        !          20566:                                /Ograve
        !          20567:                                /Oacute
        !          20568:                                /Ocircumflex
        !          20569:                                /Otilde
        !          20570:                                /Odieresis
        !          20571:                                /multiply
        !          20572:                                /Oslash
        !          20573:                                /Ugrave
        !          20574:                                /Uacute
        !          20575:                                /Ucircumflex
        !          20576:                                /Udieresis
        !          20577:                                /Yacute
        !          20578:                                /Thorn
        !          20579:                                /germandbls
        !          20580:                                /agrave
        !          20581:                                /aacute
        !          20582:                                /acircumflex
        !          20583:                                /atilde
        !          20584:                                /adieresis
        !          20585:                                /aring
        !          20586:                                /ae
        !          20587:                                /ccedilla
        !          20588:                                /egrave
        !          20589:                                /eacute
        !          20590:                                /ecircumflex
        !          20591:                                /edieresis
        !          20592:                                /igrave
        !          20593:                                /iacute
        !          20594:                                /icircumflex
        !          20595:                                /idieresis
        !          20596:                                /eth
        !          20597:                                /ntilde
        !          20598:                                /ograve
        !          20599:                                /oacute
        !          20600:                                /ocircumflex
        !          20601:                                /otilde
        !          20602:                                /odieresis
        !          20603:                                /divide
        !          20604:                                /oslash
        !          20605:                                /ugrave
        !          20606:                                /uacute
        !          20607:                                /ucircumflex
        !          20608:                                /udieresis
        !          20609:                                /yacute
        !          20610:                                /thorn
        !          20611:                                /ydieresis
        !          20612:                        ] def
        !          20613:                //End of ISOLatin1Encoding
        !          20614:        fi
        !          20615: 
        !          20616:        echo "ISOLatin1Encoding /$1 ReEncode"
        !          20617: }
        !          20618: 
        !          20619: #
        !          20620: # Generating functions output PostScript programs that build font width
        !          20621: # tables or a typesetter description file. Send the program to a printer
        !          20622: # and the complete table will come back on the serial port. All write on
        !          20623: # stdout and assume the prologue and other required PostScript files are
        !          20624: # all available.
        !          20625: #
        !          20626: 
        !          20627: Proportional() {
        !          20628:        echo "/unitwidth $UNITWIDTH def"
        !          20629:        echo "/resolution $RESOLUTION def"
        !          20630:        echo "/octalescapes $OCTALESCAPES def"
        !          20631:        echo "/charset ["
        !          20632:                # Get <>_ and | from S. Use accents for ascii ^ and ~.
        !          20633:                StandardCharset | awk '
        !          20634:                        $1 == "(<)" && $2 == "/less" {$1 = "(---)"}
        !          20635:                        $1 == "(>)" && $2 == "/greater" {$1 = "(---)"}
        !          20636:                        $1 == "(_)" && $2 == "/underscore" {$1 = "(---)"}
        !          20637:                        $1 == "(|)" && $2 == "/bar" {$1 = "(---)"}
        !          20638:                        $1 == "(^)" && $2 == "/asciicircum" {
        !          20639:                                printf "(^)\t/circumflex\n"
        !          20640:                                $1 = "(---)"
        !          20641:                        }
        !          20642:                        $1 == "(~)" && $2 == "/asciitilde" {
        !          20643:                                printf "(~)\t/tilde\n"
        !          20644:                                $1 = "(---)"
        !          20645:                        }
        !          20646:                        {printf "%s\t%s\n", $1, $2}
        !          20647:                '
        !          20648:        echo "] def"
        !          20649: 
        !          20650:        Latin1 $2
        !          20651:        echo "/$2 SelectFont"
        !          20652:        echo "(opO) SetAscender"
        !          20653: 
        !          20654:        echo "(name $1\\\\n) Print"
        !          20655:        echo "(fontname $2\\\\n) Print"
        !          20656:        echo "/$1 NamedInPrologue"
        !          20657:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
        !          20658:        echo "(charset\\\\n) Print"
        !          20659:        echo "BuildFontCharset"
        !          20660: }
        !          20661: 
        !          20662: FixedWidth() {
        !          20663:        echo "/unitwidth $UNITWIDTH def"
        !          20664:        echo "/resolution $RESOLUTION def"
        !          20665:        echo "/octalescapes $OCTALESCAPES def"
        !          20666:        echo "/charset ["
        !          20667:                StandardCharset
        !          20668:        echo "] def"
        !          20669: 
        !          20670:        Latin1 $2
        !          20671:        echo "/$2 SelectFont"
        !          20672:        echo "(opO) SetAscender"
        !          20673: 
        !          20674:        echo "(name $1\\\\n) Print"
        !          20675:        echo "(fontname $2\\\\n) Print"
        !          20676:        echo "/$1 NamedInPrologue"
        !          20677:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
        !          20678:        echo "(charset\\\\n) Print"
        !          20679:        echo "BuildFontCharset"
        !          20680: }
        !          20681: 
        !          20682: Dingbats() {
        !          20683:        echo "/unitwidth $UNITWIDTH def"
        !          20684:        echo "/resolution $RESOLUTION def"
        !          20685:        echo "/octalescapes $OCTALESCAPES def"
        !          20686:        echo "/charset ["
        !          20687:                DingbatsCharset | awk '$1 != "(---)" && $2 ~ /^\/[a-zA-Z]/ {
        !          20688:                        printf "%s\tISOLatin1Encoding %s GetCode\n", $1, $2
        !          20689:                }'
        !          20690:        echo "] def"
        !          20691: 
        !          20692:        echo "/$2 SelectFont"
        !          20693:        echo "(   ) SetAscender"
        !          20694: 
        !          20695:        echo "(name $1\\\\n) Print"
        !          20696:        echo "(fontname $2\\\\n) Print"
        !          20697:        echo "/$1 NamedInPrologue"
        !          20698:        echo "(charset\\\\n) Print"
        !          20699:        echo "BuildFontCharset"
        !          20700: }
        !          20701: 
        !          20702: Greek() {
        !          20703:        echo "/unitwidth $UNITWIDTH def"
        !          20704:        echo "/resolution $RESOLUTION def"
        !          20705:        echo "/charset ["
        !          20706:                SymbolCharset | awk '$1 ~ /\(\*[a-zA-Z]\)/'
        !          20707:        echo "] def"
        !          20708: 
        !          20709:        echo "/$2 SelectFont"
        !          20710:        echo "(orO) SetAscender"
        !          20711: 
        !          20712:        echo "(name $1\\\\n) Print"
        !          20713:        echo "(fontname $2\\\\n) Print"
        !          20714:        echo "/$1 NamedInPrologue"
        !          20715:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
        !          20716:        echo "(charset\\\\n) Print"
        !          20717:        echo "BuildFontCharset"
        !          20718: }
        !          20719: 
        !          20720: Symbol() {
        !          20721:        echo "/unitwidth $UNITWIDTH def"
        !          20722:        echo "/resolution $RESOLUTION def"
        !          20723:        echo "/charset ["
        !          20724:                SymbolCharset
        !          20725:        echo "] def"
        !          20726: 
        !          20727:        echo "ChangeMetrics"
        !          20728:        echo "/S SelectFont"
        !          20729:        echo "(orO) SetAscender"
        !          20730: 
        !          20731:        echo "(name $1\\\\n) Print"
        !          20732:        echo "(fontname $2\\\\n) Print"
        !          20733:        echo "/$1 NamedInPrologue"
        !          20734:        echo "(special\\\\n) Print"
        !          20735:        echo "(charset\\\\n) Print"
        !          20736:        echo "BuildFontCharset"
        !          20737: }
        !          20738: 
        !          20739: Special() {
        !          20740:        echo "/unitwidth $UNITWIDTH def"
        !          20741:        echo "/resolution $RESOLUTION def"
        !          20742:        echo "/charset ["
        !          20743:                SpecialCharset
        !          20744:        echo "] def"
        !          20745: 
        !          20746:        echo "ChangeMetrics"
        !          20747:        echo "/S1 SelectFont"
        !          20748: 
        !          20749:        echo "(# Times-Roman special font\\\\n) Print"
        !          20750:        echo "(name $1\\\\n) Print"
        !          20751:        echo "(fontname $2\\\\n) Print"
        !          20752:        echo "/$1 NamedInPrologue"
        !          20753:        echo "(special\\\\n) Print"
        !          20754:        echo "(charset\\\\n) Print"
        !          20755:        echo "BuildFontCharset"
        !          20756: }
        !          20757: 
        !          20758: #
        !          20759: # The DESC file doesn't have to be built on a printer. It's only here for
        !          20760: # consistency.
        !          20761: #
        !          20762: 
        !          20763: Description() {
        !          20764:        echo "/charset ["       # awk - so the stack doesn't overflow
        !          20765:                StandardCharset | awk '{print $1}'
        !          20766:                SymbolCharset | awk '{print $1}'
        !          20767:                SpecialCharset | awk '{print $1}'
        !          20768:        echo "] def"
        !          20769: 
        !          20770:        cat <<-//DESC
        !          20771:                (#Device Description - Latin1 character set
        !          20772: 
        !          20773:                PDL PostScript
        !          20774:                Encoding Latin1
        !          20775: 
        !          20776:                fonts 10 R I B BI CW H HI HB S1 S
        !          20777:                sizes 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
        !          20778:                23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 40 42 44 46
        !          20779:                48 50 52 54 56 58 60 64 68 72 78 84 90 96 100 105 110 115
        !          20780:                120 125 130 135 140 145 150 155 160 0
        !          20781:                res $RESOLUTION
        !          20782:                hor 1
        !          20783:                vert 1
        !          20784:                unitwidth $UNITWIDTH
        !          20785: 
        !          20786:                ) Print
        !          20787:        //DESC
        !          20788:        echo "(charset\\\\n) Print"
        !          20789:        echo "BuildDescCharset"
        !          20790:        echo "(\\\\n) Print"
        !          20791: }
        !          20792: 
        !          20793: 0707070014231123401006440057030057030000010440460522627501500003400000000111post.src/devLatin1/LINKFILE#
        !          20794: # Creates missing width tables from existing ones.
        !          20795: #
        !          20796: 
        !          20797: rm -f HM
        !          20798: cp H HM
        !          20799: 0707070014231123411006440057030057030000010440240522627501500002500000006137post.src/devLatin1/Rname R
        !          20800: fontname Times-Roman
        !          20801: named in prologue
        !          20802: spacewidth 25
        !          20803: charset
        !          20804: !      33      2       33
        !          20805: "      41      2       34
        !          20806: dq     "
        !          20807: #      50      2       35
        !          20808: $      50      2       36
        !          20809: %      83      2       37
        !          20810: &      78      2       38
        !          20811: '      33      2       39
        !          20812: (      33      3       40
        !          20813: )      33      3       41
        !          20814: *      50      2       42
        !          20815: +      56      0       43
        !          20816: ,      25      1       44
        !          20817: -      33      0       173
        !          20818: \0255  "
        !          20819: .      25      0       46
        !          20820: /      28      2       47
        !          20821: 0      50      2       48
        !          20822: 1      50      2       49
        !          20823: 2      50      2       50
        !          20824: 3      50      2       51
        !          20825: 4      50      2       52
        !          20826: 5      50      2       53
        !          20827: 6      50      2       54
        !          20828: 7      50      2       55
        !          20829: 8      50      2       56
        !          20830: 9      50      2       57
        !          20831: :      28      0       58
        !          20832: ;      28      1       59
        !          20833: ---    56      2       60
        !          20834: =      56      0       61
        !          20835: ---    56      2       62
        !          20836: ?      44      2       63
        !          20837: @      92      3       64
        !          20838: A      72      2       65
        !          20839: B      67      2       66
        !          20840: C      67      2       67
        !          20841: D      72      2       68
        !          20842: E      61      2       69
        !          20843: F      56      2       70
        !          20844: G      72      2       71
        !          20845: H      72      2       72
        !          20846: I      33      2       73
        !          20847: J      39      2       74
        !          20848: K      72      2       75
        !          20849: L      61      2       76
        !          20850: M      89      2       77
        !          20851: N      72      2       78
        !          20852: O      72      2       79
        !          20853: P      56      2       80
        !          20854: Q      72      3       81
        !          20855: R      67      2       82
        !          20856: S      56      2       83
        !          20857: T      61      2       84
        !          20858: U      72      2       85
        !          20859: V      72      2       86
        !          20860: W      94      2       87
        !          20861: X      72      2       88
        !          20862: Y      72      2       89
        !          20863: Z      61      2       90
        !          20864: [      33      3       91
        !          20865: \      28      2       92
        !          20866: bs     "
        !          20867: ]      33      3       93
        !          20868: ^      33      2       147
        !          20869: ---    47      2       94
        !          20870: ---    50      1       95
        !          20871: `      33      2       96
        !          20872: a      44      0       97
        !          20873: b      50      2       98
        !          20874: c      44      0       99
        !          20875: d      50      2       100
        !          20876: e      44      0       101
        !          20877: f      33      2       102
        !          20878: g      50      1       103
        !          20879: h      50      2       104
        !          20880: i      28      2       105
        !          20881: j      28      3       106
        !          20882: k      50      2       107
        !          20883: l      28      2       108
        !          20884: m      78      0       109
        !          20885: n      50      0       110
        !          20886: o      50      0       111
        !          20887: p      50      1       112
        !          20888: q      50      1       113
        !          20889: r      33      0       114
        !          20890: s      39      0       115
        !          20891: t      28      2       116
        !          20892: u      50      0       117
        !          20893: v      50      0       118
        !          20894: w      72      0       119
        !          20895: x      50      0       120
        !          20896: y      50      1       121
        !          20897: z      44      0       122
        !          20898: {      48      3       123
        !          20899: ---    20      2       124
        !          20900: }      48      3       125
        !          20901: ~      33      2       148
        !          20902: ---    54      0       126
        !          20903: \`     33      2       145
        !          20904: ga     "
        !          20905: !!     33      1       161
        !          20906: \0241  "
        !          20907: c|     50      3       162
        !          20908: \0242  "
        !          20909: ct     "
        !          20910: L-     50      2       163
        !          20911: \0243  "
        !          20912: ps     "
        !          20913: xo     50      2       164
        !          20914: \0244  "
        !          20915: cr     "
        !          20916: Y-     50      2       165
        !          20917: \0245  "
        !          20918: yn     "
        !          20919: ||     20      2       166
        !          20920: \0246  "
        !          20921: so     50      3       167
        !          20922: \0247  "
        !          20923: sc     "
        !          20924: ""     33      2       168
        !          20925: \0250  "
        !          20926: :a     "
        !          20927: co     76      2       169
        !          20928: \0251  "
        !          20929: a_     28      2       170
        !          20930: \0252  "
        !          20931: <<     50      0       171
        !          20932: \0253  "
        !          20933: -,     56      0       172
        !          20934: \0254  "
        !          20935: hy     33      0       173
        !          20936: \0255  "
        !          20937: --     56      0       45
        !          20938: ro     76      2       174
        !          20939: \0256  "
        !          20940: rg     "
        !          20941: -^     33      2       175
        !          20942: \0257  "
        !          20943: -a     "
        !          20944: 0^     40      2       176
        !          20945: \0260  "
        !          20946: +-     56      2       177
        !          20947: \0261  "
        !          20948: 2^     30      2       178
        !          20949: \0262  "
        !          20950: 3^     30      2       179
        !          20951: \0263  "
        !          20952: \'     33      2       180
        !          20953: \0264  "
        !          20954: aa     "
        !          20955: /u     50      1       181
        !          20956: \0265  "
        !          20957: P!     45      3       182
        !          20958: \0266  "
        !          20959: pg     "
        !          20960: .^     25      0       183
        !          20961: \0267  "
        !          20962: ,,     33      1       184
        !          20963: \0270  "
        !          20964: ,a     "
        !          20965: 1^     30      2       185
        !          20966: \0271  "
        !          20967: o_     31      2       186
        !          20968: \0272  "
        !          20969: >>     50      0       187
        !          20970: \0273  "
        !          20971: 14     75      2       188
        !          20972: \0274  "
        !          20973: 12     75      2       189
        !          20974: \0275  "
        !          20975: 34     75      2       190
        !          20976: \0276  "
        !          20977: ??     44      1       191
        !          20978: \0277  "
        !          20979: A`     72      2       192
        !          20980: \0300  "
        !          20981: A'     72      2       193
        !          20982: \0301  "
        !          20983: A^     72      2       194
        !          20984: \0302  "
        !          20985: A~     72      2       195
        !          20986: \0303  "
        !          20987: A"     72      2       196
        !          20988: \0304  "
        !          20989: A*     72      2       197
        !          20990: \0305  "
        !          20991: AE     89      2       198
        !          20992: \0306  "
        !          20993: C,     67      3       199
        !          20994: \0307  "
        !          20995: E`     61      2       200
        !          20996: \0310  "
        !          20997: E'     61      2       201
        !          20998: \0311  "
        !          20999: E^     61      2       202
        !          21000: \0312  "
        !          21001: E"     61      2       203
        !          21002: \0313  "
        !          21003: I`     33      2       204
        !          21004: \0314  "
        !          21005: I'     33      2       205
        !          21006: \0315  "
        !          21007: I^     33      2       206
        !          21008: \0316  "
        !          21009: I"     33      2       207
        !          21010: \0317  "
        !          21011: D-     72      2       208
        !          21012: \0320  "
        !          21013: N~     72      2       209
        !          21014: \0321  "
        !          21015: O`     72      2       210
        !          21016: \0322  "
        !          21017: O'     72      2       211
        !          21018: \0323  "
        !          21019: O^     72      2       212
        !          21020: \0324  "
        !          21021: O~     72      2       213
        !          21022: \0325  "
        !          21023: O"     72      2       214
        !          21024: \0326  "
        !          21025: xx     56      0       215
        !          21026: \0327  "
        !          21027: O/     72      2       216
        !          21028: \0330  "
        !          21029: U`     72      2       217
        !          21030: \0331  "
        !          21031: U'     72      2       218
        !          21032: \0332  "
        !          21033: U^     72      2       219
        !          21034: \0333  "
        !          21035: U"     72      2       220
        !          21036: \0334  "
        !          21037: Y'     72      2       221
        !          21038: \0335  "
        !          21039: TH     56      2       222
        !          21040: \0336  "
        !          21041: ss     50      2       223
        !          21042: \0337  "
        !          21043: a`     44      2       224
        !          21044: \0340  "
        !          21045: a'     44      2       225
        !          21046: \0341  "
        !          21047: a^     44      2       226
        !          21048: \0342  "
        !          21049: a~     44      2       227
        !          21050: \0343  "
        !          21051: a"     44      2       228
        !          21052: \0344  "
        !          21053: a*     44      2       229
        !          21054: \0345  "
        !          21055: ae     67      0       230
        !          21056: \0346  "
        !          21057: c,     44      1       231
        !          21058: \0347  "
        !          21059: e`     44      2       232
        !          21060: \0350  "
        !          21061: e'     44      2       233
        !          21062: \0351  "
        !          21063: e^     44      2       234
        !          21064: \0352  "
        !          21065: e"     44      2       235
        !          21066: \0353  "
        !          21067: i`     28      2       236
        !          21068: \0354  "
        !          21069: i'     28      2       237
        !          21070: \0355  "
        !          21071: i^     28      2       238
        !          21072: \0356  "
        !          21073: i"     28      2       239
        !          21074: \0357  "
        !          21075: d-     50      2       240
        !          21076: \0360  "
        !          21077: n~     50      2       241
        !          21078: \0361  "
        !          21079: o`     50      2       242
        !          21080: \0362  "
        !          21081: o'     50      2       243
        !          21082: \0363  "
        !          21083: o^     50      2       244
        !          21084: \0364  "
        !          21085: o~     50      2       245
        !          21086: \0365  "
        !          21087: o"     50      2       246
        !          21088: \0366  "
        !          21089: -:     56      0       247
        !          21090: \0367  "
        !          21091: o/     50      2       248
        !          21092: \0370  "
        !          21093: u`     50      2       249
        !          21094: \0371  "
        !          21095: u'     50      2       250
        !          21096: \0372  "
        !          21097: u^     50      2       251
        !          21098: \0373  "
        !          21099: u"     50      2       252
        !          21100: \0374  "
        !          21101: y'     50      3       253
        !          21102: \0375  "
        !          21103: th     50      3       254
        !          21104: \0376  "
        !          21105: y"     50      3       255
        !          21106: \0377  "
        !          21107: ^a     33      2       147
        !          21108: ~a     33      2       148
        !          21109: Ua     33      2       150
        !          21110: .a     33      2       151
        !          21111: oa     33      2       154
        !          21112: "a     33      2       157
        !          21113: Ca     33      1       158
        !          21114: va     33      2       159
        !          21115: 0707070014231123421006440057030057030000010441400522627501500002500000006140post.src/devLatin1/Iname I
        !          21116: fontname Times-Italic
        !          21117: named in prologue
        !          21118: spacewidth 25
        !          21119: charset
        !          21120: !      33      2       33
        !          21121: "      42      2       34
        !          21122: dq     "
        !          21123: #      50      2       35
        !          21124: $      50      2       36
        !          21125: %      83      2       37
        !          21126: &      78      2       38
        !          21127: '      33      2       39
        !          21128: (      33      3       40
        !          21129: )      33      3       41
        !          21130: *      50      2       42
        !          21131: +      68      2       43
        !          21132: ,      25      1       44
        !          21133: -      33      0       173
        !          21134: \0255  "
        !          21135: .      25      0       46
        !          21136: /      28      2       47
        !          21137: 0      50      2       48
        !          21138: 1      50      2       49
        !          21139: 2      50      2       50
        !          21140: 3      50      2       51
        !          21141: 4      50      2       52
        !          21142: 5      50      2       53
        !          21143: 6      50      2       54
        !          21144: 7      50      2       55
        !          21145: 8      50      2       56
        !          21146: 9      50      2       57
        !          21147: :      33      0       58
        !          21148: ;      33      1       59
        !          21149: ---    68      2       60
        !          21150: =      68      0       61
        !          21151: ---    68      2       62
        !          21152: ?      50      2       63
        !          21153: @      92      3       64
        !          21154: A      61      2       65
        !          21155: B      61      2       66
        !          21156: C      67      2       67
        !          21157: D      72      2       68
        !          21158: E      61      2       69
        !          21159: F      61      2       70
        !          21160: G      72      2       71
        !          21161: H      72      2       72
        !          21162: I      33      2       73
        !          21163: J      44      2       74
        !          21164: K      67      2       75
        !          21165: L      56      2       76
        !          21166: M      83      2       77
        !          21167: N      67      2       78
        !          21168: O      72      2       79
        !          21169: P      61      2       80
        !          21170: Q      72      3       81
        !          21171: R      61      2       82
        !          21172: S      50      2       83
        !          21173: T      56      2       84
        !          21174: U      72      2       85
        !          21175: V      61      2       86
        !          21176: W      83      2       87
        !          21177: X      61      2       88
        !          21178: Y      56      2       89
        !          21179: Z      56      2       90
        !          21180: [      39      3       91
        !          21181: \      28      2       92
        !          21182: bs     "
        !          21183: ]      39      3       93
        !          21184: ^      33      2       147
        !          21185: ---    42      2       94
        !          21186: ---    50      1       95
        !          21187: `      33      2       96
        !          21188: a      50      0       97
        !          21189: b      50      2       98
        !          21190: c      44      0       99
        !          21191: d      50      2       100
        !          21192: e      44      0       101
        !          21193: f      28      3       102
        !          21194: g      50      1       103
        !          21195: h      50      2       104
        !          21196: i      28      2       105
        !          21197: j      28      3       106
        !          21198: k      44      2       107
        !          21199: l      28      2       108
        !          21200: m      72      0       109
        !          21201: n      50      0       110
        !          21202: o      50      0       111
        !          21203: p      50      1       112
        !          21204: q      50      1       113
        !          21205: r      39      0       114
        !          21206: s      39      0       115
        !          21207: t      28      2       116
        !          21208: u      50      0       117
        !          21209: v      44      0       118
        !          21210: w      67      0       119
        !          21211: x      44      0       120
        !          21212: y      44      1       121
        !          21213: z      39      0       122
        !          21214: {      40      3       123
        !          21215: ---    28      3       124
        !          21216: }      40      3       125
        !          21217: ~      33      2       148
        !          21218: ---    54      0       126
        !          21219: \`     33      2       145
        !          21220: ga     "
        !          21221: !!     39      1       161
        !          21222: \0241  "
        !          21223: c|     50      3       162
        !          21224: \0242  "
        !          21225: ct     "
        !          21226: L-     50      2       163
        !          21227: \0243  "
        !          21228: ps     "
        !          21229: xo     50      2       164
        !          21230: \0244  "
        !          21231: cr     "
        !          21232: Y-     50      2       165
        !          21233: \0245  "
        !          21234: yn     "
        !          21235: ||     28      3       166
        !          21236: \0246  "
        !          21237: so     50      2       167
        !          21238: \0247  "
        !          21239: sc     "
        !          21240: ""     33      2       168
        !          21241: \0250  "
        !          21242: :a     "
        !          21243: co     76      2       169
        !          21244: \0251  "
        !          21245: a_     28      2       170
        !          21246: \0252  "
        !          21247: <<     50      0       171
        !          21248: \0253  "
        !          21249: -,     68      0       172
        !          21250: \0254  "
        !          21251: hy     33      0       173
        !          21252: \0255  "
        !          21253: --     68      0       45
        !          21254: ro     76      2       174
        !          21255: \0256  "
        !          21256: rg     "
        !          21257: -^     33      2       175
        !          21258: \0257  "
        !          21259: -a     "
        !          21260: 0^     40      2       176
        !          21261: \0260  "
        !          21262: +-     68      2       177
        !          21263: \0261  "
        !          21264: 2^     30      2       178
        !          21265: \0262  "
        !          21266: 3^     30      2       179
        !          21267: \0263  "
        !          21268: \'     33      2       180
        !          21269: \0264  "
        !          21270: aa     "
        !          21271: /u     50      1       181
        !          21272: \0265  "
        !          21273: P!     52      3       182
        !          21274: \0266  "
        !          21275: pg     "
        !          21276: .^     25      0       183
        !          21277: \0267  "
        !          21278: ,,     33      1       184
        !          21279: \0270  "
        !          21280: ,a     "
        !          21281: 1^     30      2       185
        !          21282: \0271  "
        !          21283: o_     31      2       186
        !          21284: \0272  "
        !          21285: >>     50      0       187
        !          21286: \0273  "
        !          21287: 14     75      2       188
        !          21288: \0274  "
        !          21289: 12     75      2       189
        !          21290: \0275  "
        !          21291: 34     75      2       190
        !          21292: \0276  "
        !          21293: ??     50      1       191
        !          21294: \0277  "
        !          21295: A`     61      2       192
        !          21296: \0300  "
        !          21297: A'     61      2       193
        !          21298: \0301  "
        !          21299: A^     61      2       194
        !          21300: \0302  "
        !          21301: A~     61      2       195
        !          21302: \0303  "
        !          21303: A"     61      2       196
        !          21304: \0304  "
        !          21305: A*     61      2       197
        !          21306: \0305  "
        !          21307: AE     89      2       198
        !          21308: \0306  "
        !          21309: C,     67      3       199
        !          21310: \0307  "
        !          21311: E`     61      2       200
        !          21312: \0310  "
        !          21313: E'     61      2       201
        !          21314: \0311  "
        !          21315: E^     61      2       202
        !          21316: \0312  "
        !          21317: E"     61      2       203
        !          21318: \0313  "
        !          21319: I`     33      2       204
        !          21320: \0314  "
        !          21321: I'     33      2       205
        !          21322: \0315  "
        !          21323: I^     33      2       206
        !          21324: \0316  "
        !          21325: I"     33      2       207
        !          21326: \0317  "
        !          21327: D-     72      2       208
        !          21328: \0320  "
        !          21329: N~     67      2       209
        !          21330: \0321  "
        !          21331: O`     72      2       210
        !          21332: \0322  "
        !          21333: O'     72      2       211
        !          21334: \0323  "
        !          21335: O^     72      2       212
        !          21336: \0324  "
        !          21337: O~     72      2       213
        !          21338: \0325  "
        !          21339: O"     72      2       214
        !          21340: \0326  "
        !          21341: xx     68      0       215
        !          21342: \0327  "
        !          21343: O/     72      3       216
        !          21344: \0330  "
        !          21345: U`     72      2       217
        !          21346: \0331  "
        !          21347: U'     72      2       218
        !          21348: \0332  "
        !          21349: U^     72      2       219
        !          21350: \0333  "
        !          21351: U"     72      2       220
        !          21352: \0334  "
        !          21353: Y'     56      2       221
        !          21354: \0335  "
        !          21355: TH     61      2       222
        !          21356: \0336  "
        !          21357: ss     50      3       223
        !          21358: \0337  "
        !          21359: a`     50      2       224
        !          21360: \0340  "
        !          21361: a'     50      2       225
        !          21362: \0341  "
        !          21363: a^     50      2       226
        !          21364: \0342  "
        !          21365: a~     50      2       227
        !          21366: \0343  "
        !          21367: a"     50      2       228
        !          21368: \0344  "
        !          21369: a*     50      2       229
        !          21370: \0345  "
        !          21371: ae     67      0       230
        !          21372: \0346  "
        !          21373: c,     44      1       231
        !          21374: \0347  "
        !          21375: e`     44      2       232
        !          21376: \0350  "
        !          21377: e'     44      2       233
        !          21378: \0351  "
        !          21379: e^     44      2       234
        !          21380: \0352  "
        !          21381: e"     44      2       235
        !          21382: \0353  "
        !          21383: i`     28      2       236
        !          21384: \0354  "
        !          21385: i'     28      2       237
        !          21386: \0355  "
        !          21387: i^     28      2       238
        !          21388: \0356  "
        !          21389: i"     28      2       239
        !          21390: \0357  "
        !          21391: d-     50      2       240
        !          21392: \0360  "
        !          21393: n~     50      2       241
        !          21394: \0361  "
        !          21395: o`     50      2       242
        !          21396: \0362  "
        !          21397: o'     50      2       243
        !          21398: \0363  "
        !          21399: o^     50      2       244
        !          21400: \0364  "
        !          21401: o~     50      2       245
        !          21402: \0365  "
        !          21403: o"     50      2       246
        !          21404: \0366  "
        !          21405: -:     68      2       247
        !          21406: \0367  "
        !          21407: o/     50      3       248
        !          21408: \0370  "
        !          21409: u`     50      2       249
        !          21410: \0371  "
        !          21411: u'     50      2       250
        !          21412: \0372  "
        !          21413: u^     50      2       251
        !          21414: \0373  "
        !          21415: u"     50      2       252
        !          21416: \0374  "
        !          21417: y'     44      3       253
        !          21418: \0375  "
        !          21419: th     50      3       254
        !          21420: \0376  "
        !          21421: y"     44      3       255
        !          21422: \0377  "
        !          21423: ^a     33      2       147
        !          21424: ~a     33      2       148
        !          21425: Ua     33      2       150
        !          21426: .a     33      2       151
        !          21427: oa     33      2       154
        !          21428: "a     33      2       157
        !          21429: Ca     33      1       158
        !          21430: va     33      2       159
        !          21431: 0707070014231123431006440057030057030000010441440522627501500002500000006141post.src/devLatin1/Bname B
        !          21432: fontname Times-Bold
        !          21433: named in prologue
        !          21434: spacewidth 25
        !          21435: charset
        !          21436: !      33      2       33
        !          21437: "      56      2       34
        !          21438: dq     "
        !          21439: #      50      2       35
        !          21440: $      50      3       36
        !          21441: %      100     2       37
        !          21442: &      83      2       38
        !          21443: '      33      2       39
        !          21444: (      33      3       40
        !          21445: )      33      3       41
        !          21446: *      50      2       42
        !          21447: +      57      0       43
        !          21448: ,      25      1       44
        !          21449: -      33      0       173
        !          21450: \0255  "
        !          21451: .      25      0       46
        !          21452: /      28      2       47
        !          21453: 0      50      2       48
        !          21454: 1      50      2       49
        !          21455: 2      50      2       50
        !          21456: 3      50      2       51
        !          21457: 4      50      2       52
        !          21458: 5      50      2       53
        !          21459: 6      50      2       54
        !          21460: 7      50      2       55
        !          21461: 8      50      2       56
        !          21462: 9      50      2       57
        !          21463: :      33      0       58
        !          21464: ;      33      1       59
        !          21465: ---    57      0       60
        !          21466: =      57      0       61
        !          21467: ---    57      0       62
        !          21468: ?      50      2       63
        !          21469: @      93      3       64
        !          21470: A      72      2       65
        !          21471: B      67      2       66
        !          21472: C      72      2       67
        !          21473: D      72      2       68
        !          21474: E      67      2       69
        !          21475: F      61      2       70
        !          21476: G      78      2       71
        !          21477: H      78      2       72
        !          21478: I      39      2       73
        !          21479: J      50      2       74
        !          21480: K      78      2       75
        !          21481: L      67      2       76
        !          21482: M      94      2       77
        !          21483: N      72      2       78
        !          21484: O      78      2       79
        !          21485: P      61      2       80
        !          21486: Q      78      3       81
        !          21487: R      72      2       82
        !          21488: S      56      2       83
        !          21489: T      67      2       84
        !          21490: U      72      2       85
        !          21491: V      72      2       86
        !          21492: W      100     2       87
        !          21493: X      72      2       88
        !          21494: Y      72      2       89
        !          21495: Z      67      2       90
        !          21496: [      33      3       91
        !          21497: \      28      2       92
        !          21498: bs     "
        !          21499: ]      33      3       93
        !          21500: ^      33      2       147
        !          21501: ---    58      2       94
        !          21502: ---    50      1       95
        !          21503: `      33      2       96
        !          21504: a      50      0       97
        !          21505: b      56      2       98
        !          21506: c      44      0       99
        !          21507: d      56      2       100
        !          21508: e      44      0       101
        !          21509: f      33      2       102
        !          21510: g      50      1       103
        !          21511: h      56      2       104
        !          21512: i      28      2       105
        !          21513: j      33      3       106
        !          21514: k      56      2       107
        !          21515: l      28      2       108
        !          21516: m      83      0       109
        !          21517: n      56      0       110
        !          21518: o      50      0       111
        !          21519: p      56      1       112
        !          21520: q      56      1       113
        !          21521: r      44      0       114
        !          21522: s      39      0       115
        !          21523: t      33      2       116
        !          21524: u      56      0       117
        !          21525: v      50      0       118
        !          21526: w      72      0       119
        !          21527: x      50      0       120
        !          21528: y      50      1       121
        !          21529: z      44      0       122
        !          21530: {      39      3       123
        !          21531: ---    22      3       124
        !          21532: }      39      3       125
        !          21533: ~      33      2       148
        !          21534: ---    52      0       126
        !          21535: \`     33      2       145
        !          21536: ga     "
        !          21537: !!     33      1       161
        !          21538: \0241  "
        !          21539: c|     50      3       162
        !          21540: \0242  "
        !          21541: ct     "
        !          21542: L-     50      2       163
        !          21543: \0243  "
        !          21544: ps     "
        !          21545: xo     50      2       164
        !          21546: \0244  "
        !          21547: cr     "
        !          21548: Y-     50      2       165
        !          21549: \0245  "
        !          21550: yn     "
        !          21551: ||     22      3       166
        !          21552: \0246  "
        !          21553: so     50      3       167
        !          21554: \0247  "
        !          21555: sc     "
        !          21556: ""     33      2       168
        !          21557: \0250  "
        !          21558: :a     "
        !          21559: co     75      2       169
        !          21560: \0251  "
        !          21561: a_     30      2       170
        !          21562: \0252  "
        !          21563: <<     50      0       171
        !          21564: \0253  "
        !          21565: -,     57      0       172
        !          21566: \0254  "
        !          21567: hy     33      0       173
        !          21568: \0255  "
        !          21569: --     57      0       45
        !          21570: ro     75      2       174
        !          21571: \0256  "
        !          21572: rg     "
        !          21573: -^     33      2       175
        !          21574: \0257  "
        !          21575: -a     "
        !          21576: 0^     40      2       176
        !          21577: \0260  "
        !          21578: +-     57      2       177
        !          21579: \0261  "
        !          21580: 2^     30      2       178
        !          21581: \0262  "
        !          21582: 3^     30      2       179
        !          21583: \0263  "
        !          21584: \'     33      2       180
        !          21585: \0264  "
        !          21586: aa     "
        !          21587: /u     56      1       181
        !          21588: \0265  "
        !          21589: P!     54      3       182
        !          21590: \0266  "
        !          21591: pg     "
        !          21592: .^     25      0       183
        !          21593: \0267  "
        !          21594: ,,     33      1       184
        !          21595: \0270  "
        !          21596: ,a     "
        !          21597: 1^     30      2       185
        !          21598: \0271  "
        !          21599: o_     33      2       186
        !          21600: \0272  "
        !          21601: >>     50      0       187
        !          21602: \0273  "
        !          21603: 14     75      2       188
        !          21604: \0274  "
        !          21605: 12     75      2       189
        !          21606: \0275  "
        !          21607: 34     75      2       190
        !          21608: \0276  "
        !          21609: ??     50      1       191
        !          21610: \0277  "
        !          21611: A`     72      2       192
        !          21612: \0300  "
        !          21613: A'     72      2       193
        !          21614: \0301  "
        !          21615: A^     72      2       194
        !          21616: \0302  "
        !          21617: A~     72      2       195
        !          21618: \0303  "
        !          21619: A"     72      2       196
        !          21620: \0304  "
        !          21621: A*     72      2       197
        !          21622: \0305  "
        !          21623: AE     100     2       198
        !          21624: \0306  "
        !          21625: C,     72      3       199
        !          21626: \0307  "
        !          21627: E`     67      2       200
        !          21628: \0310  "
        !          21629: E'     67      2       201
        !          21630: \0311  "
        !          21631: E^     67      2       202
        !          21632: \0312  "
        !          21633: E"     67      2       203
        !          21634: \0313  "
        !          21635: I`     39      2       204
        !          21636: \0314  "
        !          21637: I'     39      2       205
        !          21638: \0315  "
        !          21639: I^     39      2       206
        !          21640: \0316  "
        !          21641: I"     39      2       207
        !          21642: \0317  "
        !          21643: D-     72      2       208
        !          21644: \0320  "
        !          21645: N~     72      2       209
        !          21646: \0321  "
        !          21647: O`     78      2       210
        !          21648: \0322  "
        !          21649: O'     78      2       211
        !          21650: \0323  "
        !          21651: O^     78      2       212
        !          21652: \0324  "
        !          21653: O~     78      2       213
        !          21654: \0325  "
        !          21655: O"     78      2       214
        !          21656: \0326  "
        !          21657: xx     57      0       215
        !          21658: \0327  "
        !          21659: O/     78      2       216
        !          21660: \0330  "
        !          21661: U`     72      2       217
        !          21662: \0331  "
        !          21663: U'     72      2       218
        !          21664: \0332  "
        !          21665: U^     72      2       219
        !          21666: \0333  "
        !          21667: U"     72      2       220
        !          21668: \0334  "
        !          21669: Y'     72      2       221
        !          21670: \0335  "
        !          21671: TH     61      2       222
        !          21672: \0336  "
        !          21673: ss     56      2       223
        !          21674: \0337  "
        !          21675: a`     50      2       224
        !          21676: \0340  "
        !          21677: a'     50      2       225
        !          21678: \0341  "
        !          21679: a^     50      2       226
        !          21680: \0342  "
        !          21681: a~     50      2       227
        !          21682: \0343  "
        !          21683: a"     50      2       228
        !          21684: \0344  "
        !          21685: a*     50      2       229
        !          21686: \0345  "
        !          21687: ae     72      0       230
        !          21688: \0346  "
        !          21689: c,     44      1       231
        !          21690: \0347  "
        !          21691: e`     44      2       232
        !          21692: \0350  "
        !          21693: e'     44      2       233
        !          21694: \0351  "
        !          21695: e^     44      2       234
        !          21696: \0352  "
        !          21697: e"     44      2       235
        !          21698: \0353  "
        !          21699: i`     28      2       236
        !          21700: \0354  "
        !          21701: i'     28      2       237
        !          21702: \0355  "
        !          21703: i^     28      2       238
        !          21704: \0356  "
        !          21705: i"     28      2       239
        !          21706: \0357  "
        !          21707: d-     50      2       240
        !          21708: \0360  "
        !          21709: n~     56      2       241
        !          21710: \0361  "
        !          21711: o`     50      2       242
        !          21712: \0362  "
        !          21713: o'     50      2       243
        !          21714: \0363  "
        !          21715: o^     50      2       244
        !          21716: \0364  "
        !          21717: o~     50      2       245
        !          21718: \0365  "
        !          21719: o"     50      2       246
        !          21720: \0366  "
        !          21721: -:     57      0       247
        !          21722: \0367  "
        !          21723: o/     50      2       248
        !          21724: \0370  "
        !          21725: u`     56      2       249
        !          21726: \0371  "
        !          21727: u'     56      2       250
        !          21728: \0372  "
        !          21729: u^     56      2       251
        !          21730: \0373  "
        !          21731: u"     56      2       252
        !          21732: \0374  "
        !          21733: y'     50      3       253
        !          21734: \0375  "
        !          21735: th     56      3       254
        !          21736: \0376  "
        !          21737: y"     50      3       255
        !          21738: \0377  "
        !          21739: ^a     33      2       147
        !          21740: ~a     33      2       148
        !          21741: Ua     33      2       150
        !          21742: .a     33      2       151
        !          21743: oa     33      2       154
        !          21744: "a     33      2       157
        !          21745: Ca     33      1       158
        !          21746: va     33      2       159
        !          21747: 0707070014231123441006440057030057030000010441600522627501500002600000006145post.src/devLatin1/BIname BI
        !          21748: fontname Times-BoldItalic
        !          21749: named in prologue
        !          21750: spacewidth 25
        !          21751: charset
        !          21752: !      39      2       33
        !          21753: "      56      2       34
        !          21754: dq     "
        !          21755: #      50      2       35
        !          21756: $      50      2       36
        !          21757: %      83      2       37
        !          21758: &      78      2       38
        !          21759: '      33      2       39
        !          21760: (      33      3       40
        !          21761: )      33      3       41
        !          21762: *      50      2       42
        !          21763: +      57      0       43
        !          21764: ,      25      1       44
        !          21765: -      33      0       173
        !          21766: \0255  "
        !          21767: .      25      0       46
        !          21768: /      28      2       47
        !          21769: 0      50      2       48
        !          21770: 1      50      2       49
        !          21771: 2      50      2       50
        !          21772: 3      50      2       51
        !          21773: 4      50      2       52
        !          21774: 5      50      2       53
        !          21775: 6      50      2       54
        !          21776: 7      50      2       55
        !          21777: 8      50      2       56
        !          21778: 9      50      2       57
        !          21779: :      33      0       58
        !          21780: ;      33      1       59
        !          21781: ---    57      2       60
        !          21782: =      57      0       61
        !          21783: ---    57      2       62
        !          21784: ?      50      2       63
        !          21785: @      83      3       64
        !          21786: A      67      2       65
        !          21787: B      67      2       66
        !          21788: C      67      2       67
        !          21789: D      72      2       68
        !          21790: E      67      2       69
        !          21791: F      67      2       70
        !          21792: G      72      2       71
        !          21793: H      78      2       72
        !          21794: I      39      2       73
        !          21795: J      50      2       74
        !          21796: K      67      2       75
        !          21797: L      61      2       76
        !          21798: M      89      2       77
        !          21799: N      72      2       78
        !          21800: O      72      2       79
        !          21801: P      61      2       80
        !          21802: Q      72      3       81
        !          21803: R      67      2       82
        !          21804: S      56      2       83
        !          21805: T      61      2       84
        !          21806: U      72      2       85
        !          21807: V      67      2       86
        !          21808: W      89      2       87
        !          21809: X      67      2       88
        !          21810: Y      61      2       89
        !          21811: Z      61      2       90
        !          21812: [      33      3       91
        !          21813: \      28      2       92
        !          21814: bs     "
        !          21815: ]      33      3       93
        !          21816: ^      33      2       147
        !          21817: ---    57      2       94
        !          21818: ---    50      1       95
        !          21819: `      33      2       96
        !          21820: a      50      0       97
        !          21821: b      50      2       98
        !          21822: c      44      0       99
        !          21823: d      50      2       100
        !          21824: e      44      0       101
        !          21825: f      33      3       102
        !          21826: g      50      1       103
        !          21827: h      56      2       104
        !          21828: i      28      2       105
        !          21829: j      28      3       106
        !          21830: k      50      2       107
        !          21831: l      28      2       108
        !          21832: m      78      0       109
        !          21833: n      56      0       110
        !          21834: o      50      0       111
        !          21835: p      50      1       112
        !          21836: q      50      1       113
        !          21837: r      39      0       114
        !          21838: s      39      0       115
        !          21839: t      28      2       116
        !          21840: u      56      0       117
        !          21841: v      44      0       118
        !          21842: w      67      0       119
        !          21843: x      50      0       120
        !          21844: y      44      1       121
        !          21845: z      39      0       122
        !          21846: {      35      3       123
        !          21847: ---    22      2       124
        !          21848: }      35      3       125
        !          21849: ~      33      2       148
        !          21850: ---    57      0       126
        !          21851: \`     33      2       145
        !          21852: ga     "
        !          21853: !!     39      1       161
        !          21854: \0241  "
        !          21855: c|     50      3       162
        !          21856: \0242  "
        !          21857: ct     "
        !          21858: L-     50      2       163
        !          21859: \0243  "
        !          21860: ps     "
        !          21861: xo     50      2       164
        !          21862: \0244  "
        !          21863: cr     "
        !          21864: Y-     50      2       165
        !          21865: \0245  "
        !          21866: yn     "
        !          21867: ||     22      2       166
        !          21868: \0246  "
        !          21869: so     50      3       167
        !          21870: \0247  "
        !          21871: sc     "
        !          21872: ""     33      2       168
        !          21873: \0250  "
        !          21874: :a     "
        !          21875: co     75      2       169
        !          21876: \0251  "
        !          21877: a_     27      2       170
        !          21878: \0252  "
        !          21879: <<     50      0       171
        !          21880: \0253  "
        !          21881: -,     61      0       172
        !          21882: \0254  "
        !          21883: hy     33      0       173
        !          21884: \0255  "
        !          21885: --     61      0       45
        !          21886: ro     75      2       174
        !          21887: \0256  "
        !          21888: rg     "
        !          21889: -^     33      2       175
        !          21890: \0257  "
        !          21891: -a     "
        !          21892: 0^     40      2       176
        !          21893: \0260  "
        !          21894: +-     57      2       177
        !          21895: \0261  "
        !          21896: 2^     30      2       178
        !          21897: \0262  "
        !          21898: 3^     30      2       179
        !          21899: \0263  "
        !          21900: \'     33      2       180
        !          21901: \0264  "
        !          21902: aa     "
        !          21903: /u     58      1       181
        !          21904: \0265  "
        !          21905: P!     50      3       182
        !          21906: \0266  "
        !          21907: pg     "
        !          21908: .^     25      0       183
        !          21909: \0267  "
        !          21910: ,,     33      1       184
        !          21911: \0270  "
        !          21912: ,a     "
        !          21913: 1^     30      2       185
        !          21914: \0271  "
        !          21915: o_     30      2       186
        !          21916: \0272  "
        !          21917: >>     50      0       187
        !          21918: \0273  "
        !          21919: 14     75      2       188
        !          21920: \0274  "
        !          21921: 12     75      2       189
        !          21922: \0275  "
        !          21923: 34     75      2       190
        !          21924: \0276  "
        !          21925: ??     50      1       191
        !          21926: \0277  "
        !          21927: A`     67      2       192
        !          21928: \0300  "
        !          21929: A'     67      2       193
        !          21930: \0301  "
        !          21931: A^     67      2       194
        !          21932: \0302  "
        !          21933: A~     67      2       195
        !          21934: \0303  "
        !          21935: A"     67      2       196
        !          21936: \0304  "
        !          21937: A*     67      2       197
        !          21938: \0305  "
        !          21939: AE     94      2       198
        !          21940: \0306  "
        !          21941: C,     67      3       199
        !          21942: \0307  "
        !          21943: E`     67      2       200
        !          21944: \0310  "
        !          21945: E'     67      2       201
        !          21946: \0311  "
        !          21947: E^     67      2       202
        !          21948: \0312  "
        !          21949: E"     67      2       203
        !          21950: \0313  "
        !          21951: I`     39      2       204
        !          21952: \0314  "
        !          21953: I'     39      2       205
        !          21954: \0315  "
        !          21955: I^     39      2       206
        !          21956: \0316  "
        !          21957: I"     39      2       207
        !          21958: \0317  "
        !          21959: D-     72      2       208
        !          21960: \0320  "
        !          21961: N~     72      2       209
        !          21962: \0321  "
        !          21963: O`     72      2       210
        !          21964: \0322  "
        !          21965: O'     72      2       211
        !          21966: \0323  "
        !          21967: O^     72      2       212
        !          21968: \0324  "
        !          21969: O~     72      2       213
        !          21970: \0325  "
        !          21971: O"     72      2       214
        !          21972: \0326  "
        !          21973: xx     57      0       215
        !          21974: \0327  "
        !          21975: O/     72      3       216
        !          21976: \0330  "
        !          21977: U`     72      2       217
        !          21978: \0331  "
        !          21979: U'     72      2       218
        !          21980: \0332  "
        !          21981: U^     72      2       219
        !          21982: \0333  "
        !          21983: U"     72      2       220
        !          21984: \0334  "
        !          21985: Y'     61      2       221
        !          21986: \0335  "
        !          21987: TH     61      2       222
        !          21988: \0336  "
        !          21989: ss     50      3       223
        !          21990: \0337  "
        !          21991: a`     50      2       224
        !          21992: \0340  "
        !          21993: a'     50      2       225
        !          21994: \0341  "
        !          21995: a^     50      2       226
        !          21996: \0342  "
        !          21997: a~     50      2       227
        !          21998: \0343  "
        !          21999: a"     50      2       228
        !          22000: \0344  "
        !          22001: a*     50      2       229
        !          22002: \0345  "
        !          22003: ae     72      0       230
        !          22004: \0346  "
        !          22005: c,     44      1       231
        !          22006: \0347  "
        !          22007: e`     44      2       232
        !          22008: \0350  "
        !          22009: e'     44      2       233
        !          22010: \0351  "
        !          22011: e^     44      2       234
        !          22012: \0352  "
        !          22013: e"     44      2       235
        !          22014: \0353  "
        !          22015: i`     28      2       236
        !          22016: \0354  "
        !          22017: i'     28      2       237
        !          22018: \0355  "
        !          22019: i^     28      2       238
        !          22020: \0356  "
        !          22021: i"     28      2       239
        !          22022: \0357  "
        !          22023: d-     50      2       240
        !          22024: \0360  "
        !          22025: n~     56      2       241
        !          22026: \0361  "
        !          22027: o`     50      2       242
        !          22028: \0362  "
        !          22029: o'     50      2       243
        !          22030: \0363  "
        !          22031: o^     50      2       244
        !          22032: \0364  "
        !          22033: o~     50      2       245
        !          22034: \0365  "
        !          22035: o"     50      2       246
        !          22036: \0366  "
        !          22037: -:     57      0       247
        !          22038: \0367  "
        !          22039: o/     50      3       248
        !          22040: \0370  "
        !          22041: u`     56      2       249
        !          22042: \0371  "
        !          22043: u'     56      2       250
        !          22044: \0372  "
        !          22045: u^     56      2       251
        !          22046: \0373  "
        !          22047: u"     56      2       252
        !          22048: \0374  "
        !          22049: y'     44      3       253
        !          22050: \0375  "
        !          22051: th     50      3       254
        !          22052: \0376  "
        !          22053: y"     44      3       255
        !          22054: \0377  "
        !          22055: ^a     33      2       147
        !          22056: ~a     33      2       148
        !          22057: Ua     33      2       150
        !          22058: .a     33      2       151
        !          22059: oa     33      2       154
        !          22060: "a     33      2       157
        !          22061: Ca     33      1       158
        !          22062: va     33      2       159
        !          22063: 0707070014231123451006440057030057030000010441640522627501500002600000006145post.src/devLatin1/ABname AB
        !          22064: fontname AvantGarde-Demi
        !          22065: named in prologue
        !          22066: spacewidth 28
        !          22067: charset
        !          22068: !      28      2       33
        !          22069: "      36      2       34
        !          22070: dq     "
        !          22071: #      56      2       35
        !          22072: $      56      2       36
        !          22073: %      86      2       37
        !          22074: &      68      2       38
        !          22075: '      28      2       39
        !          22076: (      38      3       40
        !          22077: )      38      3       41
        !          22078: *      44      2       42
        !          22079: +      60      0       43
        !          22080: ,      28      1       44
        !          22081: -      42      0       173
        !          22082: \0255  "
        !          22083: .      28      0       46
        !          22084: /      46      3       47
        !          22085: 0      56      2       48
        !          22086: 1      56      2       49
        !          22087: 2      56      2       50
        !          22088: 3      56      2       51
        !          22089: 4      56      2       52
        !          22090: 5      56      2       53
        !          22091: 6      56      2       54
        !          22092: 7      56      2       55
        !          22093: 8      56      2       56
        !          22094: 9      56      2       57
        !          22095: :      28      0       58
        !          22096: ;      28      1       59
        !          22097: ---    60      0       60
        !          22098: =      60      0       61
        !          22099: ---    60      0       62
        !          22100: ?      56      2       63
        !          22101: @      74      2       64
        !          22102: A      74      2       65
        !          22103: B      58      2       66
        !          22104: C      78      2       67
        !          22105: D      70      2       68
        !          22106: E      52      2       69
        !          22107: F      48      2       70
        !          22108: G      84      2       71
        !          22109: H      68      2       72
        !          22110: I      28      2       73
        !          22111: J      48      2       74
        !          22112: K      62      2       75
        !          22113: L      44      2       76
        !          22114: M      90      2       77
        !          22115: N      74      2       78
        !          22116: O      84      2       79
        !          22117: P      56      2       80
        !          22118: Q      84      2       81
        !          22119: R      58      2       82
        !          22120: S      52      2       83
        !          22121: T      42      2       84
        !          22122: U      64      2       85
        !          22123: V      70      2       86
        !          22124: W      90      2       87
        !          22125: X      68      2       88
        !          22126: Y      62      2       89
        !          22127: Z      50      2       90
        !          22128: [      32      3       91
        !          22129: \      64      2       92
        !          22130: bs     "
        !          22131: ]      32      3       93
        !          22132: ^      54      2       147
        !          22133: ---    60      2       94
        !          22134: ---    50      1       95
        !          22135: `      28      2       96
        !          22136: a      66      0       97
        !          22137: b      66      2       98
        !          22138: c      64      0       99
        !          22139: d      66      2       100
        !          22140: e      64      0       101
        !          22141: f      28      2       102
        !          22142: g      66      1       103
        !          22143: h      60      2       104
        !          22144: i      24      2       105
        !          22145: j      26      3       106
        !          22146: k      58      2       107
        !          22147: l      24      2       108
        !          22148: m      94      0       109
        !          22149: n      60      0       110
        !          22150: o      64      0       111
        !          22151: p      66      1       112
        !          22152: q      66      1       113
        !          22153: r      32      0       114
        !          22154: s      44      0       115
        !          22155: t      30      2       116
        !          22156: u      60      0       117
        !          22157: v      56      0       118
        !          22158: w      80      0       119
        !          22159: x      56      0       120
        !          22160: y      58      1       121
        !          22161: z      46      0       122
        !          22162: {      34      3       123
        !          22163: ---    60      2       124
        !          22164: }      34      3       125
        !          22165: ~      48      2       148
        !          22166: ---    60      0       126
        !          22167: \`     42      2       145
        !          22168: ga     "
        !          22169: !!     28      1       161
        !          22170: \0241  "
        !          22171: c|     56      2       162
        !          22172: \0242  "
        !          22173: ct     "
        !          22174: L-     56      2       163
        !          22175: \0243  "
        !          22176: ps     "
        !          22177: xo     56      2       164
        !          22178: \0244  "
        !          22179: cr     "
        !          22180: Y-     56      2       165
        !          22181: \0245  "
        !          22182: yn     "
        !          22183: ||     60      2       166
        !          22184: \0246  "
        !          22185: so     56      3       167
        !          22186: \0247  "
        !          22187: sc     "
        !          22188: ""     50      2       168
        !          22189: \0250  "
        !          22190: :a     "
        !          22191: co     74      2       169
        !          22192: \0251  "
        !          22193: a_     36      2       170
        !          22194: \0252  "
        !          22195: <<     46      0       171
        !          22196: \0253  "
        !          22197: -,     60      0       172
        !          22198: \0254  "
        !          22199: hy     42      0       173
        !          22200: \0255  "
        !          22201: --     60      0       45
        !          22202: ro     74      2       174
        !          22203: \0256  "
        !          22204: rg     "
        !          22205: -^     42      2       175
        !          22206: \0257  "
        !          22207: -a     "
        !          22208: 0^     40      2       176
        !          22209: \0260  "
        !          22210: +-     60      0       177
        !          22211: \0261  "
        !          22212: 2^     34      2       178
        !          22213: \0262  "
        !          22214: 3^     34      2       179
        !          22215: \0263  "
        !          22216: \'     42      2       180
        !          22217: \0264  "
        !          22218: aa     "
        !          22219: /u     58      1       181
        !          22220: \0265  "
        !          22221: P!     60      3       182
        !          22222: \0266  "
        !          22223: pg     "
        !          22224: .^     28      0       183
        !          22225: \0267  "
        !          22226: ,,     34      1       184
        !          22227: \0270  "
        !          22228: ,a     "
        !          22229: 1^     34      2       185
        !          22230: \0271  "
        !          22231: o_     36      2       186
        !          22232: \0272  "
        !          22233: >>     46      0       187
        !          22234: \0273  "
        !          22235: 14     84      2       188
        !          22236: \0274  "
        !          22237: 12     84      2       189
        !          22238: \0275  "
        !          22239: 34     84      2       190
        !          22240: \0276  "
        !          22241: ??     56      1       191
        !          22242: \0277  "
        !          22243: A`     74      2       192
        !          22244: \0300  "
        !          22245: A'     74      2       193
        !          22246: \0301  "
        !          22247: A^     74      2       194
        !          22248: \0302  "
        !          22249: A~     74      2       195
        !          22250: \0303  "
        !          22251: A"     74      2       196
        !          22252: \0304  "
        !          22253: A*     74      2       197
        !          22254: \0305  "
        !          22255: AE     90      2       198
        !          22256: \0306  "
        !          22257: C,     78      3       199
        !          22258: \0307  "
        !          22259: E`     52      2       200
        !          22260: \0310  "
        !          22261: E'     52      2       201
        !          22262: \0311  "
        !          22263: E^     52      2       202
        !          22264: \0312  "
        !          22265: E"     52      2       203
        !          22266: \0313  "
        !          22267: I`     28      2       204
        !          22268: \0314  "
        !          22269: I'     28      2       205
        !          22270: \0315  "
        !          22271: I^     28      2       206
        !          22272: \0316  "
        !          22273: I"     28      2       207
        !          22274: \0317  "
        !          22275: D-     74      2       208
        !          22276: \0320  "
        !          22277: N~     74      2       209
        !          22278: \0321  "
        !          22279: O`     84      2       210
        !          22280: \0322  "
        !          22281: O'     84      2       211
        !          22282: \0323  "
        !          22283: O^     84      2       212
        !          22284: \0324  "
        !          22285: O~     84      2       213
        !          22286: \0325  "
        !          22287: O"     84      2       214
        !          22288: \0326  "
        !          22289: xx     60      0       215
        !          22290: \0327  "
        !          22291: O/     84      2       216
        !          22292: \0330  "
        !          22293: U`     64      2       217
        !          22294: \0331  "
        !          22295: U'     64      2       218
        !          22296: \0332  "
        !          22297: U^     64      2       219
        !          22298: \0333  "
        !          22299: U"     64      2       220
        !          22300: \0334  "
        !          22301: Y'     62      2       221
        !          22302: \0335  "
        !          22303: TH     56      2       222
        !          22304: \0336  "
        !          22305: ss     60      2       223
        !          22306: \0337  "
        !          22307: a`     66      2       224
        !          22308: \0340  "
        !          22309: a'     66      2       225
        !          22310: \0341  "
        !          22311: a^     66      2       226
        !          22312: \0342  "
        !          22313: a~     66      2       227
        !          22314: \0343  "
        !          22315: a"     66      2       228
        !          22316: \0344  "
        !          22317: a*     66      2       229
        !          22318: \0345  "
        !          22319: ae     108     0       230
        !          22320: \0346  "
        !          22321: c,     64      1       231
        !          22322: \0347  "
        !          22323: e`     64      2       232
        !          22324: \0350  "
        !          22325: e'     64      2       233
        !          22326: \0351  "
        !          22327: e^     64      2       234
        !          22328: \0352  "
        !          22329: e"     64      2       235
        !          22330: \0353  "
        !          22331: i`     24      2       236
        !          22332: \0354  "
        !          22333: i'     24      2       237
        !          22334: \0355  "
        !          22335: i^     24      2       238
        !          22336: \0356  "
        !          22337: i"     24      2       239
        !          22338: \0357  "
        !          22339: d-     64      2       240
        !          22340: \0360  "
        !          22341: n~     60      2       241
        !          22342: \0361  "
        !          22343: o`     64      2       242
        !          22344: \0362  "
        !          22345: o'     64      2       243
        !          22346: \0363  "
        !          22347: o^     64      2       244
        !          22348: \0364  "
        !          22349: o~     64      2       245
        !          22350: \0365  "
        !          22351: o"     64      2       246
        !          22352: \0366  "
        !          22353: -:     60      0       247
        !          22354: \0367  "
        !          22355: o/     66      0       248
        !          22356: \0370  "
        !          22357: u`     60      2       249
        !          22358: \0371  "
        !          22359: u'     60      2       250
        !          22360: \0372  "
        !          22361: u^     60      2       251
        !          22362: \0373  "
        !          22363: u"     60      2       252
        !          22364: \0374  "
        !          22365: y'     58      3       253
        !          22366: \0375  "
        !          22367: th     66      3       254
        !          22368: \0376  "
        !          22369: y"     58      3       255
        !          22370: \0377  "
        !          22371: ^a     54      2       147
        !          22372: ~a     48      2       148
        !          22373: Ua     48      2       150
        !          22374: .a     28      2       151
        !          22375: oa     36      2       154
        !          22376: "a     70      2       157
        !          22377: Ca     34      1       158
        !          22378: va     54      2       159
        !          22379: 0707070014231123461006440057030057030000010442000522627501500002600000006154post.src/devLatin1/AIname AI
        !          22380: fontname AvantGarde-BookOblique
        !          22381: named in prologue
        !          22382: spacewidth 28
        !          22383: charset
        !          22384: !      29      2       33
        !          22385: "      31      2       34
        !          22386: dq     "
        !          22387: #      55      2       35
        !          22388: $      55      2       36
        !          22389: %      78      2       37
        !          22390: &      76      2       38
        !          22391: '      35      2       39
        !          22392: (      37      3       40
        !          22393: )      37      3       41
        !          22394: *      43      2       42
        !          22395: +      61      0       43
        !          22396: ,      28      0       44
        !          22397: -      33      0       173
        !          22398: \0255  "
        !          22399: .      28      0       46
        !          22400: /      44      3       47
        !          22401: 0      55      2       48
        !          22402: 1      55      2       49
        !          22403: 2      55      2       50
        !          22404: 3      55      2       51
        !          22405: 4      55      2       52
        !          22406: 5      55      2       53
        !          22407: 6      55      2       54
        !          22408: 7      55      2       55
        !          22409: 8      55      2       56
        !          22410: 9      55      2       57
        !          22411: :      28      0       58
        !          22412: ;      28      0       59
        !          22413: ---    61      0       60
        !          22414: =      61      0       61
        !          22415: ---    61      0       62
        !          22416: ?      59      2       63
        !          22417: @      87      2       64
        !          22418: A      74      2       65
        !          22419: B      57      2       66
        !          22420: C      81      2       67
        !          22421: D      74      2       68
        !          22422: E      54      2       69
        !          22423: F      49      2       70
        !          22424: G      87      2       71
        !          22425: H      68      2       72
        !          22426: I      23      2       73
        !          22427: J      48      2       74
        !          22428: K      59      2       75
        !          22429: L      46      2       76
        !          22430: M      92      2       77
        !          22431: N      74      2       78
        !          22432: O      87      2       79
        !          22433: P      59      2       80
        !          22434: Q      87      2       81
        !          22435: R      61      2       82
        !          22436: S      50      2       83
        !          22437: T      43      2       84
        !          22438: U      66      2       85
        !          22439: V      70      2       86
        !          22440: W      96      2       87
        !          22441: X      61      2       88
        !          22442: Y      59      2       89
        !          22443: Z      48      2       90
        !          22444: [      35      3       91
        !          22445: \      61      2       92
        !          22446: bs     "
        !          22447: ]      35      3       93
        !          22448: ^      50      2       147
        !          22449: ---    61      2       94
        !          22450: ---    50      1       95
        !          22451: `      35      2       96
        !          22452: a      68      0       97
        !          22453: b      68      2       98
        !          22454: c      65      0       99
        !          22455: d      69      2       100
        !          22456: e      65      0       101
        !          22457: f      31      2       102
        !          22458: g      67      1       103
        !          22459: h      61      2       104
        !          22460: i      20      2       105
        !          22461: j      20      3       106
        !          22462: k      50      2       107
        !          22463: l      20      2       108
        !          22464: m      94      0       109
        !          22465: n      61      0       110
        !          22466: o      66      0       111
        !          22467: p      68      1       112
        !          22468: q      68      1       113
        !          22469: r      30      0       114
        !          22470: s      39      0       115
        !          22471: t      34      2       116
        !          22472: u      61      0       117
        !          22473: v      55      0       118
        !          22474: w      83      0       119
        !          22475: x      48      0       120
        !          22476: y      54      1       121
        !          22477: z      43      0       122
        !          22478: {      35      3       123
        !          22479: ---    67      2       124
        !          22480: }      35      3       125
        !          22481: ~      44      2       148
        !          22482: ---    61      0       126
        !          22483: \`     38      2       145
        !          22484: ga     "
        !          22485: !!     29      1       161
        !          22486: \0241  "
        !          22487: c|     55      2       162
        !          22488: \0242  "
        !          22489: ct     "
        !          22490: L-     55      2       163
        !          22491: \0243  "
        !          22492: ps     "
        !          22493: xo     55      0       164
        !          22494: \0244  "
        !          22495: cr     "
        !          22496: Y-     55      2       165
        !          22497: \0245  "
        !          22498: yn     "
        !          22499: ||     67      2       166
        !          22500: \0246  "
        !          22501: so     62      3       167
        !          22502: \0247  "
        !          22503: sc     "
        !          22504: ""     37      2       168
        !          22505: \0250  "
        !          22506: :a     "
        !          22507: co     75      2       169
        !          22508: \0251  "
        !          22509: a_     37      2       170
        !          22510: \0252  "
        !          22511: <<     43      0       171
        !          22512: \0253  "
        !          22513: -,     61      0       172
        !          22514: \0254  "
        !          22515: hy     33      0       173
        !          22516: \0255  "
        !          22517: --     61      0       45
        !          22518: ro     75      2       174
        !          22519: \0256  "
        !          22520: rg     "
        !          22521: -^     49      2       175
        !          22522: \0257  "
        !          22523: -a     "
        !          22524: 0^     40      2       176
        !          22525: \0260  "
        !          22526: +-     61      0       177
        !          22527: \0261  "
        !          22528: 2^     33      2       178
        !          22529: \0262  "
        !          22530: 3^     33      2       179
        !          22531: \0263  "
        !          22532: \'     38      2       180
        !          22533: \0264  "
        !          22534: aa     "
        !          22535: /u     61      1       181
        !          22536: \0265  "
        !          22537: P!     56      3       182
        !          22538: \0266  "
        !          22539: pg     "
        !          22540: .^     28      0       183
        !          22541: \0267  "
        !          22542: ,,     32      1       184
        !          22543: \0270  "
        !          22544: ,a     "
        !          22545: 1^     33      2       185
        !          22546: \0271  "
        !          22547: o_     37      2       186
        !          22548: \0272  "
        !          22549: >>     43      0       187
        !          22550: \0273  "
        !          22551: 14     83      2       188
        !          22552: \0274  "
        !          22553: 12     83      2       189
        !          22554: \0275  "
        !          22555: 34     83      2       190
        !          22556: \0276  "
        !          22557: ??     59      1       191
        !          22558: \0277  "
        !          22559: A`     74      2       192
        !          22560: \0300  "
        !          22561: A'     74      2       193
        !          22562: \0301  "
        !          22563: A^     74      2       194
        !          22564: \0302  "
        !          22565: A~     74      2       195
        !          22566: \0303  "
        !          22567: A"     74      2       196
        !          22568: \0304  "
        !          22569: A*     74      2       197
        !          22570: \0305  "
        !          22571: AE     99      2       198
        !          22572: \0306  "
        !          22573: C,     81      3       199
        !          22574: \0307  "
        !          22575: E`     54      2       200
        !          22576: \0310  "
        !          22577: E'     54      2       201
        !          22578: \0311  "
        !          22579: E^     54      2       202
        !          22580: \0312  "
        !          22581: E"     54      2       203
        !          22582: \0313  "
        !          22583: I`     23      2       204
        !          22584: \0314  "
        !          22585: I'     23      2       205
        !          22586: \0315  "
        !          22587: I^     23      2       206
        !          22588: \0316  "
        !          22589: I"     23      2       207
        !          22590: \0317  "
        !          22591: D-     79      2       208
        !          22592: \0320  "
        !          22593: N~     74      2       209
        !          22594: \0321  "
        !          22595: O`     87      2       210
        !          22596: \0322  "
        !          22597: O'     87      2       211
        !          22598: \0323  "
        !          22599: O^     87      2       212
        !          22600: \0324  "
        !          22601: O~     87      2       213
        !          22602: \0325  "
        !          22603: O"     87      2       214
        !          22604: \0326  "
        !          22605: xx     61      0       215
        !          22606: \0327  "
        !          22607: O/     87      2       216
        !          22608: \0330  "
        !          22609: U`     66      2       217
        !          22610: \0331  "
        !          22611: U'     66      2       218
        !          22612: \0332  "
        !          22613: U^     66      2       219
        !          22614: \0333  "
        !          22615: U"     66      2       220
        !          22616: \0334  "
        !          22617: Y'     59      2       221
        !          22618: \0335  "
        !          22619: TH     59      2       222
        !          22620: \0336  "
        !          22621: ss     55      2       223
        !          22622: \0337  "
        !          22623: a`     68      2       224
        !          22624: \0340  "
        !          22625: a'     68      2       225
        !          22626: \0341  "
        !          22627: a^     68      2       226
        !          22628: \0342  "
        !          22629: a~     68      2       227
        !          22630: \0343  "
        !          22631: a"     68      2       228
        !          22632: \0344  "
        !          22633: a*     68      2       229
        !          22634: \0345  "
        !          22635: ae     116     0       230
        !          22636: \0346  "
        !          22637: c,     65      1       231
        !          22638: \0347  "
        !          22639: e`     65      2       232
        !          22640: \0350  "
        !          22641: e'     65      2       233
        !          22642: \0351  "
        !          22643: e^     65      2       234
        !          22644: \0352  "
        !          22645: e"     65      2       235
        !          22646: \0353  "
        !          22647: i`     20      2       236
        !          22648: \0354  "
        !          22649: i'     20      2       237
        !          22650: \0355  "
        !          22651: i^     20      2       238
        !          22652: \0356  "
        !          22653: i"     20      2       239
        !          22654: \0357  "
        !          22655: d-     66      2       240
        !          22656: \0360  "
        !          22657: n~     61      2       241
        !          22658: \0361  "
        !          22659: o`     66      2       242
        !          22660: \0362  "
        !          22661: o'     66      2       243
        !          22662: \0363  "
        !          22663: o^     66      2       244
        !          22664: \0364  "
        !          22665: o~     66      2       245
        !          22666: \0365  "
        !          22667: o"     66      2       246
        !          22668: \0366  "
        !          22669: -:     61      0       247
        !          22670: \0367  "
        !          22671: o/     65      0       248
        !          22672: \0370  "
        !          22673: u`     61      2       249
        !          22674: \0371  "
        !          22675: u'     61      2       250
        !          22676: \0372  "
        !          22677: u^     61      2       251
        !          22678: \0373  "
        !          22679: u"     61      2       252
        !          22680: \0374  "
        !          22681: y'     54      3       253
        !          22682: \0375  "
        !          22683: th     68      3       254
        !          22684: \0376  "
        !          22685: y"     54      3       255
        !          22686: \0377  "
        !          22687: ^a     50      2       147
        !          22688: ~a     44      2       148
        !          22689: Ua     45      2       150
        !          22690: .a     22      2       151
        !          22691: oa     33      2       154
        !          22692: "a     55      2       157
        !          22693: Ca     30      1       158
        !          22694: va     50      2       159
        !          22695: 0707070014231123471006440057030057030000010442040522627501500002600000006145post.src/devLatin1/ARname AR
        !          22696: fontname AvantGarde-Book
        !          22697: named in prologue
        !          22698: spacewidth 28
        !          22699: charset
        !          22700: !      29      2       33
        !          22701: "      31      2       34
        !          22702: dq     "
        !          22703: #      55      2       35
        !          22704: $      55      2       36
        !          22705: %      78      2       37
        !          22706: &      76      2       38
        !          22707: '      35      2       39
        !          22708: (      37      3       40
        !          22709: )      37      3       41
        !          22710: *      43      2       42
        !          22711: +      61      0       43
        !          22712: ,      28      0       44
        !          22713: -      33      0       173
        !          22714: \0255  "
        !          22715: .      28      0       46
        !          22716: /      44      3       47
        !          22717: 0      55      2       48
        !          22718: 1      55      2       49
        !          22719: 2      55      2       50
        !          22720: 3      55      2       51
        !          22721: 4      55      2       52
        !          22722: 5      55      2       53
        !          22723: 6      55      2       54
        !          22724: 7      55      2       55
        !          22725: 8      55      2       56
        !          22726: 9      55      2       57
        !          22727: :      28      0       58
        !          22728: ;      28      0       59
        !          22729: ---    61      0       60
        !          22730: =      61      0       61
        !          22731: ---    61      0       62
        !          22732: ?      59      2       63
        !          22733: @      87      2       64
        !          22734: A      74      2       65
        !          22735: B      57      2       66
        !          22736: C      81      2       67
        !          22737: D      74      2       68
        !          22738: E      54      2       69
        !          22739: F      49      2       70
        !          22740: G      87      2       71
        !          22741: H      68      2       72
        !          22742: I      23      2       73
        !          22743: J      48      2       74
        !          22744: K      59      2       75
        !          22745: L      46      2       76
        !          22746: M      92      2       77
        !          22747: N      74      2       78
        !          22748: O      87      2       79
        !          22749: P      59      2       80
        !          22750: Q      87      2       81
        !          22751: R      61      2       82
        !          22752: S      50      2       83
        !          22753: T      43      2       84
        !          22754: U      66      2       85
        !          22755: V      70      2       86
        !          22756: W      96      2       87
        !          22757: X      61      2       88
        !          22758: Y      59      2       89
        !          22759: Z      48      2       90
        !          22760: [      35      3       91
        !          22761: \      61      2       92
        !          22762: bs     "
        !          22763: ]      35      3       93
        !          22764: ^      50      2       147
        !          22765: ---    61      2       94
        !          22766: ---    50      1       95
        !          22767: `      35      2       96
        !          22768: a      68      0       97
        !          22769: b      68      2       98
        !          22770: c      65      0       99
        !          22771: d      69      2       100
        !          22772: e      65      0       101
        !          22773: f      31      2       102
        !          22774: g      67      1       103
        !          22775: h      61      2       104
        !          22776: i      20      2       105
        !          22777: j      20      3       106
        !          22778: k      50      2       107
        !          22779: l      20      2       108
        !          22780: m      94      0       109
        !          22781: n      61      0       110
        !          22782: o      66      0       111
        !          22783: p      68      1       112
        !          22784: q      68      1       113
        !          22785: r      30      0       114
        !          22786: s      39      0       115
        !          22787: t      34      2       116
        !          22788: u      61      0       117
        !          22789: v      55      0       118
        !          22790: w      83      0       119
        !          22791: x      48      0       120
        !          22792: y      54      1       121
        !          22793: z      43      0       122
        !          22794: {      35      3       123
        !          22795: ---    67      2       124
        !          22796: }      35      3       125
        !          22797: ~      44      2       148
        !          22798: ---    61      0       126
        !          22799: \`     38      2       145
        !          22800: ga     "
        !          22801: !!     29      1       161
        !          22802: \0241  "
        !          22803: c|     55      2       162
        !          22804: \0242  "
        !          22805: ct     "
        !          22806: L-     55      2       163
        !          22807: \0243  "
        !          22808: ps     "
        !          22809: xo     55      0       164
        !          22810: \0244  "
        !          22811: cr     "
        !          22812: Y-     55      2       165
        !          22813: \0245  "
        !          22814: yn     "
        !          22815: ||     67      2       166
        !          22816: \0246  "
        !          22817: so     62      3       167
        !          22818: \0247  "
        !          22819: sc     "
        !          22820: ""     37      2       168
        !          22821: \0250  "
        !          22822: :a     "
        !          22823: co     75      2       169
        !          22824: \0251  "
        !          22825: a_     37      2       170
        !          22826: \0252  "
        !          22827: <<     43      0       171
        !          22828: \0253  "
        !          22829: -,     61      0       172
        !          22830: \0254  "
        !          22831: hy     33      0       173
        !          22832: \0255  "
        !          22833: --     61      0       45
        !          22834: ro     75      2       174
        !          22835: \0256  "
        !          22836: rg     "
        !          22837: -^     49      2       175
        !          22838: \0257  "
        !          22839: -a     "
        !          22840: 0^     40      2       176
        !          22841: \0260  "
        !          22842: +-     61      0       177
        !          22843: \0261  "
        !          22844: 2^     33      2       178
        !          22845: \0262  "
        !          22846: 3^     33      2       179
        !          22847: \0263  "
        !          22848: \'     38      2       180
        !          22849: \0264  "
        !          22850: aa     "
        !          22851: /u     61      1       181
        !          22852: \0265  "
        !          22853: P!     56      3       182
        !          22854: \0266  "
        !          22855: pg     "
        !          22856: .^     28      0       183
        !          22857: \0267  "
        !          22858: ,,     32      1       184
        !          22859: \0270  "
        !          22860: ,a     "
        !          22861: 1^     33      2       185
        !          22862: \0271  "
        !          22863: o_     37      2       186
        !          22864: \0272  "
        !          22865: >>     43      0       187
        !          22866: \0273  "
        !          22867: 14     83      2       188
        !          22868: \0274  "
        !          22869: 12     83      2       189
        !          22870: \0275  "
        !          22871: 34     83      2       190
        !          22872: \0276  "
        !          22873: ??     59      1       191
        !          22874: \0277  "
        !          22875: A`     74      2       192
        !          22876: \0300  "
        !          22877: A'     74      2       193
        !          22878: \0301  "
        !          22879: A^     74      2       194
        !          22880: \0302  "
        !          22881: A~     74      2       195
        !          22882: \0303  "
        !          22883: A"     74      2       196
        !          22884: \0304  "
        !          22885: A*     74      2       197
        !          22886: \0305  "
        !          22887: AE     99      2       198
        !          22888: \0306  "
        !          22889: C,     81      3       199
        !          22890: \0307  "
        !          22891: E`     54      2       200
        !          22892: \0310  "
        !          22893: E'     54      2       201
        !          22894: \0311  "
        !          22895: E^     54      2       202
        !          22896: \0312  "
        !          22897: E"     54      2       203
        !          22898: \0313  "
        !          22899: I`     23      2       204
        !          22900: \0314  "
        !          22901: I'     23      2       205
        !          22902: \0315  "
        !          22903: I^     23      2       206
        !          22904: \0316  "
        !          22905: I"     23      2       207
        !          22906: \0317  "
        !          22907: D-     79      2       208
        !          22908: \0320  "
        !          22909: N~     74      2       209
        !          22910: \0321  "
        !          22911: O`     87      2       210
        !          22912: \0322  "
        !          22913: O'     87      2       211
        !          22914: \0323  "
        !          22915: O^     87      2       212
        !          22916: \0324  "
        !          22917: O~     87      2       213
        !          22918: \0325  "
        !          22919: O"     87      2       214
        !          22920: \0326  "
        !          22921: xx     61      0       215
        !          22922: \0327  "
        !          22923: O/     87      2       216
        !          22924: \0330  "
        !          22925: U`     66      2       217
        !          22926: \0331  "
        !          22927: U'     66      2       218
        !          22928: \0332  "
        !          22929: U^     66      2       219
        !          22930: \0333  "
        !          22931: U"     66      2       220
        !          22932: \0334  "
        !          22933: Y'     59      2       221
        !          22934: \0335  "
        !          22935: TH     59      2       222
        !          22936: \0336  "
        !          22937: ss     55      2       223
        !          22938: \0337  "
        !          22939: a`     68      2       224
        !          22940: \0340  "
        !          22941: a'     68      2       225
        !          22942: \0341  "
        !          22943: a^     68      2       226
        !          22944: \0342  "
        !          22945: a~     68      2       227
        !          22946: \0343  "
        !          22947: a"     68      2       228
        !          22948: \0344  "
        !          22949: a*     68      2       229
        !          22950: \0345  "
        !          22951: ae     116     0       230
        !          22952: \0346  "
        !          22953: c,     65      1       231
        !          22954: \0347  "
        !          22955: e`     65      2       232
        !          22956: \0350  "
        !          22957: e'     65      2       233
        !          22958: \0351  "
        !          22959: e^     65      2       234
        !          22960: \0352  "
        !          22961: e"     65      2       235
        !          22962: \0353  "
        !          22963: i`     20      2       236
        !          22964: \0354  "
        !          22965: i'     20      2       237
        !          22966: \0355  "
        !          22967: i^     20      2       238
        !          22968: \0356  "
        !          22969: i"     20      2       239
        !          22970: \0357  "
        !          22971: d-     66      2       240
        !          22972: \0360  "
        !          22973: n~     61      2       241
        !          22974: \0361  "
        !          22975: o`     66      2       242
        !          22976: \0362  "
        !          22977: o'     66      2       243
        !          22978: \0363  "
        !          22979: o^     66      2       244
        !          22980: \0364  "
        !          22981: o~     66      2       245
        !          22982: \0365  "
        !          22983: o"     66      2       246
        !          22984: \0366  "
        !          22985: -:     61      0       247
        !          22986: \0367  "
        !          22987: o/     65      0       248
        !          22988: \0370  "
        !          22989: u`     61      2       249
        !          22990: \0371  "
        !          22991: u'     61      2       250
        !          22992: \0372  "
        !          22993: u^     61      2       251
        !          22994: \0373  "
        !          22995: u"     61      2       252
        !          22996: \0374  "
        !          22997: y'     54      3       253
        !          22998: \0375  "
        !          22999: th     68      3       254
        !          23000: \0376  "
        !          23001: y"     54      3       255
        !          23002: \0377  "
        !          23003: ^a     50      2       147
        !          23004: ~a     44      2       148
        !          23005: Ua     45      2       150
        !          23006: .a     22      2       151
        !          23007: oa     33      2       154
        !          23008: "a     55      2       157
        !          23009: Ca     30      1       158
        !          23010: va     50      2       159
        !          23011: 0707070014231123501006440057030057030000010442200522627501500002600000006154post.src/devLatin1/AXname AX
        !          23012: fontname AvantGarde-DemiOblique
        !          23013: named in prologue
        !          23014: spacewidth 28
        !          23015: charset
        !          23016: !      28      2       33
        !          23017: "      36      2       34
        !          23018: dq     "
        !          23019: #      56      2       35
        !          23020: $      56      2       36
        !          23021: %      86      2       37
        !          23022: &      68      2       38
        !          23023: '      28      2       39
        !          23024: (      38      3       40
        !          23025: )      38      3       41
        !          23026: *      44      2       42
        !          23027: +      60      0       43
        !          23028: ,      28      1       44
        !          23029: -      42      0       173
        !          23030: \0255  "
        !          23031: .      28      0       46
        !          23032: /      46      3       47
        !          23033: 0      56      2       48
        !          23034: 1      56      2       49
        !          23035: 2      56      2       50
        !          23036: 3      56      2       51
        !          23037: 4      56      2       52
        !          23038: 5      56      2       53
        !          23039: 6      56      2       54
        !          23040: 7      56      2       55
        !          23041: 8      56      2       56
        !          23042: 9      56      2       57
        !          23043: :      28      0       58
        !          23044: ;      28      1       59
        !          23045: ---    60      0       60
        !          23046: =      60      0       61
        !          23047: ---    60      0       62
        !          23048: ?      56      2       63
        !          23049: @      74      2       64
        !          23050: A      74      2       65
        !          23051: B      58      2       66
        !          23052: C      78      2       67
        !          23053: D      70      2       68
        !          23054: E      52      2       69
        !          23055: F      48      2       70
        !          23056: G      84      2       71
        !          23057: H      68      2       72
        !          23058: I      28      2       73
        !          23059: J      48      2       74
        !          23060: K      62      2       75
        !          23061: L      44      2       76
        !          23062: M      90      2       77
        !          23063: N      74      2       78
        !          23064: O      84      2       79
        !          23065: P      56      2       80
        !          23066: Q      84      2       81
        !          23067: R      58      2       82
        !          23068: S      52      2       83
        !          23069: T      42      2       84
        !          23070: U      64      2       85
        !          23071: V      70      2       86
        !          23072: W      90      2       87
        !          23073: X      68      2       88
        !          23074: Y      62      2       89
        !          23075: Z      50      2       90
        !          23076: [      32      3       91
        !          23077: \      64      2       92
        !          23078: bs     "
        !          23079: ]      32      3       93
        !          23080: ^      54      2       147
        !          23081: ---    60      2       94
        !          23082: ---    50      1       95
        !          23083: `      28      2       96
        !          23084: a      66      0       97
        !          23085: b      66      2       98
        !          23086: c      64      0       99
        !          23087: d      66      2       100
        !          23088: e      64      0       101
        !          23089: f      28      2       102
        !          23090: g      66      1       103
        !          23091: h      60      2       104
        !          23092: i      24      2       105
        !          23093: j      26      3       106
        !          23094: k      58      2       107
        !          23095: l      24      2       108
        !          23096: m      94      0       109
        !          23097: n      60      0       110
        !          23098: o      64      0       111
        !          23099: p      66      1       112
        !          23100: q      66      1       113
        !          23101: r      32      0       114
        !          23102: s      44      0       115
        !          23103: t      30      2       116
        !          23104: u      60      0       117
        !          23105: v      56      0       118
        !          23106: w      80      0       119
        !          23107: x      56      0       120
        !          23108: y      58      1       121
        !          23109: z      46      0       122
        !          23110: {      34      3       123
        !          23111: ---    60      2       124
        !          23112: }      34      3       125
        !          23113: ~      48      2       148
        !          23114: ---    60      0       126
        !          23115: \`     42      2       145
        !          23116: ga     "
        !          23117: !!     28      1       161
        !          23118: \0241  "
        !          23119: c|     56      2       162
        !          23120: \0242  "
        !          23121: ct     "
        !          23122: L-     56      2       163
        !          23123: \0243  "
        !          23124: ps     "
        !          23125: xo     56      2       164
        !          23126: \0244  "
        !          23127: cr     "
        !          23128: Y-     56      2       165
        !          23129: \0245  "
        !          23130: yn     "
        !          23131: ||     60      2       166
        !          23132: \0246  "
        !          23133: so     56      3       167
        !          23134: \0247  "
        !          23135: sc     "
        !          23136: ""     50      2       168
        !          23137: \0250  "
        !          23138: :a     "
        !          23139: co     74      2       169
        !          23140: \0251  "
        !          23141: a_     36      2       170
        !          23142: \0252  "
        !          23143: <<     46      0       171
        !          23144: \0253  "
        !          23145: -,     60      0       172
        !          23146: \0254  "
        !          23147: hy     42      0       173
        !          23148: \0255  "
        !          23149: --     60      0       45
        !          23150: ro     74      2       174
        !          23151: \0256  "
        !          23152: rg     "
        !          23153: -^     42      2       175
        !          23154: \0257  "
        !          23155: -a     "
        !          23156: 0^     40      2       176
        !          23157: \0260  "
        !          23158: +-     60      0       177
        !          23159: \0261  "
        !          23160: 2^     34      2       178
        !          23161: \0262  "
        !          23162: 3^     34      2       179
        !          23163: \0263  "
        !          23164: \'     42      2       180
        !          23165: \0264  "
        !          23166: aa     "
        !          23167: /u     58      1       181
        !          23168: \0265  "
        !          23169: P!     60      3       182
        !          23170: \0266  "
        !          23171: pg     "
        !          23172: .^     28      0       183
        !          23173: \0267  "
        !          23174: ,,     34      1       184
        !          23175: \0270  "
        !          23176: ,a     "
        !          23177: 1^     34      2       185
        !          23178: \0271  "
        !          23179: o_     36      2       186
        !          23180: \0272  "
        !          23181: >>     46      0       187
        !          23182: \0273  "
        !          23183: 14     84      2       188
        !          23184: \0274  "
        !          23185: 12     84      2       189
        !          23186: \0275  "
        !          23187: 34     84      2       190
        !          23188: \0276  "
        !          23189: ??     56      1       191
        !          23190: \0277  "
        !          23191: A`     74      2       192
        !          23192: \0300  "
        !          23193: A'     74      2       193
        !          23194: \0301  "
        !          23195: A^     74      2       194
        !          23196: \0302  "
        !          23197: A~     74      2       195
        !          23198: \0303  "
        !          23199: A"     74      2       196
        !          23200: \0304  "
        !          23201: A*     74      2       197
        !          23202: \0305  "
        !          23203: AE     90      2       198
        !          23204: \0306  "
        !          23205: C,     78      3       199
        !          23206: \0307  "
        !          23207: E`     52      2       200
        !          23208: \0310  "
        !          23209: E'     52      2       201
        !          23210: \0311  "
        !          23211: E^     52      2       202
        !          23212: \0312  "
        !          23213: E"     52      2       203
        !          23214: \0313  "
        !          23215: I`     28      2       204
        !          23216: \0314  "
        !          23217: I'     28      2       205
        !          23218: \0315  "
        !          23219: I^     28      2       206
        !          23220: \0316  "
        !          23221: I"     28      2       207
        !          23222: \0317  "
        !          23223: D-     74      2       208
        !          23224: \0320  "
        !          23225: N~     74      2       209
        !          23226: \0321  "
        !          23227: O`     84      2       210
        !          23228: \0322  "
        !          23229: O'     84      2       211
        !          23230: \0323  "
        !          23231: O^     84      2       212
        !          23232: \0324  "
        !          23233: O~     84      2       213
        !          23234: \0325  "
        !          23235: O"     84      2       214
        !          23236: \0326  "
        !          23237: xx     60      0       215
        !          23238: \0327  "
        !          23239: O/     84      2       216
        !          23240: \0330  "
        !          23241: U`     64      2       217
        !          23242: \0331  "
        !          23243: U'     64      2       218
        !          23244: \0332  "
        !          23245: U^     64      2       219
        !          23246: \0333  "
        !          23247: U"     64      2       220
        !          23248: \0334  "
        !          23249: Y'     62      2       221
        !          23250: \0335  "
        !          23251: TH     56      2       222
        !          23252: \0336  "
        !          23253: ss     60      2       223
        !          23254: \0337  "
        !          23255: a`     66      2       224
        !          23256: \0340  "
        !          23257: a'     66      2       225
        !          23258: \0341  "
        !          23259: a^     66      2       226
        !          23260: \0342  "
        !          23261: a~     66      2       227
        !          23262: \0343  "
        !          23263: a"     66      2       228
        !          23264: \0344  "
        !          23265: a*     66      2       229
        !          23266: \0345  "
        !          23267: ae     108     0       230
        !          23268: \0346  "
        !          23269: c,     64      1       231
        !          23270: \0347  "
        !          23271: e`     64      2       232
        !          23272: \0350  "
        !          23273: e'     64      2       233
        !          23274: \0351  "
        !          23275: e^     64      2       234
        !          23276: \0352  "
        !          23277: e"     64      2       235
        !          23278: \0353  "
        !          23279: i`     24      2       236
        !          23280: \0354  "
        !          23281: i'     24      2       237
        !          23282: \0355  "
        !          23283: i^     24      2       238
        !          23284: \0356  "
        !          23285: i"     24      2       239
        !          23286: \0357  "
        !          23287: d-     64      2       240
        !          23288: \0360  "
        !          23289: n~     60      2       241
        !          23290: \0361  "
        !          23291: o`     64      2       242
        !          23292: \0362  "
        !          23293: o'     64      2       243
        !          23294: \0363  "
        !          23295: o^     64      2       244
        !          23296: \0364  "
        !          23297: o~     64      2       245
        !          23298: \0365  "
        !          23299: o"     64      2       246
        !          23300: \0366  "
        !          23301: -:     60      0       247
        !          23302: \0367  "
        !          23303: o/     66      0       248
        !          23304: \0370  "
        !          23305: u`     60      2       249
        !          23306: \0371  "
        !          23307: u'     60      2       250
        !          23308: \0372  "
        !          23309: u^     60      2       251
        !          23310: \0373  "
        !          23311: u"     60      2       252
        !          23312: \0374  "
        !          23313: y'     58      3       253
        !          23314: \0375  "
        !          23315: th     66      3       254
        !          23316: \0376  "
        !          23317: y"     58      3       255
        !          23318: \0377  "
        !          23319: ^a     54      2       147
        !          23320: ~a     48      2       148
        !          23321: Ua     48      2       150
        !          23322: .a     28      2       151
        !          23323: oa     36      2       154
        !          23324: "a     70      2       157
        !          23325: Ca     34      1       158
        !          23326: va     54      2       159
        !          23327: 0707070014231123511006440057030057030000010442240522627501500002500000006137post.src/devLatin1/Hname H
        !          23328: fontname Helvetica
        !          23329: named in prologue
        !          23330: spacewidth 28
        !          23331: charset
        !          23332: !      28      2       33
        !          23333: "      36      2       34
        !          23334: dq     "
        !          23335: #      56      2       35
        !          23336: $      56      3       36
        !          23337: %      89      2       37
        !          23338: &      67      2       38
        !          23339: '      22      2       39
        !          23340: (      33      3       40
        !          23341: )      33      3       41
        !          23342: *      39      2       42
        !          23343: +      58      0       43
        !          23344: ,      28      1       44
        !          23345: -      33      0       173
        !          23346: \0255  "
        !          23347: .      28      0       46
        !          23348: /      28      2       47
        !          23349: 0      56      2       48
        !          23350: 1      56      2       49
        !          23351: 2      56      2       50
        !          23352: 3      56      2       51
        !          23353: 4      56      2       52
        !          23354: 5      56      2       53
        !          23355: 6      56      2       54
        !          23356: 7      56      2       55
        !          23357: 8      56      2       56
        !          23358: 9      56      2       57
        !          23359: :      28      0       58
        !          23360: ;      28      1       59
        !          23361: ---    58      0       60
        !          23362: =      58      0       61
        !          23363: ---    58      0       62
        !          23364: ?      56      2       63
        !          23365: @      102     3       64
        !          23366: A      67      2       65
        !          23367: B      67      2       66
        !          23368: C      72      2       67
        !          23369: D      72      2       68
        !          23370: E      67      2       69
        !          23371: F      61      2       70
        !          23372: G      78      2       71
        !          23373: H      72      2       72
        !          23374: I      28      2       73
        !          23375: J      50      2       74
        !          23376: K      67      2       75
        !          23377: L      56      2       76
        !          23378: M      83      2       77
        !          23379: N      72      2       78
        !          23380: O      78      2       79
        !          23381: P      67      2       80
        !          23382: Q      78      2       81
        !          23383: R      72      2       82
        !          23384: S      67      2       83
        !          23385: T      61      2       84
        !          23386: U      72      2       85
        !          23387: V      67      2       86
        !          23388: W      94      2       87
        !          23389: X      67      2       88
        !          23390: Y      67      2       89
        !          23391: Z      61      2       90
        !          23392: [      28      3       91
        !          23393: \      28      2       92
        !          23394: bs     "
        !          23395: ]      28      3       93
        !          23396: ^      33      2       147
        !          23397: ---    47      2       94
        !          23398: ---    56      1       95
        !          23399: `      22      2       96
        !          23400: a      56      0       97
        !          23401: b      56      2       98
        !          23402: c      50      0       99
        !          23403: d      56      2       100
        !          23404: e      56      0       101
        !          23405: f      28      2       102
        !          23406: g      56      1       103
        !          23407: h      56      2       104
        !          23408: i      22      2       105
        !          23409: j      22      3       106
        !          23410: k      50      2       107
        !          23411: l      22      2       108
        !          23412: m      83      0       109
        !          23413: n      56      0       110
        !          23414: o      56      0       111
        !          23415: p      56      1       112
        !          23416: q      56      1       113
        !          23417: r      33      0       114
        !          23418: s      50      0       115
        !          23419: t      28      2       116
        !          23420: u      56      0       117
        !          23421: v      50      0       118
        !          23422: w      72      0       119
        !          23423: x      50      0       120
        !          23424: y      50      1       121
        !          23425: z      50      0       122
        !          23426: {      33      3       123
        !          23427: ---    26      3       124
        !          23428: }      33      3       125
        !          23429: ~      33      2       148
        !          23430: ---    58      0       126
        !          23431: \`     33      2       145
        !          23432: ga     "
        !          23433: !!     33      1       161
        !          23434: \0241  "
        !          23435: c|     56      3       162
        !          23436: \0242  "
        !          23437: ct     "
        !          23438: L-     56      2       163
        !          23439: \0243  "
        !          23440: ps     "
        !          23441: xo     56      0       164
        !          23442: \0244  "
        !          23443: cr     "
        !          23444: Y-     56      2       165
        !          23445: \0245  "
        !          23446: yn     "
        !          23447: ||     26      3       166
        !          23448: \0246  "
        !          23449: so     56      3       167
        !          23450: \0247  "
        !          23451: sc     "
        !          23452: ""     33      2       168
        !          23453: \0250  "
        !          23454: :a     "
        !          23455: co     74      2       169
        !          23456: \0251  "
        !          23457: a_     37      2       170
        !          23458: \0252  "
        !          23459: <<     56      0       171
        !          23460: \0253  "
        !          23461: -,     58      0       172
        !          23462: \0254  "
        !          23463: hy     33      0       173
        !          23464: \0255  "
        !          23465: --     58      0       45
        !          23466: ro     74      2       174
        !          23467: \0256  "
        !          23468: rg     "
        !          23469: -^     33      2       175
        !          23470: \0257  "
        !          23471: -a     "
        !          23472: 0^     40      2       176
        !          23473: \0260  "
        !          23474: +-     58      2       177
        !          23475: \0261  "
        !          23476: 2^     33      2       178
        !          23477: \0262  "
        !          23478: 3^     33      2       179
        !          23479: \0263  "
        !          23480: \'     33      2       180
        !          23481: \0264  "
        !          23482: aa     "
        !          23483: /u     56      1       181
        !          23484: \0265  "
        !          23485: P!     54      3       182
        !          23486: \0266  "
        !          23487: pg     "
        !          23488: .^     28      0       183
        !          23489: \0267  "
        !          23490: ,,     33      1       184
        !          23491: \0270  "
        !          23492: ,a     "
        !          23493: 1^     33      2       185
        !          23494: \0271  "
        !          23495: o_     37      2       186
        !          23496: \0272  "
        !          23497: >>     56      0       187
        !          23498: \0273  "
        !          23499: 14     83      2       188
        !          23500: \0274  "
        !          23501: 12     83      2       189
        !          23502: \0275  "
        !          23503: 34     83      2       190
        !          23504: \0276  "
        !          23505: ??     61      1       191
        !          23506: \0277  "
        !          23507: A`     67      2       192
        !          23508: \0300  "
        !          23509: A'     67      2       193
        !          23510: \0301  "
        !          23511: A^     67      2       194
        !          23512: \0302  "
        !          23513: A~     67      2       195
        !          23514: \0303  "
        !          23515: A"     67      2       196
        !          23516: \0304  "
        !          23517: A*     67      2       197
        !          23518: \0305  "
        !          23519: AE     100     2       198
        !          23520: \0306  "
        !          23521: C,     72      3       199
        !          23522: \0307  "
        !          23523: E`     67      2       200
        !          23524: \0310  "
        !          23525: E'     67      2       201
        !          23526: \0311  "
        !          23527: E^     67      2       202
        !          23528: \0312  "
        !          23529: E"     67      2       203
        !          23530: \0313  "
        !          23531: I`     28      2       204
        !          23532: \0314  "
        !          23533: I'     28      2       205
        !          23534: \0315  "
        !          23535: I^     28      2       206
        !          23536: \0316  "
        !          23537: I"     28      2       207
        !          23538: \0317  "
        !          23539: D-     72      2       208
        !          23540: \0320  "
        !          23541: N~     72      2       209
        !          23542: \0321  "
        !          23543: O`     78      2       210
        !          23544: \0322  "
        !          23545: O'     78      2       211
        !          23546: \0323  "
        !          23547: O^     78      2       212
        !          23548: \0324  "
        !          23549: O~     78      2       213
        !          23550: \0325  "
        !          23551: O"     78      2       214
        !          23552: \0326  "
        !          23553: xx     58      0       215
        !          23554: \0327  "
        !          23555: O/     78      2       216
        !          23556: \0330  "
        !          23557: U`     72      2       217
        !          23558: \0331  "
        !          23559: U'     72      2       218
        !          23560: \0332  "
        !          23561: U^     72      2       219
        !          23562: \0333  "
        !          23563: U"     72      2       220
        !          23564: \0334  "
        !          23565: Y'     67      2       221
        !          23566: \0335  "
        !          23567: TH     67      2       222
        !          23568: \0336  "
        !          23569: ss     61      2       223
        !          23570: \0337  "
        !          23571: a`     56      2       224
        !          23572: \0340  "
        !          23573: a'     56      2       225
        !          23574: \0341  "
        !          23575: a^     56      2       226
        !          23576: \0342  "
        !          23577: a~     56      2       227
        !          23578: \0343  "
        !          23579: a"     56      2       228
        !          23580: \0344  "
        !          23581: a*     56      2       229
        !          23582: \0345  "
        !          23583: ae     89      0       230
        !          23584: \0346  "
        !          23585: c,     50      1       231
        !          23586: \0347  "
        !          23587: e`     56      2       232
        !          23588: \0350  "
        !          23589: e'     56      2       233
        !          23590: \0351  "
        !          23591: e^     56      2       234
        !          23592: \0352  "
        !          23593: e"     56      2       235
        !          23594: \0353  "
        !          23595: i`     28      2       236
        !          23596: \0354  "
        !          23597: i'     28      2       237
        !          23598: \0355  "
        !          23599: i^     28      2       238
        !          23600: \0356  "
        !          23601: i"     28      2       239
        !          23602: \0357  "
        !          23603: d-     56      2       240
        !          23604: \0360  "
        !          23605: n~     56      2       241
        !          23606: \0361  "
        !          23607: o`     56      2       242
        !          23608: \0362  "
        !          23609: o'     56      2       243
        !          23610: \0363  "
        !          23611: o^     56      2       244
        !          23612: \0364  "
        !          23613: o~     56      2       245
        !          23614: \0365  "
        !          23615: o"     56      2       246
        !          23616: \0366  "
        !          23617: -:     58      0       247
        !          23618: \0367  "
        !          23619: o/     61      0       248
        !          23620: \0370  "
        !          23621: u`     56      2       249
        !          23622: \0371  "
        !          23623: u'     56      2       250
        !          23624: \0372  "
        !          23625: u^     56      2       251
        !          23626: \0373  "
        !          23627: u"     56      2       252
        !          23628: \0374  "
        !          23629: y'     50      3       253
        !          23630: \0375  "
        !          23631: th     56      3       254
        !          23632: \0376  "
        !          23633: y"     50      3       255
        !          23634: \0377  "
        !          23635: ^a     33      2       147
        !          23636: ~a     33      2       148
        !          23637: Ua     33      2       150
        !          23638: .a     33      2       151
        !          23639: oa     33      2       154
        !          23640: "a     33      2       157
        !          23641: Ca     33      1       158
        !          23642: va     33      2       159
        !          23643: 0707070014231123521006440057030057030000010442400522627501500002600000006144post.src/devLatin1/HBname HB
        !          23644: fontname Helvetica-Bold
        !          23645: named in prologue
        !          23646: spacewidth 28
        !          23647: charset
        !          23648: !      33      2       33
        !          23649: "      47      2       34
        !          23650: dq     "
        !          23651: #      56      2       35
        !          23652: $      56      3       36
        !          23653: %      89      2       37
        !          23654: &      72      2       38
        !          23655: '      28      2       39
        !          23656: (      33      3       40
        !          23657: )      33      3       41
        !          23658: *      39      2       42
        !          23659: +      58      0       43
        !          23660: ,      28      1       44
        !          23661: -      33      0       173
        !          23662: \0255  "
        !          23663: .      28      0       46
        !          23664: /      28      2       47
        !          23665: 0      56      2       48
        !          23666: 1      56      2       49
        !          23667: 2      56      2       50
        !          23668: 3      56      2       51
        !          23669: 4      56      2       52
        !          23670: 5      56      2       53
        !          23671: 6      56      2       54
        !          23672: 7      56      2       55
        !          23673: 8      56      2       56
        !          23674: 9      56      2       57
        !          23675: :      33      0       58
        !          23676: ;      33      1       59
        !          23677: ---    58      0       60
        !          23678: =      58      0       61
        !          23679: ---    58      0       62
        !          23680: ?      61      2       63
        !          23681: @      98      3       64
        !          23682: A      72      2       65
        !          23683: B      72      2       66
        !          23684: C      72      2       67
        !          23685: D      72      2       68
        !          23686: E      67      2       69
        !          23687: F      61      2       70
        !          23688: G      78      2       71
        !          23689: H      72      2       72
        !          23690: I      28      2       73
        !          23691: J      56      2       74
        !          23692: K      72      2       75
        !          23693: L      61      2       76
        !          23694: M      83      2       77
        !          23695: N      72      2       78
        !          23696: O      78      2       79
        !          23697: P      67      2       80
        !          23698: Q      78      2       81
        !          23699: R      72      2       82
        !          23700: S      67      2       83
        !          23701: T      61      2       84
        !          23702: U      72      2       85
        !          23703: V      67      2       86
        !          23704: W      94      2       87
        !          23705: X      67      2       88
        !          23706: Y      67      2       89
        !          23707: Z      61      2       90
        !          23708: [      33      3       91
        !          23709: \      28      2       92
        !          23710: bs     "
        !          23711: ]      33      3       93
        !          23712: ^      33      2       147
        !          23713: ---    58      2       94
        !          23714: ---    56      1       95
        !          23715: `      28      2       96
        !          23716: a      56      0       97
        !          23717: b      61      2       98
        !          23718: c      56      0       99
        !          23719: d      61      2       100
        !          23720: e      56      0       101
        !          23721: f      33      2       102
        !          23722: g      61      1       103
        !          23723: h      61      2       104
        !          23724: i      28      2       105
        !          23725: j      28      3       106
        !          23726: k      56      2       107
        !          23727: l      28      2       108
        !          23728: m      89      0       109
        !          23729: n      61      0       110
        !          23730: o      61      0       111
        !          23731: p      61      1       112
        !          23732: q      61      1       113
        !          23733: r      39      0       114
        !          23734: s      56      0       115
        !          23735: t      33      2       116
        !          23736: u      61      0       117
        !          23737: v      56      0       118
        !          23738: w      78      0       119
        !          23739: x      56      0       120
        !          23740: y      56      1       121
        !          23741: z      50      0       122
        !          23742: {      39      3       123
        !          23743: ---    28      3       124
        !          23744: }      39      3       125
        !          23745: ~      33      2       148
        !          23746: ---    58      0       126
        !          23747: \`     33      2       145
        !          23748: ga     "
        !          23749: !!     33      1       161
        !          23750: \0241  "
        !          23751: c|     56      3       162
        !          23752: \0242  "
        !          23753: ct     "
        !          23754: L-     56      2       163
        !          23755: \0243  "
        !          23756: ps     "
        !          23757: xo     56      2       164
        !          23758: \0244  "
        !          23759: cr     "
        !          23760: Y-     56      2       165
        !          23761: \0245  "
        !          23762: yn     "
        !          23763: ||     28      3       166
        !          23764: \0246  "
        !          23765: so     56      3       167
        !          23766: \0247  "
        !          23767: sc     "
        !          23768: ""     33      2       168
        !          23769: \0250  "
        !          23770: :a     "
        !          23771: co     74      2       169
        !          23772: \0251  "
        !          23773: a_     37      2       170
        !          23774: \0252  "
        !          23775: <<     56      0       171
        !          23776: \0253  "
        !          23777: -,     58      0       172
        !          23778: \0254  "
        !          23779: hy     33      0       173
        !          23780: \0255  "
        !          23781: --     58      0       45
        !          23782: ro     74      2       174
        !          23783: \0256  "
        !          23784: rg     "
        !          23785: -^     33      2       175
        !          23786: \0257  "
        !          23787: -a     "
        !          23788: 0^     40      2       176
        !          23789: \0260  "
        !          23790: +-     58      2       177
        !          23791: \0261  "
        !          23792: 2^     33      2       178
        !          23793: \0262  "
        !          23794: 3^     33      2       179
        !          23795: \0263  "
        !          23796: \'     33      2       180
        !          23797: \0264  "
        !          23798: aa     "
        !          23799: /u     61      1       181
        !          23800: \0265  "
        !          23801: P!     56      3       182
        !          23802: \0266  "
        !          23803: pg     "
        !          23804: .^     28      0       183
        !          23805: \0267  "
        !          23806: ,,     33      1       184
        !          23807: \0270  "
        !          23808: ,a     "
        !          23809: 1^     33      2       185
        !          23810: \0271  "
        !          23811: o_     37      2       186
        !          23812: \0272  "
        !          23813: >>     56      0       187
        !          23814: \0273  "
        !          23815: 14     83      2       188
        !          23816: \0274  "
        !          23817: 12     83      2       189
        !          23818: \0275  "
        !          23819: 34     83      2       190
        !          23820: \0276  "
        !          23821: ??     61      1       191
        !          23822: \0277  "
        !          23823: A`     72      2       192
        !          23824: \0300  "
        !          23825: A'     72      2       193
        !          23826: \0301  "
        !          23827: A^     72      2       194
        !          23828: \0302  "
        !          23829: A~     72      2       195
        !          23830: \0303  "
        !          23831: A"     72      2       196
        !          23832: \0304  "
        !          23833: A*     72      2       197
        !          23834: \0305  "
        !          23835: AE     100     2       198
        !          23836: \0306  "
        !          23837: C,     72      3       199
        !          23838: \0307  "
        !          23839: E`     67      2       200
        !          23840: \0310  "
        !          23841: E'     67      2       201
        !          23842: \0311  "
        !          23843: E^     67      2       202
        !          23844: \0312  "
        !          23845: E"     67      2       203
        !          23846: \0313  "
        !          23847: I`     28      2       204
        !          23848: \0314  "
        !          23849: I'     28      2       205
        !          23850: \0315  "
        !          23851: I^     28      2       206
        !          23852: \0316  "
        !          23853: I"     28      2       207
        !          23854: \0317  "
        !          23855: D-     72      2       208
        !          23856: \0320  "
        !          23857: N~     72      2       209
        !          23858: \0321  "
        !          23859: O`     78      2       210
        !          23860: \0322  "
        !          23861: O'     78      2       211
        !          23862: \0323  "
        !          23863: O^     78      2       212
        !          23864: \0324  "
        !          23865: O~     78      2       213
        !          23866: \0325  "
        !          23867: O"     78      2       214
        !          23868: \0326  "
        !          23869: xx     58      0       215
        !          23870: \0327  "
        !          23871: O/     78      2       216
        !          23872: \0330  "
        !          23873: U`     72      2       217
        !          23874: \0331  "
        !          23875: U'     72      2       218
        !          23876: \0332  "
        !          23877: U^     72      2       219
        !          23878: \0333  "
        !          23879: U"     72      2       220
        !          23880: \0334  "
        !          23881: Y'     67      2       221
        !          23882: \0335  "
        !          23883: TH     67      2       222
        !          23884: \0336  "
        !          23885: ss     61      2       223
        !          23886: \0337  "
        !          23887: a`     56      2       224
        !          23888: \0340  "
        !          23889: a'     56      2       225
        !          23890: \0341  "
        !          23891: a^     56      2       226
        !          23892: \0342  "
        !          23893: a~     56      2       227
        !          23894: \0343  "
        !          23895: a"     56      2       228
        !          23896: \0344  "
        !          23897: a*     56      2       229
        !          23898: \0345  "
        !          23899: ae     89      0       230
        !          23900: \0346  "
        !          23901: c,     56      1       231
        !          23902: \0347  "
        !          23903: e`     56      2       232
        !          23904: \0350  "
        !          23905: e'     56      2       233
        !          23906: \0351  "
        !          23907: e^     56      2       234
        !          23908: \0352  "
        !          23909: e"     56      2       235
        !          23910: \0353  "
        !          23911: i`     28      2       236
        !          23912: \0354  "
        !          23913: i'     28      2       237
        !          23914: \0355  "
        !          23915: i^     28      2       238
        !          23916: \0356  "
        !          23917: i"     28      2       239
        !          23918: \0357  "
        !          23919: d-     61      2       240
        !          23920: \0360  "
        !          23921: n~     61      2       241
        !          23922: \0361  "
        !          23923: o`     61      2       242
        !          23924: \0362  "
        !          23925: o'     61      2       243
        !          23926: \0363  "
        !          23927: o^     61      2       244
        !          23928: \0364  "
        !          23929: o~     61      2       245
        !          23930: \0365  "
        !          23931: o"     61      2       246
        !          23932: \0366  "
        !          23933: -:     58      0       247
        !          23934: \0367  "
        !          23935: o/     61      0       248
        !          23936: \0370  "
        !          23937: u`     61      2       249
        !          23938: \0371  "
        !          23939: u'     61      2       250
        !          23940: \0372  "
        !          23941: u^     61      2       251
        !          23942: \0373  "
        !          23943: u"     61      2       252
        !          23944: \0374  "
        !          23945: y'     56      3       253
        !          23946: \0375  "
        !          23947: th     61      3       254
        !          23948: \0376  "
        !          23949: y"     56      3       255
        !          23950: \0377  "
        !          23951: ^a     33      2       147
        !          23952: ~a     33      2       148
        !          23953: Ua     33      2       150
        !          23954: .a     33      2       151
        !          23955: oa     33      2       154
        !          23956: "a     33      2       157
        !          23957: Ca     33      1       158
        !          23958: va     33      2       159
        !          23959: 0707070014231123531006440057030057030000010442440522627501500002600000006150post.src/devLatin1/HIname HI
        !          23960: fontname Helvetica-Oblique
        !          23961: named in prologue
        !          23962: spacewidth 28
        !          23963: charset
        !          23964: !      28      2       33
        !          23965: "      36      2       34
        !          23966: dq     "
        !          23967: #      56      2       35
        !          23968: $      56      3       36
        !          23969: %      89      2       37
        !          23970: &      67      2       38
        !          23971: '      22      2       39
        !          23972: (      33      3       40
        !          23973: )      33      3       41
        !          23974: *      39      2       42
        !          23975: +      58      0       43
        !          23976: ,      28      1       44
        !          23977: -      33      0       173
        !          23978: \0255  "
        !          23979: .      28      0       46
        !          23980: /      28      2       47
        !          23981: 0      56      2       48
        !          23982: 1      56      2       49
        !          23983: 2      56      2       50
        !          23984: 3      56      2       51
        !          23985: 4      56      2       52
        !          23986: 5      56      2       53
        !          23987: 6      56      2       54
        !          23988: 7      56      2       55
        !          23989: 8      56      2       56
        !          23990: 9      56      2       57
        !          23991: :      28      0       58
        !          23992: ;      28      1       59
        !          23993: ---    58      0       60
        !          23994: =      58      0       61
        !          23995: ---    58      0       62
        !          23996: ?      56      2       63
        !          23997: @      102     3       64
        !          23998: A      67      2       65
        !          23999: B      67      2       66
        !          24000: C      72      2       67
        !          24001: D      72      2       68
        !          24002: E      67      2       69
        !          24003: F      61      2       70
        !          24004: G      78      2       71
        !          24005: H      72      2       72
        !          24006: I      28      2       73
        !          24007: J      50      2       74
        !          24008: K      67      2       75
        !          24009: L      56      2       76
        !          24010: M      83      2       77
        !          24011: N      72      2       78
        !          24012: O      78      2       79
        !          24013: P      67      2       80
        !          24014: Q      78      2       81
        !          24015: R      72      2       82
        !          24016: S      67      2       83
        !          24017: T      61      2       84
        !          24018: U      72      2       85
        !          24019: V      67      2       86
        !          24020: W      94      2       87
        !          24021: X      67      2       88
        !          24022: Y      67      2       89
        !          24023: Z      61      2       90
        !          24024: [      28      3       91
        !          24025: \      28      2       92
        !          24026: bs     "
        !          24027: ]      28      3       93
        !          24028: ^      33      2       147
        !          24029: ---    47      2       94
        !          24030: ---    56      1       95
        !          24031: `      22      2       96
        !          24032: a      56      0       97
        !          24033: b      56      2       98
        !          24034: c      50      0       99
        !          24035: d      56      2       100
        !          24036: e      56      0       101
        !          24037: f      28      2       102
        !          24038: g      56      1       103
        !          24039: h      56      2       104
        !          24040: i      22      2       105
        !          24041: j      22      3       106
        !          24042: k      50      2       107
        !          24043: l      22      2       108
        !          24044: m      83      0       109
        !          24045: n      56      0       110
        !          24046: o      56      0       111
        !          24047: p      56      1       112
        !          24048: q      56      1       113
        !          24049: r      33      0       114
        !          24050: s      50      0       115
        !          24051: t      28      2       116
        !          24052: u      56      0       117
        !          24053: v      50      0       118
        !          24054: w      72      0       119
        !          24055: x      50      0       120
        !          24056: y      50      1       121
        !          24057: z      50      0       122
        !          24058: {      33      3       123
        !          24059: ---    26      3       124
        !          24060: }      33      3       125
        !          24061: ~      33      2       148
        !          24062: ---    58      0       126
        !          24063: \`     33      2       145
        !          24064: ga     "
        !          24065: !!     33      1       161
        !          24066: \0241  "
        !          24067: c|     56      3       162
        !          24068: \0242  "
        !          24069: ct     "
        !          24070: L-     56      2       163
        !          24071: \0243  "
        !          24072: ps     "
        !          24073: xo     56      0       164
        !          24074: \0244  "
        !          24075: cr     "
        !          24076: Y-     56      2       165
        !          24077: \0245  "
        !          24078: yn     "
        !          24079: ||     26      3       166
        !          24080: \0246  "
        !          24081: so     56      3       167
        !          24082: \0247  "
        !          24083: sc     "
        !          24084: ""     33      2       168
        !          24085: \0250  "
        !          24086: :a     "
        !          24087: co     74      2       169
        !          24088: \0251  "
        !          24089: a_     37      2       170
        !          24090: \0252  "
        !          24091: <<     56      0       171
        !          24092: \0253  "
        !          24093: -,     58      0       172
        !          24094: \0254  "
        !          24095: hy     33      0       173
        !          24096: \0255  "
        !          24097: --     58      0       45
        !          24098: ro     74      2       174
        !          24099: \0256  "
        !          24100: rg     "
        !          24101: -^     33      2       175
        !          24102: \0257  "
        !          24103: -a     "
        !          24104: 0^     40      2       176
        !          24105: \0260  "
        !          24106: +-     58      2       177
        !          24107: \0261  "
        !          24108: 2^     33      2       178
        !          24109: \0262  "
        !          24110: 3^     33      2       179
        !          24111: \0263  "
        !          24112: \'     33      2       180
        !          24113: \0264  "
        !          24114: aa     "
        !          24115: /u     56      1       181
        !          24116: \0265  "
        !          24117: P!     54      3       182
        !          24118: \0266  "
        !          24119: pg     "
        !          24120: .^     28      0       183
        !          24121: \0267  "
        !          24122: ,,     33      1       184
        !          24123: \0270  "
        !          24124: ,a     "
        !          24125: 1^     33      2       185
        !          24126: \0271  "
        !          24127: o_     37      2       186
        !          24128: \0272  "
        !          24129: >>     56      0       187
        !          24130: \0273  "
        !          24131: 14     83      2       188
        !          24132: \0274  "
        !          24133: 12     83      2       189
        !          24134: \0275  "
        !          24135: 34     83      2       190
        !          24136: \0276  "
        !          24137: ??     61      1       191
        !          24138: \0277  "
        !          24139: A`     67      2       192
        !          24140: \0300  "
        !          24141: A'     67      2       193
        !          24142: \0301  "
        !          24143: A^     67      2       194
        !          24144: \0302  "
        !          24145: A~     67      2       195
        !          24146: \0303  "
        !          24147: A"     67      2       196
        !          24148: \0304  "
        !          24149: A*     67      2       197
        !          24150: \0305  "
        !          24151: AE     100     2       198
        !          24152: \0306  "
        !          24153: C,     72      3       199
        !          24154: \0307  "
        !          24155: E`     67      2       200
        !          24156: \0310  "
        !          24157: E'     67      2       201
        !          24158: \0311  "
        !          24159: E^     67      2       202
        !          24160: \0312  "
        !          24161: E"     67      2       203
        !          24162: \0313  "
        !          24163: I`     28      2       204
        !          24164: \0314  "
        !          24165: I'     28      2       205
        !          24166: \0315  "
        !          24167: I^     28      2       206
        !          24168: \0316  "
        !          24169: I"     28      2       207
        !          24170: \0317  "
        !          24171: D-     72      2       208
        !          24172: \0320  "
        !          24173: N~     72      2       209
        !          24174: \0321  "
        !          24175: O`     78      2       210
        !          24176: \0322  "
        !          24177: O'     78      2       211
        !          24178: \0323  "
        !          24179: O^     78      2       212
        !          24180: \0324  "
        !          24181: O~     78      2       213
        !          24182: \0325  "
        !          24183: O"     78      2       214
        !          24184: \0326  "
        !          24185: xx     58      0       215
        !          24186: \0327  "
        !          24187: O/     78      2       216
        !          24188: \0330  "
        !          24189: U`     72      2       217
        !          24190: \0331  "
        !          24191: U'     72      2       218
        !          24192: \0332  "
        !          24193: U^     72      2       219
        !          24194: \0333  "
        !          24195: U"     72      2       220
        !          24196: \0334  "
        !          24197: Y'     67      2       221
        !          24198: \0335  "
        !          24199: TH     67      2       222
        !          24200: \0336  "
        !          24201: ss     61      2       223
        !          24202: \0337  "
        !          24203: a`     56      2       224
        !          24204: \0340  "
        !          24205: a'     56      2       225
        !          24206: \0341  "
        !          24207: a^     56      2       226
        !          24208: \0342  "
        !          24209: a~     56      2       227
        !          24210: \0343  "
        !          24211: a"     56      2       228
        !          24212: \0344  "
        !          24213: a*     56      2       229
        !          24214: \0345  "
        !          24215: ae     89      0       230
        !          24216: \0346  "
        !          24217: c,     50      1       231
        !          24218: \0347  "
        !          24219: e`     56      2       232
        !          24220: \0350  "
        !          24221: e'     56      2       233
        !          24222: \0351  "
        !          24223: e^     56      2       234
        !          24224: \0352  "
        !          24225: e"     56      2       235
        !          24226: \0353  "
        !          24227: i`     28      2       236
        !          24228: \0354  "
        !          24229: i'     28      2       237
        !          24230: \0355  "
        !          24231: i^     28      2       238
        !          24232: \0356  "
        !          24233: i"     28      2       239
        !          24234: \0357  "
        !          24235: d-     56      2       240
        !          24236: \0360  "
        !          24237: n~     56      2       241
        !          24238: \0361  "
        !          24239: o`     56      2       242
        !          24240: \0362  "
        !          24241: o'     56      2       243
        !          24242: \0363  "
        !          24243: o^     56      2       244
        !          24244: \0364  "
        !          24245: o~     56      2       245
        !          24246: \0365  "
        !          24247: o"     56      2       246
        !          24248: \0366  "
        !          24249: -:     58      0       247
        !          24250: \0367  "
        !          24251: o/     61      0       248
        !          24252: \0370  "
        !          24253: u`     56      2       249
        !          24254: \0371  "
        !          24255: u'     56      2       250
        !          24256: \0372  "
        !          24257: u^     56      2       251
        !          24258: \0373  "
        !          24259: u"     56      2       252
        !          24260: \0374  "
        !          24261: y'     50      3       253
        !          24262: \0375  "
        !          24263: th     56      3       254
        !          24264: \0376  "
        !          24265: y"     50      3       255
        !          24266: \0377  "
        !          24267: ^a     33      2       147
        !          24268: ~a     33      2       148
        !          24269: Ua     33      2       150
        !          24270: .a     33      2       151
        !          24271: oa     33      2       154
        !          24272: "a     33      2       157
        !          24273: Ca     33      1       158
        !          24274: va     33      2       159
        !          24275: 0707070014231123541006440057030057030000010442600522627501500002600000006153post.src/devLatin1/HXname HX
        !          24276: fontname Helvetica-BoldOblique
        !          24277: named in prologue
        !          24278: spacewidth 28
        !          24279: charset
        !          24280: !      33      2       33
        !          24281: "      47      2       34
        !          24282: dq     "
        !          24283: #      56      2       35
        !          24284: $      56      3       36
        !          24285: %      89      2       37
        !          24286: &      72      2       38
        !          24287: '      28      2       39
        !          24288: (      33      3       40
        !          24289: )      33      3       41
        !          24290: *      39      2       42
        !          24291: +      58      0       43
        !          24292: ,      28      1       44
        !          24293: -      33      0       173
        !          24294: \0255  "
        !          24295: .      28      0       46
        !          24296: /      28      2       47
        !          24297: 0      56      2       48
        !          24298: 1      56      2       49
        !          24299: 2      56      2       50
        !          24300: 3      56      2       51
        !          24301: 4      56      2       52
        !          24302: 5      56      2       53
        !          24303: 6      56      2       54
        !          24304: 7      56      2       55
        !          24305: 8      56      2       56
        !          24306: 9      56      2       57
        !          24307: :      33      0       58
        !          24308: ;      33      1       59
        !          24309: ---    58      0       60
        !          24310: =      58      0       61
        !          24311: ---    58      0       62
        !          24312: ?      61      2       63
        !          24313: @      98      3       64
        !          24314: A      72      2       65
        !          24315: B      72      2       66
        !          24316: C      72      2       67
        !          24317: D      72      2       68
        !          24318: E      67      2       69
        !          24319: F      61      2       70
        !          24320: G      78      2       71
        !          24321: H      72      2       72
        !          24322: I      28      2       73
        !          24323: J      56      2       74
        !          24324: K      72      2       75
        !          24325: L      61      2       76
        !          24326: M      83      2       77
        !          24327: N      72      2       78
        !          24328: O      78      2       79
        !          24329: P      67      2       80
        !          24330: Q      78      2       81
        !          24331: R      72      2       82
        !          24332: S      67      2       83
        !          24333: T      61      2       84
        !          24334: U      72      2       85
        !          24335: V      67      2       86
        !          24336: W      94      2       87
        !          24337: X      67      2       88
        !          24338: Y      67      2       89
        !          24339: Z      61      2       90
        !          24340: [      33      3       91
        !          24341: \      28      2       92
        !          24342: bs     "
        !          24343: ]      33      3       93
        !          24344: ^      33      2       147
        !          24345: ---    58      2       94
        !          24346: ---    56      1       95
        !          24347: `      28      2       96
        !          24348: a      56      0       97
        !          24349: b      61      2       98
        !          24350: c      56      0       99
        !          24351: d      61      2       100
        !          24352: e      56      0       101
        !          24353: f      33      2       102
        !          24354: g      61      1       103
        !          24355: h      61      2       104
        !          24356: i      28      2       105
        !          24357: j      28      3       106
        !          24358: k      56      2       107
        !          24359: l      28      2       108
        !          24360: m      89      0       109
        !          24361: n      61      0       110
        !          24362: o      61      0       111
        !          24363: p      61      1       112
        !          24364: q      61      1       113
        !          24365: r      39      0       114
        !          24366: s      56      0       115
        !          24367: t      33      2       116
        !          24368: u      61      0       117
        !          24369: v      56      0       118
        !          24370: w      78      0       119
        !          24371: x      56      0       120
        !          24372: y      56      1       121
        !          24373: z      50      0       122
        !          24374: {      39      3       123
        !          24375: ---    28      3       124
        !          24376: }      39      3       125
        !          24377: ~      33      2       148
        !          24378: ---    58      0       126
        !          24379: \`     33      2       145
        !          24380: ga     "
        !          24381: !!     33      1       161
        !          24382: \0241  "
        !          24383: c|     56      3       162
        !          24384: \0242  "
        !          24385: ct     "
        !          24386: L-     56      2       163
        !          24387: \0243  "
        !          24388: ps     "
        !          24389: xo     56      2       164
        !          24390: \0244  "
        !          24391: cr     "
        !          24392: Y-     56      2       165
        !          24393: \0245  "
        !          24394: yn     "
        !          24395: ||     28      3       166
        !          24396: \0246  "
        !          24397: so     56      3       167
        !          24398: \0247  "
        !          24399: sc     "
        !          24400: ""     33      2       168
        !          24401: \0250  "
        !          24402: :a     "
        !          24403: co     74      2       169
        !          24404: \0251  "
        !          24405: a_     37      2       170
        !          24406: \0252  "
        !          24407: <<     56      0       171
        !          24408: \0253  "
        !          24409: -,     58      0       172
        !          24410: \0254  "
        !          24411: hy     33      0       173
        !          24412: \0255  "
        !          24413: --     58      0       45
        !          24414: ro     74      2       174
        !          24415: \0256  "
        !          24416: rg     "
        !          24417: -^     33      2       175
        !          24418: \0257  "
        !          24419: -a     "
        !          24420: 0^     40      2       176
        !          24421: \0260  "
        !          24422: +-     58      2       177
        !          24423: \0261  "
        !          24424: 2^     33      2       178
        !          24425: \0262  "
        !          24426: 3^     33      2       179
        !          24427: \0263  "
        !          24428: \'     33      2       180
        !          24429: \0264  "
        !          24430: aa     "
        !          24431: /u     61      1       181
        !          24432: \0265  "
        !          24433: P!     56      3       182
        !          24434: \0266  "
        !          24435: pg     "
        !          24436: .^     28      0       183
        !          24437: \0267  "
        !          24438: ,,     33      1       184
        !          24439: \0270  "
        !          24440: ,a     "
        !          24441: 1^     33      2       185
        !          24442: \0271  "
        !          24443: o_     37      2       186
        !          24444: \0272  "
        !          24445: >>     56      0       187
        !          24446: \0273  "
        !          24447: 14     83      2       188
        !          24448: \0274  "
        !          24449: 12     83      2       189
        !          24450: \0275  "
        !          24451: 34     83      2       190
        !          24452: \0276  "
        !          24453: ??     61      1       191
        !          24454: \0277  "
        !          24455: A`     72      2       192
        !          24456: \0300  "
        !          24457: A'     72      2       193
        !          24458: \0301  "
        !          24459: A^     72      2       194
        !          24460: \0302  "
        !          24461: A~     72      2       195
        !          24462: \0303  "
        !          24463: A"     72      2       196
        !          24464: \0304  "
        !          24465: A*     72      2       197
        !          24466: \0305  "
        !          24467: AE     100     2       198
        !          24468: \0306  "
        !          24469: C,     72      3       199
        !          24470: \0307  "
        !          24471: E`     67      2       200
        !          24472: \0310  "
        !          24473: E'     67      2       201
        !          24474: \0311  "
        !          24475: E^     67      2       202
        !          24476: \0312  "
        !          24477: E"     67      2       203
        !          24478: \0313  "
        !          24479: I`     28      2       204
        !          24480: \0314  "
        !          24481: I'     28      2       205
        !          24482: \0315  "
        !          24483: I^     28      2       206
        !          24484: \0316  "
        !          24485: I"     28      2       207
        !          24486: \0317  "
        !          24487: D-     72      2       208
        !          24488: \0320  "
        !          24489: N~     72      2       209
        !          24490: \0321  "
        !          24491: O`     78      2       210
        !          24492: \0322  "
        !          24493: O'     78      2       211
        !          24494: \0323  "
        !          24495: O^     78      2       212
        !          24496: \0324  "
        !          24497: O~     78      2       213
        !          24498: \0325  "
        !          24499: O"     78      2       214
        !          24500: \0326  "
        !          24501: xx     58      0       215
        !          24502: \0327  "
        !          24503: O/     78      2       216
        !          24504: \0330  "
        !          24505: U`     72      2       217
        !          24506: \0331  "
        !          24507: U'     72      2       218
        !          24508: \0332  "
        !          24509: U^     72      2       219
        !          24510: \0333  "
        !          24511: U"     72      2       220
        !          24512: \0334  "
        !          24513: Y'     67      2       221
        !          24514: \0335  "
        !          24515: TH     67      2       222
        !          24516: \0336  "
        !          24517: ss     61      2       223
        !          24518: \0337  "
        !          24519: a`     56      2       224
        !          24520: \0340  "
        !          24521: a'     56      2       225
        !          24522: \0341  "
        !          24523: a^     56      2       226
        !          24524: \0342  "
        !          24525: a~     56      2       227
        !          24526: \0343  "
        !          24527: a"     56      2       228
        !          24528: \0344  "
        !          24529: a*     56      2       229
        !          24530: \0345  "
        !          24531: ae     89      0       230
        !          24532: \0346  "
        !          24533: c,     56      1       231
        !          24534: \0347  "
        !          24535: e`     56      2       232
        !          24536: \0350  "
        !          24537: e'     56      2       233
        !          24538: \0351  "
        !          24539: e^     56      2       234
        !          24540: \0352  "
        !          24541: e"     56      2       235
        !          24542: \0353  "
        !          24543: i`     28      2       236
        !          24544: \0354  "
        !          24545: i'     28      2       237
        !          24546: \0355  "
        !          24547: i^     28      2       238
        !          24548: \0356  "
        !          24549: i"     28      2       239
        !          24550: \0357  "
        !          24551: d-     61      2       240
        !          24552: \0360  "
        !          24553: n~     61      2       241
        !          24554: \0361  "
        !          24555: o`     61      2       242
        !          24556: \0362  "
        !          24557: o'     61      2       243
        !          24558: \0363  "
        !          24559: o^     61      2       244
        !          24560: \0364  "
        !          24561: o~     61      2       245
        !          24562: \0365  "
        !          24563: o"     61      2       246
        !          24564: \0366  "
        !          24565: -:     58      0       247
        !          24566: \0367  "
        !          24567: o/     61      0       248
        !          24568: \0370  "
        !          24569: u`     61      2       249
        !          24570: \0371  "
        !          24571: u'     61      2       250
        !          24572: \0372  "
        !          24573: u^     61      2       251
        !          24574: \0373  "
        !          24575: u"     61      2       252
        !          24576: \0374  "
        !          24577: y'     56      3       253
        !          24578: \0375  "
        !          24579: th     61      3       254
        !          24580: \0376  "
        !          24581: y"     56      3       255
        !          24582: \0377  "
        !          24583: ^a     33      2       147
        !          24584: ~a     33      2       148
        !          24585: Ua     33      2       150
        !          24586: .a     33      2       151
        !          24587: oa     33      2       154
        !          24588: "a     33      2       157
        !          24589: Ca     33      1       158
        !          24590: va     33      2       159
        !          24591: 0707070014231123551006440057030057030000010442640522627501600002600000006152post.src/devLatin1/Hbname Hb
        !          24592: fontname Helvetica-Narrow-Bold
        !          24593: named in prologue
        !          24594: spacewidth 23
        !          24595: charset
        !          24596: !      27      2       33
        !          24597: "      39      2       34
        !          24598: dq     "
        !          24599: #      46      2       35
        !          24600: $      46      3       36
        !          24601: %      73      2       37
        !          24602: &      59      2       38
        !          24603: '      23      2       39
        !          24604: (      27      3       40
        !          24605: )      27      3       41
        !          24606: *      32      2       42
        !          24607: +      48      0       43
        !          24608: ,      23      1       44
        !          24609: -      27      0       173
        !          24610: \0255  "
        !          24611: .      23      0       46
        !          24612: /      23      2       47
        !          24613: 0      46      2       48
        !          24614: 1      46      2       49
        !          24615: 2      46      2       50
        !          24616: 3      46      2       51
        !          24617: 4      46      2       52
        !          24618: 5      46      2       53
        !          24619: 6      46      2       54
        !          24620: 7      46      2       55
        !          24621: 8      46      2       56
        !          24622: 9      46      2       57
        !          24623: :      27      0       58
        !          24624: ;      27      1       59
        !          24625: ---    48      0       60
        !          24626: =      48      0       61
        !          24627: ---    48      0       62
        !          24628: ?      50      2       63
        !          24629: @      80      3       64
        !          24630: A      59      2       65
        !          24631: B      59      2       66
        !          24632: C      59      2       67
        !          24633: D      59      2       68
        !          24634: E      55      2       69
        !          24635: F      50      2       70
        !          24636: G      64      2       71
        !          24637: H      59      2       72
        !          24638: I      23      2       73
        !          24639: J      46      2       74
        !          24640: K      59      2       75
        !          24641: L      50      2       76
        !          24642: M      68      2       77
        !          24643: N      59      2       78
        !          24644: O      64      2       79
        !          24645: P      55      2       80
        !          24646: Q      64      2       81
        !          24647: R      59      2       82
        !          24648: S      55      2       83
        !          24649: T      50      2       84
        !          24650: U      59      2       85
        !          24651: V      55      2       86
        !          24652: W      77      2       87
        !          24653: X      55      2       88
        !          24654: Y      55      2       89
        !          24655: Z      50      2       90
        !          24656: [      27      3       91
        !          24657: \      23      2       92
        !          24658: bs     "
        !          24659: ]      27      3       93
        !          24660: ^      27      2       147
        !          24661: ---    48      2       94
        !          24662: ---    46      1       95
        !          24663: `      23      2       96
        !          24664: a      46      0       97
        !          24665: b      50      2       98
        !          24666: c      46      0       99
        !          24667: d      50      2       100
        !          24668: e      46      0       101
        !          24669: f      27      2       102
        !          24670: g      50      1       103
        !          24671: h      50      2       104
        !          24672: i      23      2       105
        !          24673: j      23      3       106
        !          24674: k      46      2       107
        !          24675: l      23      2       108
        !          24676: m      73      0       109
        !          24677: n      50      0       110
        !          24678: o      50      0       111
        !          24679: p      50      1       112
        !          24680: q      50      1       113
        !          24681: r      32      0       114
        !          24682: s      46      0       115
        !          24683: t      27      2       116
        !          24684: u      50      0       117
        !          24685: v      46      0       118
        !          24686: w      64      0       119
        !          24687: x      46      0       120
        !          24688: y      46      1       121
        !          24689: z      41      0       122
        !          24690: {      32      3       123
        !          24691: ---    23      3       124
        !          24692: }      32      3       125
        !          24693: ~      27      2       148
        !          24694: ---    48      0       126
        !          24695: \`     27      2       145
        !          24696: ga     "
        !          24697: !!     27      1       161
        !          24698: \0241  "
        !          24699: c|     46      3       162
        !          24700: \0242  "
        !          24701: ct     "
        !          24702: L-     46      2       163
        !          24703: \0243  "
        !          24704: ps     "
        !          24705: xo     46      2       164
        !          24706: \0244  "
        !          24707: cr     "
        !          24708: Y-     46      2       165
        !          24709: \0245  "
        !          24710: yn     "
        !          24711: ||     23      3       166
        !          24712: \0246  "
        !          24713: so     46      3       167
        !          24714: \0247  "
        !          24715: sc     "
        !          24716: ""     27      2       168
        !          24717: \0250  "
        !          24718: :a     "
        !          24719: co     60      2       169
        !          24720: \0251  "
        !          24721: a_     30      2       170
        !          24722: \0252  "
        !          24723: <<     46      0       171
        !          24724: \0253  "
        !          24725: -,     48      0       172
        !          24726: \0254  "
        !          24727: hy     27      0       173
        !          24728: \0255  "
        !          24729: --     48      0       45
        !          24730: ro     60      2       174
        !          24731: \0256  "
        !          24732: rg     "
        !          24733: -^     27      2       175
        !          24734: \0257  "
        !          24735: -a     "
        !          24736: 0^     33      2       176
        !          24737: \0260  "
        !          24738: +-     48      2       177
        !          24739: \0261  "
        !          24740: 2^     27      2       178
        !          24741: \0262  "
        !          24742: 3^     27      2       179
        !          24743: \0263  "
        !          24744: \'     27      2       180
        !          24745: \0264  "
        !          24746: aa     "
        !          24747: /u     50      1       181
        !          24748: \0265  "
        !          24749: P!     46      3       182
        !          24750: \0266  "
        !          24751: pg     "
        !          24752: .^     23      0       183
        !          24753: \0267  "
        !          24754: ,,     27      1       184
        !          24755: \0270  "
        !          24756: ,a     "
        !          24757: 1^     27      2       185
        !          24758: \0271  "
        !          24759: o_     30      2       186
        !          24760: \0272  "
        !          24761: >>     46      0       187
        !          24762: \0273  "
        !          24763: 14     68      2       188
        !          24764: \0274  "
        !          24765: 12     68      2       189
        !          24766: \0275  "
        !          24767: 34     68      2       190
        !          24768: \0276  "
        !          24769: ??     50      1       191
        !          24770: \0277  "
        !          24771: A`     59      2       192
        !          24772: \0300  "
        !          24773: A'     59      2       193
        !          24774: \0301  "
        !          24775: A^     59      2       194
        !          24776: \0302  "
        !          24777: A~     59      2       195
        !          24778: \0303  "
        !          24779: A"     59      2       196
        !          24780: \0304  "
        !          24781: A*     59      2       197
        !          24782: \0305  "
        !          24783: AE     82      2       198
        !          24784: \0306  "
        !          24785: C,     59      3       199
        !          24786: \0307  "
        !          24787: E`     55      2       200
        !          24788: \0310  "
        !          24789: E'     55      2       201
        !          24790: \0311  "
        !          24791: E^     55      2       202
        !          24792: \0312  "
        !          24793: E"     55      2       203
        !          24794: \0313  "
        !          24795: I`     23      2       204
        !          24796: \0314  "
        !          24797: I'     23      2       205
        !          24798: \0315  "
        !          24799: I^     23      2       206
        !          24800: \0316  "
        !          24801: I"     23      2       207
        !          24802: \0317  "
        !          24803: D-     59      2       208
        !          24804: \0320  "
        !          24805: N~     59      2       209
        !          24806: \0321  "
        !          24807: O`     64      2       210
        !          24808: \0322  "
        !          24809: O'     64      2       211
        !          24810: \0323  "
        !          24811: O^     64      2       212
        !          24812: \0324  "
        !          24813: O~     64      2       213
        !          24814: \0325  "
        !          24815: O"     64      2       214
        !          24816: \0326  "
        !          24817: xx     48      0       215
        !          24818: \0327  "
        !          24819: O/     64      2       216
        !          24820: \0330  "
        !          24821: U`     59      2       217
        !          24822: \0331  "
        !          24823: U'     59      2       218
        !          24824: \0332  "
        !          24825: U^     59      2       219
        !          24826: \0333  "
        !          24827: U"     59      2       220
        !          24828: \0334  "
        !          24829: Y'     55      2       221
        !          24830: \0335  "
        !          24831: TH     55      2       222
        !          24832: \0336  "
        !          24833: ss     50      2       223
        !          24834: \0337  "
        !          24835: a`     46      2       224
        !          24836: \0340  "
        !          24837: a'     46      2       225
        !          24838: \0341  "
        !          24839: a^     46      2       226
        !          24840: \0342  "
        !          24841: a~     46      2       227
        !          24842: \0343  "
        !          24843: a"     46      2       228
        !          24844: \0344  "
        !          24845: a*     46      2       229
        !          24846: \0345  "
        !          24847: ae     73      0       230
        !          24848: \0346  "
        !          24849: c,     46      1       231
        !          24850: \0347  "
        !          24851: e`     46      2       232
        !          24852: \0350  "
        !          24853: e'     46      2       233
        !          24854: \0351  "
        !          24855: e^     46      2       234
        !          24856: \0352  "
        !          24857: e"     46      2       235
        !          24858: \0353  "
        !          24859: i`     23      2       236
        !          24860: \0354  "
        !          24861: i'     23      2       237
        !          24862: \0355  "
        !          24863: i^     23      2       238
        !          24864: \0356  "
        !          24865: i"     23      2       239
        !          24866: \0357  "
        !          24867: d-     50      2       240
        !          24868: \0360  "
        !          24869: n~     50      2       241
        !          24870: \0361  "
        !          24871: o`     50      2       242
        !          24872: \0362  "
        !          24873: o'     50      2       243
        !          24874: \0363  "
        !          24875: o^     50      2       244
        !          24876: \0364  "
        !          24877: o~     50      2       245
        !          24878: \0365  "
        !          24879: o"     50      2       246
        !          24880: \0366  "
        !          24881: -:     48      0       247
        !          24882: \0367  "
        !          24883: o/     50      0       248
        !          24884: \0370  "
        !          24885: u`     50      2       249
        !          24886: \0371  "
        !          24887: u'     50      2       250
        !          24888: \0372  "
        !          24889: u^     50      2       251
        !          24890: \0373  "
        !          24891: u"     50      2       252
        !          24892: \0374  "
        !          24893: y'     46      3       253
        !          24894: \0375  "
        !          24895: th     50      3       254
        !          24896: \0376  "
        !          24897: y"     46      3       255
        !          24898: \0377  "
        !          24899: ^a     27      2       147
        !          24900: ~a     27      2       148
        !          24901: Ua     27      2       150
        !          24902: .a     27      2       151
        !          24903: oa     27      2       154
        !          24904: "a     27      2       157
        !          24905: Ca     27      1       158
        !          24906: va     27      2       159
        !          24907: 0707070014231123561006440057030057030000010443000522627501600002600000006155post.src/devLatin1/Hiname Hi
        !          24908: fontname Helvetica-Narrow-Oblique
        !          24909: named in prologue
        !          24910: spacewidth 23
        !          24911: charset
        !          24912: !      23      2       33
        !          24913: "      29      2       34
        !          24914: dq     "
        !          24915: #      46      2       35
        !          24916: $      46      3       36
        !          24917: %      73      2       37
        !          24918: &      55      2       38
        !          24919: '      18      2       39
        !          24920: (      27      3       40
        !          24921: )      27      3       41
        !          24922: *      32      2       42
        !          24923: +      48      0       43
        !          24924: ,      23      1       44
        !          24925: -      27      0       173
        !          24926: \0255  "
        !          24927: .      23      0       46
        !          24928: /      23      2       47
        !          24929: 0      46      2       48
        !          24930: 1      46      2       49
        !          24931: 2      46      2       50
        !          24932: 3      46      2       51
        !          24933: 4      46      2       52
        !          24934: 5      46      2       53
        !          24935: 6      46      2       54
        !          24936: 7      46      2       55
        !          24937: 8      46      2       56
        !          24938: 9      46      2       57
        !          24939: :      23      0       58
        !          24940: ;      23      1       59
        !          24941: ---    48      0       60
        !          24942: =      48      0       61
        !          24943: ---    48      0       62
        !          24944: ?      46      2       63
        !          24945: @      83      3       64
        !          24946: A      55      2       65
        !          24947: B      55      2       66
        !          24948: C      59      2       67
        !          24949: D      59      2       68
        !          24950: E      55      2       69
        !          24951: F      50      2       70
        !          24952: G      64      2       71
        !          24953: H      59      2       72
        !          24954: I      23      2       73
        !          24955: J      41      2       74
        !          24956: K      55      2       75
        !          24957: L      46      2       76
        !          24958: M      68      2       77
        !          24959: N      59      2       78
        !          24960: O      64      2       79
        !          24961: P      55      2       80
        !          24962: Q      64      2       81
        !          24963: R      59      2       82
        !          24964: S      55      2       83
        !          24965: T      50      2       84
        !          24966: U      59      2       85
        !          24967: V      55      2       86
        !          24968: W      77      2       87
        !          24969: X      55      2       88
        !          24970: Y      55      2       89
        !          24971: Z      50      2       90
        !          24972: [      23      3       91
        !          24973: \      23      2       92
        !          24974: bs     "
        !          24975: ]      23      3       93
        !          24976: ^      27      2       147
        !          24977: ---    38      2       94
        !          24978: ---    46      1       95
        !          24979: `      18      2       96
        !          24980: a      46      0       97
        !          24981: b      46      2       98
        !          24982: c      41      0       99
        !          24983: d      46      2       100
        !          24984: e      46      0       101
        !          24985: f      23      2       102
        !          24986: g      46      1       103
        !          24987: h      46      2       104
        !          24988: i      18      2       105
        !          24989: j      18      3       106
        !          24990: k      41      2       107
        !          24991: l      18      2       108
        !          24992: m      68      0       109
        !          24993: n      46      0       110
        !          24994: o      46      0       111
        !          24995: p      46      1       112
        !          24996: q      46      1       113
        !          24997: r      27      0       114
        !          24998: s      41      0       115
        !          24999: t      23      2       116
        !          25000: u      46      0       117
        !          25001: v      41      0       118
        !          25002: w      59      0       119
        !          25003: x      41      0       120
        !          25004: y      41      1       121
        !          25005: z      41      0       122
        !          25006: {      27      3       123
        !          25007: ---    21      3       124
        !          25008: }      27      3       125
        !          25009: ~      27      2       148
        !          25010: ---    48      0       126
        !          25011: \`     27      2       145
        !          25012: ga     "
        !          25013: !!     27      1       161
        !          25014: \0241  "
        !          25015: c|     46      3       162
        !          25016: \0242  "
        !          25017: ct     "
        !          25018: L-     46      2       163
        !          25019: \0243  "
        !          25020: ps     "
        !          25021: xo     46      0       164
        !          25022: \0244  "
        !          25023: cr     "
        !          25024: Y-     46      2       165
        !          25025: \0245  "
        !          25026: yn     "
        !          25027: ||     21      3       166
        !          25028: \0246  "
        !          25029: so     46      3       167
        !          25030: \0247  "
        !          25031: sc     "
        !          25032: ""     27      2       168
        !          25033: \0250  "
        !          25034: :a     "
        !          25035: co     60      2       169
        !          25036: \0251  "
        !          25037: a_     30      2       170
        !          25038: \0252  "
        !          25039: <<     46      0       171
        !          25040: \0253  "
        !          25041: -,     48      0       172
        !          25042: \0254  "
        !          25043: hy     27      0       173
        !          25044: \0255  "
        !          25045: --     48      0       45
        !          25046: ro     60      2       174
        !          25047: \0256  "
        !          25048: rg     "
        !          25049: -^     27      2       175
        !          25050: \0257  "
        !          25051: -a     "
        !          25052: 0^     33      2       176
        !          25053: \0260  "
        !          25054: +-     48      2       177
        !          25055: \0261  "
        !          25056: 2^     27      2       178
        !          25057: \0262  "
        !          25058: 3^     27      2       179
        !          25059: \0263  "
        !          25060: \'     27      2       180
        !          25061: \0264  "
        !          25062: aa     "
        !          25063: /u     46      1       181
        !          25064: \0265  "
        !          25065: P!     44      3       182
        !          25066: \0266  "
        !          25067: pg     "
        !          25068: .^     23      0       183
        !          25069: \0267  "
        !          25070: ,,     27      1       184
        !          25071: \0270  "
        !          25072: ,a     "
        !          25073: 1^     27      2       185
        !          25074: \0271  "
        !          25075: o_     30      2       186
        !          25076: \0272  "
        !          25077: >>     46      0       187
        !          25078: \0273  "
        !          25079: 14     68      2       188
        !          25080: \0274  "
        !          25081: 12     68      2       189
        !          25082: \0275  "
        !          25083: 34     68      2       190
        !          25084: \0276  "
        !          25085: ??     50      1       191
        !          25086: \0277  "
        !          25087: A`     55      2       192
        !          25088: \0300  "
        !          25089: A'     55      2       193
        !          25090: \0301  "
        !          25091: A^     55      2       194
        !          25092: \0302  "
        !          25093: A~     55      2       195
        !          25094: \0303  "
        !          25095: A"     55      2       196
        !          25096: \0304  "
        !          25097: A*     55      2       197
        !          25098: \0305  "
        !          25099: AE     82      2       198
        !          25100: \0306  "
        !          25101: C,     59      3       199
        !          25102: \0307  "
        !          25103: E`     55      2       200
        !          25104: \0310  "
        !          25105: E'     55      2       201
        !          25106: \0311  "
        !          25107: E^     55      2       202
        !          25108: \0312  "
        !          25109: E"     55      2       203
        !          25110: \0313  "
        !          25111: I`     23      2       204
        !          25112: \0314  "
        !          25113: I'     23      2       205
        !          25114: \0315  "
        !          25115: I^     23      2       206
        !          25116: \0316  "
        !          25117: I"     23      2       207
        !          25118: \0317  "
        !          25119: D-     59      2       208
        !          25120: \0320  "
        !          25121: N~     59      2       209
        !          25122: \0321  "
        !          25123: O`     64      2       210
        !          25124: \0322  "
        !          25125: O'     64      2       211
        !          25126: \0323  "
        !          25127: O^     64      2       212
        !          25128: \0324  "
        !          25129: O~     64      2       213
        !          25130: \0325  "
        !          25131: O"     64      2       214
        !          25132: \0326  "
        !          25133: xx     48      0       215
        !          25134: \0327  "
        !          25135: O/     64      2       216
        !          25136: \0330  "
        !          25137: U`     59      2       217
        !          25138: \0331  "
        !          25139: U'     59      2       218
        !          25140: \0332  "
        !          25141: U^     59      2       219
        !          25142: \0333  "
        !          25143: U"     59      2       220
        !          25144: \0334  "
        !          25145: Y'     55      2       221
        !          25146: \0335  "
        !          25147: TH     55      2       222
        !          25148: \0336  "
        !          25149: ss     50      2       223
        !          25150: \0337  "
        !          25151: a`     46      2       224
        !          25152: \0340  "
        !          25153: a'     46      2       225
        !          25154: \0341  "
        !          25155: a^     46      2       226
        !          25156: \0342  "
        !          25157: a~     46      2       227
        !          25158: \0343  "
        !          25159: a"     46      2       228
        !          25160: \0344  "
        !          25161: a*     46      2       229
        !          25162: \0345  "
        !          25163: ae     73      0       230
        !          25164: \0346  "
        !          25165: c,     41      1       231
        !          25166: \0347  "
        !          25167: e`     46      2       232
        !          25168: \0350  "
        !          25169: e'     46      2       233
        !          25170: \0351  "
        !          25171: e^     46      2       234
        !          25172: \0352  "
        !          25173: e"     46      2       235
        !          25174: \0353  "
        !          25175: i`     23      2       236
        !          25176: \0354  "
        !          25177: i'     23      2       237
        !          25178: \0355  "
        !          25179: i^     23      2       238
        !          25180: \0356  "
        !          25181: i"     23      2       239
        !          25182: \0357  "
        !          25183: d-     46      2       240
        !          25184: \0360  "
        !          25185: n~     46      2       241
        !          25186: \0361  "
        !          25187: o`     46      2       242
        !          25188: \0362  "
        !          25189: o'     46      2       243
        !          25190: \0363  "
        !          25191: o^     46      2       244
        !          25192: \0364  "
        !          25193: o~     46      2       245
        !          25194: \0365  "
        !          25195: o"     46      2       246
        !          25196: \0366  "
        !          25197: -:     48      0       247
        !          25198: \0367  "
        !          25199: o/     50      0       248
        !          25200: \0370  "
        !          25201: u`     46      2       249
        !          25202: \0371  "
        !          25203: u'     46      2       250
        !          25204: \0372  "
        !          25205: u^     46      2       251
        !          25206: \0373  "
        !          25207: u"     46      2       252
        !          25208: \0374  "
        !          25209: y'     41      3       253
        !          25210: \0375  "
        !          25211: th     46      3       254
        !          25212: \0376  "
        !          25213: y"     41      3       255
        !          25214: \0377  "
        !          25215: ^a     27      2       147
        !          25216: ~a     27      2       148
        !          25217: Ua     27      2       150
        !          25218: .a     27      2       151
        !          25219: oa     27      2       154
        !          25220: "a     27      2       157
        !          25221: Ca     27      1       158
        !          25222: va     27      2       159
        !          25223: 0707070014231123571006440057030057030000010443040522627501600002600000006145post.src/devLatin1/Hrname Hr
        !          25224: fontname Helvetica-Narrow
        !          25225: named in prologue
        !          25226: spacewidth 23
        !          25227: charset
        !          25228: !      23      2       33
        !          25229: "      29      2       34
        !          25230: dq     "
        !          25231: #      46      2       35
        !          25232: $      46      3       36
        !          25233: %      73      2       37
        !          25234: &      55      2       38
        !          25235: '      18      2       39
        !          25236: (      27      3       40
        !          25237: )      27      3       41
        !          25238: *      32      2       42
        !          25239: +      48      0       43
        !          25240: ,      23      1       44
        !          25241: -      27      0       173
        !          25242: \0255  "
        !          25243: .      23      0       46
        !          25244: /      23      2       47
        !          25245: 0      46      2       48
        !          25246: 1      46      2       49
        !          25247: 2      46      2       50
        !          25248: 3      46      2       51
        !          25249: 4      46      2       52
        !          25250: 5      46      2       53
        !          25251: 6      46      2       54
        !          25252: 7      46      2       55
        !          25253: 8      46      2       56
        !          25254: 9      46      2       57
        !          25255: :      23      0       58
        !          25256: ;      23      1       59
        !          25257: ---    48      0       60
        !          25258: =      48      0       61
        !          25259: ---    48      0       62
        !          25260: ?      46      2       63
        !          25261: @      83      3       64
        !          25262: A      55      2       65
        !          25263: B      55      2       66
        !          25264: C      59      2       67
        !          25265: D      59      2       68
        !          25266: E      55      2       69
        !          25267: F      50      2       70
        !          25268: G      64      2       71
        !          25269: H      59      2       72
        !          25270: I      23      2       73
        !          25271: J      41      2       74
        !          25272: K      55      2       75
        !          25273: L      46      2       76
        !          25274: M      68      2       77
        !          25275: N      59      2       78
        !          25276: O      64      2       79
        !          25277: P      55      2       80
        !          25278: Q      64      2       81
        !          25279: R      59      2       82
        !          25280: S      55      2       83
        !          25281: T      50      2       84
        !          25282: U      59      2       85
        !          25283: V      55      2       86
        !          25284: W      77      2       87
        !          25285: X      55      2       88
        !          25286: Y      55      2       89
        !          25287: Z      50      2       90
        !          25288: [      23      3       91
        !          25289: \      23      2       92
        !          25290: bs     "
        !          25291: ]      23      3       93
        !          25292: ^      27      2       147
        !          25293: ---    38      2       94
        !          25294: ---    46      1       95
        !          25295: `      18      2       96
        !          25296: a      46      0       97
        !          25297: b      46      2       98
        !          25298: c      41      0       99
        !          25299: d      46      2       100
        !          25300: e      46      0       101
        !          25301: f      23      2       102
        !          25302: g      46      1       103
        !          25303: h      46      2       104
        !          25304: i      18      2       105
        !          25305: j      18      3       106
        !          25306: k      41      2       107
        !          25307: l      18      2       108
        !          25308: m      68      0       109
        !          25309: n      46      0       110
        !          25310: o      46      0       111
        !          25311: p      46      1       112
        !          25312: q      46      1       113
        !          25313: r      27      0       114
        !          25314: s      41      0       115
        !          25315: t      23      2       116
        !          25316: u      46      0       117
        !          25317: v      41      0       118
        !          25318: w      59      0       119
        !          25319: x      41      0       120
        !          25320: y      41      1       121
        !          25321: z      41      0       122
        !          25322: {      27      3       123
        !          25323: ---    21      3       124
        !          25324: }      27      3       125
        !          25325: ~      27      2       148
        !          25326: ---    48      0       126
        !          25327: \`     27      2       145
        !          25328: ga     "
        !          25329: !!     27      1       161
        !          25330: \0241  "
        !          25331: c|     46      3       162
        !          25332: \0242  "
        !          25333: ct     "
        !          25334: L-     46      2       163
        !          25335: \0243  "
        !          25336: ps     "
        !          25337: xo     46      0       164
        !          25338: \0244  "
        !          25339: cr     "
        !          25340: Y-     46      2       165
        !          25341: \0245  "
        !          25342: yn     "
        !          25343: ||     21      3       166
        !          25344: \0246  "
        !          25345: so     46      3       167
        !          25346: \0247  "
        !          25347: sc     "
        !          25348: ""     27      2       168
        !          25349: \0250  "
        !          25350: :a     "
        !          25351: co     60      2       169
        !          25352: \0251  "
        !          25353: a_     30      2       170
        !          25354: \0252  "
        !          25355: <<     46      0       171
        !          25356: \0253  "
        !          25357: -,     48      0       172
        !          25358: \0254  "
        !          25359: hy     27      0       173
        !          25360: \0255  "
        !          25361: --     48      0       45
        !          25362: ro     60      2       174
        !          25363: \0256  "
        !          25364: rg     "
        !          25365: -^     27      2       175
        !          25366: \0257  "
        !          25367: -a     "
        !          25368: 0^     33      2       176
        !          25369: \0260  "
        !          25370: +-     48      2       177
        !          25371: \0261  "
        !          25372: 2^     27      2       178
        !          25373: \0262  "
        !          25374: 3^     27      2       179
        !          25375: \0263  "
        !          25376: \'     27      2       180
        !          25377: \0264  "
        !          25378: aa     "
        !          25379: /u     46      1       181
        !          25380: \0265  "
        !          25381: P!     44      3       182
        !          25382: \0266  "
        !          25383: pg     "
        !          25384: .^     23      0       183
        !          25385: \0267  "
        !          25386: ,,     27      1       184
        !          25387: \0270  "
        !          25388: ,a     "
        !          25389: 1^     27      2       185
        !          25390: \0271  "
        !          25391: o_     30      2       186
        !          25392: \0272  "
        !          25393: >>     46      0       187
        !          25394: \0273  "
        !          25395: 14     68      2       188
        !          25396: \0274  "
        !          25397: 12     68      2       189
        !          25398: \0275  "
        !          25399: 34     68      2       190
        !          25400: \0276  "
        !          25401: ??     50      1       191
        !          25402: \0277  "
        !          25403: A`     55      2       192
        !          25404: \0300  "
        !          25405: A'     55      2       193
        !          25406: \0301  "
        !          25407: A^     55      2       194
        !          25408: \0302  "
        !          25409: A~     55      2       195
        !          25410: \0303  "
        !          25411: A"     55      2       196
        !          25412: \0304  "
        !          25413: A*     55      2       197
        !          25414: \0305  "
        !          25415: AE     82      2       198
        !          25416: \0306  "
        !          25417: C,     59      3       199
        !          25418: \0307  "
        !          25419: E`     55      2       200
        !          25420: \0310  "
        !          25421: E'     55      2       201
        !          25422: \0311  "
        !          25423: E^     55      2       202
        !          25424: \0312  "
        !          25425: E"     55      2       203
        !          25426: \0313  "
        !          25427: I`     23      2       204
        !          25428: \0314  "
        !          25429: I'     23      2       205
        !          25430: \0315  "
        !          25431: I^     23      2       206
        !          25432: \0316  "
        !          25433: I"     23      2       207
        !          25434: \0317  "
        !          25435: D-     59      2       208
        !          25436: \0320  "
        !          25437: N~     59      2       209
        !          25438: \0321  "
        !          25439: O`     64      2       210
        !          25440: \0322  "
        !          25441: O'     64      2       211
        !          25442: \0323  "
        !          25443: O^     64      2       212
        !          25444: \0324  "
        !          25445: O~     64      2       213
        !          25446: \0325  "
        !          25447: O"     64      2       214
        !          25448: \0326  "
        !          25449: xx     48      0       215
        !          25450: \0327  "
        !          25451: O/     64      2       216
        !          25452: \0330  "
        !          25453: U`     59      2       217
        !          25454: \0331  "
        !          25455: U'     59      2       218
        !          25456: \0332  "
        !          25457: U^     59      2       219
        !          25458: \0333  "
        !          25459: U"     59      2       220
        !          25460: \0334  "
        !          25461: Y'     55      2       221
        !          25462: \0335  "
        !          25463: TH     55      2       222
        !          25464: \0336  "
        !          25465: ss     50      2       223
        !          25466: \0337  "
        !          25467: a`     46      2       224
        !          25468: \0340  "
        !          25469: a'     46      2       225
        !          25470: \0341  "
        !          25471: a^     46      2       226
        !          25472: \0342  "
        !          25473: a~     46      2       227
        !          25474: \0343  "
        !          25475: a"     46      2       228
        !          25476: \0344  "
        !          25477: a*     46      2       229
        !          25478: \0345  "
        !          25479: ae     73      0       230
        !          25480: \0346  "
        !          25481: c,     41      1       231
        !          25482: \0347  "
        !          25483: e`     46      2       232
        !          25484: \0350  "
        !          25485: e'     46      2       233
        !          25486: \0351  "
        !          25487: e^     46      2       234
        !          25488: \0352  "
        !          25489: e"     46      2       235
        !          25490: \0353  "
        !          25491: i`     23      2       236
        !          25492: \0354  "
        !          25493: i'     23      2       237
        !          25494: \0355  "
        !          25495: i^     23      2       238
        !          25496: \0356  "
        !          25497: i"     23      2       239
        !          25498: \0357  "
        !          25499: d-     46      2       240
        !          25500: \0360  "
        !          25501: n~     46      2       241
        !          25502: \0361  "
        !          25503: o`     46      2       242
        !          25504: \0362  "
        !          25505: o'     46      2       243
        !          25506: \0363  "
        !          25507: o^     46      2       244
        !          25508: \0364  "
        !          25509: o~     46      2       245
        !          25510: \0365  "
        !          25511: o"     46      2       246
        !          25512: \0366  "
        !          25513: -:     48      0       247
        !          25514: \0367  "
        !          25515: o/     50      0       248
        !          25516: \0370  "
        !          25517: u`     46      2       249
        !          25518: \0371  "
        !          25519: u'     46      2       250
        !          25520: \0372  "
        !          25521: u^     46      2       251
        !          25522: \0373  "
        !          25523: u"     46      2       252
        !          25524: \0374  "
        !          25525: y'     41      3       253
        !          25526: \0375  "
        !          25527: th     46      3       254
        !          25528: \0376  "
        !          25529: y"     41      3       255
        !          25530: \0377  "
        !          25531: ^a     27      2       147
        !          25532: ~a     27      2       148
        !          25533: Ua     27      2       150
        !          25534: .a     27      2       151
        !          25535: oa     27      2       154
        !          25536: "a     27      2       157
        !          25537: Ca     27      1       158
        !          25538: va     27      2       159
        !          25539: 0707070014231123601006440057030057030000010443200522627501600002600000006161post.src/devLatin1/Hxname Hx
        !          25540: fontname Helvetica-Narrow-BoldOblique
        !          25541: named in prologue
        !          25542: spacewidth 23
        !          25543: charset
        !          25544: !      27      2       33
        !          25545: "      39      2       34
        !          25546: dq     "
        !          25547: #      46      2       35
        !          25548: $      46      3       36
        !          25549: %      73      2       37
        !          25550: &      59      2       38
        !          25551: '      23      2       39
        !          25552: (      27      3       40
        !          25553: )      27      3       41
        !          25554: *      32      2       42
        !          25555: +      48      0       43
        !          25556: ,      23      1       44
        !          25557: -      27      0       173
        !          25558: \0255  "
        !          25559: .      23      0       46
        !          25560: /      23      2       47
        !          25561: 0      46      2       48
        !          25562: 1      46      2       49
        !          25563: 2      46      2       50
        !          25564: 3      46      2       51
        !          25565: 4      46      2       52
        !          25566: 5      46      2       53
        !          25567: 6      46      2       54
        !          25568: 7      46      2       55
        !          25569: 8      46      2       56
        !          25570: 9      46      2       57
        !          25571: :      27      0       58
        !          25572: ;      27      1       59
        !          25573: ---    48      0       60
        !          25574: =      48      0       61
        !          25575: ---    48      0       62
        !          25576: ?      50      2       63
        !          25577: @      80      3       64
        !          25578: A      59      2       65
        !          25579: B      59      2       66
        !          25580: C      59      2       67
        !          25581: D      59      2       68
        !          25582: E      55      2       69
        !          25583: F      50      2       70
        !          25584: G      64      2       71
        !          25585: H      59      2       72
        !          25586: I      23      2       73
        !          25587: J      46      2       74
        !          25588: K      59      2       75
        !          25589: L      50      2       76
        !          25590: M      68      2       77
        !          25591: N      59      2       78
        !          25592: O      64      2       79
        !          25593: P      55      2       80
        !          25594: Q      64      2       81
        !          25595: R      59      2       82
        !          25596: S      55      2       83
        !          25597: T      50      2       84
        !          25598: U      59      2       85
        !          25599: V      55      2       86
        !          25600: W      77      2       87
        !          25601: X      55      2       88
        !          25602: Y      55      2       89
        !          25603: Z      50      2       90
        !          25604: [      27      3       91
        !          25605: \      23      2       92
        !          25606: bs     "
        !          25607: ]      27      3       93
        !          25608: ^      27      2       147
        !          25609: ---    48      2       94
        !          25610: ---    46      1       95
        !          25611: `      23      2       96
        !          25612: a      46      0       97
        !          25613: b      50      2       98
        !          25614: c      46      0       99
        !          25615: d      50      2       100
        !          25616: e      46      0       101
        !          25617: f      27      2       102
        !          25618: g      50      1       103
        !          25619: h      50      2       104
        !          25620: i      23      2       105
        !          25621: j      23      3       106
        !          25622: k      46      2       107
        !          25623: l      23      2       108
        !          25624: m      73      0       109
        !          25625: n      50      0       110
        !          25626: o      50      0       111
        !          25627: p      50      1       112
        !          25628: q      50      1       113
        !          25629: r      32      0       114
        !          25630: s      46      0       115
        !          25631: t      27      2       116
        !          25632: u      50      0       117
        !          25633: v      46      0       118
        !          25634: w      64      0       119
        !          25635: x      46      0       120
        !          25636: y      46      1       121
        !          25637: z      41      0       122
        !          25638: {      32      3       123
        !          25639: ---    23      3       124
        !          25640: }      32      3       125
        !          25641: ~      27      2       148
        !          25642: ---    48      0       126
        !          25643: \`     27      2       145
        !          25644: ga     "
        !          25645: !!     27      1       161
        !          25646: \0241  "
        !          25647: c|     46      3       162
        !          25648: \0242  "
        !          25649: ct     "
        !          25650: L-     46      2       163
        !          25651: \0243  "
        !          25652: ps     "
        !          25653: xo     46      2       164
        !          25654: \0244  "
        !          25655: cr     "
        !          25656: Y-     46      2       165
        !          25657: \0245  "
        !          25658: yn     "
        !          25659: ||     23      3       166
        !          25660: \0246  "
        !          25661: so     46      3       167
        !          25662: \0247  "
        !          25663: sc     "
        !          25664: ""     27      2       168
        !          25665: \0250  "
        !          25666: :a     "
        !          25667: co     60      2       169
        !          25668: \0251  "
        !          25669: a_     30      2       170
        !          25670: \0252  "
        !          25671: <<     46      0       171
        !          25672: \0253  "
        !          25673: -,     48      0       172
        !          25674: \0254  "
        !          25675: hy     27      0       173
        !          25676: \0255  "
        !          25677: --     48      0       45
        !          25678: ro     60      2       174
        !          25679: \0256  "
        !          25680: rg     "
        !          25681: -^     27      2       175
        !          25682: \0257  "
        !          25683: -a     "
        !          25684: 0^     33      2       176
        !          25685: \0260  "
        !          25686: +-     48      2       177
        !          25687: \0261  "
        !          25688: 2^     27      2       178
        !          25689: \0262  "
        !          25690: 3^     27      2       179
        !          25691: \0263  "
        !          25692: \'     27      2       180
        !          25693: \0264  "
        !          25694: aa     "
        !          25695: /u     50      1       181
        !          25696: \0265  "
        !          25697: P!     46      3       182
        !          25698: \0266  "
        !          25699: pg     "
        !          25700: .^     23      0       183
        !          25701: \0267  "
        !          25702: ,,     27      1       184
        !          25703: \0270  "
        !          25704: ,a     "
        !          25705: 1^     27      2       185
        !          25706: \0271  "
        !          25707: o_     30      2       186
        !          25708: \0272  "
        !          25709: >>     46      0       187
        !          25710: \0273  "
        !          25711: 14     68      2       188
        !          25712: \0274  "
        !          25713: 12     68      2       189
        !          25714: \0275  "
        !          25715: 34     68      2       190
        !          25716: \0276  "
        !          25717: ??     50      1       191
        !          25718: \0277  "
        !          25719: A`     59      2       192
        !          25720: \0300  "
        !          25721: A'     59      2       193
        !          25722: \0301  "
        !          25723: A^     59      2       194
        !          25724: \0302  "
        !          25725: A~     59      2       195
        !          25726: \0303  "
        !          25727: A"     59      2       196
        !          25728: \0304  "
        !          25729: A*     59      2       197
        !          25730: \0305  "
        !          25731: AE     82      2       198
        !          25732: \0306  "
        !          25733: C,     59      3       199
        !          25734: \0307  "
        !          25735: E`     55      2       200
        !          25736: \0310  "
        !          25737: E'     55      2       201
        !          25738: \0311  "
        !          25739: E^     55      2       202
        !          25740: \0312  "
        !          25741: E"     55      2       203
        !          25742: \0313  "
        !          25743: I`     23      2       204
        !          25744: \0314  "
        !          25745: I'     23      2       205
        !          25746: \0315  "
        !          25747: I^     23      2       206
        !          25748: \0316  "
        !          25749: I"     23      2       207
        !          25750: \0317  "
        !          25751: D-     59      2       208
        !          25752: \0320  "
        !          25753: N~     59      2       209
        !          25754: \0321  "
        !          25755: O`     64      2       210
        !          25756: \0322  "
        !          25757: O'     64      2       211
        !          25758: \0323  "
        !          25759: O^     64      2       212
        !          25760: \0324  "
        !          25761: O~     64      2       213
        !          25762: \0325  "
        !          25763: O"     64      2       214
        !          25764: \0326  "
        !          25765: xx     48      0       215
        !          25766: \0327  "
        !          25767: O/     64      2       216
        !          25768: \0330  "
        !          25769: U`     59      2       217
        !          25770: \0331  "
        !          25771: U'     59      2       218
        !          25772: \0332  "
        !          25773: U^     59      2       219
        !          25774: \0333  "
        !          25775: U"     59      2       220
        !          25776: \0334  "
        !          25777: Y'     55      2       221
        !          25778: \0335  "
        !          25779: TH     55      2       222
        !          25780: \0336  "
        !          25781: ss     50      2       223
        !          25782: \0337  "
        !          25783: a`     46      2       224
        !          25784: \0340  "
        !          25785: a'     46      2       225
        !          25786: \0341  "
        !          25787: a^     46      2       226
        !          25788: \0342  "
        !          25789: a~     46      2       227
        !          25790: \0343  "
        !          25791: a"     46      2       228
        !          25792: \0344  "
        !          25793: a*     46      2       229
        !          25794: \0345  "
        !          25795: ae     73      0       230
        !          25796: \0346  "
        !          25797: c,     46      1       231
        !          25798: \0347  "
        !          25799: e`     46      2       232
        !          25800: \0350  "
        !          25801: e'     46      2       233
        !          25802: \0351  "
        !          25803: e^     46      2       234
        !          25804: \0352  "
        !          25805: e"     46      2       235
        !          25806: \0353  "
        !          25807: i`     23      2       236
        !          25808: \0354  "
        !          25809: i'     23      2       237
        !          25810: \0355  "
        !          25811: i^     23      2       238
        !          25812: \0356  "
        !          25813: i"     23      2       239
        !          25814: \0357  "
        !          25815: d-     50      2       240
        !          25816: \0360  "
        !          25817: n~     50      2       241
        !          25818: \0361  "
        !          25819: o`     50      2       242
        !          25820: \0362  "
        !          25821: o'     50      2       243
        !          25822: \0363  "
        !          25823: o^     50      2       244
        !          25824: \0364  "
        !          25825: o~     50      2       245
        !          25826: \0365  "
        !          25827: o"     50      2       246
        !          25828: \0366  "
        !          25829: -:     48      0       247
        !          25830: \0367  "
        !          25831: o/     50      0       248
        !          25832: \0370  "
        !          25833: u`     50      2       249
        !          25834: \0371  "
        !          25835: u'     50      2       250
        !          25836: \0372  "
        !          25837: u^     50      2       251
        !          25838: \0373  "
        !          25839: u"     50      2       252
        !          25840: \0374  "
        !          25841: y'     46      3       253
        !          25842: \0375  "
        !          25843: th     50      3       254
        !          25844: \0376  "
        !          25845: y"     46      3       255
        !          25846: \0377  "
        !          25847: ^a     27      2       147
        !          25848: ~a     27      2       148
        !          25849: Ua     27      2       150
        !          25850: .a     27      2       151
        !          25851: oa     27      2       154
        !          25852: "a     27      2       157
        !          25853: Ca     27      1       158
        !          25854: va     27      2       159
        !          25855: 0707070014231123611006440057030057030000010443240522627501600002600000006143post.src/devLatin1/KBname KB
        !          25856: fontname Bookman-Demi
        !          25857: named in prologue
        !          25858: spacewidth 34
        !          25859: charset
        !          25860: !      36      2       33
        !          25861: "      42      2       34
        !          25862: dq     "
        !          25863: #      60      2       35
        !          25864: $      66      3       36
        !          25865: %      94      2       37
        !          25866: &      80      2       38
        !          25867: '      32      2       39
        !          25868: (      32      3       40
        !          25869: )      32      3       41
        !          25870: *      46      2       42
        !          25871: +      60      0       43
        !          25872: ,      34      1       44
        !          25873: -      36      0       173
        !          25874: \0255  "
        !          25875: .      34      0       46
        !          25876: /      60      3       47
        !          25877: 0      66      2       48
        !          25878: 1      66      2       49
        !          25879: 2      66      2       50
        !          25880: 3      66      2       51
        !          25881: 4      66      2       52
        !          25882: 5      66      2       53
        !          25883: 6      66      2       54
        !          25884: 7      66      2       55
        !          25885: 8      66      2       56
        !          25886: 9      66      2       57
        !          25887: :      34      0       58
        !          25888: ;      34      1       59
        !          25889: ---    60      0       60
        !          25890: =      60      0       61
        !          25891: ---    60      0       62
        !          25892: ?      66      2       63
        !          25893: @      82      2       64
        !          25894: A      72      2       65
        !          25895: B      72      2       66
        !          25896: C      74      2       67
        !          25897: D      78      2       68
        !          25898: E      72      2       69
        !          25899: F      68      2       70
        !          25900: G      78      2       71
        !          25901: H      82      2       72
        !          25902: I      40      2       73
        !          25903: J      64      2       74
        !          25904: K      80      2       75
        !          25905: L      64      2       76
        !          25906: M      94      2       77
        !          25907: N      74      2       78
        !          25908: O      80      2       79
        !          25909: P      66      2       80
        !          25910: Q      80      3       81
        !          25911: R      78      2       82
        !          25912: S      66      2       83
        !          25913: T      70      2       84
        !          25914: U      74      2       85
        !          25915: V      72      2       86
        !          25916: W      94      2       87
        !          25917: X      78      2       88
        !          25918: Y      70      2       89
        !          25919: Z      64      2       90
        !          25920: [      30      3       91
        !          25921: \      60      2       92
        !          25922: bs     "
        !          25923: ]      30      3       93
        !          25924: ^      50      2       147
        !          25925: ---    60      2       94
        !          25926: ---    50      1       95
        !          25927: `      32      2       96
        !          25928: a      58      0       97
        !          25929: b      60      2       98
        !          25930: c      58      0       99
        !          25931: d      64      2       100
        !          25932: e      58      0       101
        !          25933: f      38      2       102
        !          25934: g      58      3       103
        !          25935: h      68      2       104
        !          25936: i      36      2       105
        !          25937: j      34      3       106
        !          25938: k      66      2       107
        !          25939: l      34      2       108
        !          25940: m      100     0       109
        !          25941: n      68      0       110
        !          25942: o      62      0       111
        !          25943: p      64      1       112
        !          25944: q      62      1       113
        !          25945: r      46      0       114
        !          25946: s      52      0       115
        !          25947: t      46      2       116
        !          25948: u      66      0       117
        !          25949: v      60      0       118
        !          25950: w      80      0       119
        !          25951: x      60      0       120
        !          25952: y      62      1       121
        !          25953: z      56      0       122
        !          25954: {      32      3       123
        !          25955: ---    60      2       124
        !          25956: }      32      3       125
        !          25957: ~      48      2       148
        !          25958: ---    60      0       126
        !          25959: \`     40      2       145
        !          25960: ga     "
        !          25961: !!     36      1       161
        !          25962: \0241  "
        !          25963: c|     66      2       162
        !          25964: \0242  "
        !          25965: ct     "
        !          25966: L-     66      2       163
        !          25967: \0243  "
        !          25968: ps     "
        !          25969: xo     60      2       164
        !          25970: \0244  "
        !          25971: cr     "
        !          25972: Y-     66      2       165
        !          25973: \0245  "
        !          25974: yn     "
        !          25975: ||     60      2       166
        !          25976: \0246  "
        !          25977: so     60      3       167
        !          25978: \0247  "
        !          25979: sc     "
        !          25980: ""     50      2       168
        !          25981: \0250  "
        !          25982: :a     "
        !          25983: co     74      2       169
        !          25984: \0251  "
        !          25985: a_     40      2       170
        !          25986: \0252  "
        !          25987: <<     40      0       171
        !          25988: \0253  "
        !          25989: -,     60      0       172
        !          25990: \0254  "
        !          25991: hy     36      0       173
        !          25992: \0255  "
        !          25993: --     60      0       45
        !          25994: ro     74      2       174
        !          25995: \0256  "
        !          25996: rg     "
        !          25997: -^     46      2       175
        !          25998: \0257  "
        !          25999: -a     "
        !          26000: 0^     40      2       176
        !          26001: \0260  "
        !          26002: +-     60      0       177
        !          26003: \0261  "
        !          26004: 2^     40      2       178
        !          26005: \0262  "
        !          26006: 3^     40      2       179
        !          26007: \0263  "
        !          26008: \'     40      2       180
        !          26009: \0264  "
        !          26010: aa     "
        !          26011: /u     66      1       181
        !          26012: \0265  "
        !          26013: P!     80      2       182
        !          26014: \0266  "
        !          26015: pg     "
        !          26016: .^     34      0       183
        !          26017: \0267  "
        !          26018: ,,     36      1       184
        !          26019: \0270  "
        !          26020: ,a     "
        !          26021: 1^     40      2       185
        !          26022: \0271  "
        !          26023: o_     40      2       186
        !          26024: \0272  "
        !          26025: >>     40      0       187
        !          26026: \0273  "
        !          26027: 14     99      2       188
        !          26028: \0274  "
        !          26029: 12     99      2       189
        !          26030: \0275  "
        !          26031: 34     99      2       190
        !          26032: \0276  "
        !          26033: ??     66      1       191
        !          26034: \0277  "
        !          26035: A`     72      2       192
        !          26036: \0300  "
        !          26037: A'     72      2       193
        !          26038: \0301  "
        !          26039: A^     72      2       194
        !          26040: \0302  "
        !          26041: A~     72      2       195
        !          26042: \0303  "
        !          26043: A"     72      2       196
        !          26044: \0304  "
        !          26045: A*     72      2       197
        !          26046: \0305  "
        !          26047: AE     114     2       198
        !          26048: \0306  "
        !          26049: C,     74      3       199
        !          26050: \0307  "
        !          26051: E`     72      2       200
        !          26052: \0310  "
        !          26053: E'     72      2       201
        !          26054: \0311  "
        !          26055: E^     72      2       202
        !          26056: \0312  "
        !          26057: E"     72      2       203
        !          26058: \0313  "
        !          26059: I`     40      2       204
        !          26060: \0314  "
        !          26061: I'     40      2       205
        !          26062: \0315  "
        !          26063: I^     40      2       206
        !          26064: \0316  "
        !          26065: I"     40      2       207
        !          26066: \0317  "
        !          26067: D-     78      2       208
        !          26068: \0320  "
        !          26069: N~     74      2       209
        !          26070: \0321  "
        !          26071: O`     80      2       210
        !          26072: \0322  "
        !          26073: O'     80      2       211
        !          26074: \0323  "
        !          26075: O^     80      2       212
        !          26076: \0324  "
        !          26077: O~     80      2       213
        !          26078: \0325  "
        !          26079: O"     80      2       214
        !          26080: \0326  "
        !          26081: xx     60      0       215
        !          26082: \0327  "
        !          26083: O/     80      3       216
        !          26084: \0330  "
        !          26085: U`     74      2       217
        !          26086: \0331  "
        !          26087: U'     74      2       218
        !          26088: \0332  "
        !          26089: U^     74      2       219
        !          26090: \0333  "
        !          26091: U"     74      2       220
        !          26092: \0334  "
        !          26093: Y'     70      2       221
        !          26094: \0335  "
        !          26095: TH     66      2       222
        !          26096: \0336  "
        !          26097: ss     66      2       223
        !          26098: \0337  "
        !          26099: a`     58      2       224
        !          26100: \0340  "
        !          26101: a'     58      2       225
        !          26102: \0341  "
        !          26103: a^     58      2       226
        !          26104: \0342  "
        !          26105: a~     58      2       227
        !          26106: \0343  "
        !          26107: a"     58      2       228
        !          26108: \0344  "
        !          26109: a*     58      2       229
        !          26110: \0345  "
        !          26111: ae     88      0       230
        !          26112: \0346  "
        !          26113: c,     58      1       231
        !          26114: \0347  "
        !          26115: e`     58      2       232
        !          26116: \0350  "
        !          26117: e'     58      2       233
        !          26118: \0351  "
        !          26119: e^     58      2       234
        !          26120: \0352  "
        !          26121: e"     58      2       235
        !          26122: \0353  "
        !          26123: i`     36      2       236
        !          26124: \0354  "
        !          26125: i'     36      2       237
        !          26126: \0355  "
        !          26127: i^     36      2       238
        !          26128: \0356  "
        !          26129: i"     36      2       239
        !          26130: \0357  "
        !          26131: d-     62      2       240
        !          26132: \0360  "
        !          26133: n~     68      2       241
        !          26134: \0361  "
        !          26135: o`     62      2       242
        !          26136: \0362  "
        !          26137: o'     62      2       243
        !          26138: \0363  "
        !          26139: o^     62      2       244
        !          26140: \0364  "
        !          26141: o~     62      2       245
        !          26142: \0365  "
        !          26143: o"     62      2       246
        !          26144: \0366  "
        !          26145: -:     60      0       247
        !          26146: \0367  "
        !          26147: o/     62      0       248
        !          26148: \0370  "
        !          26149: u`     66      2       249
        !          26150: \0371  "
        !          26151: u'     66      2       250
        !          26152: \0372  "
        !          26153: u^     66      2       251
        !          26154: \0373  "
        !          26155: u"     66      2       252
        !          26156: \0374  "
        !          26157: y'     62      3       253
        !          26158: \0375  "
        !          26159: th     64      3       254
        !          26160: \0376  "
        !          26161: y"     62      3       255
        !          26162: \0377  "
        !          26163: ^a     50      2       147
        !          26164: ~a     48      2       148
        !          26165: Ua     50      2       150
        !          26166: .a     32      2       151
        !          26167: oa     34      2       154
        !          26168: "a     44      2       157
        !          26169: Ca     32      1       158
        !          26170: va     50      2       159
        !          26171: 0707070014231123621006440057030057030000010443400522627501600002600000006151post.src/devLatin1/KIname KI
        !          26172: fontname Bookman-LightItalic
        !          26173: named in prologue
        !          26174: spacewidth 30
        !          26175: charset
        !          26176: !      32      2       33
        !          26177: "      36      2       34
        !          26178: dq     "
        !          26179: #      60      2       35
        !          26180: $      62      2       36
        !          26181: %      80      2       37
        !          26182: &      82      2       38
        !          26183: '      28      2       39
        !          26184: (      28      3       40
        !          26185: )      28      3       41
        !          26186: *      44      2       42
        !          26187: +      60      2       43
        !          26188: ,      30      1       44
        !          26189: -      32      0       173
        !          26190: \0255  "
        !          26191: .      30      0       46
        !          26192: /      60      3       47
        !          26193: 0      62      2       48
        !          26194: 1      62      2       49
        !          26195: 2      62      2       50
        !          26196: 3      62      2       51
        !          26197: 4      62      2       52
        !          26198: 5      62      2       53
        !          26199: 6      62      2       54
        !          26200: 7      62      2       55
        !          26201: 8      62      2       56
        !          26202: 9      62      2       57
        !          26203: :      30      0       58
        !          26204: ;      30      1       59
        !          26205: ---    60      2       60
        !          26206: =      60      0       61
        !          26207: ---    60      2       62
        !          26208: ?      54      2       63
        !          26209: @      78      2       64
        !          26210: A      70      2       65
        !          26211: B      72      2       66
        !          26212: C      72      2       67
        !          26213: D      74      2       68
        !          26214: E      68      2       69
        !          26215: F      62      2       70
        !          26216: G      76      2       71
        !          26217: H      80      2       72
        !          26218: I      32      2       73
        !          26219: J      56      2       74
        !          26220: K      72      2       75
        !          26221: L      58      2       76
        !          26222: M      86      2       77
        !          26223: N      72      2       78
        !          26224: O      76      2       79
        !          26225: P      60      2       80
        !          26226: Q      78      3       81
        !          26227: R      70      2       82
        !          26228: S      64      2       83
        !          26229: T      60      2       84
        !          26230: U      72      2       85
        !          26231: V      68      2       86
        !          26232: W      96      2       87
        !          26233: X      70      2       88
        !          26234: Y      66      2       89
        !          26235: Z      58      2       90
        !          26236: [      26      3       91
        !          26237: \      60      2       92
        !          26238: bs     "
        !          26239: ]      26      3       93
        !          26240: ^      44      2       147
        !          26241: ---    60      2       94
        !          26242: ---    50      1       95
        !          26243: `      28      2       96
        !          26244: a      62      0       97
        !          26245: b      60      2       98
        !          26246: c      48      0       99
        !          26247: d      64      2       100
        !          26248: e      54      0       101
        !          26249: f      34      3       102
        !          26250: g      56      1       103
        !          26251: h      62      2       104
        !          26252: i      28      2       105
        !          26253: j      28      3       106
        !          26254: k      60      2       107
        !          26255: l      28      2       108
        !          26256: m      88      0       109
        !          26257: n      62      0       110
        !          26258: o      54      0       111
        !          26259: p      60      1       112
        !          26260: q      56      1       113
        !          26261: r      40      0       114
        !          26262: s      54      0       115
        !          26263: t      34      2       116
        !          26264: u      62      0       117
        !          26265: v      54      0       118
        !          26266: w      88      0       119
        !          26267: x      54      0       120
        !          26268: y      60      1       121
        !          26269: z      52      0       122
        !          26270: {      36      3       123
        !          26271: ---    60      2       124
        !          26272: }      38      3       125
        !          26273: ~      44      2       148
        !          26274: ---    60      0       126
        !          26275: \`     34      2       145
        !          26276: ga     "
        !          26277: !!     32      1       161
        !          26278: \0241  "
        !          26279: c|     62      2       162
        !          26280: \0242  "
        !          26281: ct     "
        !          26282: L-     62      2       163
        !          26283: \0243  "
        !          26284: ps     "
        !          26285: xo     60      2       164
        !          26286: \0244  "
        !          26287: cr     "
        !          26288: Y-     62      2       165
        !          26289: \0245  "
        !          26290: yn     "
        !          26291: ||     60      2       166
        !          26292: \0246  "
        !          26293: so     62      3       167
        !          26294: \0247  "
        !          26295: sc     "
        !          26296: ""     42      2       168
        !          26297: \0250  "
        !          26298: :a     "
        !          26299: co     74      2       169
        !          26300: \0251  "
        !          26301: a_     44      2       170
        !          26302: \0252  "
        !          26303: <<     30      0       171
        !          26304: \0253  "
        !          26305: -,     60      0       172
        !          26306: \0254  "
        !          26307: hy     32      0       173
        !          26308: \0255  "
        !          26309: --     60      0       45
        !          26310: ro     74      2       174
        !          26311: \0256  "
        !          26312: rg     "
        !          26313: -^     44      2       175
        !          26314: \0257  "
        !          26315: -a     "
        !          26316: 0^     40      2       176
        !          26317: \0260  "
        !          26318: +-     60      2       177
        !          26319: \0261  "
        !          26320: 2^     37      2       178
        !          26321: \0262  "
        !          26322: 3^     37      2       179
        !          26323: \0263  "
        !          26324: \'     32      2       180
        !          26325: \0264  "
        !          26326: aa     "
        !          26327: /u     62      1       181
        !          26328: \0265  "
        !          26329: P!     62      2       182
        !          26330: \0266  "
        !          26331: pg     "
        !          26332: .^     30      0       183
        !          26333: \0267  "
        !          26334: ,,     32      1       184
        !          26335: \0270  "
        !          26336: ,a     "
        !          26337: 1^     37      2       185
        !          26338: \0271  "
        !          26339: o_     40      2       186
        !          26340: \0272  "
        !          26341: >>     30      0       187
        !          26342: \0273  "
        !          26343: 14     93      2       188
        !          26344: \0274  "
        !          26345: 12     93      2       189
        !          26346: \0275  "
        !          26347: 34     93      2       190
        !          26348: \0276  "
        !          26349: ??     54      1       191
        !          26350: \0277  "
        !          26351: A`     70      2       192
        !          26352: \0300  "
        !          26353: A'     70      2       193
        !          26354: \0301  "
        !          26355: A^     70      2       194
        !          26356: \0302  "
        !          26357: A~     70      2       195
        !          26358: \0303  "
        !          26359: A"     70      2       196
        !          26360: \0304  "
        !          26361: A*     70      2       197
        !          26362: \0305  "
        !          26363: AE     122     2       198
        !          26364: \0306  "
        !          26365: C,     72      3       199
        !          26366: \0307  "
        !          26367: E`     68      2       200
        !          26368: \0310  "
        !          26369: E'     68      2       201
        !          26370: \0311  "
        !          26371: E^     68      2       202
        !          26372: \0312  "
        !          26373: E"     68      2       203
        !          26374: \0313  "
        !          26375: I`     32      2       204
        !          26376: \0314  "
        !          26377: I'     32      2       205
        !          26378: \0315  "
        !          26379: I^     32      2       206
        !          26380: \0316  "
        !          26381: I"     32      2       207
        !          26382: \0317  "
        !          26383: D-     74      2       208
        !          26384: \0320  "
        !          26385: N~     72      2       209
        !          26386: \0321  "
        !          26387: O`     76      2       210
        !          26388: \0322  "
        !          26389: O'     76      2       211
        !          26390: \0323  "
        !          26391: O^     76      2       212
        !          26392: \0324  "
        !          26393: O~     76      2       213
        !          26394: \0325  "
        !          26395: O"     76      2       214
        !          26396: \0326  "
        !          26397: xx     60      2       215
        !          26398: \0327  "
        !          26399: O/     76      2       216
        !          26400: \0330  "
        !          26401: U`     72      2       217
        !          26402: \0331  "
        !          26403: U'     72      2       218
        !          26404: \0332  "
        !          26405: U^     72      2       219
        !          26406: \0333  "
        !          26407: U"     72      2       220
        !          26408: \0334  "
        !          26409: Y'     66      2       221
        !          26410: \0335  "
        !          26411: TH     60      2       222
        !          26412: \0336  "
        !          26413: ss     62      3       223
        !          26414: \0337  "
        !          26415: a`     62      2       224
        !          26416: \0340  "
        !          26417: a'     62      2       225
        !          26418: \0341  "
        !          26419: a^     62      2       226
        !          26420: \0342  "
        !          26421: a~     62      2       227
        !          26422: \0343  "
        !          26423: a"     62      2       228
        !          26424: \0344  "
        !          26425: a*     62      2       229
        !          26426: \0345  "
        !          26427: ae     88      0       230
        !          26428: \0346  "
        !          26429: c,     48      1       231
        !          26430: \0347  "
        !          26431: e`     54      2       232
        !          26432: \0350  "
        !          26433: e'     54      2       233
        !          26434: \0351  "
        !          26435: e^     54      2       234
        !          26436: \0352  "
        !          26437: e"     54      2       235
        !          26438: \0353  "
        !          26439: i`     28      2       236
        !          26440: \0354  "
        !          26441: i'     28      2       237
        !          26442: \0355  "
        !          26443: i^     28      2       238
        !          26444: \0356  "
        !          26445: i"     28      2       239
        !          26446: \0357  "
        !          26447: d-     54      2       240
        !          26448: \0360  "
        !          26449: n~     62      2       241
        !          26450: \0361  "
        !          26451: o`     54      2       242
        !          26452: \0362  "
        !          26453: o'     54      2       243
        !          26454: \0363  "
        !          26455: o^     54      2       244
        !          26456: \0364  "
        !          26457: o~     54      2       245
        !          26458: \0365  "
        !          26459: o"     54      2       246
        !          26460: \0366  "
        !          26461: -:     60      2       247
        !          26462: \0367  "
        !          26463: o/     54      0       248
        !          26464: \0370  "
        !          26465: u`     62      2       249
        !          26466: \0371  "
        !          26467: u'     62      2       250
        !          26468: \0372  "
        !          26469: u^     62      2       251
        !          26470: \0373  "
        !          26471: u"     62      2       252
        !          26472: \0374  "
        !          26473: y'     60      3       253
        !          26474: \0375  "
        !          26475: th     60      3       254
        !          26476: \0376  "
        !          26477: y"     60      3       255
        !          26478: \0377  "
        !          26479: ^a     44      2       147
        !          26480: ~a     44      2       148
        !          26481: Ua     44      2       150
        !          26482: .a     26      2       151
        !          26483: oa     30      2       154
        !          26484: "a     34      2       157
        !          26485: Ca     26      1       158
        !          26486: va     44      2       159
        !          26487: 0707070014231123631006440057030057030000010443440522627501600002600000006143post.src/devLatin1/KRname KR
        !          26488: fontname Bookman-Light
        !          26489: named in prologue
        !          26490: spacewidth 32
        !          26491: charset
        !          26492: !      30      2       33
        !          26493: "      38      2       34
        !          26494: dq     "
        !          26495: #      60      2       35
        !          26496: $      62      2       36
        !          26497: %      90      2       37
        !          26498: &      80      2       38
        !          26499: '      22      2       39
        !          26500: (      30      3       40
        !          26501: )      30      3       41
        !          26502: *      44      2       42
        !          26503: +      60      0       43
        !          26504: ,      32      1       44
        !          26505: -      40      0       173
        !          26506: \0255  "
        !          26507: .      32      0       46
        !          26508: /      60      3       47
        !          26509: 0      62      2       48
        !          26510: 1      62      2       49
        !          26511: 2      62      2       50
        !          26512: 3      62      2       51
        !          26513: 4      62      2       52
        !          26514: 5      62      2       53
        !          26515: 6      62      2       54
        !          26516: 7      62      2       55
        !          26517: 8      62      2       56
        !          26518: 9      62      2       57
        !          26519: :      32      0       58
        !          26520: ;      32      1       59
        !          26521: ---    60      0       60
        !          26522: =      60      0       61
        !          26523: ---    60      0       62
        !          26524: ?      54      2       63
        !          26525: @      82      2       64
        !          26526: A      68      2       65
        !          26527: B      74      2       66
        !          26528: C      74      2       67
        !          26529: D      80      2       68
        !          26530: E      72      2       69
        !          26531: F      64      2       70
        !          26532: G      80      2       71
        !          26533: H      80      2       72
        !          26534: I      34      2       73
        !          26535: J      60      2       74
        !          26536: K      72      2       75
        !          26537: L      60      2       76
        !          26538: M      92      2       77
        !          26539: N      74      2       78
        !          26540: O      80      2       79
        !          26541: P      62      2       80
        !          26542: Q      82      3       81
        !          26543: R      72      2       82
        !          26544: S      66      2       83
        !          26545: T      62      2       84
        !          26546: U      78      2       85
        !          26547: V      70      2       86
        !          26548: W      96      2       87
        !          26549: X      72      2       88
        !          26550: Y      64      2       89
        !          26551: Z      64      2       90
        !          26552: [      30      3       91
        !          26553: \      60      2       92
        !          26554: bs     "
        !          26555: ]      30      3       93
        !          26556: ^      42      2       147
        !          26557: ---    60      2       94
        !          26558: ---    50      1       95
        !          26559: `      22      2       96
        !          26560: a      58      0       97
        !          26561: b      62      2       98
        !          26562: c      52      0       99
        !          26563: d      62      2       100
        !          26564: e      52      0       101
        !          26565: f      32      2       102
        !          26566: g      54      3       103
        !          26567: h      66      2       104
        !          26568: i      30      2       105
        !          26569: j      30      3       106
        !          26570: k      62      2       107
        !          26571: l      30      2       108
        !          26572: m      94      0       109
        !          26573: n      66      0       110
        !          26574: o      56      0       111
        !          26575: p      62      1       112
        !          26576: q      58      1       113
        !          26577: r      44      0       114
        !          26578: s      52      0       115
        !          26579: t      38      2       116
        !          26580: u      68      0       117
        !          26581: v      52      0       118
        !          26582: w      78      0       119
        !          26583: x      56      0       120
        !          26584: y      54      1       121
        !          26585: z      48      0       122
        !          26586: {      28      3       123
        !          26587: ---    60      2       124
        !          26588: }      28      3       125
        !          26589: ~      44      2       148
        !          26590: ---    60      0       126
        !          26591: \`     34      2       145
        !          26592: ga     "
        !          26593: !!     30      1       161
        !          26594: \0241  "
        !          26595: c|     62      2       162
        !          26596: \0242  "
        !          26597: ct     "
        !          26598: L-     62      2       163
        !          26599: \0243  "
        !          26600: ps     "
        !          26601: xo     60      2       164
        !          26602: \0244  "
        !          26603: cr     "
        !          26604: Y-     62      2       165
        !          26605: \0245  "
        !          26606: yn     "
        !          26607: ||     60      2       166
        !          26608: \0246  "
        !          26609: so     52      3       167
        !          26610: \0247  "
        !          26611: sc     "
        !          26612: ""     42      2       168
        !          26613: \0250  "
        !          26614: :a     "
        !          26615: co     74      2       169
        !          26616: \0251  "
        !          26617: a_     42      2       170
        !          26618: \0252  "
        !          26619: <<     36      0       171
        !          26620: \0253  "
        !          26621: -,     60      0       172
        !          26622: \0254  "
        !          26623: hy     40      0       173
        !          26624: \0255  "
        !          26625: --     60      0       45
        !          26626: ro     74      2       174
        !          26627: \0256  "
        !          26628: rg     "
        !          26629: -^     44      2       175
        !          26630: \0257  "
        !          26631: -a     "
        !          26632: 0^     40      2       176
        !          26633: \0260  "
        !          26634: +-     60      0       177
        !          26635: \0261  "
        !          26636: 2^     37      2       178
        !          26637: \0262  "
        !          26638: 3^     37      2       179
        !          26639: \0263  "
        !          26640: \'     34      2       180
        !          26641: \0264  "
        !          26642: aa     "
        !          26643: /u     68      1       181
        !          26644: \0265  "
        !          26645: P!     60      2       182
        !          26646: \0266  "
        !          26647: pg     "
        !          26648: .^     32      0       183
        !          26649: \0267  "
        !          26650: ,,     32      1       184
        !          26651: \0270  "
        !          26652: ,a     "
        !          26653: 1^     37      2       185
        !          26654: \0271  "
        !          26655: o_     42      2       186
        !          26656: \0272  "
        !          26657: >>     36      0       187
        !          26658: \0273  "
        !          26659: 14     93      2       188
        !          26660: \0274  "
        !          26661: 12     93      2       189
        !          26662: \0275  "
        !          26663: 34     93      2       190
        !          26664: \0276  "
        !          26665: ??     54      1       191
        !          26666: \0277  "
        !          26667: A`     68      2       192
        !          26668: \0300  "
        !          26669: A'     68      2       193
        !          26670: \0301  "
        !          26671: A^     68      2       194
        !          26672: \0302  "
        !          26673: A~     68      2       195
        !          26674: \0303  "
        !          26675: A"     68      2       196
        !          26676: \0304  "
        !          26677: A*     68      2       197
        !          26678: \0305  "
        !          26679: AE     126     2       198
        !          26680: \0306  "
        !          26681: C,     74      3       199
        !          26682: \0307  "
        !          26683: E`     72      2       200
        !          26684: \0310  "
        !          26685: E'     72      2       201
        !          26686: \0311  "
        !          26687: E^     72      2       202
        !          26688: \0312  "
        !          26689: E"     72      2       203
        !          26690: \0313  "
        !          26691: I`     34      2       204
        !          26692: \0314  "
        !          26693: I'     34      2       205
        !          26694: \0315  "
        !          26695: I^     34      2       206
        !          26696: \0316  "
        !          26697: I"     34      2       207
        !          26698: \0317  "
        !          26699: D-     80      2       208
        !          26700: \0320  "
        !          26701: N~     74      2       209
        !          26702: \0321  "
        !          26703: O`     80      2       210
        !          26704: \0322  "
        !          26705: O'     80      2       211
        !          26706: \0323  "
        !          26707: O^     80      2       212
        !          26708: \0324  "
        !          26709: O~     80      2       213
        !          26710: \0325  "
        !          26711: O"     80      2       214
        !          26712: \0326  "
        !          26713: xx     60      0       215
        !          26714: \0327  "
        !          26715: O/     80      2       216
        !          26716: \0330  "
        !          26717: U`     78      2       217
        !          26718: \0331  "
        !          26719: U'     78      2       218
        !          26720: \0332  "
        !          26721: U^     78      2       219
        !          26722: \0333  "
        !          26723: U"     78      2       220
        !          26724: \0334  "
        !          26725: Y'     64      2       221
        !          26726: \0335  "
        !          26727: TH     62      2       222
        !          26728: \0336  "
        !          26729: ss     66      2       223
        !          26730: \0337  "
        !          26731: a`     58      2       224
        !          26732: \0340  "
        !          26733: a'     58      2       225
        !          26734: \0341  "
        !          26735: a^     58      2       226
        !          26736: \0342  "
        !          26737: a~     58      2       227
        !          26738: \0343  "
        !          26739: a"     58      2       228
        !          26740: \0344  "
        !          26741: a*     58      2       229
        !          26742: \0345  "
        !          26743: ae     86      0       230
        !          26744: \0346  "
        !          26745: c,     52      1       231
        !          26746: \0347  "
        !          26747: e`     52      2       232
        !          26748: \0350  "
        !          26749: e'     52      2       233
        !          26750: \0351  "
        !          26751: e^     52      2       234
        !          26752: \0352  "
        !          26753: e"     52      2       235
        !          26754: \0353  "
        !          26755: i`     30      2       236
        !          26756: \0354  "
        !          26757: i'     30      2       237
        !          26758: \0355  "
        !          26759: i^     30      2       238
        !          26760: \0356  "
        !          26761: i"     30      2       239
        !          26762: \0357  "
        !          26763: d-     56      2       240
        !          26764: \0360  "
        !          26765: n~     66      2       241
        !          26766: \0361  "
        !          26767: o`     56      2       242
        !          26768: \0362  "
        !          26769: o'     56      2       243
        !          26770: \0363  "
        !          26771: o^     56      2       244
        !          26772: \0364  "
        !          26773: o~     56      2       245
        !          26774: \0365  "
        !          26775: o"     56      2       246
        !          26776: \0366  "
        !          26777: -:     60      0       247
        !          26778: \0367  "
        !          26779: o/     56      0       248
        !          26780: \0370  "
        !          26781: u`     68      2       249
        !          26782: \0371  "
        !          26783: u'     68      2       250
        !          26784: \0372  "
        !          26785: u^     68      2       251
        !          26786: \0373  "
        !          26787: u"     68      2       252
        !          26788: \0374  "
        !          26789: y'     54      3       253
        !          26790: \0375  "
        !          26791: th     62      3       254
        !          26792: \0376  "
        !          26793: y"     54      3       255
        !          26794: \0377  "
        !          26795: ^a     42      2       147
        !          26796: ~a     44      2       148
        !          26797: Ua     46      2       150
        !          26798: .a     26      2       151
        !          26799: oa     32      2       154
        !          26800: "a     38      2       157
        !          26801: Ca     32      1       158
        !          26802: va     42      2       159
        !          26803: 0707070014231123641006440057030057030000010443600522627501600002600000006154post.src/devLatin1/KXname KX
        !          26804: fontname Bookman-DemiItalic
        !          26805: named in prologue
        !          26806: spacewidth 34
        !          26807: charset
        !          26808: !      32      2       33
        !          26809: "      38      2       34
        !          26810: dq     "
        !          26811: #      60      2       35
        !          26812: $      68      3       36
        !          26813: %      88      2       37
        !          26814: &      98      2       38
        !          26815: '      32      2       39
        !          26816: (      26      3       40
        !          26817: )      26      3       41
        !          26818: *      46      2       42
        !          26819: +      60      0       43
        !          26820: ,      34      1       44
        !          26821: -      28      0       173
        !          26822: \0255  "
        !          26823: .      34      0       46
        !          26824: /      36      2       47
        !          26825: 0      68      2       48
        !          26826: 1      68      2       49
        !          26827: 2      68      2       50
        !          26828: 3      68      2       51
        !          26829: 4      68      2       52
        !          26830: 5      68      2       53
        !          26831: 6      68      2       54
        !          26832: 7      68      2       55
        !          26833: 8      68      2       56
        !          26834: 9      68      2       57
        !          26835: :      34      0       58
        !          26836: ;      34      1       59
        !          26837: ---    62      0       60
        !          26838: =      60      0       61
        !          26839: ---    62      0       62
        !          26840: ?      62      2       63
        !          26841: @      78      2       64
        !          26842: A      72      2       65
        !          26843: B      72      2       66
        !          26844: C      70      2       67
        !          26845: D      76      2       68
        !          26846: E      72      2       69
        !          26847: F      66      2       70
        !          26848: G      76      2       71
        !          26849: H      80      2       72
        !          26850: I      38      2       73
        !          26851: J      62      2       74
        !          26852: K      78      2       75
        !          26853: L      64      2       76
        !          26854: M      86      2       77
        !          26855: N      74      2       78
        !          26856: O      76      2       79
        !          26857: P      64      2       80
        !          26858: Q      76      3       81
        !          26859: R      74      2       82
        !          26860: S      70      2       83
        !          26861: T      70      2       84
        !          26862: U      74      2       85
        !          26863: V      66      2       86
        !          26864: W      100     2       87
        !          26865: X      74      2       88
        !          26866: Y      66      2       89
        !          26867: Z      68      2       90
        !          26868: [      26      3       91
        !          26869: \      58      2       92
        !          26870: bs     "
        !          26871: ]      26      3       93
        !          26872: ^      48      2       147
        !          26873: ---    62      2       94
        !          26874: ---    50      1       95
        !          26875: `      32      2       96
        !          26876: a      68      0       97
        !          26877: b      60      2       98
        !          26878: c      56      0       99
        !          26879: d      68      2       100
        !          26880: e      56      0       101
        !          26881: f      42      3       102
        !          26882: g      62      1       103
        !          26883: h      70      2       104
        !          26884: i      38      2       105
        !          26885: j      32      3       106
        !          26886: k      70      2       107
        !          26887: l      38      2       108
        !          26888: m      96      0       109
        !          26889: n      68      0       110
        !          26890: o      60      0       111
        !          26891: p      66      1       112
        !          26892: q      62      1       113
        !          26893: r      50      0       114
        !          26894: s      54      0       115
        !          26895: t      44      2       116
        !          26896: u      68      0       117
        !          26897: v      54      0       118
        !          26898: w      86      0       119
        !          26899: x      62      0       120
        !          26900: y      60      1       121
        !          26901: z      56      0       122
        !          26902: {      30      3       123
        !          26903: ---    62      2       124
        !          26904: }      30      3       125
        !          26905: ~      48      2       148
        !          26906: ---    62      0       126
        !          26907: \`     38      2       145
        !          26908: ga     "
        !          26909: !!     32      1       161
        !          26910: \0241  "
        !          26911: c|     68      2       162
        !          26912: \0242  "
        !          26913: ct     "
        !          26914: L-     68      2       163
        !          26915: \0243  "
        !          26916: ps     "
        !          26917: xo     68      2       164
        !          26918: \0244  "
        !          26919: cr     "
        !          26920: Y-     68      2       165
        !          26921: \0245  "
        !          26922: yn     "
        !          26923: ||     62      2       166
        !          26924: \0246  "
        !          26925: so     62      3       167
        !          26926: \0247  "
        !          26927: sc     "
        !          26928: ""     52      2       168
        !          26929: \0250  "
        !          26930: :a     "
        !          26931: co     78      2       169
        !          26932: \0251  "
        !          26933: a_     44      2       170
        !          26934: \0252  "
        !          26935: <<     38      0       171
        !          26936: \0253  "
        !          26937: -,     62      0       172
        !          26938: \0254  "
        !          26939: hy     28      0       173
        !          26940: \0255  "
        !          26941: --     60      0       45
        !          26942: ro     78      2       174
        !          26943: \0256  "
        !          26944: rg     "
        !          26945: -^     48      2       175
        !          26946: \0257  "
        !          26947: -a     "
        !          26948: 0^     40      2       176
        !          26949: \0260  "
        !          26950: +-     60      0       177
        !          26951: \0261  "
        !          26952: 2^     41      2       178
        !          26953: \0262  "
        !          26954: 3^     41      2       179
        !          26955: \0263  "
        !          26956: \'     34      2       180
        !          26957: \0264  "
        !          26958: aa     "
        !          26959: /u     68      1       181
        !          26960: \0265  "
        !          26961: P!     68      3       182
        !          26962: \0266  "
        !          26963: pg     "
        !          26964: .^     34      0       183
        !          26965: \0267  "
        !          26966: ,,     36      1       184
        !          26967: \0270  "
        !          26968: ,a     "
        !          26969: 1^     41      2       185
        !          26970: \0271  "
        !          26971: o_     44      2       186
        !          26972: \0272  "
        !          26973: >>     38      0       187
        !          26974: \0273  "
        !          26975: 14     102     2       188
        !          26976: \0274  "
        !          26977: 12     102     2       189
        !          26978: \0275  "
        !          26979: 34     102     2       190
        !          26980: \0276  "
        !          26981: ??     62      1       191
        !          26982: \0277  "
        !          26983: A`     72      2       192
        !          26984: \0300  "
        !          26985: A'     72      2       193
        !          26986: \0301  "
        !          26987: A^     72      2       194
        !          26988: \0302  "
        !          26989: A~     72      2       195
        !          26990: \0303  "
        !          26991: A"     72      2       196
        !          26992: \0304  "
        !          26993: A*     72      2       197
        !          26994: \0305  "
        !          26995: AE     114     2       198
        !          26996: \0306  "
        !          26997: C,     70      3       199
        !          26998: \0307  "
        !          26999: E`     72      2       200
        !          27000: \0310  "
        !          27001: E'     72      2       201
        !          27002: \0311  "
        !          27003: E^     72      2       202
        !          27004: \0312  "
        !          27005: E"     72      2       203
        !          27006: \0313  "
        !          27007: I`     38      2       204
        !          27008: \0314  "
        !          27009: I'     38      2       205
        !          27010: \0315  "
        !          27011: I^     38      2       206
        !          27012: \0316  "
        !          27013: I"     38      2       207
        !          27014: \0317  "
        !          27015: D-     76      2       208
        !          27016: \0320  "
        !          27017: N~     74      2       209
        !          27018: \0321  "
        !          27019: O`     76      2       210
        !          27020: \0322  "
        !          27021: O'     76      2       211
        !          27022: \0323  "
        !          27023: O^     76      2       212
        !          27024: \0324  "
        !          27025: O~     76      2       213
        !          27026: \0325  "
        !          27027: O"     76      2       214
        !          27028: \0326  "
        !          27029: xx     60      0       215
        !          27030: \0327  "
        !          27031: O/     76      2       216
        !          27032: \0330  "
        !          27033: U`     74      2       217
        !          27034: \0331  "
        !          27035: U'     74      2       218
        !          27036: \0332  "
        !          27037: U^     74      2       219
        !          27038: \0333  "
        !          27039: U"     74      2       220
        !          27040: \0334  "
        !          27041: Y'     66      2       221
        !          27042: \0335  "
        !          27043: TH     64      2       222
        !          27044: \0336  "
        !          27045: ss     66      3       223
        !          27046: \0337  "
        !          27047: a`     68      2       224
        !          27048: \0340  "
        !          27049: a'     68      2       225
        !          27050: \0341  "
        !          27051: a^     68      2       226
        !          27052: \0342  "
        !          27053: a~     68      2       227
        !          27054: \0343  "
        !          27055: a"     68      2       228
        !          27056: \0344  "
        !          27057: a*     68      2       229
        !          27058: \0345  "
        !          27059: ae     88      0       230
        !          27060: \0346  "
        !          27061: c,     56      1       231
        !          27062: \0347  "
        !          27063: e`     56      2       232
        !          27064: \0350  "
        !          27065: e'     56      2       233
        !          27066: \0351  "
        !          27067: e^     56      2       234
        !          27068: \0352  "
        !          27069: e"     56      2       235
        !          27070: \0353  "
        !          27071: i`     38      2       236
        !          27072: \0354  "
        !          27073: i'     38      2       237
        !          27074: \0355  "
        !          27075: i^     38      2       238
        !          27076: \0356  "
        !          27077: i"     38      2       239
        !          27078: \0357  "
        !          27079: d-     60      2       240
        !          27080: \0360  "
        !          27081: n~     68      2       241
        !          27082: \0361  "
        !          27083: o`     60      2       242
        !          27084: \0362  "
        !          27085: o'     60      2       243
        !          27086: \0363  "
        !          27087: o^     60      2       244
        !          27088: \0364  "
        !          27089: o~     60      2       245
        !          27090: \0365  "
        !          27091: o"     60      2       246
        !          27092: \0366  "
        !          27093: -:     60      0       247
        !          27094: \0367  "
        !          27095: o/     60      2       248
        !          27096: \0370  "
        !          27097: u`     68      2       249
        !          27098: \0371  "
        !          27099: u'     68      2       250
        !          27100: \0372  "
        !          27101: u^     68      2       251
        !          27102: \0373  "
        !          27103: u"     68      2       252
        !          27104: \0374  "
        !          27105: y'     60      3       253
        !          27106: \0375  "
        !          27107: th     66      3       254
        !          27108: \0376  "
        !          27109: y"     60      3       255
        !          27110: \0377  "
        !          27111: ^a     48      2       147
        !          27112: ~a     48      2       148
        !          27113: Ua     46      2       150
        !          27114: .a     38      2       151
        !          27115: oa     36      2       154
        !          27116: "a     56      2       157
        !          27117: Ca     32      1       158
        !          27118: va     48      2       159
        !          27119: 0707070014231123651006440057030057030000010443640522627501600002600000006152post.src/devLatin1/NBname NB
        !          27120: fontname NewCenturySchlbk-Bold
        !          27121: named in prologue
        !          27122: spacewidth 29
        !          27123: charset
        !          27124: !      30      2       33
        !          27125: "      33      2       34
        !          27126: dq     "
        !          27127: #      57      2       35
        !          27128: $      57      3       36
        !          27129: %      83      2       37
        !          27130: &      85      2       38
        !          27131: '      24      2       39
        !          27132: (      39      3       40
        !          27133: )      39      3       41
        !          27134: *      50      2       42
        !          27135: +      61      0       43
        !          27136: ,      28      1       44
        !          27137: -      33      0       173
        !          27138: \0255  "
        !          27139: .      28      0       46
        !          27140: /      28      2       47
        !          27141: 0      57      2       48
        !          27142: 1      57      2       49
        !          27143: 2      57      2       50
        !          27144: 3      57      2       51
        !          27145: 4      57      2       52
        !          27146: 5      57      2       53
        !          27147: 6      57      2       54
        !          27148: 7      57      2       55
        !          27149: 8      57      2       56
        !          27150: 9      57      2       57
        !          27151: :      28      0       58
        !          27152: ;      28      1       59
        !          27153: ---    61      0       60
        !          27154: =      61      0       61
        !          27155: ---    61      0       62
        !          27156: ?      50      2       63
        !          27157: @      75      2       64
        !          27158: A      76      2       65
        !          27159: B      78      2       66
        !          27160: C      78      2       67
        !          27161: D      83      2       68
        !          27162: E      76      2       69
        !          27163: F      72      2       70
        !          27164: G      83      2       71
        !          27165: H      87      2       72
        !          27166: I      44      2       73
        !          27167: J      65      2       74
        !          27168: K      82      2       75
        !          27169: L      72      2       76
        !          27170: M      98      2       77
        !          27171: N      83      2       78
        !          27172: O      83      2       79
        !          27173: P      76      2       80
        !          27174: Q      83      3       81
        !          27175: R      82      2       82
        !          27176: S      67      2       83
        !          27177: T      72      2       84
        !          27178: U      83      2       85
        !          27179: V      76      2       86
        !          27180: W      98      2       87
        !          27181: X      72      2       88
        !          27182: Y      72      2       89
        !          27183: Z      67      2       90
        !          27184: [      39      3       91
        !          27185: \      61      2       92
        !          27186: bs     "
        !          27187: ]      39      3       93
        !          27188: ^      33      2       147
        !          27189: ---    61      2       94
        !          27190: ---    50      1       95
        !          27191: `      24      2       96
        !          27192: a      61      0       97
        !          27193: b      65      2       98
        !          27194: c      56      0       99
        !          27195: d      67      2       100
        !          27196: e      57      0       101
        !          27197: f      39      2       102
        !          27198: g      61      1       103
        !          27199: h      69      2       104
        !          27200: i      37      2       105
        !          27201: j      35      3       106
        !          27202: k      67      2       107
        !          27203: l      35      2       108
        !          27204: m      96      0       109
        !          27205: n      69      0       110
        !          27206: o      61      0       111
        !          27207: p      67      1       112
        !          27208: q      65      1       113
        !          27209: r      52      0       114
        !          27210: s      50      0       115
        !          27211: t      43      2       116
        !          27212: u      69      0       117
        !          27213: v      61      0       118
        !          27214: w      89      0       119
        !          27215: x      61      0       120
        !          27216: y      61      1       121
        !          27217: z      54      0       122
        !          27218: {      39      3       123
        !          27219: ---    61      2       124
        !          27220: }      39      3       125
        !          27221: ~      33      2       148
        !          27222: ---    61      0       126
        !          27223: \`     33      2       145
        !          27224: ga     "
        !          27225: !!     30      1       161
        !          27226: \0241  "
        !          27227: c|     57      3       162
        !          27228: \0242  "
        !          27229: ct     "
        !          27230: L-     57      2       163
        !          27231: \0243  "
        !          27232: ps     "
        !          27233: xo     57      2       164
        !          27234: \0244  "
        !          27235: cr     "
        !          27236: Y-     57      2       165
        !          27237: \0245  "
        !          27238: yn     "
        !          27239: ||     61      2       166
        !          27240: \0246  "
        !          27241: so     50      2       167
        !          27242: \0247  "
        !          27243: sc     "
        !          27244: ""     33      2       168
        !          27245: \0250  "
        !          27246: :a     "
        !          27247: co     75      2       169
        !          27248: \0251  "
        !          27249: a_     37      2       170
        !          27250: \0252  "
        !          27251: <<     50      0       171
        !          27252: \0253  "
        !          27253: -,     61      0       172
        !          27254: \0254  "
        !          27255: hy     33      0       173
        !          27256: \0255  "
        !          27257: --     61      0       45
        !          27258: ro     75      2       174
        !          27259: \0256  "
        !          27260: rg     "
        !          27261: -^     33      2       175
        !          27262: \0257  "
        !          27263: -a     "
        !          27264: 0^     40      2       176
        !          27265: \0260  "
        !          27266: +-     61      0       177
        !          27267: \0261  "
        !          27268: 2^     34      2       178
        !          27269: \0262  "
        !          27270: 3^     34      2       179
        !          27271: \0263  "
        !          27272: \'     33      2       180
        !          27273: \0264  "
        !          27274: aa     "
        !          27275: /u     69      1       181
        !          27276: \0265  "
        !          27277: P!     75      2       182
        !          27278: \0266  "
        !          27279: pg     "
        !          27280: .^     28      0       183
        !          27281: \0267  "
        !          27282: ,,     33      1       184
        !          27283: \0270  "
        !          27284: ,a     "
        !          27285: 1^     34      2       185
        !          27286: \0271  "
        !          27287: o_     37      2       186
        !          27288: \0272  "
        !          27289: >>     50      0       187
        !          27290: \0273  "
        !          27291: 14     86      2       188
        !          27292: \0274  "
        !          27293: 12     86      2       189
        !          27294: \0275  "
        !          27295: 34     86      2       190
        !          27296: \0276  "
        !          27297: ??     50      1       191
        !          27298: \0277  "
        !          27299: A`     76      2       192
        !          27300: \0300  "
        !          27301: A'     76      2       193
        !          27302: \0301  "
        !          27303: A^     76      2       194
        !          27304: \0302  "
        !          27305: A~     76      2       195
        !          27306: \0303  "
        !          27307: A"     76      2       196
        !          27308: \0304  "
        !          27309: A*     76      2       197
        !          27310: \0305  "
        !          27311: AE     98      2       198
        !          27312: \0306  "
        !          27313: C,     78      3       199
        !          27314: \0307  "
        !          27315: E`     76      2       200
        !          27316: \0310  "
        !          27317: E'     76      2       201
        !          27318: \0311  "
        !          27319: E^     76      2       202
        !          27320: \0312  "
        !          27321: E"     76      2       203
        !          27322: \0313  "
        !          27323: I`     44      2       204
        !          27324: \0314  "
        !          27325: I'     44      2       205
        !          27326: \0315  "
        !          27327: I^     44      2       206
        !          27328: \0316  "
        !          27329: I"     44      2       207
        !          27330: \0317  "
        !          27331: D-     83      2       208
        !          27332: \0320  "
        !          27333: N~     83      2       209
        !          27334: \0321  "
        !          27335: O`     83      2       210
        !          27336: \0322  "
        !          27337: O'     83      2       211
        !          27338: \0323  "
        !          27339: O^     83      2       212
        !          27340: \0324  "
        !          27341: O~     83      2       213
        !          27342: \0325  "
        !          27343: O"     83      2       214
        !          27344: \0326  "
        !          27345: xx     61      0       215
        !          27346: \0327  "
        !          27347: O/     83      2       216
        !          27348: \0330  "
        !          27349: U`     83      2       217
        !          27350: \0331  "
        !          27351: U'     83      2       218
        !          27352: \0332  "
        !          27353: U^     83      2       219
        !          27354: \0333  "
        !          27355: U"     83      2       220
        !          27356: \0334  "
        !          27357: Y'     72      2       221
        !          27358: \0335  "
        !          27359: TH     76      2       222
        !          27360: \0336  "
        !          27361: ss     61      2       223
        !          27362: \0337  "
        !          27363: a`     61      2       224
        !          27364: \0340  "
        !          27365: a'     61      2       225
        !          27366: \0341  "
        !          27367: a^     61      2       226
        !          27368: \0342  "
        !          27369: a~     61      2       227
        !          27370: \0343  "
        !          27371: a"     61      2       228
        !          27372: \0344  "
        !          27373: a*     61      2       229
        !          27374: \0345  "
        !          27375: ae     87      0       230
        !          27376: \0346  "
        !          27377: c,     56      1       231
        !          27378: \0347  "
        !          27379: e`     57      2       232
        !          27380: \0350  "
        !          27381: e'     57      2       233
        !          27382: \0351  "
        !          27383: e^     57      2       234
        !          27384: \0352  "
        !          27385: e"     57      2       235
        !          27386: \0353  "
        !          27387: i`     37      2       236
        !          27388: \0354  "
        !          27389: i'     37      2       237
        !          27390: \0355  "
        !          27391: i^     37      2       238
        !          27392: \0356  "
        !          27393: i"     37      2       239
        !          27394: \0357  "
        !          27395: d-     61      2       240
        !          27396: \0360  "
        !          27397: n~     69      2       241
        !          27398: \0361  "
        !          27399: o`     61      2       242
        !          27400: \0362  "
        !          27401: o'     61      2       243
        !          27402: \0363  "
        !          27403: o^     61      2       244
        !          27404: \0364  "
        !          27405: o~     61      2       245
        !          27406: \0365  "
        !          27407: o"     61      2       246
        !          27408: \0366  "
        !          27409: -:     61      0       247
        !          27410: \0367  "
        !          27411: o/     61      3       248
        !          27412: \0370  "
        !          27413: u`     69      2       249
        !          27414: \0371  "
        !          27415: u'     69      2       250
        !          27416: \0372  "
        !          27417: u^     69      2       251
        !          27418: \0373  "
        !          27419: u"     69      2       252
        !          27420: \0374  "
        !          27421: y'     61      3       253
        !          27422: \0375  "
        !          27423: th     67      3       254
        !          27424: \0376  "
        !          27425: y"     61      3       255
        !          27426: \0377  "
        !          27427: ^a     33      2       147
        !          27428: ~a     33      2       148
        !          27429: Ua     33      2       150
        !          27430: .a     33      2       151
        !          27431: oa     33      2       154
        !          27432: "a     33      2       157
        !          27433: Ca     33      1       158
        !          27434: va     33      2       159
        !          27435: 0707070014231123661006440057030057030000010444000522627501600002600000006154post.src/devLatin1/NIname NI
        !          27436: fontname NewCenturySchlbk-Italic
        !          27437: named in prologue
        !          27438: spacewidth 28
        !          27439: charset
        !          27440: !      33      2       33
        !          27441: "      40      2       34
        !          27442: dq     "
        !          27443: #      56      2       35
        !          27444: $      56      3       36
        !          27445: %      83      2       37
        !          27446: &      85      2       38
        !          27447: '      20      2       39
        !          27448: (      33      3       40
        !          27449: )      33      3       41
        !          27450: *      50      2       42
        !          27451: +      61      0       43
        !          27452: ,      28      1       44
        !          27453: -      33      0       173
        !          27454: \0255  "
        !          27455: .      28      0       46
        !          27456: /      61      3       47
        !          27457: 0      56      2       48
        !          27458: 1      56      2       49
        !          27459: 2      56      2       50
        !          27460: 3      56      2       51
        !          27461: 4      56      2       52
        !          27462: 5      56      2       53
        !          27463: 6      56      2       54
        !          27464: 7      56      2       55
        !          27465: 8      56      2       56
        !          27466: 9      56      2       57
        !          27467: :      28      0       58
        !          27468: ;      28      1       59
        !          27469: ---    61      0       60
        !          27470: =      61      0       61
        !          27471: ---    61      0       62
        !          27472: ?      44      2       63
        !          27473: @      75      2       64
        !          27474: A      70      2       65
        !          27475: B      72      2       66
        !          27476: C      72      2       67
        !          27477: D      78      2       68
        !          27478: E      72      2       69
        !          27479: F      67      2       70
        !          27480: G      78      2       71
        !          27481: H      83      2       72
        !          27482: I      41      2       73
        !          27483: J      61      2       74
        !          27484: K      74      2       75
        !          27485: L      67      2       76
        !          27486: M      94      2       77
        !          27487: N      82      2       78
        !          27488: O      78      2       79
        !          27489: P      67      2       80
        !          27490: Q      78      3       81
        !          27491: R      74      2       82
        !          27492: S      67      2       83
        !          27493: T      69      2       84
        !          27494: U      82      2       85
        !          27495: V      70      2       86
        !          27496: W      93      2       87
        !          27497: X      70      2       88
        !          27498: Y      69      2       89
        !          27499: Z      67      2       90
        !          27500: [      33      3       91
        !          27501: \      61      2       92
        !          27502: bs     "
        !          27503: ]      33      3       93
        !          27504: ^      33      2       147
        !          27505: ---    61      2       94
        !          27506: ---    50      1       95
        !          27507: `      20      2       96
        !          27508: a      57      0       97
        !          27509: b      56      2       98
        !          27510: c      44      0       99
        !          27511: d      61      2       100
        !          27512: e      44      0       101
        !          27513: f      33      3       102
        !          27514: g      54      1       103
        !          27515: h      61      2       104
        !          27516: i      33      2       105
        !          27517: j      32      3       106
        !          27518: k      56      2       107
        !          27519: l      33      2       108
        !          27520: m      89      0       109
        !          27521: n      61      0       110
        !          27522: o      50      0       111
        !          27523: p      57      1       112
        !          27524: q      56      1       113
        !          27525: r      44      0       114
        !          27526: s      44      0       115
        !          27527: t      35      2       116
        !          27528: u      61      0       117
        !          27529: v      52      0       118
        !          27530: w      78      0       119
        !          27531: x      50      0       120
        !          27532: y      50      1       121
        !          27533: z      46      0       122
        !          27534: {      33      3       123
        !          27535: ---    61      2       124
        !          27536: }      33      3       125
        !          27537: ~      33      2       148
        !          27538: ---    61      0       126
        !          27539: \`     33      2       145
        !          27540: ga     "
        !          27541: !!     33      3       161
        !          27542: \0241  "
        !          27543: c|     56      3       162
        !          27544: \0242  "
        !          27545: ct     "
        !          27546: L-     56      2       163
        !          27547: \0243  "
        !          27548: ps     "
        !          27549: xo     56      2       164
        !          27550: \0244  "
        !          27551: cr     "
        !          27552: Y-     56      2       165
        !          27553: \0245  "
        !          27554: yn     "
        !          27555: ||     61      2       166
        !          27556: \0246  "
        !          27557: so     50      3       167
        !          27558: \0247  "
        !          27559: sc     "
        !          27560: ""     33      2       168
        !          27561: \0250  "
        !          27562: :a     "
        !          27563: co     75      2       169
        !          27564: \0251  "
        !          27565: a_     42      2       170
        !          27566: \0252  "
        !          27567: <<     43      0       171
        !          27568: \0253  "
        !          27569: -,     61      0       172
        !          27570: \0254  "
        !          27571: hy     33      0       173
        !          27572: \0255  "
        !          27573: --     61      0       45
        !          27574: ro     75      2       174
        !          27575: \0256  "
        !          27576: rg     "
        !          27577: -^     33      2       175
        !          27578: \0257  "
        !          27579: -a     "
        !          27580: 0^     40      2       176
        !          27581: \0260  "
        !          27582: +-     61      0       177
        !          27583: \0261  "
        !          27584: 2^     33      2       178
        !          27585: \0262  "
        !          27586: 3^     33      2       179
        !          27587: \0263  "
        !          27588: \'     33      2       180
        !          27589: \0264  "
        !          27590: aa     "
        !          27591: /u     61      1       181
        !          27592: \0265  "
        !          27593: P!     65      2       182
        !          27594: \0266  "
        !          27595: pg     "
        !          27596: .^     28      0       183
        !          27597: \0267  "
        !          27598: ,,     33      1       184
        !          27599: \0270  "
        !          27600: ,a     "
        !          27601: 1^     33      2       185
        !          27602: \0271  "
        !          27603: o_     37      2       186
        !          27604: \0272  "
        !          27605: >>     43      0       187
        !          27606: \0273  "
        !          27607: 14     83      2       188
        !          27608: \0274  "
        !          27609: 12     83      2       189
        !          27610: \0275  "
        !          27611: 34     83      2       190
        !          27612: \0276  "
        !          27613: ??     44      3       191
        !          27614: \0277  "
        !          27615: A`     70      2       192
        !          27616: \0300  "
        !          27617: A'     70      2       193
        !          27618: \0301  "
        !          27619: A^     70      2       194
        !          27620: \0302  "
        !          27621: A~     70      2       195
        !          27622: \0303  "
        !          27623: A"     70      2       196
        !          27624: \0304  "
        !          27625: A*     70      2       197
        !          27626: \0305  "
        !          27627: AE     87      2       198
        !          27628: \0306  "
        !          27629: C,     72      3       199
        !          27630: \0307  "
        !          27631: E`     72      2       200
        !          27632: \0310  "
        !          27633: E'     72      2       201
        !          27634: \0311  "
        !          27635: E^     72      2       202
        !          27636: \0312  "
        !          27637: E"     72      2       203
        !          27638: \0313  "
        !          27639: I`     41      2       204
        !          27640: \0314  "
        !          27641: I'     41      2       205
        !          27642: \0315  "
        !          27643: I^     41      2       206
        !          27644: \0316  "
        !          27645: I"     41      2       207
        !          27646: \0317  "
        !          27647: D-     78      2       208
        !          27648: \0320  "
        !          27649: N~     82      2       209
        !          27650: \0321  "
        !          27651: O`     78      2       210
        !          27652: \0322  "
        !          27653: O'     78      2       211
        !          27654: \0323  "
        !          27655: O^     78      2       212
        !          27656: \0324  "
        !          27657: O~     78      2       213
        !          27658: \0325  "
        !          27659: O"     78      2       214
        !          27660: \0326  "
        !          27661: xx     61      0       215
        !          27662: \0327  "
        !          27663: O/     78      2       216
        !          27664: \0330  "
        !          27665: U`     82      2       217
        !          27666: \0331  "
        !          27667: U'     82      2       218
        !          27668: \0332  "
        !          27669: U^     82      2       219
        !          27670: \0333  "
        !          27671: U"     82      2       220
        !          27672: \0334  "
        !          27673: Y'     69      2       221
        !          27674: \0335  "
        !          27675: TH     67      2       222
        !          27676: \0336  "
        !          27677: ss     56      3       223
        !          27678: \0337  "
        !          27679: a`     57      2       224
        !          27680: \0340  "
        !          27681: a'     57      2       225
        !          27682: \0341  "
        !          27683: a^     57      2       226
        !          27684: \0342  "
        !          27685: a~     57      2       227
        !          27686: \0343  "
        !          27687: a"     57      2       228
        !          27688: \0344  "
        !          27689: a*     57      2       229
        !          27690: \0345  "
        !          27691: ae     72      0       230
        !          27692: \0346  "
        !          27693: c,     44      1       231
        !          27694: \0347  "
        !          27695: e`     44      2       232
        !          27696: \0350  "
        !          27697: e'     44      2       233
        !          27698: \0351  "
        !          27699: e^     44      2       234
        !          27700: \0352  "
        !          27701: e"     44      2       235
        !          27702: \0353  "
        !          27703: i`     33      2       236
        !          27704: \0354  "
        !          27705: i'     33      2       237
        !          27706: \0355  "
        !          27707: i^     33      2       238
        !          27708: \0356  "
        !          27709: i"     33      2       239
        !          27710: \0357  "
        !          27711: d-     50      2       240
        !          27712: \0360  "
        !          27713: n~     61      2       241
        !          27714: \0361  "
        !          27715: o`     50      2       242
        !          27716: \0362  "
        !          27717: o'     50      2       243
        !          27718: \0363  "
        !          27719: o^     50      2       244
        !          27720: \0364  "
        !          27721: o~     50      2       245
        !          27722: \0365  "
        !          27723: o"     50      2       246
        !          27724: \0366  "
        !          27725: -:     61      0       247
        !          27726: \0367  "
        !          27727: o/     50      3       248
        !          27728: \0370  "
        !          27729: u`     61      2       249
        !          27730: \0371  "
        !          27731: u'     61      2       250
        !          27732: \0372  "
        !          27733: u^     61      2       251
        !          27734: \0373  "
        !          27735: u"     61      2       252
        !          27736: \0374  "
        !          27737: y'     50      3       253
        !          27738: \0375  "
        !          27739: th     57      3       254
        !          27740: \0376  "
        !          27741: y"     50      3       255
        !          27742: \0377  "
        !          27743: ^a     33      2       147
        !          27744: ~a     33      2       148
        !          27745: Ua     33      2       150
        !          27746: .a     33      2       151
        !          27747: oa     33      2       154
        !          27748: "a     33      2       157
        !          27749: Ca     33      1       158
        !          27750: va     33      2       159
        !          27751: 0707070014231123671006440057030057030000010444040522627501600002600000006154post.src/devLatin1/NRname NR
        !          27752: fontname NewCenturySchlbk-Roman
        !          27753: named in prologue
        !          27754: spacewidth 28
        !          27755: charset
        !          27756: !      30      2       33
        !          27757: "      39      2       34
        !          27758: dq     "
        !          27759: #      56      2       35
        !          27760: $      56      3       36
        !          27761: %      83      2       37
        !          27762: &      82      2       38
        !          27763: '      20      2       39
        !          27764: (      33      3       40
        !          27765: )      33      3       41
        !          27766: *      50      2       42
        !          27767: +      61      0       43
        !          27768: ,      28      1       44
        !          27769: -      33      0       173
        !          27770: \0255  "
        !          27771: .      28      0       46
        !          27772: /      28      2       47
        !          27773: 0      56      2       48
        !          27774: 1      56      2       49
        !          27775: 2      56      2       50
        !          27776: 3      56      2       51
        !          27777: 4      56      2       52
        !          27778: 5      56      2       53
        !          27779: 6      56      2       54
        !          27780: 7      56      2       55
        !          27781: 8      56      2       56
        !          27782: 9      56      2       57
        !          27783: :      28      0       58
        !          27784: ;      28      1       59
        !          27785: ---    61      0       60
        !          27786: =      61      0       61
        !          27787: ---    61      0       62
        !          27788: ?      44      2       63
        !          27789: @      74      2       64
        !          27790: A      72      2       65
        !          27791: B      72      2       66
        !          27792: C      72      2       67
        !          27793: D      78      2       68
        !          27794: E      72      2       69
        !          27795: F      67      2       70
        !          27796: G      78      2       71
        !          27797: H      83      2       72
        !          27798: I      41      2       73
        !          27799: J      56      2       74
        !          27800: K      78      2       75
        !          27801: L      67      2       76
        !          27802: M      94      2       77
        !          27803: N      82      2       78
        !          27804: O      78      2       79
        !          27805: P      67      2       80
        !          27806: Q      78      3       81
        !          27807: R      72      2       82
        !          27808: S      63      2       83
        !          27809: T      67      2       84
        !          27810: U      82      2       85
        !          27811: V      72      2       86
        !          27812: W      98      2       87
        !          27813: X      70      2       88
        !          27814: Y      70      2       89
        !          27815: Z      61      2       90
        !          27816: [      33      3       91
        !          27817: \      61      2       92
        !          27818: bs     "
        !          27819: ]      33      3       93
        !          27820: ^      33      2       147
        !          27821: ---    61      2       94
        !          27822: ---    50      1       95
        !          27823: `      20      2       96
        !          27824: a      56      0       97
        !          27825: b      56      2       98
        !          27826: c      44      0       99
        !          27827: d      57      2       100
        !          27828: e      50      0       101
        !          27829: f      33      2       102
        !          27830: g      54      1       103
        !          27831: h      61      2       104
        !          27832: i      32      2       105
        !          27833: j      30      3       106
        !          27834: k      59      2       107
        !          27835: l      32      2       108
        !          27836: m      89      0       109
        !          27837: n      61      0       110
        !          27838: o      50      0       111
        !          27839: p      57      1       112
        !          27840: q      56      1       113
        !          27841: r      44      0       114
        !          27842: s      46      0       115
        !          27843: t      39      2       116
        !          27844: u      61      0       117
        !          27845: v      54      0       118
        !          27846: w      78      0       119
        !          27847: x      54      0       120
        !          27848: y      54      1       121
        !          27849: z      48      0       122
        !          27850: {      33      3       123
        !          27851: ---    61      2       124
        !          27852: }      33      3       125
        !          27853: ~      33      2       148
        !          27854: ---    61      0       126
        !          27855: \`     33      2       145
        !          27856: ga     "
        !          27857: !!     30      3       161
        !          27858: \0241  "
        !          27859: c|     56      3       162
        !          27860: \0242  "
        !          27861: ct     "
        !          27862: L-     56      2       163
        !          27863: \0243  "
        !          27864: ps     "
        !          27865: xo     56      2       164
        !          27866: \0244  "
        !          27867: cr     "
        !          27868: Y-     56      2       165
        !          27869: \0245  "
        !          27870: yn     "
        !          27871: ||     61      2       166
        !          27872: \0246  "
        !          27873: so     50      3       167
        !          27874: \0247  "
        !          27875: sc     "
        !          27876: ""     33      2       168
        !          27877: \0250  "
        !          27878: :a     "
        !          27879: co     74      2       169
        !          27880: \0251  "
        !          27881: a_     33      2       170
        !          27882: \0252  "
        !          27883: <<     43      0       171
        !          27884: \0253  "
        !          27885: -,     61      0       172
        !          27886: \0254  "
        !          27887: hy     33      0       173
        !          27888: \0255  "
        !          27889: --     61      0       45
        !          27890: ro     74      2       174
        !          27891: \0256  "
        !          27892: rg     "
        !          27893: -^     33      2       175
        !          27894: \0257  "
        !          27895: -a     "
        !          27896: 0^     40      2       176
        !          27897: \0260  "
        !          27898: +-     61      0       177
        !          27899: \0261  "
        !          27900: 2^     33      2       178
        !          27901: \0262  "
        !          27902: 3^     33      2       179
        !          27903: \0263  "
        !          27904: \'     33      2       180
        !          27905: \0264  "
        !          27906: aa     "
        !          27907: /u     61      1       181
        !          27908: \0265  "
        !          27909: P!     61      3       182
        !          27910: \0266  "
        !          27911: pg     "
        !          27912: .^     28      0       183
        !          27913: \0267  "
        !          27914: ,,     33      1       184
        !          27915: \0270  "
        !          27916: ,a     "
        !          27917: 1^     33      2       185
        !          27918: \0271  "
        !          27919: o_     30      2       186
        !          27920: \0272  "
        !          27921: >>     43      0       187
        !          27922: \0273  "
        !          27923: 14     83      2       188
        !          27924: \0274  "
        !          27925: 12     83      2       189
        !          27926: \0275  "
        !          27927: 34     83      2       190
        !          27928: \0276  "
        !          27929: ??     44      3       191
        !          27930: \0277  "
        !          27931: A`     72      2       192
        !          27932: \0300  "
        !          27933: A'     72      2       193
        !          27934: \0301  "
        !          27935: A^     72      2       194
        !          27936: \0302  "
        !          27937: A~     72      2       195
        !          27938: \0303  "
        !          27939: A"     72      2       196
        !          27940: \0304  "
        !          27941: A*     72      2       197
        !          27942: \0305  "
        !          27943: AE     100     2       198
        !          27944: \0306  "
        !          27945: C,     72      3       199
        !          27946: \0307  "
        !          27947: E`     72      2       200
        !          27948: \0310  "
        !          27949: E'     72      2       201
        !          27950: \0311  "
        !          27951: E^     72      2       202
        !          27952: \0312  "
        !          27953: E"     72      2       203
        !          27954: \0313  "
        !          27955: I`     41      2       204
        !          27956: \0314  "
        !          27957: I'     41      2       205
        !          27958: \0315  "
        !          27959: I^     41      2       206
        !          27960: \0316  "
        !          27961: I"     41      2       207
        !          27962: \0317  "
        !          27963: D-     78      2       208
        !          27964: \0320  "
        !          27965: N~     82      2       209
        !          27966: \0321  "
        !          27967: O`     78      2       210
        !          27968: \0322  "
        !          27969: O'     78      2       211
        !          27970: \0323  "
        !          27971: O^     78      2       212
        !          27972: \0324  "
        !          27973: O~     78      2       213
        !          27974: \0325  "
        !          27975: O"     78      2       214
        !          27976: \0326  "
        !          27977: xx     61      0       215
        !          27978: \0327  "
        !          27979: O/     78      2       216
        !          27980: \0330  "
        !          27981: U`     82      2       217
        !          27982: \0331  "
        !          27983: U'     82      2       218
        !          27984: \0332  "
        !          27985: U^     82      2       219
        !          27986: \0333  "
        !          27987: U"     82      2       220
        !          27988: \0334  "
        !          27989: Y'     70      2       221
        !          27990: \0335  "
        !          27991: TH     67      2       222
        !          27992: \0336  "
        !          27993: ss     57      2       223
        !          27994: \0337  "
        !          27995: a`     56      2       224
        !          27996: \0340  "
        !          27997: a'     56      2       225
        !          27998: \0341  "
        !          27999: a^     56      2       226
        !          28000: \0342  "
        !          28001: a~     56      2       227
        !          28002: \0343  "
        !          28003: a"     56      2       228
        !          28004: \0344  "
        !          28005: a*     56      2       229
        !          28006: \0345  "
        !          28007: ae     80      0       230
        !          28008: \0346  "
        !          28009: c,     44      1       231
        !          28010: \0347  "
        !          28011: e`     50      2       232
        !          28012: \0350  "
        !          28013: e'     50      2       233
        !          28014: \0351  "
        !          28015: e^     50      2       234
        !          28016: \0352  "
        !          28017: e"     50      2       235
        !          28018: \0353  "
        !          28019: i`     32      2       236
        !          28020: \0354  "
        !          28021: i'     32      2       237
        !          28022: \0355  "
        !          28023: i^     32      2       238
        !          28024: \0356  "
        !          28025: i"     32      2       239
        !          28026: \0357  "
        !          28027: d-     50      2       240
        !          28028: \0360  "
        !          28029: n~     61      2       241
        !          28030: \0361  "
        !          28031: o`     50      2       242
        !          28032: \0362  "
        !          28033: o'     50      2       243
        !          28034: \0363  "
        !          28035: o^     50      2       244
        !          28036: \0364  "
        !          28037: o~     50      2       245
        !          28038: \0365  "
        !          28039: o"     50      2       246
        !          28040: \0366  "
        !          28041: -:     61      0       247
        !          28042: \0367  "
        !          28043: o/     50      2       248
        !          28044: \0370  "
        !          28045: u`     61      2       249
        !          28046: \0371  "
        !          28047: u'     61      2       250
        !          28048: \0372  "
        !          28049: u^     61      2       251
        !          28050: \0373  "
        !          28051: u"     61      2       252
        !          28052: \0374  "
        !          28053: y'     54      3       253
        !          28054: \0375  "
        !          28055: th     57      3       254
        !          28056: \0376  "
        !          28057: y"     54      3       255
        !          28058: \0377  "
        !          28059: ^a     33      2       147
        !          28060: ~a     33      2       148
        !          28061: Ua     33      2       150
        !          28062: .a     33      2       151
        !          28063: oa     33      2       154
        !          28064: "a     33      2       157
        !          28065: Ca     33      1       158
        !          28066: va     33      2       159
        !          28067: 0707070014231123701006440057030057030000010444200522627501600002600000006160post.src/devLatin1/NXname NX
        !          28068: fontname NewCenturySchlbk-BoldItalic
        !          28069: named in prologue
        !          28070: spacewidth 29
        !          28071: charset
        !          28072: !      33      2       33
        !          28073: "      40      2       34
        !          28074: dq     "
        !          28075: #      57      2       35
        !          28076: $      57      3       36
        !          28077: %      89      2       37
        !          28078: &      89      2       38
        !          28079: '      26      2       39
        !          28080: (      41      3       40
        !          28081: )      41      3       41
        !          28082: *      50      2       42
        !          28083: +      61      0       43
        !          28084: ,      29      1       44
        !          28085: -      33      0       173
        !          28086: \0255  "
        !          28087: .      29      0       46
        !          28088: /      28      2       47
        !          28089: 0      57      2       48
        !          28090: 1      57      2       49
        !          28091: 2      57      2       50
        !          28092: 3      57      2       51
        !          28093: 4      57      2       52
        !          28094: 5      57      2       53
        !          28095: 6      57      2       54
        !          28096: 7      57      2       55
        !          28097: 8      57      2       56
        !          28098: 9      57      2       57
        !          28099: :      29      0       58
        !          28100: ;      29      1       59
        !          28101: ---    61      0       60
        !          28102: =      61      0       61
        !          28103: ---    61      0       62
        !          28104: ?      48      2       63
        !          28105: @      75      2       64
        !          28106: A      74      2       65
        !          28107: B      76      2       66
        !          28108: C      76      2       67
        !          28109: D      83      2       68
        !          28110: E      74      2       69
        !          28111: F      70      2       70
        !          28112: G      82      2       71
        !          28113: H      87      2       72
        !          28114: I      44      2       73
        !          28115: J      67      2       74
        !          28116: K      78      2       75
        !          28117: L      70      2       76
        !          28118: M      94      2       77
        !          28119: N      85      2       78
        !          28120: O      83      2       79
        !          28121: P      74      2       80
        !          28122: Q      83      3       81
        !          28123: R      80      2       82
        !          28124: S      69      2       83
        !          28125: T      72      2       84
        !          28126: U      83      2       85
        !          28127: V      74      2       86
        !          28128: W      94      2       87
        !          28129: X      74      2       88
        !          28130: Y      70      2       89
        !          28131: Z      70      2       90
        !          28132: [      41      3       91
        !          28133: \      61      2       92
        !          28134: bs     "
        !          28135: ]      41      3       93
        !          28136: ^      33      2       147
        !          28137: ---    61      2       94
        !          28138: ---    50      1       95
        !          28139: `      26      2       96
        !          28140: a      67      0       97
        !          28141: b      61      2       98
        !          28142: c      54      0       99
        !          28143: d      67      2       100
        !          28144: e      52      0       101
        !          28145: f      39      3       102
        !          28146: g      61      1       103
        !          28147: h      69      2       104
        !          28148: i      39      2       105
        !          28149: j      37      3       106
        !          28150: k      65      2       107
        !          28151: l      39      2       108
        !          28152: m      94      0       109
        !          28153: n      69      0       110
        !          28154: o      57      0       111
        !          28155: p      65      1       112
        !          28156: q      63      1       113
        !          28157: r      52      0       114
        !          28158: s      48      0       115
        !          28159: t      41      2       116
        !          28160: u      69      0       117
        !          28161: v      56      0       118
        !          28162: w      83      0       119
        !          28163: x      57      0       120
        !          28164: y      52      1       121
        !          28165: z      52      0       122
        !          28166: {      41      3       123
        !          28167: ---    61      2       124
        !          28168: }      41      3       125
        !          28169: ~      33      2       148
        !          28170: ---    61      0       126
        !          28171: \`     33      2       145
        !          28172: ga     "
        !          28173: !!     33      3       161
        !          28174: \0241  "
        !          28175: c|     57      3       162
        !          28176: \0242  "
        !          28177: ct     "
        !          28178: L-     57      2       163
        !          28179: \0243  "
        !          28180: ps     "
        !          28181: xo     57      2       164
        !          28182: \0244  "
        !          28183: cr     "
        !          28184: Y-     57      2       165
        !          28185: \0245  "
        !          28186: yn     "
        !          28187: ||     61      2       166
        !          28188: \0246  "
        !          28189: so     50      3       167
        !          28190: \0247  "
        !          28191: sc     "
        !          28192: ""     33      2       168
        !          28193: \0250  "
        !          28194: :a     "
        !          28195: co     75      2       169
        !          28196: \0251  "
        !          28197: a_     41      2       170
        !          28198: \0252  "
        !          28199: <<     48      0       171
        !          28200: \0253  "
        !          28201: -,     61      0       172
        !          28202: \0254  "
        !          28203: hy     33      0       173
        !          28204: \0255  "
        !          28205: --     61      0       45
        !          28206: ro     75      2       174
        !          28207: \0256  "
        !          28208: rg     "
        !          28209: -^     33      2       175
        !          28210: \0257  "
        !          28211: -a     "
        !          28212: 0^     40      2       176
        !          28213: \0260  "
        !          28214: +-     61      0       177
        !          28215: \0261  "
        !          28216: 2^     34      2       178
        !          28217: \0262  "
        !          28218: 3^     34      2       179
        !          28219: \0263  "
        !          28220: \'     33      2       180
        !          28221: \0264  "
        !          28222: aa     "
        !          28223: /u     69      1       181
        !          28224: \0265  "
        !          28225: P!     65      2       182
        !          28226: \0266  "
        !          28227: pg     "
        !          28228: .^     29      0       183
        !          28229: \0267  "
        !          28230: ,,     33      1       184
        !          28231: \0270  "
        !          28232: ,a     "
        !          28233: 1^     34      2       185
        !          28234: \0271  "
        !          28235: o_     36      2       186
        !          28236: \0272  "
        !          28237: >>     48      0       187
        !          28238: \0273  "
        !          28239: 14     86      2       188
        !          28240: \0274  "
        !          28241: 12     86      2       189
        !          28242: \0275  "
        !          28243: 34     86      2       190
        !          28244: \0276  "
        !          28245: ??     48      3       191
        !          28246: \0277  "
        !          28247: A`     74      2       192
        !          28248: \0300  "
        !          28249: A'     74      2       193
        !          28250: \0301  "
        !          28251: A^     74      2       194
        !          28252: \0302  "
        !          28253: A~     74      2       195
        !          28254: \0303  "
        !          28255: A"     74      2       196
        !          28256: \0304  "
        !          28257: A*     74      2       197
        !          28258: \0305  "
        !          28259: AE     89      2       198
        !          28260: \0306  "
        !          28261: C,     76      3       199
        !          28262: \0307  "
        !          28263: E`     74      2       200
        !          28264: \0310  "
        !          28265: E'     74      2       201
        !          28266: \0311  "
        !          28267: E^     74      2       202
        !          28268: \0312  "
        !          28269: E"     74      2       203
        !          28270: \0313  "
        !          28271: I`     44      2       204
        !          28272: \0314  "
        !          28273: I'     44      2       205
        !          28274: \0315  "
        !          28275: I^     44      2       206
        !          28276: \0316  "
        !          28277: I"     44      2       207
        !          28278: \0317  "
        !          28279: D-     83      2       208
        !          28280: \0320  "
        !          28281: N~     85      2       209
        !          28282: \0321  "
        !          28283: O`     83      2       210
        !          28284: \0322  "
        !          28285: O'     83      2       211
        !          28286: \0323  "
        !          28287: O^     83      2       212
        !          28288: \0324  "
        !          28289: O~     83      2       213
        !          28290: \0325  "
        !          28291: O"     83      2       214
        !          28292: \0326  "
        !          28293: xx     61      0       215
        !          28294: \0327  "
        !          28295: O/     83      2       216
        !          28296: \0330  "
        !          28297: U`     83      2       217
        !          28298: \0331  "
        !          28299: U'     83      2       218
        !          28300: \0332  "
        !          28301: U^     83      2       219
        !          28302: \0333  "
        !          28303: U"     83      2       220
        !          28304: \0334  "
        !          28305: Y'     70      2       221
        !          28306: \0335  "
        !          28307: TH     74      2       222
        !          28308: \0336  "
        !          28309: ss     57      3       223
        !          28310: \0337  "
        !          28311: a`     67      2       224
        !          28312: \0340  "
        !          28313: a'     67      2       225
        !          28314: \0341  "
        !          28315: a^     67      2       226
        !          28316: \0342  "
        !          28317: a~     67      2       227
        !          28318: \0343  "
        !          28319: a"     67      2       228
        !          28320: \0344  "
        !          28321: a*     67      2       229
        !          28322: \0345  "
        !          28323: ae     82      0       230
        !          28324: \0346  "
        !          28325: c,     54      1       231
        !          28326: \0347  "
        !          28327: e`     52      2       232
        !          28328: \0350  "
        !          28329: e'     52      2       233
        !          28330: \0351  "
        !          28331: e^     52      2       234
        !          28332: \0352  "
        !          28333: e"     52      2       235
        !          28334: \0353  "
        !          28335: i`     39      2       236
        !          28336: \0354  "
        !          28337: i'     39      2       237
        !          28338: \0355  "
        !          28339: i^     39      2       238
        !          28340: \0356  "
        !          28341: i"     39      2       239
        !          28342: \0357  "
        !          28343: d-     57      2       240
        !          28344: \0360  "
        !          28345: n~     69      2       241
        !          28346: \0361  "
        !          28347: o`     57      2       242
        !          28348: \0362  "
        !          28349: o'     57      2       243
        !          28350: \0363  "
        !          28351: o^     57      2       244
        !          28352: \0364  "
        !          28353: o~     57      2       245
        !          28354: \0365  "
        !          28355: o"     57      2       246
        !          28356: \0366  "
        !          28357: -:     61      0       247
        !          28358: \0367  "
        !          28359: o/     57      3       248
        !          28360: \0370  "
        !          28361: u`     69      2       249
        !          28362: \0371  "
        !          28363: u'     69      2       250
        !          28364: \0372  "
        !          28365: u^     69      2       251
        !          28366: \0373  "
        !          28367: u"     69      2       252
        !          28368: \0374  "
        !          28369: y'     52      3       253
        !          28370: \0375  "
        !          28371: th     65      3       254
        !          28372: \0376  "
        !          28373: y"     52      3       255
        !          28374: \0377  "
        !          28375: ^a     33      2       147
        !          28376: ~a     33      2       148
        !          28377: Ua     33      2       150
        !          28378: .a     33      2       151
        !          28379: oa     33      2       154
        !          28380: "a     33      2       157
        !          28381: Ca     33      1       158
        !          28382: va     33      2       159
        !          28383: 0707070014231123711006440057030057030000010444240522627501600002600000006144post.src/devLatin1/PAname PA
        !          28384: fontname Palatino-Roman
        !          28385: named in prologue
        !          28386: spacewidth 25
        !          28387: charset
        !          28388: !      28      2       33
        !          28389: "      37      2       34
        !          28390: dq     "
        !          28391: #      50      2       35
        !          28392: $      50      2       36
        !          28393: %      84      2       37
        !          28394: &      78      2       38
        !          28395: '      28      2       39
        !          28396: (      33      2       40
        !          28397: )      33      2       41
        !          28398: *      39      2       42
        !          28399: +      61      0       43
        !          28400: ,      25      1       44
        !          28401: -      33      0       173
        !          28402: \0255  "
        !          28403: .      25      0       46
        !          28404: /      61      2       47
        !          28405: 0      50      2       48
        !          28406: 1      50      2       49
        !          28407: 2      50      2       50
        !          28408: 3      50      2       51
        !          28409: 4      50      2       52
        !          28410: 5      50      2       53
        !          28411: 6      50      2       54
        !          28412: 7      50      2       55
        !          28413: 8      50      2       56
        !          28414: 9      50      2       57
        !          28415: :      25      0       58
        !          28416: ;      25      1       59
        !          28417: ---    61      0       60
        !          28418: =      61      0       61
        !          28419: ---    61      0       62
        !          28420: ?      44      2       63
        !          28421: @      75      2       64
        !          28422: A      78      2       65
        !          28423: B      61      2       66
        !          28424: C      71      2       67
        !          28425: D      77      2       68
        !          28426: E      61      2       69
        !          28427: F      56      2       70
        !          28428: G      76      2       71
        !          28429: H      83      2       72
        !          28430: I      34      2       73
        !          28431: J      33      3       74
        !          28432: K      73      2       75
        !          28433: L      61      2       76
        !          28434: M      95      2       77
        !          28435: N      83      2       78
        !          28436: O      79      2       79
        !          28437: P      60      2       80
        !          28438: Q      79      3       81
        !          28439: R      67      2       82
        !          28440: S      53      2       83
        !          28441: T      61      2       84
        !          28442: U      78      2       85
        !          28443: V      72      2       86
        !          28444: W      100     2       87
        !          28445: X      67      2       88
        !          28446: Y      67      2       89
        !          28447: Z      67      2       90
        !          28448: [      33      2       91
        !          28449: \      61      2       92
        !          28450: bs     "
        !          28451: ]      33      2       93
        !          28452: ^      33      2       147
        !          28453: ---    61      2       94
        !          28454: ---    50      1       95
        !          28455: `      28      2       96
        !          28456: a      50      0       97
        !          28457: b      55      2       98
        !          28458: c      44      0       99
        !          28459: d      61      2       100
        !          28460: e      48      0       101
        !          28461: f      33      2       102
        !          28462: g      56      1       103
        !          28463: h      58      2       104
        !          28464: i      29      2       105
        !          28465: j      23      3       106
        !          28466: k      56      2       107
        !          28467: l      29      2       108
        !          28468: m      88      0       109
        !          28469: n      58      0       110
        !          28470: o      55      0       111
        !          28471: p      60      1       112
        !          28472: q      56      1       113
        !          28473: r      40      0       114
        !          28474: s      42      0       115
        !          28475: t      33      2       116
        !          28476: u      60      0       117
        !          28477: v      57      0       118
        !          28478: w      83      0       119
        !          28479: x      52      0       120
        !          28480: y      56      1       121
        !          28481: z      50      0       122
        !          28482: {      33      2       123
        !          28483: ---    61      2       124
        !          28484: }      33      2       125
        !          28485: ~      33      2       148
        !          28486: ---    61      0       126
        !          28487: \`     33      2       145
        !          28488: ga     "
        !          28489: !!     28      1       161
        !          28490: \0241  "
        !          28491: c|     50      2       162
        !          28492: \0242  "
        !          28493: ct     "
        !          28494: L-     50      2       163
        !          28495: \0243  "
        !          28496: ps     "
        !          28497: xo     50      2       164
        !          28498: \0244  "
        !          28499: cr     "
        !          28500: Y-     50      2       165
        !          28501: \0245  "
        !          28502: yn     "
        !          28503: ||     61      2       166
        !          28504: \0246  "
        !          28505: so     50      3       167
        !          28506: \0247  "
        !          28507: sc     "
        !          28508: ""     33      2       168
        !          28509: \0250  "
        !          28510: :a     "
        !          28511: co     75      2       169
        !          28512: \0251  "
        !          28513: a_     33      2       170
        !          28514: \0252  "
        !          28515: <<     50      0       171
        !          28516: \0253  "
        !          28517: -,     61      0       172
        !          28518: \0254  "
        !          28519: hy     33      0       173
        !          28520: \0255  "
        !          28521: --     61      0       45
        !          28522: ro     75      2       174
        !          28523: \0256  "
        !          28524: rg     "
        !          28525: -^     33      2       175
        !          28526: \0257  "
        !          28527: -a     "
        !          28528: 0^     40      2       176
        !          28529: \0260  "
        !          28530: +-     61      0       177
        !          28531: \0261  "
        !          28532: 2^     30      2       178
        !          28533: \0262  "
        !          28534: 3^     30      2       179
        !          28535: \0263  "
        !          28536: \'     33      2       180
        !          28537: \0264  "
        !          28538: aa     "
        !          28539: /u     60      1       181
        !          28540: \0265  "
        !          28541: P!     63      3       182
        !          28542: \0266  "
        !          28543: pg     "
        !          28544: .^     25      0       183
        !          28545: \0267  "
        !          28546: ,,     33      1       184
        !          28547: \0270  "
        !          28548: ,a     "
        !          28549: 1^     30      2       185
        !          28550: \0271  "
        !          28551: o_     33      2       186
        !          28552: \0272  "
        !          28553: >>     50      0       187
        !          28554: \0273  "
        !          28555: 14     75      2       188
        !          28556: \0274  "
        !          28557: 12     75      2       189
        !          28558: \0275  "
        !          28559: 34     75      2       190
        !          28560: \0276  "
        !          28561: ??     44      1       191
        !          28562: \0277  "
        !          28563: A`     78      2       192
        !          28564: \0300  "
        !          28565: A'     78      2       193
        !          28566: \0301  "
        !          28567: A^     78      2       194
        !          28568: \0302  "
        !          28569: A~     78      2       195
        !          28570: \0303  "
        !          28571: A"     78      2       196
        !          28572: \0304  "
        !          28573: A*     78      2       197
        !          28574: \0305  "
        !          28575: AE     94      2       198
        !          28576: \0306  "
        !          28577: C,     71      3       199
        !          28578: \0307  "
        !          28579: E`     61      2       200
        !          28580: \0310  "
        !          28581: E'     61      2       201
        !          28582: \0311  "
        !          28583: E^     61      2       202
        !          28584: \0312  "
        !          28585: E"     61      2       203
        !          28586: \0313  "
        !          28587: I`     34      2       204
        !          28588: \0314  "
        !          28589: I'     34      2       205
        !          28590: \0315  "
        !          28591: I^     34      2       206
        !          28592: \0316  "
        !          28593: I"     34      2       207
        !          28594: \0317  "
        !          28595: D-     77      2       208
        !          28596: \0320  "
        !          28597: N~     83      2       209
        !          28598: \0321  "
        !          28599: O`     79      2       210
        !          28600: \0322  "
        !          28601: O'     79      2       211
        !          28602: \0323  "
        !          28603: O^     79      2       212
        !          28604: \0324  "
        !          28605: O~     79      2       213
        !          28606: \0325  "
        !          28607: O"     79      2       214
        !          28608: \0326  "
        !          28609: xx     61      0       215
        !          28610: \0327  "
        !          28611: O/     83      2       216
        !          28612: \0330  "
        !          28613: U`     78      2       217
        !          28614: \0331  "
        !          28615: U'     78      2       218
        !          28616: \0332  "
        !          28617: U^     78      2       219
        !          28618: \0333  "
        !          28619: U"     78      2       220
        !          28620: \0334  "
        !          28621: Y'     67      2       221
        !          28622: \0335  "
        !          28623: TH     60      2       222
        !          28624: \0336  "
        !          28625: ss     56      2       223
        !          28626: \0337  "
        !          28627: a`     50      2       224
        !          28628: \0340  "
        !          28629: a'     50      2       225
        !          28630: \0341  "
        !          28631: a^     50      2       226
        !          28632: \0342  "
        !          28633: a~     50      2       227
        !          28634: \0343  "
        !          28635: a"     50      2       228
        !          28636: \0344  "
        !          28637: a*     50      2       229
        !          28638: \0345  "
        !          28639: ae     76      0       230
        !          28640: \0346  "
        !          28641: c,     44      1       231
        !          28642: \0347  "
        !          28643: e`     48      2       232
        !          28644: \0350  "
        !          28645: e'     48      2       233
        !          28646: \0351  "
        !          28647: e^     48      2       234
        !          28648: \0352  "
        !          28649: e"     48      2       235
        !          28650: \0353  "
        !          28651: i`     29      2       236
        !          28652: \0354  "
        !          28653: i'     29      2       237
        !          28654: \0355  "
        !          28655: i^     29      2       238
        !          28656: \0356  "
        !          28657: i"     29      2       239
        !          28658: \0357  "
        !          28659: d-     55      2       240
        !          28660: \0360  "
        !          28661: n~     58      2       241
        !          28662: \0361  "
        !          28663: o`     55      2       242
        !          28664: \0362  "
        !          28665: o'     55      2       243
        !          28666: \0363  "
        !          28667: o^     55      2       244
        !          28668: \0364  "
        !          28669: o~     55      2       245
        !          28670: \0365  "
        !          28671: o"     55      2       246
        !          28672: \0366  "
        !          28673: -:     61      0       247
        !          28674: \0367  "
        !          28675: o/     56      0       248
        !          28676: \0370  "
        !          28677: u`     60      2       249
        !          28678: \0371  "
        !          28679: u'     60      2       250
        !          28680: \0372  "
        !          28681: u^     60      2       251
        !          28682: \0373  "
        !          28683: u"     60      2       252
        !          28684: \0374  "
        !          28685: y'     56      3       253
        !          28686: \0375  "
        !          28687: th     60      3       254
        !          28688: \0376  "
        !          28689: y"     56      3       255
        !          28690: \0377  "
        !          28691: ^a     33      2       147
        !          28692: ~a     33      2       148
        !          28693: Ua     33      2       150
        !          28694: .a     25      2       151
        !          28695: oa     33      2       154
        !          28696: "a     38      2       157
        !          28697: Ca     31      1       158
        !          28698: va     33      2       159
        !          28699: 0707070014231123721006440057030057030000010444400522627501600002600000006145post.src/devLatin1/PBname PB
        !          28700: fontname Palatino-Bold
        !          28701: named in prologue
        !          28702: spacewidth 25
        !          28703: charset
        !          28704: !      28      2       33
        !          28705: "      40      2       34
        !          28706: dq     "
        !          28707: #      50      2       35
        !          28708: $      50      2       36
        !          28709: %      89      2       37
        !          28710: &      83      2       38
        !          28711: '      28      2       39
        !          28712: (      33      2       40
        !          28713: )      33      2       41
        !          28714: *      44      2       42
        !          28715: +      61      0       43
        !          28716: ,      25      1       44
        !          28717: -      33      0       173
        !          28718: \0255  "
        !          28719: .      25      0       46
        !          28720: /      30      2       47
        !          28721: 0      50      2       48
        !          28722: 1      50      2       49
        !          28723: 2      50      2       50
        !          28724: 3      50      2       51
        !          28725: 4      50      2       52
        !          28726: 5      50      2       53
        !          28727: 6      50      2       54
        !          28728: 7      50      2       55
        !          28729: 8      50      2       56
        !          28730: 9      50      2       57
        !          28731: :      25      0       58
        !          28732: ;      25      1       59
        !          28733: ---    61      0       60
        !          28734: =      61      0       61
        !          28735: ---    61      0       62
        !          28736: ?      44      2       63
        !          28737: @      75      2       64
        !          28738: A      78      2       65
        !          28739: B      67      2       66
        !          28740: C      72      2       67
        !          28741: D      83      2       68
        !          28742: E      61      2       69
        !          28743: F      56      2       70
        !          28744: G      83      2       71
        !          28745: H      83      2       72
        !          28746: I      39      2       73
        !          28747: J      39      3       74
        !          28748: K      78      2       75
        !          28749: L      61      2       76
        !          28750: M      100     2       77
        !          28751: N      83      2       78
        !          28752: O      83      2       79
        !          28753: P      61      2       80
        !          28754: Q      83      3       81
        !          28755: R      72      2       82
        !          28756: S      61      2       83
        !          28757: T      67      2       84
        !          28758: U      78      2       85
        !          28759: V      78      2       86
        !          28760: W      100     2       87
        !          28761: X      67      2       88
        !          28762: Y      67      2       89
        !          28763: Z      67      2       90
        !          28764: [      33      2       91
        !          28765: \      61      2       92
        !          28766: bs     "
        !          28767: ]      33      2       93
        !          28768: ^      33      2       147
        !          28769: ---    61      2       94
        !          28770: ---    50      1       95
        !          28771: `      28      2       96
        !          28772: a      50      0       97
        !          28773: b      61      2       98
        !          28774: c      44      0       99
        !          28775: d      61      2       100
        !          28776: e      50      0       101
        !          28777: f      39      2       102
        !          28778: g      56      1       103
        !          28779: h      61      2       104
        !          28780: i      33      2       105
        !          28781: j      33      3       106
        !          28782: k      61      2       107
        !          28783: l      33      2       108
        !          28784: m      89      0       109
        !          28785: n      61      0       110
        !          28786: o      56      0       111
        !          28787: p      61      1       112
        !          28788: q      61      1       113
        !          28789: r      39      0       114
        !          28790: s      44      0       115
        !          28791: t      33      2       116
        !          28792: u      61      0       117
        !          28793: v      56      0       118
        !          28794: w      83      0       119
        !          28795: x      50      0       120
        !          28796: y      56      1       121
        !          28797: z      50      0       122
        !          28798: {      31      2       123
        !          28799: ---    61      2       124
        !          28800: }      31      2       125
        !          28801: ~      33      2       148
        !          28802: ---    61      0       126
        !          28803: \`     33      2       145
        !          28804: ga     "
        !          28805: !!     28      1       161
        !          28806: \0241  "
        !          28807: c|     50      2       162
        !          28808: \0242  "
        !          28809: ct     "
        !          28810: L-     50      2       163
        !          28811: \0243  "
        !          28812: ps     "
        !          28813: xo     50      2       164
        !          28814: \0244  "
        !          28815: cr     "
        !          28816: Y-     50      2       165
        !          28817: \0245  "
        !          28818: yn     "
        !          28819: ||     61      2       166
        !          28820: \0246  "
        !          28821: so     50      3       167
        !          28822: \0247  "
        !          28823: sc     "
        !          28824: ""     33      2       168
        !          28825: \0250  "
        !          28826: :a     "
        !          28827: co     75      2       169
        !          28828: \0251  "
        !          28829: a_     44      2       170
        !          28830: \0252  "
        !          28831: <<     50      0       171
        !          28832: \0253  "
        !          28833: -,     61      0       172
        !          28834: \0254  "
        !          28835: hy     33      0       173
        !          28836: \0255  "
        !          28837: --     61      0       45
        !          28838: ro     75      2       174
        !          28839: \0256  "
        !          28840: rg     "
        !          28841: -^     33      2       175
        !          28842: \0257  "
        !          28843: -a     "
        !          28844: 0^     40      2       176
        !          28845: \0260  "
        !          28846: +-     61      0       177
        !          28847: \0261  "
        !          28848: 2^     30      2       178
        !          28849: \0262  "
        !          28850: 3^     30      2       179
        !          28851: \0263  "
        !          28852: \'     33      2       180
        !          28853: \0264  "
        !          28854: aa     "
        !          28855: /u     61      1       181
        !          28856: \0265  "
        !          28857: P!     64      3       182
        !          28858: \0266  "
        !          28859: pg     "
        !          28860: .^     25      0       183
        !          28861: \0267  "
        !          28862: ,,     33      1       184
        !          28863: \0270  "
        !          28864: ,a     "
        !          28865: 1^     30      2       185
        !          28866: \0271  "
        !          28867: o_     49      2       186
        !          28868: \0272  "
        !          28869: >>     50      0       187
        !          28870: \0273  "
        !          28871: 14     75      2       188
        !          28872: \0274  "
        !          28873: 12     75      2       189
        !          28874: \0275  "
        !          28875: 34     75      2       190
        !          28876: \0276  "
        !          28877: ??     44      1       191
        !          28878: \0277  "
        !          28879: A`     78      2       192
        !          28880: \0300  "
        !          28881: A'     78      2       193
        !          28882: \0301  "
        !          28883: A^     78      2       194
        !          28884: \0302  "
        !          28885: A~     78      2       195
        !          28886: \0303  "
        !          28887: A"     78      2       196
        !          28888: \0304  "
        !          28889: A*     78      2       197
        !          28890: \0305  "
        !          28891: AE     100     2       198
        !          28892: \0306  "
        !          28893: C,     72      3       199
        !          28894: \0307  "
        !          28895: E`     61      2       200
        !          28896: \0310  "
        !          28897: E'     61      2       201
        !          28898: \0311  "
        !          28899: E^     61      2       202
        !          28900: \0312  "
        !          28901: E"     61      2       203
        !          28902: \0313  "
        !          28903: I`     39      2       204
        !          28904: \0314  "
        !          28905: I'     39      2       205
        !          28906: \0315  "
        !          28907: I^     39      2       206
        !          28908: \0316  "
        !          28909: I"     39      2       207
        !          28910: \0317  "
        !          28911: D-     83      2       208
        !          28912: \0320  "
        !          28913: N~     83      2       209
        !          28914: \0321  "
        !          28915: O`     83      2       210
        !          28916: \0322  "
        !          28917: O'     83      2       211
        !          28918: \0323  "
        !          28919: O^     83      2       212
        !          28920: \0324  "
        !          28921: O~     83      2       213
        !          28922: \0325  "
        !          28923: O"     83      2       214
        !          28924: \0326  "
        !          28925: xx     61      0       215
        !          28926: \0327  "
        !          28927: O/     83      2       216
        !          28928: \0330  "
        !          28929: U`     78      2       217
        !          28930: \0331  "
        !          28931: U'     78      2       218
        !          28932: \0332  "
        !          28933: U^     78      2       219
        !          28934: \0333  "
        !          28935: U"     78      2       220
        !          28936: \0334  "
        !          28937: Y'     67      2       221
        !          28938: \0335  "
        !          28939: TH     61      2       222
        !          28940: \0336  "
        !          28941: ss     61      2       223
        !          28942: \0337  "
        !          28943: a`     50      2       224
        !          28944: \0340  "
        !          28945: a'     50      2       225
        !          28946: \0341  "
        !          28947: a^     50      2       226
        !          28948: \0342  "
        !          28949: a~     50      2       227
        !          28950: \0343  "
        !          28951: a"     50      2       228
        !          28952: \0344  "
        !          28953: a*     50      2       229
        !          28954: \0345  "
        !          28955: ae     78      0       230
        !          28956: \0346  "
        !          28957: c,     44      1       231
        !          28958: \0347  "
        !          28959: e`     50      2       232
        !          28960: \0350  "
        !          28961: e'     50      2       233
        !          28962: \0351  "
        !          28963: e^     50      2       234
        !          28964: \0352  "
        !          28965: e"     50      2       235
        !          28966: \0353  "
        !          28967: i`     33      2       236
        !          28968: \0354  "
        !          28969: i'     33      2       237
        !          28970: \0355  "
        !          28971: i^     33      2       238
        !          28972: \0356  "
        !          28973: i"     33      2       239
        !          28974: \0357  "
        !          28975: d-     56      2       240
        !          28976: \0360  "
        !          28977: n~     61      2       241
        !          28978: \0361  "
        !          28979: o`     56      2       242
        !          28980: \0362  "
        !          28981: o'     56      2       243
        !          28982: \0363  "
        !          28983: o^     56      2       244
        !          28984: \0364  "
        !          28985: o~     56      2       245
        !          28986: \0365  "
        !          28987: o"     56      2       246
        !          28988: \0366  "
        !          28989: -:     61      0       247
        !          28990: \0367  "
        !          28991: o/     56      0       248
        !          28992: \0370  "
        !          28993: u`     61      2       249
        !          28994: \0371  "
        !          28995: u'     61      2       250
        !          28996: \0372  "
        !          28997: u^     61      2       251
        !          28998: \0373  "
        !          28999: u"     61      2       252
        !          29000: \0374  "
        !          29001: y'     56      3       253
        !          29002: \0375  "
        !          29003: th     61      3       254
        !          29004: \0376  "
        !          29005: y"     56      3       255
        !          29006: \0377  "
        !          29007: ^a     33      2       147
        !          29008: ~a     33      2       148
        !          29009: Ua     33      2       150
        !          29010: .a     33      2       151
        !          29011: oa     33      2       154
        !          29012: "a     33      2       157
        !          29013: Ca     33      1       158
        !          29014: va     33      2       159
        !          29015: 0707070014231123731006440057030057030000010444440522627501600002600000006144post.src/devLatin1/PIname PI
        !          29016: fontname Palatino-Italic
        !          29017: named in prologue
        !          29018: spacewidth 25
        !          29019: charset
        !          29020: !      33      2       33
        !          29021: "      50      2       34
        !          29022: dq     "
        !          29023: #      50      2       35
        !          29024: $      50      2       36
        !          29025: %      89      2       37
        !          29026: &      78      2       38
        !          29027: '      28      2       39
        !          29028: (      33      2       40
        !          29029: )      33      2       41
        !          29030: *      39      2       42
        !          29031: +      61      0       43
        !          29032: ,      25      1       44
        !          29033: -      33      0       173
        !          29034: \0255  "
        !          29035: .      25      0       46
        !          29036: /      30      3       47
        !          29037: 0      50      2       48
        !          29038: 1      50      2       49
        !          29039: 2      50      2       50
        !          29040: 3      50      2       51
        !          29041: 4      50      2       52
        !          29042: 5      50      2       53
        !          29043: 6      50      2       54
        !          29044: 7      50      2       55
        !          29045: 8      50      2       56
        !          29046: 9      50      2       57
        !          29047: :      25      0       58
        !          29048: ;      25      1       59
        !          29049: ---    61      0       60
        !          29050: =      61      0       61
        !          29051: ---    61      0       62
        !          29052: ?      50      2       63
        !          29053: @      75      2       64
        !          29054: A      72      2       65
        !          29055: B      61      2       66
        !          29056: C      67      2       67
        !          29057: D      78      2       68
        !          29058: E      61      2       69
        !          29059: F      56      2       70
        !          29060: G      72      2       71
        !          29061: H      78      2       72
        !          29062: I      33      2       73
        !          29063: J      33      3       74
        !          29064: K      67      2       75
        !          29065: L      56      2       76
        !          29066: M      94      2       77
        !          29067: N      78      2       78
        !          29068: O      78      2       79
        !          29069: P      61      2       80
        !          29070: Q      78      3       81
        !          29071: R      67      2       82
        !          29072: S      56      2       83
        !          29073: T      61      2       84
        !          29074: U      78      2       85
        !          29075: V      72      2       86
        !          29076: W      94      2       87
        !          29077: X      72      2       88
        !          29078: Y      67      2       89
        !          29079: Z      67      2       90
        !          29080: [      33      2       91
        !          29081: \      61      2       92
        !          29082: bs     "
        !          29083: ]      33      2       93
        !          29084: ^      33      2       147
        !          29085: ---    61      2       94
        !          29086: ---    50      1       95
        !          29087: `      28      2       96
        !          29088: a      44      0       97
        !          29089: b      46      2       98
        !          29090: c      41      0       99
        !          29091: d      50      2       100
        !          29092: e      39      0       101
        !          29093: f      28      3       102
        !          29094: g      50      1       103
        !          29095: h      50      2       104
        !          29096: i      28      2       105
        !          29097: j      28      3       106
        !          29098: k      44      2       107
        !          29099: l      28      2       108
        !          29100: m      78      0       109
        !          29101: n      56      0       110
        !          29102: o      44      0       111
        !          29103: p      50      1       112
        !          29104: q      46      1       113
        !          29105: r      39      0       114
        !          29106: s      39      0       115
        !          29107: t      33      2       116
        !          29108: u      56      0       117
        !          29109: v      50      0       118
        !          29110: w      72      0       119
        !          29111: x      50      0       120
        !          29112: y      50      1       121
        !          29113: z      44      0       122
        !          29114: {      33      2       123
        !          29115: ---    61      2       124
        !          29116: }      33      2       125
        !          29117: ~      33      2       148
        !          29118: ---    61      0       126
        !          29119: \`     33      2       145
        !          29120: ga     "
        !          29121: !!     33      1       161
        !          29122: \0241  "
        !          29123: c|     50      2       162
        !          29124: \0242  "
        !          29125: ct     "
        !          29126: L-     50      2       163
        !          29127: \0243  "
        !          29128: ps     "
        !          29129: xo     50      2       164
        !          29130: \0244  "
        !          29131: cr     "
        !          29132: Y-     50      2       165
        !          29133: \0245  "
        !          29134: yn     "
        !          29135: ||     61      2       166
        !          29136: \0246  "
        !          29137: so     50      3       167
        !          29138: \0247  "
        !          29139: sc     "
        !          29140: ""     33      2       168
        !          29141: \0250  "
        !          29142: :a     "
        !          29143: co     75      2       169
        !          29144: \0251  "
        !          29145: a_     33      2       170
        !          29146: \0252  "
        !          29147: <<     50      0       171
        !          29148: \0253  "
        !          29149: -,     61      0       172
        !          29150: \0254  "
        !          29151: hy     33      0       173
        !          29152: \0255  "
        !          29153: --     61      0       45
        !          29154: ro     75      2       174
        !          29155: \0256  "
        !          29156: rg     "
        !          29157: -^     33      2       175
        !          29158: \0257  "
        !          29159: -a     "
        !          29160: 0^     40      2       176
        !          29161: \0260  "
        !          29162: +-     61      0       177
        !          29163: \0261  "
        !          29164: 2^     30      2       178
        !          29165: \0262  "
        !          29166: 3^     30      2       179
        !          29167: \0263  "
        !          29168: \'     33      2       180
        !          29169: \0264  "
        !          29170: aa     "
        !          29171: /u     56      1       181
        !          29172: \0265  "
        !          29173: P!     50      3       182
        !          29174: \0266  "
        !          29175: pg     "
        !          29176: .^     25      0       183
        !          29177: \0267  "
        !          29178: ,,     33      1       184
        !          29179: \0270  "
        !          29180: ,a     "
        !          29181: 1^     30      2       185
        !          29182: \0271  "
        !          29183: o_     33      2       186
        !          29184: \0272  "
        !          29185: >>     50      0       187
        !          29186: \0273  "
        !          29187: 14     75      2       188
        !          29188: \0274  "
        !          29189: 12     75      2       189
        !          29190: \0275  "
        !          29191: 34     75      2       190
        !          29192: \0276  "
        !          29193: ??     50      1       191
        !          29194: \0277  "
        !          29195: A`     72      2       192
        !          29196: \0300  "
        !          29197: A'     72      2       193
        !          29198: \0301  "
        !          29199: A^     72      2       194
        !          29200: \0302  "
        !          29201: A~     72      2       195
        !          29202: \0303  "
        !          29203: A"     72      2       196
        !          29204: \0304  "
        !          29205: A*     72      2       197
        !          29206: \0305  "
        !          29207: AE     94      2       198
        !          29208: \0306  "
        !          29209: C,     67      3       199
        !          29210: \0307  "
        !          29211: E`     61      2       200
        !          29212: \0310  "
        !          29213: E'     61      2       201
        !          29214: \0311  "
        !          29215: E^     61      2       202
        !          29216: \0312  "
        !          29217: E"     61      2       203
        !          29218: \0313  "
        !          29219: I`     33      2       204
        !          29220: \0314  "
        !          29221: I'     33      2       205
        !          29222: \0315  "
        !          29223: I^     33      2       206
        !          29224: \0316  "
        !          29225: I"     33      2       207
        !          29226: \0317  "
        !          29227: D-     78      2       208
        !          29228: \0320  "
        !          29229: N~     78      2       209
        !          29230: \0321  "
        !          29231: O`     78      2       210
        !          29232: \0322  "
        !          29233: O'     78      2       211
        !          29234: \0323  "
        !          29235: O^     78      2       212
        !          29236: \0324  "
        !          29237: O~     78      2       213
        !          29238: \0325  "
        !          29239: O"     78      2       214
        !          29240: \0326  "
        !          29241: xx     61      0       215
        !          29242: \0327  "
        !          29243: O/     78      2       216
        !          29244: \0330  "
        !          29245: U`     78      2       217
        !          29246: \0331  "
        !          29247: U'     78      2       218
        !          29248: \0332  "
        !          29249: U^     78      2       219
        !          29250: \0333  "
        !          29251: U"     78      2       220
        !          29252: \0334  "
        !          29253: Y'     67      2       221
        !          29254: \0335  "
        !          29255: TH     61      2       222
        !          29256: \0336  "
        !          29257: ss     50      3       223
        !          29258: \0337  "
        !          29259: a`     44      2       224
        !          29260: \0340  "
        !          29261: a'     44      2       225
        !          29262: \0341  "
        !          29263: a^     44      2       226
        !          29264: \0342  "
        !          29265: a~     44      2       227
        !          29266: \0343  "
        !          29267: a"     44      2       228
        !          29268: \0344  "
        !          29269: a*     44      2       229
        !          29270: \0345  "
        !          29271: ae     64      0       230
        !          29272: \0346  "
        !          29273: c,     41      1       231
        !          29274: \0347  "
        !          29275: e`     39      2       232
        !          29276: \0350  "
        !          29277: e'     39      2       233
        !          29278: \0351  "
        !          29279: e^     39      2       234
        !          29280: \0352  "
        !          29281: e"     39      2       235
        !          29282: \0353  "
        !          29283: i`     28      2       236
        !          29284: \0354  "
        !          29285: i'     28      2       237
        !          29286: \0355  "
        !          29287: i^     28      2       238
        !          29288: \0356  "
        !          29289: i"     28      2       239
        !          29290: \0357  "
        !          29291: d-     44      2       240
        !          29292: \0360  "
        !          29293: n~     56      2       241
        !          29294: \0361  "
        !          29295: o`     44      2       242
        !          29296: \0362  "
        !          29297: o'     44      2       243
        !          29298: \0363  "
        !          29299: o^     44      2       244
        !          29300: \0364  "
        !          29301: o~     44      2       245
        !          29302: \0365  "
        !          29303: o"     44      2       246
        !          29304: \0366  "
        !          29305: -:     61      0       247
        !          29306: \0367  "
        !          29307: o/     44      0       248
        !          29308: \0370  "
        !          29309: u`     56      2       249
        !          29310: \0371  "
        !          29311: u'     56      2       250
        !          29312: \0372  "
        !          29313: u^     56      2       251
        !          29314: \0373  "
        !          29315: u"     56      2       252
        !          29316: \0374  "
        !          29317: y'     50      3       253
        !          29318: \0375  "
        !          29319: th     50      3       254
        !          29320: \0376  "
        !          29321: y"     50      3       255
        !          29322: \0377  "
        !          29323: ^a     33      2       147
        !          29324: ~a     33      2       148
        !          29325: Ua     33      2       150
        !          29326: .a     33      2       151
        !          29327: oa     33      2       154
        !          29328: "a     33      2       157
        !          29329: Ca     33      1       158
        !          29330: va     33      2       159
        !          29331: 0707070014231123741006440057030057030000010444600522627501700002600000006151post.src/devLatin1/PXname PX
        !          29332: fontname Palatino-BoldItalic
        !          29333: named in prologue
        !          29334: spacewidth 25
        !          29335: charset
        !          29336: !      33      2       33
        !          29337: "      50      2       34
        !          29338: dq     "
        !          29339: #      50      2       35
        !          29340: $      50      2       36
        !          29341: %      89      2       37
        !          29342: &      83      2       38
        !          29343: '      28      2       39
        !          29344: (      33      2       40
        !          29345: )      33      2       41
        !          29346: *      44      2       42
        !          29347: +      61      0       43
        !          29348: ,      25      1       44
        !          29349: -      39      0       173
        !          29350: \0255  "
        !          29351: .      25      0       46
        !          29352: /      32      2       47
        !          29353: 0      50      2       48
        !          29354: 1      50      2       49
        !          29355: 2      50      2       50
        !          29356: 3      50      2       51
        !          29357: 4      50      2       52
        !          29358: 5      50      2       53
        !          29359: 6      50      2       54
        !          29360: 7      50      2       55
        !          29361: 8      50      2       56
        !          29362: 9      50      2       57
        !          29363: :      25      0       58
        !          29364: ;      25      1       59
        !          29365: ---    61      0       60
        !          29366: =      61      0       61
        !          29367: ---    61      0       62
        !          29368: ?      44      2       63
        !          29369: @      83      2       64
        !          29370: A      72      2       65
        !          29371: B      67      2       66
        !          29372: C      69      2       67
        !          29373: D      78      2       68
        !          29374: E      61      2       69
        !          29375: F      56      2       70
        !          29376: G      78      2       71
        !          29377: H      78      2       72
        !          29378: I      39      2       73
        !          29379: J      39      3       74
        !          29380: K      72      2       75
        !          29381: L      61      2       76
        !          29382: M      94      2       77
        !          29383: N      78      2       78
        !          29384: O      83      2       79
        !          29385: P      67      2       80
        !          29386: Q      83      3       81
        !          29387: R      72      2       82
        !          29388: S      56      2       83
        !          29389: T      61      2       84
        !          29390: U      78      2       85
        !          29391: V      67      2       86
        !          29392: W      100     2       87
        !          29393: X      72      2       88
        !          29394: Y      61      2       89
        !          29395: Z      67      2       90
        !          29396: [      33      2       91
        !          29397: \      61      2       92
        !          29398: bs     "
        !          29399: ]      33      2       93
        !          29400: ^      33      2       147
        !          29401: ---    61      2       94
        !          29402: ---    50      1       95
        !          29403: `      28      2       96
        !          29404: a      56      0       97
        !          29405: b      54      2       98
        !          29406: c      44      0       99
        !          29407: d      56      2       100
        !          29408: e      44      0       101
        !          29409: f      33      3       102
        !          29410: g      50      1       103
        !          29411: h      56      2       104
        !          29412: i      33      2       105
        !          29413: j      33      3       106
        !          29414: k      56      2       107
        !          29415: l      33      2       108
        !          29416: m      83      0       109
        !          29417: n      56      0       110
        !          29418: o      56      0       111
        !          29419: p      56      1       112
        !          29420: q      54      1       113
        !          29421: r      39      0       114
        !          29422: s      44      0       115
        !          29423: t      39      2       116
        !          29424: u      56      0       117
        !          29425: v      56      0       118
        !          29426: w      83      0       119
        !          29427: x      50      0       120
        !          29428: y      56      1       121
        !          29429: z      50      0       122
        !          29430: {      33      2       123
        !          29431: ---    61      2       124
        !          29432: }      33      2       125
        !          29433: ~      33      2       148
        !          29434: ---    61      0       126
        !          29435: \`     33      2       145
        !          29436: ga     "
        !          29437: !!     33      1       161
        !          29438: \0241  "
        !          29439: c|     50      2       162
        !          29440: \0242  "
        !          29441: ct     "
        !          29442: L-     50      2       163
        !          29443: \0243  "
        !          29444: ps     "
        !          29445: xo     50      2       164
        !          29446: \0244  "
        !          29447: cr     "
        !          29448: Y-     50      2       165
        !          29449: \0245  "
        !          29450: yn     "
        !          29451: ||     61      2       166
        !          29452: \0246  "
        !          29453: so     56      3       167
        !          29454: \0247  "
        !          29455: sc     "
        !          29456: ""     33      2       168
        !          29457: \0250  "
        !          29458: :a     "
        !          29459: co     75      2       169
        !          29460: \0251  "
        !          29461: a_     33      2       170
        !          29462: \0252  "
        !          29463: <<     50      0       171
        !          29464: \0253  "
        !          29465: -,     61      0       172
        !          29466: \0254  "
        !          29467: hy     39      0       173
        !          29468: \0255  "
        !          29469: --     61      0       45
        !          29470: ro     75      2       174
        !          29471: \0256  "
        !          29472: rg     "
        !          29473: -^     33      2       175
        !          29474: \0257  "
        !          29475: -a     "
        !          29476: 0^     40      2       176
        !          29477: \0260  "
        !          29478: +-     61      0       177
        !          29479: \0261  "
        !          29480: 2^     30      2       178
        !          29481: \0262  "
        !          29482: 3^     30      2       179
        !          29483: \0263  "
        !          29484: \'     33      2       180
        !          29485: \0264  "
        !          29486: aa     "
        !          29487: /u     56      1       181
        !          29488: \0265  "
        !          29489: P!     56      3       182
        !          29490: \0266  "
        !          29491: pg     "
        !          29492: .^     25      0       183
        !          29493: \0267  "
        !          29494: ,,     33      1       184
        !          29495: \0270  "
        !          29496: ,a     "
        !          29497: 1^     30      2       185
        !          29498: \0271  "
        !          29499: o_     33      2       186
        !          29500: \0272  "
        !          29501: >>     50      0       187
        !          29502: \0273  "
        !          29503: 14     75      2       188
        !          29504: \0274  "
        !          29505: 12     75      2       189
        !          29506: \0275  "
        !          29507: 34     75      2       190
        !          29508: \0276  "
        !          29509: ??     44      1       191
        !          29510: \0277  "
        !          29511: A`     72      2       192
        !          29512: \0300  "
        !          29513: A'     72      2       193
        !          29514: \0301  "
        !          29515: A^     72      2       194
        !          29516: \0302  "
        !          29517: A~     72      2       195
        !          29518: \0303  "
        !          29519: A"     72      2       196
        !          29520: \0304  "
        !          29521: A*     72      2       197
        !          29522: \0305  "
        !          29523: AE     94      2       198
        !          29524: \0306  "
        !          29525: C,     69      3       199
        !          29526: \0307  "
        !          29527: E`     61      2       200
        !          29528: \0310  "
        !          29529: E'     61      2       201
        !          29530: \0311  "
        !          29531: E^     61      2       202
        !          29532: \0312  "
        !          29533: E"     61      2       203
        !          29534: \0313  "
        !          29535: I`     39      2       204
        !          29536: \0314  "
        !          29537: I'     39      2       205
        !          29538: \0315  "
        !          29539: I^     39      2       206
        !          29540: \0316  "
        !          29541: I"     39      2       207
        !          29542: \0317  "
        !          29543: D-     78      2       208
        !          29544: \0320  "
        !          29545: N~     78      2       209
        !          29546: \0321  "
        !          29547: O`     83      2       210
        !          29548: \0322  "
        !          29549: O'     83      2       211
        !          29550: \0323  "
        !          29551: O^     83      2       212
        !          29552: \0324  "
        !          29553: O~     83      2       213
        !          29554: \0325  "
        !          29555: O"     83      2       214
        !          29556: \0326  "
        !          29557: xx     61      0       215
        !          29558: \0327  "
        !          29559: O/     83      2       216
        !          29560: \0330  "
        !          29561: U`     78      2       217
        !          29562: \0331  "
        !          29563: U'     78      2       218
        !          29564: \0332  "
        !          29565: U^     78      2       219
        !          29566: \0333  "
        !          29567: U"     78      2       220
        !          29568: \0334  "
        !          29569: Y'     61      2       221
        !          29570: \0335  "
        !          29571: TH     67      2       222
        !          29572: \0336  "
        !          29573: ss     56      3       223
        !          29574: \0337  "
        !          29575: a`     56      2       224
        !          29576: \0340  "
        !          29577: a'     56      2       225
        !          29578: \0341  "
        !          29579: a^     56      2       226
        !          29580: \0342  "
        !          29581: a~     56      2       227
        !          29582: \0343  "
        !          29583: a"     56      2       228
        !          29584: \0344  "
        !          29585: a*     56      2       229
        !          29586: \0345  "
        !          29587: ae     74      0       230
        !          29588: \0346  "
        !          29589: c,     44      1       231
        !          29590: \0347  "
        !          29591: e`     44      2       232
        !          29592: \0350  "
        !          29593: e'     44      2       233
        !          29594: \0351  "
        !          29595: e^     44      2       234
        !          29596: \0352  "
        !          29597: e"     44      2       235
        !          29598: \0353  "
        !          29599: i`     33      2       236
        !          29600: \0354  "
        !          29601: i'     33      2       237
        !          29602: \0355  "
        !          29603: i^     33      2       238
        !          29604: \0356  "
        !          29605: i"     33      2       239
        !          29606: \0357  "
        !          29607: d-     56      2       240
        !          29608: \0360  "
        !          29609: n~     56      2       241
        !          29610: \0361  "
        !          29611: o`     56      2       242
        !          29612: \0362  "
        !          29613: o'     56      2       243
        !          29614: \0363  "
        !          29615: o^     56      2       244
        !          29616: \0364  "
        !          29617: o~     56      2       245
        !          29618: \0365  "
        !          29619: o"     56      2       246
        !          29620: \0366  "
        !          29621: -:     61      0       247
        !          29622: \0367  "
        !          29623: o/     56      0       248
        !          29624: \0370  "
        !          29625: u`     56      2       249
        !          29626: \0371  "
        !          29627: u'     56      2       250
        !          29628: \0372  "
        !          29629: u^     56      2       251
        !          29630: \0373  "
        !          29631: u"     56      2       252
        !          29632: \0374  "
        !          29633: y'     56      3       253
        !          29634: \0375  "
        !          29635: th     56      3       254
        !          29636: \0376  "
        !          29637: y"     56      3       255
        !          29638: \0377  "
        !          29639: ^a     33      2       147
        !          29640: ~a     33      2       148
        !          29641: Ua     33      2       150
        !          29642: .a     33      2       151
        !          29643: oa     56      2       154
        !          29644: "a     33      2       157
        !          29645: Ca     33      1       158
        !          29646: va     33      2       159
        !          29647: 0707070014231123751006440057030057030000010444640522627501700002600000006156post.src/devLatin1/ZIname ZI
        !          29648: fontname ZapfChancery-MediumItalic
        !          29649: named in prologue
        !          29650: spacewidth 22
        !          29651: charset
        !          29652: !      28      2       33
        !          29653: "      22      2       34
        !          29654: dq     "
        !          29655: #      44      2       35
        !          29656: $      44      3       36
        !          29657: %      68      2       37
        !          29658: &      78      2       38
        !          29659: '      24      2       39
        !          29660: (      26      3       40
        !          29661: )      22      3       41
        !          29662: *      42      2       42
        !          29663: +      52      0       43
        !          29664: ,      22      0       44
        !          29665: -      28      0       173
        !          29666: \0255  "
        !          29667: .      22      0       46
        !          29668: /      34      3       47
        !          29669: 0      44      2       48
        !          29670: 1      44      2       49
        !          29671: 2      44      2       50
        !          29672: 3      44      2       51
        !          29673: 4      44      2       52
        !          29674: 5      44      2       53
        !          29675: 6      44      2       54
        !          29676: 7      44      2       55
        !          29677: 8      44      2       56
        !          29678: 9      44      2       57
        !          29679: :      26      0       58
        !          29680: ;      24      0       59
        !          29681: ---    52      0       60
        !          29682: =      52      0       61
        !          29683: ---    52      0       62
        !          29684: ?      38      2       63
        !          29685: @      70      2       64
        !          29686: A      62      2       65
        !          29687: B      60      2       66
        !          29688: C      52      2       67
        !          29689: D      70      2       68
        !          29690: E      62      2       69
        !          29691: F      58      2       70
        !          29692: G      62      3       71
        !          29693: H      68      2       72
        !          29694: I      38      2       73
        !          29695: J      40      2       74
        !          29696: K      66      3       75
        !          29697: L      58      2       76
        !          29698: M      84      2       77
        !          29699: N      70      3       78
        !          29700: O      60      2       79
        !          29701: P      54      2       80
        !          29702: Q      60      3       81
        !          29703: R      60      3       82
        !          29704: S      46      2       83
        !          29705: T      50      2       84
        !          29706: U      74      2       85
        !          29707: V      64      2       86
        !          29708: W      88      2       87
        !          29709: X      56      2       88
        !          29710: Y      56      3       89
        !          29711: Z      62      2       90
        !          29712: [      24      3       91
        !          29713: \      48      2       92
        !          29714: bs     "
        !          29715: ]      32      3       93
        !          29716: ^      34      2       147
        !          29717: ---    52      2       94
        !          29718: ---    50      1       95
        !          29719: `      24      2       96
        !          29720: a      42      0       97
        !          29721: b      42      2       98
        !          29722: c      34      0       99
        !          29723: d      44      2       100
        !          29724: e      34      0       101
        !          29725: f      32      3       102
        !          29726: g      40      1       103
        !          29727: h      44      2       104
        !          29728: i      24      2       105
        !          29729: j      22      3       106
        !          29730: k      44      3       107
        !          29731: l      24      2       108
        !          29732: m      62      0       109
        !          29733: n      46      0       110
        !          29734: o      40      0       111
        !          29735: p      44      1       112
        !          29736: q      40      3       113
        !          29737: r      30      0       114
        !          29738: s      32      0       115
        !          29739: t      32      2       116
        !          29740: u      46      0       117
        !          29741: v      44      0       118
        !          29742: w      68      0       119
        !          29743: x      42      1       120
        !          29744: y      40      1       121
        !          29745: z      44      0       122
        !          29746: {      24      3       123
        !          29747: ---    52      2       124
        !          29748: }      24      3       125
        !          29749: ~      44      2       148
        !          29750: ---    52      0       126
        !          29751: \`     22      2       145
        !          29752: ga     "
        !          29753: !!     28      1       161
        !          29754: \0241  "
        !          29755: c|     44      2       162
        !          29756: \0242  "
        !          29757: ct     "
        !          29758: L-     44      2       163
        !          29759: \0243  "
        !          29760: ps     "
        !          29761: xo     44      2       164
        !          29762: \0244  "
        !          29763: cr     "
        !          29764: Y-     44      2       165
        !          29765: \0245  "
        !          29766: yn     "
        !          29767: ||     52      2       166
        !          29768: \0246  "
        !          29769: so     42      3       167
        !          29770: \0247  "
        !          29771: sc     "
        !          29772: ""     36      2       168
        !          29773: \0250  "
        !          29774: :a     "
        !          29775: co     74      2       169
        !          29776: \0251  "
        !          29777: a_     26      2       170
        !          29778: \0252  "
        !          29779: <<     34      0       171
        !          29780: \0253  "
        !          29781: -,     52      0       172
        !          29782: \0254  "
        !          29783: hy     28      0       173
        !          29784: \0255  "
        !          29785: --     52      0       45
        !          29786: ro     74      2       174
        !          29787: \0256  "
        !          29788: rg     "
        !          29789: -^     44      2       175
        !          29790: \0257  "
        !          29791: -a     "
        !          29792: 0^     40      2       176
        !          29793: \0260  "
        !          29794: +-     52      0       177
        !          29795: \0261  "
        !          29796: 2^     26      2       178
        !          29797: \0262  "
        !          29798: 3^     26      2       179
        !          29799: \0263  "
        !          29800: \'     30      2       180
        !          29801: \0264  "
        !          29802: aa     "
        !          29803: /u     46      1       181
        !          29804: \0265  "
        !          29805: P!     50      3       182
        !          29806: \0266  "
        !          29807: pg     "
        !          29808: .^     22      0       183
        !          29809: \0267  "
        !          29810: ,,     30      1       184
        !          29811: \0270  "
        !          29812: ,a     "
        !          29813: 1^     26      2       185
        !          29814: \0271  "
        !          29815: o_     26      2       186
        !          29816: \0272  "
        !          29817: >>     38      0       187
        !          29818: \0273  "
        !          29819: 14     66      2       188
        !          29820: \0274  "
        !          29821: 12     66      2       189
        !          29822: \0275  "
        !          29823: 34     66      2       190
        !          29824: \0276  "
        !          29825: ??     40      1       191
        !          29826: \0277  "
        !          29827: A`     62      2       192
        !          29828: \0300  "
        !          29829: A'     62      2       193
        !          29830: \0301  "
        !          29831: A^     62      2       194
        !          29832: \0302  "
        !          29833: A~     62      2       195
        !          29834: \0303  "
        !          29835: A"     62      2       196
        !          29836: \0304  "
        !          29837: A*     62      2       197
        !          29838: \0305  "
        !          29839: AE     74      2       198
        !          29840: \0306  "
        !          29841: C,     52      3       199
        !          29842: \0307  "
        !          29843: E`     62      2       200
        !          29844: \0310  "
        !          29845: E'     62      2       201
        !          29846: \0311  "
        !          29847: E^     62      2       202
        !          29848: \0312  "
        !          29849: E"     62      2       203
        !          29850: \0313  "
        !          29851: I`     38      2       204
        !          29852: \0314  "
        !          29853: I'     38      2       205
        !          29854: \0315  "
        !          29855: I^     38      2       206
        !          29856: \0316  "
        !          29857: I"     38      2       207
        !          29858: \0317  "
        !          29859: D-     70      2       208
        !          29860: \0320  "
        !          29861: N~     70      3       209
        !          29862: \0321  "
        !          29863: O`     60      2       210
        !          29864: \0322  "
        !          29865: O'     60      2       211
        !          29866: \0323  "
        !          29867: O^     60      2       212
        !          29868: \0324  "
        !          29869: O~     60      2       213
        !          29870: \0325  "
        !          29871: O"     60      2       214
        !          29872: \0326  "
        !          29873: xx     52      0       215
        !          29874: \0327  "
        !          29875: O/     66      3       216
        !          29876: \0330  "
        !          29877: U`     74      2       217
        !          29878: \0331  "
        !          29879: U'     74      2       218
        !          29880: \0332  "
        !          29881: U^     74      2       219
        !          29882: \0333  "
        !          29883: U"     74      2       220
        !          29884: \0334  "
        !          29885: Y'     56      3       221
        !          29886: \0335  "
        !          29887: TH     54      2       222
        !          29888: \0336  "
        !          29889: ss     42      3       223
        !          29890: \0337  "
        !          29891: a`     42      2       224
        !          29892: \0340  "
        !          29893: a'     42      2       225
        !          29894: \0341  "
        !          29895: a^     42      2       226
        !          29896: \0342  "
        !          29897: a~     42      2       227
        !          29898: \0343  "
        !          29899: a"     42      2       228
        !          29900: \0344  "
        !          29901: a*     42      2       229
        !          29902: \0345  "
        !          29903: ae     54      0       230
        !          29904: \0346  "
        !          29905: c,     34      1       231
        !          29906: \0347  "
        !          29907: e`     34      2       232
        !          29908: \0350  "
        !          29909: e'     34      2       233
        !          29910: \0351  "
        !          29911: e^     34      2       234
        !          29912: \0352  "
        !          29913: e"     34      2       235
        !          29914: \0353  "
        !          29915: i`     24      2       236
        !          29916: \0354  "
        !          29917: i'     24      2       237
        !          29918: \0355  "
        !          29919: i^     24      2       238
        !          29920: \0356  "
        !          29921: i"     24      2       239
        !          29922: \0357  "
        !          29923: d-     40      2       240
        !          29924: \0360  "
        !          29925: n~     46      2       241
        !          29926: \0361  "
        !          29927: o`     40      2       242
        !          29928: \0362  "
        !          29929: o'     40      2       243
        !          29930: \0363  "
        !          29931: o^     40      2       244
        !          29932: \0364  "
        !          29933: o~     40      2       245
        !          29934: \0365  "
        !          29935: o"     40      2       246
        !          29936: \0366  "
        !          29937: -:     52      0       247
        !          29938: \0367  "
        !          29939: o/     44      3       248
        !          29940: \0370  "
        !          29941: u`     46      2       249
        !          29942: \0371  "
        !          29943: u'     46      2       250
        !          29944: \0372  "
        !          29945: u^     46      2       251
        !          29946: \0373  "
        !          29947: u"     46      2       252
        !          29948: \0374  "
        !          29949: y'     40      3       253
        !          29950: \0375  "
        !          29951: th     44      3       254
        !          29952: \0376  "
        !          29953: y"     40      3       255
        !          29954: \0377  "
        !          29955: ^a     34      2       147
        !          29956: ~a     44      2       148
        !          29957: Ua     44      2       150
        !          29958: .a     22      2       151
        !          29959: oa     30      2       154
        !          29960: "a     40      2       157
        !          29961: Ca     28      1       158
        !          29962: va     34      2       159
        !          29963: 0707070014231123761006440057030057030000010445000522627501700002500000006047post.src/devLatin1/Cname C
        !          29964: fontname Courier
        !          29965: spacewidth 60
        !          29966: charset
        !          29967: !      60      2       33
        !          29968: "      60      2       34
        !          29969: dq     "
        !          29970: #      60      2       35
        !          29971: $      60      2       36
        !          29972: %      60      2       37
        !          29973: &      60      2       38
        !          29974: '      60      2       39
        !          29975: (      60      3       40
        !          29976: )      60      3       41
        !          29977: *      60      2       42
        !          29978: +      60      2       43
        !          29979: ,      60      1       44
        !          29980: -      60      0       173
        !          29981: \0255  "
        !          29982: .      60      0       46
        !          29983: /      60      2       47
        !          29984: 0      60      2       48
        !          29985: 1      60      2       49
        !          29986: 2      60      2       50
        !          29987: 3      60      2       51
        !          29988: 4      60      2       52
        !          29989: 5      60      2       53
        !          29990: 6      60      2       54
        !          29991: 7      60      2       55
        !          29992: 8      60      2       56
        !          29993: 9      60      2       57
        !          29994: :      60      0       58
        !          29995: ;      60      0       59
        !          29996: <      60      2       60
        !          29997: =      60      0       61
        !          29998: >      60      2       62
        !          29999: ?      60      2       63
        !          30000: @      60      2       64
        !          30001: A      60      2       65
        !          30002: B      60      2       66
        !          30003: C      60      2       67
        !          30004: D      60      2       68
        !          30005: E      60      2       69
        !          30006: F      60      2       70
        !          30007: G      60      2       71
        !          30008: H      60      2       72
        !          30009: I      60      2       73
        !          30010: J      60      2       74
        !          30011: K      60      2       75
        !          30012: L      60      2       76
        !          30013: M      60      2       77
        !          30014: N      60      2       78
        !          30015: O      60      2       79
        !          30016: P      60      2       80
        !          30017: Q      60      3       81
        !          30018: R      60      2       82
        !          30019: S      60      2       83
        !          30020: T      60      2       84
        !          30021: U      60      2       85
        !          30022: V      60      2       86
        !          30023: W      60      2       87
        !          30024: X      60      2       88
        !          30025: Y      60      2       89
        !          30026: Z      60      2       90
        !          30027: [      60      3       91
        !          30028: \      60      2       92
        !          30029: bs     "
        !          30030: ]      60      3       93
        !          30031: ^      60      2       94
        !          30032: _      60      1       95
        !          30033: `      60      2       96
        !          30034: a      60      0       97
        !          30035: b      60      2       98
        !          30036: c      60      0       99
        !          30037: d      60      2       100
        !          30038: e      60      0       101
        !          30039: f      60      2       102
        !          30040: g      60      1       103
        !          30041: h      60      2       104
        !          30042: i      60      2       105
        !          30043: j      60      3       106
        !          30044: k      60      2       107
        !          30045: l      60      2       108
        !          30046: m      60      0       109
        !          30047: n      60      0       110
        !          30048: o      60      0       111
        !          30049: p      60      1       112
        !          30050: q      60      1       113
        !          30051: r      60      0       114
        !          30052: s      60      0       115
        !          30053: t      60      2       116
        !          30054: u      60      0       117
        !          30055: v      60      0       118
        !          30056: w      60      0       119
        !          30057: x      60      0       120
        !          30058: y      60      1       121
        !          30059: z      60      0       122
        !          30060: {      60      3       123
        !          30061: |      60      3       124
        !          30062: }      60      3       125
        !          30063: ~      60      0       126
        !          30064: \`     60      2       145
        !          30065: ga     "
        !          30066: !!     60      1       161
        !          30067: \0241  "
        !          30068: c|     60      2       162
        !          30069: \0242  "
        !          30070: ct     "
        !          30071: L-     60      2       163
        !          30072: \0243  "
        !          30073: ps     "
        !          30074: xo     60      2       164
        !          30075: \0244  "
        !          30076: cr     "
        !          30077: Y-     60      2       165
        !          30078: \0245  "
        !          30079: yn     "
        !          30080: ||     60      3       166
        !          30081: \0246  "
        !          30082: so     60      2       167
        !          30083: \0247  "
        !          30084: sc     "
        !          30085: ""     60      2       168
        !          30086: \0250  "
        !          30087: :a     "
        !          30088: co     60      2       169
        !          30089: \0251  "
        !          30090: a_     60      2       170
        !          30091: \0252  "
        !          30092: <<     60      0       171
        !          30093: \0253  "
        !          30094: -,     60      0       172
        !          30095: \0254  "
        !          30096: hy     60      0       173
        !          30097: \0255  "
        !          30098: --     60      0       45
        !          30099: ro     60      2       174
        !          30100: \0256  "
        !          30101: rg     "
        !          30102: -^     60      2       175
        !          30103: \0257  "
        !          30104: -a     "
        !          30105: 0^     60      2       176
        !          30106: \0260  "
        !          30107: +-     60      2       177
        !          30108: \0261  "
        !          30109: 2^     60      2       178
        !          30110: \0262  "
        !          30111: 3^     60      2       179
        !          30112: \0263  "
        !          30113: \'     60      2       180
        !          30114: \0264  "
        !          30115: aa     "
        !          30116: /u     60      1       181
        !          30117: \0265  "
        !          30118: P!     60      2       182
        !          30119: \0266  "
        !          30120: pg     "
        !          30121: .^     60      0       183
        !          30122: \0267  "
        !          30123: ,,     60      1       184
        !          30124: \0270  "
        !          30125: ,a     "
        !          30126: 1^     60      2       185
        !          30127: \0271  "
        !          30128: o_     60      2       186
        !          30129: \0272  "
        !          30130: >>     60      0       187
        !          30131: \0273  "
        !          30132: 14     60      2       188
        !          30133: \0274  "
        !          30134: 12     60      2       189
        !          30135: \0275  "
        !          30136: 34     60      2       190
        !          30137: \0276  "
        !          30138: ??     60      1       191
        !          30139: \0277  "
        !          30140: A`     60      2       192
        !          30141: \0300  "
        !          30142: A'     60      2       193
        !          30143: \0301  "
        !          30144: A^     60      2       194
        !          30145: \0302  "
        !          30146: A~     60      2       195
        !          30147: \0303  "
        !          30148: A"     60      2       196
        !          30149: \0304  "
        !          30150: A*     60      2       197
        !          30151: \0305  "
        !          30152: AE     60      2       198
        !          30153: \0306  "
        !          30154: C,     60      3       199
        !          30155: \0307  "
        !          30156: E`     60      2       200
        !          30157: \0310  "
        !          30158: E'     60      2       201
        !          30159: \0311  "
        !          30160: E^     60      2       202
        !          30161: \0312  "
        !          30162: E"     60      2       203
        !          30163: \0313  "
        !          30164: I`     60      2       204
        !          30165: \0314  "
        !          30166: I'     60      2       205
        !          30167: \0315  "
        !          30168: I^     60      2       206
        !          30169: \0316  "
        !          30170: I"     60      2       207
        !          30171: \0317  "
        !          30172: D-     60      2       208
        !          30173: \0320  "
        !          30174: N~     60      2       209
        !          30175: \0321  "
        !          30176: O`     60      2       210
        !          30177: \0322  "
        !          30178: O'     60      2       211
        !          30179: \0323  "
        !          30180: O^     60      2       212
        !          30181: \0324  "
        !          30182: O~     60      2       213
        !          30183: \0325  "
        !          30184: O"     60      2       214
        !          30185: \0326  "
        !          30186: xx     60      0       215
        !          30187: \0327  "
        !          30188: O/     60      2       216
        !          30189: \0330  "
        !          30190: U`     60      2       217
        !          30191: \0331  "
        !          30192: U'     60      2       218
        !          30193: \0332  "
        !          30194: U^     60      2       219
        !          30195: \0333  "
        !          30196: U"     60      2       220
        !          30197: \0334  "
        !          30198: Y'     60      2       221
        !          30199: \0335  "
        !          30200: TH     60      2       222
        !          30201: \0336  "
        !          30202: ss     60      2       223
        !          30203: \0337  "
        !          30204: a`     60      2       224
        !          30205: \0340  "
        !          30206: a'     60      2       225
        !          30207: \0341  "
        !          30208: a^     60      2       226
        !          30209: \0342  "
        !          30210: a~     60      2       227
        !          30211: \0343  "
        !          30212: a"     60      2       228
        !          30213: \0344  "
        !          30214: a*     60      2       229
        !          30215: \0345  "
        !          30216: ae     60      0       230
        !          30217: \0346  "
        !          30218: c,     60      1       231
        !          30219: \0347  "
        !          30220: e`     60      2       232
        !          30221: \0350  "
        !          30222: e'     60      2       233
        !          30223: \0351  "
        !          30224: e^     60      2       234
        !          30225: \0352  "
        !          30226: e"     60      2       235
        !          30227: \0353  "
        !          30228: i`     60      2       236
        !          30229: \0354  "
        !          30230: i'     60      2       237
        !          30231: \0355  "
        !          30232: i^     60      2       238
        !          30233: \0356  "
        !          30234: i"     60      2       239
        !          30235: \0357  "
        !          30236: d-     60      2       240
        !          30237: \0360  "
        !          30238: n~     60      2       241
        !          30239: \0361  "
        !          30240: o`     60      2       242
        !          30241: \0362  "
        !          30242: o'     60      2       243
        !          30243: \0363  "
        !          30244: o^     60      2       244
        !          30245: \0364  "
        !          30246: o~     60      2       245
        !          30247: \0365  "
        !          30248: o"     60      2       246
        !          30249: \0366  "
        !          30250: -:     60      2       247
        !          30251: \0367  "
        !          30252: o/     60      0       248
        !          30253: \0370  "
        !          30254: u`     60      2       249
        !          30255: \0371  "
        !          30256: u'     60      2       250
        !          30257: \0372  "
        !          30258: u^     60      2       251
        !          30259: \0373  "
        !          30260: u"     60      2       252
        !          30261: \0374  "
        !          30262: y'     60      3       253
        !          30263: \0375  "
        !          30264: th     60      3       254
        !          30265: \0376  "
        !          30266: y"     60      3       255
        !          30267: \0377  "
        !          30268: ^a     60      2       147
        !          30269: ~a     60      2       148
        !          30270: Ua     60      2       150
        !          30271: .a     60      2       151
        !          30272: oa     60      2       154
        !          30273: "a     60      2       157
        !          30274: Ca     60      1       158
        !          30275: va     60      2       159
        !          30276: 0707070014231123771006440057030057030000010445040522627501700002600000006077post.src/devLatin1/CBname CB
        !          30277: fontname Courier-Bold
        !          30278: named in prologue
        !          30279: spacewidth 60
        !          30280: charset
        !          30281: !      60      2       33
        !          30282: "      60      2       34
        !          30283: dq     "
        !          30284: #      60      2       35
        !          30285: $      60      2       36
        !          30286: %      60      2       37
        !          30287: &      60      2       38
        !          30288: '      60      2       39
        !          30289: (      60      3       40
        !          30290: )      60      3       41
        !          30291: *      60      2       42
        !          30292: +      60      2       43
        !          30293: ,      60      1       44
        !          30294: -      60      0       173
        !          30295: \0255  "
        !          30296: .      60      0       46
        !          30297: /      60      2       47
        !          30298: 0      60      2       48
        !          30299: 1      60      2       49
        !          30300: 2      60      2       50
        !          30301: 3      60      2       51
        !          30302: 4      60      2       52
        !          30303: 5      60      2       53
        !          30304: 6      60      2       54
        !          30305: 7      60      2       55
        !          30306: 8      60      2       56
        !          30307: 9      60      2       57
        !          30308: :      60      0       58
        !          30309: ;      60      0       59
        !          30310: <      60      2       60
        !          30311: =      60      0       61
        !          30312: >      60      2       62
        !          30313: ?      60      2       63
        !          30314: @      60      2       64
        !          30315: A      60      2       65
        !          30316: B      60      2       66
        !          30317: C      60      2       67
        !          30318: D      60      2       68
        !          30319: E      60      2       69
        !          30320: F      60      2       70
        !          30321: G      60      2       71
        !          30322: H      60      2       72
        !          30323: I      60      2       73
        !          30324: J      60      2       74
        !          30325: K      60      2       75
        !          30326: L      60      2       76
        !          30327: M      60      2       77
        !          30328: N      60      2       78
        !          30329: O      60      2       79
        !          30330: P      60      2       80
        !          30331: Q      60      3       81
        !          30332: R      60      2       82
        !          30333: S      60      2       83
        !          30334: T      60      2       84
        !          30335: U      60      2       85
        !          30336: V      60      2       86
        !          30337: W      60      2       87
        !          30338: X      60      2       88
        !          30339: Y      60      2       89
        !          30340: Z      60      2       90
        !          30341: [      60      3       91
        !          30342: \      60      2       92
        !          30343: bs     "
        !          30344: ]      60      3       93
        !          30345: ^      60      2       94
        !          30346: _      60      1       95
        !          30347: `      60      2       96
        !          30348: a      60      0       97
        !          30349: b      60      2       98
        !          30350: c      60      0       99
        !          30351: d      60      2       100
        !          30352: e      60      0       101
        !          30353: f      60      2       102
        !          30354: g      60      1       103
        !          30355: h      60      2       104
        !          30356: i      60      2       105
        !          30357: j      60      3       106
        !          30358: k      60      2       107
        !          30359: l      60      2       108
        !          30360: m      60      0       109
        !          30361: n      60      0       110
        !          30362: o      60      0       111
        !          30363: p      60      1       112
        !          30364: q      60      1       113
        !          30365: r      60      0       114
        !          30366: s      60      0       115
        !          30367: t      60      2       116
        !          30368: u      60      0       117
        !          30369: v      60      0       118
        !          30370: w      60      0       119
        !          30371: x      60      0       120
        !          30372: y      60      1       121
        !          30373: z      60      0       122
        !          30374: {      60      3       123
        !          30375: |      60      3       124
        !          30376: }      60      3       125
        !          30377: ~      60      0       126
        !          30378: \`     60      2       145
        !          30379: ga     "
        !          30380: !!     60      1       161
        !          30381: \0241  "
        !          30382: c|     60      2       162
        !          30383: \0242  "
        !          30384: ct     "
        !          30385: L-     60      2       163
        !          30386: \0243  "
        !          30387: ps     "
        !          30388: xo     60      2       164
        !          30389: \0244  "
        !          30390: cr     "
        !          30391: Y-     60      2       165
        !          30392: \0245  "
        !          30393: yn     "
        !          30394: ||     60      3       166
        !          30395: \0246  "
        !          30396: so     60      2       167
        !          30397: \0247  "
        !          30398: sc     "
        !          30399: ""     60      2       168
        !          30400: \0250  "
        !          30401: :a     "
        !          30402: co     60      2       169
        !          30403: \0251  "
        !          30404: a_     60      2       170
        !          30405: \0252  "
        !          30406: <<     60      0       171
        !          30407: \0253  "
        !          30408: -,     60      0       172
        !          30409: \0254  "
        !          30410: hy     60      0       173
        !          30411: \0255  "
        !          30412: --     60      0       45
        !          30413: ro     60      2       174
        !          30414: \0256  "
        !          30415: rg     "
        !          30416: -^     60      2       175
        !          30417: \0257  "
        !          30418: -a     "
        !          30419: 0^     60      2       176
        !          30420: \0260  "
        !          30421: +-     60      2       177
        !          30422: \0261  "
        !          30423: 2^     60      2       178
        !          30424: \0262  "
        !          30425: 3^     60      2       179
        !          30426: \0263  "
        !          30427: \'     60      2       180
        !          30428: \0264  "
        !          30429: aa     "
        !          30430: /u     60      1       181
        !          30431: \0265  "
        !          30432: P!     60      2       182
        !          30433: \0266  "
        !          30434: pg     "
        !          30435: .^     60      0       183
        !          30436: \0267  "
        !          30437: ,,     60      1       184
        !          30438: \0270  "
        !          30439: ,a     "
        !          30440: 1^     60      2       185
        !          30441: \0271  "
        !          30442: o_     60      2       186
        !          30443: \0272  "
        !          30444: >>     60      0       187
        !          30445: \0273  "
        !          30446: 14     60      2       188
        !          30447: \0274  "
        !          30448: 12     60      2       189
        !          30449: \0275  "
        !          30450: 34     60      2       190
        !          30451: \0276  "
        !          30452: ??     60      1       191
        !          30453: \0277  "
        !          30454: A`     60      2       192
        !          30455: \0300  "
        !          30456: A'     60      2       193
        !          30457: \0301  "
        !          30458: A^     60      2       194
        !          30459: \0302  "
        !          30460: A~     60      2       195
        !          30461: \0303  "
        !          30462: A"     60      2       196
        !          30463: \0304  "
        !          30464: A*     60      2       197
        !          30465: \0305  "
        !          30466: AE     60      2       198
        !          30467: \0306  "
        !          30468: C,     60      3       199
        !          30469: \0307  "
        !          30470: E`     60      2       200
        !          30471: \0310  "
        !          30472: E'     60      2       201
        !          30473: \0311  "
        !          30474: E^     60      2       202
        !          30475: \0312  "
        !          30476: E"     60      2       203
        !          30477: \0313  "
        !          30478: I`     60      2       204
        !          30479: \0314  "
        !          30480: I'     60      2       205
        !          30481: \0315  "
        !          30482: I^     60      2       206
        !          30483: \0316  "
        !          30484: I"     60      2       207
        !          30485: \0317  "
        !          30486: D-     60      2       208
        !          30487: \0320  "
        !          30488: N~     60      2       209
        !          30489: \0321  "
        !          30490: O`     60      2       210
        !          30491: \0322  "
        !          30492: O'     60      2       211
        !          30493: \0323  "
        !          30494: O^     60      2       212
        !          30495: \0324  "
        !          30496: O~     60      2       213
        !          30497: \0325  "
        !          30498: O"     60      2       214
        !          30499: \0326  "
        !          30500: xx     60      0       215
        !          30501: \0327  "
        !          30502: O/     60      2       216
        !          30503: \0330  "
        !          30504: U`     60      2       217
        !          30505: \0331  "
        !          30506: U'     60      2       218
        !          30507: \0332  "
        !          30508: U^     60      2       219
        !          30509: \0333  "
        !          30510: U"     60      2       220
        !          30511: \0334  "
        !          30512: Y'     60      2       221
        !          30513: \0335  "
        !          30514: TH     60      2       222
        !          30515: \0336  "
        !          30516: ss     60      2       223
        !          30517: \0337  "
        !          30518: a`     60      2       224
        !          30519: \0340  "
        !          30520: a'     60      2       225
        !          30521: \0341  "
        !          30522: a^     60      2       226
        !          30523: \0342  "
        !          30524: a~     60      2       227
        !          30525: \0343  "
        !          30526: a"     60      2       228
        !          30527: \0344  "
        !          30528: a*     60      2       229
        !          30529: \0345  "
        !          30530: ae     60      0       230
        !          30531: \0346  "
        !          30532: c,     60      1       231
        !          30533: \0347  "
        !          30534: e`     60      2       232
        !          30535: \0350  "
        !          30536: e'     60      2       233
        !          30537: \0351  "
        !          30538: e^     60      2       234
        !          30539: \0352  "
        !          30540: e"     60      2       235
        !          30541: \0353  "
        !          30542: i`     60      2       236
        !          30543: \0354  "
        !          30544: i'     60      2       237
        !          30545: \0355  "
        !          30546: i^     60      2       238
        !          30547: \0356  "
        !          30548: i"     60      2       239
        !          30549: \0357  "
        !          30550: d-     60      2       240
        !          30551: \0360  "
        !          30552: n~     60      2       241
        !          30553: \0361  "
        !          30554: o`     60      2       242
        !          30555: \0362  "
        !          30556: o'     60      2       243
        !          30557: \0363  "
        !          30558: o^     60      2       244
        !          30559: \0364  "
        !          30560: o~     60      2       245
        !          30561: \0365  "
        !          30562: o"     60      2       246
        !          30563: \0366  "
        !          30564: -:     60      2       247
        !          30565: \0367  "
        !          30566: o/     60      0       248
        !          30567: \0370  "
        !          30568: u`     60      2       249
        !          30569: \0371  "
        !          30570: u'     60      2       250
        !          30571: \0372  "
        !          30572: u^     60      2       251
        !          30573: \0373  "
        !          30574: u"     60      2       252
        !          30575: \0374  "
        !          30576: y'     60      3       253
        !          30577: \0375  "
        !          30578: th     60      3       254
        !          30579: \0376  "
        !          30580: y"     60      3       255
        !          30581: \0377  "
        !          30582: ^a     60      2       147
        !          30583: ~a     60      2       148
        !          30584: Ua     60      2       150
        !          30585: .a     60      2       151
        !          30586: oa     60      2       154
        !          30587: "a     60      2       157
        !          30588: Ca     60      1       158
        !          30589: va     60      2       159
        !          30590: 0707070014231124001006440057030057030000010445200522627501700002600000006102post.src/devLatin1/CIname CI
        !          30591: fontname Courier-Oblique
        !          30592: named in prologue
        !          30593: spacewidth 60
        !          30594: charset
        !          30595: !      60      2       33
        !          30596: "      60      2       34
        !          30597: dq     "
        !          30598: #      60      2       35
        !          30599: $      60      2       36
        !          30600: %      60      2       37
        !          30601: &      60      2       38
        !          30602: '      60      2       39
        !          30603: (      60      3       40
        !          30604: )      60      3       41
        !          30605: *      60      2       42
        !          30606: +      60      2       43
        !          30607: ,      60      1       44
        !          30608: -      60      0       173
        !          30609: \0255  "
        !          30610: .      60      0       46
        !          30611: /      60      2       47
        !          30612: 0      60      2       48
        !          30613: 1      60      2       49
        !          30614: 2      60      2       50
        !          30615: 3      60      2       51
        !          30616: 4      60      2       52
        !          30617: 5      60      2       53
        !          30618: 6      60      2       54
        !          30619: 7      60      2       55
        !          30620: 8      60      2       56
        !          30621: 9      60      2       57
        !          30622: :      60      0       58
        !          30623: ;      60      0       59
        !          30624: <      60      2       60
        !          30625: =      60      0       61
        !          30626: >      60      2       62
        !          30627: ?      60      2       63
        !          30628: @      60      2       64
        !          30629: A      60      2       65
        !          30630: B      60      2       66
        !          30631: C      60      2       67
        !          30632: D      60      2       68
        !          30633: E      60      2       69
        !          30634: F      60      2       70
        !          30635: G      60      2       71
        !          30636: H      60      2       72
        !          30637: I      60      2       73
        !          30638: J      60      2       74
        !          30639: K      60      2       75
        !          30640: L      60      2       76
        !          30641: M      60      2       77
        !          30642: N      60      2       78
        !          30643: O      60      2       79
        !          30644: P      60      2       80
        !          30645: Q      60      3       81
        !          30646: R      60      2       82
        !          30647: S      60      2       83
        !          30648: T      60      2       84
        !          30649: U      60      2       85
        !          30650: V      60      2       86
        !          30651: W      60      2       87
        !          30652: X      60      2       88
        !          30653: Y      60      2       89
        !          30654: Z      60      2       90
        !          30655: [      60      3       91
        !          30656: \      60      2       92
        !          30657: bs     "
        !          30658: ]      60      3       93
        !          30659: ^      60      2       94
        !          30660: _      60      1       95
        !          30661: `      60      2       96
        !          30662: a      60      0       97
        !          30663: b      60      2       98
        !          30664: c      60      0       99
        !          30665: d      60      2       100
        !          30666: e      60      0       101
        !          30667: f      60      2       102
        !          30668: g      60      1       103
        !          30669: h      60      2       104
        !          30670: i      60      2       105
        !          30671: j      60      3       106
        !          30672: k      60      2       107
        !          30673: l      60      2       108
        !          30674: m      60      0       109
        !          30675: n      60      0       110
        !          30676: o      60      0       111
        !          30677: p      60      1       112
        !          30678: q      60      1       113
        !          30679: r      60      0       114
        !          30680: s      60      0       115
        !          30681: t      60      2       116
        !          30682: u      60      0       117
        !          30683: v      60      0       118
        !          30684: w      60      0       119
        !          30685: x      60      0       120
        !          30686: y      60      1       121
        !          30687: z      60      0       122
        !          30688: {      60      3       123
        !          30689: |      60      3       124
        !          30690: }      60      3       125
        !          30691: ~      60      0       126
        !          30692: \`     60      2       145
        !          30693: ga     "
        !          30694: !!     60      1       161
        !          30695: \0241  "
        !          30696: c|     60      2       162
        !          30697: \0242  "
        !          30698: ct     "
        !          30699: L-     60      2       163
        !          30700: \0243  "
        !          30701: ps     "
        !          30702: xo     60      2       164
        !          30703: \0244  "
        !          30704: cr     "
        !          30705: Y-     60      2       165
        !          30706: \0245  "
        !          30707: yn     "
        !          30708: ||     60      3       166
        !          30709: \0246  "
        !          30710: so     60      2       167
        !          30711: \0247  "
        !          30712: sc     "
        !          30713: ""     60      2       168
        !          30714: \0250  "
        !          30715: :a     "
        !          30716: co     60      2       169
        !          30717: \0251  "
        !          30718: a_     60      2       170
        !          30719: \0252  "
        !          30720: <<     60      0       171
        !          30721: \0253  "
        !          30722: -,     60      0       172
        !          30723: \0254  "
        !          30724: hy     60      0       173
        !          30725: \0255  "
        !          30726: --     60      0       45
        !          30727: ro     60      2       174
        !          30728: \0256  "
        !          30729: rg     "
        !          30730: -^     60      2       175
        !          30731: \0257  "
        !          30732: -a     "
        !          30733: 0^     60      2       176
        !          30734: \0260  "
        !          30735: +-     60      2       177
        !          30736: \0261  "
        !          30737: 2^     60      2       178
        !          30738: \0262  "
        !          30739: 3^     60      2       179
        !          30740: \0263  "
        !          30741: \'     60      2       180
        !          30742: \0264  "
        !          30743: aa     "
        !          30744: /u     60      1       181
        !          30745: \0265  "
        !          30746: P!     60      2       182
        !          30747: \0266  "
        !          30748: pg     "
        !          30749: .^     60      0       183
        !          30750: \0267  "
        !          30751: ,,     60      1       184
        !          30752: \0270  "
        !          30753: ,a     "
        !          30754: 1^     60      2       185
        !          30755: \0271  "
        !          30756: o_     60      2       186
        !          30757: \0272  "
        !          30758: >>     60      0       187
        !          30759: \0273  "
        !          30760: 14     60      2       188
        !          30761: \0274  "
        !          30762: 12     60      2       189
        !          30763: \0275  "
        !          30764: 34     60      2       190
        !          30765: \0276  "
        !          30766: ??     60      1       191
        !          30767: \0277  "
        !          30768: A`     60      2       192
        !          30769: \0300  "
        !          30770: A'     60      2       193
        !          30771: \0301  "
        !          30772: A^     60      2       194
        !          30773: \0302  "
        !          30774: A~     60      2       195
        !          30775: \0303  "
        !          30776: A"     60      2       196
        !          30777: \0304  "
        !          30778: A*     60      2       197
        !          30779: \0305  "
        !          30780: AE     60      2       198
        !          30781: \0306  "
        !          30782: C,     60      3       199
        !          30783: \0307  "
        !          30784: E`     60      2       200
        !          30785: \0310  "
        !          30786: E'     60      2       201
        !          30787: \0311  "
        !          30788: E^     60      2       202
        !          30789: \0312  "
        !          30790: E"     60      2       203
        !          30791: \0313  "
        !          30792: I`     60      2       204
        !          30793: \0314  "
        !          30794: I'     60      2       205
        !          30795: \0315  "
        !          30796: I^     60      2       206
        !          30797: \0316  "
        !          30798: I"     60      2       207
        !          30799: \0317  "
        !          30800: D-     60      2       208
        !          30801: \0320  "
        !          30802: N~     60      2       209
        !          30803: \0321  "
        !          30804: O`     60      2       210
        !          30805: \0322  "
        !          30806: O'     60      2       211
        !          30807: \0323  "
        !          30808: O^     60      2       212
        !          30809: \0324  "
        !          30810: O~     60      2       213
        !          30811: \0325  "
        !          30812: O"     60      2       214
        !          30813: \0326  "
        !          30814: xx     60      0       215
        !          30815: \0327  "
        !          30816: O/     60      2       216
        !          30817: \0330  "
        !          30818: U`     60      2       217
        !          30819: \0331  "
        !          30820: U'     60      2       218
        !          30821: \0332  "
        !          30822: U^     60      2       219
        !          30823: \0333  "
        !          30824: U"     60      2       220
        !          30825: \0334  "
        !          30826: Y'     60      2       221
        !          30827: \0335  "
        !          30828: TH     60      2       222
        !          30829: \0336  "
        !          30830: ss     60      2       223
        !          30831: \0337  "
        !          30832: a`     60      2       224
        !          30833: \0340  "
        !          30834: a'     60      2       225
        !          30835: \0341  "
        !          30836: a^     60      2       226
        !          30837: \0342  "
        !          30838: a~     60      2       227
        !          30839: \0343  "
        !          30840: a"     60      2       228
        !          30841: \0344  "
        !          30842: a*     60      2       229
        !          30843: \0345  "
        !          30844: ae     60      0       230
        !          30845: \0346  "
        !          30846: c,     60      1       231
        !          30847: \0347  "
        !          30848: e`     60      2       232
        !          30849: \0350  "
        !          30850: e'     60      2       233
        !          30851: \0351  "
        !          30852: e^     60      2       234
        !          30853: \0352  "
        !          30854: e"     60      2       235
        !          30855: \0353  "
        !          30856: i`     60      2       236
        !          30857: \0354  "
        !          30858: i'     60      2       237
        !          30859: \0355  "
        !          30860: i^     60      2       238
        !          30861: \0356  "
        !          30862: i"     60      2       239
        !          30863: \0357  "
        !          30864: d-     60      2       240
        !          30865: \0360  "
        !          30866: n~     60      2       241
        !          30867: \0361  "
        !          30868: o`     60      2       242
        !          30869: \0362  "
        !          30870: o'     60      2       243
        !          30871: \0363  "
        !          30872: o^     60      2       244
        !          30873: \0364  "
        !          30874: o~     60      2       245
        !          30875: \0365  "
        !          30876: o"     60      2       246
        !          30877: \0366  "
        !          30878: -:     60      2       247
        !          30879: \0367  "
        !          30880: o/     60      0       248
        !          30881: \0370  "
        !          30882: u`     60      2       249
        !          30883: \0371  "
        !          30884: u'     60      2       250
        !          30885: \0372  "
        !          30886: u^     60      2       251
        !          30887: \0373  "
        !          30888: u"     60      2       252
        !          30889: \0374  "
        !          30890: y'     60      3       253
        !          30891: \0375  "
        !          30892: th     60      3       254
        !          30893: \0376  "
        !          30894: y"     60      3       255
        !          30895: \0377  "
        !          30896: ^a     60      2       147
        !          30897: ~a     60      2       148
        !          30898: Ua     60      2       150
        !          30899: .a     60      2       151
        !          30900: oa     60      2       154
        !          30901: "a     60      2       157
        !          30902: Ca     60      1       158
        !          30903: va     60      2       159
        !          30904: 0707070014231124011006440057030057030000010445240522627501700002600000006072post.src/devLatin1/COname CO
        !          30905: fontname Courier
        !          30906: named in prologue
        !          30907: spacewidth 60
        !          30908: charset
        !          30909: !      60      2       33
        !          30910: "      60      2       34
        !          30911: dq     "
        !          30912: #      60      2       35
        !          30913: $      60      2       36
        !          30914: %      60      2       37
        !          30915: &      60      2       38
        !          30916: '      60      2       39
        !          30917: (      60      3       40
        !          30918: )      60      3       41
        !          30919: *      60      2       42
        !          30920: +      60      2       43
        !          30921: ,      60      1       44
        !          30922: -      60      0       173
        !          30923: \0255  "
        !          30924: .      60      0       46
        !          30925: /      60      2       47
        !          30926: 0      60      2       48
        !          30927: 1      60      2       49
        !          30928: 2      60      2       50
        !          30929: 3      60      2       51
        !          30930: 4      60      2       52
        !          30931: 5      60      2       53
        !          30932: 6      60      2       54
        !          30933: 7      60      2       55
        !          30934: 8      60      2       56
        !          30935: 9      60      2       57
        !          30936: :      60      0       58
        !          30937: ;      60      0       59
        !          30938: <      60      2       60
        !          30939: =      60      0       61
        !          30940: >      60      2       62
        !          30941: ?      60      2       63
        !          30942: @      60      2       64
        !          30943: A      60      2       65
        !          30944: B      60      2       66
        !          30945: C      60      2       67
        !          30946: D      60      2       68
        !          30947: E      60      2       69
        !          30948: F      60      2       70
        !          30949: G      60      2       71
        !          30950: H      60      2       72
        !          30951: I      60      2       73
        !          30952: J      60      2       74
        !          30953: K      60      2       75
        !          30954: L      60      2       76
        !          30955: M      60      2       77
        !          30956: N      60      2       78
        !          30957: O      60      2       79
        !          30958: P      60      2       80
        !          30959: Q      60      3       81
        !          30960: R      60      2       82
        !          30961: S      60      2       83
        !          30962: T      60      2       84
        !          30963: U      60      2       85
        !          30964: V      60      2       86
        !          30965: W      60      2       87
        !          30966: X      60      2       88
        !          30967: Y      60      2       89
        !          30968: Z      60      2       90
        !          30969: [      60      3       91
        !          30970: \      60      2       92
        !          30971: bs     "
        !          30972: ]      60      3       93
        !          30973: ^      60      2       94
        !          30974: _      60      1       95
        !          30975: `      60      2       96
        !          30976: a      60      0       97
        !          30977: b      60      2       98
        !          30978: c      60      0       99
        !          30979: d      60      2       100
        !          30980: e      60      0       101
        !          30981: f      60      2       102
        !          30982: g      60      1       103
        !          30983: h      60      2       104
        !          30984: i      60      2       105
        !          30985: j      60      3       106
        !          30986: k      60      2       107
        !          30987: l      60      2       108
        !          30988: m      60      0       109
        !          30989: n      60      0       110
        !          30990: o      60      0       111
        !          30991: p      60      1       112
        !          30992: q      60      1       113
        !          30993: r      60      0       114
        !          30994: s      60      0       115
        !          30995: t      60      2       116
        !          30996: u      60      0       117
        !          30997: v      60      0       118
        !          30998: w      60      0       119
        !          30999: x      60      0       120
        !          31000: y      60      1       121
        !          31001: z      60      0       122
        !          31002: {      60      3       123
        !          31003: |      60      3       124
        !          31004: }      60      3       125
        !          31005: ~      60      0       126
        !          31006: \`     60      2       145
        !          31007: ga     "
        !          31008: !!     60      1       161
        !          31009: \0241  "
        !          31010: c|     60      2       162
        !          31011: \0242  "
        !          31012: ct     "
        !          31013: L-     60      2       163
        !          31014: \0243  "
        !          31015: ps     "
        !          31016: xo     60      2       164
        !          31017: \0244  "
        !          31018: cr     "
        !          31019: Y-     60      2       165
        !          31020: \0245  "
        !          31021: yn     "
        !          31022: ||     60      3       166
        !          31023: \0246  "
        !          31024: so     60      2       167
        !          31025: \0247  "
        !          31026: sc     "
        !          31027: ""     60      2       168
        !          31028: \0250  "
        !          31029: :a     "
        !          31030: co     60      2       169
        !          31031: \0251  "
        !          31032: a_     60      2       170
        !          31033: \0252  "
        !          31034: <<     60      0       171
        !          31035: \0253  "
        !          31036: -,     60      0       172
        !          31037: \0254  "
        !          31038: hy     60      0       173
        !          31039: \0255  "
        !          31040: --     60      0       45
        !          31041: ro     60      2       174
        !          31042: \0256  "
        !          31043: rg     "
        !          31044: -^     60      2       175
        !          31045: \0257  "
        !          31046: -a     "
        !          31047: 0^     60      2       176
        !          31048: \0260  "
        !          31049: +-     60      2       177
        !          31050: \0261  "
        !          31051: 2^     60      2       178
        !          31052: \0262  "
        !          31053: 3^     60      2       179
        !          31054: \0263  "
        !          31055: \'     60      2       180
        !          31056: \0264  "
        !          31057: aa     "
        !          31058: /u     60      1       181
        !          31059: \0265  "
        !          31060: P!     60      2       182
        !          31061: \0266  "
        !          31062: pg     "
        !          31063: .^     60      0       183
        !          31064: \0267  "
        !          31065: ,,     60      1       184
        !          31066: \0270  "
        !          31067: ,a     "
        !          31068: 1^     60      2       185
        !          31069: \0271  "
        !          31070: o_     60      2       186
        !          31071: \0272  "
        !          31072: >>     60      0       187
        !          31073: \0273  "
        !          31074: 14     60      2       188
        !          31075: \0274  "
        !          31076: 12     60      2       189
        !          31077: \0275  "
        !          31078: 34     60      2       190
        !          31079: \0276  "
        !          31080: ??     60      1       191
        !          31081: \0277  "
        !          31082: A`     60      2       192
        !          31083: \0300  "
        !          31084: A'     60      2       193
        !          31085: \0301  "
        !          31086: A^     60      2       194
        !          31087: \0302  "
        !          31088: A~     60      2       195
        !          31089: \0303  "
        !          31090: A"     60      2       196
        !          31091: \0304  "
        !          31092: A*     60      2       197
        !          31093: \0305  "
        !          31094: AE     60      2       198
        !          31095: \0306  "
        !          31096: C,     60      3       199
        !          31097: \0307  "
        !          31098: E`     60      2       200
        !          31099: \0310  "
        !          31100: E'     60      2       201
        !          31101: \0311  "
        !          31102: E^     60      2       202
        !          31103: \0312  "
        !          31104: E"     60      2       203
        !          31105: \0313  "
        !          31106: I`     60      2       204
        !          31107: \0314  "
        !          31108: I'     60      2       205
        !          31109: \0315  "
        !          31110: I^     60      2       206
        !          31111: \0316  "
        !          31112: I"     60      2       207
        !          31113: \0317  "
        !          31114: D-     60      2       208
        !          31115: \0320  "
        !          31116: N~     60      2       209
        !          31117: \0321  "
        !          31118: O`     60      2       210
        !          31119: \0322  "
        !          31120: O'     60      2       211
        !          31121: \0323  "
        !          31122: O^     60      2       212
        !          31123: \0324  "
        !          31124: O~     60      2       213
        !          31125: \0325  "
        !          31126: O"     60      2       214
        !          31127: \0326  "
        !          31128: xx     60      0       215
        !          31129: \0327  "
        !          31130: O/     60      2       216
        !          31131: \0330  "
        !          31132: U`     60      2       217
        !          31133: \0331  "
        !          31134: U'     60      2       218
        !          31135: \0332  "
        !          31136: U^     60      2       219
        !          31137: \0333  "
        !          31138: U"     60      2       220
        !          31139: \0334  "
        !          31140: Y'     60      2       221
        !          31141: \0335  "
        !          31142: TH     60      2       222
        !          31143: \0336  "
        !          31144: ss     60      2       223
        !          31145: \0337  "
        !          31146: a`     60      2       224
        !          31147: \0340  "
        !          31148: a'     60      2       225
        !          31149: \0341  "
        !          31150: a^     60      2       226
        !          31151: \0342  "
        !          31152: a~     60      2       227
        !          31153: \0343  "
        !          31154: a"     60      2       228
        !          31155: \0344  "
        !          31156: a*     60      2       229
        !          31157: \0345  "
        !          31158: ae     60      0       230
        !          31159: \0346  "
        !          31160: c,     60      1       231
        !          31161: \0347  "
        !          31162: e`     60      2       232
        !          31163: \0350  "
        !          31164: e'     60      2       233
        !          31165: \0351  "
        !          31166: e^     60      2       234
        !          31167: \0352  "
        !          31168: e"     60      2       235
        !          31169: \0353  "
        !          31170: i`     60      2       236
        !          31171: \0354  "
        !          31172: i'     60      2       237
        !          31173: \0355  "
        !          31174: i^     60      2       238
        !          31175: \0356  "
        !          31176: i"     60      2       239
        !          31177: \0357  "
        !          31178: d-     60      2       240
        !          31179: \0360  "
        !          31180: n~     60      2       241
        !          31181: \0361  "
        !          31182: o`     60      2       242
        !          31183: \0362  "
        !          31184: o'     60      2       243
        !          31185: \0363  "
        !          31186: o^     60      2       244
        !          31187: \0364  "
        !          31188: o~     60      2       245
        !          31189: \0365  "
        !          31190: o"     60      2       246
        !          31191: \0366  "
        !          31192: -:     60      2       247
        !          31193: \0367  "
        !          31194: o/     60      0       248
        !          31195: \0370  "
        !          31196: u`     60      2       249
        !          31197: \0371  "
        !          31198: u'     60      2       250
        !          31199: \0372  "
        !          31200: u^     60      2       251
        !          31201: \0373  "
        !          31202: u"     60      2       252
        !          31203: \0374  "
        !          31204: y'     60      3       253
        !          31205: \0375  "
        !          31206: th     60      3       254
        !          31207: \0376  "
        !          31208: y"     60      3       255
        !          31209: \0377  "
        !          31210: ^a     60      2       147
        !          31211: ~a     60      2       148
        !          31212: Ua     60      2       150
        !          31213: .a     60      2       151
        !          31214: oa     60      2       154
        !          31215: "a     60      2       157
        !          31216: Ca     60      1       158
        !          31217: va     60      2       159
        !          31218: 0707070014231124021006440057030057030000010445400522627501700002600000006072post.src/devLatin1/CWname CW
        !          31219: fontname Courier
        !          31220: named in prologue
        !          31221: spacewidth 60
        !          31222: charset
        !          31223: !      60      2       33
        !          31224: "      60      2       34
        !          31225: dq     "
        !          31226: #      60      2       35
        !          31227: $      60      2       36
        !          31228: %      60      2       37
        !          31229: &      60      2       38
        !          31230: '      60      2       39
        !          31231: (      60      3       40
        !          31232: )      60      3       41
        !          31233: *      60      2       42
        !          31234: +      60      2       43
        !          31235: ,      60      1       44
        !          31236: -      60      0       173
        !          31237: \0255  "
        !          31238: .      60      0       46
        !          31239: /      60      2       47
        !          31240: 0      60      2       48
        !          31241: 1      60      2       49
        !          31242: 2      60      2       50
        !          31243: 3      60      2       51
        !          31244: 4      60      2       52
        !          31245: 5      60      2       53
        !          31246: 6      60      2       54
        !          31247: 7      60      2       55
        !          31248: 8      60      2       56
        !          31249: 9      60      2       57
        !          31250: :      60      0       58
        !          31251: ;      60      0       59
        !          31252: <      60      2       60
        !          31253: =      60      0       61
        !          31254: >      60      2       62
        !          31255: ?      60      2       63
        !          31256: @      60      2       64
        !          31257: A      60      2       65
        !          31258: B      60      2       66
        !          31259: C      60      2       67
        !          31260: D      60      2       68
        !          31261: E      60      2       69
        !          31262: F      60      2       70
        !          31263: G      60      2       71
        !          31264: H      60      2       72
        !          31265: I      60      2       73
        !          31266: J      60      2       74
        !          31267: K      60      2       75
        !          31268: L      60      2       76
        !          31269: M      60      2       77
        !          31270: N      60      2       78
        !          31271: O      60      2       79
        !          31272: P      60      2       80
        !          31273: Q      60      3       81
        !          31274: R      60      2       82
        !          31275: S      60      2       83
        !          31276: T      60      2       84
        !          31277: U      60      2       85
        !          31278: V      60      2       86
        !          31279: W      60      2       87
        !          31280: X      60      2       88
        !          31281: Y      60      2       89
        !          31282: Z      60      2       90
        !          31283: [      60      3       91
        !          31284: \      60      2       92
        !          31285: bs     "
        !          31286: ]      60      3       93
        !          31287: ^      60      2       94
        !          31288: _      60      1       95
        !          31289: `      60      2       96
        !          31290: a      60      0       97
        !          31291: b      60      2       98
        !          31292: c      60      0       99
        !          31293: d      60      2       100
        !          31294: e      60      0       101
        !          31295: f      60      2       102
        !          31296: g      60      1       103
        !          31297: h      60      2       104
        !          31298: i      60      2       105
        !          31299: j      60      3       106
        !          31300: k      60      2       107
        !          31301: l      60      2       108
        !          31302: m      60      0       109
        !          31303: n      60      0       110
        !          31304: o      60      0       111
        !          31305: p      60      1       112
        !          31306: q      60      1       113
        !          31307: r      60      0       114
        !          31308: s      60      0       115
        !          31309: t      60      2       116
        !          31310: u      60      0       117
        !          31311: v      60      0       118
        !          31312: w      60      0       119
        !          31313: x      60      0       120
        !          31314: y      60      1       121
        !          31315: z      60      0       122
        !          31316: {      60      3       123
        !          31317: |      60      3       124
        !          31318: }      60      3       125
        !          31319: ~      60      0       126
        !          31320: \`     60      2       145
        !          31321: ga     "
        !          31322: !!     60      1       161
        !          31323: \0241  "
        !          31324: c|     60      2       162
        !          31325: \0242  "
        !          31326: ct     "
        !          31327: L-     60      2       163
        !          31328: \0243  "
        !          31329: ps     "
        !          31330: xo     60      2       164
        !          31331: \0244  "
        !          31332: cr     "
        !          31333: Y-     60      2       165
        !          31334: \0245  "
        !          31335: yn     "
        !          31336: ||     60      3       166
        !          31337: \0246  "
        !          31338: so     60      2       167
        !          31339: \0247  "
        !          31340: sc     "
        !          31341: ""     60      2       168
        !          31342: \0250  "
        !          31343: :a     "
        !          31344: co     60      2       169
        !          31345: \0251  "
        !          31346: a_     60      2       170
        !          31347: \0252  "
        !          31348: <<     60      0       171
        !          31349: \0253  "
        !          31350: -,     60      0       172
        !          31351: \0254  "
        !          31352: hy     60      0       173
        !          31353: \0255  "
        !          31354: --     60      0       45
        !          31355: ro     60      2       174
        !          31356: \0256  "
        !          31357: rg     "
        !          31358: -^     60      2       175
        !          31359: \0257  "
        !          31360: -a     "
        !          31361: 0^     60      2       176
        !          31362: \0260  "
        !          31363: +-     60      2       177
        !          31364: \0261  "
        !          31365: 2^     60      2       178
        !          31366: \0262  "
        !          31367: 3^     60      2       179
        !          31368: \0263  "
        !          31369: \'     60      2       180
        !          31370: \0264  "
        !          31371: aa     "
        !          31372: /u     60      1       181
        !          31373: \0265  "
        !          31374: P!     60      2       182
        !          31375: \0266  "
        !          31376: pg     "
        !          31377: .^     60      0       183
        !          31378: \0267  "
        !          31379: ,,     60      1       184
        !          31380: \0270  "
        !          31381: ,a     "
        !          31382: 1^     60      2       185
        !          31383: \0271  "
        !          31384: o_     60      2       186
        !          31385: \0272  "
        !          31386: >>     60      0       187
        !          31387: \0273  "
        !          31388: 14     60      2       188
        !          31389: \0274  "
        !          31390: 12     60      2       189
        !          31391: \0275  "
        !          31392: 34     60      2       190
        !          31393: \0276  "
        !          31394: ??     60      1       191
        !          31395: \0277  "
        !          31396: A`     60      2       192
        !          31397: \0300  "
        !          31398: A'     60      2       193
        !          31399: \0301  "
        !          31400: A^     60      2       194
        !          31401: \0302  "
        !          31402: A~     60      2       195
        !          31403: \0303  "
        !          31404: A"     60      2       196
        !          31405: \0304  "
        !          31406: A*     60      2       197
        !          31407: \0305  "
        !          31408: AE     60      2       198
        !          31409: \0306  "
        !          31410: C,     60      3       199
        !          31411: \0307  "
        !          31412: E`     60      2       200
        !          31413: \0310  "
        !          31414: E'     60      2       201
        !          31415: \0311  "
        !          31416: E^     60      2       202
        !          31417: \0312  "
        !          31418: E"     60      2       203
        !          31419: \0313  "
        !          31420: I`     60      2       204
        !          31421: \0314  "
        !          31422: I'     60      2       205
        !          31423: \0315  "
        !          31424: I^     60      2       206
        !          31425: \0316  "
        !          31426: I"     60      2       207
        !          31427: \0317  "
        !          31428: D-     60      2       208
        !          31429: \0320  "
        !          31430: N~     60      2       209
        !          31431: \0321  "
        !          31432: O`     60      2       210
        !          31433: \0322  "
        !          31434: O'     60      2       211
        !          31435: \0323  "
        !          31436: O^     60      2       212
        !          31437: \0324  "
        !          31438: O~     60      2       213
        !          31439: \0325  "
        !          31440: O"     60      2       214
        !          31441: \0326  "
        !          31442: xx     60      0       215
        !          31443: \0327  "
        !          31444: O/     60      2       216
        !          31445: \0330  "
        !          31446: U`     60      2       217
        !          31447: \0331  "
        !          31448: U'     60      2       218
        !          31449: \0332  "
        !          31450: U^     60      2       219
        !          31451: \0333  "
        !          31452: U"     60      2       220
        !          31453: \0334  "
        !          31454: Y'     60      2       221
        !          31455: \0335  "
        !          31456: TH     60      2       222
        !          31457: \0336  "
        !          31458: ss     60      2       223
        !          31459: \0337  "
        !          31460: a`     60      2       224
        !          31461: \0340  "
        !          31462: a'     60      2       225
        !          31463: \0341  "
        !          31464: a^     60      2       226
        !          31465: \0342  "
        !          31466: a~     60      2       227
        !          31467: \0343  "
        !          31468: a"     60      2       228
        !          31469: \0344  "
        !          31470: a*     60      2       229
        !          31471: \0345  "
        !          31472: ae     60      0       230
        !          31473: \0346  "
        !          31474: c,     60      1       231
        !          31475: \0347  "
        !          31476: e`     60      2       232
        !          31477: \0350  "
        !          31478: e'     60      2       233
        !          31479: \0351  "
        !          31480: e^     60      2       234
        !          31481: \0352  "
        !          31482: e"     60      2       235
        !          31483: \0353  "
        !          31484: i`     60      2       236
        !          31485: \0354  "
        !          31486: i'     60      2       237
        !          31487: \0355  "
        !          31488: i^     60      2       238
        !          31489: \0356  "
        !          31490: i"     60      2       239
        !          31491: \0357  "
        !          31492: d-     60      2       240
        !          31493: \0360  "
        !          31494: n~     60      2       241
        !          31495: \0361  "
        !          31496: o`     60      2       242
        !          31497: \0362  "
        !          31498: o'     60      2       243
        !          31499: \0363  "
        !          31500: o^     60      2       244
        !          31501: \0364  "
        !          31502: o~     60      2       245
        !          31503: \0365  "
        !          31504: o"     60      2       246
        !          31505: \0366  "
        !          31506: -:     60      2       247
        !          31507: \0367  "
        !          31508: o/     60      0       248
        !          31509: \0370  "
        !          31510: u`     60      2       249
        !          31511: \0371  "
        !          31512: u'     60      2       250
        !          31513: \0372  "
        !          31514: u^     60      2       251
        !          31515: \0373  "
        !          31516: u"     60      2       252
        !          31517: \0374  "
        !          31518: y'     60      3       253
        !          31519: \0375  "
        !          31520: th     60      3       254
        !          31521: \0376  "
        !          31522: y"     60      3       255
        !          31523: \0377  "
        !          31524: ^a     60      2       147
        !          31525: ~a     60      2       148
        !          31526: Ua     60      2       150
        !          31527: .a     60      2       151
        !          31528: oa     60      2       154
        !          31529: "a     60      2       157
        !          31530: Ca     60      1       158
        !          31531: va     60      2       159
        !          31532: 0707070014231124031006440057030057030000010445440522627501700002600000006106post.src/devLatin1/CXname CX
        !          31533: fontname Courier-BoldOblique
        !          31534: named in prologue
        !          31535: spacewidth 60
        !          31536: charset
        !          31537: !      60      2       33
        !          31538: "      60      2       34
        !          31539: dq     "
        !          31540: #      60      2       35
        !          31541: $      60      2       36
        !          31542: %      60      2       37
        !          31543: &      60      2       38
        !          31544: '      60      2       39
        !          31545: (      60      3       40
        !          31546: )      60      3       41
        !          31547: *      60      2       42
        !          31548: +      60      2       43
        !          31549: ,      60      1       44
        !          31550: -      60      0       173
        !          31551: \0255  "
        !          31552: .      60      0       46
        !          31553: /      60      2       47
        !          31554: 0      60      2       48
        !          31555: 1      60      2       49
        !          31556: 2      60      2       50
        !          31557: 3      60      2       51
        !          31558: 4      60      2       52
        !          31559: 5      60      2       53
        !          31560: 6      60      2       54
        !          31561: 7      60      2       55
        !          31562: 8      60      2       56
        !          31563: 9      60      2       57
        !          31564: :      60      0       58
        !          31565: ;      60      0       59
        !          31566: <      60      2       60
        !          31567: =      60      0       61
        !          31568: >      60      2       62
        !          31569: ?      60      2       63
        !          31570: @      60      2       64
        !          31571: A      60      2       65
        !          31572: B      60      2       66
        !          31573: C      60      2       67
        !          31574: D      60      2       68
        !          31575: E      60      2       69
        !          31576: F      60      2       70
        !          31577: G      60      2       71
        !          31578: H      60      2       72
        !          31579: I      60      2       73
        !          31580: J      60      2       74
        !          31581: K      60      2       75
        !          31582: L      60      2       76
        !          31583: M      60      2       77
        !          31584: N      60      2       78
        !          31585: O      60      2       79
        !          31586: P      60      2       80
        !          31587: Q      60      3       81
        !          31588: R      60      2       82
        !          31589: S      60      2       83
        !          31590: T      60      2       84
        !          31591: U      60      2       85
        !          31592: V      60      2       86
        !          31593: W      60      2       87
        !          31594: X      60      2       88
        !          31595: Y      60      2       89
        !          31596: Z      60      2       90
        !          31597: [      60      3       91
        !          31598: \      60      2       92
        !          31599: bs     "
        !          31600: ]      60      3       93
        !          31601: ^      60      2       94
        !          31602: _      60      1       95
        !          31603: `      60      2       96
        !          31604: a      60      0       97
        !          31605: b      60      2       98
        !          31606: c      60      0       99
        !          31607: d      60      2       100
        !          31608: e      60      0       101
        !          31609: f      60      2       102
        !          31610: g      60      1       103
        !          31611: h      60      2       104
        !          31612: i      60      2       105
        !          31613: j      60      3       106
        !          31614: k      60      2       107
        !          31615: l      60      2       108
        !          31616: m      60      0       109
        !          31617: n      60      0       110
        !          31618: o      60      0       111
        !          31619: p      60      1       112
        !          31620: q      60      1       113
        !          31621: r      60      0       114
        !          31622: s      60      0       115
        !          31623: t      60      2       116
        !          31624: u      60      0       117
        !          31625: v      60      0       118
        !          31626: w      60      0       119
        !          31627: x      60      0       120
        !          31628: y      60      1       121
        !          31629: z      60      0       122
        !          31630: {      60      3       123
        !          31631: |      60      3       124
        !          31632: }      60      3       125
        !          31633: ~      60      0       126
        !          31634: \`     60      2       145
        !          31635: ga     "
        !          31636: !!     60      1       161
        !          31637: \0241  "
        !          31638: c|     60      2       162
        !          31639: \0242  "
        !          31640: ct     "
        !          31641: L-     60      2       163
        !          31642: \0243  "
        !          31643: ps     "
        !          31644: xo     60      2       164
        !          31645: \0244  "
        !          31646: cr     "
        !          31647: Y-     60      2       165
        !          31648: \0245  "
        !          31649: yn     "
        !          31650: ||     60      3       166
        !          31651: \0246  "
        !          31652: so     60      2       167
        !          31653: \0247  "
        !          31654: sc     "
        !          31655: ""     60      2       168
        !          31656: \0250  "
        !          31657: :a     "
        !          31658: co     60      2       169
        !          31659: \0251  "
        !          31660: a_     60      2       170
        !          31661: \0252  "
        !          31662: <<     60      0       171
        !          31663: \0253  "
        !          31664: -,     60      0       172
        !          31665: \0254  "
        !          31666: hy     60      0       173
        !          31667: \0255  "
        !          31668: --     60      0       45
        !          31669: ro     60      2       174
        !          31670: \0256  "
        !          31671: rg     "
        !          31672: -^     60      2       175
        !          31673: \0257  "
        !          31674: -a     "
        !          31675: 0^     60      2       176
        !          31676: \0260  "
        !          31677: +-     60      2       177
        !          31678: \0261  "
        !          31679: 2^     60      2       178
        !          31680: \0262  "
        !          31681: 3^     60      2       179
        !          31682: \0263  "
        !          31683: \'     60      2       180
        !          31684: \0264  "
        !          31685: aa     "
        !          31686: /u     60      1       181
        !          31687: \0265  "
        !          31688: P!     60      2       182
        !          31689: \0266  "
        !          31690: pg     "
        !          31691: .^     60      0       183
        !          31692: \0267  "
        !          31693: ,,     60      1       184
        !          31694: \0270  "
        !          31695: ,a     "
        !          31696: 1^     60      2       185
        !          31697: \0271  "
        !          31698: o_     60      2       186
        !          31699: \0272  "
        !          31700: >>     60      0       187
        !          31701: \0273  "
        !          31702: 14     60      2       188
        !          31703: \0274  "
        !          31704: 12     60      2       189
        !          31705: \0275  "
        !          31706: 34     60      2       190
        !          31707: \0276  "
        !          31708: ??     60      1       191
        !          31709: \0277  "
        !          31710: A`     60      2       192
        !          31711: \0300  "
        !          31712: A'     60      2       193
        !          31713: \0301  "
        !          31714: A^     60      2       194
        !          31715: \0302  "
        !          31716: A~     60      2       195
        !          31717: \0303  "
        !          31718: A"     60      2       196
        !          31719: \0304  "
        !          31720: A*     60      2       197
        !          31721: \0305  "
        !          31722: AE     60      2       198
        !          31723: \0306  "
        !          31724: C,     60      3       199
        !          31725: \0307  "
        !          31726: E`     60      2       200
        !          31727: \0310  "
        !          31728: E'     60      2       201
        !          31729: \0311  "
        !          31730: E^     60      2       202
        !          31731: \0312  "
        !          31732: E"     60      2       203
        !          31733: \0313  "
        !          31734: I`     60      2       204
        !          31735: \0314  "
        !          31736: I'     60      2       205
        !          31737: \0315  "
        !          31738: I^     60      2       206
        !          31739: \0316  "
        !          31740: I"     60      2       207
        !          31741: \0317  "
        !          31742: D-     60      2       208
        !          31743: \0320  "
        !          31744: N~     60      2       209
        !          31745: \0321  "
        !          31746: O`     60      2       210
        !          31747: \0322  "
        !          31748: O'     60      2       211
        !          31749: \0323  "
        !          31750: O^     60      2       212
        !          31751: \0324  "
        !          31752: O~     60      2       213
        !          31753: \0325  "
        !          31754: O"     60      2       214
        !          31755: \0326  "
        !          31756: xx     60      0       215
        !          31757: \0327  "
        !          31758: O/     60      2       216
        !          31759: \0330  "
        !          31760: U`     60      2       217
        !          31761: \0331  "
        !          31762: U'     60      2       218
        !          31763: \0332  "
        !          31764: U^     60      2       219
        !          31765: \0333  "
        !          31766: U"     60      2       220
        !          31767: \0334  "
        !          31768: Y'     60      2       221
        !          31769: \0335  "
        !          31770: TH     60      2       222
        !          31771: \0336  "
        !          31772: ss     60      2       223
        !          31773: \0337  "
        !          31774: a`     60      2       224
        !          31775: \0340  "
        !          31776: a'     60      2       225
        !          31777: \0341  "
        !          31778: a^     60      2       226
        !          31779: \0342  "
        !          31780: a~     60      2       227
        !          31781: \0343  "
        !          31782: a"     60      2       228
        !          31783: \0344  "
        !          31784: a*     60      2       229
        !          31785: \0345  "
        !          31786: ae     60      0       230
        !          31787: \0346  "
        !          31788: c,     60      1       231
        !          31789: \0347  "
        !          31790: e`     60      2       232
        !          31791: \0350  "
        !          31792: e'     60      2       233
        !          31793: \0351  "
        !          31794: e^     60      2       234
        !          31795: \0352  "
        !          31796: e"     60      2       235
        !          31797: \0353  "
        !          31798: i`     60      2       236
        !          31799: \0354  "
        !          31800: i'     60      2       237
        !          31801: \0355  "
        !          31802: i^     60      2       238
        !          31803: \0356  "
        !          31804: i"     60      2       239
        !          31805: \0357  "
        !          31806: d-     60      2       240
        !          31807: \0360  "
        !          31808: n~     60      2       241
        !          31809: \0361  "
        !          31810: o`     60      2       242
        !          31811: \0362  "
        !          31812: o'     60      2       243
        !          31813: \0363  "
        !          31814: o^     60      2       244
        !          31815: \0364  "
        !          31816: o~     60      2       245
        !          31817: \0365  "
        !          31818: o"     60      2       246
        !          31819: \0366  "
        !          31820: -:     60      2       247
        !          31821: \0367  "
        !          31822: o/     60      0       248
        !          31823: \0370  "
        !          31824: u`     60      2       249
        !          31825: \0371  "
        !          31826: u'     60      2       250
        !          31827: \0372  "
        !          31828: u^     60      2       251
        !          31829: \0373  "
        !          31830: u"     60      2       252
        !          31831: \0374  "
        !          31832: y'     60      3       253
        !          31833: \0375  "
        !          31834: th     60      3       254
        !          31835: \0376  "
        !          31836: y"     60      3       255
        !          31837: \0377  "
        !          31838: ^a     60      2       147
        !          31839: ~a     60      2       148
        !          31840: Ua     60      2       150
        !          31841: .a     60      2       151
        !          31842: oa     60      2       154
        !          31843: "a     60      2       157
        !          31844: Ca     60      1       158
        !          31845: va     60      2       159
        !          31846: 0707070014231124041006440057030057030000010445600522627501700002600000005570post.src/devLatin1/ZDname ZD
        !          31847: fontname ZapfDingbats
        !          31848: named in prologue
        !          31849: charset
        !          31850: !      97      2       33
        !          31851: "      96      2       34
        !          31852: #      97      2       35
        !          31853: $      98      3       36
        !          31854: %      72      2       37
        !          31855: &      79      3       38
        !          31856: '      79      3       39
        !          31857: (      79      3       40
        !          31858: )      69      2       41
        !          31859: *      96      2       42
        !          31860: +      94      2       43
        !          31861: ,      55      3       44
        !          31862: -      86      2       45
        !          31863: .      91      2       46
        !          31864: /      93      2       47
        !          31865: 0      91      2       48
        !          31866: 1      95      2       49
        !          31867: 2      97      2       50
        !          31868: 3      76      3       51
        !          31869: 4      85      3       52
        !          31870: 5      76      2       53
        !          31871: 6      76      2       54
        !          31872: 7      57      3       55
        !          31873: 8      68      3       56
        !          31874: 9      76      2       57
        !          31875: :      76      2       58
        !          31876: ;      76      2       59
        !          31877: <      75      3       60
        !          31878: =      49      2       61
        !          31879: >      55      2       62
        !          31880: ?      54      3       63
        !          31881: @      58      2       64
        !          31882: A      69      3       65
        !          31883: B      79      3       66
        !          31884: C      79      3       67
        !          31885: D      79      3       68
        !          31886: E      79      3       69
        !          31887: F      79      3       70
        !          31888: G      79      3       71
        !          31889: H      82      3       72
        !          31890: I      82      3       73
        !          31891: J      79      3       74
        !          31892: K      84      3       75
        !          31893: L      82      3       76
        !          31894: M      83      3       77
        !          31895: N      82      3       78
        !          31896: O      83      3       79
        !          31897: P      92      3       80
        !          31898: Q      74      2       81
        !          31899: R      72      2       82
        !          31900: S      75      2       83
        !          31901: T      79      3       84
        !          31902: U      79      3       85
        !          31903: V      70      3       86
        !          31904: W      78      3       87
        !          31905: X      77      3       88
        !          31906: Y      79      3       89
        !          31907: Z      76      2       90
        !          31908: [      71      3       91
        !          31909: \      71      3       92
        !          31910: ]      68      3       93
        !          31911: ^      70      3       94
        !          31912: _      83      3       95
        !          31913: `      82      3       96
        !          31914: a      79      3       97
        !          31915: b      79      3       98
        !          31916: c      71      3       99
        !          31917: d      69      2       100
        !          31918: e      70      2       101
        !          31919: f      69      2       102
        !          31920: g      79      3       103
        !          31921: h      79      3       104
        !          31922: i      71      3       105
        !          31923: j      79      3       106
        !          31924: k      79      3       107
        !          31925: l      79      3       108
        !          31926: m      87      3       109
        !          31927: n      76      2       110
        !          31928: o      76      2       111
        !          31929: p      76      2       112
        !          31930: q      76      3       113
        !          31931: r      76      3       114
        !          31932: s      89      2       115
        !          31933: t      89      3       116
        !          31934: u      79      3       117
        !          31935: v      78      3       118
        !          31936: w      44      3       119
        !          31937: x      14      2       120
        !          31938: y      28      2       121
        !          31939: z      42      2       122
        !          31940: {      39      2       123
        !          31941: |      39      2       124
        !          31942: }      67      2       125
        !          31943: ~      67      2       126
        !          31944: \`     28      0       145
        !          31945: !!     73      3       161
        !          31946: \0241  "
        !          31947: c|     54      3       162
        !          31948: \0242  "
        !          31949: L-     54      3       163
        !          31950: \0243  "
        !          31951: xo     91      2       164
        !          31952: \0244  "
        !          31953: Y-     67      3       165
        !          31954: \0245  "
        !          31955: ||     76      3       166
        !          31956: \0246  "
        !          31957: so     76      2       167
        !          31958: \0247  "
        !          31959: ""     78      2       168
        !          31960: \0250  "
        !          31961: co     60      3       169
        !          31962: \0251  "
        !          31963: a_     69      3       170
        !          31964: \0252  "
        !          31965: <<     63      3       171
        !          31966: \0253  "
        !          31967: -,     79      3       172
        !          31968: \0254  "
        !          31969: hy     79      3       173
        !          31970: \0255  "
        !          31971: ro     79      3       174
        !          31972: \0256  "
        !          31973: -^     79      3       175
        !          31974: \0257  "
        !          31975: 0^     79      3       176
        !          31976: \0260  "
        !          31977: +-     79      3       177
        !          31978: \0261  "
        !          31979: 2^     79      3       178
        !          31980: \0262  "
        !          31981: 3^     79      3       179
        !          31982: \0263  "
        !          31983: \'     79      3       180
        !          31984: \0264  "
        !          31985: /u     79      3       181
        !          31986: \0265  "
        !          31987: P!     79      3       182
        !          31988: \0266  "
        !          31989: .^     79      3       183
        !          31990: \0267  "
        !          31991: ,,     79      3       184
        !          31992: \0270  "
        !          31993: 1^     79      3       185
        !          31994: \0271  "
        !          31995: o_     79      3       186
        !          31996: \0272  "
        !          31997: >>     79      3       187
        !          31998: \0273  "
        !          31999: 14     79      3       188
        !          32000: \0274  "
        !          32001: 12     79      3       189
        !          32002: \0275  "
        !          32003: 34     79      3       190
        !          32004: \0276  "
        !          32005: ??     79      3       191
        !          32006: \0277  "
        !          32007: A`     79      3       192
        !          32008: \0300  "
        !          32009: A'     79      3       193
        !          32010: \0301  "
        !          32011: A^     79      3       194
        !          32012: \0302  "
        !          32013: A~     79      3       195
        !          32014: \0303  "
        !          32015: A"     79      3       196
        !          32016: \0304  "
        !          32017: A*     79      3       197
        !          32018: \0305  "
        !          32019: AE     79      3       198
        !          32020: \0306  "
        !          32021: C,     79      3       199
        !          32022: \0307  "
        !          32023: E`     79      3       200
        !          32024: \0310  "
        !          32025: E'     79      3       201
        !          32026: \0311  "
        !          32027: E^     79      3       202
        !          32028: \0312  "
        !          32029: E"     79      3       203
        !          32030: \0313  "
        !          32031: I`     79      3       204
        !          32032: \0314  "
        !          32033: I'     79      3       205
        !          32034: \0315  "
        !          32035: I^     79      3       206
        !          32036: \0316  "
        !          32037: I"     79      3       207
        !          32038: \0317  "
        !          32039: D-     79      3       208
        !          32040: \0320  "
        !          32041: N~     79      3       209
        !          32042: \0321  "
        !          32043: O`     79      3       210
        !          32044: \0322  "
        !          32045: O'     79      3       211
        !          32046: \0323  "
        !          32047: O^     89      2       212
        !          32048: \0324  "
        !          32049: O~     84      2       213
        !          32050: \0325  "
        !          32051: O"     102     2       214
        !          32052: \0326  "
        !          32053: xx     46      3       215
        !          32054: \0327  "
        !          32055: O/     75      2       216
        !          32056: \0330  "
        !          32057: U`     92      2       217
        !          32058: \0331  "
        !          32059: U'     75      2       218
        !          32060: \0332  "
        !          32061: U^     92      2       219
        !          32062: \0333  "
        !          32063: U"     93      2       220
        !          32064: \0334  "
        !          32065: Y'     93      2       221
        !          32066: \0335  "
        !          32067: TH     93      2       222
        !          32068: \0336  "
        !          32069: ss     83      2       223
        !          32070: \0337  "
        !          32071: a`     87      2       224
        !          32072: \0340  "
        !          32073: a'     83      2       225
        !          32074: \0341  "
        !          32075: a^     92      2       226
        !          32076: \0342  "
        !          32077: a~     92      2       227
        !          32078: \0343  "
        !          32079: a"     92      2       228
        !          32080: \0344  "
        !          32081: a*     93      2       229
        !          32082: \0345  "
        !          32083: ae     93      2       230
        !          32084: \0346  "
        !          32085: c,     46      3       231
        !          32086: \0347  "
        !          32087: e`     88      2       232
        !          32088: \0350  "
        !          32089: e'     84      2       233
        !          32090: \0351  "
        !          32091: e^     84      2       234
        !          32092: \0352  "
        !          32093: e"     87      2       235
        !          32094: \0353  "
        !          32095: i`     87      2       236
        !          32096: \0354  "
        !          32097: i'     70      2       237
        !          32098: \0355  "
        !          32099: i^     70      2       238
        !          32100: \0356  "
        !          32101: i"     87      2       239
        !          32102: \0357  "
        !          32103: d-     28      0       240
        !          32104: \0360  "
        !          32105: n~     87      2       241
        !          32106: \0361  "
        !          32107: o`     76      2       242
        !          32108: \0362  "
        !          32109: o'     95      2       243
        !          32110: \0363  "
        !          32111: o^     77      2       244
        !          32112: \0364  "
        !          32113: o~     87      2       245
        !          32114: \0365  "
        !          32115: o"     77      2       246
        !          32116: \0366  "
        !          32117: -:     89      3       247
        !          32118: \0367  "
        !          32119: o/     97      2       248
        !          32120: \0370  "
        !          32121: u`     89      3       249
        !          32122: \0371  "
        !          32123: u'     83      2       250
        !          32124: \0372  "
        !          32125: u^     87      2       251
        !          32126: \0373  "
        !          32127: u"     93      2       252
        !          32128: \0374  "
        !          32129: y'     97      2       253
        !          32130: \0375  "
        !          32131: th     92      2       254
        !          32132: \0376  "
        !          32133: y"     28      0       255
        !          32134: \0377  "
        !          32135: 0707070014231124051006440057030057030000010440470522627501700002600000001145post.src/devLatin1/GRname GR
        !          32136: fontname Symbol
        !          32137: named in prologue
        !          32138: spacewidth 25
        !          32139: charset
        !          32140: *A     72      2       65
        !          32141: *B     67      2       66
        !          32142: *X     72      2       67
        !          32143: *D     61      2       68
        !          32144: *E     61      2       69
        !          32145: *F     76      2       70
        !          32146: *G     60      2       71
        !          32147: *Y     72      2       72
        !          32148: *I     33      2       73
        !          32149: *K     72      2       75
        !          32150: *L     69      2       76
        !          32151: *M     89      2       77
        !          32152: *N     72      2       78
        !          32153: *O     72      2       79
        !          32154: *P     77      2       80
        !          32155: *H     74      2       81
        !          32156: *R     56      2       82
        !          32157: *S     59      2       83
        !          32158: *T     61      2       84
        !          32159: *U     69      2       85
        !          32160: *W     77      2       87
        !          32161: *C     65      2       88
        !          32162: *Q     80      2       89
        !          32163: *Z     61      2       90
        !          32164: *a     63      0       97
        !          32165: *b     55      3       98
        !          32166: *x     55      1       99
        !          32167: *d     49      2       100
        !          32168: *e     44      0       101
        !          32169: *f     52      3       102
        !          32170: *g     41      1       103
        !          32171: *y     60      1       104
        !          32172: *i     33      0       105
        !          32173: *k     55      0       107
        !          32174: *l     55      2       108
        !          32175: *m     58      1       109
        !          32176: *n     52      0       110
        !          32177: *o     55      0       111
        !          32178: *p     55      0       112
        !          32179: *h     52      2       113
        !          32180: *r     55      1       114
        !          32181: *s     60      0       115
        !          32182: *t     44      0       116
        !          32183: *u     58      0       117
        !          32184: *w     69      0       119
        !          32185: *c     49      3       120
        !          32186: *q     69      1       121
        !          32187: *z     49      3       122
        !          32188: 0707070014231124061006440057030057030000010445630522627501700002500000004376post.src/devLatin1/Sname S
        !          32189: fontname Symbol
        !          32190: named in prologue
        !          32191: special
        !          32192: charset
        !          32193: ---    33      2       33
        !          32194: fa     71      2       34
        !          32195: ---    50      2       35
        !          32196: te     55      2       36
        !          32197: ---    83      2       37
        !          32198: ---    78      2       38
        !          32199: st     44      0       39
        !          32200: ---    33      3       40
        !          32201: ---    33      3       41
        !          32202: **     50      2       42
        !          32203: pl     55      0       43
        !          32204: ---    25      1       44
        !          32205: mi     55      0       45
        !          32206: ---    25      0       46
        !          32207: sl     28      2       47
        !          32208: ---    50      2       48
        !          32209: ---    50      2       49
        !          32210: ---    50      2       50
        !          32211: ---    50      2       51
        !          32212: ---    50      2       52
        !          32213: ---    50      2       53
        !          32214: ---    50      2       54
        !          32215: ---    50      2       55
        !          32216: ---    50      2       56
        !          32217: ---    50      2       57
        !          32218: ---    28      0       58
        !          32219: ---    28      1       59
        !          32220: <      55      0       60
        !          32221: eq     55      0       61
        !          32222: >      55      0       62
        !          32223: ---    44      2       63
        !          32224: cg     55      0       64
        !          32225: *A     72      2       65
        !          32226: *B     67      2       66
        !          32227: *X     72      2       67
        !          32228: *D     61      2       68
        !          32229: *E     61      2       69
        !          32230: *F     76      2       70
        !          32231: *G     60      2       71
        !          32232: *Y     72      2       72
        !          32233: *I     33      2       73
        !          32234: ---    63      2       74
        !          32235: *K     72      2       75
        !          32236: *L     69      2       76
        !          32237: *M     89      2       77
        !          32238: *N     72      2       78
        !          32239: *O     72      2       79
        !          32240: *P     77      2       80
        !          32241: *H     74      2       81
        !          32242: *R     56      2       82
        !          32243: *S     59      2       83
        !          32244: *T     61      2       84
        !          32245: *U     69      2       85
        !          32246: ts     44      1       86
        !          32247: *W     77      2       87
        !          32248: *C     65      2       88
        !          32249: *Q     80      2       89
        !          32250: *Z     61      2       90
        !          32251: ---    33      3       91
        !          32252: tf     86      0       92
        !          32253: ---    33      3       93
        !          32254: pp     66      2       94
        !          32255: ul     50      1       95
        !          32256: _      "
        !          32257: rn     50      2       96
        !          32258: *a     63      0       97
        !          32259: *b     55      3       98
        !          32260: *x     55      1       99
        !          32261: *d     49      2       100
        !          32262: *e     44      0       101
        !          32263: *f     52      3       102
        !          32264: *g     41      1       103
        !          32265: *y     60      1       104
        !          32266: *i     33      0       105
        !          32267: ---    60      1       106
        !          32268: *k     55      0       107
        !          32269: *l     55      2       108
        !          32270: *m     58      1       109
        !          32271: *n     52      0       110
        !          32272: *o     55      0       111
        !          32273: *p     55      0       112
        !          32274: *h     52      2       113
        !          32275: *r     55      1       114
        !          32276: *s     60      0       115
        !          32277: *t     44      0       116
        !          32278: *u     58      0       117
        !          32279: ---    71      2       118
        !          32280: *w     69      0       119
        !          32281: *c     49      3       120
        !          32282: *q     69      1       121
        !          32283: *z     49      3       122
        !          32284: ---    48      3       123
        !          32285: or     20      3       124
        !          32286: ---    48      3       125
        !          32287: ap     55      0       126
        !          32288: ---    62      2       161
        !          32289: fm     25      2       162
        !          32290: <=     55      2       163
        !          32291: fr     17      2       164
        !          32292: if     73      0       165
        !          32293: fn     50      3       166
        !          32294: ---    75      0       167
        !          32295: ---    75      2       168
        !          32296: ---    75      0       169
        !          32297: ---    75      2       170
        !          32298: ab     104     0       171
        !          32299: <-     99      0       172
        !          32300: ua     60      2       173
        !          32301: ->     99      0       174
        !          32302: da     60      2       175
        !          32303: de     40      2       176
        !          32304: +-     55      2       177
        !          32305: ---    41      2       178
        !          32306: >=     55      2       179
        !          32307: mu     55      0       180
        !          32308: pt     71      0       181
        !          32309: pd     49      2       182
        !          32310: bu     46      0       183
        !          32311: di     55      0       184
        !          32312: !=     55      2       185
        !          32313: ==     55      0       186
        !          32314: ~~     55      0       187
        !          32315: el     100     0       188
        !          32316: av     60      3       189
        !          32317: ah     100     0       190
        !          32318: CR     66      2       191
        !          32319: af     82      2       192
        !          32320: If     69      2       193
        !          32321: Rf     80      2       194
        !          32322: ws     99      3       195
        !          32323: Ox     77      2       196
        !          32324: O+     77      2       197
        !          32325: es     82      2       198
        !          32326: ca     77      0       199
        !          32327: cu     77      0       200
        !          32328: sp     71      0       201
        !          32329: ip     71      1       202
        !          32330: !b     71      0       203
        !          32331: sb     71      0       204
        !          32332: ib     71      1       205
        !          32333: mo     71      0       206
        !          32334: !m     71      2       207
        !          32335: an     77      2       208
        !          32336: gr     71      2       209
        !          32337: rg     79      2       210
        !          32338: co     79      2       211
        !          32339: tm     89      2       212
        !          32340: ---    82      2       213
        !          32341: sr     55      2       214
        !          32342: c.     25      0       215
        !          32343: no     71      0       216
        !          32344: l&     60      0       217
        !          32345: l|     60      0       218
        !          32346: ---    104     0       219
        !          32347: ---    99      0       220
        !          32348: ---    60      2       221
        !          32349: ---    99      0       222
        !          32350: ---    60      2       223
        !          32351: lz     49      2       224
        !          32352: b<     33      3       225
        !          32353: RG     79      2       226
        !          32354: CO     79      2       227
        !          32355: TM     79      2       228
        !          32356: ---    71      2       229
        !          32357: LT     38      3       230
        !          32358: br     0       3       231
        !          32359: LX     "
        !          32360: LB     38      3       232
        !          32361: lc     50      2       233
        !          32362: lx     38      2       234
        !          32363: lf     50      2       235
        !          32364: lt     49      2       236
        !          32365: lk     49      2       237
        !          32366: lb     49      2       238
        !          32367: bv     49      2       239
        !          32368: |      "
        !          32369: b>     33      3       241
        !          32370: is     50      3       242
        !          32371: ---    69      2       243
        !          32372: ---    69      2       244
        !          32373: ---    69      2       245
        !          32374: RT     38      3       246
        !          32375: RX     38      2       247
        !          32376: RB     38      3       248
        !          32377: rc     38      2       249
        !          32378: rx     50      3       250
        !          32379: rf     38      2       251
        !          32380: rt     49      2       252
        !          32381: rk     49      2       253
        !          32382: rb     49      2       254
        !          32383: ~=     55      0       1
        !          32384: 0707070014231124071006440057030057030000010441260522627501700002600000000561post.src/devLatin1/S1# Times-Roman special font
        !          32385: name S1
        !          32386: fontname Times-Roman
        !          32387: named in prologue
        !          32388: special
        !          32389: charset
        !          32390: ru     50      0       95
        !          32391: ''     44      0       186
        !          32392: ``     44      0       170
        !          32393: dg     50      0       178
        !          32394: dd     50      0       179
        !          32395: en     65      0       177
        !          32396: \-     "
        !          32397: em     100     0       208
        !          32398: 14     75      2       1
        !          32399: 12     75      2       1
        !          32400: 34     75      2       1
        !          32401: bx     50      2       1
        !          32402: ob     38      2       1
        !          32403: ci     75      0       1
        !          32404: sq     50      2       1
        !          32405: Sl     50      2       1
        !          32406: L1     110     1       1
        !          32407: LA     110     1       1
        !          32408: LV     110     3       1
        !          32409: LH     210     1       1
        !          32410: lh     100     0       1
        !          32411: rh     100     0       1
        !          32412: lH     100     0       1
        !          32413: rH     100     0       1
        !          32414: PC     220     2       1
        !          32415: DG     185     2       1
        !          32416: 0707070014231124101006440057030057030000010445660522627501700003000000002272post.src/devLatin1/DESC#Device Description - Latin1 character set
        !          32417: 
        !          32418: PDL PostScript
        !          32419: Encoding Latin1
        !          32420: 
        !          32421: fonts 10 R I B BI CW H HI HB S1 S
        !          32422: sizes 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
        !          32423: 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 40 42 44 46
        !          32424: 48 50 52 54 56 58 60 64 68 72 78 84 90 96 100 105 110 115
        !          32425: 120 125 130 135 140 145 150 155 160 0
        !          32426: res 720
        !          32427: hor 1
        !          32428: vert 1
        !          32429: unitwidth 10
        !          32430: 
        !          32431: charset
        !          32432: dq bs \` ga !! c| ct L- ps xo cr Y- yn || so sc "" :a co a_
        !          32433: << -, hy -- ro rg -^ -a 0^ +- 2^ 3^ \' aa /u P! pg .^ ,, ,a
        !          32434: 1^ o_ >> 14 12 34 ?? A` A' A^ A~ A" A* AE C, E` E' E^ E" I`
        !          32435: I' I^ I" D- N~ O` O' O^ O~ O" xx O/ U` U' U^ U" Y' TH ss a`
        !          32436: a' a^ a~ a" a* ae c, e` e' e^ e" i` i' i^ i" d- n~ o` o' o^
        !          32437: o~ o" -: o/ u` u' u^ u" y' th y" ^a ~a Ua .a oa "a Ca va fa
        !          32438: te st ** pl mi sl eq cg *A *B *X *D *E *F *G *Y *I *K *L *M
        !          32439: *N *O *P *H *R *S *T *U ts *W *C *Q *Z tf pp ul rn *a *b *x
        !          32440: *d *e *f *g *y *i *k *l *m *n *o *p *h *r *s *t *u *w *c *q
        !          32441: *z or ap fm <= fr if fn ab <- ua -> da de >= mu pt pd bu di
        !          32442: != == ~~ el av ah CR af If Rf ws Ox O+ es ca cu sp ip !b sb
        !          32443: ib mo !m an gr tm sr c. no l& l| lz b< RG CO TM LT br LX LB
        !          32444: lc lx lf lt lk lb bv b> is RT RX RB rc rx rf rt rk rb ~= ru
        !          32445: '' `` dg dd en \- em bx ob ci sq Sl L1 LA LV LH lh rh lH rH
        !          32446: PC DG 
        !          32447: 0707070014231122341006400057030057030000010446060522633073400004000000003061post.src/devLatin1/devLatin1.mkMAKE=/bin/make
        !          32448: MAKEFILE=devLatin1.mk
        !          32449: 
        !          32450: SYSTEM=V9
        !          32451: VERSION=3.3.2
        !          32452: 
        !          32453: GROUP=bin
        !          32454: OWNER=bin
        !          32455: 
        !          32456: FONTDIR=/usr/lib/font
        !          32457: FONTFILES=DESC ? ?? [A-Z]??* shell.lib
        !          32458: 
        !          32459: all :
        !          32460:        @if [ -r LINKFILE ]; then sh LINKFILE; fi;
        !          32461: 
        !          32462: install : all
        !          32463:        @if [ ! -d $(FONTDIR) ]; then \
        !          32464:            mkdir $(FONTDIR); \
        !          32465:            chmod 755 $(FONTDIR); \
        !          32466:            chgrp $(GROUP) $(FONTDIR); \
        !          32467:            chown $(OWNER) $(FONTDIR); \
        !          32468:        fi
        !          32469:        @if [ ! -d $(FONTDIR)/devLatin1 ]; then \
        !          32470:            mkdir $(FONTDIR)/devLatin1; \
        !          32471:            chmod 755 $(FONTDIR)/devLatin1; \
        !          32472:            chgrp $(GROUP) $(FONTDIR)/devLatin1; \
        !          32473:            chown $(OWNER) $(FONTDIR)/devLatin1; \
        !          32474:        fi
        !          32475:        @if [ ! -d $(FONTDIR)/devLatin1/charlib ]; then \
        !          32476:            mkdir $(FONTDIR)/devLatin1/charlib; \
        !          32477:            chmod 755 $(FONTDIR)/devLatin1/charlib; \
        !          32478:            chgrp $(GROUP) $(FONTDIR)/devLatin1/charlib; \
        !          32479:            chown $(OWNER) $(FONTDIR)/devLatin1/charlib; \
        !          32480:        fi
        !          32481:        cp $(FONTFILES) $(FONTDIR)/devLatin1
        !          32482:        @for i in $(FONTFILES); do \
        !          32483:            chmod 644 $(FONTDIR)/devLatin1/$$i; \
        !          32484:            chgrp $(GROUP) $(FONTDIR)/devLatin1/$$i; \
        !          32485:            chown $(OWNER) $(FONTDIR)/devLatin1/$$i; \
        !          32486:        done
        !          32487:        cp charlib/* $(FONTDIR)/devLatin1/charlib
        !          32488:        @for i in charlib/*; do \
        !          32489:            chmod 644 $(FONTDIR)/devLatin1/$$i; \
        !          32490:            chgrp $(GROUP) $(FONTDIR)/devLatin1/$$i; \
        !          32491:            chown $(OWNER) $(FONTDIR)/devLatin1/$$i; \
        !          32492:        done
        !          32493: 
        !          32494: clean :
        !          32495: 
        !          32496: clobber : clean
        !          32497: 
        !          32498: changes :
        !          32499:        @trap "" 1 2 3 15; \
        !          32500:        sed \
        !          32501:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
        !          32502:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
        !          32503:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          32504:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          32505:            -e "s'^FONTDIR=.*'FONTDIR=$(FONTDIR)'" \
        !          32506:        $(MAKEFILE) >XXX.mk; \
        !          32507:        mv XXX.mk $(MAKEFILE)
        !          32508: 
        !          32509: 0707070014230454610407550057030057030000021337270522627502100003300000000000post.src/devLatin1/charlib0707070014230454621006440057030057030000011340060522627501700003600000000421post.src/devLatin1/charlib/12/build_12 {
        !          32510:     pop
        !          32511:     /optsize ptsize def
        !          32512:     /osize size def
        !          32513:     /ofont font def
        !          32514: 
        !          32515:     optsize 2 div dup R exch R f
        !          32516:     0 size 2 mul 3 div dup neg exch 0 exch rmoveto
        !          32517: 
        !          32518:     (1) show
        !          32519:     rmoveto
        !          32520:     optsize R f
        !          32521:     (\244) show
        !          32522:     f
        !          32523:     (2) show
        !          32524: 
        !          32525:     optsize ofont f
        !          32526: } def
        !          32527: 0707070014230454631006440057030057030000011340070522627502000003600000000421post.src/devLatin1/charlib/14/build_14 {
        !          32528:     pop
        !          32529:     /optsize ptsize def
        !          32530:     /osize size def
        !          32531:     /ofont font def
        !          32532: 
        !          32533:     optsize 2 div dup R exch R f
        !          32534:     0 size 2 mul 3 div dup neg exch 0 exch rmoveto
        !          32535: 
        !          32536:     (1) show
        !          32537:     rmoveto
        !          32538:     optsize R f
        !          32539:     (\244) show
        !          32540:     f
        !          32541:     (4) show
        !          32542: 
        !          32543:     optsize ofont f
        !          32544: } def
        !          32545: 0707070014230454641006440057030057030000011347160522627502000003600000000421post.src/devLatin1/charlib/34/build_34 {
        !          32546:     pop
        !          32547:     /optsize ptsize def
        !          32548:     /osize size def
        !          32549:     /ofont font def
        !          32550: 
        !          32551:     optsize 2 div dup R exch R f
        !          32552:     0 size 2 mul 3 div dup neg exch 0 exch rmoveto
        !          32553: 
        !          32554:     (3) show
        !          32555:     rmoveto
        !          32556:     optsize R f
        !          32557:     (\244) show
        !          32558:     f
        !          32559:     (4) show
        !          32560: 
        !          32561:     optsize ofont f
        !          32562: } def
        !          32563: 0707070014230454651006440057030057030000011347300522627502000003600000012536post.src/devLatin1/charlib/L1/LOGO-dict-mm dup where not
        !          32564: { dup 64 dict def currentdict } if
        !          32565: exch get
        !          32566: begin
        !          32567: /globesetup {
        !          32568: /r exch def
        !          32569: /N exch def
        !          32570: /d 2 N r mul N 1 sub add div def
        !          32571: /h d r mul def
        !          32572: } def
        !          32573: /mkabs {
        !          32574: /yp exch def
        !          32575: /xl exch def
        !          32576: dup dup 0 get xl mul 0 exch put
        !          32577: dup dup 1 get h mul yp add 1 exch put
        !          32578: dup dup 2 get xl mul 2 exch put
        !          32579: dup dup 3 get h mul yp add 3 exch put
        !          32580: dup dup 4 get xl mul 4 exch put
        !          32581: dup dup 5 get h mul yp add 5 exch put
        !          32582: } def
        !          32583: /topsegment {
        !          32584: /n exch def
        !          32585: /y n r mul n .5 add add d mul def
        !          32586: /a y 1 y dup mul sub sqrt atan def
        !          32587: /x a cos def
        !          32588: /c2 exch x y mkabs def
        !          32589: /ly1 exch h mul y add def
        !          32590: /lx1 exch x abs mul def
        !          32591: /c1 exch x y mkabs def
        !          32592: x y /moveto load
        !          32593: 0 0 1 a 180 a sub /arc load
        !          32594: c1 aload pop /curveto load
        !          32595: lx1 ly1 /lineto load
        !          32596: c2 aload pop /curveto load
        !          32597: /closepath load
        !          32598: } def
        !          32599: /botsegment {
        !          32600: /n exch 1 add def
        !          32601: /y n r mul n .5 sub add d mul def
        !          32602: /a y 1 y dup mul sub sqrt atan def
        !          32603: /x a cos def
        !          32604: /c2 exch x y mkabs def
        !          32605: /ly1 exch h mul y add def
        !          32606: /lx1 exch x abs mul def
        !          32607: /c1 exch x y mkabs def
        !          32608: x y /moveto load
        !          32609: 0 0 1 a 540 a sub /arcn load
        !          32610: c1 aload pop /curveto load
        !          32611: lx1 ly1 /lineto load
        !          32612: c2 aload pop /curveto load
        !          32613: /closepath load
        !          32614: } def
        !          32615: /segment {
        !          32616: /n exch def
        !          32617: /dh exch 1 exch sub 2 div def
        !          32618: /ylb n r mul n 0.5 add add d mul def
        !          32619: /ylt ylb h add def
        !          32620: /yrb ylb h dh mul add def
        !          32621: /yrt ylt h dh mul sub def
        !          32622: /alb ylb 1 ylb dup mul sub sqrt atan def
        !          32623: /alt ylt 1 ylt dup mul sub sqrt atan def
        !          32624: /arb yrb 1 yrb dup mul sub sqrt atan 180 exch sub def
        !          32625: /art yrt 1 yrt dup mul sub sqrt atan 180 exch sub def
        !          32626: /xlb alb cos def
        !          32627: /xlt alt cos def
        !          32628: /xrb arb cos def
        !          32629: /xrt art cos def
        !          32630: /c4 exch xrb abs ylb mkabs def
        !          32631: /ly2 exch h mul ylb add def
        !          32632: /lx2 exch xrb abs mul def
        !          32633: /c3 exch xrb abs ylb mkabs def
        !          32634: /c2 exch xrt abs ylt mkabs def
        !          32635: /ly1 exch h mul ylt add def
        !          32636: /lx1 exch xrt abs mul def
        !          32637: /c1 exch xrt abs ylt mkabs def
        !          32638: xlb ylb /moveto load
        !          32639: 0 0 1 alb alt /arc load
        !          32640: c2 4 get c2 5 get /lineto load
        !          32641: c2 2 get c2 3 get
        !          32642: c2 0 get c2 1 get
        !          32643: lx1 ly1        /curveto load
        !          32644: c1 4 get c1 5 get /lineto load
        !          32645: c1 2 get c1 3 get
        !          32646: c1 0 get c1 1 get
        !          32647: xrt yrt /curveto load
        !          32648: 0 0 1 art arb /arc load
        !          32649: c3 aload pop /curveto load
        !          32650: lx2 ly2 /lineto load
        !          32651: c4 aload pop /curveto load
        !          32652: /closepath load
        !          32653: } def
        !          32654: 8 2.5 globesetup
        !          32655: /globe8 [
        !          32656: /newpath load
        !          32657: [ -.9   .1  -.6   .2  -.5   .2  ] -.5   .2  [ -.4   .2   .0  .0  .4  .0 ] 3 topsegment
        !          32658: [ -.9  -.35 -.85 -.35 -.8  -.35 ] -.1  -.35 [  .1  -.35  .3  .0  .5  .0 ]
        !          32659: [ -.8   .35 -.75  .35 -.7   .35 ] -.1   .35 [  .1   .35  .4  .0  .55 .0 ] .55 2 segment
        !          32660: [ -.8  -.35 -.75 -.35 -.7  -.35 ]  .05 -.35 [  .2  -.35  .4  .0  .55 .0 ]
        !          32661: [ -.8   .35 -.75  .35 -.7   .35 ]  .05  .35 [  .2   .35  .45 .0  .6  .0 ] .7  1 segment
        !          32662: [ -.8  -.35 -.75 -.35 -.7  -.35 ]  .0  -.35 [  .15 -.35  .4  .0  .6  .0 ]
        !          32663: [ -.8   .35 -.75  .35 -.7   .35 ]  .0   .35 [  .15  .35  .4  .0  .6  .0 ] .7  0 segment
        !          32664: [ -.7  -.35 -.65 -.35 -.6  -.35 ] -.1  -.35 [  .05 -.35  .35 .0  .55 .0 ]
        !          32665: [ -.7   .35 -.65  .35 -.6   .35 ] -.1   .35 [  .05  .35  .25 .0  .4  .0 ] .8 -1 segment
        !          32666: [ -.65 -.2  -.55 -.2 -.45  -.2  ] -.3   -.2 [ -.2  -.2   .2  .0  .3  .0 ]
        !          32667: [ -.65  .1  -.55  .1 -.45   .1  ] -.45  .1  [ -.3   .1  -.1  .0  .0  .0 ] .96 -2 segment
        !          32668: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
        !          32669: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]  1 -3 segment
        !          32670: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] -4 botsegment
        !          32671: ] cvx def
        !          32672: 12 3 globesetup
        !          32673: /globe12 [
        !          32674: /newpath load
        !          32675: [ -.8   .2  -.7  .25 -.5   .25 ] -.4  .25 [ -.2   .25  .0  .0  .2  .0 ] 5 topsegment
        !          32676: [ -.7  -.35 -.7 -.35 -.6  -.35 ] -.3 -.35 [ -.1  -.35  .3  .0  .55 .0 ]
        !          32677: [ -.7   .35 -.7  .35 -.6   .35 ] -.25 .35 [ -.05  .35  .4  .0  .55 .0 ] .6  4 segment
        !          32678: [ -.8  -.35 -.7 -.35 -.6  -.35 ] -.1 -.35 [  .1  -.35  .4  .0  .5  .0 ]
        !          32679: [ -.8   .35 -.7  .35 -.6   .35 ] -.1  .35 [  .1   .35  .4  .0  .5  .0 ] .7  3 segment
        !          32680: [ -.8  -.35 -.7 -.35 -.6  -.35 ]  .0 -.35 [  .1  -.35  .45 .0  .55 .0 ]
        !          32681: [ -.8   .35 -.7  .35 -.6   .35 ]  .0  .35 [  .15  .35  .4  .0  .5  .0 ] .8  2 segment
        !          32682: [ -.75 -.35 -.7 -.35 -.6  -.35 ]  .0 -.35 [  .2  -.35  .4  .0  .5  .0 ]
        !          32683: [ -.75  .35 -.7  .35 -.6   .35 ]  .0  .35 [  .2   .35  .45 .0  .55 .0 ] .9  1 segment
        !          32684: [ -.7  -.35 -.6 -.35 -.55 -.35 ]  .0 -.35 [  .1  -.35  .45 .0  .55 .0 ]
        !          32685: [ -.7   .35 -.6  .35 -.55  .35 ]  .0  .35 [  .1   .35  .5  .0  .6  .0 ] .9  0 segment
        !          32686: ] cvx
        !          32687: [
        !          32688: [ -.7 -.35 -.6 -.35 -.5  -.35 ] -.15 -.35 [  .0  -.35  .4  .0  .5  .0 ]
        !          32689: [ -.65 .35 -.55 .35 -.45  .35 ] -.15  .35 [  .0   .35  .35 .0  .45 .0 ] .9 -1 segment
        !          32690: [ -.8 -.1  -.5 -.3  -.4  -.3  ] -.2  -.3  [  .0  -.3   .3  .0  .4  .0 ]
        !          32691: [ -.8  .1  -.5  .3  -.4   .3  ] -.2   .3  [  .0   .3   .2  .0  .3  .0 ] 1 -2 segment
        !          32692: [ -.7 -.1  -.5 -.15 -.4  -.15 ] -.3  -.15 [ -.2  -.15  .0  .0  .2  .0 ]
        !          32693: [ -.7  .05 -.5  .1  -.4   .1  ] -.4   .1  [ -.3   .1   .0  .0  .2  .0 ] 1 -3 segment
        !          32694: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
        !          32695: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] 1 -4 segment
        !          32696: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
        !          32697: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] 1 -5 segment
        !          32698: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] -6 botsegment
        !          32699: ] cvx
        !          32700: 4 array cvx
        !          32701: dup 0 5 -1 roll put
        !          32702: dup 1 /exec load put
        !          32703: dup 2 4 -1 roll put
        !          32704: dup 3 /exec load put
        !          32705: def
        !          32706: end
        !          32707: /build_L1 {
        !          32708: pop
        !          32709: LOGO-dict-mm begin
        !          32710: ptsize 29 lt
        !          32711: { /globe /globe8 load def }
        !          32712: { /globe /globe12 load def } ifelse
        !          32713: gsave
        !          32714: currentpoint translate
        !          32715: size 2 div dup scale
        !          32716: 1.02 1 transform round exch round exch itransform
        !          32717: translate
        !          32718: globe fill
        !          32719: grestore
        !          32720: end
        !          32721: } def
        !          32722: 0707070014230454661006440057030057030000011347170522627502000003600000000075post.src/devLatin1/charlib/Fi/build_Fi {
        !          32723:     pop
        !          32724:     size .05 mul neg 0 (ffi) ashow
        !          32725: } def
        !          32726: 0707070014230454671006440057030057030000011347360522627502000003600000000075post.src/devLatin1/charlib/Fl/build_Fl {
        !          32727:     pop
        !          32728:     size .05 mul neg 0 (ffl) ashow
        !          32729: } def
        !          32730: 0707070014230454701006440057030057030000011347370522627502000003600000001725post.src/devLatin1/charlib/LA/LOGO-dict-mm dup where not
        !          32731: { dup 64 dict def currentdict } if
        !          32732: exch get
        !          32733: begin
        !          32734: /l {  lineto } def
        !          32735: /rl {  rlineto } def
        !          32736: /m {  moveto } def
        !          32737: /rm {  rmoveto } def
        !          32738: /C { closepath } def
        !          32739: /c {  curveto } def
        !          32740: /rc {  rcurveto } def
        !          32741: /T { m 0 29 rl -9.5 0 rl 0 7 rl 29 0 rl 0 -7 rl -9.5 0 rl 0 -29 rl C } def
        !          32742: /ATT {
        !          32743: newpath
        !          32744: 1 36 div dup scale
        !          32745: 0  0 m  12 36 rl  8 0 rl -11 -36 rl C
        !          32746: 25  0 m -11 36 rl  8 0 rl  12 -36 rl C
        !          32747: 10  7 m   0  7 rl 14 0 rl   0  -7 rl C
        !          32748: 36  0 T
        !          32749: 80  6 m -3 0 -5 1.2 -6 2 rc -12 10 rl -2.4 2 -2.7 6 0 6 rc
        !          32750: 1 0 2 -1 2 -2 rc 0 -4 rl 7 0 rl 0 4 rl
        !          32751: 0 5 -3 7 -9 7 rc -6 0 -9 -3 -9 -7 rc
        !          32752: 0 -2 0 -3.6 2 -6 rc 12 -10 rl 6 -5 10 -6 13 -6 rc C
        !          32753: 71 18 m 0 -6 rl 0 -5 -3 -7 -7 -7 rc -3 0 -5 2 -5 4 rc 0 1 0 3 2 4 rc
        !          32754: -4 5 rl -4 -2 -6 -6 -6 -9 rc 0 -7 6 -10 13 -10 rc
        !          32755: 9 0 14 6 14 11 rc 0 8 rl C
        !          32756: 82  0 T
        !          32757: 36 dup scale
        !          32758: } def
        !          32759: end
        !          32760: /build_LA {
        !          32761: pop
        !          32762: LOGO-dict-mm begin
        !          32763: gsave
        !          32764: currentpoint translate
        !          32765: size 2.56 div dup scale                % was size 2.75 div dup scale
        !          32766: .02 0 translate
        !          32767: ATT fill
        !          32768: grestore
        !          32769: end
        !          32770: } def
        !          32771: 0707070014230454711006440057030057030000011347500522627502000003600000014673post.src/devLatin1/charlib/LH%
        !          32772: % PostScript 12 and 8 line logos - horizontal configuration. Switch occurs
        !          32773: % automatically below point size 29. Code from Matthijs Melchior.
        !          32774: %
        !          32775: 
        !          32776: /LOGO-dict-mm where not {
        !          32777:        64 dict /LOGO-dict-mm exch def
        !          32778: }{pop} ifelse
        !          32779: LOGO-dict-mm begin             % initialize dictionary
        !          32780: 
        !          32781: 
        !          32782: /globesetup {
        !          32783: /r exch def
        !          32784: /N exch def
        !          32785: /d 2 N r mul N 1 sub add div def
        !          32786: /h d r mul def
        !          32787: } def
        !          32788: /mkabs {
        !          32789: /yp exch def
        !          32790: /xl exch def
        !          32791: dup dup 0 get xl mul 0 exch put
        !          32792: dup dup 1 get h mul yp add 1 exch put
        !          32793: dup dup 2 get xl mul 2 exch put
        !          32794: dup dup 3 get h mul yp add 3 exch put
        !          32795: dup dup 4 get xl mul 4 exch put
        !          32796: dup dup 5 get h mul yp add 5 exch put
        !          32797: } def
        !          32798: /topsegment {
        !          32799: /n exch def
        !          32800: /y n r mul n .5 add add d mul def
        !          32801: /a y 1 y dup mul sub sqrt atan def
        !          32802: /x a cos def
        !          32803: /c2 exch x y mkabs def
        !          32804: /ly1 exch h mul y add def
        !          32805: /lx1 exch x abs mul def
        !          32806: /c1 exch x y mkabs def
        !          32807: x y /moveto load
        !          32808: 0 0 1 a 180 a sub /arc load
        !          32809: c1 aload pop /curveto load
        !          32810: lx1 ly1 /lineto load
        !          32811: c2 aload pop /curveto load
        !          32812: /closepath load
        !          32813: } def
        !          32814: /botsegment {
        !          32815: /n exch 1 add def
        !          32816: /y n r mul n .5 sub add d mul def
        !          32817: /a y 1 y dup mul sub sqrt atan def
        !          32818: /x a cos def
        !          32819: /c2 exch x y mkabs def
        !          32820: /ly1 exch h mul y add def
        !          32821: /lx1 exch x abs mul def
        !          32822: /c1 exch x y mkabs def
        !          32823: x y /moveto load
        !          32824: 0 0 1 a 540 a sub /arcn load
        !          32825: c1 aload pop /curveto load
        !          32826: lx1 ly1 /lineto load
        !          32827: c2 aload pop /curveto load
        !          32828: /closepath load
        !          32829: } def
        !          32830: /segment {
        !          32831: /n exch def
        !          32832: /dh exch 1 exch sub 2 div def
        !          32833: /ylb n r mul n 0.5 add add d mul def
        !          32834: /ylt ylb h add def
        !          32835: /yrb ylb h dh mul add def
        !          32836: /yrt ylt h dh mul sub def
        !          32837: /alb ylb 1 ylb dup mul sub sqrt atan def
        !          32838: /alt ylt 1 ylt dup mul sub sqrt atan def
        !          32839: /arb yrb 1 yrb dup mul sub sqrt atan 180 exch sub def
        !          32840: /art yrt 1 yrt dup mul sub sqrt atan 180 exch sub def
        !          32841: /xlb alb cos def
        !          32842: /xlt alt cos def
        !          32843: /xrb arb cos def
        !          32844: /xrt art cos def
        !          32845: /c4 exch xrb abs ylb mkabs def
        !          32846: /ly2 exch h mul ylb add def
        !          32847: /lx2 exch xrb abs mul def
        !          32848: /c3 exch xrb abs ylb mkabs def
        !          32849: /c2 exch xrt abs ylt mkabs def
        !          32850: /ly1 exch h mul ylt add def
        !          32851: /lx1 exch xrt abs mul def
        !          32852: /c1 exch xrt abs ylt mkabs def
        !          32853: xlb ylb /moveto load
        !          32854: 0 0 1 alb alt /arc load
        !          32855: c2 4 get c2 5 get /lineto load
        !          32856: c2 2 get c2 3 get
        !          32857: c2 0 get c2 1 get
        !          32858: lx1 ly1        /curveto load
        !          32859: c1 4 get c1 5 get /lineto load
        !          32860: c1 2 get c1 3 get
        !          32861: c1 0 get c1 1 get
        !          32862: xrt yrt /curveto load
        !          32863: 0 0 1 art arb /arc load
        !          32864: c3 aload pop /curveto load
        !          32865: lx2 ly2 /lineto load
        !          32866: c4 aload pop /curveto load
        !          32867: /closepath load
        !          32868: } def
        !          32869: 8 2.5 globesetup
        !          32870: /globe8 [
        !          32871: /newpath load
        !          32872: [ -.9   .1  -.6   .2  -.5   .2  ] -.5   .2  [ -.4   .2   .0  .0  .4  .0 ] 3 topsegment
        !          32873: [ -.9  -.35 -.85 -.35 -.8  -.35 ] -.1  -.35 [  .1  -.35  .3  .0  .5  .0 ]
        !          32874: [ -.8   .35 -.75  .35 -.7   .35 ] -.1   .35 [  .1   .35  .4  .0  .55 .0 ] .55 2 segment
        !          32875: [ -.8  -.35 -.75 -.35 -.7  -.35 ]  .05 -.35 [  .2  -.35  .4  .0  .55 .0 ]
        !          32876: [ -.8   .35 -.75  .35 -.7   .35 ]  .05  .35 [  .2   .35  .45 .0  .6  .0 ] .7  1 segment
        !          32877: [ -.8  -.35 -.75 -.35 -.7  -.35 ]  .0  -.35 [  .15 -.35  .4  .0  .6  .0 ]
        !          32878: [ -.8   .35 -.75  .35 -.7   .35 ]  .0   .35 [  .15  .35  .4  .0  .6  .0 ] .7  0 segment
        !          32879: [ -.7  -.35 -.65 -.35 -.6  -.35 ] -.1  -.35 [  .05 -.35  .35 .0  .55 .0 ]
        !          32880: [ -.7   .35 -.65  .35 -.6   .35 ] -.1   .35 [  .05  .35  .25 .0  .4  .0 ] .8 -1 segment
        !          32881: [ -.65 -.2  -.55 -.2 -.45  -.2  ] -.3   -.2 [ -.2  -.2   .2  .0  .3  .0 ]
        !          32882: [ -.65  .1  -.55  .1 -.45   .1  ] -.45  .1  [ -.3   .1  -.1  .0  .0  .0 ] .96 -2 segment
        !          32883: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
        !          32884: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]  1 -3 segment
        !          32885: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] -4 botsegment
        !          32886: ] cvx def
        !          32887: 12 3 globesetup
        !          32888: /globe12 [
        !          32889: /newpath load
        !          32890: [ -.8   .2  -.7  .25 -.5   .25 ] -.4  .25 [ -.2   .25  .0  .0  .2  .0 ] 5 topsegment
        !          32891: [ -.7  -.35 -.7 -.35 -.6  -.35 ] -.3 -.35 [ -.1  -.35  .3  .0  .55 .0 ]
        !          32892: [ -.7   .35 -.7  .35 -.6   .35 ] -.25 .35 [ -.05  .35  .4  .0  .55 .0 ] .6  4 segment
        !          32893: [ -.8  -.35 -.7 -.35 -.6  -.35 ] -.1 -.35 [  .1  -.35  .4  .0  .5  .0 ]
        !          32894: [ -.8   .35 -.7  .35 -.6   .35 ] -.1  .35 [  .1   .35  .4  .0  .5  .0 ] .7  3 segment
        !          32895: [ -.8  -.35 -.7 -.35 -.6  -.35 ]  .0 -.35 [  .1  -.35  .45 .0  .55 .0 ]
        !          32896: [ -.8   .35 -.7  .35 -.6   .35 ]  .0  .35 [  .15  .35  .4  .0  .5  .0 ] .8  2 segment
        !          32897: [ -.75 -.35 -.7 -.35 -.6  -.35 ]  .0 -.35 [  .2  -.35  .4  .0  .5  .0 ]
        !          32898: [ -.75  .35 -.7  .35 -.6   .35 ]  .0  .35 [  .2   .35  .45 .0  .55 .0 ] .9  1 segment
        !          32899: [ -.7  -.35 -.6 -.35 -.55 -.35 ]  .0 -.35 [  .1  -.35  .45 .0  .55 .0 ]
        !          32900: [ -.7   .35 -.6  .35 -.55  .35 ]  .0  .35 [  .1   .35  .5  .0  .6  .0 ] .9  0 segment
        !          32901: ] cvx
        !          32902: [
        !          32903: [ -.7 -.35 -.6 -.35 -.5  -.35 ] -.15 -.35 [  .0  -.35  .4  .0  .5  .0 ]
        !          32904: [ -.65 .35 -.55 .35 -.45  .35 ] -.15  .35 [  .0   .35  .35 .0  .45 .0 ] .9 -1 segment
        !          32905: [ -.8 -.1  -.5 -.3  -.4  -.3  ] -.2  -.3  [  .0  -.3   .3  .0  .4  .0 ]
        !          32906: [ -.8  .1  -.5  .3  -.4   .3  ] -.2   .3  [  .0   .3   .2  .0  .3  .0 ] 1 -2 segment
        !          32907: [ -.7 -.1  -.5 -.15 -.4  -.15 ] -.3  -.15 [ -.2  -.15  .0  .0  .2  .0 ]
        !          32908: [ -.7  .05 -.5  .1  -.4   .1  ] -.4   .1  [ -.3   .1   .0  .0  .2  .0 ] 1 -3 segment
        !          32909: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
        !          32910: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] 1 -4 segment
        !          32911: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
        !          32912: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] 1 -5 segment
        !          32913: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] -6 botsegment
        !          32914: ] cvx
        !          32915: 4 array cvx
        !          32916: dup 0 5 -1 roll put
        !          32917: dup 1 /exec load put
        !          32918: dup 2 4 -1 roll put
        !          32919: dup 3 /exec load put
        !          32920: def
        !          32921: 
        !          32922: /l {  lineto } def
        !          32923: /rl {  rlineto } def
        !          32924: /m {  moveto } def
        !          32925: /rm {  rmoveto } def
        !          32926: /C { closepath } def
        !          32927: /c {  curveto } def
        !          32928: /rc {  rcurveto } def
        !          32929: /T { m 0 29 rl -9.5 0 rl 0 7 rl 29 0 rl 0 -7 rl -9.5 0 rl 0 -29 rl C } def
        !          32930: /ATT {
        !          32931: newpath
        !          32932: 1 36 div dup scale
        !          32933: 0  0 m  12 36 rl  8 0 rl -11 -36 rl C
        !          32934: 25  0 m -11 36 rl  8 0 rl  12 -36 rl C
        !          32935: 10  7 m   0  7 rl 14 0 rl   0  -7 rl C
        !          32936: 36  0 T
        !          32937: 80  6 m -3 0 -5 1.2 -6 2 rc -12 10 rl -2.4 2 -2.7 6 0 6 rc
        !          32938: 1 0 2 -1 2 -2 rc 0 -4 rl 7 0 rl 0 4 rl
        !          32939: 0 5 -3 7 -9 7 rc -6 0 -9 -3 -9 -7 rc
        !          32940: 0 -2 0 -3.6 2 -6 rc 12 -10 rl 6 -5 10 -6 13 -6 rc C
        !          32941: 71 18 m 0 -6 rl 0 -5 -3 -7 -7 -7 rc -3 0 -5 2 -5 4 rc 0 1 0 3 2 4 rc
        !          32942: -4 5 rl -4 -2 -6 -6 -6 -9 rc 0 -7 6 -10 13 -10 rc
        !          32943: 9 0 14 6 14 11 rc 0 8 rl C
        !          32944: 82  0 T
        !          32945: 36 dup scale
        !          32946: } def
        !          32947: 
        !          32948: end
        !          32949: 
        !          32950: /build_LH { % standard ATT logo
        !          32951:     LOGO-dict-mm begin
        !          32952:        /w exch def
        !          32953:        ptsize 29 lt    % select globe, # lines depends on point size
        !          32954:                { /globe /globe8 load def }
        !          32955:                { /globe /globe12 load def } ifelse
        !          32956:        gsave
        !          32957:         currentpoint translate
        !          32958:         size 2 div dup scale
        !          32959:         gsave
        !          32960:          1.02 1 transform round exch round exch itransform
        !          32961:          translate
        !          32962:          globe fill
        !          32963:         grestore
        !          32964:         gsave
        !          32965:          2.15 .62 translate
        !          32966:          .78 dup scale
        !          32967:          ATT fill
        !          32968:         grestore
        !          32969:        grestore
        !          32970:     end
        !          32971: } def
        !          32972: 0707070014230454721006440057030057030000011347700522627502000003600000014726post.src/devLatin1/charlib/LV%
        !          32973: % PostScript 12 and 8 line logos - vertical configuration. Switch occurs
        !          32974: % automatically below point size 29. Code from Matthijs Melchior.
        !          32975: %
        !          32976: 
        !          32977: /LOGO-dict-mm where not {
        !          32978:        64 dict /LOGO-dict-mm exch def
        !          32979: }{pop} ifelse
        !          32980: LOGO-dict-mm begin             % initialize dictionary
        !          32981: 
        !          32982: 
        !          32983: /globesetup {
        !          32984: /r exch def
        !          32985: /N exch def
        !          32986: /d 2 N r mul N 1 sub add div def
        !          32987: /h d r mul def
        !          32988: } def
        !          32989: /mkabs {
        !          32990: /yp exch def
        !          32991: /xl exch def
        !          32992: dup dup 0 get xl mul 0 exch put
        !          32993: dup dup 1 get h mul yp add 1 exch put
        !          32994: dup dup 2 get xl mul 2 exch put
        !          32995: dup dup 3 get h mul yp add 3 exch put
        !          32996: dup dup 4 get xl mul 4 exch put
        !          32997: dup dup 5 get h mul yp add 5 exch put
        !          32998: } def
        !          32999: /topsegment {
        !          33000: /n exch def
        !          33001: /y n r mul n .5 add add d mul def
        !          33002: /a y 1 y dup mul sub sqrt atan def
        !          33003: /x a cos def
        !          33004: /c2 exch x y mkabs def
        !          33005: /ly1 exch h mul y add def
        !          33006: /lx1 exch x abs mul def
        !          33007: /c1 exch x y mkabs def
        !          33008: x y /moveto load
        !          33009: 0 0 1 a 180 a sub /arc load
        !          33010: c1 aload pop /curveto load
        !          33011: lx1 ly1 /lineto load
        !          33012: c2 aload pop /curveto load
        !          33013: /closepath load
        !          33014: } def
        !          33015: /botsegment {
        !          33016: /n exch 1 add def
        !          33017: /y n r mul n .5 sub add d mul def
        !          33018: /a y 1 y dup mul sub sqrt atan def
        !          33019: /x a cos def
        !          33020: /c2 exch x y mkabs def
        !          33021: /ly1 exch h mul y add def
        !          33022: /lx1 exch x abs mul def
        !          33023: /c1 exch x y mkabs def
        !          33024: x y /moveto load
        !          33025: 0 0 1 a 540 a sub /arcn load
        !          33026: c1 aload pop /curveto load
        !          33027: lx1 ly1 /lineto load
        !          33028: c2 aload pop /curveto load
        !          33029: /closepath load
        !          33030: } def
        !          33031: /segment {
        !          33032: /n exch def
        !          33033: /dh exch 1 exch sub 2 div def
        !          33034: /ylb n r mul n 0.5 add add d mul def
        !          33035: /ylt ylb h add def
        !          33036: /yrb ylb h dh mul add def
        !          33037: /yrt ylt h dh mul sub def
        !          33038: /alb ylb 1 ylb dup mul sub sqrt atan def
        !          33039: /alt ylt 1 ylt dup mul sub sqrt atan def
        !          33040: /arb yrb 1 yrb dup mul sub sqrt atan 180 exch sub def
        !          33041: /art yrt 1 yrt dup mul sub sqrt atan 180 exch sub def
        !          33042: /xlb alb cos def
        !          33043: /xlt alt cos def
        !          33044: /xrb arb cos def
        !          33045: /xrt art cos def
        !          33046: /c4 exch xrb abs ylb mkabs def
        !          33047: /ly2 exch h mul ylb add def
        !          33048: /lx2 exch xrb abs mul def
        !          33049: /c3 exch xrb abs ylb mkabs def
        !          33050: /c2 exch xrt abs ylt mkabs def
        !          33051: /ly1 exch h mul ylt add def
        !          33052: /lx1 exch xrt abs mul def
        !          33053: /c1 exch xrt abs ylt mkabs def
        !          33054: xlb ylb /moveto load
        !          33055: 0 0 1 alb alt /arc load
        !          33056: c2 4 get c2 5 get /lineto load
        !          33057: c2 2 get c2 3 get
        !          33058: c2 0 get c2 1 get
        !          33059: lx1 ly1        /curveto load
        !          33060: c1 4 get c1 5 get /lineto load
        !          33061: c1 2 get c1 3 get
        !          33062: c1 0 get c1 1 get
        !          33063: xrt yrt /curveto load
        !          33064: 0 0 1 art arb /arc load
        !          33065: c3 aload pop /curveto load
        !          33066: lx2 ly2 /lineto load
        !          33067: c4 aload pop /curveto load
        !          33068: /closepath load
        !          33069: } def
        !          33070: 8 2.5 globesetup
        !          33071: /globe8 [
        !          33072: /newpath load
        !          33073: [ -.9   .1  -.6   .2  -.5   .2  ] -.5   .2  [ -.4   .2   .0  .0  .4  .0 ] 3 topsegment
        !          33074: [ -.9  -.35 -.85 -.35 -.8  -.35 ] -.1  -.35 [  .1  -.35  .3  .0  .5  .0 ]
        !          33075: [ -.8   .35 -.75  .35 -.7   .35 ] -.1   .35 [  .1   .35  .4  .0  .55 .0 ] .55 2 segment
        !          33076: [ -.8  -.35 -.75 -.35 -.7  -.35 ]  .05 -.35 [  .2  -.35  .4  .0  .55 .0 ]
        !          33077: [ -.8   .35 -.75  .35 -.7   .35 ]  .05  .35 [  .2   .35  .45 .0  .6  .0 ] .7  1 segment
        !          33078: [ -.8  -.35 -.75 -.35 -.7  -.35 ]  .0  -.35 [  .15 -.35  .4  .0  .6  .0 ]
        !          33079: [ -.8   .35 -.75  .35 -.7   .35 ]  .0   .35 [  .15  .35  .4  .0  .6  .0 ] .7  0 segment
        !          33080: [ -.7  -.35 -.65 -.35 -.6  -.35 ] -.1  -.35 [  .05 -.35  .35 .0  .55 .0 ]
        !          33081: [ -.7   .35 -.65  .35 -.6   .35 ] -.1   .35 [  .05  .35  .25 .0  .4  .0 ] .8 -1 segment
        !          33082: [ -.65 -.2  -.55 -.2 -.45  -.2  ] -.3   -.2 [ -.2  -.2   .2  .0  .3  .0 ]
        !          33083: [ -.65  .1  -.55  .1 -.45   .1  ] -.45  .1  [ -.3   .1  -.1  .0  .0  .0 ] .96 -2 segment
        !          33084: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
        !          33085: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]  1 -3 segment
        !          33086: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] -4 botsegment
        !          33087: ] cvx def
        !          33088: 12 3 globesetup
        !          33089: /globe12 [
        !          33090: /newpath load
        !          33091: [ -.8   .2  -.7  .25 -.5   .25 ] -.4  .25 [ -.2   .25  .0  .0  .2  .0 ] 5 topsegment
        !          33092: [ -.7  -.35 -.7 -.35 -.6  -.35 ] -.3 -.35 [ -.1  -.35  .3  .0  .55 .0 ]
        !          33093: [ -.7   .35 -.7  .35 -.6   .35 ] -.25 .35 [ -.05  .35  .4  .0  .55 .0 ] .6  4 segment
        !          33094: [ -.8  -.35 -.7 -.35 -.6  -.35 ] -.1 -.35 [  .1  -.35  .4  .0  .5  .0 ]
        !          33095: [ -.8   .35 -.7  .35 -.6   .35 ] -.1  .35 [  .1   .35  .4  .0  .5  .0 ] .7  3 segment
        !          33096: [ -.8  -.35 -.7 -.35 -.6  -.35 ]  .0 -.35 [  .1  -.35  .45 .0  .55 .0 ]
        !          33097: [ -.8   .35 -.7  .35 -.6   .35 ]  .0  .35 [  .15  .35  .4  .0  .5  .0 ] .8  2 segment
        !          33098: [ -.75 -.35 -.7 -.35 -.6  -.35 ]  .0 -.35 [  .2  -.35  .4  .0  .5  .0 ]
        !          33099: [ -.75  .35 -.7  .35 -.6   .35 ]  .0  .35 [  .2   .35  .45 .0  .55 .0 ] .9  1 segment
        !          33100: [ -.7  -.35 -.6 -.35 -.55 -.35 ]  .0 -.35 [  .1  -.35  .45 .0  .55 .0 ]
        !          33101: [ -.7   .35 -.6  .35 -.55  .35 ]  .0  .35 [  .1   .35  .5  .0  .6  .0 ] .9  0 segment
        !          33102: ] cvx
        !          33103: [
        !          33104: [ -.7 -.35 -.6 -.35 -.5  -.35 ] -.15 -.35 [  .0  -.35  .4  .0  .5  .0 ]
        !          33105: [ -.65 .35 -.55 .35 -.45  .35 ] -.15  .35 [  .0   .35  .35 .0  .45 .0 ] .9 -1 segment
        !          33106: [ -.8 -.1  -.5 -.3  -.4  -.3  ] -.2  -.3  [  .0  -.3   .3  .0  .4  .0 ]
        !          33107: [ -.8  .1  -.5  .3  -.4   .3  ] -.2   .3  [  .0   .3   .2  .0  .3  .0 ] 1 -2 segment
        !          33108: [ -.7 -.1  -.5 -.15 -.4  -.15 ] -.3  -.15 [ -.2  -.15  .0  .0  .2  .0 ]
        !          33109: [ -.7  .05 -.5  .1  -.4   .1  ] -.4   .1  [ -.3   .1   .0  .0  .2  .0 ] 1 -3 segment
        !          33110: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
        !          33111: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] 1 -4 segment
        !          33112: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
        !          33113: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] 1 -5 segment
        !          33114: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] -6 botsegment
        !          33115: ] cvx
        !          33116: 4 array cvx
        !          33117: dup 0 5 -1 roll put
        !          33118: dup 1 /exec load put
        !          33119: dup 2 4 -1 roll put
        !          33120: dup 3 /exec load put
        !          33121: def
        !          33122: 
        !          33123: /l {  lineto } def
        !          33124: /rl {  rlineto } def
        !          33125: /m {  moveto } def
        !          33126: /rm {  rmoveto } def
        !          33127: /C { closepath } def
        !          33128: /c {  curveto } def
        !          33129: /rc {  rcurveto } def
        !          33130: /T { m 0 29 rl -9.5 0 rl 0 7 rl 29 0 rl 0 -7 rl -9.5 0 rl 0 -29 rl C } def
        !          33131: /ATT {
        !          33132: newpath
        !          33133: 1 36 div dup scale
        !          33134: 0  0 m  12 36 rl  8 0 rl -11 -36 rl C
        !          33135: 25  0 m -11 36 rl  8 0 rl  12 -36 rl C
        !          33136: 10  7 m   0  7 rl 14 0 rl   0  -7 rl C
        !          33137: 36  0 T
        !          33138: 80  6 m -3 0 -5 1.2 -6 2 rc -12 10 rl -2.4 2 -2.7 6 0 6 rc
        !          33139: 1 0 2 -1 2 -2 rc 0 -4 rl 7 0 rl 0 4 rl
        !          33140: 0 5 -3 7 -9 7 rc -6 0 -9 -3 -9 -7 rc
        !          33141: 0 -2 0 -3.6 2 -6 rc 12 -10 rl 6 -5 10 -6 13 -6 rc C
        !          33142: 71 18 m 0 -6 rl 0 -5 -3 -7 -7 -7 rc -3 0 -5 2 -5 4 rc 0 1 0 3 2 4 rc
        !          33143: -4 5 rl -4 -2 -6 -6 -6 -9 rc 0 -7 6 -10 13 -10 rc
        !          33144: 9 0 14 6 14 11 rc 0 8 rl C
        !          33145: 82  0 T
        !          33146: 36 dup scale
        !          33147: } def
        !          33148: 
        !          33149: end
        !          33150: 
        !          33151: /build_LV { % standard ATT logo
        !          33152:     LOGO-dict-mm begin
        !          33153:        /w exch def
        !          33154:        ptsize 29 lt    % select globe, # lines depends on point size
        !          33155:                { /globe /globe8 load def }
        !          33156:                { /globe /globe12 load def } ifelse
        !          33157:        gsave
        !          33158:         currentpoint translate
        !          33159:         size 2 div dup scale
        !          33160:         gsave
        !          33161:          1.02 1 transform round exch round exch itransform
        !          33162:          translate
        !          33163:          globe fill
        !          33164:         grestore
        !          33165:         gsave
        !          33166:          %2.15 .62 translate
        !          33167:          -0.1 -1.0 translate
        !          33168:          .78 dup scale
        !          33169:          ATT fill
        !          33170:         grestore
        !          33171:        grestore
        !          33172:     end
        !          33173: } def
        !          33174: 0707070014230454731006440057030057030000011347570522627502000004200000001173post.src/devLatin1/charlib/READMEPostscript definitions for special troff characters. File names are
        !          33175: the two character troff names. Each defines a PostScript procedure
        !          33176: that begins with build_ and ends with the character's name. The
        !          33177: build_?? procedure is called with the character width as it's only
        !          33178: argument. The .map files contain extra character data (e.g. image
        !          33179: data) that dpost downloads immediately after the build_?? call,
        !          33180: if the character's font table code field is 2 (rather than 1).
        !          33181: 
        !          33182: The following PostScript variables are available:
        !          33183: 
        !          33184:        font            current font
        !          33185:        ptsize          current point size
        !          33186:        size            actual font size - scaled up from ptsize
        !          33187: 
        !          33188: Don't overuse this stuff!
        !          33189: 
        !          33190: 0707070014230454741006440057030057030000011261550522627502000003600000002631post.src/devLatin1/charlib/Sl/build_Sl {
        !          33191: pop
        !          33192: gsave
        !          33193: size .0022 mul dup scale
        !          33194: currentpoint translate
        !          33195: 14 93 moveto
        !          33196: 14 96 lineto
        !          33197: 29 110 lineto
        !          33198: 44 121 lineto
        !          33199: 54 127 lineto
        !          33200: 55 132 lineto
        !          33201: 57 146 lineto
        !          33202: 59 157 lineto
        !          33203: 62 171 lineto
        !          33204: 66 186 lineto
        !          33205: 70 199 lineto
        !          33206: 75 213 lineto
        !          33207: 81 228 lineto
        !          33208: 88 243 lineto
        !          33209: 96 257 lineto
        !          33210: 106 272 lineto
        !          33211: 118 287 lineto
        !          33212: 133 300 lineto
        !          33213: 148 307 lineto
        !          33214: 163 308 lineto
        !          33215: 178 304 lineto
        !          33216: 191 293 lineto
        !          33217: 197 281 lineto
        !          33218: 198 277 lineto
        !          33219: 198 260 lineto
        !          33220: 194 246 lineto
        !          33221: 187 231 lineto
        !          33222: 179 217 lineto
        !          33223: 168 202 lineto
        !          33224: 155 187 lineto
        !          33225: 141 172 lineto
        !          33226: 126 158 lineto
        !          33227: 111 146 lineto
        !          33228: 96 136 lineto
        !          33229: 94 131 lineto
        !          33230: 93 123 lineto
        !          33231: 92 112 lineto
        !          33232: 91 103 lineto
        !          33233: 90 93 lineto
        !          33234: 89 81 lineto
        !          33235: 89 40 lineto
        !          33236: 92 28 lineto
        !          33237: 97 18 lineto
        !          33238: 108 10 lineto
        !          33239: 122 10 lineto
        !          33240: 134 18 lineto
        !          33241: 145 33 lineto
        !          33242: 152 48 lineto
        !          33243: 158 62 lineto
        !          33244: 168 58 lineto
        !          33245: 168 59 lineto
        !          33246: 163 45 lineto
        !          33247: 157 31 lineto
        !          33248: 148 16 lineto
        !          33249: 133 3 lineto
        !          33250: 118 -1 lineto
        !          33251: 103 0 lineto
        !          33252: 88 5 lineto
        !          33253: 73 18 lineto
        !          33254: 64 31 lineto
        !          33255: 58 46 lineto
        !          33256: 55 59 lineto
        !          33257: 53 73 lineto
        !          33258: 52 111 lineto
        !          33259: 37 101 lineto
        !          33260: 22 86 lineto
        !          33261: 14 93 lineto
        !          33262: 
        !          33263: 97 152 moveto
        !          33264: 97 153 lineto
        !          33265: 99 166 lineto
        !          33266: 101 178 lineto
        !          33267: 103 190 lineto
        !          33268: 106 205 lineto
        !          33269: 109 218 lineto
        !          33270: 113 232 lineto
        !          33271: 118 246 lineto
        !          33272: 124 261 lineto
        !          33273: 132 275 lineto
        !          33274: 144 290 lineto
        !          33275: 157 298 lineto
        !          33276: 171 298 lineto
        !          33277: 181 291 lineto
        !          33278: 186 283 lineto
        !          33279: 187 279 lineto
        !          33280: 187 264 lineto
        !          33281: 186 260 lineto
        !          33282: 181 246 lineto
        !          33283: 174 233 lineto
        !          33284: 165 218 lineto
        !          33285: 155 204 lineto
        !          33286: 142 190 lineto
        !          33287: 127 175 lineto
        !          33288: 112 162 lineto
        !          33289: 97 152 lineto
        !          33290: 
        !          33291: eofill
        !          33292: grestore
        !          33293: } def
        !          33294: 0707070014230454751006440057030057030000011261570522627502000003600000000264post.src/devLatin1/charlib/bx/build_bx {
        !          33295:     pop
        !          33296:     size 2 div /side exch def
        !          33297:     currentpoint
        !          33298:     newpath
        !          33299:     moveto
        !          33300:     0 side rlineto
        !          33301:     side 0 rlineto
        !          33302:     0 side neg rlineto
        !          33303:     closepath
        !          33304:     fill
        !          33305: } def
        !          33306: 0707070014230454761006440057030057030000011347770522627502000003600000000221post.src/devLatin1/charlib/ci/build_ci {
        !          33307:     pop
        !          33308:     size 3 mul 8 div /rad exch def
        !          33309:     currentpoint
        !          33310:     newpath
        !          33311:     rad add exch rad add exch rad 0 360 arc
        !          33312:     stroke
        !          33313: } def
        !          33314: 0707070014230454771006440057030057030000011261650522627502000003600000000074post.src/devLatin1/charlib/ff/build_ff {
        !          33315:     pop
        !          33316:     size .05 mul neg 0 (ff) ashow
        !          33317: } def
        !          33318: 0707070014230455001006440057030057030000011261660522627502000003600000001716post.src/devLatin1/charlib/lc%
        !          33319: % This stuff has gotten terribly complicated - sorry.
        !          33320: %
        !          33321: 
        !          33322: currentdict /bvbbox known not {/bvbbox [0 0 0 0 0 0 0] def} if
        !          33323: 
        !          33324: /build_lc {
        !          33325:     pop
        !          33326:     gsave
        !          33327:        currentpoint translate newpath
        !          33328:        bvbbox 6 get size ne {
        !          33329:            gsave
        !          33330:                initgraphics
        !          33331:                scaling scaling scale
        !          33332:                0 0 moveto
        !          33333:                (\357) false charpath flattenpath pathbbox 0 0 size bvbbox astore pop
        !          33334:                0 1 idtransform dup mul exch dup mul add sqrt dup
        !          33335:                bvbbox 1 get add bvbbox 1 3 -1 roll put
        !          33336:                bvbbox 3 get exch sub bvbbox 3 3 -1 roll put
        !          33337:                bvbbox 2 get bvbbox 0 get sub bvbbox 4 3 -1 roll put
        !          33338:                bvbbox 2 get bvbbox 0 get add 2 div bvbbox 5 3 -1 roll put
        !          33339:            grestore
        !          33340:        } if
        !          33341:        bvbbox 0 get bvbbox 1 get moveto
        !          33342:        bvbbox 0 get bvbbox 3 get lineto
        !          33343:        bvbbox 5 get bvbbox 4 get 8 mul add dup bvbbox 3 get lineto
        !          33344:        bvbbox 1 get lineto closepath clip newpath
        !          33345:        0 0 moveto (\357) show
        !          33346:        bvbbox 5 get bvbbox 3 get moveto
        !          33347:        bvbbox 4 get dup dup
        !          33348:        8 mul 0 rlineto
        !          33349:        0 exch neg rlineto
        !          33350:        8 mul neg 0 rlineto
        !          33351:        closepath clip eofill
        !          33352:     grestore
        !          33353: } def
        !          33354: 0707070014230455011006440057030057030000011261670522627502000003600000001712post.src/devLatin1/charlib/lf%
        !          33355: % This stuff has gotten terribly complicated - sorry.
        !          33356: %
        !          33357: 
        !          33358: currentdict /bvbbox known not {/bvbbox [0 0 0 0 0 0 0] def} if
        !          33359: 
        !          33360: /build_lf {
        !          33361:     pop
        !          33362:     gsave
        !          33363:        currentpoint translate newpath
        !          33364:        bvbbox 6 get size ne {
        !          33365:            gsave
        !          33366:                initgraphics
        !          33367:                scaling scaling scale
        !          33368:                0 0 moveto
        !          33369:                (\357) false charpath flattenpath pathbbox 0 0 size bvbbox astore pop
        !          33370:                0 1 idtransform dup mul exch dup mul add sqrt dup
        !          33371:                bvbbox 1 get add bvbbox 1 3 -1 roll put
        !          33372:                bvbbox 3 get exch sub bvbbox 3 3 -1 roll put
        !          33373:                bvbbox 2 get bvbbox 0 get sub bvbbox 4 3 -1 roll put
        !          33374:                bvbbox 2 get bvbbox 0 get add 2 div bvbbox 5 3 -1 roll put
        !          33375:            grestore
        !          33376:        } if
        !          33377:        bvbbox 0 get bvbbox 1 get moveto
        !          33378:        bvbbox 0 get bvbbox 3 get lineto
        !          33379:        bvbbox 5 get bvbbox 4 get 8 mul add dup bvbbox 3 get lineto
        !          33380:        bvbbox 1 get lineto closepath clip newpath
        !          33381:        0 0 moveto (\357) show
        !          33382:        bvbbox 5 get bvbbox 1 get moveto
        !          33383:        bvbbox 4 get dup dup
        !          33384:        8 mul 0 rlineto
        !          33385:        0 exch rlineto
        !          33386:        8 mul neg 0 rlineto
        !          33387:        closepath clip eofill
        !          33388:     grestore
        !          33389: } def
        !          33390: 0707070014230455021006440057030057030000011262000522627502000003600000004412post.src/devLatin1/charlib/lh/build_lh {
        !          33391: pop
        !          33392: gsave
        !          33393: size .0022 mul dup scale
        !          33394: currentpoint translate
        !          33395: 
        !          33396: 16 177 moveto
        !          33397: 16 188 lineto
        !          33398: 21 193 lineto
        !          33399: 30 193 lineto
        !          33400: 34 189 lineto
        !          33401: 36 183 lineto
        !          33402: 36 180 lineto
        !          33403: 34 174 lineto
        !          33404: 27 170 lineto
        !          33405: 19 172 lineto
        !          33406: 16 177 lineto
        !          33407: stroke
        !          33408: 
        !          33409: 38 194 moveto
        !          33410: 38 196 lineto
        !          33411: 53 199 lineto
        !          33412: 68 201 lineto
        !          33413: 83 202 lineto
        !          33414: 98 203 lineto
        !          33415: 113 204 lineto
        !          33416: 128 204 lineto
        !          33417: 143 205 lineto
        !          33418: 158 205 lineto
        !          33419: 173 205 lineto
        !          33420: 188 204 lineto
        !          33421: 203 203 lineto
        !          33422: 218 202 lineto
        !          33423: 233 200 lineto
        !          33424: 248 198 lineto
        !          33425: 263 196 lineto
        !          33426: 278 194 lineto
        !          33427: 293 190 lineto
        !          33428: 308 186 lineto
        !          33429: 323 181 lineto
        !          33430: 338 176 lineto
        !          33431: 353 168 lineto
        !          33432: 361 162 lineto
        !          33433: 364 153 lineto
        !          33434: 366 138 lineto
        !          33435: 367 126 lineto
        !          33436: 368 106 lineto
        !          33437: 369 80 lineto
        !          33438: 369 74 lineto
        !          33439: 368 60 lineto
        !          33440: 367 54 lineto
        !          33441: 362 43 lineto
        !          33442: 348 34 lineto
        !          33443: 333 28 lineto
        !          33444: 318 25 lineto
        !          33445: 303 26 lineto
        !          33446: 288 29 lineto
        !          33447: 273 31 lineto
        !          33448: 258 32 lineto
        !          33449: 243 32 lineto
        !          33450: 228 30 lineto
        !          33451: 213 27 lineto
        !          33452: 198 24 lineto
        !          33453: 183 23 lineto
        !          33454: 168 23 lineto
        !          33455: 153 27 lineto
        !          33456: 148 34 lineto
        !          33457: 148 47 lineto
        !          33458: 153 54 lineto
        !          33459: 168 58 lineto
        !          33460: 183 58 lineto
        !          33461: 198 58 lineto
        !          33462: 213 59 lineto
        !          33463: 226 60 lineto
        !          33464: 228 62 lineto
        !          33465: 228 67 lineto
        !          33466: 223 71 lineto
        !          33467: 208 71 lineto
        !          33468: 193 70 lineto
        !          33469: 178 70 lineto
        !          33470: 163 70 lineto
        !          33471: 148 70 lineto
        !          33472: 133 71 lineto
        !          33473: 123 76 lineto
        !          33474: 120 84 lineto
        !          33475: 120 91 lineto
        !          33476: 122 98 lineto
        !          33477: 129 104 lineto
        !          33478: 144 106 lineto
        !          33479: 159 107 lineto
        !          33480: 174 107 lineto
        !          33481: 189 107 lineto
        !          33482: 202 108 lineto
        !          33483: 204 110 lineto
        !          33484: 204 117 lineto
        !          33485: 201 119 lineto
        !          33486: 186 119 lineto
        !          33487: 171 119 lineto
        !          33488: 156 119 lineto
        !          33489: 141 119 lineto
        !          33490: 126 119 lineto
        !          33491: 111 121 lineto
        !          33492: 103 128 lineto
        !          33493: 101 137 lineto
        !          33494: 101 142 lineto
        !          33495: 103 150 lineto
        !          33496: 111 158 lineto
        !          33497: 126 161 lineto
        !          33498: 141 161 lineto
        !          33499: 156 162 lineto
        !          33500: 171 163 lineto
        !          33501: 186 163 lineto
        !          33502: 191 165 lineto
        !          33503: 192 167 lineto
        !          33504: 192 171 lineto
        !          33505: 190 174 lineto
        !          33506: 176 175 lineto
        !          33507: 161 175 lineto
        !          33508: 146 175 lineto
        !          33509: 131 174 lineto
        !          33510: 116 174 lineto
        !          33511: 101 174 lineto
        !          33512: 86 173 lineto
        !          33513: 71 172 lineto
        !          33514: 56 171 lineto
        !          33515: 41 171 lineto
        !          33516: 41 174 lineto
        !          33517: 43 178 lineto
        !          33518: 43 187 lineto
        !          33519: 38 194 lineto
        !          33520: stroke
        !          33521: 
        !          33522: 373 169 moveto
        !          33523: 373 176 lineto
        !          33524: 375 182 lineto
        !          33525: 386 190 lineto
        !          33526: 401 193 lineto
        !          33527: 408 191 lineto
        !          33528: 411 185 lineto
        !          33529: 412 181 lineto
        !          33530: 414 167 lineto
        !          33531: 415 158 lineto
        !          33532: 416 144 lineto
        !          33533: 417 128 lineto
        !          33534: 418 110 lineto
        !          33535: 418 60 lineto
        !          33536: 417 45 lineto
        !          33537: 415 37 lineto
        !          33538: 409 34 lineto
        !          33539: 394 31 lineto
        !          33540: 381 35 lineto
        !          33541: 379 42 lineto
        !          33542: 379 52 lineto
        !          33543: 380 67 lineto
        !          33544: 380 77 lineto
        !          33545: 379 77 lineto
        !          33546: 378 106 lineto
        !          33547: 377 121 lineto
        !          33548: 376 133 lineto
        !          33549: 375 147 lineto
        !          33550: 374 158 lineto
        !          33551: 373 169 lineto
        !          33552: 
        !          33553: stroke
        !          33554: grestore
        !          33555: } def
        !          33556: 0707070014230455031006440057030057030000011263050522627502000003600000000222post.src/devLatin1/charlib/ob/build_ob {
        !          33557:     pop
        !          33558:     size 3 mul 16 div /rad exch def
        !          33559:     currentpoint
        !          33560:     newpath
        !          33561:     rad add exch rad add exch rad 0 360 arc
        !          33562:     stroke
        !          33563: } def
        !          33564: 0707070014230455041006440057030057030000011263060522627502100003600000001716post.src/devLatin1/charlib/rc%
        !          33565: % This stuff has gotten terribly complicated - sorry.
        !          33566: %
        !          33567: 
        !          33568: currentdict /bvbbox known not {/bvbbox [0 0 0 0 0 0 0] def} if
        !          33569: 
        !          33570: /build_rc {
        !          33571:     pop
        !          33572:     gsave
        !          33573:        currentpoint translate newpath
        !          33574:        bvbbox 6 get size ne {
        !          33575:            gsave
        !          33576:                initgraphics
        !          33577:                scaling scaling scale
        !          33578:                0 0 moveto
        !          33579:                (\357) false charpath flattenpath pathbbox 0 0 size bvbbox astore pop
        !          33580:                0 1 idtransform dup mul exch dup mul add sqrt dup
        !          33581:                bvbbox 1 get add bvbbox 1 3 -1 roll put
        !          33582:                bvbbox 3 get exch sub bvbbox 3 3 -1 roll put
        !          33583:                bvbbox 2 get bvbbox 0 get sub bvbbox 4 3 -1 roll put
        !          33584:                bvbbox 2 get bvbbox 0 get add 2 div bvbbox 5 3 -1 roll put
        !          33585:            grestore
        !          33586:        } if
        !          33587:        bvbbox 2 get bvbbox 1 get moveto
        !          33588:        bvbbox 2 get bvbbox 3 get lineto
        !          33589:        bvbbox 5 get bvbbox 4 get 8 mul sub dup bvbbox 3 get lineto
        !          33590:        bvbbox 1 get lineto closepath clip newpath
        !          33591:        0 0 moveto (\357) show
        !          33592:        bvbbox 5 get bvbbox 3 get moveto
        !          33593:        bvbbox 4 get dup dup
        !          33594:        8 mul neg 0 rlineto
        !          33595:        0 exch neg rlineto
        !          33596:        8 mul 0 rlineto
        !          33597:        closepath clip eofill
        !          33598:     grestore
        !          33599: } def
        !          33600: 0707070014230455051006440057030057030000011263070522627502100003600000001712post.src/devLatin1/charlib/rf%
        !          33601: % This stuff has gotten terribly complicated - sorry.
        !          33602: %
        !          33603: 
        !          33604: currentdict /bvbbox known not {/bvbbox [0 0 0 0 0 0 0] def} if
        !          33605: 
        !          33606: /build_rf {
        !          33607:     pop
        !          33608:     gsave
        !          33609:        currentpoint translate newpath
        !          33610:        bvbbox 6 get size ne {
        !          33611:            gsave
        !          33612:                initgraphics
        !          33613:                scaling scaling scale
        !          33614:                0 0 moveto
        !          33615:                (\357) false charpath flattenpath pathbbox 0 0 size bvbbox astore pop
        !          33616:                0 1 idtransform dup mul exch dup mul add sqrt dup
        !          33617:                bvbbox 1 get add bvbbox 1 3 -1 roll put
        !          33618:                bvbbox 3 get exch sub bvbbox 3 3 -1 roll put
        !          33619:                bvbbox 2 get bvbbox 0 get sub bvbbox 4 3 -1 roll put
        !          33620:                bvbbox 2 get bvbbox 0 get add 2 div bvbbox 5 3 -1 roll put
        !          33621:            grestore
        !          33622:        } if
        !          33623:        bvbbox 2 get bvbbox 1 get moveto
        !          33624:        bvbbox 2 get bvbbox 3 get lineto
        !          33625:        bvbbox 5 get bvbbox 4 get 8 mul sub dup bvbbox 3 get lineto
        !          33626:        bvbbox 1 get lineto closepath clip newpath
        !          33627:        0 0 moveto (\357) show
        !          33628:        bvbbox 5 get bvbbox 1 get moveto
        !          33629:        bvbbox 4 get dup dup
        !          33630:        8 mul neg 0 rlineto
        !          33631:        0 exch rlineto
        !          33632:        8 mul 0 rlineto
        !          33633:        closepath clip eofill
        !          33634:     grestore
        !          33635: } def
        !          33636: 0707070014230455061006440057030057030000011327350522627502100003600000004171post.src/devLatin1/charlib/rh/build_rh {
        !          33637: pop
        !          33638: gsave
        !          33639: size .0022 mul dup scale
        !          33640: currentpoint translate
        !          33641: 
        !          33642: 15 66 moveto
        !          33643: 15 86 lineto
        !          33644: 16 131 lineto
        !          33645: 17 146 lineto
        !          33646: 18 158 lineto
        !          33647: 19 167 lineto
        !          33648: 21 181 lineto
        !          33649: 24 190 lineto
        !          33650: 34 193 lineto
        !          33651: 49 189 lineto
        !          33652: 58 182 lineto
        !          33653: 60 177 lineto
        !          33654: 60 166 lineto
        !          33655: 59 156 lineto
        !          33656: 58 143 lineto
        !          33657: 57 130 lineto
        !          33658: 56 117 lineto
        !          33659: 55 102 lineto
        !          33660: 54 42 lineto
        !          33661: 53 39 lineto
        !          33662: 49 35 lineto
        !          33663: 34 34 lineto
        !          33664: 19 39 lineto
        !          33665: 16 47 lineto
        !          33666: 15 66 lineto
        !          33667: stroke
        !          33668: 
        !          33669: 65 60 moveto
        !          33670: 65 111 lineto
        !          33671: 66 127 lineto
        !          33672: 67 139 lineto
        !          33673: 69 153 lineto
        !          33674: 72 163 lineto
        !          33675: 83 171 lineto
        !          33676: 98 177 lineto
        !          33677: 113 182 lineto
        !          33678: 128 187 lineto
        !          33679: 143 190 lineto
        !          33680: 158 194 lineto
        !          33681: 173 196 lineto
        !          33682: 188 199 lineto
        !          33683: 203 201 lineto
        !          33684: 218 203 lineto
        !          33685: 233 205 lineto
        !          33686: 248 205 lineto
        !          33687: 263 206 lineto
        !          33688: 278 206 lineto
        !          33689: 293 206 lineto
        !          33690: 308 206 lineto
        !          33691: 323 206 lineto
        !          33692: 338 205 lineto
        !          33693: 353 203 lineto
        !          33694: 368 202 lineto
        !          33695: 383 200 lineto
        !          33696: 394 197 lineto
        !          33697: 389 190 lineto
        !          33698: 389 180 lineto
        !          33699: 391 176 lineto
        !          33700: 391 173 lineto
        !          33701: 380 173 lineto
        !          33702: 365 173 lineto
        !          33703: 350 174 lineto
        !          33704: 335 175 lineto
        !          33705: 320 176 lineto
        !          33706: 305 176 lineto
        !          33707: 290 176 lineto
        !          33708: 275 177 lineto
        !          33709: 260 177 lineto
        !          33710: 245 177 lineto
        !          33711: 240 173 lineto
        !          33712: 240 170 lineto
        !          33713: 245 165 lineto
        !          33714: 260 164 lineto
        !          33715: 275 164 lineto
        !          33716: 290 164 lineto
        !          33717: 305 163 lineto
        !          33718: 320 160 lineto
        !          33719: 327 155 lineto
        !          33720: 330 149 lineto
        !          33721: 330 134 lineto
        !          33722: 328 129 lineto
        !          33723: 323 124 lineto
        !          33724: 309 121 lineto
        !          33725: 294 121 lineto
        !          33726: 279 121 lineto
        !          33727: 264 121 lineto
        !          33728: 249 121 lineto
        !          33729: 234 121 lineto
        !          33730: 228 118 lineto
        !          33731: 228 112 lineto
        !          33732: 234 109 lineto
        !          33733: 249 109 lineto
        !          33734: 264 109 lineto
        !          33735: 279 108 lineto
        !          33736: 294 108 lineto
        !          33737: 306 104 lineto
        !          33738: 311 97 lineto
        !          33739: 312 91 lineto
        !          33740: 312 88 lineto
        !          33741: 311 82 lineto
        !          33742: 305 74 lineto
        !          33743: 290 72 lineto
        !          33744: 275 72 lineto
        !          33745: 260 72 lineto
        !          33746: 245 73 lineto
        !          33747: 230 73 lineto
        !          33748: 215 73 lineto
        !          33749: 205 70 lineto
        !          33750: 205 63 lineto
        !          33751: 217 60 lineto
        !          33752: 232 60 lineto
        !          33753: 247 60 lineto
        !          33754: 262 60 lineto
        !          33755: 277 57 lineto
        !          33756: 283 52 lineto
        !          33757: 285 44 lineto
        !          33758: 285 41 lineto
        !          33759: 284 35 lineto
        !          33760: 280 30 lineto
        !          33761: 268 26 lineto
        !          33762: 253 25 lineto
        !          33763: 238 26 lineto
        !          33764: 223 28 lineto
        !          33765: 208 31 lineto
        !          33766: 193 33 lineto
        !          33767: 178 34 lineto
        !          33768: 163 33 lineto
        !          33769: 148 31 lineto
        !          33770: 133 28 lineto
        !          33771: 118 27 lineto
        !          33772: 103 28 lineto
        !          33773: 88 34 lineto
        !          33774: 73 43 lineto
        !          33775: 67 52 lineto
        !          33776: 65 60 lineto
        !          33777: stroke
        !          33778: 
        !          33779: 396 180 moveto
        !          33780: 396 188 lineto
        !          33781: 399 194 lineto
        !          33782: 410 196 lineto
        !          33783: 416 190 lineto
        !          33784: 416 180 lineto
        !          33785: 415 177 lineto
        !          33786: 411 173 lineto
        !          33787: 400 173 lineto
        !          33788: 396 180 lineto
        !          33789: stroke
        !          33790: 
        !          33791: grestore
        !          33792: } def
        !          33793: 0707070014230455071006440057030057030000011331250522627502100003600000000320post.src/devLatin1/charlib/sq/build_sq {
        !          33794:     pop
        !          33795:     size 2 div /side exch def
        !          33796:     currentpoint
        !          33797:     newpath
        !          33798:     moveto
        !          33799:     0 side rlineto
        !          33800:     side 0 rlineto
        !          33801:     0 side neg rlineto
        !          33802:     closepath
        !          33803:     font B eq {fill} {stroke} ifelse
        !          33804: } def
        !          33805: 0707070014230455101006440057030057030000011331260522627502100003600000000130post.src/devLatin1/charlib/~=/build_~= {
        !          33806:     pop
        !          33807:     (\176) stringwidth pop neg size -.15 mul (\176\055) ashow
        !          33808: } def
        !          33809: 0707070014230455111006440057030057030000011331270522627502100003600000000327post.src/devLatin1/charlib/RC/build_RC {
        !          33810:     pop
        !          33811:     size 4 div /side exch def
        !          33812:     currentpoint
        !          33813:     newpath
        !          33814:     moveto
        !          33815:     0 side 1.5 mul rmoveto
        !          33816:     0 side rlineto
        !          33817:     side 2.5 mul 0 rlineto
        !          33818:     0 side neg rlineto
        !          33819:     closepath
        !          33820:     fill
        !          33821: } def
        !          33822: 0707070014230455121006440057030057030000011331750522627502100003600000001051post.src/devLatin1/charlib/DG%
        !          33823: % UMDS danger sign - needs to be cleaned up!
        !          33824: %
        !          33825: 
        !          33826: /build_DG {
        !          33827:     /x0 1.5 6 div 72 mul def   % triangle length
        !          33828:     pop
        !          33829:     gsave
        !          33830:        currentpoint translate
        !          33831:        1 scaling div ptsize 10 div mul dup scale
        !          33832:        2 setlinewidth
        !          33833:        0 setlinecap
        !          33834:        newpath
        !          33835:        0 0 moveto
        !          33836:        x0 0 lineto
        !          33837:        x0 2 div x0 3 sqrt 2 div mul lineto
        !          33838:        closepath fill
        !          33839:        1 setgray
        !          33840:        /Helvetica-Bold findfont 12 scalefont setfont
        !          33841:        0 0 moveto
        !          33842:        (!) false charpath pathbbox
        !          33843:        exch 4 -1 roll add 2 div x0 2 div exch sub 0 moveto
        !          33844:        exch sub x0 3 sqrt 2 div mul exch sub 3 div 0 exch rmoveto
        !          33845:        (!) show
        !          33846:     grestore
        !          33847: } def
        !          33848: 
        !          33849: 0707070014230455131006440057030057030000011331760522627502100003600000000735post.src/devLatin1/charlib/PC%
        !          33850: % UMDS pencil - needs to be cleaned up.
        !          33851: %
        !          33852: 
        !          33853: /build_PC {
        !          33854:     pop
        !          33855:     gsave
        !          33856:        currentpoint translate
        !          33857:        1 scaling div ptsize 10 div mul dup scale
        !          33858:        newpath
        !          33859:        0 setlinecap
        !          33860:        1 setlinejoin
        !          33861:        2 setlinewidth
        !          33862:        0 1 moveto 12 0 rlineto stroke
        !          33863:        0 5 moveto 12 0 rlineto stroke
        !          33864:        0 9 moveto 12 0 rlineto stroke
        !          33865:        1 setlinewidth
        !          33866:        12 .5 moveto 21.27362 5 lineto 12 9.5 lineto stroke
        !          33867:        21.27362 5 moveto
        !          33868:        .4 9.27362 mul neg .4 4 mul rlineto
        !          33869:        0 .8 4 mul neg rlineto
        !          33870:        closepath fill
        !          33871:     grestore
        !          33872: } def
        !          33873: 
        !          33874: 0707070014230455141006440057030057030000011333450522627502100003600000004404post.src/devLatin1/charlib/lH/build_lH {
        !          33875: pop
        !          33876: gsave
        !          33877: size .0022 mul dup scale
        !          33878: currentpoint translate
        !          33879: 
        !          33880: 16 177 moveto
        !          33881: 16 188 lineto
        !          33882: 21 193 lineto
        !          33883: 30 193 lineto
        !          33884: 34 189 lineto
        !          33885: 36 183 lineto
        !          33886: 36 180 lineto
        !          33887: 34 174 lineto
        !          33888: 27 170 lineto
        !          33889: 19 172 lineto
        !          33890: 16 177 lineto
        !          33891: fill
        !          33892: 
        !          33893: 38 194 moveto
        !          33894: 38 196 lineto
        !          33895: 53 199 lineto
        !          33896: 68 201 lineto
        !          33897: 83 202 lineto
        !          33898: 98 203 lineto
        !          33899: 113 204 lineto
        !          33900: 128 204 lineto
        !          33901: 143 205 lineto
        !          33902: 158 205 lineto
        !          33903: 173 205 lineto
        !          33904: 188 204 lineto
        !          33905: 203 203 lineto
        !          33906: 218 202 lineto
        !          33907: 233 200 lineto
        !          33908: 248 198 lineto
        !          33909: 263 196 lineto
        !          33910: 278 194 lineto
        !          33911: 293 190 lineto
        !          33912: 308 186 lineto
        !          33913: 323 181 lineto
        !          33914: 338 176 lineto
        !          33915: 353 168 lineto
        !          33916: 361 162 lineto
        !          33917: 364 153 lineto
        !          33918: 366 138 lineto
        !          33919: 367 126 lineto
        !          33920: 368 106 lineto
        !          33921: 369 80 lineto
        !          33922: 369 74 lineto
        !          33923: 368 60 lineto
        !          33924: 367 54 lineto
        !          33925: 362 43 lineto
        !          33926: 348 34 lineto
        !          33927: 333 28 lineto
        !          33928: 318 25 lineto
        !          33929: 303 26 lineto
        !          33930: 288 29 lineto
        !          33931: 273 31 lineto
        !          33932: 258 32 lineto
        !          33933: 243 32 lineto
        !          33934: 228 30 lineto
        !          33935: 213 27 lineto
        !          33936: 198 24 lineto
        !          33937: 183 23 lineto
        !          33938: 168 23 lineto
        !          33939: 153 27 lineto
        !          33940: 148 34 lineto
        !          33941: 148 47 lineto
        !          33942: 153 54 lineto
        !          33943: 168 58 lineto
        !          33944: 183 58 lineto
        !          33945: 198 58 lineto
        !          33946: 213 59 lineto
        !          33947: 226 60 lineto
        !          33948: 228 62 lineto
        !          33949: 228 67 lineto
        !          33950: 223 71 lineto
        !          33951: 208 71 lineto
        !          33952: 193 70 lineto
        !          33953: 178 70 lineto
        !          33954: 163 70 lineto
        !          33955: 148 70 lineto
        !          33956: 133 71 lineto
        !          33957: 123 76 lineto
        !          33958: 120 84 lineto
        !          33959: 120 91 lineto
        !          33960: 122 98 lineto
        !          33961: 129 104 lineto
        !          33962: 144 106 lineto
        !          33963: 159 107 lineto
        !          33964: 174 107 lineto
        !          33965: 189 107 lineto
        !          33966: 202 108 lineto
        !          33967: 204 110 lineto
        !          33968: 204 117 lineto
        !          33969: 201 119 lineto
        !          33970: 186 119 lineto
        !          33971: 171 119 lineto
        !          33972: 156 119 lineto
        !          33973: 141 119 lineto
        !          33974: 126 119 lineto
        !          33975: 111 121 lineto
        !          33976: 103 128 lineto
        !          33977: 101 137 lineto
        !          33978: 101 142 lineto
        !          33979: 103 150 lineto
        !          33980: 111 158 lineto
        !          33981: 126 161 lineto
        !          33982: 141 161 lineto
        !          33983: 156 162 lineto
        !          33984: 171 163 lineto
        !          33985: 186 163 lineto
        !          33986: 191 165 lineto
        !          33987: 192 167 lineto
        !          33988: 192 171 lineto
        !          33989: 190 174 lineto
        !          33990: 176 175 lineto
        !          33991: 161 175 lineto
        !          33992: 146 175 lineto
        !          33993: 131 174 lineto
        !          33994: 116 174 lineto
        !          33995: 101 174 lineto
        !          33996: 86 173 lineto
        !          33997: 71 172 lineto
        !          33998: 56 171 lineto
        !          33999: 41 171 lineto
        !          34000: 41 174 lineto
        !          34001: 43 178 lineto
        !          34002: 43 187 lineto
        !          34003: 38 194 lineto
        !          34004: fill
        !          34005: 
        !          34006: 373 169 moveto
        !          34007: 373 176 lineto
        !          34008: 375 182 lineto
        !          34009: 386 190 lineto
        !          34010: 401 193 lineto
        !          34011: 408 191 lineto
        !          34012: 411 185 lineto
        !          34013: 412 181 lineto
        !          34014: 414 167 lineto
        !          34015: 415 158 lineto
        !          34016: 416 144 lineto
        !          34017: 417 128 lineto
        !          34018: 418 110 lineto
        !          34019: 418 60 lineto
        !          34020: 417 45 lineto
        !          34021: 415 37 lineto
        !          34022: 409 34 lineto
        !          34023: 394 31 lineto
        !          34024: 381 35 lineto
        !          34025: 379 42 lineto
        !          34026: 379 52 lineto
        !          34027: 380 67 lineto
        !          34028: 380 77 lineto
        !          34029: 379 77 lineto
        !          34030: 378 106 lineto
        !          34031: 377 121 lineto
        !          34032: 376 133 lineto
        !          34033: 375 147 lineto
        !          34034: 374 158 lineto
        !          34035: 373 169 lineto
        !          34036: 
        !          34037: fill
        !          34038: grestore
        !          34039: } def
        !          34040: 0707070014230455151006440057030057030000011336450522627502100003600000004163post.src/devLatin1/charlib/rH/build_rH {
        !          34041: pop
        !          34042: gsave
        !          34043: size .0022 mul dup scale
        !          34044: currentpoint translate
        !          34045: 
        !          34046: 15 66 moveto
        !          34047: 15 86 lineto
        !          34048: 16 131 lineto
        !          34049: 17 146 lineto
        !          34050: 18 158 lineto
        !          34051: 19 167 lineto
        !          34052: 21 181 lineto
        !          34053: 24 190 lineto
        !          34054: 34 193 lineto
        !          34055: 49 189 lineto
        !          34056: 58 182 lineto
        !          34057: 60 177 lineto
        !          34058: 60 166 lineto
        !          34059: 59 156 lineto
        !          34060: 58 143 lineto
        !          34061: 57 130 lineto
        !          34062: 56 117 lineto
        !          34063: 55 102 lineto
        !          34064: 54 42 lineto
        !          34065: 53 39 lineto
        !          34066: 49 35 lineto
        !          34067: 34 34 lineto
        !          34068: 19 39 lineto
        !          34069: 16 47 lineto
        !          34070: 15 66 lineto
        !          34071: fill
        !          34072: 
        !          34073: 65 60 moveto
        !          34074: 65 111 lineto
        !          34075: 66 127 lineto
        !          34076: 67 139 lineto
        !          34077: 69 153 lineto
        !          34078: 72 163 lineto
        !          34079: 83 171 lineto
        !          34080: 98 177 lineto
        !          34081: 113 182 lineto
        !          34082: 128 187 lineto
        !          34083: 143 190 lineto
        !          34084: 158 194 lineto
        !          34085: 173 196 lineto
        !          34086: 188 199 lineto
        !          34087: 203 201 lineto
        !          34088: 218 203 lineto
        !          34089: 233 205 lineto
        !          34090: 248 205 lineto
        !          34091: 263 206 lineto
        !          34092: 278 206 lineto
        !          34093: 293 206 lineto
        !          34094: 308 206 lineto
        !          34095: 323 206 lineto
        !          34096: 338 205 lineto
        !          34097: 353 203 lineto
        !          34098: 368 202 lineto
        !          34099: 383 200 lineto
        !          34100: 394 197 lineto
        !          34101: 389 190 lineto
        !          34102: 389 180 lineto
        !          34103: 391 176 lineto
        !          34104: 391 173 lineto
        !          34105: 380 173 lineto
        !          34106: 365 173 lineto
        !          34107: 350 174 lineto
        !          34108: 335 175 lineto
        !          34109: 320 176 lineto
        !          34110: 305 176 lineto
        !          34111: 290 176 lineto
        !          34112: 275 177 lineto
        !          34113: 260 177 lineto
        !          34114: 245 177 lineto
        !          34115: 240 173 lineto
        !          34116: 240 170 lineto
        !          34117: 245 165 lineto
        !          34118: 260 164 lineto
        !          34119: 275 164 lineto
        !          34120: 290 164 lineto
        !          34121: 305 163 lineto
        !          34122: 320 160 lineto
        !          34123: 327 155 lineto
        !          34124: 330 149 lineto
        !          34125: 330 134 lineto
        !          34126: 328 129 lineto
        !          34127: 323 124 lineto
        !          34128: 309 121 lineto
        !          34129: 294 121 lineto
        !          34130: 279 121 lineto
        !          34131: 264 121 lineto
        !          34132: 249 121 lineto
        !          34133: 234 121 lineto
        !          34134: 228 118 lineto
        !          34135: 228 112 lineto
        !          34136: 234 109 lineto
        !          34137: 249 109 lineto
        !          34138: 264 109 lineto
        !          34139: 279 108 lineto
        !          34140: 294 108 lineto
        !          34141: 306 104 lineto
        !          34142: 311 97 lineto
        !          34143: 312 91 lineto
        !          34144: 312 88 lineto
        !          34145: 311 82 lineto
        !          34146: 305 74 lineto
        !          34147: 290 72 lineto
        !          34148: 275 72 lineto
        !          34149: 260 72 lineto
        !          34150: 245 73 lineto
        !          34151: 230 73 lineto
        !          34152: 215 73 lineto
        !          34153: 205 70 lineto
        !          34154: 205 63 lineto
        !          34155: 217 60 lineto
        !          34156: 232 60 lineto
        !          34157: 247 60 lineto
        !          34158: 262 60 lineto
        !          34159: 277 57 lineto
        !          34160: 283 52 lineto
        !          34161: 285 44 lineto
        !          34162: 285 41 lineto
        !          34163: 284 35 lineto
        !          34164: 280 30 lineto
        !          34165: 268 26 lineto
        !          34166: 253 25 lineto
        !          34167: 238 26 lineto
        !          34168: 223 28 lineto
        !          34169: 208 31 lineto
        !          34170: 193 33 lineto
        !          34171: 178 34 lineto
        !          34172: 163 33 lineto
        !          34173: 148 31 lineto
        !          34174: 133 28 lineto
        !          34175: 118 27 lineto
        !          34176: 103 28 lineto
        !          34177: 88 34 lineto
        !          34178: 73 43 lineto
        !          34179: 67 52 lineto
        !          34180: 65 60 lineto
        !          34181: fill
        !          34182: 
        !          34183: 396 180 moveto
        !          34184: 396 188 lineto
        !          34185: 399 194 lineto
        !          34186: 410 196 lineto
        !          34187: 416 190 lineto
        !          34188: 416 180 lineto
        !          34189: 415 177 lineto
        !          34190: 411 173 lineto
        !          34191: 400 173 lineto
        !          34192: 396 180 lineto
        !          34193: fill
        !          34194: 
        !          34195: grestore
        !          34196: } def
        !          34197: 0707070014230455161006440057030057030000011263100522627502100004600000010521post.src/devLatin1/charlib/LH.example%
        !          34198: % An example logo character. Building the PostScript program that prints
        !          34199: % your company logo is not addressed here; we assume you already have
        !          34200: % such a program, that it's relatively simple, and that it prints the
        !          34201: % logo by itself on a page. What you'll find here are instructions for
        !          34202: % converting that logo program into a character that can be accessed by
        !          34203: % troff and dpost.
        !          34204: %
        !          34205: % Building a new charlib character involves some PostScript programming.
        !          34206: % We've tried to isolate parameters that you'll need to change (Xoffset,
        !          34207: % Yoffset, and Scaling), but we can't guarantee things will work properly
        !          34208: % with every logo program. PostScript is a complex language and subtle
        !          34209: % interactions between your logo program and what we've done here can
        !          34210: % cause problems.
        !          34211: %
        !          34212: % Tuning the new character is an iterative process. You may want to adjust
        !          34213: % the size of the logo (via Scaling), it's position relative to adjacent
        !          34214: % characters and the baseline (Xoffset and Yoffset), and the distance troff
        !          34215: % moves after printing the character (width field in file ../S1). The steps
        !          34216: % to follow are:
        !          34217: %
        !          34218: %      1: Create a simple troff test file for the new character. Something
        !          34219: %         like,
        !          34220: %
        !          34221: %              .sp 1i
        !          34222: %              .ps 10
        !          34223: %              size 10: \(LH
        !          34224: %              .sp 1i
        !          34225: %              .ps 18
        !          34226: %              size 18: \(LH
        !          34227: %              .sp 1i
        !          34228: %              .ps 36
        !          34229: %              size 36: \(LH
        !          34230: %              .sp 1i
        !          34231: %              .ps 10
        !          34232: %              four logo characters: \(LH\(LH\(LH\(LH
        !          34233: %
        !          34234: %         is sufficient. The test file can go anywhere.
        !          34235: % 
        !          34236: %      2: Change into directory /usr/lib/font/devpost/charlib. All file
        !          34237: %         pathnames will be relative to that directory.
        !          34238: %
        !          34239: %      3: Save a copy of the working LH logo file. Then replace LH with
        !          34240: %         this file (i.e. LH.example). Changes described below should be
        !          34241: %         be made in the new LH file (not in LH.example).
        !          34242: %
        !          34243: %      4: Your PostScript logo program will eventually replace whatever
        !          34244: %         you find between the <<StartLogo>> and <<EndLogo>> comment lines
        !          34245: %         in the PostScript build_LH procedure (below). What's there now
        !          34246: %         prints an example logo that you can use until you understand the
        !          34247: %         remaining steps.
        !          34248: %
        !          34249: %      5: Print your troff test file using (assuming your making changes
        !          34250: %         in the devpost charlib directory),
        !          34251: %
        !          34252: %              troff -Tpost testfile | dpost | lp ...
        !          34253: %
        !          34254: %      6: Adjust the logo positioning by changing the numbers assigned to
        !          34255: %         Xoffset and Yoffset (below). Both are in units of 72 per inch.
        !          34256: %         Positive offsets should move the logo to the right and up the
        !          34257: %         page.
        !          34258: %
        !          34259: %      7: Adjust the logo size by changing the the number assigned to
        !          34260: %         Scaling. Unitsize also controls scaling, but there's no good
        !          34261: %         reason to change both Scaling and Unitsize.
        !          34262: %
        !          34263: %      8: Control the horizontal distance troff moves after printing the
        !          34264: %         new LH character by changing the width (i.e. the number in the
        !          34265: %         second column) assigned to LH in file ../S1. Character width
        !          34266: %         adjustments should probably wait until you're satisfied with
        !          34267: %         the Scaling set in step 7.
        !          34268: %
        !          34269: %      9: Back to step 5 until your satisfied with the output.
        !          34270: %
        !          34271: % The remaining steps are suggested but not required:
        !          34272: %
        !          34273: %      10: Delete PostScript comments in your new LH charlib file - comments
        !          34274: %         start with % and go to the end of the line.
        !          34275: %
        !          34276: %      11: Update the width field assigned to LH in file ../shell.lib. The
        !          34277: %         new width should reflect what's currently in your S1 font file.
        !          34278: %
        !          34279: %      12: Make a similiar set of changes in /usr/lib/font/devLatin1/charlib.
        !          34280: %         You can use the devpost version of LH to devLatin1/charlib/LH,
        !          34281: %         but changes to files devLatin1/S1 and devLatin1/shell.lib must be
        !          34282: %         entered by hand.
        !          34283: %
        !          34284: 
        !          34285: /Logo_Dict 100 dict dup begin
        !          34286:        /Xoffset 0 def                  % 72 dpi with positive to the right
        !          34287:        /Yoffset 0 def                  % 72 dpi with positive up the page
        !          34288:        /Scaling 1.0 def                % adjust this number to change the size
        !          34289:        /Unitsize 36 def                % for point size scaling - leave it be
        !          34290:        /showpage {} def
        !          34291: end def
        !          34292: 
        !          34293: /build_LH {                            % don't bind this procedure
        !          34294:        Logo_Dict begin
        !          34295:                gsave
        !          34296:                /charwidth exch def
        !          34297:                currentpoint translate
        !          34298:                resolution 72 div dup scale
        !          34299:                Xoffset Yoffset translate
        !          34300:                Scaling Scaling scale
        !          34301:                ptsize Unitsize div dup scale
        !          34302: 
        !          34303:                %% Replace everything between the <<StartLogo>> and <<EndLogo>>
        !          34304:                %% comment lines by the PostScript program that prints your
        !          34305:                %% logo.
        !          34306: 
        !          34307:                %% <<StartLogo>>
        !          34308:                        newpath
        !          34309:                        .5 .5 scale
        !          34310:                        0 0 moveto
        !          34311:                        100 0 lineto
        !          34312:                        100 100 lineto
        !          34313:                        closepath
        !          34314:                        .5 setgray
        !          34315:                        fill
        !          34316:                        0 setgray
        !          34317:                        10 10 translate
        !          34318:                        45 rotate
        !          34319:                        0 5 moveto
        !          34320:                        /Helvetica findfont 18 scalefont setfont
        !          34321:                        (Example Logo) show
        !          34322:                %% <<EndLogo>>
        !          34323: 
        !          34324:                grestore
        !          34325:        end
        !          34326: } def
        !          34327: 
        !          34328: 0707070014231124121006440057030057030000010446020522627502100002600000006132post.src/devLatin1/HKname HK
        !          34329: fontname Helvetica-LightOblique
        !          34330: spacewidth 28
        !          34331: charset
        !          34332: !      33      2       33
        !          34333: "      28      2       34
        !          34334: dq     "
        !          34335: #      56      2       35
        !          34336: $      56      2       36
        !          34337: %      89      2       37
        !          34338: &      67      2       38
        !          34339: '      22      2       39
        !          34340: (      33      3       40
        !          34341: )      33      3       41
        !          34342: *      39      2       42
        !          34343: +      66      0       43
        !          34344: ,      28      1       44
        !          34345: -      33      0       173
        !          34346: \0255  "
        !          34347: .      28      0       46
        !          34348: /      28      2       47
        !          34349: 0      56      2       48
        !          34350: 1      56      2       49
        !          34351: 2      56      2       50
        !          34352: 3      56      2       51
        !          34353: 4      56      2       52
        !          34354: 5      56      2       53
        !          34355: 6      56      2       54
        !          34356: 7      56      2       55
        !          34357: 8      56      2       56
        !          34358: 9      56      2       57
        !          34359: :      28      0       58
        !          34360: ;      28      1       59
        !          34361: ---    66      0       60
        !          34362: =      66      0       61
        !          34363: ---    66      0       62
        !          34364: ?      50      2       63
        !          34365: @      80      2       64
        !          34366: A      67      2       65
        !          34367: B      67      2       66
        !          34368: C      72      2       67
        !          34369: D      72      2       68
        !          34370: E      61      2       69
        !          34371: F      56      2       70
        !          34372: G      78      2       71
        !          34373: H      72      2       72
        !          34374: I      28      2       73
        !          34375: J      50      2       74
        !          34376: K      67      2       75
        !          34377: L      56      2       76
        !          34378: M      83      2       77
        !          34379: N      72      2       78
        !          34380: O      78      2       79
        !          34381: P      61      2       80
        !          34382: Q      78      2       81
        !          34383: R      67      2       82
        !          34384: S      61      2       83
        !          34385: T      56      2       84
        !          34386: U      72      2       85
        !          34387: V      61      2       86
        !          34388: W      89      2       87
        !          34389: X      61      2       88
        !          34390: Y      61      2       89
        !          34391: Z      61      2       90
        !          34392: [      33      3       91
        !          34393: \      28      2       92
        !          34394: bs     "
        !          34395: ]      33      3       93
        !          34396: ^      33      2       147
        !          34397: ---    66      2       94
        !          34398: ---    50      1       95
        !          34399: `      22      2       96
        !          34400: a      56      0       97
        !          34401: b      61      2       98
        !          34402: c      56      0       99
        !          34403: d      61      2       100
        !          34404: e      56      0       101
        !          34405: f      28      2       102
        !          34406: g      61      1       103
        !          34407: h      56      2       104
        !          34408: i      22      2       105
        !          34409: j      22      3       106
        !          34410: k      50      2       107
        !          34411: l      22      2       108
        !          34412: m      83      0       109
        !          34413: n      56      0       110
        !          34414: o      56      0       111
        !          34415: p      61      1       112
        !          34416: q      61      1       113
        !          34417: r      33      0       114
        !          34418: s      50      0       115
        !          34419: t      28      2       116
        !          34420: u      56      0       117
        !          34421: v      50      0       118
        !          34422: w      72      0       119
        !          34423: x      50      0       120
        !          34424: y      50      1       121
        !          34425: z      50      0       122
        !          34426: {      33      3       123
        !          34427: ---    22      2       124
        !          34428: }      33      3       125
        !          34429: ~      33      2       148
        !          34430: ---    66      0       126
        !          34431: \`     33      2       145
        !          34432: ga     "
        !          34433: !!     33      1       161
        !          34434: \0241  "
        !          34435: c|     56      3       162
        !          34436: \0242  "
        !          34437: ct     "
        !          34438: L-     56      2       163
        !          34439: \0243  "
        !          34440: ps     "
        !          34441: xo     56      0       164
        !          34442: \0244  "
        !          34443: cr     "
        !          34444: Y-     56      2       165
        !          34445: \0245  "
        !          34446: yn     "
        !          34447: ||     22      2       166
        !          34448: \0246  "
        !          34449: so     56      3       167
        !          34450: \0247  "
        !          34451: sc     "
        !          34452: ""     33      2       168
        !          34453: \0250  "
        !          34454: :a     "
        !          34455: co     80      2       169
        !          34456: \0251  "
        !          34457: a_     33      2       170
        !          34458: \0252  "
        !          34459: <<     56      0       171
        !          34460: \0253  "
        !          34461: -,     66      0       172
        !          34462: \0254  "
        !          34463: hy     33      0       173
        !          34464: \0255  "
        !          34465: --     66      0       45
        !          34466: ro     80      2       174
        !          34467: \0256  "
        !          34468: rg     "
        !          34469: -^     33      2       175
        !          34470: \0257  "
        !          34471: -a     "
        !          34472: 0^     40      2       176
        !          34473: \0260  "
        !          34474: +-     66      0       177
        !          34475: \0261  "
        !          34476: 2^     33      2       178
        !          34477: \0262  "
        !          34478: 3^     33      2       179
        !          34479: \0263  "
        !          34480: \'     33      2       180
        !          34481: \0264  "
        !          34482: aa     "
        !          34483: /u     56      1       181
        !          34484: \0265  "
        !          34485: P!     65      3       182
        !          34486: \0266  "
        !          34487: pg     "
        !          34488: .^     28      0       183
        !          34489: \0267  "
        !          34490: ,,     33      1       184
        !          34491: \0270  "
        !          34492: ,a     "
        !          34493: 1^     33      2       185
        !          34494: \0271  "
        !          34495: o_     33      2       186
        !          34496: \0272  "
        !          34497: >>     56      0       187
        !          34498: \0273  "
        !          34499: 14     83      2       188
        !          34500: \0274  "
        !          34501: 12     83      2       189
        !          34502: \0275  "
        !          34503: 34     83      2       190
        !          34504: \0276  "
        !          34505: ??     50      1       191
        !          34506: \0277  "
        !          34507: A`     67      2       192
        !          34508: \0300  "
        !          34509: A'     67      2       193
        !          34510: \0301  "
        !          34511: A^     67      2       194
        !          34512: \0302  "
        !          34513: A~     67      2       195
        !          34514: \0303  "
        !          34515: A"     67      2       196
        !          34516: \0304  "
        !          34517: A*     67      2       197
        !          34518: \0305  "
        !          34519: AE     100     2       198
        !          34520: \0306  "
        !          34521: C,     72      3       199
        !          34522: \0307  "
        !          34523: E`     61      2       200
        !          34524: \0310  "
        !          34525: E'     61      2       201
        !          34526: \0311  "
        !          34527: E^     61      2       202
        !          34528: \0312  "
        !          34529: E"     61      2       203
        !          34530: \0313  "
        !          34531: I`     28      2       204
        !          34532: \0314  "
        !          34533: I'     28      2       205
        !          34534: \0315  "
        !          34535: I^     28      2       206
        !          34536: \0316  "
        !          34537: I"     28      2       207
        !          34538: \0317  "
        !          34539: D-     72      2       208
        !          34540: \0320  "
        !          34541: N~     72      2       209
        !          34542: \0321  "
        !          34543: O`     78      2       210
        !          34544: \0322  "
        !          34545: O'     78      2       211
        !          34546: \0323  "
        !          34547: O^     78      2       212
        !          34548: \0324  "
        !          34549: O~     78      2       213
        !          34550: \0325  "
        !          34551: O"     78      2       214
        !          34552: \0326  "
        !          34553: xx     66      0       215
        !          34554: \0327  "
        !          34555: O/     78      2       216
        !          34556: \0330  "
        !          34557: U`     72      2       217
        !          34558: \0331  "
        !          34559: U'     72      2       218
        !          34560: \0332  "
        !          34561: U^     72      2       219
        !          34562: \0333  "
        !          34563: U"     72      2       220
        !          34564: \0334  "
        !          34565: Y'     61      2       221
        !          34566: \0335  "
        !          34567: TH     61      2       222
        !          34568: \0336  "
        !          34569: ss     50      2       223
        !          34570: \0337  "
        !          34571: a`     56      2       224
        !          34572: \0340  "
        !          34573: a'     56      2       225
        !          34574: \0341  "
        !          34575: a^     56      2       226
        !          34576: \0342  "
        !          34577: a~     56      2       227
        !          34578: \0343  "
        !          34579: a"     56      2       228
        !          34580: \0344  "
        !          34581: a*     56      2       229
        !          34582: \0345  "
        !          34583: ae     89      0       230
        !          34584: \0346  "
        !          34585: c,     56      1       231
        !          34586: \0347  "
        !          34587: e`     56      2       232
        !          34588: \0350  "
        !          34589: e'     56      2       233
        !          34590: \0351  "
        !          34591: e^     56      2       234
        !          34592: \0352  "
        !          34593: e"     56      2       235
        !          34594: \0353  "
        !          34595: i`     22      2       236
        !          34596: \0354  "
        !          34597: i'     22      2       237
        !          34598: \0355  "
        !          34599: i^     22      2       238
        !          34600: \0356  "
        !          34601: i"     22      2       239
        !          34602: \0357  "
        !          34603: d-     56      2       240
        !          34604: \0360  "
        !          34605: n~     56      2       241
        !          34606: \0361  "
        !          34607: o`     56      2       242
        !          34608: \0362  "
        !          34609: o'     56      2       243
        !          34610: \0363  "
        !          34611: o^     56      2       244
        !          34612: \0364  "
        !          34613: o~     56      2       245
        !          34614: \0365  "
        !          34615: o"     56      2       246
        !          34616: \0366  "
        !          34617: -:     66      0       247
        !          34618: \0367  "
        !          34619: o/     56      0       248
        !          34620: \0370  "
        !          34621: u`     56      2       249
        !          34622: \0371  "
        !          34623: u'     56      2       250
        !          34624: \0372  "
        !          34625: u^     56      2       251
        !          34626: \0373  "
        !          34627: u"     56      2       252
        !          34628: \0374  "
        !          34629: y'     50      3       253
        !          34630: \0375  "
        !          34631: th     61      3       254
        !          34632: \0376  "
        !          34633: y"     50      3       255
        !          34634: \0377  "
        !          34635: ^a     33      2       147
        !          34636: ~a     33      2       148
        !          34637: Ua     33      2       150
        !          34638: .a     33      2       151
        !          34639: oa     33      2       154
        !          34640: "a     33      2       157
        !          34641: Ca     33      1       158
        !          34642: va     33      2       159
        !          34643: 0707070014231124131006440057030057030000010446200522627502100002600000006123post.src/devLatin1/HLname HL
        !          34644: fontname Helvetica-Light
        !          34645: spacewidth 28
        !          34646: charset
        !          34647: !      33      2       33
        !          34648: "      28      2       34
        !          34649: dq     "
        !          34650: #      56      2       35
        !          34651: $      56      2       36
        !          34652: %      89      2       37
        !          34653: &      67      2       38
        !          34654: '      22      2       39
        !          34655: (      33      3       40
        !          34656: )      33      3       41
        !          34657: *      39      2       42
        !          34658: +      66      0       43
        !          34659: ,      28      1       44
        !          34660: -      33      0       173
        !          34661: \0255  "
        !          34662: .      28      0       46
        !          34663: /      28      2       47
        !          34664: 0      56      2       48
        !          34665: 1      56      2       49
        !          34666: 2      56      2       50
        !          34667: 3      56      2       51
        !          34668: 4      56      2       52
        !          34669: 5      56      2       53
        !          34670: 6      56      2       54
        !          34671: 7      56      2       55
        !          34672: 8      56      2       56
        !          34673: 9      56      2       57
        !          34674: :      28      0       58
        !          34675: ;      28      1       59
        !          34676: ---    66      0       60
        !          34677: =      66      0       61
        !          34678: ---    66      0       62
        !          34679: ?      50      2       63
        !          34680: @      80      2       64
        !          34681: A      67      2       65
        !          34682: B      67      2       66
        !          34683: C      72      2       67
        !          34684: D      72      2       68
        !          34685: E      61      2       69
        !          34686: F      56      2       70
        !          34687: G      78      2       71
        !          34688: H      72      2       72
        !          34689: I      28      2       73
        !          34690: J      50      2       74
        !          34691: K      67      2       75
        !          34692: L      56      2       76
        !          34693: M      83      2       77
        !          34694: N      72      2       78
        !          34695: O      78      2       79
        !          34696: P      61      2       80
        !          34697: Q      78      2       81
        !          34698: R      67      2       82
        !          34699: S      61      2       83
        !          34700: T      56      2       84
        !          34701: U      72      2       85
        !          34702: V      61      2       86
        !          34703: W      89      2       87
        !          34704: X      61      2       88
        !          34705: Y      61      2       89
        !          34706: Z      61      2       90
        !          34707: [      33      3       91
        !          34708: \      28      2       92
        !          34709: bs     "
        !          34710: ]      33      3       93
        !          34711: ^      33      2       147
        !          34712: ---    66      2       94
        !          34713: ---    50      1       95
        !          34714: `      22      2       96
        !          34715: a      56      0       97
        !          34716: b      61      2       98
        !          34717: c      56      0       99
        !          34718: d      61      2       100
        !          34719: e      56      0       101
        !          34720: f      28      2       102
        !          34721: g      61      1       103
        !          34722: h      56      2       104
        !          34723: i      22      2       105
        !          34724: j      22      3       106
        !          34725: k      50      2       107
        !          34726: l      22      2       108
        !          34727: m      83      0       109
        !          34728: n      56      0       110
        !          34729: o      56      0       111
        !          34730: p      61      1       112
        !          34731: q      61      1       113
        !          34732: r      33      0       114
        !          34733: s      50      0       115
        !          34734: t      28      2       116
        !          34735: u      56      0       117
        !          34736: v      50      0       118
        !          34737: w      72      0       119
        !          34738: x      50      0       120
        !          34739: y      50      1       121
        !          34740: z      50      0       122
        !          34741: {      33      3       123
        !          34742: ---    22      2       124
        !          34743: }      33      3       125
        !          34744: ~      33      2       148
        !          34745: ---    66      0       126
        !          34746: \`     33      2       145
        !          34747: ga     "
        !          34748: !!     33      1       161
        !          34749: \0241  "
        !          34750: c|     56      3       162
        !          34751: \0242  "
        !          34752: ct     "
        !          34753: L-     56      2       163
        !          34754: \0243  "
        !          34755: ps     "
        !          34756: xo     56      0       164
        !          34757: \0244  "
        !          34758: cr     "
        !          34759: Y-     56      2       165
        !          34760: \0245  "
        !          34761: yn     "
        !          34762: ||     22      2       166
        !          34763: \0246  "
        !          34764: so     56      3       167
        !          34765: \0247  "
        !          34766: sc     "
        !          34767: ""     33      2       168
        !          34768: \0250  "
        !          34769: :a     "
        !          34770: co     80      2       169
        !          34771: \0251  "
        !          34772: a_     33      2       170
        !          34773: \0252  "
        !          34774: <<     56      0       171
        !          34775: \0253  "
        !          34776: -,     66      0       172
        !          34777: \0254  "
        !          34778: hy     33      0       173
        !          34779: \0255  "
        !          34780: --     66      0       45
        !          34781: ro     80      2       174
        !          34782: \0256  "
        !          34783: rg     "
        !          34784: -^     33      2       175
        !          34785: \0257  "
        !          34786: -a     "
        !          34787: 0^     40      2       176
        !          34788: \0260  "
        !          34789: +-     66      0       177
        !          34790: \0261  "
        !          34791: 2^     33      2       178
        !          34792: \0262  "
        !          34793: 3^     33      2       179
        !          34794: \0263  "
        !          34795: \'     33      2       180
        !          34796: \0264  "
        !          34797: aa     "
        !          34798: /u     56      1       181
        !          34799: \0265  "
        !          34800: P!     65      3       182
        !          34801: \0266  "
        !          34802: pg     "
        !          34803: .^     28      0       183
        !          34804: \0267  "
        !          34805: ,,     33      1       184
        !          34806: \0270  "
        !          34807: ,a     "
        !          34808: 1^     33      2       185
        !          34809: \0271  "
        !          34810: o_     33      2       186
        !          34811: \0272  "
        !          34812: >>     56      0       187
        !          34813: \0273  "
        !          34814: 14     83      2       188
        !          34815: \0274  "
        !          34816: 12     83      2       189
        !          34817: \0275  "
        !          34818: 34     83      2       190
        !          34819: \0276  "
        !          34820: ??     50      1       191
        !          34821: \0277  "
        !          34822: A`     67      2       192
        !          34823: \0300  "
        !          34824: A'     67      2       193
        !          34825: \0301  "
        !          34826: A^     67      2       194
        !          34827: \0302  "
        !          34828: A~     67      2       195
        !          34829: \0303  "
        !          34830: A"     67      2       196
        !          34831: \0304  "
        !          34832: A*     67      2       197
        !          34833: \0305  "
        !          34834: AE     100     2       198
        !          34835: \0306  "
        !          34836: C,     72      3       199
        !          34837: \0307  "
        !          34838: E`     61      2       200
        !          34839: \0310  "
        !          34840: E'     61      2       201
        !          34841: \0311  "
        !          34842: E^     61      2       202
        !          34843: \0312  "
        !          34844: E"     61      2       203
        !          34845: \0313  "
        !          34846: I`     28      2       204
        !          34847: \0314  "
        !          34848: I'     28      2       205
        !          34849: \0315  "
        !          34850: I^     28      2       206
        !          34851: \0316  "
        !          34852: I"     28      2       207
        !          34853: \0317  "
        !          34854: D-     72      2       208
        !          34855: \0320  "
        !          34856: N~     72      2       209
        !          34857: \0321  "
        !          34858: O`     78      2       210
        !          34859: \0322  "
        !          34860: O'     78      2       211
        !          34861: \0323  "
        !          34862: O^     78      2       212
        !          34863: \0324  "
        !          34864: O~     78      2       213
        !          34865: \0325  "
        !          34866: O"     78      2       214
        !          34867: \0326  "
        !          34868: xx     66      0       215
        !          34869: \0327  "
        !          34870: O/     78      2       216
        !          34871: \0330  "
        !          34872: U`     72      2       217
        !          34873: \0331  "
        !          34874: U'     72      2       218
        !          34875: \0332  "
        !          34876: U^     72      2       219
        !          34877: \0333  "
        !          34878: U"     72      2       220
        !          34879: \0334  "
        !          34880: Y'     61      2       221
        !          34881: \0335  "
        !          34882: TH     61      2       222
        !          34883: \0336  "
        !          34884: ss     50      2       223
        !          34885: \0337  "
        !          34886: a`     56      2       224
        !          34887: \0340  "
        !          34888: a'     56      2       225
        !          34889: \0341  "
        !          34890: a^     56      2       226
        !          34891: \0342  "
        !          34892: a~     56      2       227
        !          34893: \0343  "
        !          34894: a"     56      2       228
        !          34895: \0344  "
        !          34896: a*     56      2       229
        !          34897: \0345  "
        !          34898: ae     89      0       230
        !          34899: \0346  "
        !          34900: c,     56      1       231
        !          34901: \0347  "
        !          34902: e`     56      2       232
        !          34903: \0350  "
        !          34904: e'     56      2       233
        !          34905: \0351  "
        !          34906: e^     56      2       234
        !          34907: \0352  "
        !          34908: e"     56      2       235
        !          34909: \0353  "
        !          34910: i`     22      2       236
        !          34911: \0354  "
        !          34912: i'     22      2       237
        !          34913: \0355  "
        !          34914: i^     22      2       238
        !          34915: \0356  "
        !          34916: i"     22      2       239
        !          34917: \0357  "
        !          34918: d-     56      2       240
        !          34919: \0360  "
        !          34920: n~     56      2       241
        !          34921: \0361  "
        !          34922: o`     56      2       242
        !          34923: \0362  "
        !          34924: o'     56      2       243
        !          34925: \0363  "
        !          34926: o^     56      2       244
        !          34927: \0364  "
        !          34928: o~     56      2       245
        !          34929: \0365  "
        !          34930: o"     56      2       246
        !          34931: \0366  "
        !          34932: -:     66      0       247
        !          34933: \0367  "
        !          34934: o/     56      0       248
        !          34935: \0370  "
        !          34936: u`     56      2       249
        !          34937: \0371  "
        !          34938: u'     56      2       250
        !          34939: \0372  "
        !          34940: u^     56      2       251
        !          34941: \0373  "
        !          34942: u"     56      2       252
        !          34943: \0374  "
        !          34944: y'     50      3       253
        !          34945: \0375  "
        !          34946: th     61      3       254
        !          34947: \0376  "
        !          34948: y"     50      3       255
        !          34949: \0377  "
        !          34950: ^a     33      2       147
        !          34951: ~a     33      2       148
        !          34952: Ua     33      2       150
        !          34953: .a     33      2       151
        !          34954: oa     33      2       154
        !          34955: "a     33      2       157
        !          34956: Ca     33      1       158
        !          34957: va     33      2       159
        !          34958: 0707070014231124141006440057030057030000010446400522627502100004200000053476post.src/devLatin1/shell.lib.last#
        !          34959: # Shell library - for building devLatin1 tables.
        !          34960: #
        !          34961: # The full ISO Latin1 alphabet appeared in Adobe's interpreter sometime
        !          34962: # around Version 50.0. Prior to that ROM resident Type 1 text fonts were
        !          34963: # missing 18 characters that are now part of the Latin1 standard. Width
        !          34964: # tables will not build on printers that lack full Latin1 support. Error
        !          34965: # message will likely reflect a missing ISOLatin1Encoding array.
        !          34966: #
        !          34967: 
        !          34968: RESOLUTION=720
        !          34969: UNITWIDTH=10
        !          34970: 
        !          34971: OCTALESCAPES=${OCTALESCAPES:-160}      # <= code means add \0ddd names
        !          34972: DOWNLOADVECTOR=FALSE                   # TRUE can mean incomplete tables
        !          34973: 
        !          34974: #
        !          34975: # BuiltinTables returns command lines that generate PostScript programs
        !          34976: # for building a typesetter description file and font width tables for
        !          34977: # a relatively standard collection of fonts. Use awk to select a command
        !          34978: # line or modify an existing command to build a width table for a new
        !          34979: # font.
        !          34980: #
        !          34981: 
        !          34982: BuiltinTables() {
        !          34983:        cat <<-'//End of BuiltinTables'
        !          34984:                Proportional    R       Times-Roman
        !          34985:                Proportional    I       Times-Italic
        !          34986:                Proportional    B       Times-Bold
        !          34987:                Proportional    BI      Times-BoldItalic
        !          34988:                Proportional    AB      AvantGarde-Demi
        !          34989:                Proportional    AI      AvantGarde-BookOblique
        !          34990:                Proportional    AR      AvantGarde-Book
        !          34991:                Proportional    AX      AvantGarde-DemiOblique
        !          34992:                Proportional    H       Helvetica
        !          34993:                Proportional    HB      Helvetica-Bold
        !          34994:                Proportional    HI      Helvetica-Oblique
        !          34995:                Proportional    HX      Helvetica-BoldOblique
        !          34996:                Proportional    Hb      Helvetica-Narrow-Bold
        !          34997:                Proportional    Hi      Helvetica-Narrow-Oblique
        !          34998:                Proportional    Hr      Helvetica-Narrow
        !          34999:                Proportional    Hx      Helvetica-Narrow-BoldOblique
        !          35000:                Proportional    KB      Bookman-Demi
        !          35001:                Proportional    KI      Bookman-LightItalic
        !          35002:                Proportional    KR      Bookman-Light
        !          35003:                Proportional    KX      Bookman-DemiItalic
        !          35004:                Proportional    NB      NewCenturySchlbk-Bold
        !          35005:                Proportional    NI      NewCenturySchlbk-Italic
        !          35006:                Proportional    NR      NewCenturySchlbk-Roman
        !          35007:                Proportional    NX      NewCenturySchlbk-BoldItalic
        !          35008:                Proportional    PA      Palatino-Roman
        !          35009:                Proportional    PB      Palatino-Bold
        !          35010:                Proportional    PI      Palatino-Italic
        !          35011:                Proportional    PX      Palatino-BoldItalic
        !          35012:                Proportional    ZI      ZapfChancery-MediumItalic
        !          35013:                FixedWidth      C       Courier
        !          35014:                FixedWidth      CB      Courier-Bold
        !          35015:                FixedWidth      CI      Courier-Oblique
        !          35016:                FixedWidth      CO      Courier
        !          35017:                FixedWidth      CW      Courier
        !          35018:                FixedWidth      CX      Courier-BoldOblique
        !          35019:                Dingbats        ZD      ZapfDingbats
        !          35020:                Greek           GR      Symbol
        !          35021:                Symbol          S       Symbol
        !          35022:                Special         S1      Times-Roman
        !          35023:                Description     DESC    ---
        !          35024:        //End of BuiltinTables
        !          35025: }
        !          35026: 
        !          35027: #
        !          35028: # AllTables prints the complete list of builtin font names.
        !          35029: #
        !          35030: 
        !          35031: AllTables() {
        !          35032:        BuiltinTables | awk '{print $2}'
        !          35033: }
        !          35034: 
        !          35035: #
        !          35036: # Charset functions generate keyword/value pairs (as PostScript objects)
        !          35037: # that describe the character set available in a font. The keyword is a
        !          35038: # PostScript string that represents troff's name for the character. The
        !          35039: # value is usually the literal name (i.e. begins with a /) assigned to
        !          35040: # the character in the PostScript font. The value can also be an integer
        !          35041: # or a PostScript string. An integer value is used as an index in the
        !          35042: # current font's Encoding array. A string value is returned to the host
        !          35043: # unchanged when the entry for the character is constructed. Entries that
        !          35044: # have (") as their value are synonyms for the preceeding character.
        !          35045: #
        !          35046: # The 18 characters missing from ROM resident fonts on older printers are
        !          35047: # flagged with the PostScript comment "% missing".
        !          35048: #
        !          35049: 
        !          35050: StandardCharset() {
        !          35051:        cat <<-'//End of StandardCharset'
        !          35052:                (!)     /exclam
        !          35053:                (")     /quotedbl
        !          35054:                (#)     /numbersign
        !          35055:                ($)     /dollar
        !          35056:                (%)     /percent
        !          35057:                (&)     /ampersand
        !          35058:                (')     /quoteright
        !          35059:                (\()    /parenleft
        !          35060:                (\))    /parenright
        !          35061:                (*)     /asterisk
        !          35062:                (+)     /plus
        !          35063:                (,)     /comma
        !          35064:                (-)     /hyphen         % changed from minus by request
        !          35065:                (.)     /period
        !          35066:                (/)     /slash
        !          35067:                (0)     /zero
        !          35068:                (1)     /one
        !          35069:                (2)     /two
        !          35070:                (3)     /three
        !          35071:                (4)     /four
        !          35072:                (5)     /five
        !          35073:                (6)     /six
        !          35074:                (7)     /seven
        !          35075:                (8)     /eight
        !          35076:                (9)     /nine
        !          35077:                (:)     /colon
        !          35078:                (;)     /semicolon
        !          35079:                (<)     /less
        !          35080:                (=)     /equal
        !          35081:                (>)     /greater
        !          35082:                (?)     /question
        !          35083:                (@)     /at
        !          35084:                (A)     /A
        !          35085:                (B)     /B
        !          35086:                (C)     /C
        !          35087:                (D)     /D
        !          35088:                (E)     /E
        !          35089:                (F)     /F
        !          35090:                (G)     /G
        !          35091:                (H)     /H
        !          35092:                (I)     /I
        !          35093:                (J)     /J
        !          35094:                (K)     /K
        !          35095:                (L)     /L
        !          35096:                (M)     /M
        !          35097:                (N)     /N
        !          35098:                (O)     /O
        !          35099:                (P)     /P
        !          35100:                (Q)     /Q
        !          35101:                (R)     /R
        !          35102:                (S)     /S
        !          35103:                (T)     /T
        !          35104:                (U)     /U
        !          35105:                (V)     /V
        !          35106:                (W)     /W
        !          35107:                (X)     /X
        !          35108:                (Y)     /Y
        !          35109:                (Z)     /Z
        !          35110:                ([)     /bracketleft
        !          35111:                (\\)    /backslash
        !          35112:                (])     /bracketright
        !          35113:                (^)     /asciicircum
        !          35114:                (_)     /underscore
        !          35115:                (`)     /quoteleft
        !          35116:                (a)     /a
        !          35117:                (b)     /b
        !          35118:                (c)     /c
        !          35119:                (d)     /d
        !          35120:                (e)     /e
        !          35121:                (f)     /f
        !          35122:                (g)     /g
        !          35123:                (h)     /h
        !          35124:                (i)     /i
        !          35125:                (j)     /j
        !          35126:                (k)     /k
        !          35127:                (l)     /l
        !          35128:                (m)     /m
        !          35129:                (n)     /n
        !          35130:                (o)     /o
        !          35131:                (p)     /p
        !          35132:                (q)     /q
        !          35133:                (r)     /r
        !          35134:                (s)     /s
        !          35135:                (t)     /t
        !          35136:                (u)     /u
        !          35137:                (v)     /v
        !          35138:                (w)     /w
        !          35139:                (x)     /x
        !          35140:                (y)     /y
        !          35141:                (z)     /z
        !          35142:                ({)     /braceleft
        !          35143:                (|)     /bar
        !          35144:                (})     /braceright
        !          35145:                (~)     /asciitilde
        !          35146:                (\\`)   /grave                  % devpost character
        !          35147:                (ga)    (")                     % synonym
        !          35148:                (!!)    /exclamdown
        !          35149:                (c|)    /cent
        !          35150:                (ct)    (")                     % devpost synonym
        !          35151:                (L-)    /sterling
        !          35152:                (ps)    (")                     % devpost synonym
        !          35153:                (xo)    /currency
        !          35154:                (cr)    (")                     % devpost synonym
        !          35155:                (Y-)    /yen
        !          35156:                (yn)    (")                     % devpost synonym
        !          35157:                (||)    /brokenbar              % missing
        !          35158:                (so)    /section
        !          35159:                (sc)    (")                     % devpost synonym
        !          35160:                ("")    /dieresis
        !          35161:                (:a)    (")                     % devpost synonym
        !          35162:                (co)    /copyright
        !          35163:                (a_)    /ordfeminine
        !          35164:                (<<)    /guillemotleft
        !          35165:                (-,)    /logicalnot
        !          35166:                (hy)    /hyphen
        !          35167:                (--)    (")                     % synonym
        !          35168:                (ro)    /registered
        !          35169:                (rg)    (")                     % devpost synonym
        !          35170:                (-^)    /macron
        !          35171:                (-a)    (")                     % devpost synonym
        !          35172:                (0^)    /degree                 % missing
        !          35173:                (+-)    /plusminus              % missing
        !          35174:                (2^)    /twosuperior            % missing
        !          35175:                (3^)    /threesuperior          % missing
        !          35176:                (\\')   /acute
        !          35177:                (aa)    (")                     % devpost synonym
        !          35178:                (/u)    /mu                     % missing
        !          35179:                (P!)    /paragraph
        !          35180:                (pg)    (")                     % devpost synonym
        !          35181:                (.^)    /periodcentered
        !          35182:                (,,)    /cedilla
        !          35183:                (,a)    (")                     % devpost synonym
        !          35184:                (1^)    /onesuperior            % missing
        !          35185:                (o_)    /ordmasculine
        !          35186:                (>>)    /guillemotright
        !          35187:                (14)    /onequarter             % missing
        !          35188:                (12)    /onehalf                % missing
        !          35189:                (34)    /threequarters          % missing
        !          35190:                (??)    /questiondown
        !          35191:                (A`)    /Agrave
        !          35192:                (A')    /Aacute
        !          35193:                (A^)    /Acircumflex
        !          35194:                (A~)    /Atilde
        !          35195:                (A")    /Adieresis
        !          35196:                (A*)    /Aring
        !          35197:                (AE)    /AE
        !          35198:                (C,)    /Ccedilla
        !          35199:                (E`)    /Egrave
        !          35200:                (E')    /Eacute
        !          35201:                (E^)    /Ecircumflex
        !          35202:                (E")    /Edieresis
        !          35203:                (I`)    /Igrave
        !          35204:                (I')    /Iacute
        !          35205:                (I^)    /Icircumflex
        !          35206:                (I")    /Idieresis
        !          35207:                (D-)    /Eth                    % missing
        !          35208:                (N~)    /Ntilde
        !          35209:                (O`)    /Ograve
        !          35210:                (O')    /Oacute
        !          35211:                (O^)    /Ocircumflex
        !          35212:                (O~)    /Otilde
        !          35213:                (O")    /Odieresis
        !          35214:                (xx)    /multiply               % missing
        !          35215:                (O/)    /Oslash
        !          35216:                (U`)    /Ugrave
        !          35217:                (U')    /Uacute
        !          35218:                (U^)    /Ucircumflex
        !          35219:                (U")    /Udieresis
        !          35220:                (Y')    /Yacute                 % missing
        !          35221:                (TH)    /Thorn                  % missing
        !          35222:                (ss)    /germandbls
        !          35223:                (a`)    /agrave
        !          35224:                (a')    /aacute
        !          35225:                (a^)    /acircumflex
        !          35226:                (a~)    /atilde
        !          35227:                (a")    /adieresis
        !          35228:                (a*)    /aring
        !          35229:                (ae)    /ae
        !          35230:                (c,)    /ccedilla
        !          35231:                (e`)    /egrave
        !          35232:                (e')    /eacute
        !          35233:                (e^)    /ecircumflex
        !          35234:                (e")    /edieresis
        !          35235:                (i`)    /igrave
        !          35236:                (i')    /iacute
        !          35237:                (i^)    /icircumflex
        !          35238:                (i")    /idieresis
        !          35239:                (d-)    /eth                    % missing
        !          35240:                (n~)    /ntilde
        !          35241:                (o`)    /ograve
        !          35242:                (o')    /oacute
        !          35243:                (o^)    /ocircumflex
        !          35244:                (o~)    /otilde
        !          35245:                (o")    /odieresis
        !          35246:                (-:)    /divide                 % missing
        !          35247:                (o/)    /oslash
        !          35248:                (u`)    /ugrave
        !          35249:                (u')    /uacute
        !          35250:                (u^)    /ucircumflex
        !          35251:                (u")    /udieresis
        !          35252:                (y')    /yacute                 % missing
        !          35253:                (th)    /thorn                  % missing
        !          35254:                (y")    /ydieresis
        !          35255:                (^a)    /circumflex             % devpost accent
        !          35256:                (~a)    /tilde                  % devpost accent
        !          35257:                (Ua)    /breve                  % devpost accent
        !          35258:                (.a)    /dotaccent              % devpost accent
        !          35259:                (oa)    /ring                   % devpost accent
        !          35260:                ("a)    /hungarumlaut           % devpost accent
        !          35261:                (Ca)    /ogonek                 % devpost accent
        !          35262:                (va)    /caron                  % devpost accent
        !          35263:        //End of StandardCharset
        !          35264: }
        !          35265: 
        !          35266: #
        !          35267: # DingbatsCharset guarantees changes in StandardCharset don't show up in ZD.
        !          35268: #
        !          35269: 
        !          35270: DingbatsCharset() {
        !          35271:        cat <<-'//End of DingbatsCharset'
        !          35272:                (!)     /exclam
        !          35273:                (")     /quotedbl
        !          35274:                (#)     /numbersign
        !          35275:                ($)     /dollar
        !          35276:                (%)     /percent
        !          35277:                (&)     /ampersand
        !          35278:                (')     /quoteright
        !          35279:                (\()    /parenleft
        !          35280:                (\))    /parenright
        !          35281:                (*)     /asterisk
        !          35282:                (+)     /plus
        !          35283:                (,)     /comma
        !          35284:                (-)     /minus          % also hyphen in devpost
        !          35285:                (.)     /period
        !          35286:                (/)     /slash
        !          35287:                (0)     /zero
        !          35288:                (1)     /one
        !          35289:                (2)     /two
        !          35290:                (3)     /three
        !          35291:                (4)     /four
        !          35292:                (5)     /five
        !          35293:                (6)     /six
        !          35294:                (7)     /seven
        !          35295:                (8)     /eight
        !          35296:                (9)     /nine
        !          35297:                (:)     /colon
        !          35298:                (;)     /semicolon
        !          35299:                (<)     /less
        !          35300:                (=)     /equal
        !          35301:                (>)     /greater
        !          35302:                (?)     /question
        !          35303:                (@)     /at
        !          35304:                (A)     /A
        !          35305:                (B)     /B
        !          35306:                (C)     /C
        !          35307:                (D)     /D
        !          35308:                (E)     /E
        !          35309:                (F)     /F
        !          35310:                (G)     /G
        !          35311:                (H)     /H
        !          35312:                (I)     /I
        !          35313:                (J)     /J
        !          35314:                (K)     /K
        !          35315:                (L)     /L
        !          35316:                (M)     /M
        !          35317:                (N)     /N
        !          35318:                (O)     /O
        !          35319:                (P)     /P
        !          35320:                (Q)     /Q
        !          35321:                (R)     /R
        !          35322:                (S)     /S
        !          35323:                (T)     /T
        !          35324:                (U)     /U
        !          35325:                (V)     /V
        !          35326:                (W)     /W
        !          35327:                (X)     /X
        !          35328:                (Y)     /Y
        !          35329:                (Z)     /Z
        !          35330:                ([)     /bracketleft
        !          35331:                (\\)    /backslash
        !          35332:                (])     /bracketright
        !          35333:                (^)     /asciicircum
        !          35334:                (_)     /underscore
        !          35335:                (`)     /quoteleft
        !          35336:                (a)     /a
        !          35337:                (b)     /b
        !          35338:                (c)     /c
        !          35339:                (d)     /d
        !          35340:                (e)     /e
        !          35341:                (f)     /f
        !          35342:                (g)     /g
        !          35343:                (h)     /h
        !          35344:                (i)     /i
        !          35345:                (j)     /j
        !          35346:                (k)     /k
        !          35347:                (l)     /l
        !          35348:                (m)     /m
        !          35349:                (n)     /n
        !          35350:                (o)     /o
        !          35351:                (p)     /p
        !          35352:                (q)     /q
        !          35353:                (r)     /r
        !          35354:                (s)     /s
        !          35355:                (t)     /t
        !          35356:                (u)     /u
        !          35357:                (v)     /v
        !          35358:                (w)     /w
        !          35359:                (x)     /x
        !          35360:                (y)     /y
        !          35361:                (z)     /z
        !          35362:                ({)     /braceleft
        !          35363:                (|)     /bar
        !          35364:                (})     /braceright
        !          35365:                (~)     /asciitilde
        !          35366:                (\\`)   /grave                  % devpost character
        !          35367:                (ga)    (")                     % synonym
        !          35368:                (!!)    /exclamdown
        !          35369:                (c|)    /cent
        !          35370:                (ct)    (")                     % devpost synonym
        !          35371:                (L-)    /sterling
        !          35372:                (ps)    (")                     % devpost synonym
        !          35373:                (xo)    /currency
        !          35374:                (cr)    (")                     % devpost synonym
        !          35375:                (Y-)    /yen
        !          35376:                (yn)    (")                     % devpost synonym
        !          35377:                (||)    /brokenbar              % missing
        !          35378:                (so)    /section
        !          35379:                (sc)    (")                     % devpost synonym
        !          35380:                ("")    /dieresis
        !          35381:                (co)    /copyright
        !          35382:                (a_)    /ordfeminine
        !          35383:                (<<)    /guillemotleft
        !          35384:                (-,)    /logicalnot
        !          35385:                (hy)    /hyphen
        !          35386:                (--)    (")                     % synonym
        !          35387:                (ro)    /registered
        !          35388:                (rg)    (")                     % devpost synonym
        !          35389:                (-^)    /macron
        !          35390:                (0^)    /degree                 % missing
        !          35391:                (+-)    /plusminus              % missing
        !          35392:                (2^)    /twosuperior            % missing
        !          35393:                (3^)    /threesuperior          % missing
        !          35394:                (\\')   /acute
        !          35395:                (aa)    (")                     % devpost synonym
        !          35396:                (/u)    /mu                     % missing
        !          35397:                (P!)    /paragraph
        !          35398:                (pg)    (")                     % devpost synonym
        !          35399:                (.^)    /periodcentered
        !          35400:                (,,)    /cedilla
        !          35401:                (1^)    /onesuperior            % missing
        !          35402:                (o_)    /ordmasculine
        !          35403:                (>>)    /guillemotright
        !          35404:                (14)    /onequarter             % missing
        !          35405:                (12)    /onehalf                % missing
        !          35406:                (34)    /threequarters          % missing
        !          35407:                (??)    /questiondown
        !          35408:                (A`)    /Agrave
        !          35409:                (A')    /Aacute
        !          35410:                (A^)    /Acircumflex
        !          35411:                (A~)    /Atilde
        !          35412:                (A")    /Adieresis
        !          35413:                (A*)    /Aring
        !          35414:                (AE)    /AE
        !          35415:                (C,)    /Ccedilla
        !          35416:                (E`)    /Egrave
        !          35417:                (E')    /Eacute
        !          35418:                (E^)    /Ecircumflex
        !          35419:                (E")    /Edieresis
        !          35420:                (I`)    /Igrave
        !          35421:                (I')    /Iacute
        !          35422:                (I^)    /Icircumflex
        !          35423:                (I")    /Idieresis
        !          35424:                (D-)    /Eth                    % missing
        !          35425:                (N~)    /Ntilde
        !          35426:                (O`)    /Ograve
        !          35427:                (O')    /Oacute
        !          35428:                (O^)    /Ocircumflex
        !          35429:                (O~)    /Otilde
        !          35430:                (O")    /Odieresis
        !          35431:                (xx)    /multiply               % missing
        !          35432:                (O/)    /Oslash
        !          35433:                (U`)    /Ugrave
        !          35434:                (U')    /Uacute
        !          35435:                (U^)    /Ucircumflex
        !          35436:                (U")    /Udieresis
        !          35437:                (Y')    /Yacute                 % missing
        !          35438:                (TH)    /Thorn                  % missing
        !          35439:                (ss)    /germandbls
        !          35440:                (a`)    /agrave
        !          35441:                (a')    /aacute
        !          35442:                (a^)    /acircumflex
        !          35443:                (a~)    /atilde
        !          35444:                (a")    /adieresis
        !          35445:                (a*)    /aring
        !          35446:                (ae)    /ae
        !          35447:                (c,)    /ccedilla
        !          35448:                (e`)    /egrave
        !          35449:                (e')    /eacute
        !          35450:                (e^)    /ecircumflex
        !          35451:                (e")    /edieresis
        !          35452:                (i`)    /igrave
        !          35453:                (i')    /iacute
        !          35454:                (i^)    /icircumflex
        !          35455:                (i")    /idieresis
        !          35456:                (d-)    /eth                    % missing
        !          35457:                (n~)    /ntilde
        !          35458:                (o`)    /ograve
        !          35459:                (o')    /oacute
        !          35460:                (o^)    /ocircumflex
        !          35461:                (o~)    /otilde
        !          35462:                (o")    /odieresis
        !          35463:                (-:)    /divide                 % missing
        !          35464:                (o/)    /oslash
        !          35465:                (u`)    /ugrave
        !          35466:                (u')    /uacute
        !          35467:                (u^)    /ucircumflex
        !          35468:                (u")    /udieresis
        !          35469:                (y')    /yacute                 % missing
        !          35470:                (th)    /thorn                  % missing
        !          35471:                (y")    /ydieresis
        !          35472:        //End of DingbatsCharset
        !          35473: }
        !          35474: 
        !          35475: SymbolCharset() {
        !          35476:        cat <<-'//End of SymbolCharset'
        !          35477:                (---)   /exclam
        !          35478:                (fa)    /universal
        !          35479:                (---)   /numbersign
        !          35480:                (te)    /existential
        !          35481:                (---)   /percent
        !          35482:                (---)   /ampersand
        !          35483:                (st)    /suchthat
        !          35484:                (---)   /parenleft
        !          35485:                (---)   /parenright
        !          35486:                (**)    /asteriskmath
        !          35487:                (pl)    /plus
        !          35488:                (---)   /comma
        !          35489:                (mi)    /minus
        !          35490:                (---)   /period
        !          35491:                (sl)    /slash
        !          35492:                (---)   /zero
        !          35493:                (---)   /one
        !          35494:                (---)   /two
        !          35495:                (---)   /three
        !          35496:                (---)   /four
        !          35497:                (---)   /five
        !          35498:                (---)   /six
        !          35499:                (---)   /seven
        !          35500:                (---)   /eight
        !          35501:                (---)   /nine
        !          35502:                (---)   /colon
        !          35503:                (---)   /semicolon
        !          35504:                (<)     /less
        !          35505:                (eq)    /equal
        !          35506:                (>)     /greater
        !          35507:                (---)   /question
        !          35508:                (cg)    /congruent
        !          35509:                (*A)    /Alpha
        !          35510:                (*B)    /Beta
        !          35511:                (*X)    /Chi
        !          35512:                (*D)    /Delta
        !          35513:                (*E)    /Epsilon
        !          35514:                (*F)    /Phi
        !          35515:                (*G)    /Gamma
        !          35516:                (*Y)    /Eta
        !          35517:                (*I)    /Iota
        !          35518:                (---)   /theta1
        !          35519:                (*K)    /Kappa
        !          35520:                (*L)    /Lambda
        !          35521:                (*M)    /Mu
        !          35522:                (*N)    /Nu
        !          35523:                (*O)    /Omicron
        !          35524:                (*P)    /Pi
        !          35525:                (*H)    /Theta
        !          35526:                (*R)    /Rho
        !          35527:                (*S)    /Sigma
        !          35528:                (*T)    /Tau
        !          35529:                (*U)    /Upsilon
        !          35530:                (ts)    /sigma1
        !          35531:                (*W)    /Omega
        !          35532:                (*C)    /Xi
        !          35533:                (*Q)    /Psi
        !          35534:                (*Z)    /Zeta
        !          35535:                (---)   /bracketleft
        !          35536:                (tf)    /therefore
        !          35537:                (---)   /bracketright
        !          35538:                (pp)    /perpendicular
        !          35539:                (ul)    /underscore
        !          35540:                (_)     (")                     % synonym
        !          35541:                (rn)    /radicalex
        !          35542:                (*a)    /alpha
        !          35543:                (*b)    /beta
        !          35544:                (*x)    /chi
        !          35545:                (*d)    /delta
        !          35546:                (*e)    /epsilon
        !          35547:                (*f)    /phi
        !          35548:                (*g)    /gamma
        !          35549:                (*y)    /eta
        !          35550:                (*i)    /iota
        !          35551:                (---)   /phi1
        !          35552:                (*k)    /kappa
        !          35553:                (*l)    /lambda
        !          35554:                (*m)    /mu
        !          35555:                (*n)    /nu
        !          35556:                (*o)    /omicron
        !          35557:                (*p)    /pi
        !          35558:                (*h)    /theta
        !          35559:                (*r)    /rho
        !          35560:                (*s)    /sigma
        !          35561:                (*t)    /tau
        !          35562:                (*u)    /upsilon
        !          35563:                (---)   /omega1
        !          35564:                (*w)    /omega
        !          35565:                (*c)    /xi
        !          35566:                (*q)    /psi
        !          35567:                (*z)    /zeta
        !          35568:                (---)   /braceleft
        !          35569:                (or)    /bar
        !          35570:                (---)   /braceright
        !          35571:                (ap)    /similar
        !          35572:                (---)   /Upsilon1
        !          35573:                (fm)    /minute
        !          35574:                (<=)    /lessequal
        !          35575:                (fr)    /fraction               % devpost character
        !          35576:                (if)    /infinity
        !          35577:                (fn)    /florin                 % devpost character
        !          35578:                (---)   /club
        !          35579:                (---)   /diamond
        !          35580:                (---)   /heart
        !          35581:                (---)   /spade
        !          35582:                (ab)    /arrowboth
        !          35583:                (<-)    /arrowleft
        !          35584:                (ua)    /arrowup
        !          35585:                (->)    /arrowright
        !          35586:                (da)    /arrowdown
        !          35587:                (de)    /degree
        !          35588:                (+-)    /plusminus
        !          35589:                (---)   /second
        !          35590:                (>=)    /greaterequal
        !          35591:                (mu)    /multiply
        !          35592:                (pt)    /proportional
        !          35593:                (pd)    /partialdiff
        !          35594:                (bu)    /bullet
        !          35595:                (di)    /divide
        !          35596:                (!=)    /notequal
        !          35597:                (==)    /equivalence
        !          35598:                (~~)    /approxequal
        !          35599:                (el)    /ellipsis
        !          35600:                (av)    /arrowvertex
        !          35601:                (ah)    /arrowhorizex
        !          35602:                (CR)    /carriagereturn
        !          35603:                (af)    /aleph
        !          35604:                (If)    /Ifraktur
        !          35605:                (Rf)    /Rfraktur
        !          35606:                (ws)    /weierstrass
        !          35607:                (Ox)    /circlemultiply
        !          35608:                (O+)    /circleplus
        !          35609:                (es)    /emptyset
        !          35610:                (ca)    /intersection
        !          35611:                (cu)    /union
        !          35612:                (sp)    /propersuperset
        !          35613:                (ip)    /reflexsuperset
        !          35614:                (!b)    /notsubset
        !          35615:                (sb)    /propersubset
        !          35616:                (ib)    /reflexsubset
        !          35617:                (mo)    /element
        !          35618:                (!m)    /notelement
        !          35619:                (an)    /angle
        !          35620:                (gr)    /gradient
        !          35621:                (rg)    /registerserif
        !          35622:                (co)    /copyrightserif
        !          35623:                (tm)    /trademarkserif
        !          35624:                (---)   /product
        !          35625:                (sr)    /radical
        !          35626:                (c.)    /dotmath
        !          35627:                (no)    /logicalnot
        !          35628:                (l&)    /logicaland
        !          35629:                (l|)    /logicalor
        !          35630:                (---)   /arrowdblboth
        !          35631:                (---)   /arrowdblleft
        !          35632:                (---)   /arrowdblup
        !          35633:                (---)   /arrowdblright
        !          35634:                (---)   /arrowdbldown
        !          35635:                (lz)    /lozenge
        !          35636:                (b<)    /angleleft
        !          35637:                (RG)    /registersans
        !          35638:                (CO)    /copyrightsans
        !          35639:                (TM)    /trademarksans
        !          35640:                (---)   /summation
        !          35641:                (LT)    /parenlefttp
        !          35642:                (br)    /parenleftex
        !          35643:                (LX)    (")                     % synonym
        !          35644:                (LB)    /parenleftbt
        !          35645:                (lc)    /bracketlefttp
        !          35646:                (lx)    /bracketleftex
        !          35647:                (lf)    /bracketleftbt
        !          35648:                (lt)    /bracelefttp
        !          35649:                (lk)    /braceleftmid
        !          35650:                (lb)    /braceleftbt
        !          35651:                (bv)    /braceex
        !          35652:                (|)     (")                     % synonym
        !          35653:                (b>)    /angleright
        !          35654:                (is)    /integral
        !          35655:                (---)   /integraltp
        !          35656:                (---)   /integralex
        !          35657:                (---)   /integralbt
        !          35658:                (RT)    /parenrighttp
        !          35659:                (RX)    /parenrightex
        !          35660:                (RB)    /parenrightbt
        !          35661:                (rc)    /bracketrighttp
        !          35662:                (rx)    /bracketrightex
        !          35663:                (rf)    /bracketrightbt
        !          35664:                (rt)    /bracerighttp
        !          35665:                (rk)    /bracerightmid
        !          35666:                (rb)    /bracerightbt
        !          35667:                (~=)    (55     0       1)      % charlib
        !          35668:        //End of SymbolCharset
        !          35669: }
        !          35670: 
        !          35671: SpecialCharset() {
        !          35672:        cat <<-'//End of SpecialCharset'
        !          35673:                (ru)    /underscore
        !          35674:                ('')    /quotedblright          % devpost character
        !          35675:                (``)    /quotedblleft           % devpost character
        !          35676:                (dg)    /dagger                 % devpost character
        !          35677:                (dd)    /daggerdbl              % devpost character
        !          35678:                (en)    /endash                 % devpost character
        !          35679:                (\\-)   (")                     % synonym
        !          35680:                (em)    /emdash
        !          35681: %              (ff)    (60     2       1)      % charlib
        !          35682: %              (Fi)    (84     2       1)      % charlib
        !          35683: %              (Fl)    (84     2       1)      % charlib
        !          35684:                (14)    (75     2       1)      % charlib
        !          35685:                (12)    (75     2       1)      % charlib
        !          35686:                (34)    (75     2       1)      % charlib
        !          35687:                (bx)    (50     2       1)      % charlib
        !          35688:                (ob)    (38     2       1)      % charlib
        !          35689:                (ci)    (75     0       1)      % charlib
        !          35690:                (sq)    (50     2       1)      % charlib
        !          35691:                (Sl)    (50     2       1)      % charlib
        !          35692:                (L1)    (110    1       2)      % charlib
        !          35693:                (LA)    (110    1       2)      % charlib
        !          35694:                (LV)    (110    3       1)      % charlib
        !          35695:                (LH)    (210    1       1)      % charlib
        !          35696:                (lh)    (100    0       1)      % charlib
        !          35697:                (rh)    (100    0       1)      % charlib
        !          35698:                (lH)    (100    0       1)      % charlib
        !          35699:                (rH)    (100    0       1)      % charlib
        !          35700:                (PC)    (220    2       1)      % charlib
        !          35701:                (DG)    (185    2       1)      % charlib
        !          35702:        //End of SpecialCharset
        !          35703: }
        !          35704: 
        !          35705: #
        !          35706: # Latin1 ensures a font uses the ISOLatin1Encoding vector, although only
        !          35707: # text fonts should be re-encoded. Downloading the Encoding vector doesn't
        !          35708: # often make sense. No ISOLatin1Encoding array likely means ROM based fonts
        !          35709: # on your printer are incomplete. Type 1 fonts with a full Latin1 character
        !          35710: # set appeared sometime after Version 50.0.
        !          35711: #
        !          35712: 
        !          35713: Latin1() {
        !          35714:        if [ "$DOWNLOADVECTOR" = TRUE ]; then
        !          35715:                cat <<-'//End of ISOLatin1Encoding'
        !          35716:                        /ISOLatin1Encoding [
        !          35717:                                /.notdef
        !          35718:                                /.notdef
        !          35719:                                /.notdef
        !          35720:                                /.notdef
        !          35721:                                /.notdef
        !          35722:                                /.notdef
        !          35723:                                /.notdef
        !          35724:                                /.notdef
        !          35725:                                /.notdef
        !          35726:                                /.notdef
        !          35727:                                /.notdef
        !          35728:                                /.notdef
        !          35729:                                /.notdef
        !          35730:                                /.notdef
        !          35731:                                /.notdef
        !          35732:                                /.notdef
        !          35733:                                /.notdef
        !          35734:                                /.notdef
        !          35735:                                /.notdef
        !          35736:                                /.notdef
        !          35737:                                /.notdef
        !          35738:                                /.notdef
        !          35739:                                /.notdef
        !          35740:                                /.notdef
        !          35741:                                /.notdef
        !          35742:                                /.notdef
        !          35743:                                /.notdef
        !          35744:                                /.notdef
        !          35745:                                /.notdef
        !          35746:                                /.notdef
        !          35747:                                /.notdef
        !          35748:                                /.notdef
        !          35749:                                /space
        !          35750:                                /exclam
        !          35751:                                /quotedbl
        !          35752:                                /numbersign
        !          35753:                                /dollar
        !          35754:                                /percent
        !          35755:                                /ampersand
        !          35756:                                /quoteright
        !          35757:                                /parenleft
        !          35758:                                /parenright
        !          35759:                                /asterisk
        !          35760:                                /plus
        !          35761:                                /comma
        !          35762:                                /minus
        !          35763:                                /period
        !          35764:                                /slash
        !          35765:                                /zero
        !          35766:                                /one
        !          35767:                                /two
        !          35768:                                /three
        !          35769:                                /four
        !          35770:                                /five
        !          35771:                                /six
        !          35772:                                /seven
        !          35773:                                /eight
        !          35774:                                /nine
        !          35775:                                /colon
        !          35776:                                /semicolon
        !          35777:                                /less
        !          35778:                                /equal
        !          35779:                                /greater
        !          35780:                                /question
        !          35781:                                /at
        !          35782:                                /A
        !          35783:                                /B
        !          35784:                                /C
        !          35785:                                /D
        !          35786:                                /E
        !          35787:                                /F
        !          35788:                                /G
        !          35789:                                /H
        !          35790:                                /I
        !          35791:                                /J
        !          35792:                                /K
        !          35793:                                /L
        !          35794:                                /M
        !          35795:                                /N
        !          35796:                                /O
        !          35797:                                /P
        !          35798:                                /Q
        !          35799:                                /R
        !          35800:                                /S
        !          35801:                                /T
        !          35802:                                /U
        !          35803:                                /V
        !          35804:                                /W
        !          35805:                                /X
        !          35806:                                /Y
        !          35807:                                /Z
        !          35808:                                /bracketleft
        !          35809:                                /backslash
        !          35810:                                /bracketright
        !          35811:                                /asciicircum
        !          35812:                                /underscore
        !          35813:                                /quoteleft
        !          35814:                                /a
        !          35815:                                /b
        !          35816:                                /c
        !          35817:                                /d
        !          35818:                                /e
        !          35819:                                /f
        !          35820:                                /g
        !          35821:                                /h
        !          35822:                                /i
        !          35823:                                /j
        !          35824:                                /k
        !          35825:                                /l
        !          35826:                                /m
        !          35827:                                /n
        !          35828:                                /o
        !          35829:                                /p
        !          35830:                                /q
        !          35831:                                /r
        !          35832:                                /s
        !          35833:                                /t
        !          35834:                                /u
        !          35835:                                /v
        !          35836:                                /w
        !          35837:                                /x
        !          35838:                                /y
        !          35839:                                /z
        !          35840:                                /braceleft
        !          35841:                                /bar
        !          35842:                                /braceright
        !          35843:                                /asciitilde
        !          35844:                                /.notdef
        !          35845:                                /.notdef
        !          35846:                                /.notdef
        !          35847:                                /.notdef
        !          35848:                                /.notdef
        !          35849:                                /.notdef
        !          35850:                                /.notdef
        !          35851:                                /.notdef
        !          35852:                                /.notdef
        !          35853:                                /.notdef
        !          35854:                                /.notdef
        !          35855:                                /.notdef
        !          35856:                                /.notdef
        !          35857:                                /.notdef
        !          35858:                                /.notdef
        !          35859:                                /.notdef
        !          35860:                                /.notdef
        !          35861:                                /dotlessi
        !          35862:                                /grave
        !          35863:                                /acute
        !          35864:                                /circumflex
        !          35865:                                /tilde
        !          35866:                                /macron
        !          35867:                                /breve
        !          35868:                                /dotaccent
        !          35869:                                /dieresis
        !          35870:                                /.notdef
        !          35871:                                /ring
        !          35872:                                /cedilla
        !          35873:                                /.notdef
        !          35874:                                /hungarumlaut
        !          35875:                                /ogonek
        !          35876:                                /caron
        !          35877:                                /space
        !          35878:                                /exclamdown
        !          35879:                                /cent
        !          35880:                                /sterling
        !          35881:                                /currency
        !          35882:                                /yen
        !          35883:                                /brokenbar
        !          35884:                                /section
        !          35885:                                /dieresis
        !          35886:                                /copyright
        !          35887:                                /ordfeminine
        !          35888:                                /guillemotleft
        !          35889:                                /logicalnot
        !          35890:                                /hyphen
        !          35891:                                /registered
        !          35892:                                /macron
        !          35893:                                /degree
        !          35894:                                /plusminus
        !          35895:                                /twosuperior
        !          35896:                                /threesuperior
        !          35897:                                /acute
        !          35898:                                /mu
        !          35899:                                /paragraph
        !          35900:                                /periodcentered
        !          35901:                                /cedilla
        !          35902:                                /onesuperior
        !          35903:                                /ordmasculine
        !          35904:                                /guillemotright
        !          35905:                                /onequarter
        !          35906:                                /onehalf
        !          35907:                                /threequarters
        !          35908:                                /questiondown
        !          35909:                                /Agrave
        !          35910:                                /Aacute
        !          35911:                                /Acircumflex
        !          35912:                                /Atilde
        !          35913:                                /Adieresis
        !          35914:                                /Aring
        !          35915:                                /AE
        !          35916:                                /Ccedilla
        !          35917:                                /Egrave
        !          35918:                                /Eacute
        !          35919:                                /Ecircumflex
        !          35920:                                /Edieresis
        !          35921:                                /Igrave
        !          35922:                                /Iacute
        !          35923:                                /Icircumflex
        !          35924:                                /Idieresis
        !          35925:                                /Eth
        !          35926:                                /Ntilde
        !          35927:                                /Ograve
        !          35928:                                /Oacute
        !          35929:                                /Ocircumflex
        !          35930:                                /Otilde
        !          35931:                                /Odieresis
        !          35932:                                /multiply
        !          35933:                                /Oslash
        !          35934:                                /Ugrave
        !          35935:                                /Uacute
        !          35936:                                /Ucircumflex
        !          35937:                                /Udieresis
        !          35938:                                /Yacute
        !          35939:                                /Thorn
        !          35940:                                /germandbls
        !          35941:                                /agrave
        !          35942:                                /aacute
        !          35943:                                /acircumflex
        !          35944:                                /atilde
        !          35945:                                /adieresis
        !          35946:                                /aring
        !          35947:                                /ae
        !          35948:                                /ccedilla
        !          35949:                                /egrave
        !          35950:                                /eacute
        !          35951:                                /ecircumflex
        !          35952:                                /edieresis
        !          35953:                                /igrave
        !          35954:                                /iacute
        !          35955:                                /icircumflex
        !          35956:                                /idieresis
        !          35957:                                /eth
        !          35958:                                /ntilde
        !          35959:                                /ograve
        !          35960:                                /oacute
        !          35961:                                /ocircumflex
        !          35962:                                /otilde
        !          35963:                                /odieresis
        !          35964:                                /divide
        !          35965:                                /oslash
        !          35966:                                /ugrave
        !          35967:                                /uacute
        !          35968:                                /ucircumflex
        !          35969:                                /udieresis
        !          35970:                                /yacute
        !          35971:                                /thorn
        !          35972:                                /ydieresis
        !          35973:                        ] def
        !          35974:                //End of ISOLatin1Encoding
        !          35975:        fi
        !          35976: 
        !          35977:        echo "ISOLatin1Encoding /$1 ReEncode"
        !          35978: }
        !          35979: 
        !          35980: #
        !          35981: # Generating functions output PostScript programs that build font width
        !          35982: # tables or a typesetter description file. Send the program to a printer
        !          35983: # and the complete table will come back on the serial port. All write on
        !          35984: # stdout and assume the prologue and other required PostScript files are
        !          35985: # all available.
        !          35986: #
        !          35987: 
        !          35988: Proportional() {
        !          35989:        echo "/unitwidth $UNITWIDTH def"
        !          35990:        echo "/resolution $RESOLUTION def"
        !          35991:        echo "/octalescapes $OCTALESCAPES def"
        !          35992:        echo "/charset ["
        !          35993:                # Get <>_ and | from S. Use accents for ascii ^ and ~.
        !          35994:                StandardCharset | awk '
        !          35995:                        $1 == "(<)" && $2 == "/less" {$1 = "(---)"}
        !          35996:                        $1 == "(>)" && $2 == "/greater" {$1 = "(---)"}
        !          35997:                        $1 == "(_)" && $2 == "/underscore" {$1 = "(---)"}
        !          35998:                        $1 == "(|)" && $2 == "/bar" {$1 = "(---)"}
        !          35999:                        $1 == "(^)" && $2 == "/asciicircum" {
        !          36000:                                printf "(^)\t/circumflex\n"
        !          36001:                                $1 = "(---)"
        !          36002:                        }
        !          36003:                        $1 == "(~)" && $2 == "/asciitilde" {
        !          36004:                                printf "(~)\t/tilde\n"
        !          36005:                                $1 = "(---)"
        !          36006:                        }
        !          36007:                        {printf "%s\t%s\n", $1, $2}
        !          36008:                '
        !          36009:        echo "] def"
        !          36010: 
        !          36011:        Latin1 $2
        !          36012:        echo "/$2 SelectFont"
        !          36013:        echo "(opO) SetAscender"
        !          36014: 
        !          36015:        echo "(name $1\\\\n) Print"
        !          36016:        echo "(fontname $2\\\\n) Print"
        !          36017:        echo "/$1 NamedInPrologue"
        !          36018:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
        !          36019:        echo "(charset\\\\n) Print"
        !          36020:        echo "BuildFontCharset"
        !          36021: }
        !          36022: 
        !          36023: FixedWidth() {
        !          36024:        echo "/unitwidth $UNITWIDTH def"
        !          36025:        echo "/resolution $RESOLUTION def"
        !          36026:        echo "/octalescapes $OCTALESCAPES def"
        !          36027:        echo "/charset ["
        !          36028:                StandardCharset
        !          36029:        echo "] def"
        !          36030: 
        !          36031:        Latin1 $2
        !          36032:        echo "/$2 SelectFont"
        !          36033:        echo "(opO) SetAscender"
        !          36034: 
        !          36035:        echo "(name $1\\\\n) Print"
        !          36036:        echo "(fontname $2\\\\n) Print"
        !          36037:        echo "/$1 NamedInPrologue"
        !          36038:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
        !          36039:        echo "(charset\\\\n) Print"
        !          36040:        echo "BuildFontCharset"
        !          36041: }
        !          36042: 
        !          36043: Dingbats() {
        !          36044:        echo "/unitwidth $UNITWIDTH def"
        !          36045:        echo "/resolution $RESOLUTION def"
        !          36046:        echo "/octalescapes $OCTALESCAPES def"
        !          36047:        echo "/charset ["
        !          36048:                DingbatsCharset | awk '$1 != "(---)" && $2 ~ /^\/[a-zA-Z]/ {
        !          36049:                        printf "%s\tISOLatin1Encoding %s GetCode\n", $1, $2
        !          36050:                }'
        !          36051:        echo "] def"
        !          36052: 
        !          36053:        echo "/$2 SelectFont"
        !          36054:        echo "(   ) SetAscender"
        !          36055: 
        !          36056:        echo "(name $1\\\\n) Print"
        !          36057:        echo "(fontname $2\\\\n) Print"
        !          36058:        echo "/$1 NamedInPrologue"
        !          36059:        echo "(charset\\\\n) Print"
        !          36060:        echo "BuildFontCharset"
        !          36061: }
        !          36062: 
        !          36063: Greek() {
        !          36064:        echo "/unitwidth $UNITWIDTH def"
        !          36065:        echo "/resolution $RESOLUTION def"
        !          36066:        echo "/charset ["
        !          36067:                SymbolCharset | awk '$1 ~ /\(\*[a-zA-Z]\)/'
        !          36068:        echo "] def"
        !          36069: 
        !          36070:        echo "/$2 SelectFont"
        !          36071:        echo "(orO) SetAscender"
        !          36072: 
        !          36073:        echo "(name $1\\\\n) Print"
        !          36074:        echo "(fontname $2\\\\n) Print"
        !          36075:        echo "/$1 NamedInPrologue"
        !          36076:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
        !          36077:        echo "(charset\\\\n) Print"
        !          36078:        echo "BuildFontCharset"
        !          36079: }
        !          36080: 
        !          36081: Symbol() {
        !          36082:        echo "/unitwidth $UNITWIDTH def"
        !          36083:        echo "/resolution $RESOLUTION def"
        !          36084:        echo "/charset ["
        !          36085:                SymbolCharset
        !          36086:        echo "] def"
        !          36087: 
        !          36088:        echo "ChangeMetrics"
        !          36089:        echo "/S SelectFont"
        !          36090:        echo "(orO) SetAscender"
        !          36091: 
        !          36092:        echo "(name $1\\\\n) Print"
        !          36093:        echo "(fontname $2\\\\n) Print"
        !          36094:        echo "/$1 NamedInPrologue"
        !          36095:        echo "(special\\\\n) Print"
        !          36096:        echo "(charset\\\\n) Print"
        !          36097:        echo "BuildFontCharset"
        !          36098: }
        !          36099: 
        !          36100: Special() {
        !          36101:        echo "/unitwidth $UNITWIDTH def"
        !          36102:        echo "/resolution $RESOLUTION def"
        !          36103:        echo "/charset ["
        !          36104:                SpecialCharset
        !          36105:        echo "] def"
        !          36106: 
        !          36107:        echo "ChangeMetrics"
        !          36108:        echo "/S1 SelectFont"
        !          36109: 
        !          36110:        echo "(# Times-Roman special font\\\\n) Print"
        !          36111:        echo "(name $1\\\\n) Print"
        !          36112:        echo "(fontname $2\\\\n) Print"
        !          36113:        echo "/$1 NamedInPrologue"
        !          36114:        echo "(special\\\\n) Print"
        !          36115:        echo "(charset\\\\n) Print"
        !          36116:        echo "BuildFontCharset"
        !          36117: }
        !          36118: 
        !          36119: #
        !          36120: # The DESC file doesn't have to be built on a printer. It's only here for
        !          36121: # consistency.
        !          36122: #
        !          36123: 
        !          36124: Description() {
        !          36125:        echo "/charset ["       # awk - so the stack doesn't overflow
        !          36126:                StandardCharset | awk '{print $1}'
        !          36127:                SymbolCharset | awk '{print $1}'
        !          36128:                SpecialCharset | awk '{print $1}'
        !          36129:        echo "] def"
        !          36130: 
        !          36131:        cat <<-//DESC
        !          36132:                (#Device Description - Latin1 character set
        !          36133: 
        !          36134:                PDL PostScript
        !          36135:                Encoding Latin1
        !          36136: 
        !          36137:                fonts 10 R I B BI CW H HI HB S1 S
        !          36138:                sizes 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
        !          36139:                23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 40 42 44 46
        !          36140:                48 50 52 54 56 58 60 64 68 72 78 84 90 96 100 105 110 115
        !          36141:                120 125 130 135 140 145 150 155 160 0
        !          36142:                res $RESOLUTION
        !          36143:                hor 1
        !          36144:                vert 1
        !          36145:                unitwidth $UNITWIDTH
        !          36146: 
        !          36147:                ) Print
        !          36148:        //DESC
        !          36149:        echo "(charset\\\\n) Print"
        !          36150:        echo "BuildDescCharset"
        !          36151:        echo "(\\\\n) Print"
        !          36152: }
        !          36153: 
        !          36154: 0707070014231124151006440057030057030000010447200522627502100004100000044161post.src/devLatin1/shell.lib.old#
        !          36155: # Shell library - for building devLatin1 tables.
        !          36156: #
        !          36157: # The full ISO Latin1 alphabet appeared in Adobe's interpreter sometime
        !          36158: # around Version 50.0. Prior to that ROM resident Type 1 text fonts were
        !          36159: # missing 18 characters that are now part of the Latin1 standard. Width
        !          36160: # tables will not build on printers that lack full Latin1 support. Error
        !          36161: # message will likely reflect a missing ISOLatin1Encoding array.
        !          36162: #
        !          36163: 
        !          36164: RESOLUTION=720
        !          36165: UNITWIDTH=10
        !          36166: 
        !          36167: OCTALESCAPES=${OCTALESCAPES:-160}      # <= code means add \0ddd names
        !          36168: DOWNLOADVECTOR=FALSE                   # TRUE can mean incomplete tables
        !          36169: 
        !          36170: #
        !          36171: # BuiltinTables returns command lines that generate PostScript programs
        !          36172: # for building a typesetter description file and font width tables for
        !          36173: # a relatively standard collection of fonts. Use awk to select a command
        !          36174: # line or modify an existing command to build a width table for a new
        !          36175: # font.
        !          36176: #
        !          36177: 
        !          36178: BuiltinTables() {
        !          36179:        cat <<-'//End of BuiltinTables'
        !          36180:                Proportional    R       Times-Roman
        !          36181:                Proportional    I       Times-Italic
        !          36182:                Proportional    B       Times-Bold
        !          36183:                Proportional    BI      Times-BoldItalic
        !          36184:                Proportional    AB      AvantGarde-Demi
        !          36185:                Proportional    AI      AvantGarde-BookOblique
        !          36186:                Proportional    AR      AvantGarde-Book
        !          36187:                Proportional    AX      AvantGarde-DemiOblique
        !          36188:                Proportional    H       Helvetica
        !          36189:                Proportional    HB      Helvetica-Bold
        !          36190:                Proportional    HI      Helvetica-Oblique
        !          36191:                Proportional    HX      Helvetica-BoldOblique
        !          36192:                Proportional    Hb      Helvetica-Narrow-Bold
        !          36193:                Proportional    Hi      Helvetica-Narrow-Oblique
        !          36194:                Proportional    Hr      Helvetica-Narrow
        !          36195:                Proportional    Hx      Helvetica-Narrow-BoldOblique
        !          36196:                Proportional    KB      Bookman-Demi
        !          36197:                Proportional    KI      Bookman-LightItalic
        !          36198:                Proportional    KR      Bookman-Light
        !          36199:                Proportional    KX      Bookman-DemiItalic
        !          36200:                Proportional    NB      NewCenturySchlbk-Bold
        !          36201:                Proportional    NI      NewCenturySchlbk-Italic
        !          36202:                Proportional    NR      NewCenturySchlbk-Roman
        !          36203:                Proportional    NX      NewCenturySchlbk-BoldItalic
        !          36204:                Proportional    PA      Palatino-Roman
        !          36205:                Proportional    PB      Palatino-Bold
        !          36206:                Proportional    PI      Palatino-Italic
        !          36207:                Proportional    PX      Palatino-BoldItalic
        !          36208:                Proportional    ZI      ZapfChancery-MediumItalic
        !          36209:                FixedWidth      C       Courier
        !          36210:                FixedWidth      CB      Courier-Bold
        !          36211:                FixedWidth      CI      Courier-Oblique
        !          36212:                FixedWidth      CO      Courier
        !          36213:                FixedWidth      CW      Courier
        !          36214:                FixedWidth      CX      Courier-BoldOblique
        !          36215:                Dingbats        ZD      ZapfDingbats
        !          36216:                Greek           GR      Symbol
        !          36217:                Symbol          S       Symbol
        !          36218:                Special         S1      Times-Roman
        !          36219:                Description     DESC    ---
        !          36220:        //End of BuiltinTables
        !          36221: }
        !          36222: 
        !          36223: #
        !          36224: # AllTables prints the complete list of builtin font names.
        !          36225: #
        !          36226: 
        !          36227: AllTables() {
        !          36228:        BuiltinTables | awk '{print $2}'
        !          36229: }
        !          36230: 
        !          36231: #
        !          36232: # Charset functions generate keyword/value pairs (as PostScript objects)
        !          36233: # that describe the character set available in a font. The keyword is a
        !          36234: # PostScript string that represents troff's name for the character. The
        !          36235: # value is usually the literal name (i.e. begins with a /) assigned to
        !          36236: # the character in the PostScript font. The value can also be an integer
        !          36237: # or a PostScript string. An integer value is used as an index in the
        !          36238: # current font's Encoding array. A string value is returned to the host
        !          36239: # unchanged when the entry for the character is constructed. Entries that
        !          36240: # have (") as their value are synonyms for the preceeding character.
        !          36241: #
        !          36242: # The 18 characters missing from ROM resident fonts on older printers are
        !          36243: # flagged with the PostScript comment "% missing".
        !          36244: #
        !          36245: 
        !          36246: StandardCharset() {
        !          36247:        cat <<-'//End of StandardCharset'
        !          36248:                (!)     /exclam
        !          36249:                (")     /quotedbl
        !          36250:                (#)     /numbersign
        !          36251:                ($)     /dollar
        !          36252:                (%)     /percent
        !          36253:                (&)     /ampersand
        !          36254:                (')     /quoteright
        !          36255:                (\()    /parenleft
        !          36256:                (\))    /parenright
        !          36257:                (*)     /asterisk
        !          36258:                (+)     /plus
        !          36259:                (,)     /comma
        !          36260:                (-)     /minus          % also hyphen in devpost
        !          36261:                (.)     /period
        !          36262:                (/)     /slash
        !          36263:                (0)     /zero
        !          36264:                (1)     /one
        !          36265:                (2)     /two
        !          36266:                (3)     /three
        !          36267:                (4)     /four
        !          36268:                (5)     /five
        !          36269:                (6)     /six
        !          36270:                (7)     /seven
        !          36271:                (8)     /eight
        !          36272:                (9)     /nine
        !          36273:                (:)     /colon
        !          36274:                (;)     /semicolon
        !          36275:                (<)     /less
        !          36276:                (=)     /equal
        !          36277:                (>)     /greater
        !          36278:                (?)     /question
        !          36279:                (@)     /at
        !          36280:                (A)     /A
        !          36281:                (B)     /B
        !          36282:                (C)     /C
        !          36283:                (D)     /D
        !          36284:                (E)     /E
        !          36285:                (F)     /F
        !          36286:                (G)     /G
        !          36287:                (H)     /H
        !          36288:                (I)     /I
        !          36289:                (J)     /J
        !          36290:                (K)     /K
        !          36291:                (L)     /L
        !          36292:                (M)     /M
        !          36293:                (N)     /N
        !          36294:                (O)     /O
        !          36295:                (P)     /P
        !          36296:                (Q)     /Q
        !          36297:                (R)     /R
        !          36298:                (S)     /S
        !          36299:                (T)     /T
        !          36300:                (U)     /U
        !          36301:                (V)     /V
        !          36302:                (W)     /W
        !          36303:                (X)     /X
        !          36304:                (Y)     /Y
        !          36305:                (Z)     /Z
        !          36306:                ([)     /bracketleft
        !          36307:                (\\)    /backslash
        !          36308:                (])     /bracketright
        !          36309:                (^)     /asciicircum
        !          36310:                (_)     /underscore
        !          36311:                (`)     /quoteleft
        !          36312:                (a)     /a
        !          36313:                (b)     /b
        !          36314:                (c)     /c
        !          36315:                (d)     /d
        !          36316:                (e)     /e
        !          36317:                (f)     /f
        !          36318:                (g)     /g
        !          36319:                (h)     /h
        !          36320:                (i)     /i
        !          36321:                (j)     /j
        !          36322:                (k)     /k
        !          36323:                (l)     /l
        !          36324:                (m)     /m
        !          36325:                (n)     /n
        !          36326:                (o)     /o
        !          36327:                (p)     /p
        !          36328:                (q)     /q
        !          36329:                (r)     /r
        !          36330:                (s)     /s
        !          36331:                (t)     /t
        !          36332:                (u)     /u
        !          36333:                (v)     /v
        !          36334:                (w)     /w
        !          36335:                (x)     /x
        !          36336:                (y)     /y
        !          36337:                (z)     /z
        !          36338:                ({)     /braceleft
        !          36339:                (|)     /bar
        !          36340:                (})     /braceright
        !          36341:                (~)     /asciitilde
        !          36342:                (\\`)   /grave                  % devpost character
        !          36343:                (ga)    (")                     % synonym
        !          36344:                (!!)    /exclamdown
        !          36345:                (c|)    /cent
        !          36346:                (ct)    (")                     % devpost synonym
        !          36347:                (L-)    /sterling
        !          36348:                (ps)    (")                     % devpost synonym
        !          36349:                (xo)    /currency
        !          36350:                (cr)    (")                     % devpost synonym
        !          36351:                (Y-)    /yen
        !          36352:                (yn)    (")                     % devpost synonym
        !          36353:                (||)    /brokenbar              % missing
        !          36354:                (so)    /section
        !          36355:                (sc)    (")                     % devpost synonym
        !          36356:                ("")    /dieresis
        !          36357:                (co)    /copyright
        !          36358:                (a_)    /ordfeminine
        !          36359:                (<<)    /guillemotleft
        !          36360:                (-,)    /logicalnot
        !          36361:                (hy)    /hyphen
        !          36362:                (--)    (")                     % synonym
        !          36363:                (ro)    /registered
        !          36364:                (rg)    (")                     % devpost synonym
        !          36365:                (-^)    /macron
        !          36366:                (0^)    /degree                 % missing
        !          36367:                (+-)    /plusminus              % missing
        !          36368:                (2^)    /twosuperior            % missing
        !          36369:                (3^)    /threesuperior          % missing
        !          36370:                (\\')   /acute
        !          36371:                (aa)    (")                     % devpost synonym
        !          36372:                (/u)    /mu                     % missing
        !          36373:                (P!)    /paragraph
        !          36374:                (pg)    (")                     % devpost synonym
        !          36375:                (.^)    /periodcentered
        !          36376:                (,,)    /cedilla
        !          36377:                (1^)    /onesuperior            % missing
        !          36378:                (o_)    /ordmasculine
        !          36379:                (>>)    /guillemotright
        !          36380:                (14)    /onequarter             % missing
        !          36381:                (12)    /onehalf                % missing
        !          36382:                (34)    /threequarters          % missing
        !          36383:                (??)    /questiondown
        !          36384:                (A`)    /Agrave
        !          36385:                (A')    /Aacute
        !          36386:                (A^)    /Acircumflex
        !          36387:                (A~)    /Atilde
        !          36388:                (A")    /Adieresis
        !          36389:                (A*)    /Aring
        !          36390:                (AE)    /AE
        !          36391:                (C,)    /Ccedilla
        !          36392:                (E`)    /Egrave
        !          36393:                (E')    /Eacute
        !          36394:                (E^)    /Ecircumflex
        !          36395:                (E")    /Edieresis
        !          36396:                (I`)    /Igrave
        !          36397:                (I')    /Iacute
        !          36398:                (I^)    /Icircumflex
        !          36399:                (I")    /Idieresis
        !          36400:                (D-)    /Eth                    % missing
        !          36401:                (N~)    /Ntilde
        !          36402:                (O`)    /Ograve
        !          36403:                (O')    /Oacute
        !          36404:                (O^)    /Ocircumflex
        !          36405:                (O~)    /Otilde
        !          36406:                (O")    /Odieresis
        !          36407:                (xx)    /multiply               % missing
        !          36408:                (O/)    /Oslash
        !          36409:                (U`)    /Ugrave
        !          36410:                (U')    /Uacute
        !          36411:                (U^)    /Ucircumflex
        !          36412:                (U")    /Udieresis
        !          36413:                (Y')    /Yacute                 % missing
        !          36414:                (TH)    /Thorn                  % missing
        !          36415:                (ss)    /germandbls
        !          36416:                (a`)    /agrave
        !          36417:                (a')    /aacute
        !          36418:                (a^)    /acircumflex
        !          36419:                (a~)    /atilde
        !          36420:                (a")    /adieresis
        !          36421:                (a*)    /aring
        !          36422:                (ae)    /ae
        !          36423:                (c,)    /ccedilla
        !          36424:                (e`)    /egrave
        !          36425:                (e')    /eacute
        !          36426:                (e^)    /ecircumflex
        !          36427:                (e")    /edieresis
        !          36428:                (i`)    /igrave
        !          36429:                (i')    /iacute
        !          36430:                (i^)    /icircumflex
        !          36431:                (i")    /idieresis
        !          36432:                (d-)    /eth                    % missing
        !          36433:                (n~)    /ntilde
        !          36434:                (o`)    /ograve
        !          36435:                (o')    /oacute
        !          36436:                (o^)    /ocircumflex
        !          36437:                (o~)    /otilde
        !          36438:                (o")    /odieresis
        !          36439:                (-:)    /divide                 % missing
        !          36440:                (o/)    /oslash
        !          36441:                (u`)    /ugrave
        !          36442:                (u')    /uacute
        !          36443:                (u^)    /ucircumflex
        !          36444:                (u")    /udieresis
        !          36445:                (y')    /yacute                 % missing
        !          36446:                (th)    /thorn                  % missing
        !          36447:                (y")    /ydieresis
        !          36448:        //End of StandardCharset
        !          36449: }
        !          36450: 
        !          36451: SymbolCharset() {
        !          36452:        cat <<-'//End of SymbolCharset'
        !          36453:                (---)   /exclam
        !          36454:                (fa)    /universal
        !          36455:                (---)   /numbersign
        !          36456:                (te)    /existential
        !          36457:                (---)   /percent
        !          36458:                (---)   /ampersand
        !          36459:                (st)    /suchthat
        !          36460:                (---)   /parenleft
        !          36461:                (---)   /parenright
        !          36462:                (**)    /asteriskmath
        !          36463:                (pl)    /plus
        !          36464:                (---)   /comma
        !          36465:                (mi)    /minus
        !          36466:                (---)   /period
        !          36467:                (sl)    /slash
        !          36468:                (---)   /zero
        !          36469:                (---)   /one
        !          36470:                (---)   /two
        !          36471:                (---)   /three
        !          36472:                (---)   /four
        !          36473:                (---)   /five
        !          36474:                (---)   /six
        !          36475:                (---)   /seven
        !          36476:                (---)   /eight
        !          36477:                (---)   /nine
        !          36478:                (---)   /colon
        !          36479:                (---)   /semicolon
        !          36480:                (<)     /less
        !          36481:                (eq)    /equal
        !          36482:                (>)     /greater
        !          36483:                (---)   /question
        !          36484:                (cg)    /congruent
        !          36485:                (*A)    /Alpha
        !          36486:                (*B)    /Beta
        !          36487:                (*X)    /Chi
        !          36488:                (*D)    /Delta
        !          36489:                (*E)    /Epsilon
        !          36490:                (*F)    /Phi
        !          36491:                (*G)    /Gamma
        !          36492:                (*Y)    /Eta
        !          36493:                (*I)    /Iota
        !          36494:                (---)   /theta1
        !          36495:                (*K)    /Kappa
        !          36496:                (*L)    /Lambda
        !          36497:                (*M)    /Mu
        !          36498:                (*N)    /Nu
        !          36499:                (*O)    /Omicron
        !          36500:                (*P)    /Pi
        !          36501:                (*H)    /Theta
        !          36502:                (*R)    /Rho
        !          36503:                (*S)    /Sigma
        !          36504:                (*T)    /Tau
        !          36505:                (*U)    /Upsilon
        !          36506:                (ts)    /sigma1
        !          36507:                (*W)    /Omega
        !          36508:                (*C)    /Xi
        !          36509:                (*Q)    /Psi
        !          36510:                (*Z)    /Zeta
        !          36511:                (---)   /bracketleft
        !          36512:                (tf)    /therefore
        !          36513:                (---)   /bracketright
        !          36514:                (pp)    /perpendicular
        !          36515:                (ul)    /underscore
        !          36516:                (_)     (")                     % synonym
        !          36517:                (rn)    /radicalex
        !          36518:                (*a)    /alpha
        !          36519:                (*b)    /beta
        !          36520:                (*x)    /chi
        !          36521:                (*d)    /delta
        !          36522:                (*e)    /epsilon
        !          36523:                (*f)    /phi
        !          36524:                (*g)    /gamma
        !          36525:                (*y)    /eta
        !          36526:                (*i)    /iota
        !          36527:                (---)   /phi1
        !          36528:                (*k)    /kappa
        !          36529:                (*l)    /lambda
        !          36530:                (*m)    /mu
        !          36531:                (*n)    /nu
        !          36532:                (*o)    /omicron
        !          36533:                (*p)    /pi
        !          36534:                (*h)    /theta
        !          36535:                (*r)    /rho
        !          36536:                (*s)    /sigma
        !          36537:                (*t)    /tau
        !          36538:                (*u)    /upsilon
        !          36539:                (---)   /omega1
        !          36540:                (*w)    /omega
        !          36541:                (*c)    /xi
        !          36542:                (*q)    /psi
        !          36543:                (*z)    /zeta
        !          36544:                (---)   /braceleft
        !          36545:                (or)    /bar
        !          36546:                (---)   /braceright
        !          36547:                (ap)    /similar
        !          36548:                (---)   /Upsilon1
        !          36549:                (fm)    /minute
        !          36550:                (<=)    /lessequal
        !          36551:                (fr)    /fraction               % devpost character
        !          36552:                (if)    /infinity
        !          36553:                (fn)    /florin                 % devpost character
        !          36554:                (---)   /club
        !          36555:                (---)   /diamond
        !          36556:                (---)   /heart
        !          36557:                (---)   /spade
        !          36558:                (ab)    /arrowboth
        !          36559:                (<-)    /arrowleft
        !          36560:                (ua)    /arrowup
        !          36561:                (->)    /arrowright
        !          36562:                (da)    /arrowdown
        !          36563:                (de)    /degree
        !          36564:                (+-)    /plusminus
        !          36565:                (---)   /second
        !          36566:                (>=)    /greaterequal
        !          36567:                (mu)    /multiply
        !          36568:                (pt)    /proportional
        !          36569:                (pd)    /partialdiff
        !          36570:                (bu)    /bullet
        !          36571:                (di)    /divide
        !          36572:                (!=)    /notequal
        !          36573:                (==)    /equivalence
        !          36574:                (~~)    /approxequal
        !          36575:                (el)    /ellipsis
        !          36576:                (av)    /arrowvertex
        !          36577:                (ah)    /arrowhorizex
        !          36578:                (CR)    /carriagereturn
        !          36579:                (af)    /aleph
        !          36580:                (If)    /Ifraktur
        !          36581:                (Rf)    /Rfraktur
        !          36582:                (ws)    /weierstrass
        !          36583:                (Ox)    /circlemultiply
        !          36584:                (O+)    /circleplus
        !          36585:                (es)    /emptyset
        !          36586:                (ca)    /intersection
        !          36587:                (cu)    /union
        !          36588:                (sp)    /propersuperset
        !          36589:                (ip)    /reflexsuperset
        !          36590:                (!b)    /notsubset
        !          36591:                (sb)    /propersubset
        !          36592:                (ib)    /reflexsubset
        !          36593:                (mo)    /element
        !          36594:                (!m)    /notelement
        !          36595:                (an)    /angle
        !          36596:                (gr)    /gradient
        !          36597:                (rg)    /registerserif
        !          36598:                (co)    /copyrightserif
        !          36599:                (tm)    /trademarkserif
        !          36600:                (---)   /product
        !          36601:                (sr)    /radical
        !          36602:                (c.)    /dotmath
        !          36603:                (no)    /logicalnot
        !          36604:                (l&)    /logicaland
        !          36605:                (l|)    /logicalor
        !          36606:                (---)   /arrowdblboth
        !          36607:                (---)   /arrowdblleft
        !          36608:                (---)   /arrowdblup
        !          36609:                (---)   /arrowdblright
        !          36610:                (---)   /arrowdbldown
        !          36611:                (lz)    /lozenge
        !          36612:                (b<)    /angleleft
        !          36613:                (RG)    /registersans
        !          36614:                (CO)    /copyrightsans
        !          36615:                (TM)    /trademarksans
        !          36616:                (---)   /summation
        !          36617:                (LT)    /parenlefttp
        !          36618:                (br)    /parenleftex
        !          36619:                (LX)    (")                     % synonym
        !          36620:                (LB)    /parenleftbt
        !          36621:                (lc)    /bracketlefttp
        !          36622:                (lx)    /bracketleftex
        !          36623:                (lf)    /bracketleftbt
        !          36624:                (lt)    /bracelefttp
        !          36625:                (lk)    /braceleftmid
        !          36626:                (lb)    /braceleftbt
        !          36627:                (bv)    /braceex
        !          36628:                (|)     (")                     % synonym
        !          36629:                (b>)    /angleright
        !          36630:                (is)    /integral
        !          36631:                (---)   /integraltp
        !          36632:                (---)   /integralex
        !          36633:                (---)   /integralbt
        !          36634:                (RT)    /parenrighttp
        !          36635:                (RX)    /parenrightex
        !          36636:                (RB)    /parenrightbt
        !          36637:                (rc)    /bracketrighttp
        !          36638:                (rx)    /bracketrightex
        !          36639:                (rf)    /bracketrightbt
        !          36640:                (rt)    /bracerighttp
        !          36641:                (rk)    /bracerightmid
        !          36642:                (rb)    /bracerightbt
        !          36643:                (~=)    (55     0       1)      % charlib
        !          36644:        //End of SymbolCharset
        !          36645: }
        !          36646: 
        !          36647: SpecialCharset() {
        !          36648:        cat <<-'//End of SpecialCharset'
        !          36649:                (ru)    /underscore
        !          36650:                ('')    /quotedblright          % devpost character
        !          36651:                (``)    /quotedblleft           % devpost character
        !          36652:                (dg)    /dagger                 % devpost character
        !          36653:                (dd)    /daggerdbl              % devpost character
        !          36654:                (en)    /endash                 % devpost character
        !          36655:                (\\-)   (")                     % synonym
        !          36656:                (em)    /emdash
        !          36657: %              (ff)    (60     2       1)      % charlib
        !          36658: %              (Fi)    (84     2       1)      % charlib
        !          36659: %              (Fl)    (84     2       1)      % charlib
        !          36660:                (14)    (75     2       1)      % charlib
        !          36661:                (12)    (75     2       1)      % charlib
        !          36662:                (34)    (75     2       1)      % charlib
        !          36663:                (bx)    (50     2       1)      % charlib
        !          36664:                (ob)    (38     2       1)      % charlib
        !          36665:                (ci)    (75     0       1)      % charlib
        !          36666:                (sq)    (50     2       1)      % charlib
        !          36667:                (Sl)    (50     2       1)      % charlib
        !          36668:                (L1)    (110    1       2)      % charlib
        !          36669:                (LA)    (110    1       2)      % charlib
        !          36670:                (LV)    (110    3       1)      % charlib
        !          36671:                (LH)    (210    1       1)      % charlib
        !          36672:                (lh)    (100    0       1)      % charlib
        !          36673:                (rh)    (100    0       1)      % charlib
        !          36674:                (lH)    (100    0       1)      % charlib
        !          36675:                (rH)    (100    0       1)      % charlib
        !          36676:                (PC)    (220    2       1)      % charlib
        !          36677:                (DG)    (185    2       1)      % charlib
        !          36678:        //End of SpecialCharset
        !          36679: }
        !          36680: 
        !          36681: #
        !          36682: # Latin1 ensures a font uses the ISOLatin1Encoding vector, although only
        !          36683: # text fonts should be re-encoded. Downloading the Encoding vector doesn't
        !          36684: # often make sense. No ISOLatin1Encoding array likely means ROM based fonts
        !          36685: # on your printer are incomplete. Type 1 fonts with a full Latin1 character
        !          36686: # set appeared sometime after Version 50.0.
        !          36687: #
        !          36688: 
        !          36689: Latin1() {
        !          36690:        if [ "$DOWNLOADVECTOR" = TRUE ]; then
        !          36691:                cat <<-'//End of ISOLatin1Encoding'
        !          36692:                        /ISOLatin1Encoding [
        !          36693:                                /.notdef
        !          36694:                                /.notdef
        !          36695:                                /.notdef
        !          36696:                                /.notdef
        !          36697:                                /.notdef
        !          36698:                                /.notdef
        !          36699:                                /.notdef
        !          36700:                                /.notdef
        !          36701:                                /.notdef
        !          36702:                                /.notdef
        !          36703:                                /.notdef
        !          36704:                                /.notdef
        !          36705:                                /.notdef
        !          36706:                                /.notdef
        !          36707:                                /.notdef
        !          36708:                                /.notdef
        !          36709:                                /.notdef
        !          36710:                                /.notdef
        !          36711:                                /.notdef
        !          36712:                                /.notdef
        !          36713:                                /.notdef
        !          36714:                                /.notdef
        !          36715:                                /.notdef
        !          36716:                                /.notdef
        !          36717:                                /.notdef
        !          36718:                                /.notdef
        !          36719:                                /.notdef
        !          36720:                                /.notdef
        !          36721:                                /.notdef
        !          36722:                                /.notdef
        !          36723:                                /.notdef
        !          36724:                                /.notdef
        !          36725:                                /space
        !          36726:                                /exclam
        !          36727:                                /quotedbl
        !          36728:                                /numbersign
        !          36729:                                /dollar
        !          36730:                                /percent
        !          36731:                                /ampersand
        !          36732:                                /quoteright
        !          36733:                                /parenleft
        !          36734:                                /parenright
        !          36735:                                /asterisk
        !          36736:                                /plus
        !          36737:                                /comma
        !          36738:                                /minus
        !          36739:                                /period
        !          36740:                                /slash
        !          36741:                                /zero
        !          36742:                                /one
        !          36743:                                /two
        !          36744:                                /three
        !          36745:                                /four
        !          36746:                                /five
        !          36747:                                /six
        !          36748:                                /seven
        !          36749:                                /eight
        !          36750:                                /nine
        !          36751:                                /colon
        !          36752:                                /semicolon
        !          36753:                                /less
        !          36754:                                /equal
        !          36755:                                /greater
        !          36756:                                /question
        !          36757:                                /at
        !          36758:                                /A
        !          36759:                                /B
        !          36760:                                /C
        !          36761:                                /D
        !          36762:                                /E
        !          36763:                                /F
        !          36764:                                /G
        !          36765:                                /H
        !          36766:                                /I
        !          36767:                                /J
        !          36768:                                /K
        !          36769:                                /L
        !          36770:                                /M
        !          36771:                                /N
        !          36772:                                /O
        !          36773:                                /P
        !          36774:                                /Q
        !          36775:                                /R
        !          36776:                                /S
        !          36777:                                /T
        !          36778:                                /U
        !          36779:                                /V
        !          36780:                                /W
        !          36781:                                /X
        !          36782:                                /Y
        !          36783:                                /Z
        !          36784:                                /bracketleft
        !          36785:                                /backslash
        !          36786:                                /bracketright
        !          36787:                                /asciicircum
        !          36788:                                /underscore
        !          36789:                                /quoteleft
        !          36790:                                /a
        !          36791:                                /b
        !          36792:                                /c
        !          36793:                                /d
        !          36794:                                /e
        !          36795:                                /f
        !          36796:                                /g
        !          36797:                                /h
        !          36798:                                /i
        !          36799:                                /j
        !          36800:                                /k
        !          36801:                                /l
        !          36802:                                /m
        !          36803:                                /n
        !          36804:                                /o
        !          36805:                                /p
        !          36806:                                /q
        !          36807:                                /r
        !          36808:                                /s
        !          36809:                                /t
        !          36810:                                /u
        !          36811:                                /v
        !          36812:                                /w
        !          36813:                                /x
        !          36814:                                /y
        !          36815:                                /z
        !          36816:                                /braceleft
        !          36817:                                /bar
        !          36818:                                /braceright
        !          36819:                                /asciitilde
        !          36820:                                /.notdef
        !          36821:                                /.notdef
        !          36822:                                /.notdef
        !          36823:                                /.notdef
        !          36824:                                /.notdef
        !          36825:                                /.notdef
        !          36826:                                /.notdef
        !          36827:                                /.notdef
        !          36828:                                /.notdef
        !          36829:                                /.notdef
        !          36830:                                /.notdef
        !          36831:                                /.notdef
        !          36832:                                /.notdef
        !          36833:                                /.notdef
        !          36834:                                /.notdef
        !          36835:                                /.notdef
        !          36836:                                /.notdef
        !          36837:                                /dotlessi
        !          36838:                                /grave
        !          36839:                                /acute
        !          36840:                                /circumflex
        !          36841:                                /tilde
        !          36842:                                /macron
        !          36843:                                /breve
        !          36844:                                /dotaccent
        !          36845:                                /dieresis
        !          36846:                                /.notdef
        !          36847:                                /ring
        !          36848:                                /cedilla
        !          36849:                                /.notdef
        !          36850:                                /hungarumlaut
        !          36851:                                /ogonek
        !          36852:                                /caron
        !          36853:                                /space
        !          36854:                                /exclamdown
        !          36855:                                /cent
        !          36856:                                /sterling
        !          36857:                                /currency
        !          36858:                                /yen
        !          36859:                                /brokenbar
        !          36860:                                /section
        !          36861:                                /dieresis
        !          36862:                                /copyright
        !          36863:                                /ordfeminine
        !          36864:                                /guillemotleft
        !          36865:                                /logicalnot
        !          36866:                                /hyphen
        !          36867:                                /registered
        !          36868:                                /macron
        !          36869:                                /degree
        !          36870:                                /plusminus
        !          36871:                                /twosuperior
        !          36872:                                /threesuperior
        !          36873:                                /acute
        !          36874:                                /mu
        !          36875:                                /paragraph
        !          36876:                                /periodcentered
        !          36877:                                /cedilla
        !          36878:                                /onesuperior
        !          36879:                                /ordmasculine
        !          36880:                                /guillemotright
        !          36881:                                /onequarter
        !          36882:                                /onehalf
        !          36883:                                /threequarters
        !          36884:                                /questiondown
        !          36885:                                /Agrave
        !          36886:                                /Aacute
        !          36887:                                /Acircumflex
        !          36888:                                /Atilde
        !          36889:                                /Adieresis
        !          36890:                                /Aring
        !          36891:                                /AE
        !          36892:                                /Ccedilla
        !          36893:                                /Egrave
        !          36894:                                /Eacute
        !          36895:                                /Ecircumflex
        !          36896:                                /Edieresis
        !          36897:                                /Igrave
        !          36898:                                /Iacute
        !          36899:                                /Icircumflex
        !          36900:                                /Idieresis
        !          36901:                                /Eth
        !          36902:                                /Ntilde
        !          36903:                                /Ograve
        !          36904:                                /Oacute
        !          36905:                                /Ocircumflex
        !          36906:                                /Otilde
        !          36907:                                /Odieresis
        !          36908:                                /multiply
        !          36909:                                /Oslash
        !          36910:                                /Ugrave
        !          36911:                                /Uacute
        !          36912:                                /Ucircumflex
        !          36913:                                /Udieresis
        !          36914:                                /Yacute
        !          36915:                                /Thorn
        !          36916:                                /germandbls
        !          36917:                                /agrave
        !          36918:                                /aacute
        !          36919:                                /acircumflex
        !          36920:                                /atilde
        !          36921:                                /adieresis
        !          36922:                                /aring
        !          36923:                                /ae
        !          36924:                                /ccedilla
        !          36925:                                /egrave
        !          36926:                                /eacute
        !          36927:                                /ecircumflex
        !          36928:                                /edieresis
        !          36929:                                /igrave
        !          36930:                                /iacute
        !          36931:                                /icircumflex
        !          36932:                                /idieresis
        !          36933:                                /eth
        !          36934:                                /ntilde
        !          36935:                                /ograve
        !          36936:                                /oacute
        !          36937:                                /ocircumflex
        !          36938:                                /otilde
        !          36939:                                /odieresis
        !          36940:                                /divide
        !          36941:                                /oslash
        !          36942:                                /ugrave
        !          36943:                                /uacute
        !          36944:                                /ucircumflex
        !          36945:                                /udieresis
        !          36946:                                /yacute
        !          36947:                                /thorn
        !          36948:                                /ydieresis
        !          36949:                        ] def
        !          36950:                //End of ISOLatin1Encoding
        !          36951:        fi
        !          36952: 
        !          36953:        echo "ISOLatin1Encoding /$1 ReEncode"
        !          36954: }
        !          36955: 
        !          36956: #
        !          36957: # Generating functions output PostScript programs that build font width
        !          36958: # tables or a typesetter description file. Send the program to a printer
        !          36959: # and the complete table will come back on the serial port. All write on
        !          36960: # stdout and assume the prologue and other required PostScript files are
        !          36961: # all available.
        !          36962: #
        !          36963: 
        !          36964: Proportional() {
        !          36965:        echo "/unitwidth $UNITWIDTH def"
        !          36966:        echo "/resolution $RESOLUTION def"
        !          36967:        echo "/octalescapes $OCTALESCAPES def"
        !          36968:        echo "/charset ["
        !          36969:                # Get <>_ and | from S. Use accents for ascii ^ and ~.
        !          36970:                StandardCharset | awk '
        !          36971:                        $1 == "(<)" && $2 == "/less" {$1 = "(---)"}
        !          36972:                        $1 == "(>)" && $2 == "/greater" {$1 = "(---)"}
        !          36973:                        $1 == "(_)" && $2 == "/underscore" {$1 = "(---)"}
        !          36974:                        $1 == "(|)" && $2 == "/bar" {$1 = "(---)"}
        !          36975:                        $1 == "(^)" && $2 == "/asciicircum" {
        !          36976:                                printf "(^)\t/circumflex\n"
        !          36977:                                $1 = "(---)"
        !          36978:                        }
        !          36979:                        $1 == "(~)" && $2 == "/asciitilde" {
        !          36980:                                printf "(~)\t/tilde\n"
        !          36981:                                $1 = "(---)"
        !          36982:                        }
        !          36983:                        {printf "%s\t%s\n", $1, $2}
        !          36984:                '
        !          36985:        echo "] def"
        !          36986: 
        !          36987:        Latin1 $2
        !          36988:        echo "/$2 SelectFont"
        !          36989:        echo "(opO) SetAscender"
        !          36990: 
        !          36991:        echo "(name $1\\\\n) Print"
        !          36992:        echo "(fontname $2\\\\n) Print"
        !          36993:        echo "/$1 NamedInPrologue"
        !          36994:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
        !          36995:        echo "(charset\\\\n) Print"
        !          36996:        echo "BuildFontCharset"
        !          36997: }
        !          36998: 
        !          36999: FixedWidth() {
        !          37000:        echo "/unitwidth $UNITWIDTH def"
        !          37001:        echo "/resolution $RESOLUTION def"
        !          37002:        echo "/octalescapes $OCTALESCAPES def"
        !          37003:        echo "/charset ["
        !          37004:                StandardCharset
        !          37005:        echo "] def"
        !          37006: 
        !          37007:        Latin1 $2
        !          37008:        echo "/$2 SelectFont"
        !          37009:        echo "(opO) SetAscender"
        !          37010: 
        !          37011:        echo "(name $1\\\\n) Print"
        !          37012:        echo "(fontname $2\\\\n) Print"
        !          37013:        echo "/$1 NamedInPrologue"
        !          37014:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
        !          37015:        echo "(charset\\\\n) Print"
        !          37016:        echo "BuildFontCharset"
        !          37017: }
        !          37018: 
        !          37019: Dingbats() {
        !          37020:        echo "/unitwidth $UNITWIDTH def"
        !          37021:        echo "/resolution $RESOLUTION def"
        !          37022:        echo "/octalescapes $OCTALESCAPES def"
        !          37023:        echo "/charset ["
        !          37024:                StandardCharset | awk '$1 != "(---)" && $2 ~ /^\/[a-zA-Z]/ {
        !          37025:                        printf "%s\tISOLatin1Encoding %s GetCode\n", $1, $2
        !          37026:                }'
        !          37027:        echo "] def"
        !          37028: 
        !          37029:        echo "/$2 SelectFont"
        !          37030:        echo "(   ) SetAscender"
        !          37031: 
        !          37032:        echo "(name $1\\\\n) Print"
        !          37033:        echo "(fontname $2\\\\n) Print"
        !          37034:        echo "/$1 NamedInPrologue"
        !          37035:        echo "(charset\\\\n) Print"
        !          37036:        echo "BuildFontCharset"
        !          37037: }
        !          37038: 
        !          37039: Greek() {
        !          37040:        echo "/unitwidth $UNITWIDTH def"
        !          37041:        echo "/resolution $RESOLUTION def"
        !          37042:        echo "/charset ["
        !          37043:                SymbolCharset | awk '$1 ~ /\(\*[a-zA-Z]\)/'
        !          37044:        echo "] def"
        !          37045: 
        !          37046:        echo "/$2 SelectFont"
        !          37047:        echo "(orO) SetAscender"
        !          37048: 
        !          37049:        echo "(name $1\\\\n) Print"
        !          37050:        echo "(fontname $2\\\\n) Print"
        !          37051:        echo "/$1 NamedInPrologue"
        !          37052:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
        !          37053:        echo "(charset\\\\n) Print"
        !          37054:        echo "BuildFontCharset"
        !          37055: }
        !          37056: 
        !          37057: Symbol() {
        !          37058:        echo "/unitwidth $UNITWIDTH def"
        !          37059:        echo "/resolution $RESOLUTION def"
        !          37060:        echo "/charset ["
        !          37061:                SymbolCharset
        !          37062:        echo "] def"
        !          37063: 
        !          37064:        echo "ChangeMetrics"
        !          37065:        echo "/S SelectFont"
        !          37066:        echo "(orO) SetAscender"
        !          37067: 
        !          37068:        echo "(name $1\\\\n) Print"
        !          37069:        echo "(fontname $2\\\\n) Print"
        !          37070:        echo "/$1 NamedInPrologue"
        !          37071:        echo "(special\\\\n) Print"
        !          37072:        echo "(charset\\\\n) Print"
        !          37073:        echo "BuildFontCharset"
        !          37074: }
        !          37075: 
        !          37076: Special() {
        !          37077:        echo "/unitwidth $UNITWIDTH def"
        !          37078:        echo "/resolution $RESOLUTION def"
        !          37079:        echo "/charset ["
        !          37080:                SpecialCharset
        !          37081:        echo "] def"
        !          37082: 
        !          37083:        echo "ChangeMetrics"
        !          37084:        echo "/S1 SelectFont"
        !          37085: 
        !          37086:        echo "(# Times-Roman special font\\\\n) Print"
        !          37087:        echo "(name $1\\\\n) Print"
        !          37088:        echo "(fontname $2\\\\n) Print"
        !          37089:        echo "/$1 NamedInPrologue"
        !          37090:        echo "(special\\\\n) Print"
        !          37091:        echo "(charset\\\\n) Print"
        !          37092:        echo "BuildFontCharset"
        !          37093: }
        !          37094: 
        !          37095: #
        !          37096: # The DESC file doesn't have to be built on a printer. It's only here for
        !          37097: # consistency.
        !          37098: #
        !          37099: 
        !          37100: Description() {
        !          37101:        echo "/charset ["       # awk - so the stack doesn't overflow
        !          37102:                StandardCharset | awk '{print $1}'
        !          37103:                SymbolCharset | awk '{print $1}'
        !          37104:                SpecialCharset | awk '{print $1}'
        !          37105:        echo "] def"
        !          37106: 
        !          37107:        cat <<-//DESC
        !          37108:                (#Device Description - Latin1 character set
        !          37109: 
        !          37110:                PDL PostScript
        !          37111:                Encoding Latin1
        !          37112: 
        !          37113:                fonts 10 R I B BI CW H HI HB S1 S
        !          37114:                sizes 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
        !          37115:                23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 40 42 44 46
        !          37116:                48 50 52 54 56 58 60 64 68 72 78 84 90 96 100 105 110 115
        !          37117:                120 125 130 135 140 145 150 155 160 0
        !          37118:                res $RESOLUTION
        !          37119:                hor 1
        !          37120:                vert 1
        !          37121:                unitwidth $UNITWIDTH
        !          37122: 
        !          37123:                ) Print
        !          37124:        //DESC
        !          37125:        echo "(charset\\\\n) Print"
        !          37126:        echo "BuildDescCharset"
        !          37127:        echo "(\\\\n) Print"
        !          37128: }
        !          37129: 
        !          37130: 0707070014231122351006400057030057030000010447600522632546000002600000006137post.src/devLatin1/HMname H
        !          37131: fontname Helvetica
        !          37132: named in prologue
        !          37133: spacewidth 28
        !          37134: charset
        !          37135: !      28      2       33
        !          37136: "      36      2       34
        !          37137: dq     "
        !          37138: #      56      2       35
        !          37139: $      56      3       36
        !          37140: %      89      2       37
        !          37141: &      67      2       38
        !          37142: '      22      2       39
        !          37143: (      33      3       40
        !          37144: )      33      3       41
        !          37145: *      39      2       42
        !          37146: +      58      0       43
        !          37147: ,      28      1       44
        !          37148: -      33      0       173
        !          37149: \0255  "
        !          37150: .      28      0       46
        !          37151: /      28      2       47
        !          37152: 0      56      2       48
        !          37153: 1      56      2       49
        !          37154: 2      56      2       50
        !          37155: 3      56      2       51
        !          37156: 4      56      2       52
        !          37157: 5      56      2       53
        !          37158: 6      56      2       54
        !          37159: 7      56      2       55
        !          37160: 8      56      2       56
        !          37161: 9      56      2       57
        !          37162: :      28      0       58
        !          37163: ;      28      1       59
        !          37164: ---    58      0       60
        !          37165: =      58      0       61
        !          37166: ---    58      0       62
        !          37167: ?      56      2       63
        !          37168: @      102     3       64
        !          37169: A      67      2       65
        !          37170: B      67      2       66
        !          37171: C      72      2       67
        !          37172: D      72      2       68
        !          37173: E      67      2       69
        !          37174: F      61      2       70
        !          37175: G      78      2       71
        !          37176: H      72      2       72
        !          37177: I      28      2       73
        !          37178: J      50      2       74
        !          37179: K      67      2       75
        !          37180: L      56      2       76
        !          37181: M      83      2       77
        !          37182: N      72      2       78
        !          37183: O      78      2       79
        !          37184: P      67      2       80
        !          37185: Q      78      2       81
        !          37186: R      72      2       82
        !          37187: S      67      2       83
        !          37188: T      61      2       84
        !          37189: U      72      2       85
        !          37190: V      67      2       86
        !          37191: W      94      2       87
        !          37192: X      67      2       88
        !          37193: Y      67      2       89
        !          37194: Z      61      2       90
        !          37195: [      28      3       91
        !          37196: \      28      2       92
        !          37197: bs     "
        !          37198: ]      28      3       93
        !          37199: ^      33      2       147
        !          37200: ---    47      2       94
        !          37201: ---    56      1       95
        !          37202: `      22      2       96
        !          37203: a      56      0       97
        !          37204: b      56      2       98
        !          37205: c      50      0       99
        !          37206: d      56      2       100
        !          37207: e      56      0       101
        !          37208: f      28      2       102
        !          37209: g      56      1       103
        !          37210: h      56      2       104
        !          37211: i      22      2       105
        !          37212: j      22      3       106
        !          37213: k      50      2       107
        !          37214: l      22      2       108
        !          37215: m      83      0       109
        !          37216: n      56      0       110
        !          37217: o      56      0       111
        !          37218: p      56      1       112
        !          37219: q      56      1       113
        !          37220: r      33      0       114
        !          37221: s      50      0       115
        !          37222: t      28      2       116
        !          37223: u      56      0       117
        !          37224: v      50      0       118
        !          37225: w      72      0       119
        !          37226: x      50      0       120
        !          37227: y      50      1       121
        !          37228: z      50      0       122
        !          37229: {      33      3       123
        !          37230: ---    26      3       124
        !          37231: }      33      3       125
        !          37232: ~      33      2       148
        !          37233: ---    58      0       126
        !          37234: \`     33      2       145
        !          37235: ga     "
        !          37236: !!     33      1       161
        !          37237: \0241  "
        !          37238: c|     56      3       162
        !          37239: \0242  "
        !          37240: ct     "
        !          37241: L-     56      2       163
        !          37242: \0243  "
        !          37243: ps     "
        !          37244: xo     56      0       164
        !          37245: \0244  "
        !          37246: cr     "
        !          37247: Y-     56      2       165
        !          37248: \0245  "
        !          37249: yn     "
        !          37250: ||     26      3       166
        !          37251: \0246  "
        !          37252: so     56      3       167
        !          37253: \0247  "
        !          37254: sc     "
        !          37255: ""     33      2       168
        !          37256: \0250  "
        !          37257: :a     "
        !          37258: co     74      2       169
        !          37259: \0251  "
        !          37260: a_     37      2       170
        !          37261: \0252  "
        !          37262: <<     56      0       171
        !          37263: \0253  "
        !          37264: -,     58      0       172
        !          37265: \0254  "
        !          37266: hy     33      0       173
        !          37267: \0255  "
        !          37268: --     58      0       45
        !          37269: ro     74      2       174
        !          37270: \0256  "
        !          37271: rg     "
        !          37272: -^     33      2       175
        !          37273: \0257  "
        !          37274: -a     "
        !          37275: 0^     40      2       176
        !          37276: \0260  "
        !          37277: +-     58      2       177
        !          37278: \0261  "
        !          37279: 2^     33      2       178
        !          37280: \0262  "
        !          37281: 3^     33      2       179
        !          37282: \0263  "
        !          37283: \'     33      2       180
        !          37284: \0264  "
        !          37285: aa     "
        !          37286: /u     56      1       181
        !          37287: \0265  "
        !          37288: P!     54      3       182
        !          37289: \0266  "
        !          37290: pg     "
        !          37291: .^     28      0       183
        !          37292: \0267  "
        !          37293: ,,     33      1       184
        !          37294: \0270  "
        !          37295: ,a     "
        !          37296: 1^     33      2       185
        !          37297: \0271  "
        !          37298: o_     37      2       186
        !          37299: \0272  "
        !          37300: >>     56      0       187
        !          37301: \0273  "
        !          37302: 14     83      2       188
        !          37303: \0274  "
        !          37304: 12     83      2       189
        !          37305: \0275  "
        !          37306: 34     83      2       190
        !          37307: \0276  "
        !          37308: ??     61      1       191
        !          37309: \0277  "
        !          37310: A`     67      2       192
        !          37311: \0300  "
        !          37312: A'     67      2       193
        !          37313: \0301  "
        !          37314: A^     67      2       194
        !          37315: \0302  "
        !          37316: A~     67      2       195
        !          37317: \0303  "
        !          37318: A"     67      2       196
        !          37319: \0304  "
        !          37320: A*     67      2       197
        !          37321: \0305  "
        !          37322: AE     100     2       198
        !          37323: \0306  "
        !          37324: C,     72      3       199
        !          37325: \0307  "
        !          37326: E`     67      2       200
        !          37327: \0310  "
        !          37328: E'     67      2       201
        !          37329: \0311  "
        !          37330: E^     67      2       202
        !          37331: \0312  "
        !          37332: E"     67      2       203
        !          37333: \0313  "
        !          37334: I`     28      2       204
        !          37335: \0314  "
        !          37336: I'     28      2       205
        !          37337: \0315  "
        !          37338: I^     28      2       206
        !          37339: \0316  "
        !          37340: I"     28      2       207
        !          37341: \0317  "
        !          37342: D-     72      2       208
        !          37343: \0320  "
        !          37344: N~     72      2       209
        !          37345: \0321  "
        !          37346: O`     78      2       210
        !          37347: \0322  "
        !          37348: O'     78      2       211
        !          37349: \0323  "
        !          37350: O^     78      2       212
        !          37351: \0324  "
        !          37352: O~     78      2       213
        !          37353: \0325  "
        !          37354: O"     78      2       214
        !          37355: \0326  "
        !          37356: xx     58      0       215
        !          37357: \0327  "
        !          37358: O/     78      2       216
        !          37359: \0330  "
        !          37360: U`     72      2       217
        !          37361: \0331  "
        !          37362: U'     72      2       218
        !          37363: \0332  "
        !          37364: U^     72      2       219
        !          37365: \0333  "
        !          37366: U"     72      2       220
        !          37367: \0334  "
        !          37368: Y'     67      2       221
        !          37369: \0335  "
        !          37370: TH     67      2       222
        !          37371: \0336  "
        !          37372: ss     61      2       223
        !          37373: \0337  "
        !          37374: a`     56      2       224
        !          37375: \0340  "
        !          37376: a'     56      2       225
        !          37377: \0341  "
        !          37378: a^     56      2       226
        !          37379: \0342  "
        !          37380: a~     56      2       227
        !          37381: \0343  "
        !          37382: a"     56      2       228
        !          37383: \0344  "
        !          37384: a*     56      2       229
        !          37385: \0345  "
        !          37386: ae     89      0       230
        !          37387: \0346  "
        !          37388: c,     50      1       231
        !          37389: \0347  "
        !          37390: e`     56      2       232
        !          37391: \0350  "
        !          37392: e'     56      2       233
        !          37393: \0351  "
        !          37394: e^     56      2       234
        !          37395: \0352  "
        !          37396: e"     56      2       235
        !          37397: \0353  "
        !          37398: i`     28      2       236
        !          37399: \0354  "
        !          37400: i'     28      2       237
        !          37401: \0355  "
        !          37402: i^     28      2       238
        !          37403: \0356  "
        !          37404: i"     28      2       239
        !          37405: \0357  "
        !          37406: d-     56      2       240
        !          37407: \0360  "
        !          37408: n~     56      2       241
        !          37409: \0361  "
        !          37410: o`     56      2       242
        !          37411: \0362  "
        !          37412: o'     56      2       243
        !          37413: \0363  "
        !          37414: o^     56      2       244
        !          37415: \0364  "
        !          37416: o~     56      2       245
        !          37417: \0365  "
        !          37418: o"     56      2       246
        !          37419: \0366  "
        !          37420: -:     58      0       247
        !          37421: \0367  "
        !          37422: o/     61      0       248
        !          37423: \0370  "
        !          37424: u`     56      2       249
        !          37425: \0371  "
        !          37426: u'     56      2       250
        !          37427: \0372  "
        !          37428: u^     56      2       251
        !          37429: \0373  "
        !          37430: u"     56      2       252
        !          37431: \0374  "
        !          37432: y'     50      3       253
        !          37433: \0375  "
        !          37434: th     56      3       254
        !          37435: \0376  "
        !          37436: y"     50      3       255
        !          37437: \0377  "
        !          37438: ^a     33      2       147
        !          37439: ~a     33      2       148
        !          37440: Ua     33      2       150
        !          37441: .a     33      2       151
        !          37442: oa     33      2       154
        !          37443: "a     33      2       157
        !          37444: Ca     33      1       158
        !          37445: va     33      2       159
        !          37446: 0707070014230547600407550057030057030000021525670522633100200002100000000000post.src/psfiles0707070014230550011006400057030057030000011527600522633100200003400000001421post.src/psfiles/psfiles.mkMAKE=/bin/make
        !          37447: MAKEFILE=psfiles.mk
        !          37448: 
        !          37449: SYSTEM=V9
        !          37450: VERSION=3.3.2
        !          37451: 
        !          37452: GROUP=bin
        !          37453: OWNER=bin
        !          37454: 
        !          37455: POSTLIB=/usr/lib/postscript
        !          37456: 
        !          37457: all :
        !          37458: 
        !          37459: install :
        !          37460:        @if [ ! -d "$(POSTLIB)" ]; then \
        !          37461:            mkdir $(POSTLIB); \
        !          37462:            chmod 755 $(POSTLIB); \
        !          37463:            chgrp $(GROUP) $(POSTLIB); \
        !          37464:            chown $(OWNER) $(POSTLIB); \
        !          37465:        fi
        !          37466:        cp *.ps ps.* $(POSTLIB)
        !          37467:        @for i in *.ps ps.*; do \
        !          37468:            chmod 644 $(POSTLIB)/$$i; \
        !          37469:            chgrp $(GROUP) $(POSTLIB)/$$i; \
        !          37470:            chown $(OWNER) $(POSTLIB)/$$i; \
        !          37471:        done
        !          37472: 
        !          37473: clean :
        !          37474: 
        !          37475: clobber : clean
        !          37476: 
        !          37477: changes :
        !          37478:        @trap "" 1 2 3 15; \
        !          37479:        sed \
        !          37480:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
        !          37481:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
        !          37482:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          37483:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          37484:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
        !          37485:        $(MAKEFILE) >XXX.mk; \
        !          37486:        mv XXX.mk $(MAKEFILE)
        !          37487: 
        !          37488: 0707070014230547621006440057030057030000011527060522627502200003500000000540post.src/psfiles/ps.requests%
        !          37489: % Keywords begin with an @ in the first column. The value follows on the next
        !          37490: % line and includes everything up to next keyword line, except for comments
        !          37491: % which are lines that begin with % in the first column.
        !          37492: %
        !          37493: 
        !          37494: @manualfeed
        !          37495:        statusdict begin
        !          37496:                /manualfeedtimeout 300 def
        !          37497:                /manualfeed true def
        !          37498:        end
        !          37499: 
        !          37500: @ledgertray
        !          37501:        statusdict begin
        !          37502:                ledgertray
        !          37503:        end
        !          37504: 0707070014230547631006440057030057030000011527100522627502200003200000013654post.src/psfiles/forms.ps%
        !          37505: % Procedures that let you print any number of pages on each sheet of paper. It's
        !          37506: % far from perfect and won't handle everything (eg. it's not recursive), but should
        !          37507: % be good enough for now. Assumes the default page coordinate system has been set
        !          37508: % up before setupforms is called. lastpage makes certain the last page is printed,
        !          37509: % and should be called immediately after the %%Trailer comment.
        !          37510: %
        !          37511: % Three lines of code needed for page image clipping have been commented out for
        !          37512: % now. It works, but can really slow things down on some versions of PostScript.
        !          37513: % Uncomment them if you want to clip pages.
        !          37514: %
        !          37515: 
        !          37516: /setupforms {
        !          37517:     /formsperpage exch def
        !          37518: 
        !          37519:     /currentform 0 def
        !          37520:     /slop 5 def
        !          37521:     /min {2 copy gt {exch} if pop} def
        !          37522: 
        !          37523: %
        !          37524: % Save the current environment so the real showpage can be restored when we're all
        !          37525: % done. Occasionally helps when a banner page is included with the job.
        !          37526: %
        !          37527: 
        !          37528:     /saveobj save def
        !          37529: 
        !          37530: %
        !          37531: % Number of rows and columns we'll need - may exchange them later.
        !          37532: %
        !          37533: 
        !          37534:     /columns formsperpage sqrt ceiling cvi def
        !          37535:     /rows formsperpage columns div ceiling cvi def
        !          37536: 
        !          37537: %
        !          37538: % Slop leaves a little room around the edge so page images can be outlined and have
        !          37539: % the borders show up. Distance is in default coordinates, so we need to figure out
        !          37540: % how it maps into user coordinates.
        !          37541: %
        !          37542: 
        !          37543:     6 array defaultmatrix
        !          37544:     6 array currentmatrix
        !          37545:     6 array invertmatrix
        !          37546:     6 array concatmatrix
        !          37547:     /tempmatrix exch def
        !          37548: 
        !          37549:     0 slop tempmatrix dtransform dup mul exch dup mul add sqrt
        !          37550:     /slop exch def
        !          37551: 
        !          37552: %
        !          37553: % Determine how big the image area is, using the clipping path bounding box minus
        !          37554: % a little and leave the coordinates of the lower left corner of the clipping path
        !          37555: % on the stack. Also temporarily set the size of each page (ie. formheight and
        !          37556: % formwidth) from the clipping path - just in case old software uses this stuff.
        !          37557: % Only works for coordinate systems that have been rotated by a multiple of 90
        !          37558: % degrees.
        !          37559: %
        !          37560: 
        !          37561:     newpath clippath pathbbox
        !          37562:     2 index sub dup /formheight exch def slop 2 mul sub /pageheight exch def
        !          37563:     2 index sub dup /formwidth exch def slop 2 mul sub /pagewidth exch def
        !          37564: 
        !          37565: %
        !          37566: % New translators all store the size of each page in default coordinates in the
        !          37567: % pagebbox array and it can be different than the size determined by the clipping
        !          37568: % path. If we can find pagebbox use it to set the real dimensions of each page.
        !          37569: % Leaves the coordinates of the lower left corner on the stack, (either from
        !          37570: % pagebbox or clippath) so four numbers are there when we're done.
        !          37571: %
        !          37572: 
        !          37573:     userdict /gotpagebbox known userdict /pagebbox known and {
        !          37574:        newpath
        !          37575:        pagebbox 0 get pagebbox 1 get tempmatrix transform moveto
        !          37576:        pagebbox 0 get pagebbox 3 get tempmatrix transform lineto
        !          37577:        pagebbox 2 get pagebbox 3 get tempmatrix transform lineto
        !          37578:        pagebbox 2 get pagebbox 1 get tempmatrix transform lineto
        !          37579:        closepath pathbbox
        !          37580:        2 index sub /formheight exch def
        !          37581:        2 index sub /formwidth exch def
        !          37582:     } {2 copy} ifelse
        !          37583: 
        !          37584: %
        !          37585: % Top two numbers are the displacement from the job's origin to the lower left
        !          37586: % corner of each page image when we finish setting up the new coordinate system.
        !          37587: %
        !          37588: 
        !          37589:     /ycorner exch def
        !          37590:     /xcorner exch def
        !          37591: 
        !          37592: %
        !          37593: % The two numbers left on the stack are the coordinates of the lower left corner
        !          37594: % of the clipping path. Go there and then up a bit so page images can be outlined.
        !          37595: %
        !          37596: 
        !          37597:     translate
        !          37598:     slop slop translate
        !          37599: 
        !          37600: %
        !          37601: % If the page is wider than high we may be able to do better if we exchange rows
        !          37602: % and columns. Won't make a difference in the current orientation or if rows and
        !          37603: % columns are the same.
        !          37604: %
        !          37605: 
        !          37606:     pagewidth pageheight gt {
        !          37607:        rows columns /rows exch def /columns exch def
        !          37608:     } if
        !          37609: 
        !          37610: %
        !          37611: % Find the orientation and scaling that makes things as large as possible. More
        !          37612: % than what's really needed. First calculation essentially finds the minimum of
        !          37613: % 1/rows and 1/columns.
        !          37614: %
        !          37615: 
        !          37616:     pagewidth formwidth columns mul div pageheight formheight rows mul div min
        !          37617:     pageheight formwidth columns mul div pagewidth formheight rows mul div min
        !          37618: 
        !          37619:     2 copy lt {
        !          37620:        rotation 1 eq {
        !          37621:            landscape {
        !          37622:                0 pageheight translate
        !          37623:                -90 rotate
        !          37624:            }{
        !          37625:                pagewidth 0 translate
        !          37626:                90 rotate
        !          37627:            } ifelse
        !          37628:        }{
        !          37629:            landscape {
        !          37630:                pagewidth 0 translate
        !          37631:                90 rotate
        !          37632:            }{
        !          37633:                0 pageheight translate
        !          37634:                -90 rotate
        !          37635:            } ifelse
        !          37636:        } ifelse
        !          37637:        pagewidth pageheight /pagewidth exch def /pageheight exch def
        !          37638:        exch
        !          37639:     } if
        !          37640: 
        !          37641: %
        !          37642: % Second number from the top is the best choice. Scale so everything will fit on
        !          37643: % the current page, go back to the original origin, and then get ready for the
        !          37644: % first page - which goes in the upper left corner.
        !          37645: %
        !          37646: 
        !          37647:     pop dup dup scale
        !          37648:     xcorner neg ycorner neg translate
        !          37649:     0 rows 1 sub formheight mul translate
        !          37650: 
        !          37651: %
        !          37652: % Try to center everything on the page - scaling we used is on top of the stack.
        !          37653: %
        !          37654: 
        !          37655:     dup pagewidth exch div formwidth columns mul sub 2 div
        !          37656:     exch pageheight exch div formheight rows mul sub 2 div translate
        !          37657: 
        !          37658: %
        !          37659: % Redefine showpage.
        !          37660: %
        !          37661: 
        !          37662:     /!PreForms~showpage~ /showpage load def            % save current showpage
        !          37663: 
        !          37664:     /showpage {
        !          37665:        saveobj restore
        !          37666: %      initclip
        !          37667:        formsperpage 1 gt {
        !          37668:            gsave .1 setlinewidth outlineform stroke grestore
        !          37669:        } if
        !          37670:        formwidth 0 translate
        !          37671:        /currentform currentform 1 add def
        !          37672:        currentform columns mod 0 eq {
        !          37673:            columns formwidth mul neg formheight neg translate
        !          37674:        } if
        !          37675:        currentform formsperpage mod 0 eq {
        !          37676:            gsave !PreForms~showpage~ grestore
        !          37677:            currentform columns mod formwidth mul neg
        !          37678:            formsperpage columns idiv formheight mul translate
        !          37679:            /currentform 0 def
        !          37680:        } if
        !          37681: %      outlineform clip newpath
        !          37682:        /saveobj save def
        !          37683:     } bind def
        !          37684: 
        !          37685:     /outlineform {
        !          37686:        newpath
        !          37687:        xcorner ycorner moveto
        !          37688:        formwidth 0 rlineto
        !          37689:        0 formheight rlineto
        !          37690:        formwidth neg 0 rlineto
        !          37691:        closepath
        !          37692:     } bind def
        !          37693: 
        !          37694:     /lastpage {
        !          37695:        formsperpage 1 gt {
        !          37696:            currentform 0 ne {
        !          37697:                /saveobj save def
        !          37698:                0 1 formsperpage currentform sub formsperpage mod {
        !          37699:                    pop showpage
        !          37700:                } for
        !          37701:                saveobj restore
        !          37702:            } if
        !          37703:            saveobj restore
        !          37704:            saveobj restore
        !          37705:        } if
        !          37706:     } def
        !          37707: 
        !          37708: %
        !          37709: % Clip the first page image and save the environment we just set up, including
        !          37710: % the redefined showpage.
        !          37711: %
        !          37712: 
        !          37713: %   outlineform clip
        !          37714:     newpath
        !          37715:     /saveobj save def
        !          37716: } def
        !          37717: 0707070014230547641006440057030057030000011527200522627502200003500000005107post.src/psfiles/baseline.ps%
        !          37718: % Stuff used to draw or set text along a baseline specified by parametric equations
        !          37719: % for x and y.
        !          37720: %
        !          37721: 
        !          37722: /left -1 def
        !          37723: /center 0 def
        !          37724: /right 1 def
        !          37725: 
        !          37726: /baselinedict 50 dict def
        !          37727: 
        !          37728: /newbaseline {
        !          37729:        baselinedict begin
        !          37730:                /g' exch bind def
        !          37731:                /f' exch bind def
        !          37732:                /g  exch bind def
        !          37733:                /f  exch bind def
        !          37734: 
        !          37735:                counttomark 2 eq {/hoffset exch def} if
        !          37736:                /res exch def
        !          37737: 
        !          37738:                /t 0 def
        !          37739:                /s 0 def
        !          37740:                /voffset false def
        !          37741:                cleartomark
        !          37742:        end
        !          37743: } bind def
        !          37744: 
        !          37745: /drawfunnytext {
        !          37746:        baselinedict begin
        !          37747:                /t exch def
        !          37748:                /mode exch def
        !          37749:                /str exch def
        !          37750: 
        !          37751:                mode left eq {
        !          37752:                        /leftstring emptystring def
        !          37753:                        /rightstring str def
        !          37754:                } if
        !          37755: 
        !          37756:                mode right eq {
        !          37757:                        /leftstring str reversestring def
        !          37758:                        /rightstring emptystring def
        !          37759:                } if
        !          37760: 
        !          37761:                mode center eq {
        !          37762:                        str splitstring
        !          37763:                        /rightstring exch def
        !          37764:                        /leftstring exch reversestring def
        !          37765:                } if
        !          37766: 
        !          37767:                gsave currentpoint translate leftstring left t baselineshow grestore
        !          37768:                gsave currentpoint translate rightstring right t baselineshow grestore
        !          37769: 
        !          37770:                /t 0 def
        !          37771:                /s 0 def
        !          37772:                /voffset false def
        !          37773:                cleartomark
        !          37774:        end
        !          37775: } bind def
        !          37776: 
        !          37777: /setfunnytext {
        !          37778:        baselinedict begin
        !          37779:                /vpos exch def
        !          37780:                /hpos exch def
        !          37781:                /str  exch def
        !          37782: 
        !          37783:                voffset vpos ne {
        !          37784:                        /voffset vpos def
        !          37785:                        /t 0 def
        !          37786:                        /s hoffset def
        !          37787:                } if
        !          37788: 
        !          37789:                gsave
        !          37790:                        hoffset voffset translate
        !          37791:                        0 0 moveto
        !          37792:                        /ds hpos s sub def
        !          37793:                        /dt ds t f' dup mul t g' dup mul add sqrt res mul div def
        !          37794:                        /s s ds add def
        !          37795:                        /t t dt add def
        !          37796:                        str right t baselineshow
        !          37797:                grestore
        !          37798:        end
        !          37799: } bind def
        !          37800: 
        !          37801: baselinedict begin
        !          37802: 
        !          37803: /f  {} bind def
        !          37804: /g  {pop 0} bind def
        !          37805: /f' {pop 1} bind def
        !          37806: /g' {pop 0} bind def
        !          37807: 
        !          37808: /s 0 def
        !          37809: /t 0 def
        !          37810: /res 72 def
        !          37811: 
        !          37812: /onecharstring ( ) def
        !          37813: /emptystring () def
        !          37814: 
        !          37815: /baselineshow {
        !          37816:        /t exch def
        !          37817:        /mode exch def
        !          37818:        /str exch def
        !          37819: 
        !          37820:        gsave
        !          37821:                t f res mul t g res mul translate
        !          37822:                0 0 moveto
        !          37823:                t g' t f' atan rotate
        !          37824:                {
        !          37825:                        mode right eq {pop} if
        !          37826:                        grestore gsave
        !          37827:                        onecharstring 0 3 -1 roll put onecharstring stringwidth pop
        !          37828:                        /ds exch mode mul def
        !          37829:                        /dt ds t f' dup mul t g' dup mul add sqrt res mul div def
        !          37830:                        /t t dt add def
        !          37831:                        /s s ds add def
        !          37832:                        t f res mul t g res mul translate
        !          37833:                        0 0 moveto
        !          37834:                        t g' t f' atan rotate
        !          37835:                        mode left eq {pop} if
        !          37836:                } str kshow
        !          37837:        grestore
        !          37838: } bind def
        !          37839: 
        !          37840: /reversestring {
        !          37841:        /str1 exch def
        !          37842: 
        !          37843:        /str2 str1 length string def
        !          37844:        /i 0 def
        !          37845:        /n str1 length 1 sub def
        !          37846: 
        !          37847:        {
        !          37848:                str1 n get str2 exch i exch put
        !          37849:                /i i 1 add def
        !          37850:                /n n 1 sub def
        !          37851:                n 0 lt {exit} if
        !          37852:        } loop
        !          37853:        str2
        !          37854: } bind def
        !          37855: 
        !          37856: /splitstring {
        !          37857:        /str1 exch def
        !          37858: 
        !          37859:        /len str1 stringwidth pop def
        !          37860:        /s 0 def
        !          37861:        /n 0 def
        !          37862:        str1 length {
        !          37863:                str1 n get onecharstring exch 0 exch put
        !          37864:                /s onecharstring stringwidth pop s add def
        !          37865:                s len 2 div ge {exit} if
        !          37866:                /n n 1 add def
        !          37867:        } repeat
        !          37868:        str1 0 n 1 add getinterval
        !          37869:        str1 n str1 length n sub getinterval
        !          37870: } bind def
        !          37871: 
        !          37872: end
        !          37873: 0707070014230547651006440057030057030000011527160522627502200003200000002540post.src/psfiles/color.ps%
        !          37874: % Color and reverse video support for dpost. A call made to setcolor with two
        !          37875: % arguments implies reverse video printing.
        !          37876: %
        !          37877: 
        !          37878: /rgb {setrgbcolor} bind def
        !          37879: /hsb {sethsbcolor} bind def
        !          37880: 
        !          37881: /colordict 50 dict dup begin
        !          37882:        /red                    { 1 0 0 } def
        !          37883:        /green                  { 0 1 0 } def
        !          37884:        /blue                   { 0 0 1 } def
        !          37885:        /cyan                   { 0 1 1 } def
        !          37886:        /magenta                { 1 0 1 } def
        !          37887:        /yellow                 { 1 1 0 } def
        !          37888:        /white                  { 1 1 1 } def
        !          37889:        /black                  { 0 0 0 } def
        !          37890: end def
        !          37891: 
        !          37892: /setcolor {
        !          37893:        counttomark 1 eq {
        !          37894:                dup colordict exch known not {pop /black} if
        !          37895:                colordict exch get exec setrgbcolor
        !          37896:        } if
        !          37897:        counttomark 2 eq {
        !          37898:                /backcolor exch def
        !          37899:                /textcolor exch def
        !          37900:                colordict backcolor known not colordict textcolor known not or {
        !          37901:                        /backcolor colordict /black get def
        !          37902:                        /textcolor colordict /white get def
        !          37903:                } if
        !          37904:                /backcolor colordict backcolor get def
        !          37905:                /textcolor colordict textcolor get def
        !          37906:                /dY1 0 def
        !          37907:                /dY2 0 def
        !          37908:                textcolor exec setrgbcolor
        !          37909:        } if
        !          37910: } bind def
        !          37911: 
        !          37912: /drawrvbox {
        !          37913:        /x2 exch def
        !          37914:        /x1 exch def
        !          37915: 
        !          37916:        currentpoint dup
        !          37917:        /y1 exch def
        !          37918:        /y2 exch def pop
        !          37919: 
        !          37920:        dY1 0 eq dY2 0 eq and {
        !          37921:                currentfont /FontBBox get aload pop
        !          37922:                currentfont /FontMatrix get dtransform /dY2 exch def pop
        !          37923:                currentfont /FontMatrix get dtransform /dY1 exch def pop
        !          37924:        } if
        !          37925: 
        !          37926:        /y1 y1 dY1 add def
        !          37927:        /y2 y2 dY2 add def
        !          37928: 
        !          37929:        backcolor exec setrgbcolor
        !          37930:        newpath
        !          37931:        x1 y1 moveto
        !          37932:        x2 y1 lineto
        !          37933:        x2 y2 lineto
        !          37934:        x1 y2 lineto
        !          37935:        closepath fill
        !          37936:        textcolor exec setrgbcolor
        !          37937: } bind def
        !          37938: 0707070014230547661006440057030057030000011527070522627502200003200000001611post.src/psfiles/shade.ps%
        !          37939: % Shading support - primarily for ASCII file translators.
        !          37940: %
        !          37941: 
        !          37942: /grays [0.98 0.9 0.75 0.6] def
        !          37943: 
        !          37944: /setshade {
        !          37945:        /level exch def
        !          37946:        level 0 le {
        !          37947:                /textgray 0 def
        !          37948:                /backgray 1 def
        !          37949:        }{
        !          37950:                /backgray level grays length gt
        !          37951:                        {/textgray 1 def 0}
        !          37952:                        {/textgray 0 def grays level 1 sub get}
        !          37953:                ifelse def
        !          37954:        } ifelse
        !          37955:        textgray setgray
        !          37956:        /dY1 0 def
        !          37957:        /dY2 0 def
        !          37958: } bind def
        !          37959: 
        !          37960: /drawrvbox {
        !          37961:        /x2 exch charwidth mul def
        !          37962:        /x1 exch charwidth mul def
        !          37963: 
        !          37964:        x1 x2 lt {
        !          37965:                dup             % expects y on top
        !          37966:                /y1 exch linespace mul def
        !          37967:                /y2 y1 def
        !          37968: 
        !          37969:                dY1 0 eq dY2 0 eq and {
        !          37970:                        currentfont /FontBBox get aload pop
        !          37971:                        160 sub
        !          37972:                        currentfont /FontMatrix get dtransform /dY2 exch def pop
        !          37973:                        100 add
        !          37974:                        currentfont /FontMatrix get dtransform /dY1 exch def pop
        !          37975:                } if
        !          37976: 
        !          37977:                /y1 y1 dY1 add def
        !          37978:                /y2 y2 dY2 add def
        !          37979: 
        !          37980:                backgray setgray
        !          37981:                newpath
        !          37982:                x1 y1 moveto
        !          37983:                x2 y1 lineto
        !          37984:                x2 y2 lineto
        !          37985:                x1 y2 lineto
        !          37986:                closepath fill
        !          37987:        } if
        !          37988:        textgray setgray
        !          37989: } bind def
        !          37990: 0707070014230547671006440057030057030000011527230522627502200003600000001267post.src/psfiles/roundpage.ps%
        !          37991: % Tries to round clipping path dimensions, as stored in array pagebbox, so they
        !          37992: % match one of the known sizes in the papersizes array. Lower left coordinates
        !          37993: % are always set to 0.
        !          37994: %
        !          37995: 
        !          37996: /roundpagebbox {
        !          37997:     7 dict begin
        !          37998:        /papersizes [8.5 inch 11 inch 14 inch 17 inch] def
        !          37999: 
        !          38000:        /mappapersize {
        !          38001:                /val exch def
        !          38002:                /slop .5 inch def
        !          38003:                /diff slop def
        !          38004:                /j 0 def
        !          38005:                0 1 papersizes length 1 sub {
        !          38006:                        /i exch def
        !          38007:                        papersizes i get val sub abs
        !          38008:                        dup diff le {/diff exch def /j i def} {pop} ifelse
        !          38009:                } for
        !          38010:                diff slop lt {papersizes j get} {val} ifelse
        !          38011:        } def
        !          38012: 
        !          38013:        pagebbox 0 0 put
        !          38014:        pagebbox 1 0 put
        !          38015:        pagebbox dup 2 get mappapersize 2 exch put
        !          38016:        pagebbox dup 3 get mappapersize 3 exch put
        !          38017:     end
        !          38018: } bind def
        !          38019: 
        !          38020: 0707070014230547701006440057030057030000011527240522627502200003700000001356post.src/psfiles/fatcourier.ps%
        !          38021: % Fat versions of the stroked Courier and Courier-Oblique - from Johnathan Shopiro.
        !          38022: % Can be selectively pulled in using the -C option that's available with all the
        !          38023: % PostScript translators or permanently added to any of the prologues. Helps on
        !          38024: % Linotronic typesetters, where Courier and Courier-Oblique are too light!
        !          38025: %
        !          38026: 
        !          38027: /newdict /Courier findfont length 1 add dict def
        !          38028: /Courier findfont {
        !          38029:        1 index /FID ne
        !          38030:                {newdict 3 1 roll put}
        !          38031:                {pop pop}
        !          38032:        ifelse
        !          38033: } forall
        !          38034: newdict /StrokeWidth 60 put
        !          38035: /Courier newdict definefont pop
        !          38036: 
        !          38037: /newdict /Courier-Oblique findfont length 1 add dict def
        !          38038: /Courier-Oblique findfont {
        !          38039:        1 index /FID ne
        !          38040:                {newdict 3 1 roll put}
        !          38041:                {pop pop}
        !          38042:        ifelse
        !          38043: } forall
        !          38044: newdict /StrokeWidth 60 put
        !          38045: /Courier-Oblique newdict definefont pop
        !          38046: 0707070014230547711006440057030057030000011527300522627502200003000000006066post.src/psfiles/aps.ps%
        !          38047: % Tune things up so Linotronic output looks more like the APS-5. Pull this file
        !          38048: % into dpost output using the -C option. To get the best looking output run dpost
        !          38049: % with the -e2 option and use special font files that look like the APS tables but
        !          38050: % have character codes (ie. the fourth column in the width tables) appropriate for
        !          38051: % PostScript fonts. Widths in these tables must be for APS fonts!
        !          38052: %
        !          38053: % Start with fat versions of the stroked Courier and Courier-Oblique fonts - from
        !          38054: % Johnathan Shopiro.
        !          38055: %
        !          38056: 
        !          38057: /newdict /Courier findfont length dict def
        !          38058: /Courier findfont {
        !          38059:        1 index /FID ne
        !          38060:                {newdict 3 1 roll put}
        !          38061:                {pop pop}
        !          38062:        ifelse
        !          38063: } forall
        !          38064: newdict /StrokeWidth 65 put
        !          38065: /Courier newdict definefont pop
        !          38066: 
        !          38067: /newdict /Courier-Oblique findfont length dict def
        !          38068: /Courier-Oblique findfont {
        !          38069:        1 index /FID ne
        !          38070:                {newdict 3 1 roll put}
        !          38071:                {pop pop}
        !          38072:        ifelse
        !          38073: } forall
        !          38074: newdict /StrokeWidth 65 put
        !          38075: /Courier-Oblique newdict definefont pop
        !          38076: 
        !          38077: %
        !          38078: % Scaled down versions of the Helvetica font family.
        !          38079: %
        !          38080: 
        !          38081: /newdict /Helvetica findfont length dict def
        !          38082: /Helvetica findfont {
        !          38083:        1 index /FontMatrix eq {.922 .922 matrix scale matrix concatmatrix} if
        !          38084: 
        !          38085:        1 index /FID ne
        !          38086:                {newdict 3 1 roll put}
        !          38087:                {pop pop}
        !          38088:        ifelse
        !          38089: } forall
        !          38090: /Helvetica newdict definefont pop
        !          38091: 
        !          38092: /newdict /Helvetica-Oblique findfont length dict def
        !          38093: /Helvetica-Oblique findfont {
        !          38094:        1 index /FontMatrix eq {.922 .922 matrix scale matrix concatmatrix} if
        !          38095: 
        !          38096:        1 index /FID ne
        !          38097:                {newdict 3 1 roll put}
        !          38098:                {pop pop}
        !          38099:        ifelse
        !          38100: } forall
        !          38101: /Helvetica-Oblique newdict definefont pop
        !          38102: 
        !          38103: /newdict /Helvetica-Bold findfont length dict def
        !          38104: /Helvetica-Bold findfont {
        !          38105:        1 index /FontMatrix eq {.922 .922 matrix scale matrix concatmatrix} if
        !          38106: 
        !          38107:        1 index /FID ne
        !          38108:                {newdict 3 1 roll put}
        !          38109:                {pop pop}
        !          38110:        ifelse
        !          38111: } forall
        !          38112: /Helvetica-Bold newdict definefont pop
        !          38113: 
        !          38114: /newdict /Helvetica-BoldOblique findfont length dict def
        !          38115: /Helvetica-BoldOblique findfont {
        !          38116:        1 index /FontMatrix eq {.922 .922 matrix scale matrix concatmatrix} if
        !          38117: 
        !          38118:        1 index /FID ne
        !          38119:                {newdict 3 1 roll put}
        !          38120:                {pop pop}
        !          38121:        ifelse
        !          38122: } forall
        !          38123: /Helvetica-BoldOblique newdict definefont pop
        !          38124: 
        !          38125: %
        !          38126: % Scaled up versions of the Times font family.
        !          38127: %
        !          38128: 
        !          38129: /newdict /Times-Roman findfont length dict def
        !          38130: /Times-Roman findfont {
        !          38131:        1 index /FontMatrix eq {1.0225 1.0225 matrix scale matrix concatmatrix} if
        !          38132: 
        !          38133:        1 index /FID ne
        !          38134:                {newdict 3 1 roll put}
        !          38135:                {pop pop}
        !          38136:        ifelse
        !          38137: } forall
        !          38138: /Times-Roman newdict definefont pop
        !          38139: 
        !          38140: /newdict /Times-Italic findfont length dict def
        !          38141: /Times-Italic findfont {
        !          38142:        1 index /FontMatrix eq {1.0225 1.0225 matrix scale matrix concatmatrix} if
        !          38143: 
        !          38144:        1 index /FID ne
        !          38145:                {newdict 3 1 roll put}
        !          38146:                {pop pop}
        !          38147:        ifelse
        !          38148: } forall
        !          38149: /Times-Italic newdict definefont pop
        !          38150: 
        !          38151: /newdict /Times-Bold findfont length dict def
        !          38152: /Times-Bold findfont {
        !          38153:        1 index /FontMatrix eq {1.0225 1.0225 matrix scale matrix concatmatrix} if
        !          38154: 
        !          38155:        1 index /FID ne
        !          38156:                {newdict 3 1 roll put}
        !          38157:                {pop pop}
        !          38158:        ifelse
        !          38159: } forall
        !          38160: /Times-Bold newdict definefont pop
        !          38161: 
        !          38162: /newdict /Times-BoldItalic findfont length dict def
        !          38163: /Times-BoldItalic findfont {
        !          38164:        1 index /FontMatrix eq {1.0225 1.0225 matrix scale matrix concatmatrix} if
        !          38165: 
        !          38166:        1 index /FID ne
        !          38167:                {newdict 3 1 roll put}
        !          38168:                {pop pop}
        !          38169:        ifelse
        !          38170: } forall
        !          38171: /Times-BoldItalic newdict definefont pop
        !          38172: 
        !          38173: 0707070014230547721006440057030057030000011527250522627502200003300000001715post.src/psfiles/banner.ps%
        !          38174: % Simple program to print a banner page
        !          38175: %
        !          38176: 
        !          38177: /banner {
        !          38178:        /saveobj save def
        !          38179:        erasepage initgraphics
        !          38180: 
        !          38181:        /#copies 1 def
        !          38182:        /inch {72 mul} bind def
        !          38183:        /pagebbox [clippath pathbbox newpath] def
        !          38184: 
        !          38185:        /font /Helvetica def
        !          38186:        /size 20 def
        !          38187:        /height pagebbox 3 get def
        !          38188:        /width pagebbox 2 get .09 mul def
        !          38189: 
        !          38190:        .92 setgray
        !          38191:        pagebbox 0 get pagebbox 1 get moveto
        !          38192:        width 0 rlineto 0 height rlineto width neg 0 rlineto closepath eofill
        !          38193:        pagebbox 2 get pagebbox 1 get moveto
        !          38194:        width neg 0 rlineto 0 height rlineto width 0 rlineto closepath eofill
        !          38195:        0 setgray
        !          38196: 
        !          38197:        font findfont size scalefont setfont
        !          38198:        /linesp size size .15 mul add neg def
        !          38199:        /tab (Destination) stringwidth pop 1.5 mul def
        !          38200:        /nextline {0 0 moveto show tab 0 moveto show 0 linesp translate} def
        !          38201: 
        !          38202:        pagebbox 0 get 1.5 width mul add pagebbox 3 get 2.0 width mul sub translate
        !          38203:        (Bin)  nextline
        !          38204:        (Name) nextline
        !          38205:        (Owner) nextline
        !          38206:        (File) nextline
        !          38207:        (Account) nextline
        !          38208:        (Destination) nextline
        !          38209:        (Spooldate) nextline
        !          38210:        showpage
        !          38211:        saveobj restore
        !          38212: } bind def
        !          38213: 0707070014230547731006440057030057030000011527260522627502200003000000001156post.src/psfiles/READMEPostScript files that go in $(POSTLIB). Several, like forms.ps, are
        !          38214: used by most translators supplied in this package. Most PostScript
        !          38215: files only used by a single translator (e.g. the prologue) have been 
        !          38216: been moved into the appropriate source directory. Files that end in
        !          38217: .enc support alternate character sets (e.g. ISO Latin 1 alphabet).
        !          38218: The implementation is left open, but typically redefines findfont.
        !          38219: That approach works because findfont is a procedure rather than an
        !          38220: operator, so it's not affected by bind. Also can't depend on having
        !          38221: a systemdict definition for findfont. It's in userdict on Version
        !          38222: 48.0 VT600s.
        !          38223: 
        !          38224: 0707070014230547741006440057030057030000011527270522627502200003300000001016post.src/psfiles/unbind.ps%
        !          38225: % Unbind the operators in an executable array or packedarray. Leaves the
        !          38226: % unbound array or the original object on the stack.
        !          38227: %
        !          38228: 
        !          38229: /unbind {
        !          38230:        0 index xcheck
        !          38231:        1 index type /arraytype eq
        !          38232:        2 index type /packedarraytype eq or and {
        !          38233:                dup length array copy cvx
        !          38234:                dup 0 exch {
        !          38235:                        dup type /operatortype eq {
        !          38236:                                (                          ) cvs cvn cvx
        !          38237:                        } if
        !          38238: 
        !          38239:                        0 index xcheck
        !          38240:                        1 index type /arraytype eq
        !          38241:                        2 index type /packedarraytype eq or and {
        !          38242:                                unbind
        !          38243:                        } if
        !          38244: 
        !          38245:                        3 copy put pop
        !          38246:                        1 add
        !          38247:                } forall
        !          38248:                pop
        !          38249:        } if
        !          38250: } def
        !          38251: 
        !          38252: 0707070014230547751006440057030057030000011527340522627502200003700000000437post.src/psfiles/Nroundpage.ps%
        !          38253: % A version of roundpage.ps that assumes a symmetric clipping path. Thanks
        !          38254: % to Matthijs Melchior for the suggestion.
        !          38255: %
        !          38256: 
        !          38257: /roundpagebbox {
        !          38258:        pagebbox dup 0 get pagebbox 2 get add 2 exch put
        !          38259:        pagebbox dup 1 get pagebbox 3 get add 3 exch put
        !          38260:        pagebbox 0 0 put
        !          38261:        pagebbox 1 0 put
        !          38262: } bind def
        !          38263: 0707070014230361610407550057030057030000021040770522633073000002500000000000post.src/buildtables0707070014230361621006440057030057030000011041300522627502300003400000000353post.src/buildtables/READMEPrograms for building troff width tables on a PostScript printer.
        !          38264: Assumes you have direct access to the printer's serial port. Also
        !          38265: needs a special table dependent shell library file to build the
        !          38266: tables (e.g. ../devLatin1/shell.lib).
        !          38267: 
        !          38268: 0707070014230357571006400057030057030000011040340522633072700004400000003013post.src/buildtables/buildtables.mkMAKE=/bin/make
        !          38269: MAKEFILE=buildtables.mk
        !          38270: 
        !          38271: SYSTEM=V9
        !          38272: VERSION=3.3.2
        !          38273: 
        !          38274: GROUP=bin
        !          38275: OWNER=bin
        !          38276: 
        !          38277: FONTDIR=/usr/lib/font
        !          38278: POSTBIN=/usr/bin/postscript
        !          38279: POSTLIB=/usr/lib/postscript
        !          38280: MAN1DIR=/tmp
        !          38281: 
        !          38282: all : buildtables
        !          38283: 
        !          38284: install : all
        !          38285:        @if [ ! -d $(POSTBIN) ]; then \
        !          38286:            mkdir $(POSTBIN); \
        !          38287:            chmod 755 $(POSTBIN); \
        !          38288:            chgrp $(GROUP) $(POSTBIN); \
        !          38289:            chown $(OWNER) $(POSTBIN); \
        !          38290:        fi
        !          38291:        cp buildtables $(POSTBIN)/buildtables
        !          38292:        @chmod 755 $(POSTBIN)/buildtables
        !          38293:        @chgrp $(GROUP) $(POSTBIN)/buildtables
        !          38294:        @chown $(OWNER) $(POSTBIN)/buildtables
        !          38295:        cp buildtables.1 $(MAN1DIR)/buildtables.1
        !          38296:        @chmod 644 $(MAN1DIR)/buildtables.1
        !          38297:        @chgrp $(GROUP) $(MAN1DIR)/buildtables.1
        !          38298:        @chown $(OWNER) $(MAN1DIR)/buildtables.1
        !          38299: 
        !          38300: clean :
        !          38301: 
        !          38302: clobber : clean
        !          38303:        rm -f buildtables
        !          38304: 
        !          38305: buildtables : buildtables.sh
        !          38306:        sed \
        !          38307:            -e "s'^FONTDIR=.*'FONTDIR=$(FONTDIR)'" \
        !          38308:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
        !          38309:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
        !          38310:        buildtables.sh >buildtables
        !          38311:        @chmod 755 buildtables
        !          38312: 
        !          38313: changes :
        !          38314:        @trap "" 1 2 3 15; \
        !          38315:        sed \
        !          38316:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
        !          38317:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
        !          38318:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          38319:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          38320:            -e "s'^FONTDIR=.*'FONTDIR=$(FONTDIR)'" \
        !          38321:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
        !          38322:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
        !          38323:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
        !          38324:        $(MAKEFILE) >XXX.mk; \
        !          38325:        mv XXX.mk $(MAKEFILE); \
        !          38326:        sed \
        !          38327:            -e "s'^.ds dF.*'.ds dF $(FONTDIR)'" \
        !          38328:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
        !          38329:        buildtables.1 >XXX.1; \
        !          38330:        mv XXX.1 buildtables.1
        !          38331: 
        !          38332: 0707070014230361641006440057030057030000011041330522627502300004400000003771post.src/buildtables/buildtables.sh#
        !          38333: # Builds one or more font width tables or the typesetter description
        !          38334: # file on a PostScript printer. Assumes you have direct access to the
        !          38335: # printer's serial port. No arguments means build a standard collection
        !          38336: # of tables - usually the LaserWriter Plus set. See trofftable and the
        !          38337: # shell library files /usr/lib/font/dev*/shell.lib for more details.
        !          38338: #
        !          38339: 
        !          38340: set -e
        !          38341: 
        !          38342: POSTBIN=/usr/lbin/postscript
        !          38343: POSTLIB=/usr/lib/postscript
        !          38344: FONTDIR=/usr/lib/font
        !          38345: 
        !          38346: POSTIO=$POSTBIN/postio
        !          38347: TROFFTABLE=$POSTBIN/trofftable
        !          38348: 
        !          38349: BAUDRATE=
        !          38350: DEVICE=
        !          38351: LIBRARY=
        !          38352: 
        !          38353: while [ -n "$1" ]; do
        !          38354:     case $1 in
        !          38355:        -C)  shift; OPTIONS="$OPTIONS -C$1";;
        !          38356:        -C*) OPTIONS="$OPTIONS $1";;
        !          38357: 
        !          38358:        -F)  shift; FONTDIR=$1;;
        !          38359:        -F*) FONTDIR=`echo $1 | sed s/-F//`;;
        !          38360: 
        !          38361:        -H)  shift; OPTIONS="$OPTIONS -H$1";;
        !          38362:        -H*) OPTIONS="$OPTIONS $1";;
        !          38363: 
        !          38364:        -S)  shift; LIBRARY=$1;;
        !          38365:        -S*) LIBRARY=`echo $1 | sed s/-S//`;;
        !          38366: 
        !          38367:        -T)  shift; DEVICE=$1;;
        !          38368:        -T*) DEVICE=`echo $1 | sed s/-T//`;;
        !          38369: 
        !          38370:        -b)  shift; BAUDRATE=$1;;
        !          38371:        -b*) BAUDRATE=`echo $1 | sed s/-b//`;;
        !          38372: 
        !          38373:        -c)  shift; OPTIONS="$OPTIONS -c$1";;
        !          38374:        -c*) OPTIONS="$OPTIONS $1";;
        !          38375: 
        !          38376:        -l)  shift; LINE=$1;;
        !          38377:        -l*) LINE=`echo $1 | sed s/-l//`;;
        !          38378: 
        !          38379:        -s)  shift; OPTIONS="$OPTIONS -s$1";;
        !          38380:        -s*) OPTIONS="$OPTIONS $1";;
        !          38381: 
        !          38382:        -t)  shift; OPTIONS="$OPTIONS -t$1";;
        !          38383:        -t*) OPTIONS="$OPTIONS $1";;
        !          38384: 
        !          38385:        -?)  OPTIONS="$OPTIONS $1$2"; shift;;
        !          38386:        -?*) OPTIONS="$OPTIONS $1";;
        !          38387: 
        !          38388:        *)   break;;
        !          38389:     esac
        !          38390:     shift
        !          38391: done
        !          38392: 
        !          38393: if [ ! "$DEVICE" -a ! "$LIBRARY" ]; then
        !          38394:     echo "$0: no device or shell library" >&2
        !          38395:     exit 1
        !          38396: fi
        !          38397: 
        !          38398: LIBRARY=${LIBRARY:-${FONTDIR}/dev${DEVICE}/shell.lib}
        !          38399: 
        !          38400: #
        !          38401: # No arguments means build everything return by the AllTables function.
        !          38402: #
        !          38403: 
        !          38404: if [ $# -eq 0 ]; then
        !          38405:     . $LIBRARY
        !          38406:     set -- `AllTables`
        !          38407: fi
        !          38408: 
        !          38409: for i do
        !          38410:     SHORT=`echo $i | awk '{print $1}'`
        !          38411:     LONG=`echo $i | awk '{print $2}'`
        !          38412: 
        !          38413:     if [ "$LINE" ]
        !          38414:        then echo "==== Building table $SHORT ===="
        !          38415:        else echo "==== Creating table program $SHORT.ps ===="
        !          38416:     fi
        !          38417: 
        !          38418:     $TROFFTABLE -S$LIBRARY $OPTIONS $SHORT $LONG >$SHORT.ps
        !          38419: 
        !          38420:     if [ "$LINE" ]; then
        !          38421:        $POSTIO -t -l$LINE ${BAUDRATE:+-b${BAUDRATE}} $SHORT.ps >$SHORT
        !          38422:        rm -f $SHORT.ps
        !          38423:     fi
        !          38424: done
        !          38425: 
        !          38426: 0707070014230357601006400057030057030000011024300522633073000004300000010314post.src/buildtables/buildtables.1.ds dF /usr/lib/font
        !          38427: .ds dQ /usr/lib/postscript
        !          38428: .TH BUILDTABLES 1 "DWB 3.2"
        !          38429: .SH NAME
        !          38430: .B buildtables
        !          38431: \- build
        !          38432: .B troff
        !          38433: tables on a PostScript printer
        !          38434: .SH SYNOPSIS
        !          38435: \*(mBbuildtables\f1
        !          38436: .OP "" options []
        !          38437: .OP "" "name \(el" []
        !          38438: .SH DESCRIPTION
        !          38439: .B buildtables
        !          38440: builds font width tables or the typesetter description
        !          38441: file on a PostScript printer.
        !          38442: No arguments means build a default set of tables;
        !          38443: usually a superset of the LaserWriter Plus collection.
        !          38444: The following
        !          38445: .I options
        !          38446: are understood:
        !          38447: .TP 1.0i
        !          38448: .OP \-b speed
        !          38449: Transmit data over
        !          38450: .I line
        !          38451: at baud rate
        !          38452: .I speed.
        !          38453: Recognized baud rates are 1200, 2400, 4800, 9600, and 19200.
        !          38454: The default
        !          38455: .I speed
        !          38456: is 9600 baud.
        !          38457: .TP 1.0i
        !          38458: .OP \-l line
        !          38459: Build the tables on the PostScript printer attached to
        !          38460: .I line.
        !          38461: There is no default.
        !          38462: .TP 1.0i
        !          38463: .OP \-t name
        !          38464: Use
        !          38465: .I name
        !          38466: as the template for fonts not in the default set.
        !          38467: Choose
        !          38468: .MW R
        !          38469: for proportionally spaced fonts and
        !          38470: .MW CW
        !          38471: for fixed width fonts.
        !          38472: Try
        !          38473: .MW ZD
        !          38474: (ZapfDingbats) if the font has a non-standard
        !          38475: character set.
        !          38476: The default is
        !          38477: .MR R .
        !          38478: .TP 1.0i
        !          38479: .OP \-C file
        !          38480: Copy
        !          38481: .I file
        !          38482: into each PostScript table program;
        !          38483: .I file
        !          38484: must contain legitimate PostScript.
        !          38485: .TP 1.0i
        !          38486: .OP \-H hostdir
        !          38487: Use
        !          38488: .I hostdir
        !          38489: as the host-resident font directory.
        !          38490: A file in
        !          38491: .I hostdir
        !          38492: that matches the name of the
        !          38493: .B troff
        !          38494: font is assumed to be a host-resident font program and is included
        !          38495: in the PostScript width table program.
        !          38496: There is no default.
        !          38497: .TP 1.0i
        !          38498: .OP \-S file
        !          38499: Use
        !          38500: .I file
        !          38501: as the shell library file.
        !          38502: Overrides the choice made with the
        !          38503: .OP \-T
        !          38504: option.
        !          38505: .TP 1.0i
        !          38506: .OP \-T name
        !          38507: Set the target device to
        !          38508: .I name.
        !          38509: .br
        !          38510: Device
        !          38511: .I name
        !          38512: means
        !          38513: .ft 2
        !          38514: .MI \*(dF/dev name /shell.lib
        !          38515: .ft 1
        !          38516: is the shell library file.
        !          38517: There is no default.
        !          38518: .PP
        !          38519: If
        !          38520: .OP \-l
        !          38521: is omitted output files are the PostScript programs that
        !          38522: build the tables, rather than the tables themselves.
        !          38523: One of
        !          38524: .OP \-T
        !          38525: or
        !          38526: .OP \-S
        !          38527: is required.
        !          38528: If both are given
        !          38529: .OP \-S
        !          38530: wins.
        !          38531: Although
        !          38532: .OP \-H
        !          38533: is the preferred mechanism for including host-resident font files,
        !          38534: .OP \-C
        !          38535: makes sense when only one width table is built.
        !          38536: .PP
        !          38537: The shell library file defines a collection of functions used to
        !          38538: build
        !          38539: .BR troff (1)
        !          38540: tables.
        !          38541: The default set of tables is the list of names returned by the
        !          38542: .MW AllTables
        !          38543: function.
        !          38544: Changes to the default list can be made by updating the
        !          38545: .MW BuiltinTables
        !          38546: function.
        !          38547: .PP
        !          38548: Each
        !          38549: .B buildtables
        !          38550: argument
        !          38551: must be a default table name, or a pair of names enclosed in quotes.
        !          38552: If the argument is a pair, the first name is the
        !          38553: .B troff
        !          38554: font and the second is the full PostScript font name.
        !          38555: Tables are created in the current directory.
        !          38556: Each is assigned a name that matches the
        !          38557: .B troff
        !          38558: table name.
        !          38559: .PP
        !          38560: The PostScript table programs created by
        !          38561: .BR trofftable (1)
        !          38562: are written to files that have
        !          38563: .MW .ps
        !          38564: appended to the
        !          38565: .B troff
        !          38566: table name.
        !          38567: The
        !          38568: .MW .ps
        !          38569: file is deleted after the table is built.
        !          38570: Options not listed above are passed to
        !          38571: .B trofftable.
        !          38572: The PostScript table programs return data to the host computer using
        !          38573: PostScript's
        !          38574: .MW print
        !          38575: operator.
        !          38576: See
        !          38577: .BR hardcopy (1)
        !          38578: if you do not have access to the printer's serial port.
        !          38579: .SH EXAMPLES
        !          38580: .PP
        !          38581: Build the default collection of devpost tables on the printer
        !          38582: connected to
        !          38583: .MW /dev/tty00
        !          38584: (no font name arguments):
        !          38585: .EX
        !          38586: buildtables -l/dev/tty00 -Tpost
        !          38587: .EE
        !          38588: To do the same and to restrict the tables that are built,
        !          38589: Add
        !          38590: .B troff
        !          38591: font names (or
        !          38592: .MR DESC )
        !          38593: to restrict the tables built on the printer connected to
        !          38594: .MR /dev/tty00 :
        !          38595: .EX
        !          38596: buildtables -l/dev/tty00 -Tpost R I B BI DESC S
        !          38597: .EE
        !          38598: Enclose the
        !          38599: .B troff
        !          38600: and PostScript font names in quotes to
        !          38601: build the width table for a font not in the default set
        !          38602: (also on the printer connected to
        !          38603: .MR /dev/tty00 ):
        !          38604: .EX
        !          38605: buildtables -l/dev/tty00 -TLatin1 "GL Garamond-Light"
        !          38606: .EE
        !          38607: A font must be available on the printer when the table is built.
        !          38608: Use
        !          38609: .OP \-H
        !          38610: or
        !          38611: .OP \-C
        !          38612: to include host-resident fonts.
        !          38613: .SH WARNINGS
        !          38614: .PP
        !          38615: A width table will not build properly if the printer cannot access
        !          38616: the PostScript font.
        !          38617: .PP
        !          38618: The
        !          38619: .OP \-TLatin1
        !          38620: option only works on PostScript printers that support the full
        !          38621: .SM ISO
        !          38622: Latin-1 character set.
        !          38623: The error message from older printers will likely indicate a missing
        !          38624: .MW ISOLatin1Encoding
        !          38625: array.
        !          38626: .SH FILES
        !          38627: .MW \*(dF/dev*/shell.lib
        !          38628: .br
        !          38629: .MW \*(dQ/dpost.ps
        !          38630: .br
        !          38631: .MW \*(dQ/trofftable.ps
        !          38632: .br
        !          38633: .SH SEE ALSO
        !          38634: .BR dpost (1),
        !          38635: .BR hardcopy (1),
        !          38636: .BR postio (1),
        !          38637: .BR troff (1),
        !          38638: .BR trofftable (1),
        !          38639: .BR font (5)
        !          38640: 0707070014231030650407550057030057030000020303460522633073300002300000000000post.src/cropmarks0707070014231030661006440057030057030000010303050522627502300004000000005727post.src/cropmarks/cropmarks.ps%
        !          38641: % Center pages, based on pageheight and pagewidth, and redefine showpage
        !          38642: % to put cropmarks at each corner. Device dependent code to expand the
        !          38643: % paper size goes in procedure expandpagesize. Currently only supports
        !          38644: % a Linotronic 200P typesetter using 12 inch wide paper. You'll have to
        !          38645: % add code to expandpagesize to support different typesetters or even a
        !          38646: % 200P that's running differently.
        !          38647: %
        !          38648: 
        !          38649: /CropmarkDict 40 dict dup begin
        !          38650: 
        !          38651: /expandpage true def
        !          38652: /magnification 1 def
        !          38653: /pageheight 11.0 def
        !          38654: /pagewidth 8.5 def
        !          38655: /scaletofit false def
        !          38656: /scaling 1 def
        !          38657: 
        !          38658: /marklength .3 def     % inches
        !          38659: /markstart .125 def    % inches
        !          38660: /markend .04 def       % inches
        !          38661: /marklinewidth .25 def % points
        !          38662: 
        !          38663: /inch {72 mul} def
        !          38664: /min {2 copy gt {exch} if pop} def
        !          38665: /max {2 copy lt {exch} if pop} def
        !          38666: 
        !          38667: /setup {
        !          38668:        /markspace markstart marklength add markend add inch marklinewidth add def
        !          38669:        /totalheight pageheight inch markspace 2 mul add def
        !          38670:        /totalwidth pagewidth inch markspace 2 mul add def
        !          38671: 
        !          38672:        pagedimensions
        !          38673:        checkpagesize
        !          38674:        /scaling getscaling def
        !          38675:        xcenter ycenter translate
        !          38676:        scaling scaling scale
        !          38677:        pagewidth inch 2 div neg pageheight inch 2 div neg translate
        !          38678:        clippage
        !          38679: } def
        !          38680: 
        !          38681: /pagedimensions {
        !          38682:        clippath pathbbox newpath
        !          38683:        4 -1 roll exch 4 1 roll 4 copy
        !          38684:        sub /width exch def
        !          38685:        sub /height exch def
        !          38686:        add 2 div /xcenter exch def
        !          38687:        add 2 div /ycenter exch def
        !          38688: } def
        !          38689: 
        !          38690: /checkpagesize {
        !          38691:        height totalheight lt width totalwidth lt or expandpage and {
        !          38692:                expandpagesize
        !          38693:                pagedimensions
        !          38694:        } if
        !          38695: } def
        !          38696: 
        !          38697: /expandpagesize {      % device dependent code
        !          38698:        /Product statusdict begin /product where {pop product}{()} ifelse end def
        !          38699: 
        !          38700:        Product (Linotype) eq {         % Linotronic 200P and other models?
        !          38701:                statusdict /setpageparams known {
        !          38702:                        /maxwidth 12.0 inch def         % 12 inch wide paper?
        !          38703:                        totalheight maxwidth le {
        !          38704:                                totalheight
        !          38705:                                totalwidth
        !          38706:                                maxwidth totalheight sub 2 div
        !          38707:                                0
        !          38708:                        }{
        !          38709:                                totalwidth maxwidth min
        !          38710:                                totalheight
        !          38711:                                maxwidth totalwidth maxwidth min sub 2 div
        !          38712:                                1
        !          38713:                        } ifelse
        !          38714:                        statusdict /setpageparams get exec
        !          38715:                } if
        !          38716:        } if
        !          38717: } def
        !          38718: 
        !          38719: /getscaling {
        !          38720:        scaletofit
        !          38721:                {height totalheight div width totalwidth div min 1 min}
        !          38722:                {1}
        !          38723:        ifelse
        !          38724: } def
        !          38725: 
        !          38726: /clippage {
        !          38727:        newpath
        !          38728:        0 0 moveto
        !          38729:        pagewidth inch 0 rlineto
        !          38730:        0 pageheight inch rlineto
        !          38731:        pagewidth neg inch 0 rlineto
        !          38732:        closepath clip
        !          38733:        newpath
        !          38734: } def
        !          38735: 
        !          38736: /cropmark {
        !          38737:        gsave
        !          38738:        translate
        !          38739:        rotate
        !          38740:        marklinewidth dup translate
        !          38741:        0 0 transform round exch round exch itransform translate
        !          38742:        markstart inch 0 moveto marklength inch 0 rlineto stroke
        !          38743:        0 markstart inch moveto 0 marklength inch rlineto stroke
        !          38744:        grestore
        !          38745: } bind def
        !          38746: 
        !          38747: /@PreviousShowpage /showpage load def
        !          38748: 
        !          38749: end def
        !          38750: 
        !          38751: %
        !          38752: % Cropmarks - in the default coordinate system.
        !          38753: %
        !          38754: 
        !          38755: /showpage {
        !          38756:        gsave
        !          38757:        CropmarkDict begin
        !          38758:                initgraphics
        !          38759:                marklinewidth setlinewidth
        !          38760:                xcenter ycenter translate
        !          38761:                scaling scaling scale
        !          38762:                0 pagewidth inch 2 div pageheight inch 2 div cropmark
        !          38763:                90 pagewidth inch neg 2 div pageheight inch 2 div cropmark
        !          38764:                180 pagewidth inch neg 2 div pageheight inch 2 div neg cropmark
        !          38765:                270 pagewidth inch 2 div pageheight inch 2 div neg cropmark
        !          38766:                @PreviousShowpage
        !          38767:        end
        !          38768:        grestore
        !          38769: } bind def
        !          38770: 
        !          38771: 0707070014231030671006440057030057030000010304060522627502300004000000003350post.src/cropmarks/cropmarks.sh#
        !          38772: # Center pages and put cropmarks at each corner. Physical page size
        !          38773: # is set with -w and -h. The default is 8.5 by 11.0 inches. Device
        !          38774: # dependent code to change paper size (e.g. with setpageparams) goes
        !          38775: # in the prologue. You may need to customize the device dependent
        !          38776: # code that we distribute. By default it only supports variable page
        !          38777: # sizes on Linotronic typesetters, and assumes those typesetters are
        !          38778: # using 12 inch wide paper. Use -d to disable execution of device
        !          38779: # dependent PostScript code.
        !          38780: #
        !          38781: # What's here was written quickly and will likely be very different
        !          38782: # in our next release. It should be part of a more general program!!
        !          38783: # 
        !          38784: 
        !          38785: POSTLIB=/usr/lib/postscript
        !          38786: PROLOGUE=$POSTLIB/cropmarks.ps
        !          38787: 
        !          38788: EXPANDPAGE=true
        !          38789: PAGEWIDTH=8.5
        !          38790: PAGEHEIGHT=11.0
        !          38791: SCALETOFIT=false
        !          38792: XOFFSET=0.0
        !          38793: YOFFSET=0.0
        !          38794: 
        !          38795: NONCONFORMING="%!PS"
        !          38796: ENDPROLOG="%%EndProlog"
        !          38797: BEGINSETUP="%%BeginSetup"
        !          38798: ENDSETUP="%%EndSetup"
        !          38799: 
        !          38800: while [ -n "$1" ]; do
        !          38801:     case $1 in
        !          38802:        -d)  EXPANDPAGE=false;;
        !          38803: 
        !          38804:        -h)  shift; PAGEHEIGHT=$1;;
        !          38805:        -h*) PAGEHEIGHT=`echo $1 | sed s/-h//`;;
        !          38806: 
        !          38807:        -s)  SCALETOFIT=true;;
        !          38808: 
        !          38809:        -w)  shift; PAGEWIDTH=$1;;
        !          38810:        -w*) PAGEWIDTH=`echo $1 | sed s/-w//`;;
        !          38811: 
        !          38812:        -x)  shift; XOFFSET=$1;;
        !          38813:        -x*) XOFFSET=`echo $1 | sed s/-x//`;;
        !          38814: 
        !          38815:        -y)  shift; YOFFSET=$1;;
        !          38816:        -y*) YOFFSET=`echo $1 | sed s/-y//`;;
        !          38817: 
        !          38818:        -L)  shift; PROLOGUE=$1;;
        !          38819:        -L*) PROLOGUE=`echo $1 | sed s/-L//`;;
        !          38820: 
        !          38821:        --)  shift; break;;
        !          38822: 
        !          38823:        -*)  echo "$0: illegal option $1" >&2; exit 1;;
        !          38824: 
        !          38825:        *)   break;;
        !          38826:     esac
        !          38827:     shift
        !          38828: done
        !          38829: 
        !          38830: echo $NONCONFORMING
        !          38831: cat $PROLOGUE
        !          38832: echo $ENDPROLOG
        !          38833: echo $BEGINSETUP
        !          38834: echo "CropmarkDict begin"
        !          38835: echo "/pageheight $PAGEHEIGHT def"
        !          38836: echo "/pagewidth $PAGEWIDTH def"
        !          38837: echo "/expandpage $EXPANDPAGE def"
        !          38838: echo "/scaletofit $SCALETOFIT def"
        !          38839: echo "/xoffset $XOFFSET def"
        !          38840: echo "/yoffset $YOFFSET def"
        !          38841: echo "setup"
        !          38842: echo "end"
        !          38843: echo $ENDSETUP
        !          38844: 
        !          38845: cat $*
        !          38846: 
        !          38847: 0707070014231027421006400057030057030000010230260522633073300004000000003045post.src/cropmarks/cropmarks.mkMAKE=/bin/make
        !          38848: MAKEFILE=cropmarks.mk
        !          38849: 
        !          38850: OWNER=bin
        !          38851: GROUP=bin
        !          38852: 
        !          38853: MAN1DIR=/tmp
        !          38854: MAN5DIR=/usr/man/p_man/man5
        !          38855: POSTLIB=/usr/lib/postscript
        !          38856: POSTBIN=/usr/bin/postscript
        !          38857: 
        !          38858: all : cropmarks
        !          38859: 
        !          38860: install : all
        !          38861:        @if [ ! -d "$(POSTBIN)" ]; then \
        !          38862:            mkdir $(POSTBIN); \
        !          38863:            chmod 755 $(POSTBIN); \
        !          38864:            chgrp $(GROUP) $(POSTBIN); \
        !          38865:            chown $(OWNER) $(POSTBIN); \
        !          38866:        fi
        !          38867:        @if [ ! -d "$(POSTLIB)" ]; then \
        !          38868:            mkdir $(POSTLIB); \
        !          38869:            chmod 755 $(POSTLIB); \
        !          38870:            chgrp $(GROUP) $(POSTLIB); \
        !          38871:            chown $(OWNER) $(POSTLIB); \
        !          38872:        fi
        !          38873:        cp cropmarks $(POSTBIN)/cropmarks
        !          38874:        @chmod 755 $(POSTBIN)/cropmarks
        !          38875:        @chgrp $(GROUP) $(POSTBIN)/cropmarks
        !          38876:        @chown $(OWNER) $(POSTBIN)/cropmarks
        !          38877:        cp cropmarks.ps $(POSTLIB)/cropmarks.ps
        !          38878:        @chmod 644 $(POSTLIB)/cropmarks.ps
        !          38879:        @chgrp $(GROUP) $(POSTLIB)/cropmarks.ps
        !          38880:        @chown $(OWNER) $(POSTLIB)/cropmarks.ps
        !          38881:        cp cropmarks.1 $(MAN1DIR)/cropmarks.1
        !          38882:        @chmod 644 $(MAN1DIR)/cropmarks.1
        !          38883:        @chgrp $(GROUP) $(MAN1DIR)/cropmarks.1
        !          38884:        @chown $(OWNER) $(MAN1DIR)/cropmarks.1
        !          38885: 
        !          38886: clean :
        !          38887: 
        !          38888: clobber : clean
        !          38889:        rm -f cropmarks
        !          38890: 
        !          38891: cropmarks : cropmarks.sh
        !          38892:        sed "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" cropmarks.sh >cropmarks
        !          38893:        @chmod 755 cropmarks
        !          38894: 
        !          38895: changes :
        !          38896:        @trap "" 1 2 3 15; \
        !          38897:        sed \
        !          38898:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          38899:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          38900:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
        !          38901:            -e "s'^MAN5DIR=.*'MAN5DIR=$(MAN5DIR)'" \
        !          38902:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
        !          38903:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
        !          38904:        $(MAKEFILE) >XXX.mk; \
        !          38905:        mv XXX.mk $(MAKEFILE); \
        !          38906:        sed \
        !          38907:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
        !          38908:        cropmarks.1 >XXX.1; \
        !          38909:        mv XXX.1 cropmarks.1
        !          38910: 
        !          38911: 0707070014231027431006400057030057030000010303640522633073300003700000004373post.src/cropmarks/cropmarks.1.ds dQ /usr/lib/postscript
        !          38912: .TH CROPMARKS 1 "DWB 3.2"
        !          38913: .SH NAME
        !          38914: .B cropmarks
        !          38915: \- add cropmarks to PostScript files
        !          38916: .SH SYNOPSIS
        !          38917: \*(mBcropmarks\f1
        !          38918: .OP "" options []
        !          38919: .OP "" files []
        !          38920: .SH DESCRIPTION
        !          38921: .B Cropmarks
        !          38922: surrounds PostScript
        !          38923: .I files
        !          38924: with code that centers each page and adds cropmarks to the four
        !          38925: corners.
        !          38926: The results are written on the standard output.
        !          38927: If no
        !          38928: .I files
        !          38929: are specified, or if
        !          38930: .OP \-
        !          38931: is one of the input
        !          38932: .I files,
        !          38933: the standard input is read.
        !          38934: The following
        !          38935: .I options
        !          38936: are understood:
        !          38937: .TP 1.0i
        !          38938: .OP \-d
        !          38939: Disable the device-dependent PostScript code that expands page sizes.
        !          38940: .TP 1.0i
        !          38941: .OP \-h num
        !          38942: Set the height of each page to
        !          38943: .I num
        !          38944: inches.
        !          38945: The default is 11.0 inches.
        !          38946: .TP 1.0i
        !          38947: .OP \-s
        !          38948: Scale pages so cropmarks always show up.
        !          38949: Primarily for debugging and development on devices that don't adjust
        !          38950: page sizes.
        !          38951: .TP 1.0i
        !          38952: .OP \-w num
        !          38953: Set the width of each page to
        !          38954: .I num
        !          38955: inches.
        !          38956: The default is 8.5 inches.
        !          38957: .TP 1.0i
        !          38958: .OP \-L file
        !          38959: Use
        !          38960: .I file
        !          38961: as the PostScript prologue.
        !          38962: .br
        !          38963: The default is
        !          38964: .MR \*(dQ/cropmarks.ps .
        !          38965: .PP
        !          38966: Height and width set with the
        !          38967: .OP \-h
        !          38968: and
        !          38969: .OP \-w
        !          38970: options adjust the size of the image area available on each sheet
        !          38971: of paper.
        !          38972: Neither suggests anything about the orientation of output in that area.
        !          38973: Cropmarks are printed at each corner just outside the image area.
        !          38974: .SH EXAMPLES
        !          38975: .PP
        !          38976: Print text in a 6.5\(mu8.0-inch area centered on each sheet of paper:
        !          38977: .EX
        !          38978: troff -mm \f2file\fP | dpost | cropmarks -w6.5 -h8.0 | \f2spool
        !          38979: .EE
        !          38980: Print landscape text in exactly the same 6.5\(mu8.0-inch area:
        !          38981: .EX
        !          38982: troff -mm \f2file\fP | dpost -pland | cropmarks -w6.5 -h8.0 | \f2spool
        !          38983: .EE
        !          38984: In both examples,
        !          38985: .I spool
        !          38986: is the spooling command used to send PostScript output to a local printer.
        !          38987: .SH WARNINGS
        !          38988: .PP
        !          38989: Device-dependent PostScript code to automatically expand page sizes may
        !          38990: only work on Linotronic 200P typesetters that use 12-inch-wide paper.
        !          38991: Local changes to the printer-dependent code can be made in the
        !          38992: .MW expandpagesize
        !          38993: procedure defined in
        !          38994: .MR \*(dQ/cropmarks.ps .
        !          38995: .PP
        !          38996: The PostScript
        !          38997: .I files
        !          38998: must be reasonably well behaved.
        !          38999: There are no guarantees, particularly if the input
        !          39000: .I files
        !          39001: redefine the
        !          39002: .MW showpage
        !          39003: operator.
        !          39004: .PP
        !          39005: The program is unsupported and may not be included in future releases.
        !          39006: .SH FILES
        !          39007: .MW \*(dQ/cropmarks.ps
        !          39008: .SH SEE ALSO
        !          39009: .BR dpost (1),
        !          39010: .BRpostio (1),
        !          39011: .BR troff (1)
        !          39012: 0707070014230361660407550057030057030000031041350522627502700002200000000000post.src/devopost0707070014230361671006440057030057030000011041360522627502300002500000002037post.src/devopost/AB# AvantGarde-Demi
        !          39013: name AB
        !          39014: internalname 27
        !          39015: ligatures fi fl 0
        !          39016: charset
        !          39017: !      28      2       33
        !          39018: $      56      2       36
        !          39019: %      86      2       37
        !          39020: &      68      2       38
        !          39021: '      28      2       39
        !          39022: (      38      3       40
        !          39023: )      38      3       41
        !          39024: *      44      2       42
        !          39025: +      60      0       43
        !          39026: ,      28      1       44
        !          39027: hy     42      0       45
        !          39028: -      "
        !          39029: .      28      0       46
        !          39030: /      46      3       47
        !          39031: 0      56      2       48
        !          39032: 1      56      2       49
        !          39033: 2      56      2       50
        !          39034: 3      56      2       51
        !          39035: 4      56      2       52
        !          39036: 5      56      2       53
        !          39037: 6      56      2       54
        !          39038: 7      56      2       55
        !          39039: 8      56      2       56
        !          39040: 9      56      2       57
        !          39041: :      28      0       58
        !          39042: ;      28      1       59
        !          39043: =      60      0       61
        !          39044: ?      56      2       63
        !          39045: A      74      2       65
        !          39046: B      58      2       66
        !          39047: C      78      2       67
        !          39048: D      70      2       68
        !          39049: E      52      2       69
        !          39050: F      48      2       70
        !          39051: G      84      2       71
        !          39052: H      68      2       72
        !          39053: I      28      2       73
        !          39054: J      48      2       74
        !          39055: K      62      2       75
        !          39056: L      44      2       76
        !          39057: M      90      2       77
        !          39058: N      74      2       78
        !          39059: O      84      2       79
        !          39060: P      56      2       80
        !          39061: Q      84      2       81
        !          39062: R      58      2       82
        !          39063: S      52      2       83
        !          39064: T      42      2       84
        !          39065: U      64      2       85
        !          39066: V      70      2       86
        !          39067: W      90      2       87
        !          39068: X      68      2       88
        !          39069: Y      62      2       89
        !          39070: Z      50      2       90
        !          39071: [      32      3       91
        !          39072: ]      32      3       93
        !          39073: `      28      2       96
        !          39074: a      66      0       97
        !          39075: b      66      2       98
        !          39076: c      64      0       99
        !          39077: d      66      2       100
        !          39078: e      64      0       101
        !          39079: f      28      2       102
        !          39080: g      66      1       103
        !          39081: h      60      2       104
        !          39082: i      24      2       105
        !          39083: j      26      3       106
        !          39084: k      58      2       107
        !          39085: l      24      2       108
        !          39086: m      94      0       109
        !          39087: n      60      0       110
        !          39088: o      64      0       111
        !          39089: p      66      1       112
        !          39090: q      66      1       113
        !          39091: r      32      0       114
        !          39092: s      44      0       115
        !          39093: t      30      2       116
        !          39094: u      60      0       117
        !          39095: v      56      0       118
        !          39096: w      80      0       119
        !          39097: x      56      0       120
        !          39098: y      58      1       121
        !          39099: z      46      0       122
        !          39100: ct     56      2       162
        !          39101: fi     52      2       174
        !          39102: fl     52      2       175
        !          39103: dg     56      3       178
        !          39104: bu     60      0       183
        !          39105: de     36      2       202
        !          39106: em     100     0       208
        !          39107: 14     75      2       1
        !          39108: 34     75      2       1
        !          39109: 12     75      2       1
        !          39110: ``     48      2       170
        !          39111: ''     48      2       186
        !          39112: 0707070014230361701006440057030057030000011041550522627502300002500000002046post.src/devopost/AI# AvantGarde-BookOblique
        !          39113: name AI
        !          39114: internalname 26
        !          39115: ligatures fi fl 0
        !          39116: charset
        !          39117: !      29      2       33
        !          39118: $      55      2       36
        !          39119: %      77      2       37
        !          39120: &      76      2       38
        !          39121: '      35      2       39
        !          39122: (      37      3       40
        !          39123: )      37      3       41
        !          39124: *      42      2       42
        !          39125: +      61      0       43
        !          39126: ,      28      0       44
        !          39127: hy     33      0       45
        !          39128: -      "
        !          39129: .      28      0       46
        !          39130: /      44      3       47
        !          39131: 0      55      2       48
        !          39132: 1      55      2       49
        !          39133: 2      55      2       50
        !          39134: 3      55      2       51
        !          39135: 4      55      2       52
        !          39136: 5      55      2       53
        !          39137: 6      55      2       54
        !          39138: 7      55      2       55
        !          39139: 8      55      2       56
        !          39140: 9      55      2       57
        !          39141: :      28      0       58
        !          39142: ;      28      0       59
        !          39143: =      61      0       61
        !          39144: ?      59      2       63
        !          39145: A      74      2       65
        !          39146: B      57      2       66
        !          39147: C      81      2       67
        !          39148: D      74      2       68
        !          39149: E      54      2       69
        !          39150: F      49      2       70
        !          39151: G      87      2       71
        !          39152: H      68      2       72
        !          39153: I      23      2       73
        !          39154: J      48      2       74
        !          39155: K      59      2       75
        !          39156: L      46      2       76
        !          39157: M      92      2       77
        !          39158: N      74      2       78
        !          39159: O      87      2       79
        !          39160: P      59      2       80
        !          39161: Q      87      2       81
        !          39162: R      61      2       82
        !          39163: S      50      2       83
        !          39164: T      43      2       84
        !          39165: U      66      2       85
        !          39166: V      70      2       86
        !          39167: W      96      2       87
        !          39168: X      61      2       88
        !          39169: Y      59      2       89
        !          39170: Z      48      2       90
        !          39171: [      35      3       91
        !          39172: ]      35      3       93
        !          39173: `      35      2       96
        !          39174: a      68      0       97
        !          39175: b      68      2       98
        !          39176: c      65      0       99
        !          39177: d      69      2       100
        !          39178: e      65      0       101
        !          39179: f      31      2       102
        !          39180: g      67      1       103
        !          39181: h      61      2       104
        !          39182: i      20      2       105
        !          39183: j      20      3       106
        !          39184: k      50      2       107
        !          39185: l      20      2       108
        !          39186: m      94      0       109
        !          39187: n      61      0       110
        !          39188: o      66      0       111
        !          39189: p      68      1       112
        !          39190: q      68      1       113
        !          39191: r      30      0       114
        !          39192: s      39      0       115
        !          39193: t      34      2       116
        !          39194: u      61      0       117
        !          39195: v      55      0       118
        !          39196: w      83      0       119
        !          39197: x      48      0       120
        !          39198: y      54      1       121
        !          39199: z      42      0       122
        !          39200: ct     55      2       162
        !          39201: fi     49      2       174
        !          39202: fl     49      2       175
        !          39203: dg     55      3       178
        !          39204: bu     61      0       183
        !          39205: de     33      2       202
        !          39206: em     100     0       208
        !          39207: 14     75      2       1
        !          39208: 34     75      2       1
        !          39209: 12     75      2       1
        !          39210: ``     50      2       170
        !          39211: ''     50      2       186
        !          39212: 0707070014230361711006440057030057030000011041700522627502300002500000002037post.src/devopost/AR# AvantGarde-Book
        !          39213: name AR
        !          39214: internalname 25
        !          39215: ligatures fi fl 0
        !          39216: charset
        !          39217: !      29      2       33
        !          39218: $      55      2       36
        !          39219: %      77      2       37
        !          39220: &      76      2       38
        !          39221: '      35      2       39
        !          39222: (      37      3       40
        !          39223: )      37      3       41
        !          39224: *      42      2       42
        !          39225: +      61      0       43
        !          39226: ,      28      0       44
        !          39227: hy     33      0       45
        !          39228: -      "
        !          39229: .      28      0       46
        !          39230: /      44      3       47
        !          39231: 0      55      2       48
        !          39232: 1      55      2       49
        !          39233: 2      55      2       50
        !          39234: 3      55      2       51
        !          39235: 4      55      2       52
        !          39236: 5      55      2       53
        !          39237: 6      55      2       54
        !          39238: 7      55      2       55
        !          39239: 8      55      2       56
        !          39240: 9      55      2       57
        !          39241: :      28      0       58
        !          39242: ;      28      0       59
        !          39243: =      61      0       61
        !          39244: ?      59      2       63
        !          39245: A      74      2       65
        !          39246: B      57      2       66
        !          39247: C      81      2       67
        !          39248: D      74      2       68
        !          39249: E      54      2       69
        !          39250: F      49      2       70
        !          39251: G      87      2       71
        !          39252: H      68      2       72
        !          39253: I      23      2       73
        !          39254: J      48      2       74
        !          39255: K      59      2       75
        !          39256: L      46      2       76
        !          39257: M      92      2       77
        !          39258: N      74      2       78
        !          39259: O      87      2       79
        !          39260: P      59      2       80
        !          39261: Q      87      2       81
        !          39262: R      61      2       82
        !          39263: S      50      2       83
        !          39264: T      43      2       84
        !          39265: U      66      2       85
        !          39266: V      70      2       86
        !          39267: W      96      2       87
        !          39268: X      61      2       88
        !          39269: Y      59      2       89
        !          39270: Z      48      2       90
        !          39271: [      35      3       91
        !          39272: ]      35      3       93
        !          39273: `      35      2       96
        !          39274: a      68      0       97
        !          39275: b      68      2       98
        !          39276: c      65      0       99
        !          39277: d      69      2       100
        !          39278: e      65      0       101
        !          39279: f      31      2       102
        !          39280: g      67      1       103
        !          39281: h      61      2       104
        !          39282: i      20      2       105
        !          39283: j      20      3       106
        !          39284: k      50      2       107
        !          39285: l      20      2       108
        !          39286: m      94      0       109
        !          39287: n      61      0       110
        !          39288: o      66      0       111
        !          39289: p      68      1       112
        !          39290: q      68      1       113
        !          39291: r      30      0       114
        !          39292: s      39      0       115
        !          39293: t      34      2       116
        !          39294: u      61      0       117
        !          39295: v      55      0       118
        !          39296: w      83      0       119
        !          39297: x      48      0       120
        !          39298: y      54      1       121
        !          39299: z      42      0       122
        !          39300: ct     55      2       162
        !          39301: fi     49      2       174
        !          39302: fl     49      2       175
        !          39303: dg     55      3       178
        !          39304: bu     61      0       183
        !          39305: de     33      2       202
        !          39306: em     100     0       208
        !          39307: 14     75      2       1
        !          39308: 34     75      2       1
        !          39309: 12     75      2       1
        !          39310: ``     50      2       170
        !          39311: ''     50      2       186
        !          39312: 0707070014230361721006440057030057030000011041720522627502300002500000002046post.src/devopost/AX# AvantGarde-DemiOblique
        !          39313: name AX
        !          39314: internalname 28
        !          39315: ligatures fi fl 0
        !          39316: charset
        !          39317: !      28      2       33
        !          39318: $      56      2       36
        !          39319: %      86      2       37
        !          39320: &      68      2       38
        !          39321: '      28      2       39
        !          39322: (      38      3       40
        !          39323: )      38      3       41
        !          39324: *      44      2       42
        !          39325: +      60      0       43
        !          39326: ,      28      1       44
        !          39327: hy     42      0       45
        !          39328: -      "
        !          39329: .      28      0       46
        !          39330: /      46      3       47
        !          39331: 0      56      2       48
        !          39332: 1      56      2       49
        !          39333: 2      56      2       50
        !          39334: 3      56      2       51
        !          39335: 4      56      2       52
        !          39336: 5      56      2       53
        !          39337: 6      56      2       54
        !          39338: 7      56      2       55
        !          39339: 8      56      2       56
        !          39340: 9      56      2       57
        !          39341: :      28      0       58
        !          39342: ;      28      1       59
        !          39343: =      60      0       61
        !          39344: ?      56      2       63
        !          39345: A      74      2       65
        !          39346: B      58      2       66
        !          39347: C      78      2       67
        !          39348: D      70      2       68
        !          39349: E      52      2       69
        !          39350: F      48      2       70
        !          39351: G      84      2       71
        !          39352: H      68      2       72
        !          39353: I      28      2       73
        !          39354: J      48      2       74
        !          39355: K      62      2       75
        !          39356: L      44      2       76
        !          39357: M      90      2       77
        !          39358: N      74      2       78
        !          39359: O      84      2       79
        !          39360: P      56      2       80
        !          39361: Q      84      2       81
        !          39362: R      58      2       82
        !          39363: S      52      2       83
        !          39364: T      42      2       84
        !          39365: U      64      2       85
        !          39366: V      70      2       86
        !          39367: W      90      2       87
        !          39368: X      68      2       88
        !          39369: Y      62      2       89
        !          39370: Z      50      2       90
        !          39371: [      32      3       91
        !          39372: ]      32      3       93
        !          39373: `      28      2       96
        !          39374: a      66      0       97
        !          39375: b      66      2       98
        !          39376: c      64      0       99
        !          39377: d      66      2       100
        !          39378: e      64      0       101
        !          39379: f      28      2       102
        !          39380: g      66      1       103
        !          39381: h      60      2       104
        !          39382: i      24      2       105
        !          39383: j      26      3       106
        !          39384: k      58      2       107
        !          39385: l      24      2       108
        !          39386: m      94      0       109
        !          39387: n      60      0       110
        !          39388: o      64      0       111
        !          39389: p      66      1       112
        !          39390: q      66      1       113
        !          39391: r      32      0       114
        !          39392: s      44      0       115
        !          39393: t      30      2       116
        !          39394: u      60      0       117
        !          39395: v      56      0       118
        !          39396: w      80      0       119
        !          39397: x      56      0       120
        !          39398: y      58      1       121
        !          39399: z      46      0       122
        !          39400: ct     56      2       162
        !          39401: fi     52      2       174
        !          39402: fl     52      2       175
        !          39403: dg     56      3       178
        !          39404: bu     60      0       183
        !          39405: de     36      2       202
        !          39406: em     100     0       208
        !          39407: 14     75      2       1
        !          39408: 34     75      2       1
        !          39409: 12     75      2       1
        !          39410: ``     48      2       170
        !          39411: ''     48      2       186
        !          39412: 0707070014230361731006440057030057030000011041740522627502300002400000002102post.src/devopost/B# Times-Bold
        !          39413: name B
        !          39414: internalname 3
        !          39415: ligatures fi fl 0
        !          39416: charset
        !          39417: !      33      2       33
        !          39418: $      50      3       36
        !          39419: %      100     2       37
        !          39420: &      83      2       38
        !          39421: '      33      2       39
        !          39422: (      33      3       40
        !          39423: )      33      3       41
        !          39424: *      50      2       42
        !          39425: +      57      0       43
        !          39426: ,      25      1       44
        !          39427: hy     33      0       45
        !          39428: -      "
        !          39429: .      25      0       46
        !          39430: /      28      2       47
        !          39431: 0      50      2       48
        !          39432: 1      50      2       49
        !          39433: 2      50      2       50
        !          39434: 3      50      2       51
        !          39435: 4      50      2       52
        !          39436: 5      50      2       53
        !          39437: 6      50      2       54
        !          39438: 7      50      2       55
        !          39439: 8      50      2       56
        !          39440: 9      50      2       57
        !          39441: :      33      0       58
        !          39442: ;      33      1       59
        !          39443: =      57      0       61
        !          39444: ?      50      2       63
        !          39445: A      72      2       65
        !          39446: B      67      2       66
        !          39447: C      72      2       67
        !          39448: D      72      2       68
        !          39449: E      67      2       69
        !          39450: F      61      2       70
        !          39451: G      78      2       71
        !          39452: H      78      2       72
        !          39453: I      39      2       73
        !          39454: J      50      2       74
        !          39455: K      78      2       75
        !          39456: L      67      2       76
        !          39457: M      94      2       77
        !          39458: N      72      2       78
        !          39459: O      78      2       79
        !          39460: P      61      2       80
        !          39461: Q      78      3       81
        !          39462: R      72      2       82
        !          39463: S      56      2       83
        !          39464: T      67      2       84
        !          39465: U      72      2       85
        !          39466: V      72      2       86
        !          39467: W      100     2       87
        !          39468: X      72      2       88
        !          39469: Y      72      2       89
        !          39470: Z      67      2       90
        !          39471: [      33      3       91
        !          39472: ]      33      3       93
        !          39473: `      33      2       96
        !          39474: a      50      0       97
        !          39475: b      56      2       98
        !          39476: c      44      0       99
        !          39477: d      56      2       100
        !          39478: e      44      0       101
        !          39479: f      33      2       102
        !          39480: g      50      1       103
        !          39481: h      56      2       104
        !          39482: i      28      2       105
        !          39483: j      33      3       106
        !          39484: k      56      2       107
        !          39485: l      28      2       108
        !          39486: m      83      0       109
        !          39487: n      56      0       110
        !          39488: o      50      0       111
        !          39489: p      56      1       112
        !          39490: q      56      1       113
        !          39491: r      44      0       114
        !          39492: s      39      0       115
        !          39493: t      33      2       116
        !          39494: u      56      0       117
        !          39495: v      50      0       118
        !          39496: w      72      0       119
        !          39497: x      50      0       120
        !          39498: y      50      1       121
        !          39499: z      44      0       122
        !          39500: ct     50      3       162
        !          39501: fi     56      2       174
        !          39502: fl     56      2       175
        !          39503: ff     60      2       1
        !          39504: Fi     84      2       1
        !          39505: Fl     84      2       1
        !          39506: dg     50      3       178
        !          39507: bu     35      0       183
        !          39508: de     33      2       202
        !          39509: em     100     0       208
        !          39510: 14     75      2       1
        !          39511: 34     75      2       1
        !          39512: 12     75      2       1
        !          39513: sq     50      2       1
        !          39514: ``     50      2       170
        !          39515: ''     50      2       186
        !          39516: 0707070014230361741006440057030057030000011041760522627502400002500000002037post.src/devopost/BI# Times-BoldItalic
        !          39517: name BI
        !          39518: internalname 4
        !          39519: ligatures fi fl 0
        !          39520: charset
        !          39521: !      39      2       33
        !          39522: $      50      2       36
        !          39523: %      83      2       37
        !          39524: &      78      2       38
        !          39525: '      33      2       39
        !          39526: (      33      3       40
        !          39527: )      33      3       41
        !          39528: *      50      2       42
        !          39529: +      57      0       43
        !          39530: ,      25      1       44
        !          39531: hy     33      0       45
        !          39532: -      "
        !          39533: .      25      0       46
        !          39534: /      28      2       47
        !          39535: 0      50      2       48
        !          39536: 1      50      2       49
        !          39537: 2      50      2       50
        !          39538: 3      50      2       51
        !          39539: 4      50      2       52
        !          39540: 5      50      2       53
        !          39541: 6      50      2       54
        !          39542: 7      50      2       55
        !          39543: 8      50      2       56
        !          39544: 9      50      2       57
        !          39545: :      33      0       58
        !          39546: ;      33      1       59
        !          39547: =      57      0       61
        !          39548: ?      50      2       63
        !          39549: A      67      2       65
        !          39550: B      67      2       66
        !          39551: C      67      2       67
        !          39552: D      72      2       68
        !          39553: E      67      2       69
        !          39554: F      67      2       70
        !          39555: G      72      2       71
        !          39556: H      78      2       72
        !          39557: I      39      2       73
        !          39558: J      50      2       74
        !          39559: K      67      2       75
        !          39560: L      61      2       76
        !          39561: M      89      2       77
        !          39562: N      72      2       78
        !          39563: O      72      2       79
        !          39564: P      61      2       80
        !          39565: Q      72      3       81
        !          39566: R      67      2       82
        !          39567: S      56      2       83
        !          39568: T      61      2       84
        !          39569: U      72      2       85
        !          39570: V      67      2       86
        !          39571: W      89      2       87
        !          39572: X      67      2       88
        !          39573: Y      61      2       89
        !          39574: Z      61      2       90
        !          39575: [      33      3       91
        !          39576: ]      33      3       93
        !          39577: `      33      2       96
        !          39578: a      50      0       97
        !          39579: b      50      2       98
        !          39580: c      44      0       99
        !          39581: d      50      2       100
        !          39582: e      44      0       101
        !          39583: f      33      3       102
        !          39584: g      50      1       103
        !          39585: h      56      2       104
        !          39586: i      28      2       105
        !          39587: j      28      3       106
        !          39588: k      50      2       107
        !          39589: l      28      2       108
        !          39590: m      78      0       109
        !          39591: n      56      0       110
        !          39592: o      50      0       111
        !          39593: p      50      1       112
        !          39594: q      50      1       113
        !          39595: r      39      0       114
        !          39596: s      39      0       115
        !          39597: t      28      2       116
        !          39598: u      56      0       117
        !          39599: v      44      0       118
        !          39600: w      67      0       119
        !          39601: x      50      0       120
        !          39602: y      44      1       121
        !          39603: z      39      0       122
        !          39604: ct     50      3       162
        !          39605: fi     56      3       174
        !          39606: fl     56      3       175
        !          39607: dg     50      3       178
        !          39608: bu     35      0       183
        !          39609: de     33      2       202
        !          39610: em     100     0       208
        !          39611: 14     75      2       1
        !          39612: 34     75      2       1
        !          39613: 12     75      2       1
        !          39614: ``     50      2       170
        !          39615: ''     50      2       186
        !          39616: 0707070014230361751006440057030057030000011042300522627502400002500000002213post.src/devopost/CB# Courier-Bold
        !          39617: name CB
        !          39618: internalname 7
        !          39619: spacewidth 60
        !          39620: charset
        !          39621: !      60      2       33
        !          39622: "      60      2       34
        !          39623: #      60      2       35
        !          39624: $      60      2       36
        !          39625: %      60      2       37
        !          39626: &      60      2       38
        !          39627: '      60      2       39
        !          39628: (      60      3       40
        !          39629: )      60      3       41
        !          39630: *      60      2       42
        !          39631: +      60      0       43
        !          39632: ,      60      1       44
        !          39633: hy     60      0       45
        !          39634: -      "
        !          39635: .      60      0       46
        !          39636: /      60      2       47
        !          39637: 0      60      2       48
        !          39638: 1      60      2       49
        !          39639: 2      60      2       50
        !          39640: 3      60      2       51
        !          39641: 4      60      2       52
        !          39642: 5      60      2       53
        !          39643: 6      60      2       54
        !          39644: 7      60      2       55
        !          39645: 8      60      2       56
        !          39646: 9      60      2       57
        !          39647: :      60      0       58
        !          39648: ;      60      1       59
        !          39649: <      60      2       60
        !          39650: =      60      0       61
        !          39651: >      60      2       62
        !          39652: ?      60      2       63
        !          39653: @      60      2       64
        !          39654: A      60      2       65
        !          39655: B      60      2       66
        !          39656: C      60      2       67
        !          39657: D      60      2       68
        !          39658: E      60      2       69
        !          39659: F      60      2       70
        !          39660: G      60      2       71
        !          39661: H      60      2       72
        !          39662: I      60      2       73
        !          39663: J      60      2       74
        !          39664: K      60      2       75
        !          39665: L      60      2       76
        !          39666: M      60      2       77
        !          39667: N      60      2       78
        !          39668: O      60      2       79
        !          39669: P      60      2       80
        !          39670: Q      60      3       81
        !          39671: R      60      2       82
        !          39672: S      60      2       83
        !          39673: T      60      2       84
        !          39674: U      60      2       85
        !          39675: V      60      2       86
        !          39676: W      60      2       87
        !          39677: X      60      2       88
        !          39678: Y      60      2       89
        !          39679: Z      60      2       90
        !          39680: [      60      3       91
        !          39681: \      60      3       92
        !          39682: ]      60      3       93
        !          39683: ^      60      2       94
        !          39684: _      60      1       95
        !          39685: `      60      2       96
        !          39686: a      60      0       97
        !          39687: b      60      2       98
        !          39688: c      60      0       99
        !          39689: d      60      2       100
        !          39690: e      60      0       101
        !          39691: f      60      2       102
        !          39692: g      60      1       103
        !          39693: h      60      2       104
        !          39694: i      60      2       105
        !          39695: j      60      3       106
        !          39696: k      60      2       107
        !          39697: l      60      2       108
        !          39698: m      60      0       109
        !          39699: n      60      0       110
        !          39700: o      60      0       111
        !          39701: p      60      1       112
        !          39702: q      60      1       113
        !          39703: r      60      0       114
        !          39704: s      60      0       115
        !          39705: t      60      2       116
        !          39706: u      60      0       117
        !          39707: v      60      0       118
        !          39708: w      60      0       119
        !          39709: x      60      0       120
        !          39710: y      60      1       121
        !          39711: z      60      0       122
        !          39712: {      60      3       123
        !          39713: |      60      3       124
        !          39714: }      60      3       125
        !          39715: ~      60      0       126
        !          39716: ct     60      2       162
        !          39717: \-     60      0       177
        !          39718: en     "
        !          39719: dg     60      3       178
        !          39720: bu     60      0       183
        !          39721: de     60      2       202
        !          39722: em     60      0       208
        !          39723: 14     60      2       1
        !          39724: 34     60      2       1
        !          39725: 12     60      2       1
        !          39726: ``     60      2       170
        !          39727: ''     60      2       186
        !          39728: 0707070014230361761006440057030057030000011042320522627502400002500000002216post.src/devopost/CI# Courier-Oblique
        !          39729: name CI
        !          39730: internalname 6
        !          39731: spacewidth 60
        !          39732: charset
        !          39733: !      60      2       33
        !          39734: "      60      2       34
        !          39735: #      60      2       35
        !          39736: $      60      2       36
        !          39737: %      60      2       37
        !          39738: &      60      2       38
        !          39739: '      60      2       39
        !          39740: (      60      3       40
        !          39741: )      60      3       41
        !          39742: *      60      2       42
        !          39743: +      60      0       43
        !          39744: ,      60      1       44
        !          39745: hy     60      0       45
        !          39746: -      "
        !          39747: .      60      0       46
        !          39748: /      60      2       47
        !          39749: 0      60      2       48
        !          39750: 1      60      2       49
        !          39751: 2      60      2       50
        !          39752: 3      60      2       51
        !          39753: 4      60      2       52
        !          39754: 5      60      2       53
        !          39755: 6      60      2       54
        !          39756: 7      60      2       55
        !          39757: 8      60      2       56
        !          39758: 9      60      2       57
        !          39759: :      60      0       58
        !          39760: ;      60      1       59
        !          39761: <      60      2       60
        !          39762: =      60      0       61
        !          39763: >      60      2       62
        !          39764: ?      60      2       63
        !          39765: @      60      2       64
        !          39766: A      60      2       65
        !          39767: B      60      2       66
        !          39768: C      60      2       67
        !          39769: D      60      2       68
        !          39770: E      60      2       69
        !          39771: F      60      2       70
        !          39772: G      60      2       71
        !          39773: H      60      2       72
        !          39774: I      60      2       73
        !          39775: J      60      2       74
        !          39776: K      60      2       75
        !          39777: L      60      2       76
        !          39778: M      60      2       77
        !          39779: N      60      2       78
        !          39780: O      60      2       79
        !          39781: P      60      2       80
        !          39782: Q      60      3       81
        !          39783: R      60      2       82
        !          39784: S      60      2       83
        !          39785: T      60      2       84
        !          39786: U      60      2       85
        !          39787: V      60      2       86
        !          39788: W      60      2       87
        !          39789: X      60      2       88
        !          39790: Y      60      2       89
        !          39791: Z      60      2       90
        !          39792: [      60      3       91
        !          39793: \      60      3       92
        !          39794: ]      60      3       93
        !          39795: ^      60      2       94
        !          39796: _      60      1       95
        !          39797: `      60      2       96
        !          39798: a      60      0       97
        !          39799: b      60      2       98
        !          39800: c      60      0       99
        !          39801: d      60      2       100
        !          39802: e      60      0       101
        !          39803: f      60      2       102
        !          39804: g      60      1       103
        !          39805: h      60      2       104
        !          39806: i      60      2       105
        !          39807: j      60      3       106
        !          39808: k      60      2       107
        !          39809: l      60      2       108
        !          39810: m      60      0       109
        !          39811: n      60      0       110
        !          39812: o      60      0       111
        !          39813: p      60      1       112
        !          39814: q      60      1       113
        !          39815: r      60      0       114
        !          39816: s      60      0       115
        !          39817: t      60      2       116
        !          39818: u      60      0       117
        !          39819: v      60      0       118
        !          39820: w      60      0       119
        !          39821: x      60      0       120
        !          39822: y      60      1       121
        !          39823: z      60      0       122
        !          39824: {      60      3       123
        !          39825: |      60      3       124
        !          39826: }      60      3       125
        !          39827: ~      60      0       126
        !          39828: ct     60      2       162
        !          39829: \-     60      0       177
        !          39830: en     "
        !          39831: dg     60      3       178
        !          39832: bu     60      0       183
        !          39833: de     60      2       202
        !          39834: em     60      0       208
        !          39835: 14     60      2       1
        !          39836: 34     60      2       1
        !          39837: 12     60      2       1
        !          39838: ``     60      2       170
        !          39839: ''     60      2       186
        !          39840: 0707070014230361771006440057030057030000011042340522627502400002500000002206post.src/devopost/CO# Courier
        !          39841: name CW
        !          39842: internalname 5
        !          39843: spacewidth 60
        !          39844: charset
        !          39845: !      60      2       33
        !          39846: "      60      2       34
        !          39847: #      60      2       35
        !          39848: $      60      2       36
        !          39849: %      60      2       37
        !          39850: &      60      2       38
        !          39851: '      60      2       39
        !          39852: (      60      3       40
        !          39853: )      60      3       41
        !          39854: *      60      2       42
        !          39855: +      60      0       43
        !          39856: ,      60      1       44
        !          39857: hy     60      0       45
        !          39858: -      "
        !          39859: .      60      0       46
        !          39860: /      60      2       47
        !          39861: 0      60      2       48
        !          39862: 1      60      2       49
        !          39863: 2      60      2       50
        !          39864: 3      60      2       51
        !          39865: 4      60      2       52
        !          39866: 5      60      2       53
        !          39867: 6      60      2       54
        !          39868: 7      60      2       55
        !          39869: 8      60      2       56
        !          39870: 9      60      2       57
        !          39871: :      60      0       58
        !          39872: ;      60      1       59
        !          39873: <      60      2       60
        !          39874: =      60      0       61
        !          39875: >      60      2       62
        !          39876: ?      60      2       63
        !          39877: @      60      2       64
        !          39878: A      60      2       65
        !          39879: B      60      2       66
        !          39880: C      60      2       67
        !          39881: D      60      2       68
        !          39882: E      60      2       69
        !          39883: F      60      2       70
        !          39884: G      60      2       71
        !          39885: H      60      2       72
        !          39886: I      60      2       73
        !          39887: J      60      2       74
        !          39888: K      60      2       75
        !          39889: L      60      2       76
        !          39890: M      60      2       77
        !          39891: N      60      2       78
        !          39892: O      60      2       79
        !          39893: P      60      2       80
        !          39894: Q      60      3       81
        !          39895: R      60      2       82
        !          39896: S      60      2       83
        !          39897: T      60      2       84
        !          39898: U      60      2       85
        !          39899: V      60      2       86
        !          39900: W      60      2       87
        !          39901: X      60      2       88
        !          39902: Y      60      2       89
        !          39903: Z      60      2       90
        !          39904: [      60      3       91
        !          39905: \      60      3       92
        !          39906: ]      60      3       93
        !          39907: ^      60      2       94
        !          39908: _      60      1       95
        !          39909: `      60      2       96
        !          39910: a      60      0       97
        !          39911: b      60      2       98
        !          39912: c      60      0       99
        !          39913: d      60      2       100
        !          39914: e      60      0       101
        !          39915: f      60      2       102
        !          39916: g      60      1       103
        !          39917: h      60      2       104
        !          39918: i      60      2       105
        !          39919: j      60      3       106
        !          39920: k      60      2       107
        !          39921: l      60      2       108
        !          39922: m      60      0       109
        !          39923: n      60      0       110
        !          39924: o      60      0       111
        !          39925: p      60      1       112
        !          39926: q      60      1       113
        !          39927: r      60      0       114
        !          39928: s      60      0       115
        !          39929: t      60      2       116
        !          39930: u      60      0       117
        !          39931: v      60      0       118
        !          39932: w      60      0       119
        !          39933: x      60      0       120
        !          39934: y      60      1       121
        !          39935: z      60      0       122
        !          39936: {      60      3       123
        !          39937: |      60      3       124
        !          39938: }      60      3       125
        !          39939: ~      60      0       126
        !          39940: ct     60      2       162
        !          39941: \-     60      0       177
        !          39942: en     "
        !          39943: dg     60      3       178
        !          39944: bu     60      0       183
        !          39945: de     60      2       202
        !          39946: em     60      0       208
        !          39947: 14     60      2       1
        !          39948: 34     60      2       1
        !          39949: 12     60      2       1
        !          39950: ``     60      2       170
        !          39951: ''     60      2       186
        !          39952: 0707070014230362001006440057030057030000011042360522627502400002500000002206post.src/devopost/CW# Courier
        !          39953: name CW
        !          39954: internalname 5
        !          39955: spacewidth 60
        !          39956: charset
        !          39957: !      60      2       33
        !          39958: "      60      2       34
        !          39959: #      60      2       35
        !          39960: $      60      2       36
        !          39961: %      60      2       37
        !          39962: &      60      2       38
        !          39963: '      60      2       39
        !          39964: (      60      3       40
        !          39965: )      60      3       41
        !          39966: *      60      2       42
        !          39967: +      60      0       43
        !          39968: ,      60      1       44
        !          39969: hy     60      0       45
        !          39970: -      "
        !          39971: .      60      0       46
        !          39972: /      60      2       47
        !          39973: 0      60      2       48
        !          39974: 1      60      2       49
        !          39975: 2      60      2       50
        !          39976: 3      60      2       51
        !          39977: 4      60      2       52
        !          39978: 5      60      2       53
        !          39979: 6      60      2       54
        !          39980: 7      60      2       55
        !          39981: 8      60      2       56
        !          39982: 9      60      2       57
        !          39983: :      60      0       58
        !          39984: ;      60      1       59
        !          39985: <      60      2       60
        !          39986: =      60      0       61
        !          39987: >      60      2       62
        !          39988: ?      60      2       63
        !          39989: @      60      2       64
        !          39990: A      60      2       65
        !          39991: B      60      2       66
        !          39992: C      60      2       67
        !          39993: D      60      2       68
        !          39994: E      60      2       69
        !          39995: F      60      2       70
        !          39996: G      60      2       71
        !          39997: H      60      2       72
        !          39998: I      60      2       73
        !          39999: J      60      2       74
        !          40000: K      60      2       75
        !          40001: L      60      2       76
        !          40002: M      60      2       77
        !          40003: N      60      2       78
        !          40004: O      60      2       79
        !          40005: P      60      2       80
        !          40006: Q      60      3       81
        !          40007: R      60      2       82
        !          40008: S      60      2       83
        !          40009: T      60      2       84
        !          40010: U      60      2       85
        !          40011: V      60      2       86
        !          40012: W      60      2       87
        !          40013: X      60      2       88
        !          40014: Y      60      2       89
        !          40015: Z      60      2       90
        !          40016: [      60      3       91
        !          40017: \      60      3       92
        !          40018: ]      60      3       93
        !          40019: ^      60      2       94
        !          40020: _      60      1       95
        !          40021: `      60      2       96
        !          40022: a      60      0       97
        !          40023: b      60      2       98
        !          40024: c      60      0       99
        !          40025: d      60      2       100
        !          40026: e      60      0       101
        !          40027: f      60      2       102
        !          40028: g      60      1       103
        !          40029: h      60      2       104
        !          40030: i      60      2       105
        !          40031: j      60      3       106
        !          40032: k      60      2       107
        !          40033: l      60      2       108
        !          40034: m      60      0       109
        !          40035: n      60      0       110
        !          40036: o      60      0       111
        !          40037: p      60      1       112
        !          40038: q      60      1       113
        !          40039: r      60      0       114
        !          40040: s      60      0       115
        !          40041: t      60      2       116
        !          40042: u      60      0       117
        !          40043: v      60      0       118
        !          40044: w      60      0       119
        !          40045: x      60      0       120
        !          40046: y      60      1       121
        !          40047: z      60      0       122
        !          40048: {      60      3       123
        !          40049: |      60      3       124
        !          40050: }      60      3       125
        !          40051: ~      60      0       126
        !          40052: ct     60      2       162
        !          40053: \-     60      0       177
        !          40054: en     "
        !          40055: dg     60      3       178
        !          40056: bu     60      0       183
        !          40057: de     60      2       202
        !          40058: em     60      0       208
        !          40059: 14     60      2       1
        !          40060: 34     60      2       1
        !          40061: 12     60      2       1
        !          40062: ``     60      2       170
        !          40063: ''     60      2       186
        !          40064: 0707070014230362011006440057030057030000011042500522627502400002500000002222post.src/devopost/CX# Courier-BoldOblique
        !          40065: name CX
        !          40066: internalname 8
        !          40067: spacewidth 60
        !          40068: charset
        !          40069: !      60      2       33
        !          40070: "      60      2       34
        !          40071: #      60      2       35
        !          40072: $      60      2       36
        !          40073: %      60      2       37
        !          40074: &      60      2       38
        !          40075: '      60      2       39
        !          40076: (      60      3       40
        !          40077: )      60      3       41
        !          40078: *      60      2       42
        !          40079: +      60      0       43
        !          40080: ,      60      1       44
        !          40081: hy     60      0       45
        !          40082: -      "
        !          40083: .      60      0       46
        !          40084: /      60      2       47
        !          40085: 0      60      2       48
        !          40086: 1      60      2       49
        !          40087: 2      60      2       50
        !          40088: 3      60      2       51
        !          40089: 4      60      2       52
        !          40090: 5      60      2       53
        !          40091: 6      60      2       54
        !          40092: 7      60      2       55
        !          40093: 8      60      2       56
        !          40094: 9      60      2       57
        !          40095: :      60      0       58
        !          40096: ;      60      1       59
        !          40097: <      60      2       60
        !          40098: =      60      0       61
        !          40099: >      60      2       62
        !          40100: ?      60      2       63
        !          40101: @      60      2       64
        !          40102: A      60      2       65
        !          40103: B      60      2       66
        !          40104: C      60      2       67
        !          40105: D      60      2       68
        !          40106: E      60      2       69
        !          40107: F      60      2       70
        !          40108: G      60      2       71
        !          40109: H      60      2       72
        !          40110: I      60      2       73
        !          40111: J      60      2       74
        !          40112: K      60      2       75
        !          40113: L      60      2       76
        !          40114: M      60      2       77
        !          40115: N      60      2       78
        !          40116: O      60      2       79
        !          40117: P      60      2       80
        !          40118: Q      60      3       81
        !          40119: R      60      2       82
        !          40120: S      60      2       83
        !          40121: T      60      2       84
        !          40122: U      60      2       85
        !          40123: V      60      2       86
        !          40124: W      60      2       87
        !          40125: X      60      2       88
        !          40126: Y      60      2       89
        !          40127: Z      60      2       90
        !          40128: [      60      3       91
        !          40129: \      60      3       92
        !          40130: ]      60      3       93
        !          40131: ^      60      2       94
        !          40132: _      60      1       95
        !          40133: `      60      2       96
        !          40134: a      60      0       97
        !          40135: b      60      2       98
        !          40136: c      60      0       99
        !          40137: d      60      2       100
        !          40138: e      60      0       101
        !          40139: f      60      2       102
        !          40140: g      60      1       103
        !          40141: h      60      2       104
        !          40142: i      60      2       105
        !          40143: j      60      3       106
        !          40144: k      60      2       107
        !          40145: l      60      2       108
        !          40146: m      60      0       109
        !          40147: n      60      0       110
        !          40148: o      60      0       111
        !          40149: p      60      1       112
        !          40150: q      60      1       113
        !          40151: r      60      0       114
        !          40152: s      60      0       115
        !          40153: t      60      2       116
        !          40154: u      60      0       117
        !          40155: v      60      0       118
        !          40156: w      60      0       119
        !          40157: x      60      0       120
        !          40158: y      60      1       121
        !          40159: z      60      0       122
        !          40160: {      60      3       123
        !          40161: |      60      3       124
        !          40162: }      60      3       125
        !          40163: ~      60      0       126
        !          40164: ct     60      2       162
        !          40165: \-     60      0       177
        !          40166: en     "
        !          40167: dg     60      3       178
        !          40168: bu     60      0       183
        !          40169: de     60      2       202
        !          40170: em     60      0       208
        !          40171: 14     60      2       1
        !          40172: 34     60      2       1
        !          40173: 12     60      2       1
        !          40174: ``     60      2       170
        !          40175: ''     60      2       186
        !          40176: 0707070014230362021006440057030057030000011041570522627502400002700000001431post.src/devopost/DESC#
        !          40177: # Original PostScript tables - now obsolete and unsupported.
        !          40178: #
        !          40179: 
        !          40180: PDL PostScript
        !          40181: 
        !          40182: fonts 10 R I B BI CW H HB HX S1 S
        !          40183: sizes 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
        !          40184: 24 25 26 27 28 29 30 31 32 33 34 35 36 38 40 44 48 54 60 72 0
        !          40185: 
        !          40186: res 720
        !          40187: hor 1
        !          40188: vert 1
        !          40189: unitwidth 10
        !          40190: biggestfont 200
        !          40191: 
        !          40192: charset
        !          40193: hy ct fi fl ff Fi Fl dg em 14 34 12 \- en \' aa
        !          40194: \` ga ru sc dd -> \e br Sl ps cs cy as os =. ld
        !          40195: rd le ge pp -+
        !          40196: sq bx ci fa te ** pl mi \< eq \> ~= *A *B *X *D
        !          40197: *E *F *G *Y *I *K *L *M *N *O *P *R *H *S *T *U
        !          40198: *W *C *Q *Z ul \_ rn *a *b *x *d *e *f *g *y *i
        !          40199: *k *l *m *n *o *p *h *r *s *t *u *w *c *q *z \{
        !          40200: \| \} ap fm <= sl if <- ua da de +- >= mu pt pd
        !          40201: bu di != == ~~ al Ox O+ es ca cu sp ip sb ib mo
        !          40202: gr rg co tm sr no \^ or lc lf lt lk lb bv is rc
        !          40203: rf rt rk rb ts lh rh LV LH Lb L1 LA `` '' ob vr
        !          40204: 0707070014230362031006440057030057030000011042520522627502400002500000001125post.src/devopost/GR# Greek
        !          40205: name GR
        !          40206: internalname 33
        !          40207: special
        !          40208: charset
        !          40209: *a     63      0       97
        !          40210: *b     55      3       98
        !          40211: *g     41      1       103
        !          40212: *d     49      2       100
        !          40213: *e     44      0       101
        !          40214: *z     49      3       122
        !          40215: *y     60      1       104
        !          40216: *h     52      2       113
        !          40217: *i     33      0       105
        !          40218: *k     55      0       107
        !          40219: *l     55      2       108
        !          40220: *m     58      1       109
        !          40221: *n     52      0       110
        !          40222: *c     49      3       120
        !          40223: *o     55      0       111
        !          40224: *p     55      0       112
        !          40225: *r     55      1       114
        !          40226: *s     60      0       115
        !          40227: *t     44      0       116
        !          40228: *u     58      0       117
        !          40229: *f     52      3       102
        !          40230: *x     55      1       99
        !          40231: *q     69      1       121
        !          40232: *w     69      0       119
        !          40233: *A     72      2       65
        !          40234: *B     67      2       66
        !          40235: *G     60      2       71
        !          40236: *D     61      2       68
        !          40237: *E     61      2       69
        !          40238: *Z     61      2       90
        !          40239: *Y     72      2       72
        !          40240: *H     74      2       81
        !          40241: *R     56      2       82
        !          40242: *I     33      2       73
        !          40243: *K     72      2       75
        !          40244: *L     69      2       76
        !          40245: *M     89      2       77
        !          40246: *N     72      2       78
        !          40247: *C     65      2       88
        !          40248: *O     72      2       79
        !          40249: *P     77      2       80
        !          40250: *S     59      2       83
        !          40251: *T     61      2       84
        !          40252: *U     69      2       85
        !          40253: *F     76      2       70
        !          40254: *X     72      2       67
        !          40255: *Q     80      2       89
        !          40256: *W     77      2       87
        !          40257: 0707070014230362041006440057030057030000011042530522627502400002400000002027post.src/devopost/H# Helvetica
        !          40258: name H
        !          40259: internalname 9
        !          40260: ligatures fi fl 0
        !          40261: charset
        !          40262: !      28      2       33
        !          40263: $      56      3       36
        !          40264: %      89      2       37
        !          40265: &      67      2       38
        !          40266: '      22      2       39
        !          40267: (      33      3       40
        !          40268: )      33      3       41
        !          40269: *      39      2       42
        !          40270: +      58      0       43
        !          40271: ,      28      1       44
        !          40272: hy     33      0       45
        !          40273: -      "
        !          40274: .      28      0       46
        !          40275: /      28      2       47
        !          40276: 0      56      2       48
        !          40277: 1      56      2       49
        !          40278: 2      56      2       50
        !          40279: 3      56      2       51
        !          40280: 4      56      2       52
        !          40281: 5      56      2       53
        !          40282: 6      56      2       54
        !          40283: 7      56      2       55
        !          40284: 8      56      2       56
        !          40285: 9      56      2       57
        !          40286: :      28      0       58
        !          40287: ;      28      1       59
        !          40288: =      58      0       61
        !          40289: ?      56      2       63
        !          40290: A      67      2       65
        !          40291: B      67      2       66
        !          40292: C      72      2       67
        !          40293: D      72      2       68
        !          40294: E      67      2       69
        !          40295: F      61      2       70
        !          40296: G      78      2       71
        !          40297: H      72      2       72
        !          40298: I      28      2       73
        !          40299: J      50      2       74
        !          40300: K      67      2       75
        !          40301: L      56      2       76
        !          40302: M      83      2       77
        !          40303: N      72      2       78
        !          40304: O      78      2       79
        !          40305: P      67      2       80
        !          40306: Q      78      2       81
        !          40307: R      72      2       82
        !          40308: S      67      2       83
        !          40309: T      61      2       84
        !          40310: U      72      2       85
        !          40311: V      67      2       86
        !          40312: W      94      2       87
        !          40313: X      67      2       88
        !          40314: Y      67      2       89
        !          40315: Z      61      2       90
        !          40316: [      28      3       91
        !          40317: ]      28      3       93
        !          40318: `      22      2       96
        !          40319: a      56      0       97
        !          40320: b      56      2       98
        !          40321: c      50      0       99
        !          40322: d      56      2       100
        !          40323: e      56      0       101
        !          40324: f      28      2       102
        !          40325: g      56      1       103
        !          40326: h      56      2       104
        !          40327: i      22      2       105
        !          40328: j      22      3       106
        !          40329: k      50      2       107
        !          40330: l      22      2       108
        !          40331: m      83      0       109
        !          40332: n      56      0       110
        !          40333: o      56      0       111
        !          40334: p      56      1       112
        !          40335: q      56      1       113
        !          40336: r      33      0       114
        !          40337: s      50      0       115
        !          40338: t      28      2       116
        !          40339: u      56      0       117
        !          40340: v      50      0       118
        !          40341: w      72      0       119
        !          40342: x      50      0       120
        !          40343: y      50      1       121
        !          40344: z      50      0       122
        !          40345: ct     56      3       162
        !          40346: fi     50      2       174
        !          40347: fl     50      2       175
        !          40348: dg     56      3       178
        !          40349: bu     35      0       183
        !          40350: de     33      2       202
        !          40351: em     100     0       208
        !          40352: 14     75      2       1
        !          40353: 34     75      2       1
        !          40354: 12     75      2       1
        !          40355: ``     33      2       170
        !          40356: ''     33      2       186
        !          40357: 0707070014230362051006440057030057030000011042550522627502400002500000002036post.src/devopost/HB# Helvetica-Bold
        !          40358: name HB
        !          40359: internalname 11
        !          40360: ligatures fi fl 0
        !          40361: charset
        !          40362: !      33      2       33
        !          40363: $      56      3       36
        !          40364: %      89      2       37
        !          40365: &      72      2       38
        !          40366: '      28      2       39
        !          40367: (      33      3       40
        !          40368: )      33      3       41
        !          40369: *      39      2       42
        !          40370: +      58      0       43
        !          40371: ,      28      1       44
        !          40372: hy     33      0       45
        !          40373: -      "
        !          40374: .      28      0       46
        !          40375: /      28      2       47
        !          40376: 0      56      2       48
        !          40377: 1      56      2       49
        !          40378: 2      56      2       50
        !          40379: 3      56      2       51
        !          40380: 4      56      2       52
        !          40381: 5      56      2       53
        !          40382: 6      56      2       54
        !          40383: 7      56      2       55
        !          40384: 8      56      2       56
        !          40385: 9      56      2       57
        !          40386: :      33      0       58
        !          40387: ;      33      1       59
        !          40388: =      58      0       61
        !          40389: ?      61      2       63
        !          40390: A      72      2       65
        !          40391: B      72      2       66
        !          40392: C      72      2       67
        !          40393: D      72      2       68
        !          40394: E      67      2       69
        !          40395: F      61      2       70
        !          40396: G      78      2       71
        !          40397: H      72      2       72
        !          40398: I      28      2       73
        !          40399: J      56      2       74
        !          40400: K      72      2       75
        !          40401: L      61      2       76
        !          40402: M      83      2       77
        !          40403: N      72      2       78
        !          40404: O      78      2       79
        !          40405: P      67      2       80
        !          40406: Q      78      2       81
        !          40407: R      72      2       82
        !          40408: S      67      2       83
        !          40409: T      61      2       84
        !          40410: U      72      2       85
        !          40411: V      67      2       86
        !          40412: W      94      2       87
        !          40413: X      67      2       88
        !          40414: Y      67      2       89
        !          40415: Z      61      2       90
        !          40416: [      33      3       91
        !          40417: ]      33      3       93
        !          40418: `      28      2       96
        !          40419: a      56      0       97
        !          40420: b      61      2       98
        !          40421: c      56      0       99
        !          40422: d      61      2       100
        !          40423: e      56      0       101
        !          40424: f      33      2       102
        !          40425: g      61      1       103
        !          40426: h      61      2       104
        !          40427: i      28      2       105
        !          40428: j      28      3       106
        !          40429: k      56      2       107
        !          40430: l      28      2       108
        !          40431: m      89      0       109
        !          40432: n      61      0       110
        !          40433: o      61      0       111
        !          40434: p      61      1       112
        !          40435: q      61      1       113
        !          40436: r      39      0       114
        !          40437: s      56      0       115
        !          40438: t      33      2       116
        !          40439: u      61      0       117
        !          40440: v      56      0       118
        !          40441: w      78      0       119
        !          40442: x      56      0       120
        !          40443: y      56      1       121
        !          40444: z      50      0       122
        !          40445: ct     56      3       162
        !          40446: fi     61      2       174
        !          40447: fl     61      2       175
        !          40448: dg     56      3       178
        !          40449: bu     35      0       183
        !          40450: de     33      2       202
        !          40451: em     100     0       208
        !          40452: 14     75      2       1
        !          40453: 34     75      2       1
        !          40454: 12     75      2       1
        !          40455: ``     50      2       170
        !          40456: ''     50      2       186
        !          40457: 0707070014230362061006440057030057030000011042700522627502400002500000002041post.src/devopost/HI# Helvetica-Oblique
        !          40458: name HI
        !          40459: internalname 10
        !          40460: ligatures fi fl 0
        !          40461: charset
        !          40462: !      28      2       33
        !          40463: $      56      3       36
        !          40464: %      89      2       37
        !          40465: &      67      2       38
        !          40466: '      22      2       39
        !          40467: (      33      3       40
        !          40468: )      33      3       41
        !          40469: *      39      2       42
        !          40470: +      58      0       43
        !          40471: ,      28      1       44
        !          40472: hy     33      0       45
        !          40473: -      "
        !          40474: .      28      0       46
        !          40475: /      28      2       47
        !          40476: 0      56      2       48
        !          40477: 1      56      2       49
        !          40478: 2      56      2       50
        !          40479: 3      56      2       51
        !          40480: 4      56      2       52
        !          40481: 5      56      2       53
        !          40482: 6      56      2       54
        !          40483: 7      56      2       55
        !          40484: 8      56      2       56
        !          40485: 9      56      2       57
        !          40486: :      28      0       58
        !          40487: ;      28      1       59
        !          40488: =      58      0       61
        !          40489: ?      56      2       63
        !          40490: A      67      2       65
        !          40491: B      67      2       66
        !          40492: C      72      2       67
        !          40493: D      72      2       68
        !          40494: E      67      2       69
        !          40495: F      61      2       70
        !          40496: G      78      2       71
        !          40497: H      72      2       72
        !          40498: I      28      2       73
        !          40499: J      50      2       74
        !          40500: K      67      2       75
        !          40501: L      56      2       76
        !          40502: M      83      2       77
        !          40503: N      72      2       78
        !          40504: O      78      2       79
        !          40505: P      67      2       80
        !          40506: Q      78      2       81
        !          40507: R      72      2       82
        !          40508: S      67      2       83
        !          40509: T      61      2       84
        !          40510: U      72      2       85
        !          40511: V      67      2       86
        !          40512: W      94      2       87
        !          40513: X      67      2       88
        !          40514: Y      67      2       89
        !          40515: Z      61      2       90
        !          40516: [      28      3       91
        !          40517: ]      28      3       93
        !          40518: `      22      2       96
        !          40519: a      56      0       97
        !          40520: b      56      2       98
        !          40521: c      50      0       99
        !          40522: d      56      2       100
        !          40523: e      56      0       101
        !          40524: f      28      2       102
        !          40525: g      56      1       103
        !          40526: h      56      2       104
        !          40527: i      22      2       105
        !          40528: j      22      3       106
        !          40529: k      50      2       107
        !          40530: l      22      2       108
        !          40531: m      83      0       109
        !          40532: n      56      0       110
        !          40533: o      56      0       111
        !          40534: p      56      1       112
        !          40535: q      56      1       113
        !          40536: r      33      0       114
        !          40537: s      50      0       115
        !          40538: t      28      2       116
        !          40539: u      56      0       117
        !          40540: v      50      0       118
        !          40541: w      72      0       119
        !          40542: x      50      0       120
        !          40543: y      50      1       121
        !          40544: z      50      0       122
        !          40545: ct     56      3       162
        !          40546: fi     50      2       174
        !          40547: fl     50      2       175
        !          40548: dg     56      3       178
        !          40549: bu     35      0       183
        !          40550: de     33      2       202
        !          40551: em     100     0       208
        !          40552: 14     75      2       1
        !          40553: 34     75      2       1
        !          40554: 12     75      2       1
        !          40555: ``     33      2       170
        !          40556: ''     33      2       186
        !          40557: 0707070014230362071006440057030057030000011042720522627502400002500000002045post.src/devopost/HX# Helvetica-BoldOblique
        !          40558: name HX
        !          40559: internalname 12
        !          40560: ligatures fi fl 0
        !          40561: charset
        !          40562: !      33      2       33
        !          40563: $      56      3       36
        !          40564: %      89      2       37
        !          40565: &      72      2       38
        !          40566: '      28      2       39
        !          40567: (      33      3       40
        !          40568: )      33      3       41
        !          40569: *      39      2       42
        !          40570: +      58      0       43
        !          40571: ,      28      1       44
        !          40572: hy     33      0       45
        !          40573: -      "
        !          40574: .      28      0       46
        !          40575: /      28      2       47
        !          40576: 0      56      2       48
        !          40577: 1      56      2       49
        !          40578: 2      56      2       50
        !          40579: 3      56      2       51
        !          40580: 4      56      2       52
        !          40581: 5      56      2       53
        !          40582: 6      56      2       54
        !          40583: 7      56      2       55
        !          40584: 8      56      2       56
        !          40585: 9      56      2       57
        !          40586: :      33      0       58
        !          40587: ;      33      1       59
        !          40588: =      58      0       61
        !          40589: ?      61      2       63
        !          40590: A      72      2       65
        !          40591: B      72      2       66
        !          40592: C      72      2       67
        !          40593: D      72      2       68
        !          40594: E      67      2       69
        !          40595: F      61      2       70
        !          40596: G      78      2       71
        !          40597: H      72      2       72
        !          40598: I      28      2       73
        !          40599: J      56      2       74
        !          40600: K      72      2       75
        !          40601: L      61      2       76
        !          40602: M      83      2       77
        !          40603: N      72      2       78
        !          40604: O      78      2       79
        !          40605: P      67      2       80
        !          40606: Q      78      2       81
        !          40607: R      72      2       82
        !          40608: S      67      2       83
        !          40609: T      61      2       84
        !          40610: U      72      2       85
        !          40611: V      67      2       86
        !          40612: W      94      2       87
        !          40613: X      67      2       88
        !          40614: Y      67      2       89
        !          40615: Z      61      2       90
        !          40616: [      33      3       91
        !          40617: ]      33      3       93
        !          40618: `      28      2       96
        !          40619: a      56      0       97
        !          40620: b      61      2       98
        !          40621: c      56      0       99
        !          40622: d      61      2       100
        !          40623: e      56      0       101
        !          40624: f      33      2       102
        !          40625: g      61      1       103
        !          40626: h      61      2       104
        !          40627: i      28      2       105
        !          40628: j      28      3       106
        !          40629: k      56      2       107
        !          40630: l      28      2       108
        !          40631: m      89      0       109
        !          40632: n      61      0       110
        !          40633: o      61      0       111
        !          40634: p      61      1       112
        !          40635: q      61      1       113
        !          40636: r      39      0       114
        !          40637: s      56      0       115
        !          40638: t      33      2       116
        !          40639: u      61      0       117
        !          40640: v      56      0       118
        !          40641: w      78      0       119
        !          40642: x      56      0       120
        !          40643: y      56      1       121
        !          40644: z      50      0       122
        !          40645: ct     56      3       162
        !          40646: fi     61      2       174
        !          40647: fl     61      2       175
        !          40648: dg     56      3       178
        !          40649: bu     35      0       183
        !          40650: de     33      2       202
        !          40651: em     100     0       208
        !          40652: 14     75      2       1
        !          40653: 34     75      2       1
        !          40654: 12     75      2       1
        !          40655: ``     50      2       170
        !          40656: ''     50      2       186
        !          40657: 0707070014230362101006440057030057030000011042740522627502400002500000002044post.src/devopost/Hb# Helvetica-Narrow-Bold
        !          40658: name Hb
        !          40659: internalname 19
        !          40660: ligatures fi fl 0
        !          40661: charset
        !          40662: !      27      2       33
        !          40663: $      46      3       36
        !          40664: %      73      2       37
        !          40665: &      59      2       38
        !          40666: '      23      2       39
        !          40667: (      27      3       40
        !          40668: )      27      3       41
        !          40669: *      32      2       42
        !          40670: +      48      0       43
        !          40671: ,      23      1       44
        !          40672: hy     27      0       45
        !          40673: -      "
        !          40674: .      23      0       46
        !          40675: /      23      2       47
        !          40676: 0      46      2       48
        !          40677: 1      46      2       49
        !          40678: 2      46      2       50
        !          40679: 3      46      2       51
        !          40680: 4      46      2       52
        !          40681: 5      46      2       53
        !          40682: 6      46      2       54
        !          40683: 7      46      2       55
        !          40684: 8      46      2       56
        !          40685: 9      46      2       57
        !          40686: :      27      0       58
        !          40687: ;      27      1       59
        !          40688: =      48      0       61
        !          40689: ?      50      2       63
        !          40690: A      59      2       65
        !          40691: B      59      2       66
        !          40692: C      59      2       67
        !          40693: D      59      2       68
        !          40694: E      55      2       69
        !          40695: F      50      2       70
        !          40696: G      64      2       71
        !          40697: H      59      2       72
        !          40698: I      23      2       73
        !          40699: J      46      2       74
        !          40700: K      59      2       75
        !          40701: L      50      2       76
        !          40702: M      68      2       77
        !          40703: N      59      2       78
        !          40704: O      64      2       79
        !          40705: P      55      2       80
        !          40706: Q      64      2       81
        !          40707: R      59      2       82
        !          40708: S      55      2       83
        !          40709: T      50      2       84
        !          40710: U      59      2       85
        !          40711: V      55      2       86
        !          40712: W      77      2       87
        !          40713: X      55      2       88
        !          40714: Y      55      2       89
        !          40715: Z      50      2       90
        !          40716: [      27      3       91
        !          40717: ]      27      3       93
        !          40718: `      23      2       96
        !          40719: a      46      0       97
        !          40720: b      50      2       98
        !          40721: c      46      0       99
        !          40722: d      50      2       100
        !          40723: e      46      0       101
        !          40724: f      27      2       102
        !          40725: g      50      1       103
        !          40726: h      50      2       104
        !          40727: i      23      2       105
        !          40728: j      23      3       106
        !          40729: k      46      2       107
        !          40730: l      23      2       108
        !          40731: m      73      0       109
        !          40732: n      50      0       110
        !          40733: o      50      0       111
        !          40734: p      50      1       112
        !          40735: q      50      1       113
        !          40736: r      32      0       114
        !          40737: s      46      0       115
        !          40738: t      27      2       116
        !          40739: u      50      0       117
        !          40740: v      46      0       118
        !          40741: w      64      0       119
        !          40742: x      46      0       120
        !          40743: y      46      1       121
        !          40744: z      41      0       122
        !          40745: ct     46      3       162
        !          40746: fi     50      2       174
        !          40747: fl     50      2       175
        !          40748: dg     46      3       178
        !          40749: bu     29      0       183
        !          40750: de     27      2       202
        !          40751: em     82      0       208
        !          40752: 14     75      2       1
        !          40753: 34     75      2       1
        !          40754: 12     75      2       1
        !          40755: ``     41      2       170
        !          40756: ''     41      2       186
        !          40757: 0707070014230362111006440057030057030000011042760522627502400002500000002047post.src/devopost/Hi# Helvetica-Narrow-Oblique
        !          40758: name Hi
        !          40759: internalname 18
        !          40760: ligatures fi fl 0
        !          40761: charset
        !          40762: !      23      2       33
        !          40763: $      46      3       36
        !          40764: %      73      2       37
        !          40765: &      55      2       38
        !          40766: '      18      2       39
        !          40767: (      27      3       40
        !          40768: )      27      3       41
        !          40769: *      32      2       42
        !          40770: +      48      0       43
        !          40771: ,      23      1       44
        !          40772: hy     27      0       45
        !          40773: -      "
        !          40774: .      23      0       46
        !          40775: /      23      2       47
        !          40776: 0      46      2       48
        !          40777: 1      46      2       49
        !          40778: 2      46      2       50
        !          40779: 3      46      2       51
        !          40780: 4      46      2       52
        !          40781: 5      46      2       53
        !          40782: 6      46      2       54
        !          40783: 7      46      2       55
        !          40784: 8      46      2       56
        !          40785: 9      46      2       57
        !          40786: :      23      0       58
        !          40787: ;      23      1       59
        !          40788: =      48      0       61
        !          40789: ?      46      2       63
        !          40790: A      55      2       65
        !          40791: B      55      2       66
        !          40792: C      59      2       67
        !          40793: D      59      2       68
        !          40794: E      55      2       69
        !          40795: F      50      2       70
        !          40796: G      64      2       71
        !          40797: H      59      2       72
        !          40798: I      23      2       73
        !          40799: J      41      2       74
        !          40800: K      55      2       75
        !          40801: L      46      2       76
        !          40802: M      68      2       77
        !          40803: N      59      2       78
        !          40804: O      64      2       79
        !          40805: P      55      2       80
        !          40806: Q      64      2       81
        !          40807: R      59      2       82
        !          40808: S      55      2       83
        !          40809: T      50      2       84
        !          40810: U      59      2       85
        !          40811: V      55      2       86
        !          40812: W      77      2       87
        !          40813: X      55      2       88
        !          40814: Y      55      2       89
        !          40815: Z      50      2       90
        !          40816: [      23      3       91
        !          40817: ]      23      3       93
        !          40818: `      18      2       96
        !          40819: a      46      0       97
        !          40820: b      46      2       98
        !          40821: c      41      0       99
        !          40822: d      46      2       100
        !          40823: e      46      0       101
        !          40824: f      23      2       102
        !          40825: g      46      1       103
        !          40826: h      46      2       104
        !          40827: i      18      2       105
        !          40828: j      18      3       106
        !          40829: k      41      2       107
        !          40830: l      18      2       108
        !          40831: m      68      0       109
        !          40832: n      46      0       110
        !          40833: o      46      0       111
        !          40834: p      46      1       112
        !          40835: q      46      1       113
        !          40836: r      27      0       114
        !          40837: s      41      0       115
        !          40838: t      23      2       116
        !          40839: u      46      0       117
        !          40840: v      41      0       118
        !          40841: w      59      0       119
        !          40842: x      41      0       120
        !          40843: y      41      1       121
        !          40844: z      41      0       122
        !          40845: ct     46      3       162
        !          40846: fi     41      2       174
        !          40847: fl     41      2       175
        !          40848: dg     46      3       178
        !          40849: bu     29      0       183
        !          40850: de     27      2       202
        !          40851: em     82      0       208
        !          40852: 14     75      2       1
        !          40853: 34     75      2       1
        !          40854: 12     75      2       1
        !          40855: ``     27      2       170
        !          40856: ''     27      2       186
        !          40857: 0707070014230362121006440057030057030000011043300522627502400002500000002037post.src/devopost/Hr# Helvetica-Narrow
        !          40858: name Hr
        !          40859: internalname 17
        !          40860: ligatures fi fl 0
        !          40861: charset
        !          40862: !      23      2       33
        !          40863: $      46      3       36
        !          40864: %      73      2       37
        !          40865: &      55      2       38
        !          40866: '      18      2       39
        !          40867: (      27      3       40
        !          40868: )      27      3       41
        !          40869: *      32      2       42
        !          40870: +      48      0       43
        !          40871: ,      23      1       44
        !          40872: hy     27      0       45
        !          40873: -      "
        !          40874: .      23      0       46
        !          40875: /      23      2       47
        !          40876: 0      46      2       48
        !          40877: 1      46      2       49
        !          40878: 2      46      2       50
        !          40879: 3      46      2       51
        !          40880: 4      46      2       52
        !          40881: 5      46      2       53
        !          40882: 6      46      2       54
        !          40883: 7      46      2       55
        !          40884: 8      46      2       56
        !          40885: 9      46      2       57
        !          40886: :      23      0       58
        !          40887: ;      23      1       59
        !          40888: =      48      0       61
        !          40889: ?      46      2       63
        !          40890: A      55      2       65
        !          40891: B      55      2       66
        !          40892: C      59      2       67
        !          40893: D      59      2       68
        !          40894: E      55      2       69
        !          40895: F      50      2       70
        !          40896: G      64      2       71
        !          40897: H      59      2       72
        !          40898: I      23      2       73
        !          40899: J      41      2       74
        !          40900: K      55      2       75
        !          40901: L      46      2       76
        !          40902: M      68      2       77
        !          40903: N      59      2       78
        !          40904: O      64      2       79
        !          40905: P      55      2       80
        !          40906: Q      64      2       81
        !          40907: R      59      2       82
        !          40908: S      55      2       83
        !          40909: T      50      2       84
        !          40910: U      59      2       85
        !          40911: V      55      2       86
        !          40912: W      77      2       87
        !          40913: X      55      2       88
        !          40914: Y      55      2       89
        !          40915: Z      50      2       90
        !          40916: [      23      3       91
        !          40917: ]      23      3       93
        !          40918: `      18      2       96
        !          40919: a      46      0       97
        !          40920: b      46      2       98
        !          40921: c      41      0       99
        !          40922: d      46      2       100
        !          40923: e      46      0       101
        !          40924: f      23      2       102
        !          40925: g      46      1       103
        !          40926: h      46      2       104
        !          40927: i      18      2       105
        !          40928: j      18      3       106
        !          40929: k      41      2       107
        !          40930: l      18      2       108
        !          40931: m      68      0       109
        !          40932: n      46      0       110
        !          40933: o      46      0       111
        !          40934: p      46      1       112
        !          40935: q      46      1       113
        !          40936: r      27      0       114
        !          40937: s      41      0       115
        !          40938: t      23      2       116
        !          40939: u      46      0       117
        !          40940: v      41      0       118
        !          40941: w      59      0       119
        !          40942: x      41      0       120
        !          40943: y      41      1       121
        !          40944: z      41      0       122
        !          40945: ct     46      3       162
        !          40946: fi     41      2       174
        !          40947: fl     41      2       175
        !          40948: dg     46      3       178
        !          40949: bu     29      0       183
        !          40950: de     27      2       202
        !          40951: em     82      0       208
        !          40952: 14     75      2       1
        !          40953: 34     75      2       1
        !          40954: 12     75      2       1
        !          40955: ``     27      2       170
        !          40956: ''     27      2       186
        !          40957: 0707070014230362131006440057030057030000011043320522627502400002500000002053post.src/devopost/Hx# Helvetica-Narrow-BoldOblique
        !          40958: name Hx
        !          40959: internalname 20
        !          40960: ligatures fi fl 0
        !          40961: charset
        !          40962: !      27      2       33
        !          40963: $      46      3       36
        !          40964: %      73      2       37
        !          40965: &      59      2       38
        !          40966: '      23      2       39
        !          40967: (      27      3       40
        !          40968: )      27      3       41
        !          40969: *      32      2       42
        !          40970: +      48      0       43
        !          40971: ,      23      1       44
        !          40972: hy     27      0       45
        !          40973: -      "
        !          40974: .      23      0       46
        !          40975: /      23      2       47
        !          40976: 0      46      2       48
        !          40977: 1      46      2       49
        !          40978: 2      46      2       50
        !          40979: 3      46      2       51
        !          40980: 4      46      2       52
        !          40981: 5      46      2       53
        !          40982: 6      46      2       54
        !          40983: 7      46      2       55
        !          40984: 8      46      2       56
        !          40985: 9      46      2       57
        !          40986: :      27      0       58
        !          40987: ;      27      1       59
        !          40988: =      48      0       61
        !          40989: ?      50      2       63
        !          40990: A      59      2       65
        !          40991: B      59      2       66
        !          40992: C      59      2       67
        !          40993: D      59      2       68
        !          40994: E      55      2       69
        !          40995: F      50      2       70
        !          40996: G      64      2       71
        !          40997: H      59      2       72
        !          40998: I      23      2       73
        !          40999: J      46      2       74
        !          41000: K      59      2       75
        !          41001: L      50      2       76
        !          41002: M      68      2       77
        !          41003: N      59      2       78
        !          41004: O      64      2       79
        !          41005: P      55      2       80
        !          41006: Q      64      2       81
        !          41007: R      59      2       82
        !          41008: S      55      2       83
        !          41009: T      50      2       84
        !          41010: U      59      2       85
        !          41011: V      55      2       86
        !          41012: W      77      2       87
        !          41013: X      55      2       88
        !          41014: Y      55      2       89
        !          41015: Z      50      2       90
        !          41016: [      27      3       91
        !          41017: ]      27      3       93
        !          41018: `      23      2       96
        !          41019: a      46      0       97
        !          41020: b      50      2       98
        !          41021: c      46      0       99
        !          41022: d      50      2       100
        !          41023: e      46      0       101
        !          41024: f      27      2       102
        !          41025: g      50      1       103
        !          41026: h      50      2       104
        !          41027: i      23      2       105
        !          41028: j      23      3       106
        !          41029: k      46      2       107
        !          41030: l      23      2       108
        !          41031: m      73      0       109
        !          41032: n      50      0       110
        !          41033: o      50      0       111
        !          41034: p      50      1       112
        !          41035: q      50      1       113
        !          41036: r      32      0       114
        !          41037: s      46      0       115
        !          41038: t      27      2       116
        !          41039: u      50      0       117
        !          41040: v      46      0       118
        !          41041: w      64      0       119
        !          41042: x      46      0       120
        !          41043: y      46      1       121
        !          41044: z      41      0       122
        !          41045: ct     46      3       162
        !          41046: fi     50      2       174
        !          41047: fl     50      2       175
        !          41048: dg     46      3       178
        !          41049: bu     29      0       183
        !          41050: de     27      2       202
        !          41051: em     82      0       208
        !          41052: 14     75      2       1
        !          41053: 34     75      2       1
        !          41054: 12     75      2       1
        !          41055: ``     41      2       170
        !          41056: ''     41      2       186
        !          41057: 0707070014230362141006440057030057030000011043340522627502400002400000002101post.src/devopost/I# Times-Italic
        !          41058: name I
        !          41059: internalname 2
        !          41060: ligatures fi fl 0
        !          41061: charset
        !          41062: !      33      2       33
        !          41063: $      50      2       36
        !          41064: %      83      2       37
        !          41065: &      78      2       38
        !          41066: '      33      2       39
        !          41067: (      33      3       40
        !          41068: )      33      3       41
        !          41069: *      50      2       42
        !          41070: +      68      0       43
        !          41071: ,      25      1       44
        !          41072: hy     33      0       45
        !          41073: -      "
        !          41074: .      25      0       46
        !          41075: /      28      2       47
        !          41076: 0      50      2       48
        !          41077: 1      50      2       49
        !          41078: 2      50      2       50
        !          41079: 3      50      2       51
        !          41080: 4      50      2       52
        !          41081: 5      50      2       53
        !          41082: 6      50      2       54
        !          41083: 7      50      2       55
        !          41084: 8      50      2       56
        !          41085: 9      50      2       57
        !          41086: :      33      0       58
        !          41087: ;      33      1       59
        !          41088: =      68      0       61
        !          41089: ?      50      2       63
        !          41090: A      61      2       65
        !          41091: B      61      2       66
        !          41092: C      67      2       67
        !          41093: D      72      2       68
        !          41094: E      61      2       69
        !          41095: F      61      2       70
        !          41096: G      72      2       71
        !          41097: H      72      2       72
        !          41098: I      33      2       73
        !          41099: J      44      2       74
        !          41100: K      67      2       75
        !          41101: L      56      2       76
        !          41102: M      83      2       77
        !          41103: N      67      2       78
        !          41104: O      72      2       79
        !          41105: P      61      2       80
        !          41106: Q      72      3       81
        !          41107: R      61      2       82
        !          41108: S      50      2       83
        !          41109: T      56      2       84
        !          41110: U      72      2       85
        !          41111: V      61      2       86
        !          41112: W      83      2       87
        !          41113: X      61      2       88
        !          41114: Y      56      2       89
        !          41115: Z      56      2       90
        !          41116: [      39      3       91
        !          41117: ]      39      3       93
        !          41118: `      33      2       96
        !          41119: a      50      0       97
        !          41120: b      50      2       98
        !          41121: c      44      0       99
        !          41122: d      50      2       100
        !          41123: e      44      0       101
        !          41124: f      28      3       102
        !          41125: g      50      1       103
        !          41126: h      50      2       104
        !          41127: i      28      2       105
        !          41128: j      28      3       106
        !          41129: k      44      2       107
        !          41130: l      28      2       108
        !          41131: m      72      0       109
        !          41132: n      50      0       110
        !          41133: o      50      0       111
        !          41134: p      50      1       112
        !          41135: q      50      1       113
        !          41136: r      39      0       114
        !          41137: s      39      0       115
        !          41138: t      28      0       116
        !          41139: u      50      0       117
        !          41140: v      44      0       118
        !          41141: w      67      0       119
        !          41142: x      44      0       120
        !          41143: y      44      1       121
        !          41144: z      39      0       122
        !          41145: ct     50      3       162
        !          41146: fi     50      3       174
        !          41147: fl     50      3       175
        !          41148: ff     50      2       1
        !          41149: Fi     72      2       1
        !          41150: Fl     72      2       1
        !          41151: dg     50      2       178
        !          41152: bu     35      0       183
        !          41153: de     33      2       202
        !          41154: em     89      0       208
        !          41155: 14     75      2       1
        !          41156: 34     75      2       1
        !          41157: 12     75      2       1
        !          41158: sq     50      2       1
        !          41159: ``     56      2       170
        !          41160: ''     56      2       186
        !          41161: 0707070014230362151006440057030057030000011043360522627502400002500000002035post.src/devopost/KB# Bookman-Demi
        !          41162: name KB
        !          41163: internalname 23
        !          41164: ligatures fi fl 0
        !          41165: charset
        !          41166: !      36      2       33
        !          41167: $      66      3       36
        !          41168: %      94      2       37
        !          41169: &      80      2       38
        !          41170: '      32      2       39
        !          41171: (      32      3       40
        !          41172: )      32      3       41
        !          41173: *      46      2       42
        !          41174: +      60      0       43
        !          41175: ,      34      1       44
        !          41176: hy     36      0       45
        !          41177: -      "
        !          41178: .      34      0       46
        !          41179: /      60      3       47
        !          41180: 0      66      2       48
        !          41181: 1      66      2       49
        !          41182: 2      66      2       50
        !          41183: 3      66      2       51
        !          41184: 4      66      2       52
        !          41185: 5      66      2       53
        !          41186: 6      66      2       54
        !          41187: 7      66      2       55
        !          41188: 8      66      2       56
        !          41189: 9      66      2       57
        !          41190: :      34      0       58
        !          41191: ;      34      1       59
        !          41192: =      60      0       61
        !          41193: ?      66      2       63
        !          41194: A      72      2       65
        !          41195: B      72      2       66
        !          41196: C      74      2       67
        !          41197: D      78      2       68
        !          41198: E      72      2       69
        !          41199: F      68      2       70
        !          41200: G      78      2       71
        !          41201: H      82      2       72
        !          41202: I      40      2       73
        !          41203: J      64      2       74
        !          41204: K      80      2       75
        !          41205: L      64      2       76
        !          41206: M      94      2       77
        !          41207: N      74      2       78
        !          41208: O      80      2       79
        !          41209: P      66      2       80
        !          41210: Q      80      3       81
        !          41211: R      78      2       82
        !          41212: S      66      2       83
        !          41213: T      70      2       84
        !          41214: U      74      2       85
        !          41215: V      72      2       86
        !          41216: W      94      2       87
        !          41217: X      78      2       88
        !          41218: Y      70      2       89
        !          41219: Z      64      2       90
        !          41220: [      30      3       91
        !          41221: ]      30      3       93
        !          41222: `      32      2       96
        !          41223: a      58      0       97
        !          41224: b      60      2       98
        !          41225: c      58      0       99
        !          41226: d      64      2       100
        !          41227: e      58      0       101
        !          41228: f      38      2       102
        !          41229: g      58      3       103
        !          41230: h      68      2       104
        !          41231: i      36      2       105
        !          41232: j      34      3       106
        !          41233: k      66      2       107
        !          41234: l      34      2       108
        !          41235: m      100     0       109
        !          41236: n      68      0       110
        !          41237: o      62      0       111
        !          41238: p      64      1       112
        !          41239: q      62      1       113
        !          41240: r      46      0       114
        !          41241: s      52      0       115
        !          41242: t      46      2       116
        !          41243: u      66      0       117
        !          41244: v      60      0       118
        !          41245: w      80      0       119
        !          41246: x      60      0       120
        !          41247: y      62      1       121
        !          41248: z      56      0       122
        !          41249: ct     66      2       162
        !          41250: fi     74      2       174
        !          41251: fl     74      2       175
        !          41252: dg     44      3       178
        !          41253: bu     46      0       183
        !          41254: de     34      2       202
        !          41255: em     100     0       208
        !          41256: 14     75      2       1
        !          41257: 34     75      2       1
        !          41258: 12     75      2       1
        !          41259: ``     54      2       170
        !          41260: ''     54      2       186
        !          41261: 0707070014230362161006440057030057030000011043500522627502400002500000002043post.src/devopost/KI# Bookman-LightItalic
        !          41262: name KI
        !          41263: internalname 22
        !          41264: ligatures fi fl 0
        !          41265: charset
        !          41266: !      32      2       33
        !          41267: $      62      2       36
        !          41268: %      80      2       37
        !          41269: &      82      2       38
        !          41270: '      28      2       39
        !          41271: (      28      3       40
        !          41272: )      28      3       41
        !          41273: *      44      2       42
        !          41274: +      60      0       43
        !          41275: ,      30      1       44
        !          41276: hy     32      0       45
        !          41277: -      "
        !          41278: .      30      0       46
        !          41279: /      60      3       47
        !          41280: 0      62      2       48
        !          41281: 1      62      2       49
        !          41282: 2      62      2       50
        !          41283: 3      62      2       51
        !          41284: 4      62      2       52
        !          41285: 5      62      2       53
        !          41286: 6      62      2       54
        !          41287: 7      62      2       55
        !          41288: 8      62      2       56
        !          41289: 9      62      2       57
        !          41290: :      30      0       58
        !          41291: ;      30      1       59
        !          41292: =      60      0       61
        !          41293: ?      54      2       63
        !          41294: A      70      2       65
        !          41295: B      72      2       66
        !          41296: C      72      2       67
        !          41297: D      74      2       68
        !          41298: E      68      2       69
        !          41299: F      62      2       70
        !          41300: G      76      2       71
        !          41301: H      80      2       72
        !          41302: I      32      2       73
        !          41303: J      56      2       74
        !          41304: K      72      2       75
        !          41305: L      58      2       76
        !          41306: M      86      2       77
        !          41307: N      72      2       78
        !          41308: O      76      2       79
        !          41309: P      60      2       80
        !          41310: Q      78      3       81
        !          41311: R      70      2       82
        !          41312: S      64      2       83
        !          41313: T      60      2       84
        !          41314: U      72      2       85
        !          41315: V      68      2       86
        !          41316: W      96      2       87
        !          41317: X      70      2       88
        !          41318: Y      66      2       89
        !          41319: Z      58      2       90
        !          41320: [      26      3       91
        !          41321: ]      26      3       93
        !          41322: `      28      2       96
        !          41323: a      62      0       97
        !          41324: b      60      2       98
        !          41325: c      48      0       99
        !          41326: d      64      2       100
        !          41327: e      54      0       101
        !          41328: f      34      3       102
        !          41329: g      56      1       103
        !          41330: h      62      2       104
        !          41331: i      28      2       105
        !          41332: j      28      3       106
        !          41333: k      60      2       107
        !          41334: l      28      2       108
        !          41335: m      88      0       109
        !          41336: n      62      0       110
        !          41337: o      54      0       111
        !          41338: p      60      1       112
        !          41339: q      56      1       113
        !          41340: r      40      0       114
        !          41341: s      54      0       115
        !          41342: t      34      2       116
        !          41343: u      62      0       117
        !          41344: v      54      0       118
        !          41345: w      88      0       119
        !          41346: x      54      0       120
        !          41347: y      60      1       121
        !          41348: z      52      0       122
        !          41349: ct     62      2       162
        !          41350: fi     64      3       174
        !          41351: fl     66      3       175
        !          41352: dg     62      3       178
        !          41353: bu     46      0       183
        !          41354: de     30      2       202
        !          41355: em     100     0       208
        !          41356: 14     75      2       1
        !          41357: 34     75      2       1
        !          41358: 12     75      2       1
        !          41359: ``     44      2       170
        !          41360: ''     44      2       186
        !          41361: 0707070014230362171006440057030057030000011043520522627502500002500000002035post.src/devopost/KR# Bookman-Light
        !          41362: name KR
        !          41363: internalname 21
        !          41364: ligatures fi fl 0
        !          41365: charset
        !          41366: !      30      2       33
        !          41367: $      62      2       36
        !          41368: %      90      2       37
        !          41369: &      80      2       38
        !          41370: '      22      2       39
        !          41371: (      30      3       40
        !          41372: )      30      3       41
        !          41373: *      44      2       42
        !          41374: +      60      0       43
        !          41375: ,      32      1       44
        !          41376: hy     40      0       45
        !          41377: -      "
        !          41378: .      32      0       46
        !          41379: /      60      3       47
        !          41380: 0      62      2       48
        !          41381: 1      62      2       49
        !          41382: 2      62      2       50
        !          41383: 3      62      2       51
        !          41384: 4      62      2       52
        !          41385: 5      62      2       53
        !          41386: 6      62      2       54
        !          41387: 7      62      2       55
        !          41388: 8      62      2       56
        !          41389: 9      62      2       57
        !          41390: :      32      0       58
        !          41391: ;      32      1       59
        !          41392: =      60      0       61
        !          41393: ?      54      2       63
        !          41394: A      68      2       65
        !          41395: B      74      2       66
        !          41396: C      74      2       67
        !          41397: D      80      2       68
        !          41398: E      72      2       69
        !          41399: F      64      2       70
        !          41400: G      80      2       71
        !          41401: H      80      2       72
        !          41402: I      34      2       73
        !          41403: J      60      2       74
        !          41404: K      72      2       75
        !          41405: L      60      2       76
        !          41406: M      92      2       77
        !          41407: N      74      2       78
        !          41408: O      80      2       79
        !          41409: P      62      2       80
        !          41410: Q      82      3       81
        !          41411: R      72      2       82
        !          41412: S      66      2       83
        !          41413: T      62      2       84
        !          41414: U      78      2       85
        !          41415: V      70      2       86
        !          41416: W      96      2       87
        !          41417: X      72      2       88
        !          41418: Y      64      2       89
        !          41419: Z      64      2       90
        !          41420: [      30      3       91
        !          41421: ]      30      3       93
        !          41422: `      22      2       96
        !          41423: a      58      0       97
        !          41424: b      62      2       98
        !          41425: c      52      0       99
        !          41426: d      62      2       100
        !          41427: e      52      0       101
        !          41428: f      32      2       102
        !          41429: g      54      3       103
        !          41430: h      66      2       104
        !          41431: i      30      2       105
        !          41432: j      30      3       106
        !          41433: k      62      2       107
        !          41434: l      30      2       108
        !          41435: m      94      0       109
        !          41436: n      66      0       110
        !          41437: o      56      0       111
        !          41438: p      62      1       112
        !          41439: q      58      1       113
        !          41440: r      44      0       114
        !          41441: s      52      0       115
        !          41442: t      38      2       116
        !          41443: u      68      0       117
        !          41444: v      52      0       118
        !          41445: w      78      0       119
        !          41446: x      56      0       120
        !          41447: y      54      1       121
        !          41448: z      48      0       122
        !          41449: ct     62      2       162
        !          41450: fi     62      2       174
        !          41451: fl     62      2       175
        !          41452: dg     54      3       178
        !          41453: bu     46      0       183
        !          41454: de     32      2       202
        !          41455: em     100     0       208
        !          41456: 14     75      2       1
        !          41457: 34     75      2       1
        !          41458: 12     75      2       1
        !          41459: ``     40      2       170
        !          41460: ''     40      2       186
        !          41461: 0707070014230362201006440057030057030000011043540522627502500002500000002043post.src/devopost/KX# Bookman-DemiItalic
        !          41462: name KX
        !          41463: internalname 24
        !          41464: ligatures fi fl 0
        !          41465: charset
        !          41466: !      32      2       33
        !          41467: $      68      3       36
        !          41468: %      88      2       37
        !          41469: &      98      2       38
        !          41470: '      32      2       39
        !          41471: (      26      3       40
        !          41472: )      26      3       41
        !          41473: *      46      2       42
        !          41474: +      60      0       43
        !          41475: ,      34      1       44
        !          41476: hy     28      0       45
        !          41477: -      "
        !          41478: .      34      0       46
        !          41479: /      36      2       47
        !          41480: 0      68      2       48
        !          41481: 1      68      2       49
        !          41482: 2      68      2       50
        !          41483: 3      68      2       51
        !          41484: 4      68      2       52
        !          41485: 5      68      2       53
        !          41486: 6      68      2       54
        !          41487: 7      68      2       55
        !          41488: 8      68      2       56
        !          41489: 9      68      2       57
        !          41490: :      34      0       58
        !          41491: ;      34      1       59
        !          41492: =      60      0       61
        !          41493: ?      62      2       63
        !          41494: A      72      2       65
        !          41495: B      72      2       66
        !          41496: C      70      2       67
        !          41497: D      76      2       68
        !          41498: E      72      2       69
        !          41499: F      66      2       70
        !          41500: G      76      2       71
        !          41501: H      80      2       72
        !          41502: I      38      2       73
        !          41503: J      62      2       74
        !          41504: K      78      2       75
        !          41505: L      64      2       76
        !          41506: M      86      2       77
        !          41507: N      74      2       78
        !          41508: O      76      2       79
        !          41509: P      64      2       80
        !          41510: Q      76      3       81
        !          41511: R      74      2       82
        !          41512: S      70      2       83
        !          41513: T      70      2       84
        !          41514: U      74      2       85
        !          41515: V      66      2       86
        !          41516: W      100     2       87
        !          41517: X      74      2       88
        !          41518: Y      66      2       89
        !          41519: Z      68      2       90
        !          41520: [      26      3       91
        !          41521: ]      26      3       93
        !          41522: `      32      2       96
        !          41523: a      68      0       97
        !          41524: b      60      2       98
        !          41525: c      56      0       99
        !          41526: d      68      2       100
        !          41527: e      56      0       101
        !          41528: f      42      3       102
        !          41529: g      62      1       103
        !          41530: h      70      2       104
        !          41531: i      38      2       105
        !          41532: j      32      3       106
        !          41533: k      70      2       107
        !          41534: l      38      2       108
        !          41535: m      96      0       109
        !          41536: n      68      0       110
        !          41537: o      60      0       111
        !          41538: p      66      1       112
        !          41539: q      62      1       113
        !          41540: r      50      0       114
        !          41541: s      54      0       115
        !          41542: t      44      2       116
        !          41543: u      68      0       117
        !          41544: v      54      0       118
        !          41545: w      86      0       119
        !          41546: x      62      0       120
        !          41547: y      60      1       121
        !          41548: z      56      0       122
        !          41549: ct     68      2       162
        !          41550: fi     82      3       174
        !          41551: fl     82      3       175
        !          41552: dg     42      3       178
        !          41553: bu     36      0       183
        !          41554: de     36      2       202
        !          41555: em     100     0       208
        !          41556: 14     75      2       1
        !          41557: 34     75      2       1
        !          41558: 12     75      2       1
        !          41559: ``     52      2       170
        !          41560: ''     52      2       186
        !          41561: 0707070014230362211006440057030057030000011043560522627502500002500000002045post.src/devopost/NB# NewCenturySchlbk-Bold
        !          41562: name NB
        !          41563: internalname 31
        !          41564: ligatures fi fl 0
        !          41565: charset
        !          41566: !      30      2       33
        !          41567: $      57      3       36
        !          41568: %      83      2       37
        !          41569: &      85      2       38
        !          41570: '      24      2       39
        !          41571: (      39      3       40
        !          41572: )      39      3       41
        !          41573: *      50      2       42
        !          41574: +      61      0       43
        !          41575: ,      28      1       44
        !          41576: hy     33      0       45
        !          41577: -      "
        !          41578: .      28      0       46
        !          41579: /      28      2       47
        !          41580: 0      57      2       48
        !          41581: 1      57      2       49
        !          41582: 2      57      2       50
        !          41583: 3      57      2       51
        !          41584: 4      57      2       52
        !          41585: 5      57      2       53
        !          41586: 6      57      2       54
        !          41587: 7      57      2       55
        !          41588: 8      57      2       56
        !          41589: 9      57      2       57
        !          41590: :      28      0       58
        !          41591: ;      28      1       59
        !          41592: =      61      0       61
        !          41593: ?      50      2       63
        !          41594: A      76      2       65
        !          41595: B      78      2       66
        !          41596: C      78      2       67
        !          41597: D      83      2       68
        !          41598: E      76      2       69
        !          41599: F      72      2       70
        !          41600: G      83      2       71
        !          41601: H      87      2       72
        !          41602: I      44      2       73
        !          41603: J      65      2       74
        !          41604: K      81      2       75
        !          41605: L      72      2       76
        !          41606: M      98      2       77
        !          41607: N      83      2       78
        !          41608: O      83      2       79
        !          41609: P      76      2       80
        !          41610: Q      83      3       81
        !          41611: R      81      2       82
        !          41612: S      67      2       83
        !          41613: T      72      2       84
        !          41614: U      83      2       85
        !          41615: V      76      2       86
        !          41616: W      98      2       87
        !          41617: X      72      2       88
        !          41618: Y      72      2       89
        !          41619: Z      67      2       90
        !          41620: [      39      3       91
        !          41621: ]      39      3       93
        !          41622: `      24      2       96
        !          41623: a      61      0       97
        !          41624: b      65      2       98
        !          41625: c      56      0       99
        !          41626: d      67      2       100
        !          41627: e      57      0       101
        !          41628: f      39      2       102
        !          41629: g      61      1       103
        !          41630: h      69      2       104
        !          41631: i      37      2       105
        !          41632: j      35      3       106
        !          41633: k      67      2       107
        !          41634: l      35      2       108
        !          41635: m      96      0       109
        !          41636: n      69      0       110
        !          41637: o      61      0       111
        !          41638: p      67      1       112
        !          41639: q      65      1       113
        !          41640: r      52      0       114
        !          41641: s      50      0       115
        !          41642: t      43      2       116
        !          41643: u      69      0       117
        !          41644: v      61      0       118
        !          41645: w      89      0       119
        !          41646: x      61      0       120
        !          41647: y      61      1       121
        !          41648: z      54      0       122
        !          41649: ct     57      3       162
        !          41650: fi     69      2       174
        !          41651: fl     69      2       175
        !          41652: dg     50      2       178
        !          41653: bu     61      0       183
        !          41654: de     33      2       202
        !          41655: em     100     0       208
        !          41656: 14     75      2       1
        !          41657: 34     75      2       1
        !          41658: 12     75      2       1
        !          41659: ``     48      2       170
        !          41660: ''     48      2       186
        !          41661: 0707070014230362221006440057030057030000011043700522627502500002500000002047post.src/devopost/NI# NewCenturySchlbk-Italic
        !          41662: name NI
        !          41663: internalname 30
        !          41664: ligatures fi fl 0
        !          41665: charset
        !          41666: !      33      2       33
        !          41667: $      56      3       36
        !          41668: %      83      2       37
        !          41669: &      85      2       38
        !          41670: '      20      2       39
        !          41671: (      33      3       40
        !          41672: )      33      3       41
        !          41673: *      50      2       42
        !          41674: +      61      0       43
        !          41675: ,      28      1       44
        !          41676: hy     33      0       45
        !          41677: -      "
        !          41678: .      28      0       46
        !          41679: /      61      2       47
        !          41680: 0      56      2       48
        !          41681: 1      56      2       49
        !          41682: 2      56      2       50
        !          41683: 3      56      2       51
        !          41684: 4      56      2       52
        !          41685: 5      56      2       53
        !          41686: 6      56      2       54
        !          41687: 7      56      2       55
        !          41688: 8      56      2       56
        !          41689: 9      56      2       57
        !          41690: :      28      0       58
        !          41691: ;      28      1       59
        !          41692: =      61      0       61
        !          41693: ?      44      2       63
        !          41694: A      70      2       65
        !          41695: B      72      2       66
        !          41696: C      72      2       67
        !          41697: D      78      2       68
        !          41698: E      72      2       69
        !          41699: F      67      2       70
        !          41700: G      78      2       71
        !          41701: H      83      2       72
        !          41702: I      41      2       73
        !          41703: J      61      2       74
        !          41704: K      74      2       75
        !          41705: L      67      2       76
        !          41706: M      94      2       77
        !          41707: N      81      2       78
        !          41708: O      78      2       79
        !          41709: P      67      2       80
        !          41710: Q      78      3       81
        !          41711: R      74      2       82
        !          41712: S      67      2       83
        !          41713: T      69      2       84
        !          41714: U      81      2       85
        !          41715: V      70      2       86
        !          41716: W      93      2       87
        !          41717: X      70      2       88
        !          41718: Y      69      2       89
        !          41719: Z      67      2       90
        !          41720: [      33      3       91
        !          41721: ]      33      3       93
        !          41722: `      20      2       96
        !          41723: a      57      0       97
        !          41724: b      56      2       98
        !          41725: c      44      0       99
        !          41726: d      61      2       100
        !          41727: e      44      0       101
        !          41728: f      33      3       102
        !          41729: g      54      1       103
        !          41730: h      61      2       104
        !          41731: i      33      2       105
        !          41732: j      32      3       106
        !          41733: k      56      2       107
        !          41734: l      33      2       108
        !          41735: m      89      0       109
        !          41736: n      61      0       110
        !          41737: o      50      0       111
        !          41738: p      57      1       112
        !          41739: q      56      1       113
        !          41740: r      44      0       114
        !          41741: s      44      0       115
        !          41742: t      35      2       116
        !          41743: u      61      0       117
        !          41744: v      52      0       118
        !          41745: w      78      0       119
        !          41746: x      50      0       120
        !          41747: y      50      1       121
        !          41748: z      46      0       122
        !          41749: ct     56      3       162
        !          41750: fi     61      3       174
        !          41751: fl     61      3       175
        !          41752: dg     50      3       178
        !          41753: bu     61      0       183
        !          41754: de     33      2       202
        !          41755: em     100     0       208
        !          41756: 14     75      2       1
        !          41757: 34     75      2       1
        !          41758: 12     75      2       1
        !          41759: ``     39      2       170
        !          41760: ''     39      2       186
        !          41761: 0707070014230362231006440057030057030000011043720522627502500002500000002046post.src/devopost/NR# NewCenturySchlbk-Roman
        !          41762: name NR
        !          41763: internalname 29
        !          41764: ligatures fi fl 0
        !          41765: charset
        !          41766: !      30      2       33
        !          41767: $      56      3       36
        !          41768: %      83      2       37
        !          41769: &      81      2       38
        !          41770: '      20      2       39
        !          41771: (      33      3       40
        !          41772: )      33      3       41
        !          41773: *      50      2       42
        !          41774: +      61      0       43
        !          41775: ,      28      1       44
        !          41776: hy     33      0       45
        !          41777: -      "
        !          41778: .      28      0       46
        !          41779: /      28      2       47
        !          41780: 0      56      2       48
        !          41781: 1      56      2       49
        !          41782: 2      56      2       50
        !          41783: 3      56      2       51
        !          41784: 4      56      2       52
        !          41785: 5      56      2       53
        !          41786: 6      56      2       54
        !          41787: 7      56      2       55
        !          41788: 8      56      2       56
        !          41789: 9      56      2       57
        !          41790: :      28      0       58
        !          41791: ;      28      1       59
        !          41792: =      61      0       61
        !          41793: ?      44      2       63
        !          41794: A      72      2       65
        !          41795: B      72      2       66
        !          41796: C      72      2       67
        !          41797: D      78      2       68
        !          41798: E      72      2       69
        !          41799: F      67      2       70
        !          41800: G      78      2       71
        !          41801: H      83      2       72
        !          41802: I      41      2       73
        !          41803: J      56      2       74
        !          41804: K      78      2       75
        !          41805: L      67      2       76
        !          41806: M      94      2       77
        !          41807: N      81      2       78
        !          41808: O      78      2       79
        !          41809: P      67      2       80
        !          41810: Q      78      3       81
        !          41811: R      72      2       82
        !          41812: S      63      2       83
        !          41813: T      67      2       84
        !          41814: U      81      2       85
        !          41815: V      72      2       86
        !          41816: W      98      2       87
        !          41817: X      70      2       88
        !          41818: Y      70      2       89
        !          41819: Z      61      2       90
        !          41820: [      33      3       91
        !          41821: ]      33      3       93
        !          41822: `      20      2       96
        !          41823: a      56      0       97
        !          41824: b      56      2       98
        !          41825: c      44      0       99
        !          41826: d      57      2       100
        !          41827: e      50      0       101
        !          41828: f      33      2       102
        !          41829: g      54      1       103
        !          41830: h      61      2       104
        !          41831: i      32      2       105
        !          41832: j      30      3       106
        !          41833: k      59      2       107
        !          41834: l      32      2       108
        !          41835: m      89      0       109
        !          41836: n      61      0       110
        !          41837: o      50      0       111
        !          41838: p      57      1       112
        !          41839: q      56      1       113
        !          41840: r      44      0       114
        !          41841: s      46      0       115
        !          41842: t      39      2       116
        !          41843: u      61      0       117
        !          41844: v      54      0       118
        !          41845: w      78      0       119
        !          41846: x      54      0       120
        !          41847: y      54      1       121
        !          41848: z      48      0       122
        !          41849: ct     56      3       162
        !          41850: fi     61      2       174
        !          41851: fl     61      2       175
        !          41852: dg     50      3       178
        !          41853: bu     61      2       183
        !          41854: de     33      2       202
        !          41855: em     100     0       208
        !          41856: 14     75      2       1
        !          41857: 34     75      2       1
        !          41858: 12     75      2       1
        !          41859: ``     39      2       170
        !          41860: ''     39      2       186
        !          41861: 0707070014230362241006440057030057030000011043740522627502500002500000002053post.src/devopost/NX# NewCenturySchlbk-BoldItalic
        !          41862: name NX
        !          41863: internalname 32
        !          41864: ligatures fi fl 0
        !          41865: charset
        !          41866: !      33      2       33
        !          41867: $      57      3       36
        !          41868: %      89      2       37
        !          41869: &      89      2       38
        !          41870: '      26      2       39
        !          41871: (      41      3       40
        !          41872: )      41      3       41
        !          41873: *      50      2       42
        !          41874: +      61      0       43
        !          41875: ,      29      1       44
        !          41876: hy     33      0       45
        !          41877: -      "
        !          41878: .      29      0       46
        !          41879: /      28      2       47
        !          41880: 0      57      2       48
        !          41881: 1      57      2       49
        !          41882: 2      57      2       50
        !          41883: 3      57      2       51
        !          41884: 4      57      2       52
        !          41885: 5      57      2       53
        !          41886: 6      57      2       54
        !          41887: 7      57      2       55
        !          41888: 8      57      2       56
        !          41889: 9      57      2       57
        !          41890: :      29      0       58
        !          41891: ;      29      1       59
        !          41892: =      61      0       61
        !          41893: ?      48      2       63
        !          41894: A      74      2       65
        !          41895: B      76      2       66
        !          41896: C      76      2       67
        !          41897: D      83      2       68
        !          41898: E      74      2       69
        !          41899: F      70      2       70
        !          41900: G      81      2       71
        !          41901: H      87      2       72
        !          41902: I      44      2       73
        !          41903: J      67      2       74
        !          41904: K      78      2       75
        !          41905: L      70      2       76
        !          41906: M      94      2       77
        !          41907: N      85      2       78
        !          41908: O      83      2       79
        !          41909: P      74      2       80
        !          41910: Q      83      3       81
        !          41911: R      80      2       82
        !          41912: S      69      2       83
        !          41913: T      72      2       84
        !          41914: U      83      2       85
        !          41915: V      74      2       86
        !          41916: W      94      2       87
        !          41917: X      74      2       88
        !          41918: Y      70      2       89
        !          41919: Z      70      2       90
        !          41920: [      41      3       91
        !          41921: ]      41      3       93
        !          41922: `      26      2       96
        !          41923: a      67      0       97
        !          41924: b      61      2       98
        !          41925: c      54      0       99
        !          41926: d      67      2       100
        !          41927: e      52      0       101
        !          41928: f      39      3       102
        !          41929: g      61      1       103
        !          41930: h      69      2       104
        !          41931: i      39      2       105
        !          41932: j      37      3       106
        !          41933: k      65      2       107
        !          41934: l      39      2       108
        !          41935: m      94      0       109
        !          41936: n      69      0       110
        !          41937: o      57      0       111
        !          41938: p      65      1       112
        !          41939: q      63      1       113
        !          41940: r      52      0       114
        !          41941: s      48      0       115
        !          41942: t      41      2       116
        !          41943: u      69      0       117
        !          41944: v      56      0       118
        !          41945: w      83      0       119
        !          41946: x      57      0       120
        !          41947: y      52      1       121
        !          41948: z      52      0       122
        !          41949: ct     57      3       162
        !          41950: fi     69      3       174
        !          41951: fl     69      3       175
        !          41952: dg     50      3       178
        !          41953: bu     61      0       183
        !          41954: de     33      2       202
        !          41955: em     100     0       208
        !          41956: 14     75      2       1
        !          41957: 34     75      2       1
        !          41958: 12     75      2       1
        !          41959: ``     48      2       170
        !          41960: ''     48      2       186
        !          41961: 0707070014230362251006440057030057030000011043760522627502500002500000002037post.src/devopost/PA# Palatino-Roman
        !          41962: name PA
        !          41963: internalname 13
        !          41964: ligatures fi fl 0
        !          41965: charset
        !          41966: !      28      2       33
        !          41967: $      50      2       36
        !          41968: %      84      2       37
        !          41969: &      78      2       38
        !          41970: '      28      2       39
        !          41971: (      33      2       40
        !          41972: )      33      2       41
        !          41973: *      39      2       42
        !          41974: +      61      0       43
        !          41975: ,      25      1       44
        !          41976: hy     33      0       45
        !          41977: -      "
        !          41978: .      25      0       46
        !          41979: /      61      2       47
        !          41980: 0      50      2       48
        !          41981: 1      50      2       49
        !          41982: 2      50      2       50
        !          41983: 3      50      2       51
        !          41984: 4      50      2       52
        !          41985: 5      50      2       53
        !          41986: 6      50      2       54
        !          41987: 7      50      2       55
        !          41988: 8      50      2       56
        !          41989: 9      50      2       57
        !          41990: :      25      0       58
        !          41991: ;      25      1       59
        !          41992: =      61      0       61
        !          41993: ?      44      2       63
        !          41994: A      78      2       65
        !          41995: B      61      2       66
        !          41996: C      71      2       67
        !          41997: D      77      2       68
        !          41998: E      61      2       69
        !          41999: F      56      2       70
        !          42000: G      76      2       71
        !          42001: H      83      2       72
        !          42002: I      34      2       73
        !          42003: J      33      3       74
        !          42004: K      73      2       75
        !          42005: L      61      2       76
        !          42006: M      95      2       77
        !          42007: N      83      2       78
        !          42008: O      79      2       79
        !          42009: P      60      2       80
        !          42010: Q      79      3       81
        !          42011: R      67      2       82
        !          42012: S      53      2       83
        !          42013: T      61      2       84
        !          42014: U      78      2       85
        !          42015: V      72      2       86
        !          42016: W      100     2       87
        !          42017: X      67      2       88
        !          42018: Y      67      2       89
        !          42019: Z      67      2       90
        !          42020: [      33      2       91
        !          42021: ]      33      2       93
        !          42022: `      28      2       96
        !          42023: a      50      0       97
        !          42024: b      55      2       98
        !          42025: c      44      0       99
        !          42026: d      61      2       100
        !          42027: e      48      0       101
        !          42028: f      33      2       102
        !          42029: g      56      1       103
        !          42030: h      58      2       104
        !          42031: i      29      2       105
        !          42032: j      23      3       106
        !          42033: k      56      2       107
        !          42034: l      29      2       108
        !          42035: m      88      0       109
        !          42036: n      58      0       110
        !          42037: o      55      0       111
        !          42038: p      60      1       112
        !          42039: q      56      1       113
        !          42040: r      40      0       114
        !          42041: s      42      0       115
        !          42042: t      33      2       116
        !          42043: u      60      0       117
        !          42044: v      56      0       118
        !          42045: w      83      0       119
        !          42046: x      52      0       120
        !          42047: y      56      1       121
        !          42048: z      50      0       122
        !          42049: ct     50      0       162
        !          42050: fi     61      2       174
        !          42051: fl     61      2       175
        !          42052: dg     50      2       178
        !          42053: bu     61      0       183
        !          42054: de     33      2       202
        !          42055: em     100     0       208
        !          42056: 14     75      2       1
        !          42057: 34     75      2       1
        !          42058: 12     75      2       1
        !          42059: ``     50      2       170
        !          42060: ''     50      2       186
        !          42061: 0707070014230362261006440057030057030000011044100522627502500002500000002037post.src/devopost/PB# Palatino-Bold
        !          42062: name PB
        !          42063: internalname 15
        !          42064: ligatures fi fl 0
        !          42065: charset
        !          42066: !      28      2       33
        !          42067: $      50      2       36
        !          42068: %      89      2       37
        !          42069: &      83      2       38
        !          42070: '      28      2       39
        !          42071: (      33      2       40
        !          42072: )      33      2       41
        !          42073: *      44      2       42
        !          42074: +      61      0       43
        !          42075: ,      25      1       44
        !          42076: hy     33      0       45
        !          42077: -      "
        !          42078: .      25      0       46
        !          42079: /      30      2       47
        !          42080: 0      50      2       48
        !          42081: 1      50      2       49
        !          42082: 2      50      2       50
        !          42083: 3      50      2       51
        !          42084: 4      50      2       52
        !          42085: 5      50      2       53
        !          42086: 6      50      2       54
        !          42087: 7      50      2       55
        !          42088: 8      50      2       56
        !          42089: 9      50      2       57
        !          42090: :      25      0       58
        !          42091: ;      25      1       59
        !          42092: =      61      0       61
        !          42093: ?      44      2       63
        !          42094: A      78      2       65
        !          42095: B      67      2       66
        !          42096: C      72      2       67
        !          42097: D      83      2       68
        !          42098: E      61      2       69
        !          42099: F      56      2       70
        !          42100: G      83      2       71
        !          42101: H      83      2       72
        !          42102: I      39      2       73
        !          42103: J      39      3       74
        !          42104: K      78      2       75
        !          42105: L      61      2       76
        !          42106: M      100     2       77
        !          42107: N      83      2       78
        !          42108: O      83      2       79
        !          42109: P      61      2       80
        !          42110: Q      83      3       81
        !          42111: R      72      2       82
        !          42112: S      61      2       83
        !          42113: T      67      2       84
        !          42114: U      78      2       85
        !          42115: V      78      2       86
        !          42116: W      100     2       87
        !          42117: X      67      2       88
        !          42118: Y      67      2       89
        !          42119: Z      67      2       90
        !          42120: [      33      2       91
        !          42121: ]      33      2       93
        !          42122: `      28      2       96
        !          42123: a      50      0       97
        !          42124: b      61      2       98
        !          42125: c      44      0       99
        !          42126: d      61      2       100
        !          42127: e      50      0       101
        !          42128: f      39      2       102
        !          42129: g      56      1       103
        !          42130: h      61      2       104
        !          42131: i      33      2       105
        !          42132: j      33      3       106
        !          42133: k      61      2       107
        !          42134: l      33      2       108
        !          42135: m      89      0       109
        !          42136: n      61      0       110
        !          42137: o      56      0       111
        !          42138: p      61      1       112
        !          42139: q      61      1       113
        !          42140: r      39      0       114
        !          42141: s      44      0       115
        !          42142: t      33      2       116
        !          42143: u      61      0       117
        !          42144: v      56      0       118
        !          42145: w      83      0       119
        !          42146: x      50      0       120
        !          42147: y      56      1       121
        !          42148: z      50      0       122
        !          42149: ct     50      0       162
        !          42150: fi     61      2       174
        !          42151: fl     61      2       175
        !          42152: dg     50      2       178
        !          42153: bu     61      0       183
        !          42154: de     33      2       202
        !          42155: em     100     0       208
        !          42156: 14     75      2       1
        !          42157: 34     75      2       1
        !          42158: 12     75      2       1
        !          42159: ``     50      2       170
        !          42160: ''     50      2       186
        !          42161: 0707070014230362271006440057030057030000011044120522627502500002500000002037post.src/devopost/PI# Palatino-Italic
        !          42162: name PI
        !          42163: internalname 14
        !          42164: ligatures fi fl 0
        !          42165: charset
        !          42166: !      33      2       33
        !          42167: $      50      2       36
        !          42168: %      89      2       37
        !          42169: &      78      2       38
        !          42170: '      28      2       39
        !          42171: (      33      2       40
        !          42172: )      33      2       41
        !          42173: *      39      2       42
        !          42174: +      61      0       43
        !          42175: ,      25      1       44
        !          42176: hy     33      0       45
        !          42177: -      "
        !          42178: .      25      0       46
        !          42179: /      30      3       47
        !          42180: 0      50      2       48
        !          42181: 1      50      2       49
        !          42182: 2      50      2       50
        !          42183: 3      50      2       51
        !          42184: 4      50      2       52
        !          42185: 5      50      2       53
        !          42186: 6      50      2       54
        !          42187: 7      50      2       55
        !          42188: 8      50      2       56
        !          42189: 9      50      2       57
        !          42190: :      25      0       58
        !          42191: ;      25      1       59
        !          42192: =      61      0       61
        !          42193: ?      50      2       63
        !          42194: A      72      2       65
        !          42195: B      61      2       66
        !          42196: C      67      2       67
        !          42197: D      78      2       68
        !          42198: E      61      2       69
        !          42199: F      56      2       70
        !          42200: G      72      2       71
        !          42201: H      78      2       72
        !          42202: I      33      2       73
        !          42203: J      33      3       74
        !          42204: K      67      2       75
        !          42205: L      56      2       76
        !          42206: M      94      2       77
        !          42207: N      78      2       78
        !          42208: O      78      2       79
        !          42209: P      61      2       80
        !          42210: Q      78      3       81
        !          42211: R      67      2       82
        !          42212: S      56      2       83
        !          42213: T      61      2       84
        !          42214: U      78      2       85
        !          42215: V      72      2       86
        !          42216: W      94      2       87
        !          42217: X      72      2       88
        !          42218: Y      67      2       89
        !          42219: Z      67      2       90
        !          42220: [      33      2       91
        !          42221: ]      33      2       93
        !          42222: `      28      2       96
        !          42223: a      44      0       97
        !          42224: b      46      2       98
        !          42225: c      41      0       99
        !          42226: d      50      2       100
        !          42227: e      39      0       101
        !          42228: f      28      3       102
        !          42229: g      50      1       103
        !          42230: h      50      2       104
        !          42231: i      28      2       105
        !          42232: j      28      3       106
        !          42233: k      44      2       107
        !          42234: l      28      2       108
        !          42235: m      78      0       109
        !          42236: n      56      0       110
        !          42237: o      44      0       111
        !          42238: p      50      1       112
        !          42239: q      46      1       113
        !          42240: r      39      0       114
        !          42241: s      39      0       115
        !          42242: t      33      2       116
        !          42243: u      56      0       117
        !          42244: v      50      0       118
        !          42245: w      72      0       119
        !          42246: x      50      0       120
        !          42247: y      50      1       121
        !          42248: z      44      0       122
        !          42249: ct     50      0       162
        !          42250: fi     53      3       174
        !          42251: fl     54      3       175
        !          42252: dg     50      2       178
        !          42253: bu     50      0       183
        !          42254: de     33      2       202
        !          42255: em     100     0       208
        !          42256: 14     75      2       1
        !          42257: 34     75      2       1
        !          42258: 12     75      2       1
        !          42259: ``     50      2       170
        !          42260: ''     50      2       186
        !          42261: 0707070014230362301006440057030057030000011044140522627502500002500000002044post.src/devopost/PX# Palatino-BoldItalic
        !          42262: name PX
        !          42263: internalname 16
        !          42264: ligatures fi fl 0
        !          42265: charset
        !          42266: !      33      2       33
        !          42267: $      50      2       36
        !          42268: %      89      2       37
        !          42269: &      83      2       38
        !          42270: '      28      2       39
        !          42271: (      33      2       40
        !          42272: )      33      2       41
        !          42273: *      44      2       42
        !          42274: +      61      0       43
        !          42275: ,      25      1       44
        !          42276: hy     39      0       45
        !          42277: -      "
        !          42278: .      25      0       46
        !          42279: /      32      2       47
        !          42280: 0      50      2       48
        !          42281: 1      50      2       49
        !          42282: 2      50      2       50
        !          42283: 3      50      2       51
        !          42284: 4      50      2       52
        !          42285: 5      50      2       53
        !          42286: 6      50      2       54
        !          42287: 7      50      2       55
        !          42288: 8      50      2       56
        !          42289: 9      50      2       57
        !          42290: :      25      0       58
        !          42291: ;      25      1       59
        !          42292: =      61      0       61
        !          42293: ?      44      2       63
        !          42294: A      72      2       65
        !          42295: B      67      2       66
        !          42296: C      69      2       67
        !          42297: D      78      2       68
        !          42298: E      61      2       69
        !          42299: F      56      2       70
        !          42300: G      78      2       71
        !          42301: H      78      2       72
        !          42302: I      39      2       73
        !          42303: J      39      3       74
        !          42304: K      72      2       75
        !          42305: L      61      2       76
        !          42306: M      94      2       77
        !          42307: N      78      2       78
        !          42308: O      83      2       79
        !          42309: P      67      2       80
        !          42310: Q      83      3       81
        !          42311: R      72      2       82
        !          42312: S      56      2       83
        !          42313: T      61      2       84
        !          42314: U      78      2       85
        !          42315: V      67      2       86
        !          42316: W      100     2       87
        !          42317: X      72      2       88
        !          42318: Y      61      2       89
        !          42319: Z      67      2       90
        !          42320: [      33      2       91
        !          42321: ]      33      2       93
        !          42322: `      28      2       96
        !          42323: a      56      0       97
        !          42324: b      54      2       98
        !          42325: c      44      0       99
        !          42326: d      56      2       100
        !          42327: e      44      0       101
        !          42328: f      33      3       102
        !          42329: g      50      1       103
        !          42330: h      56      2       104
        !          42331: i      33      2       105
        !          42332: j      33      3       106
        !          42333: k      56      2       107
        !          42334: l      33      2       108
        !          42335: m      83      0       109
        !          42336: n      56      0       110
        !          42337: o      56      0       111
        !          42338: p      56      1       112
        !          42339: q      54      1       113
        !          42340: r      39      0       114
        !          42341: s      44      0       115
        !          42342: t      39      2       116
        !          42343: u      56      0       117
        !          42344: v      56      0       118
        !          42345: w      83      0       119
        !          42346: x      50      0       120
        !          42347: y      56      1       121
        !          42348: z      50      0       122
        !          42349: ct     50      0       162
        !          42350: fi     61      3       174
        !          42351: fl     61      3       175
        !          42352: dg     56      2       178
        !          42353: bu     61      0       183
        !          42354: de     56      2       202
        !          42355: em     100     0       208
        !          42356: 14     75      2       1
        !          42357: 34     75      2       1
        !          42358: 12     75      2       1
        !          42359: ``     50      2       170
        !          42360: ''     50      2       186
        !          42361: 0707070014230362311006440057030057030000011044160522627502500002400000002101post.src/devopost/R# Times-Roman
        !          42362: name R
        !          42363: internalname 1
        !          42364: ligatures fi fl 0
        !          42365: charset
        !          42366: !      33      2       33
        !          42367: $      50      2       36
        !          42368: %      83      2       37
        !          42369: &      78      2       38
        !          42370: '      33      2       39
        !          42371: (      33      3       40
        !          42372: )      33      3       41
        !          42373: *      50      2       42
        !          42374: +      56      0       43
        !          42375: ,      25      1       44
        !          42376: hy     33      0       45
        !          42377: -      "
        !          42378: .      25      0       46
        !          42379: /      28      2       47
        !          42380: 0      50      2       48
        !          42381: 1      50      2       49
        !          42382: 2      50      2       50
        !          42383: 3      50      2       51
        !          42384: 4      50      2       52
        !          42385: 5      50      2       53
        !          42386: 6      50      2       54
        !          42387: 7      50      2       55
        !          42388: 8      50      2       56
        !          42389: 9      50      2       57
        !          42390: :      28      0       58
        !          42391: ;      28      1       59
        !          42392: =      56      0       61
        !          42393: ?      44      2       63
        !          42394: A      72      2       65
        !          42395: B      67      2       66
        !          42396: C      67      2       67
        !          42397: D      72      2       68
        !          42398: E      61      2       69
        !          42399: F      56      2       70
        !          42400: G      72      2       71
        !          42401: H      72      2       72
        !          42402: I      33      2       73
        !          42403: J      39      2       74
        !          42404: K      72      2       75
        !          42405: L      61      2       76
        !          42406: M      89      2       77
        !          42407: N      72      2       78
        !          42408: O      72      2       79
        !          42409: P      56      2       80
        !          42410: Q      72      3       81
        !          42411: R      67      2       82
        !          42412: S      56      2       83
        !          42413: T      61      2       84
        !          42414: U      72      2       85
        !          42415: V      72      2       86
        !          42416: W      94      2       87
        !          42417: X      72      2       88
        !          42418: Y      72      2       89
        !          42419: Z      61      2       90
        !          42420: [      33      3       91
        !          42421: ]      33      3       93
        !          42422: `      33      2       96
        !          42423: a      44      0       97
        !          42424: b      50      2       98
        !          42425: c      44      0       99
        !          42426: d      50      2       100
        !          42427: e      44      0       101
        !          42428: f      33      2       102
        !          42429: g      50      1       103
        !          42430: h      50      2       104
        !          42431: i      28      2       105
        !          42432: j      28      3       106
        !          42433: k      50      2       107
        !          42434: l      28      2       108
        !          42435: m      78      0       109
        !          42436: n      50      0       110
        !          42437: o      50      0       111
        !          42438: p      50      1       112
        !          42439: q      50      1       113
        !          42440: r      33      0       114
        !          42441: s      39      0       115
        !          42442: t      28      2       116
        !          42443: u      50      0       117
        !          42444: v      50      0       118
        !          42445: w      72      0       119
        !          42446: x      50      0       120
        !          42447: y      50      1       121
        !          42448: z      44      0       122
        !          42449: ct     50      3       162
        !          42450: fi     56      2       174
        !          42451: fl     56      2       175
        !          42452: ff     60      2       1
        !          42453: Fi     84      2       1
        !          42454: Fl     84      2       1
        !          42455: dg     50      3       178
        !          42456: bu     35      0       183
        !          42457: de     33      2       202
        !          42458: em     100     0       208
        !          42459: 14     75      2       1
        !          42460: 34     75      2       1
        !          42461: 12     75      2       1
        !          42462: sq     50      2       1
        !          42463: ``     44      2       170
        !          42464: ''     44      2       186
        !          42465: 0707070014230362321006440057030057030000011044300522627502500002400000004600post.src/devopost/S# Symbol
        !          42466: name S
        !          42467: internalname 33
        !          42468: special
        !          42469: charset
        !          42470: bx     50      2       1
        !          42471: ci     75      0       1
        !          42472: sq     50      2       1
        !          42473: ~=     55      0       1
        !          42474: L1     110     1       2
        !          42475: LA     110     1       2
        !          42476: LV     110     3       2
        !          42477: LH     210     1       2
        !          42478: Lb     "
        !          42479: lh     100     0       2
        !          42480: rh     100     0       2
        !          42481: ---    25      0       32
        !          42482: ---    33      2       33
        !          42483: fa     71      2       34
        !          42484: ---    50      2       35
        !          42485: te     55      2       36
        !          42486: ---    83      2       37
        !          42487: ---    78      2       38
        !          42488: ---    44      0       39
        !          42489: ---    33      3       40
        !          42490: ---    33      3       41
        !          42491: **     50      0       42
        !          42492: pl     55      0       43
        !          42493: ---    25      1       44
        !          42494: mi     55      0       45
        !          42495: ---    25      0       46
        !          42496: ---    28      2       47
        !          42497: ---    50      2       48
        !          42498: ---    50      2       49
        !          42499: ---    50      2       50
        !          42500: ---    50      2       51
        !          42501: ---    50      2       52
        !          42502: ---    50      2       53
        !          42503: ---    50      2       54
        !          42504: ---    50      2       55
        !          42505: ---    50      2       56
        !          42506: ---    50      2       57
        !          42507: ---    28      0       58
        !          42508: ---    28      1       59
        !          42509: <      55      0       60
        !          42510: eq     55      0       61
        !          42511: >      55      0       62
        !          42512: ---    44      2       63
        !          42513: *A     72      2       65
        !          42514: *B     67      2       66
        !          42515: *X     72      2       67
        !          42516: *D     61      2       68
        !          42517: *E     61      2       69
        !          42518: *F     76      2       70
        !          42519: *G     60      2       71
        !          42520: *Y     72      2       72
        !          42521: *I     33      2       73
        !          42522: ---    63      2       74
        !          42523: *K     72      2       75
        !          42524: *L     69      2       76
        !          42525: *M     89      2       77
        !          42526: *N     72      2       78
        !          42527: *O     72      2       79
        !          42528: *P     77      2       80
        !          42529: *H     74      2       81
        !          42530: *R     56      2       82
        !          42531: *S     59      2       83
        !          42532: *T     61      2       84
        !          42533: *U     69      2       85
        !          42534: ---    44      1       86
        !          42535: ts     44      1       86
        !          42536: *W     77      2       87
        !          42537: *C     65      2       88
        !          42538: *Q     80      2       89
        !          42539: *Z     61      2       90
        !          42540: ---    33      3       91
        !          42541: ---    86      0       92
        !          42542: ---    33      3       93
        !          42543: ---    66      2       94
        !          42544: ul     50      1       95
        !          42545: _      "
        !          42546: rn     50      2       96
        !          42547: *a     63      0       97
        !          42548: *b     55      3       98
        !          42549: *x     55      1       99
        !          42550: *d     49      2       100
        !          42551: *e     44      0       101
        !          42552: *f     52      3       102
        !          42553: *g     41      1       103
        !          42554: *y     60      1       104
        !          42555: *i     33      0       105
        !          42556: ---    60      1       106
        !          42557: *k     55      0       107
        !          42558: *l     55      2       108
        !          42559: *m     58      1       109
        !          42560: *n     52      0       110
        !          42561: *o     55      0       111
        !          42562: *p     55      0       112
        !          42563: *h     52      2       113
        !          42564: *r     55      1       114
        !          42565: *s     60      0       115
        !          42566: *t     44      0       116
        !          42567: *u     58      0       117
        !          42568: ---    71      2       118
        !          42569: *w     69      0       119
        !          42570: *c     49      3       120
        !          42571: *q     69      1       121
        !          42572: *z     49      3       122
        !          42573: {      48      3       123
        !          42574: or     20      3       124
        !          42575: }      48      3       125
        !          42576: ap     55      0       126
        !          42577: ---    62      2       161
        !          42578: fm     25      2       162
        !          42579: <=     55      2       163
        !          42580: sl     17      2       164
        !          42581: if     73      0       165
        !          42582: ---    50      3       166
        !          42583: ---    75      0       167
        !          42584: ---    75      0       168
        !          42585: ---    75      0       169
        !          42586: ---    75      0       170
        !          42587: ---    104     0       171
        !          42588: <-     99      0       172
        !          42589: ua     60      2       173
        !          42590: ->     99      0       174
        !          42591: da     60      2       175
        !          42592: de     40      2       176
        !          42593: +-     55      2       177
        !          42594: ---    41      2       178
        !          42595: >=     55      2       179
        !          42596: mu     55      0       180
        !          42597: pt     71      0       181
        !          42598: pd     49      2       182
        !          42599: bu     46      0       183
        !          42600: di     55      0       184
        !          42601: !=     55      0       185
        !          42602: ==     55      0       186
        !          42603: ~~     55      0       187
        !          42604: ---    100     0       188
        !          42605: ---    60      3       189
        !          42606: ---    100     0       190
        !          42607: ---    66      2       191
        !          42608: al     82      2       192
        !          42609: ---    69      2       193
        !          42610: ---    80      2       194
        !          42611: ---    99      3       195
        !          42612: Ox     77      2       196
        !          42613: O+     77      2       197
        !          42614: es     82      2       198
        !          42615: ca     77      0       199
        !          42616: cu     77      0       200
        !          42617: sp     71      0       201
        !          42618: ip     71      1       202
        !          42619: ---    71      0       203
        !          42620: sb     71      0       204
        !          42621: ib     71      1       205
        !          42622: mo     71      0       206
        !          42623: ---    71      0       207
        !          42624: ---    77      2       208
        !          42625: gr     71      2       209
        !          42626: rg     79      2       210
        !          42627: co     79      2       211
        !          42628: tm     89      2       212
        !          42629: ---    82      2       213
        !          42630: sr     55      2       214
        !          42631: ---    25      0       215
        !          42632: no     71      0       216
        !          42633: ^      60      0       217
        !          42634: or     60      0       218
        !          42635: ---    104     0       219
        !          42636: ---    99      0       220
        !          42637: ---    60      2       221
        !          42638: ---    99      0       222
        !          42639: ---    60      2       223
        !          42640: ---    49      2       224
        !          42641: ---    33      3       225
        !          42642: ---    79      2       226
        !          42643: ---    79      2       227
        !          42644: ---    79      2       228
        !          42645: ---    71      2       229
        !          42646: ---    38      3       230
        !          42647: br     0       3       231
        !          42648: ---    38      3       232
        !          42649: lc     50      2       233
        !          42650: vr     0       2       234
        !          42651: lf     50      2       235
        !          42652: lt     49      2       236
        !          42653: lk     49      2       237
        !          42654: lb     49      2       238
        !          42655: bv     49      2       239
        !          42656: ---    25      0       240
        !          42657: ---    33      3       241
        !          42658: is     50      3       242
        !          42659: ---    69      2       243
        !          42660: ---    69      2       244
        !          42661: ---    69      2       245
        !          42662: ---    38      3       246
        !          42663: ---    38      2       247
        !          42664: ---    38      3       248
        !          42665: rc     38      2       249
        !          42666: |      50      3       250
        !          42667: rf     38      2       251
        !          42668: rt     49      2       252
        !          42669: rk     49      2       253
        !          42670: rb     49      2       254
        !          42671: 0707070014230362331006440057030057030000011042570522627502500002500000000530post.src/devopost/S1# Times-Roman special font
        !          42672: name S1
        !          42673: internalname 1
        !          42674: special
        !          42675: charset
        !          42676: "      41      2       34
        !          42677: #      50      2       35
        !          42678: <      56      0       60
        !          42679: >      56      0       62
        !          42680: @      92      3       64
        !          42681: \      28      2       92
        !          42682: or     20      2       124
        !          42683: ^      33      2       195
        !          42684: ~      33      2       196
        !          42685: \'     33      2       194
        !          42686: aa     "
        !          42687: \`     33      2       193
        !          42688: ga     "
        !          42689: ru     50      0       95
        !          42690: \-     65      0       177
        !          42691: en     "
        !          42692: sc     50      3       167
        !          42693: dg     50      3       178
        !          42694: dd     50      3       179
        !          42695: ct     50      3       162
        !          42696: 14     75      2       1
        !          42697: 34     75      2       1
        !          42698: 12     75      2       1
        !          42699: Sl     50      2       1
        !          42700: ob     38      0       1
        !          42701: ``     44      2       170
        !          42702: ''     44      2       186
        !          42703: 0707070014230362341006440057030057030000011044330522627502500002500000004145post.src/devopost/ZD# ZapfDingbats
        !          42704: name ZD
        !          42705: internalname 36
        !          42706: ligatures fi fl 0
        !          42707: charset
        !          42708: !      97      2       33
        !          42709: "      96      2       34
        !          42710: #      97      2       35
        !          42711: $      98      3       36
        !          42712: %      72      2       37
        !          42713: &      79      3       38
        !          42714: '      79      3       39
        !          42715: (      79      3       40
        !          42716: )      69      2       41
        !          42717: *      96      2       42
        !          42718: +      94      2       43
        !          42719: ,      55      3       44
        !          42720: -      86      2       45
        !          42721: .      91      2       46
        !          42722: /      93      2       47
        !          42723: 0      91      2       48
        !          42724: 1      94      2       49
        !          42725: 2      97      2       50
        !          42726: 3      76      3       51
        !          42727: 4      85      3       52
        !          42728: 5      76      2       53
        !          42729: 6      76      2       54
        !          42730: 7      57      3       55
        !          42731: 8      68      3       56
        !          42732: 9      76      2       57
        !          42733: :      76      2       58
        !          42734: ;      76      2       59
        !          42735: <      75      3       60
        !          42736: =      49      2       61
        !          42737: >      55      2       62
        !          42738: ?      54      3       63
        !          42739: @      58      2       64
        !          42740: A      69      3       65
        !          42741: B      79      3       66
        !          42742: C      79      3       67
        !          42743: D      79      3       68
        !          42744: E      79      3       69
        !          42745: F      79      3       70
        !          42746: G      79      3       71
        !          42747: H      82      3       72
        !          42748: I      82      3       73
        !          42749: J      79      3       74
        !          42750: K      84      3       75
        !          42751: L      82      3       76
        !          42752: M      83      3       77
        !          42753: N      82      3       78
        !          42754: O      83      3       79
        !          42755: P      92      3       80
        !          42756: Q      74      2       81
        !          42757: R      72      2       82
        !          42758: S      75      2       83
        !          42759: T      79      3       84
        !          42760: U      79      3       85
        !          42761: V      69      3       86
        !          42762: W      78      3       87
        !          42763: X      77      3       88
        !          42764: Y      79      3       89
        !          42765: Z      76      2       90
        !          42766: [      71      3       91
        !          42767: \      71      3       92
        !          42768: ]      68      3       93
        !          42769: ^      70      3       94
        !          42770: _      83      3       95
        !          42771: `      81      3       96
        !          42772: a      79      3       97
        !          42773: b      79      3       98
        !          42774: c      71      3       99
        !          42775: d      69      2       100
        !          42776: e      70      2       101
        !          42777: f      69      2       102
        !          42778: g      79      3       103
        !          42779: h      79      3       104
        !          42780: i      71      3       105
        !          42781: j      79      3       106
        !          42782: k      78      3       107
        !          42783: l      79      3       108
        !          42784: m      87      3       109
        !          42785: n      76      2       110
        !          42786: o      76      2       111
        !          42787: p      76      2       112
        !          42788: q      76      3       113
        !          42789: r      76      3       114
        !          42790: s      89      2       115
        !          42791: t      89      3       116
        !          42792: u      79      3       117
        !          42793: v      78      3       118
        !          42794: w      44      3       119
        !          42795: x      14      2       120
        !          42796: y      28      2       121
        !          42797: z      41      2       122
        !          42798: {      39      2       123
        !          42799: |      39      2       124
        !          42800: }      67      2       125
        !          42801: ~      67      2       126
        !          42802: hy     73      3       161
        !          42803: em     54      3       162
        !          42804: de     54      3       163
        !          42805: \-     91      2       164
        !          42806: en     67      3       165
        !          42807: ff     76      3       166
        !          42808: fi     76      2       167
        !          42809: fl     78      2       168
        !          42810: Fi     60      3       169
        !          42811: Fl     69      3       170
        !          42812: fm     63      3       171
        !          42813: ru     79      3       172
        !          42814: dg     79      3       173
        !          42815: bu     79      3       174
        !          42816: 14     79      3       175
        !          42817: 34     79      3       176
        !          42818: 12     79      3       177
        !          42819: ct     79      3       178
        !          42820: rg     79      3       179
        !          42821: sq     79      3       180
        !          42822: sl     79      3       181
        !          42823: ul     79      3       182
        !          42824: or     79      3       183
        !          42825: no     79      3       184
        !          42826: ->     79      3       185
        !          42827: <-     79      3       186
        !          42828: da     79      3       187
        !          42829: lh     79      3       188
        !          42830: ua     79      3       189
        !          42831: \e     79      3       190
        !          42832: \'     79      3       191
        !          42833: aa     79      3       192
        !          42834: \`     79      3       193
        !          42835: ga     79      3       194
        !          42836: pl     79      3       195
        !          42837: mi     79      3       196
        !          42838: mu     79      3       197
        !          42839: di     79      3       198
        !          42840: eq     79      3       199
        !          42841: ==     79      3       200
        !          42842: >=     79      3       201
        !          42843: <=     79      3       202
        !          42844: !=     79      3       203
        !          42845: +-     79      3       204
        !          42846: -+     79      3       205
        !          42847: ap     79      3       206
        !          42848: ~=     79      3       207
        !          42849: gr     79      3       208
        !          42850: is     79      3       209
        !          42851: pd     79      3       210
        !          42852: if     79      3       211
        !          42853: sr     89      2       212
        !          42854: rn     84      2       213
        !          42855: sb     102     2       214
        !          42856: sp     46      3       215
        !          42857: cu     75      2       216
        !          42858: ca     92      2       217
        !          42859: ib     75      2       218
        !          42860: ip     92      2       219
        !          42861: mo     93      2       220
        !          42862: es     93      2       221
        !          42863: sc     93      2       222
        !          42864: dd     83      2       223
        !          42865: lc     87      2       224
        !          42866: rc     83      2       225
        !          42867: lf     92      2       226
        !          42868: rf     92      2       227
        !          42869: bv     92      2       228
        !          42870: **     93      2       229
        !          42871: br     93      2       230
        !          42872: ci     46      3       231
        !          42873: ts     88      2       232
        !          42874: co     84      2       233
        !          42875: lt     84      2       234
        !          42876: rt     87      2       235
        !          42877: lb     87      2       236
        !          42878: rb     70      2       237
        !          42879: lk     70      2       238
        !          42880: rk     87      2       239
        !          42881: rh     87      2       241
        !          42882: tm     76      2       242
        !          42883: Sl     95      2       243
        !          42884: ps     77      2       244
        !          42885: cs     86      2       245
        !          42886: cy     77      2       246
        !          42887: as     89      3       247
        !          42888: os     97      2       248
        !          42889: =.     89      3       249
        !          42890: ld     83      2       250
        !          42891: rd     87      2       251
        !          42892: le     93      2       252
        !          42893: ge     97      2       253
        !          42894: pp     92      2       254
        !          42895: 0707070014230362351006440057030057030000011044360522627502500002500000002051post.src/devopost/ZI# ZapfChancery-MediumItalic
        !          42896: name ZI
        !          42897: internalname 37
        !          42898: ligatures fi fl 0
        !          42899: charset
        !          42900: !      28      2       33
        !          42901: $      44      3       36
        !          42902: %      68      2       37
        !          42903: &      78      2       38
        !          42904: '      24      2       39
        !          42905: (      26      3       40
        !          42906: )      22      3       41
        !          42907: *      42      2       42
        !          42908: +      52      0       43
        !          42909: ,      22      0       44
        !          42910: hy     28      0       45
        !          42911: -      "
        !          42912: .      22      0       46
        !          42913: /      34      3       47
        !          42914: 0      44      2       48
        !          42915: 1      44      2       49
        !          42916: 2      44      2       50
        !          42917: 3      44      2       51
        !          42918: 4      44      2       52
        !          42919: 5      44      2       53
        !          42920: 6      44      2       54
        !          42921: 7      44      2       55
        !          42922: 8      44      2       56
        !          42923: 9      44      2       57
        !          42924: :      26      0       58
        !          42925: ;      24      0       59
        !          42926: =      52      0       61
        !          42927: ?      38      2       63
        !          42928: A      62      2       65
        !          42929: B      60      2       66
        !          42930: C      52      2       67
        !          42931: D      70      2       68
        !          42932: E      62      2       69
        !          42933: F      58      2       70
        !          42934: G      62      3       71
        !          42935: H      68      2       72
        !          42936: I      38      2       73
        !          42937: J      40      2       74
        !          42938: K      66      3       75
        !          42939: L      58      2       76
        !          42940: M      84      2       77
        !          42941: N      70      3       78
        !          42942: O      60      2       79
        !          42943: P      54      2       80
        !          42944: Q      60      3       81
        !          42945: R      60      3       82
        !          42946: S      46      2       83
        !          42947: T      50      2       84
        !          42948: U      74      2       85
        !          42949: V      64      2       86
        !          42950: W      88      2       87
        !          42951: X      56      2       88
        !          42952: Y      56      3       89
        !          42953: Z      62      2       90
        !          42954: [      24      3       91
        !          42955: ]      32      3       93
        !          42956: `      24      2       96
        !          42957: a      42      0       97
        !          42958: b      42      2       98
        !          42959: c      34      0       99
        !          42960: d      44      2       100
        !          42961: e      34      0       101
        !          42962: f      32      3       102
        !          42963: g      40      1       103
        !          42964: h      44      2       104
        !          42965: i      24      2       105
        !          42966: j      22      3       106
        !          42967: k      44      3       107
        !          42968: l      24      2       108
        !          42969: m      62      0       109
        !          42970: n      46      0       110
        !          42971: o      40      0       111
        !          42972: p      44      1       112
        !          42973: q      40      3       113
        !          42974: r      30      0       114
        !          42975: s      32      0       115
        !          42976: t      32      2       116
        !          42977: u      46      0       117
        !          42978: v      44      0       118
        !          42979: w      68      0       119
        !          42980: x      42      1       120
        !          42981: y      40      1       121
        !          42982: z      44      0       122
        !          42983: ct     44      2       162
        !          42984: fi     52      3       174
        !          42985: fl     52      3       175
        !          42986: dg     46      3       178
        !          42987: bu     60      2       183
        !          42988: de     30      2       202
        !          42989: em     100     0       208
        !          42990: 14     75      2       1
        !          42991: 34     75      2       1
        !          42992: 12     75      2       1
        !          42993: ``     34      2       170
        !          42994: ''     36      2       186
        !          42995: 0707070014230642310407550057030057030000021707770522627502700003200000000000post.src/devopost/charlib0707070014230642321006440057030057030000011704730522627502500003500000000421post.src/devopost/charlib/12/build_12 {
        !          42996:     pop
        !          42997:     /optsize ptsize def
        !          42998:     /osize size def
        !          42999:     /ofont font def
        !          43000: 
        !          43001:     optsize 2 div dup R exch R f
        !          43002:     0 size 2 mul 3 div dup neg exch 0 exch rmoveto
        !          43003: 
        !          43004:     (1) show
        !          43005:     rmoveto
        !          43006:     optsize R f
        !          43007:     (\244) show
        !          43008:     f
        !          43009:     (2) show
        !          43010: 
        !          43011:     optsize ofont f
        !          43012: } def
        !          43013: 0707070014230642331006440057030057030000011704740522627502500003500000000421post.src/devopost/charlib/14/build_14 {
        !          43014:     pop
        !          43015:     /optsize ptsize def
        !          43016:     /osize size def
        !          43017:     /ofont font def
        !          43018: 
        !          43019:     optsize 2 div dup R exch R f
        !          43020:     0 size 2 mul 3 div dup neg exch 0 exch rmoveto
        !          43021: 
        !          43022:     (1) show
        !          43023:     rmoveto
        !          43024:     optsize R f
        !          43025:     (\244) show
        !          43026:     f
        !          43027:     (4) show
        !          43028: 
        !          43029:     optsize ofont f
        !          43030: } def
        !          43031: 0707070014230642341006440057030057030000011704750522627502600003500000000421post.src/devopost/charlib/34/build_34 {
        !          43032:     pop
        !          43033:     /optsize ptsize def
        !          43034:     /osize size def
        !          43035:     /ofont font def
        !          43036: 
        !          43037:     optsize 2 div dup R exch R f
        !          43038:     0 size 2 mul 3 div dup neg exch 0 exch rmoveto
        !          43039: 
        !          43040:     (3) show
        !          43041:     rmoveto
        !          43042:     optsize R f
        !          43043:     (\244) show
        !          43044:     f
        !          43045:     (4) show
        !          43046: 
        !          43047:     optsize ofont f
        !          43048: } def
        !          43049: 0707070014230642351006440057030057030000011710100522627502600005000000004542post.src/devopost/charlib/BRACKETS_NOTE
        !          43050:  lc, rc, lf, and rf contain PostScript code that can be used to build the top
        !          43051:  and bottom bracket pieces used by eqn. The files are only used if the character
        !          43052:  code field in the S font file for lc, rc, lf, and rf is set to 1. A code larger
        !          43053:  than 32 means a character from Adobe's Symbol font will be used. Think the real
        !          43054:  solution is to change eqn so large brackets and braces are built differently.
        !          43055: 
        !          43056:  There were some serious collisions with eqn's bracket building algorithm and
        !          43057:  Adobe's Symbol font. eqn extends all the pieces with the \(bv character, while
        !          43058:  the bracket and brace pieces available in Adobe's Symbol are all quite different
        !          43059:  and are designed to work with their own extenders. The reference points are
        !          43060:  different, but worse still the thickness of brackets and braces don't match.
        !          43061:  Anyway using a single extender (the way eqn does) can't ever work with the
        !          43062:  bracket and brace characters available in Adobe's Symbol font.
        !          43063: 
        !          43064:  The lc, rc, lf, and rf files are a very complicated attempt to get around the
        !          43065:  problem. Each builds the troff character by using the \(bv character from the
        !          43066:  Symbol font and then draws a small horizontal line at either the top or bottom
        !          43067:  of the \(bv. Using \(bv for the vertical part guarantees things will stack
        !          43068:  properly, but getting to the precise top or bottom of the \(bv (down to the
        !          43069:  pixel level on all devices and in all sizes) proved to be very difficult. In
        !          43070:  fact you would think that determining the bounding box of \(bv would be enough
        !          43071:  to let you draw a good bracket piece that matched up nicely with the extender.
        !          43072:  Not quite, at least I didn't find that it was possible to do a good job drawing
        !          43073:  the pieces from the \(bv bounding box. Think roundoff errors introduced by the
        !          43074:  CTM caused the trouble, although I expect there's more to it.
        !          43075:  
        !          43076:  Clipping a rectangular region 2 pixels smaller in height than the bounding box
        !          43077:  of the \(bv character, and using the corners of that box to locate the top and
        !          43078:  bottom of the bv for the horizontal extender solved the problems I originally
        !          43079:  had with the precise placement of the horizontal rule. Anyway that's what the
        !          43080:  clipping and idtransform are for. The initgraphics stuff is an attempt to fit
        !          43081:  a tight bounding box around the \(bv character independent of the rotation of
        !          43082:  our coordinate system. pathbbox only returns what we want if the coordinate
        !          43083:  system has been rotated by a multiple of 90 degrees.
        !          43084:  
        !          43085: 0707070014230642361006440057030057030000011704760522627502600003500000000075post.src/devopost/charlib/Fi/build_Fi {
        !          43086:     pop
        !          43087:     size .05 mul neg 0 (ffi) ashow
        !          43088: } def
        !          43089: 0707070014230642371006440057030057030000011704770522627502600003500000000075post.src/devopost/charlib/Fl/build_Fl {
        !          43090:     pop
        !          43091:     size .05 mul neg 0 (ffl) ashow
        !          43092: } def
        !          43093: 0707070014230642401006440057030057030000011710130522627502600003500000000402post.src/devopost/charlib/L1/build_L1 {
        !          43094:     pop
        !          43095:     /picstr 40 string def
        !          43096:     gsave
        !          43097:     currentpoint translate
        !          43098:     .533 72 mul size mul 36 div
        !          43099:     .5 72 mul size mul 36 div
        !          43100:     scale
        !          43101:     160 150 1 [160 0 0 -150 0 150]
        !          43102:     {currentfile picstr readhexstring pop} image
        !          43103:     grestore
        !          43104: } def
        !          43105: 0707070014230642411006440057030057030000011710300522627502600004100000014006post.src/devopost/charlib/L1.mapFFFFFFFFFFFFFFFFFF0007FFFFFFFFFFFFFFFFFF
        !          43106: FFFFFFFFFFFFFFFF00000007FFFFFFFFFFFFFFFF
        !          43107: FFFFFFFFFFFFFFE0000000007FFFFFFFFFFFFFFF
        !          43108: FFFFFFFFFFFFFF00000000000FFFFFFFFFFFFFFF
        !          43109: FFFFFFFFFFFFF8000000000001FFFFFFFFFFFFFF
        !          43110: FFFFFFFFFFFFE00000000000003FFFFFFFFFFFFF
        !          43111: FFFFFFFFFFFF000000000000000FFFFFFFFFFFFF
        !          43112: FFFFFFFFFFFC0000000000000003FFFFFFFFFFFF
        !          43113: FFFFFFFFFFF000000000000000007FFFFFFFFFFF
        !          43114: FFFFFFFFFFC000000000000000003FFFFFFFFFFF
        !          43115: FFFFFFFFFF8FFFFFFF00000000000FFFFFFFFFFF
        !          43116: FFFFFFFFFFFFFFFFFFFF0000000007FFFFFFFFFF
        !          43117: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43118: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43119: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43120: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43121: FFFFFFFFFFFFFFFFFFFFFF000000000FFFFFFFFF
        !          43122: FFFFFFFFFFFFFFFFFFFFC00000000003FFFFFFFF
        !          43123: FFFFFFF81FFFFFFFFFC0000000000001FFFFFFFF
        !          43124: FFFFFFF0000000000000000000000000FFFFFFFF
        !          43125: FFFFFFE00000000000000000000000007FFFFFFF
        !          43126: FFFFFFC00000000000000000000000003FFFFFFF
        !          43127: FFFFFF800000000000000000000000001FFFFFFF
        !          43128: FFFFFF000000000000000000000000000FFFFFFF
        !          43129: FFFFFE0007FFFFFFFF8000000000000007FFFFFF
        !          43130: FFFFFE7FFFFFFFFFFFFFFE000000000003FFFFFF
        !          43131: FFFFFFFFFFFFFFFFFFFFFFFF0000000003FFFFFF
        !          43132: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43133: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43134: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43135: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43136: FFFFFFFFFFFFFFFFFFFFFFFFFE000000001FFFFF
        !          43137: FFFFFFFFFFFFFFFFFFFFFFFF80000000001FFFFF
        !          43138: FFFF01FFFFFFFFFFFFFFFFC000000000000FFFFF
        !          43139: FFFE00000000000000000000000000000007FFFF
        !          43140: FFFE00000000000000000000000000000007FFFF
        !          43141: FFFC00000000000000000000000000000003FFFF
        !          43142: FFFC00000000000000000000000000000003FFFF
        !          43143: FFF800000000000000000000000000000001FFFF
        !          43144: FFF800000000000000000000000000000000FFFF
        !          43145: FFF80FFFFFFFFFFFFFFFFFE0000000000000FFFF
        !          43146: FFFFFFFFFFFFFFFFFFFFFFFFFE0000000000FFFF
        !          43147: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43148: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43149: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43150: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43151: FFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000001FFF
        !          43152: FFFFFFFFFFFFFFFFFFFFFFFFFFC0000000001FFF
        !          43153: FF87FFFFFFFFFFFFFFFFFFFFC000000000000FFF
        !          43154: FF000000007FFFFFFFFFFC000000000000000FFF
        !          43155: FF000000000000000000000000000000000007FF
        !          43156: FF000000000000000000000000000000000007FF
        !          43157: FE000000000000000000000000000000000007FF
        !          43158: FE000000000000000000000000000000000003FF
        !          43159: FE000000000000000000000000000000000003FF
        !          43160: FE0007FFFFFFFFFFFFFFFFC000000000000003FF
        !          43161: FC0FFFFFFFFFFFFFFFFFFFFFFC000000000003FF
        !          43162: FFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000003FF
        !          43163: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43164: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43165: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43166: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000001FF
        !          43167: FFFFFFFFFFFFFFFFFFFFFFFFFF800000000001FF
        !          43168: F8FFFFFFFFFFFFFFFFFFFFFF80000000000000FF
        !          43169: F8000FFFFFFFFFFFFFFFFF0000000000000000FF
        !          43170: F8000000000000000000000000000000000000FF
        !          43171: F0000000000000000000000000000000000000FF
        !          43172: F0000000000000000000000000000000000000FF
        !          43173: F0000000000000000000000000000000000000FF
        !          43174: F00000000000000000000000000000000000007F
        !          43175: F00000007FFFFFFFFFFFE000000000000000007F
        !          43176: F000FFFFFFFFFFFFFFFFFFFF000000000000007F
        !          43177: F07FFFFFFFFFFFFFFFFFFFFFFFC000000000007F
        !          43178: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43179: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43180: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43181: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43182: FFFFFFFFFFFFFFFFFFFFFFFFFF0000000000007F
        !          43183: F007FFFFFFFFFFFFFFFFFFFC000000000000007F
        !          43184: F00003FFFFFFFFFFFFFFF000000000000000007F
        !          43185: F00000000000000000000000000000000000007F
        !          43186: F00000000000000000000000000000000000007F
        !          43187: F0000000000000000000000000000000000000FF
        !          43188: F0000000000000000000000000000000000000FF
        !          43189: F8000000000000000000000000000000000000FF
        !          43190: F8000000000000000000000000000000000000FF
        !          43191: F80003FFFFFFFFFFFFFFF80000000000000000FF
        !          43192: F80FFFFFFFFFFFFFFFFFFFFFC0000000000000FF
        !          43193: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43194: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43195: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43196: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43197: FFFFFFFFFFFFFFFFFFFFFFFE00000000000003FF
        !          43198: FC003FFFFFFFFFFFFFFE000000000000000003FF
        !          43199: FE000000FFFFFFFFC800000000000000000003FF
        !          43200: FE000000000000000000000000000000000003FF
        !          43201: FE000000000000000000000000000000000003FF
        !          43202: FE000000000000000000000000000000000003FF
        !          43203: FF000000000000000000000000000000000007FF
        !          43204: FF000000000000000000000000000000000007FF
        !          43205: FF000000000000000000000000000000000007FF
        !          43206: FF80000000000000000000000000000000000FFF
        !          43207: FF8000000007FF80000000000000000000000FFF
        !          43208: FFC00007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43209: FFC07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43210: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43211: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43212: FFF03FFFFFFFFFFFFFFFC0000000000000007FFF
        !          43213: FFF0000007FFFFFE000000000000000000007FFF
        !          43214: FFF800000000000000000000000000000000FFFF
        !          43215: FFF800000000000000000000000000000000FFFF
        !          43216: FFF800000000000000000000000000000000FFFF
        !          43217: FFFC00000000000000000000000000000001FFFF
        !          43218: FFFE00000000000000000000000000000003FFFF
        !          43219: FFFE00000000000000000000000000000003FFFF
        !          43220: FFFF00000000000000000000000000000007FFFF
        !          43221: FFFF0000000000000000000000000000000FFFFF
        !          43222: FFFF8000000000000000000000000000000FFFFF
        !          43223: FFFFC000003FFFE00000000000000000001FFFFF
        !          43224: FFFFE007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43225: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43226: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43227: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43228: FFFFFC0000000000000000000000000001FFFFFF
        !          43229: FFFFFE0000000000000000000000000003FFFFFF
        !          43230: FFFFFF0000000000000000000000000003FFFFFF
        !          43231: FFFFFF0000000000000000000000000007FFFFFF
        !          43232: FFFFFF800000000000000000000000000FFFFFFF
        !          43233: FFFFFFC00000000000000000000000001FFFFFFF
        !          43234: FFFFFFE00000000000000000000000003FFFFFFF
        !          43235: FFFFFFF00000000000000000000000007FFFFFFF
        !          43236: FFFFFFFC000000000000000000000000FFFFFFFF
        !          43237: FFFFFFFE000000000000000000000003FFFFFFFF
        !          43238: FFFFFFFF000000000000000000000007FFFFFFFF
        !          43239: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43240: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43241: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43242: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          43243: FFFFFFFFFF00000000000000000003FFFFFFFFFF
        !          43244: FFFFFFFFFF8000000000000000000FFFFFFFFFFF
        !          43245: FFFFFFFFFFE000000000000000001FFFFFFFFFFF
        !          43246: FFFFFFFFFFF000000000000000007FFFFFFFFFFF
        !          43247: FFFFFFFFFFFC0000000000000001FFFFFFFFFFFF
        !          43248: FFFFFFFFFFFF0000000000000007FFFFFFFFFFFF
        !          43249: FFFFFFFFFFFFE00000000000003FFFFFFFFFFFFF
        !          43250: FFFFFFFFFFFFF8000000000000FFFFFFFFFFFFFF
        !          43251: FFFFFFFFFFFFFF000000000007FFFFFFFFFFFFFF
        !          43252: FFFFFFFFFFFFFFF0000000007FFFFFFFFFFFFFFF
        !          43253: FFFFFFFFFFFFFFFF00000007FFFFFFFFFFFFFFFF
        !          43254: FFFFFFFFFFFFFFFFFE0007FFFFFFFFFFFFFFFFFF
        !          43255: 0707070014230642421006440057030057030000011710370522627502600003500000000024post.src/devopost/charlib/LH/build_LH {pop} def
        !          43256: 0707070014230642431006440057030057030000011710500522627502600004100000017112post.src/devopost/charlib/LH.mapgsave
        !          43257: /M {moveto} def
        !          43258: /L {lineto} def
        !          43259: 
        !          43260: currentpoint translate
        !          43261: 0 360 translate
        !          43262: 2.4 2.4 scale
        !          43263: ptsize 36 div dup neg scale
        !          43264: 
        !          43265: 68 1 M
        !          43266: 68 1 L
        !          43267: 60 2 L
        !          43268: 55 3 L
        !          43269: 52 4 L
        !          43270: 49 5 L
        !          43271: 47 6 L
        !          43272: 44 7 L
        !          43273: 42 8 L
        !          43274: 40 9 L
        !          43275: 38 10 L
        !          43276: 37 11 L
        !          43277: 39 11 L
        !          43278: 53 10 L
        !          43279: 68 11 L
        !          43280: 76 12 L
        !          43281: 112 12 L
        !          43282: 111 11 L
        !          43283: 109 10 L
        !          43284: 108 9 L
        !          43285: 105 8 L
        !          43286: 103 7 L
        !          43287: 101 6 L
        !          43288: 98 5 L
        !          43289: 95 4 L
        !          43290: 92 3 L
        !          43291: 88 2 L
        !          43292: 80 1 L
        !          43293: closepath
        !          43294: 84 17 M
        !          43295: 84 17 L
        !          43296: 78 18 L
        !          43297: 70 19 L
        !          43298: 50 20 L
        !          43299: 30 19 L
        !          43300: 25 19 L
        !          43301: 24 20 L
        !          43302: 23 21 L
        !          43303: 22 22 L
        !          43304: 21 23 L
        !          43305: 20 24 L
        !          43306: 19 25 L
        !          43307: 19 26 L
        !          43308: 20 26 L
        !          43309: 32 25 L
        !          43310: 50 24 L
        !          43311: 69 25 L
        !          43312: 83 26 L
        !          43313: 92 27 L
        !          43314: 129 27 L
        !          43315: 129 26 L
        !          43316: 128 25 L
        !          43317: 127 24 L
        !          43318: 126 23 L
        !          43319: 125 22 L
        !          43320: 124 21 L
        !          43321: 123 20 L
        !          43322: 122 19 L
        !          43323: 121 18 L
        !          43324: 119 17 L
        !          43325: closepath
        !          43326: 99 32 M
        !          43327: 99 32 L
        !          43328: 93 33 L
        !          43329: 86 34 L
        !          43330: 52 35 L
        !          43331: 18 34 L
        !          43332: 12 34 L
        !          43333: 11 35 L
        !          43334: 11 36 L
        !          43335: 10 37 L
        !          43336: 10 38 L
        !          43337: 9 39 L
        !          43338: 9 40 L
        !          43339: 9 41 L
        !          43340: 15 41 L
        !          43341: 51 40 L
        !          43342: 87 41 L
        !          43343: 99 42 L
        !          43344: 139 42 L
        !          43345: 139 41 L
        !          43346: 139 40 L
        !          43347: 138 39 L
        !          43348: 137 38 L
        !          43349: 137 37 L
        !          43350: 136 36 L
        !          43351: 136 35 L
        !          43352: 135 34 L
        !          43353: 134 33 L
        !          43354: 134 32 L
        !          43355: closepath
        !          43356: 110 47 M
        !          43357: 110 47 L
        !          43358: 102 48 L
        !          43359: 94 49 L
        !          43360: 82 50 L
        !          43361: 59 51 L
        !          43362: 36 50 L
        !          43363: 8 49 L
        !          43364: 5 49 L
        !          43365: 4 50 L
        !          43366: 4 51 L
        !          43367: 4 52 L
        !          43368: 3 53 L
        !          43369: 3 54 L
        !          43370: 3 55 L
        !          43371: 3 56 L
        !          43372: 2 57 L
        !          43373: 7 57 L
        !          43374: 16 56 L
        !          43375: 51 55 L
        !          43376: 86 56 L
        !          43377: 98 57 L
        !          43378: 110 58 L
        !          43379: 145 58 L
        !          43380: 145 57 L
        !          43381: 145 56 L
        !          43382: 145 55 L
        !          43383: 145 54 L
        !          43384: 144 53 L
        !          43385: 144 52 L
        !          43386: 144 51 L
        !          43387: 143 50 L
        !          43388: 143 49 L
        !          43389: 142 48 L
        !          43390: 142 47 L
        !          43391: closepath
        !          43392: 178 49 M
        !          43393: 178 49 L
        !          43394: 178 50 L
        !          43395: 177 51 L
        !          43396: 177 52 L
        !          43397: 177 53 L
        !          43398: 176 54 L
        !          43399: 176 55 L
        !          43400: 176 56 L
        !          43401: 175 57 L
        !          43402: 175 58 L
        !          43403: 175 59 L
        !          43404: 174 60 L
        !          43405: 174 61 L
        !          43406: 174 62 L
        !          43407: 173 63 L
        !          43408: 173 64 L
        !          43409: 173 65 L
        !          43410: 172 66 L
        !          43411: 172 67 L
        !          43412: 172 68 L
        !          43413: 171 69 L
        !          43414: 171 70 L
        !          43415: 171 71 L
        !          43416: 170 72 L
        !          43417: 170 73 L
        !          43418: 170 74 L
        !          43419: 169 75 L
        !          43420: 169 76 L
        !          43421: 169 77 L
        !          43422: 168 78 L
        !          43423: 168 79 L
        !          43424: 168 80 L
        !          43425: 167 81 L
        !          43426: 167 82 L
        !          43427: 167 83 L
        !          43428: 166 84 L
        !          43429: 166 85 L
        !          43430: 166 86 L
        !          43431: 165 87 L
        !          43432: 165 88 L
        !          43433: 165 89 L
        !          43434: 164 90 L
        !          43435: 164 91 L
        !          43436: 164 92 L
        !          43437: 163 93 L
        !          43438: 163 94 L
        !          43439: 163 95 L
        !          43440: 162 96 L
        !          43441: 162 97 L
        !          43442: 162 98 L
        !          43443: 161 99 L
        !          43444: 161 100 L
        !          43445: 161 101 L
        !          43446: 160 102 L
        !          43447: 174 102 L
        !          43448: 174 101 L
        !          43449: 175 100 L
        !          43450: 175 99 L
        !          43451: 175 98 L
        !          43452: 176 97 L
        !          43453: 176 96 L
        !          43454: 176 95 L
        !          43455: 177 94 L
        !          43456: 185 93 L
        !          43457: 194 94 L
        !          43458: 194 95 L
        !          43459: 195 96 L
        !          43460: 195 97 L
        !          43461: 195 98 L
        !          43462: 195 99 L
        !          43463: 196 100 L
        !          43464: 196 101 L
        !          43465: 196 102 L
        !          43466: 210 102 L
        !          43467: 209 101 L
        !          43468: 209 100 L
        !          43469: 209 99 L
        !          43470: 208 98 L
        !          43471: 208 97 L
        !          43472: 208 96 L
        !          43473: 208 95 L
        !          43474: 207 94 L
        !          43475: 207 93 L
        !          43476: 207 92 L
        !          43477: 206 91 L
        !          43478: 206 90 L
        !          43479: 206 89 L
        !          43480: 205 88 L
        !          43481: 205 87 L
        !          43482: 205 86 L
        !          43483: 204 85 L
        !          43484: 204 84 L
        !          43485: 204 83 L
        !          43486: 203 82 L
        !          43487: 203 81 L
        !          43488: 203 80 L
        !          43489: 202 79 L
        !          43490: 202 78 L
        !          43491: 202 77 L
        !          43492: 202 76 L
        !          43493: 201 75 L
        !          43494: 201 74 L
        !          43495: 201 73 L
        !          43496: 200 72 L
        !          43497: 200 71 L
        !          43498: 200 70 L
        !          43499: 199 69 L
        !          43500: 199 68 L
        !          43501: 199 67 L
        !          43502: 198 66 L
        !          43503: 198 65 L
        !          43504: 198 64 L
        !          43505: 197 63 L
        !          43506: 197 62 L
        !          43507: 197 61 L
        !          43508: 197 60 L
        !          43509: 196 59 L
        !          43510: 196 58 L
        !          43511: 196 57 L
        !          43512: 195 56 L
        !          43513: 195 55 L
        !          43514: 195 54 L
        !          43515: 194 53 L
        !          43516: 194 52 L
        !          43517: 194 51 L
        !          43518: 193 50 L
        !          43519: 193 49 L
        !          43520: closepath
        !          43521: 200 49 M
        !          43522: 200 49 L
        !          43523: 200 50 L
        !          43524: 200 51 L
        !          43525: 200 52 L
        !          43526: 200 53 L
        !          43527: 200 54 L
        !          43528: 200 55 L
        !          43529: 200 56 L
        !          43530: 200 57 L
        !          43531: 200 58 L
        !          43532: 200 59 L
        !          43533: 200 60 L
        !          43534: 214 61 L
        !          43535: 214 62 L
        !          43536: 214 63 L
        !          43537: 214 64 L
        !          43538: 214 65 L
        !          43539: 214 66 L
        !          43540: 214 67 L
        !          43541: 214 68 L
        !          43542: 214 69 L
        !          43543: 214 70 L
        !          43544: 214 71 L
        !          43545: 214 72 L
        !          43546: 214 73 L
        !          43547: 214 74 L
        !          43548: 214 75 L
        !          43549: 214 76 L
        !          43550: 214 77 L
        !          43551: 214 78 L
        !          43552: 214 79 L
        !          43553: 214 80 L
        !          43554: 214 81 L
        !          43555: 214 82 L
        !          43556: 214 83 L
        !          43557: 214 84 L
        !          43558: 214 85 L
        !          43559: 214 86 L
        !          43560: 214 87 L
        !          43561: 214 88 L
        !          43562: 214 89 L
        !          43563: 214 90 L
        !          43564: 214 91 L
        !          43565: 214 92 L
        !          43566: 214 93 L
        !          43567: 214 94 L
        !          43568: 214 95 L
        !          43569: 214 96 L
        !          43570: 214 97 L
        !          43571: 214 98 L
        !          43572: 214 99 L
        !          43573: 214 100 L
        !          43574: 214 101 L
        !          43575: 214 102 L
        !          43576: 228 102 L
        !          43577: 228 101 L
        !          43578: 228 100 L
        !          43579: 228 99 L
        !          43580: 228 98 L
        !          43581: 228 97 L
        !          43582: 228 96 L
        !          43583: 228 95 L
        !          43584: 228 94 L
        !          43585: 228 93 L
        !          43586: 228 92 L
        !          43587: 228 91 L
        !          43588: 228 90 L
        !          43589: 228 89 L
        !          43590: 228 88 L
        !          43591: 228 87 L
        !          43592: 228 86 L
        !          43593: 228 85 L
        !          43594: 228 84 L
        !          43595: 228 83 L
        !          43596: 228 82 L
        !          43597: 228 81 L
        !          43598: 228 80 L
        !          43599: 228 79 L
        !          43600: 228 78 L
        !          43601: 228 77 L
        !          43602: 228 76 L
        !          43603: 228 75 L
        !          43604: 228 74 L
        !          43605: 228 73 L
        !          43606: 228 72 L
        !          43607: 228 71 L
        !          43608: 228 70 L
        !          43609: 228 69 L
        !          43610: 228 68 L
        !          43611: 228 67 L
        !          43612: 228 66 L
        !          43613: 228 65 L
        !          43614: 228 64 L
        !          43615: 228 63 L
        !          43616: 228 62 L
        !          43617: 228 61 L
        !          43618: 241 60 L
        !          43619: 241 59 L
        !          43620: 241 58 L
        !          43621: 241 57 L
        !          43622: 241 56 L
        !          43623: 241 55 L
        !          43624: 241 54 L
        !          43625: 241 53 L
        !          43626: 241 52 L
        !          43627: 241 51 L
        !          43628: 241 50 L
        !          43629: 241 49 L
        !          43630: closepath
        !          43631: 266 49 M
        !          43632: 266 49 L
        !          43633: 266 50 L
        !          43634: 266 51 L
        !          43635: 266 52 L
        !          43636: 266 53 L
        !          43637: 266 54 L
        !          43638: 266 55 L
        !          43639: 266 56 L
        !          43640: 266 57 L
        !          43641: 266 58 L
        !          43642: 266 59 L
        !          43643: 266 60 L
        !          43644: 280 61 L
        !          43645: 280 62 L
        !          43646: 280 63 L
        !          43647: 280 64 L
        !          43648: 280 65 L
        !          43649: 280 66 L
        !          43650: 280 67 L
        !          43651: 280 68 L
        !          43652: 280 69 L
        !          43653: 280 70 L
        !          43654: 280 71 L
        !          43655: 280 72 L
        !          43656: 280 73 L
        !          43657: 280 74 L
        !          43658: 280 75 L
        !          43659: 280 76 L
        !          43660: 280 77 L
        !          43661: 280 78 L
        !          43662: 280 79 L
        !          43663: 280 80 L
        !          43664: 280 81 L
        !          43665: 280 82 L
        !          43666: 280 83 L
        !          43667: 280 84 L
        !          43668: 280 85 L
        !          43669: 280 86 L
        !          43670: 280 87 L
        !          43671: 280 88 L
        !          43672: 280 89 L
        !          43673: 280 90 L
        !          43674: 280 91 L
        !          43675: 280 92 L
        !          43676: 280 93 L
        !          43677: 280 94 L
        !          43678: 280 95 L
        !          43679: 280 96 L
        !          43680: 280 97 L
        !          43681: 280 98 L
        !          43682: 280 99 L
        !          43683: 280 100 L
        !          43684: 280 101 L
        !          43685: 280 102 L
        !          43686: 294 102 L
        !          43687: 294 101 L
        !          43688: 294 100 L
        !          43689: 294 99 L
        !          43690: 294 98 L
        !          43691: 294 97 L
        !          43692: 294 96 L
        !          43693: 294 95 L
        !          43694: 294 94 L
        !          43695: 294 93 L
        !          43696: 294 92 L
        !          43697: 294 91 L
        !          43698: 294 90 L
        !          43699: 294 89 L
        !          43700: 294 88 L
        !          43701: 294 87 L
        !          43702: 294 86 L
        !          43703: 294 85 L
        !          43704: 294 84 L
        !          43705: 294 83 L
        !          43706: 294 82 L
        !          43707: 294 81 L
        !          43708: 294 80 L
        !          43709: 294 79 L
        !          43710: 294 78 L
        !          43711: 294 77 L
        !          43712: 294 76 L
        !          43713: 294 75 L
        !          43714: 294 74 L
        !          43715: 294 73 L
        !          43716: 294 72 L
        !          43717: 294 71 L
        !          43718: 294 70 L
        !          43719: 294 69 L
        !          43720: 294 68 L
        !          43721: 294 67 L
        !          43722: 294 66 L
        !          43723: 294 65 L
        !          43724: 294 64 L
        !          43725: 294 63 L
        !          43726: 294 62 L
        !          43727: 294 61 L
        !          43728: 308 60 L
        !          43729: 308 59 L
        !          43730: 308 58 L
        !          43731: 308 57 L
        !          43732: 308 56 L
        !          43733: 308 55 L
        !          43734: 308 54 L
        !          43735: 308 53 L
        !          43736: 308 52 L
        !          43737: 308 51 L
        !          43738: 308 50 L
        !          43739: 308 49 L
        !          43740: closepath
        !          43741: 251 59 M
        !          43742: 251 59 L
        !          43743: 245 60 L
        !          43744: 243 61 L
        !          43745: 241 62 L
        !          43746: 240 63 L
        !          43747: 239 64 L
        !          43748: 239 65 L
        !          43749: 238 66 L
        !          43750: 238 67 L
        !          43751: 237 68 L
        !          43752: 237 69 L
        !          43753: 237 70 L
        !          43754: 237 71 L
        !          43755: 237 72 L
        !          43756: 238 73 L
        !          43757: 238 74 L
        !          43758: 238 75 L
        !          43759: 239 76 L
        !          43760: 239 77 L
        !          43761: 240 78 L
        !          43762: 239 79 L
        !          43763: 238 80 L
        !          43764: 237 81 L
        !          43765: 237 82 L
        !          43766: 237 83 L
        !          43767: 236 84 L
        !          43768: 236 85 L
        !          43769: 235 86 L
        !          43770: 235 87 L
        !          43771: 235 88 L
        !          43772: 235 89 L
        !          43773: 235 90 L
        !          43774: 235 91 L
        !          43775: 235 92 L
        !          43776: 236 93 L
        !          43777: 236 94 L
        !          43778: 237 95 L
        !          43779: 237 96 L
        !          43780: 238 97 L
        !          43781: 239 98 L
        !          43782: 240 99 L
        !          43783: 241 100 L
        !          43784: 243 101 L
        !          43785: 245 102 L
        !          43786: 249 103 L
        !          43787: 259 103 L
        !          43788: 262 102 L
        !          43789: 265 101 L
        !          43790: 267 100 L
        !          43791: 270 101 L
        !          43792: 272 102 L
        !          43793: 276 102 L
        !          43794: 276 101 L
        !          43795: 276 100 L
        !          43796: 276 99 L
        !          43797: 276 98 L
        !          43798: 276 97 L
        !          43799: 276 96 L
        !          43800: 276 95 L
        !          43801: 276 94 L
        !          43802: 276 93 L
        !          43803: 273 92 L
        !          43804: 273 91 L
        !          43805: 274 90 L
        !          43806: 274 89 L
        !          43807: 274 88 L
        !          43808: 274 87 L
        !          43809: 274 86 L
        !          43810: 274 85 L
        !          43811: 274 84 L
        !          43812: 274 83 L
        !          43813: 274 82 L
        !          43814: 274 81 L
        !          43815: 274 80 L
        !          43816: 274 79 L
        !          43817: 274 78 L
        !          43818: 274 77 L
        !          43819: 274 76 L
        !          43820: 264 75 L
        !          43821: 264 74 L
        !          43822: 264 73 L
        !          43823: 264 72 L
        !          43824: 264 71 L
        !          43825: 264 70 L
        !          43826: 264 69 L
        !          43827: 264 68 L
        !          43828: 264 67 L
        !          43829: 263 66 L
        !          43830: 263 65 L
        !          43831: 263 64 L
        !          43832: 262 63 L
        !          43833: 261 62 L
        !          43834: 260 61 L
        !          43835: 258 60 L
        !          43836: 253 59 L
        !          43837: closepath
        !          43838: 114 62 M
        !          43839: 114 62 L
        !          43840: 101 63 L
        !          43841: 93 64 L
        !          43842: 84 65 L
        !          43843: 49 66 L
        !          43844: 15 65 L
        !          43845: 3 64 L
        !          43846: 1 64 L
        !          43847: 1 65 L
        !          43848: 1 66 L
        !          43849: 0 67 L
        !          43850: 0 68 L
        !          43851: 0 69 L
        !          43852: 0 70 L
        !          43853: 0 71 L
        !          43854: 0 72 L
        !          43855: 0 73 L
        !          43856: 4 73 L
        !          43857: 11 72 L
        !          43858: 28 71 L
        !          43859: 53 70 L
        !          43860: 79 71 L
        !          43861: 92 72 L
        !          43862: 102 73 L
        !          43863: 148 73 L
        !          43864: 148 72 L
        !          43865: 148 71 L
        !          43866: 148 70 L
        !          43867: 147 69 L
        !          43868: 147 68 L
        !          43869: 147 67 L
        !          43870: 147 66 L
        !          43871: 147 65 L
        !          43872: 147 64 L
        !          43873: 146 63 L
        !          43874: 146 62 L
        !          43875: closepath
        !          43876: 185 68 M
        !          43877: 185 68 L
        !          43878: 186 67 L
        !          43879: 187 68 L
        !          43880: 187 69 L
        !          43881: 187 70 L
        !          43882: 188 71 L
        !          43883: 188 72 L
        !          43884: 188 73 L
        !          43885: 188 74 L
        !          43886: 189 75 L
        !          43887: 189 76 L
        !          43888: 189 77 L
        !          43889: 189 78 L
        !          43890: 190 79 L
        !          43891: 190 80 L
        !          43892: 190 81 L
        !          43893: 185 82 L
        !          43894: 181 81 L
        !          43895: 181 80 L
        !          43896: 181 79 L
        !          43897: 182 78 L
        !          43898: 182 77 L
        !          43899: 182 76 L
        !          43900: 183 75 L
        !          43901: 183 74 L
        !          43902: 183 73 L
        !          43903: 184 72 L
        !          43904: 184 71 L
        !          43905: 184 70 L
        !          43906: 184 69 L
        !          43907: closepath
        !          43908: 250 68 M
        !          43909: 250 68 L
        !          43910: 251 67 L
        !          43911: 253 68 L
        !          43912: 254 69 L
        !          43913: 254 70 L
        !          43914: 254 71 L
        !          43915: 254 72 L
        !          43916: 254 73 L
        !          43917: 254 74 L
        !          43918: 254 75 L
        !          43919: 252 76 L
        !          43920: 251 75 L
        !          43921: 250 74 L
        !          43922: 249 73 L
        !          43923: 249 72 L
        !          43924: 249 71 L
        !          43925: 249 70 L
        !          43926: 249 69 L
        !          43927: closepath
        !          43928: 254 77 M
        !          43929: 254 77 L
        !          43930: 259 76 L
        !          43931: 264 77 L
        !          43932: 264 78 L
        !          43933: 264 79 L
        !          43934: 264 80 L
        !          43935: 264 81 L
        !          43936: 264 82 L
        !          43937: 264 83 L
        !          43938: 264 84 L
        !          43939: 263 85 L
        !          43940: 262 84 L
        !          43941: 261 83 L
        !          43942: 260 82 L
        !          43943: 258 81 L
        !          43944: 257 80 L
        !          43945: 256 79 L
        !          43946: 255 78 L
        !          43947: closepath
        !          43948: 100 78 M
        !          43949: 100 78 L
        !          43950: 90 79 L
        !          43951: 80 80 L
        !          43952: 48 81 L
        !          43953: 17 80 L
        !          43954: 8 79 L
        !          43955: 0 79 L
        !          43956: 0 80 L
        !          43957: 0 81 L
        !          43958: 0 82 L
        !          43959: 0 83 L
        !          43960: 0 84 L
        !          43961: 1 85 L
        !          43962: 1 86 L
        !          43963: 1 87 L
        !          43964: 1 88 L
        !          43965: 7 88 L
        !          43966: 17 87 L
        !          43967: 49 86 L
        !          43968: 81 87 L
        !          43969: 94 88 L
        !          43970: 147 88 L
        !          43971: 147 87 L
        !          43972: 147 86 L
        !          43973: 147 85 L
        !          43974: 147 84 L
        !          43975: 147 83 L
        !          43976: 148 82 L
        !          43977: 148 81 L
        !          43978: 148 80 L
        !          43979: 148 79 L
        !          43980: 148 78 L
        !          43981: closepath
        !          43982: 246 86 M
        !          43983: 246 86 L
        !          43984: 247 85 L
        !          43985: 249 86 L
        !          43986: 250 87 L
        !          43987: 252 88 L
        !          43988: 253 89 L
        !          43989: 254 90 L
        !          43990: 255 91 L
        !          43991: 255 92 L
        !          43992: 252 93 L
        !          43993: 250 92 L
        !          43994: 248 91 L
        !          43995: 247 90 L
        !          43996: 247 89 L
        !          43997: 246 88 L
        !          43998: 246 87 L
        !          43999: closepath
        !          44000: 91 93 M
        !          44001: 91 93 L
        !          44002: 75 94 L
        !          44003: 65 95 L
        !          44004: 64 96 L
        !          44005: 63 95 L
        !          44006: 62 95 L
        !          44007: 44 96 L
        !          44008: 27 95 L
        !          44009: 13 94 L
        !          44010: 2 94 L
        !          44011: 3 95 L
        !          44012: 3 96 L
        !          44013: 3 97 L
        !          44014: 3 98 L
        !          44015: 4 99 L
        !          44016: 4 100 L
        !          44017: 4 101 L
        !          44018: 5 102 L
        !          44019: 5 103 L
        !          44020: 6 104 L
        !          44021: 6 105 L
        !          44022: 12 105 L
        !          44023: 24 104 L
        !          44024: 40 103 L
        !          44025: 46 102 L
        !          44026: 53 103 L
        !          44027: 143 103 L
        !          44028: 143 102 L
        !          44029: 144 101 L
        !          44030: 144 100 L
        !          44031: 144 99 L
        !          44032: 145 98 L
        !          44033: 145 97 L
        !          44034: 145 96 L
        !          44035: 145 95 L
        !          44036: 145 94 L
        !          44037: 145 93 L
        !          44038: closepath
        !          44039: 8 108 M
        !          44040: 8 108 L
        !          44041: 8 109 L
        !          44042: 9 110 L
        !          44043: 9 111 L
        !          44044: 9 112 L
        !          44045: 10 113 L
        !          44046: 11 114 L
        !          44047: 11 115 L
        !          44048: 12 116 L
        !          44049: 12 117 L
        !          44050: 13 118 L
        !          44051: 14 119 L
        !          44052: 15 120 L
        !          44053: 24 120 L
        !          44054: 37 119 L
        !          44055: 46 118 L
        !          44056: 55 119 L
        !          44057: 134 119 L
        !          44058: 135 118 L
        !          44059: 135 117 L
        !          44060: 136 116 L
        !          44061: 137 115 L
        !          44062: 137 114 L
        !          44063: 138 113 L
        !          44064: 139 112 L
        !          44065: 139 111 L
        !          44066: 139 110 L
        !          44067: 140 109 L
        !          44068: 140 108 L
        !          44069: 78 108 L
        !          44070: 59 109 L
        !          44071: 45 110 L
        !          44072: 32 109 L
        !          44073: 13 108 L
        !          44074: closepath
        !          44075: 18 124 M
        !          44076: 18 124 L
        !          44077: 19 125 L
        !          44078: 20 126 L
        !          44079: 20 127 L
        !          44080: 21 128 L
        !          44081: 22 129 L
        !          44082: 23 130 L
        !          44083: 24 131 L
        !          44084: 26 132 L
        !          44085: 27 133 L
        !          44086: 28 134 L
        !          44087: 120 134 L
        !          44088: 121 133 L
        !          44089: 123 132 L
        !          44090: 124 131 L
        !          44091: 125 130 L
        !          44092: 126 129 L
        !          44093: 127 128 L
        !          44094: 128 127 L
        !          44095: 129 126 L
        !          44096: 129 125 L
        !          44097: 130 124 L
        !          44098: closepath
        !          44099: 36 139 M
        !          44100: 36 139 L
        !          44101: 37 140 L
        !          44102: 39 141 L
        !          44103: 40 142 L
        !          44104: 42 143 L
        !          44105: 44 144 L
        !          44106: 47 145 L
        !          44107: 49 146 L
        !          44108: 52 147 L
        !          44109: 56 148 L
        !          44110: 60 149 L
        !          44111: 67 150 L
        !          44112: 80 150 L
        !          44113: 88 149 L
        !          44114: 92 148 L
        !          44115: 96 147 L
        !          44116: 99 146 L
        !          44117: 101 145 L
        !          44118: 104 144 L
        !          44119: 106 143 L
        !          44120: 108 142 L
        !          44121: 110 141 L
        !          44122: 111 140 L
        !          44123: 113 139 L
        !          44124: closepath
        !          44125: fill
        !          44126: grestore
        !          44127: 0707070014230642441006440057030057030000011710140522627502600003500000000402post.src/devopost/charlib/Lb/build_Lb {
        !          44128:     pop
        !          44129:     /picstr 78 string def
        !          44130:     gsave
        !          44131:     currentpoint translate
        !          44132:     1.03 72 mul size mul 36 div
        !          44133:     .5 72 mul size mul 36 div
        !          44134:     scale
        !          44135:     309 150 1 [309 0 0 -150 0 150]
        !          44136:     {currentfile picstr readhexstring pop} image
        !          44137:     grestore
        !          44138: } def
        !          44139: 0707070014230642451006440057030057030000011710700522627502600004100000027112post.src/devopost/charlib/Lb.mapFFFFFFFFFFFFFFFFF0007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44140: FFFFFFFFFFFFFFF00000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44141: FFFFFFFFFFFFFE0000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44142: FFFFFFFFFFFFF00000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44143: FFFFFFFFFFFF8000000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44144: FFFFFFFFFFFE00000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44145: FFFFFFFFFFF000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44146: FFFFFFFFFFC0000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44147: FFFFFFFFFF000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44148: FFFFFFFFFC000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44149: FFFFFFFFF8FFFFFFF00000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44150: FFFFFFFFFFFFFFFFFFF0000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44151: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44152: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44153: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44154: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44155: FFFFFFFFFFFFFFFFFFFFF000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44156: FFFFFFFFFFFFFFFFFFFC00000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44157: FFFFFF81FFFFFFFFFC0000000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44158: FFFFFF0000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44159: FFFFFE00000000000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44160: FFFFFC00000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44161: FFFFF800000000000000000000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44162: FFFFF000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44163: FFFFE0007FFFFFFFF8000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44164: FFFFE7FFFFFFFFFFFFFFE000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44165: FFFFFFFFFFFFFFFFFFFFFFF0000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44166: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44167: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44168: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44169: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44170: FFFFFFFFFFFFFFFFFFFFFFFFE000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44171: FFFFFFFFFFFFFFFFFFFFFFF80000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44172: FFF01FFFFFFFFFFFFFFFFC000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44173: FFE00000000000000000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44174: FFE00000000000000000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44175: FFC00000000000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44176: FFC00000000000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44177: FF800000000000000000000000000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44178: FF800000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44179: FF80FFFFFFFFFFFFFFFFFE0000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44180: FFFFFFFFFFFFFFFFFFFFFFFFE0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44181: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44182: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44183: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44184: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44185: FFFFFFFFFFFFFFFFFFFFFFFFFFFC00000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44186: FFFFFFFFFFFFFFFFFFFFFFFFFC0000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44187: F87FFFFFFFFFFFFFFFFFFFFC000000000000FFFFFFFFC0003F00000000003FFFFFC00000000007
        !          44188: F000000007FFFFFFFFFFC000000000000000FFFFFFFFC0003F00000000003FFFFFC00000000007
        !          44189: F000000000000000000000000000000000007FFFFFFF80001F00000000003FFFFFC00000000007
        !          44190: F000000000000000000000000000000000007FFFFFFF80001F00000000003FFFFFC00000000007
        !          44191: E000000000000000000000000000000000007FFFFFFF80001F00000000003FFFFFC00000000007
        !          44192: E000000000000000000000000000000000003FFFFFFF00000F00000000003FFFFFC00000000007
        !          44193: E000000000000000000000000000000000003FFFFFFF00000F00000000003FFFFFC00000000007
        !          44194: E0007FFFFFFFFFFFFFFFFC000000000000003FFFFFFF00000F00000000003FFFFFC00000000007
        !          44195: C0FFFFFFFFFFFFFFFFFFFFFFC000000000003FFFFFFE00000700000000003FFFFFC00000000007
        !          44196: FFFFFFFFFFFFFFFFFFFFFFFFFFFC000000003FFFFFFE00000700000000003FFFFFC00000000007
        !          44197: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000700000000003FE3FFC00000000007
        !          44198: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000003000000000038001FC00000000007
        !          44199: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000003FFFC0007FFE00007FFFF0001FFFF
        !          44200: FFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000001FFFFFFC000003FFFC0007FF800003FFFF0001FFFF
        !          44201: FFFFFFFFFFFFFFFFFFFFFFFFF800000000001FFFFFF8000003FFFC0007FF000001FFFF0001FFFF
        !          44202: 8FFFFFFFFFFFFFFFFFFFFFF80000000000000FFFFFF8000001FFFC0007FE000000FFFF0001FFFF
        !          44203: 8000FFFFFFFFFFFFFFFFF0000000000000000FFFFFF8000001FFFC0007FE000000FFFF0001FFFF
        !          44204: 8000000000000000000000000000000000000FFFFFF0000001FFFC0007FC000000FFFF0001FFFF
        !          44205: 0000000000000000000000000000000000000FFFFFF0000000FFFC0007FC0000007FFF0001FFFF
        !          44206: 0000000000000000000000000000000000000FFFFFF0002000FFFC0007F80018007FFF0001FFFF
        !          44207: 0000000000000000000000000000000000000FFFFFE0006000FFFC0007F8003C007FFF0001FFFF
        !          44208: 00000000000000000000000000000000000007FFFFE00060007FFC0007F8003C007FFF0001FFFF
        !          44209: 00000007FFFFFFFFFFFE000000000000000007FFFFE00070007FFC0007F8003C007FFF0001FFFF
        !          44210: 000FFFFFFFFFFFFFFFFFFFF000000000000007FFFFC00070007FFC0007F8003C007FFF0001FFFF
        !          44211: 07FFFFFFFFFFFFFFFFFFFFFFFC000000000007FFFFC000F0003FFC0007FC003C007FFF0001FFFF
        !          44212: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000F0003FFC0007FC001C007FFF0001FFFF
        !          44213: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000F8003FFC0007FC000C007FFF0001FFFF
        !          44214: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8001F8001FFC0007FE000000001F0001FFFF
        !          44215: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8001F8001FFC0007FE0001FF001F0001FFFF
        !          44216: FFFFFFFFFFFFFFFFFFFFFFFFF0000000000007FFFF0001F8001FFC0007FF0000FF001F0001FFFF
        !          44217: 007FFFFFFFFFFFFFFFFFFFC000000000000007FFFF0003FC001FFC0007FE00007F001F0001FFFF
        !          44218: 00003FFFFFFFFFFFFFFF000000000000000007FFFF0003FC000FFC0007FC00003F001F0001FFFF
        !          44219: 00000000000000000000000000000000000007FFFE0003FC000FFC0007F800001F001F0001FFFF
        !          44220: 00000000000000000000000000000000000007FFFE000000000FFC0007F8000007001F0001FFFF
        !          44221: 0000000000000000000000000000000000000FFFFE0000000007FC0007F8000003001F0001FFFF
        !          44222: 0000000000000000000000000000000000000FFFFC0000000007FC0007F0000001001F0001FFFF
        !          44223: 8000000000000000000000000000000000000FFFFC0000000007FC0007F0000000001F0001FFFF
        !          44224: 8000000000000000000000000000000000000FFFFC0000000003FC0007E0018000001F0001FFFF
        !          44225: 80003FFFFFFFFFFFFFFF80000000000000000FFFF80000000003FC0007E001C000001F0001FFFF
        !          44226: 80FFFFFFFFFFFFFFFFFFFFFC0000000000000FFFF80000000003FC0007E001F000001F0001FFFF
        !          44227: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000001FC0007E000F800001F0001FFFF
        !          44228: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000001FC0007E000FC00001F0001FFFF
        !          44229: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000001FC0007E0007E00003F0001FFFF
        !          44230: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000FC0007E0001E00003F0001FFFF
        !          44231: FFFFFFFFFFFFFFFFFFFFFFE00000000000003FFFE00000000000FC0007F000000000070001FFFF
        !          44232: C003FFFFFFFFFFFFFFE000000000000000003FFFE0003FFFC000FC0007F000000000070001FFFF
        !          44233: E000000FFFFFFFFC800000000000000000003FFFE0007FFFC0007C0007F800000000070001FFFF
        !          44234: E000000000000000000000000000000000003FFFC0007FFFE0007C0007F800000000070001FFFF
        !          44235: E000000000000000000000000000000000003FFFC0007FFFE0007C0007FC00000000070001FFFF
        !          44236: E000000000000000000000000000000000003FFFC000FFFFE0007C0007FE00000000070001FFFF
        !          44237: F000000000000000000000000000000000007FFF8000FFFFE0003C0007FF00000000070001FFFF
        !          44238: F000000000000000000000000000000000007FFF8000FFFFF0003C0007FF80000000070001FFFF
        !          44239: F000000000000000000000000000000000007FFF8001FFFFF0003C0007FFE000003C070001FFFF
        !          44240: F80000000000000000000000000000000000FFFF0001FFFFF0001C0007FFF80001FF070001FFFF
        !          44241: F8000000007FF80000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF800FFFFFFFFFFFFF
        !          44242: FC00007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44243: FC07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44244: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44245: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44246: FF03FFFFFFFFFFFFFFFC0000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44247: FF0000007FFFFFE000000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44248: FF800000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44249: FF800000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44250: FF800000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44251: FFC00000000000000000000000000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44252: FFE00000000000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44253: FFE00000000000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44254: FFF00000000000000000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44255: FFF0000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44256: FFF8000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44257: FFFC000003FFFE00000000000000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44258: FFFE007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44259: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44260: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44261: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44262: FFFFC0000000000000000000000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44263: FFFFE0000000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44264: FFFFF0000000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44265: FFFFF0000000000000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44266: FFFFF800000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44267: FFFFFC00000000000000000000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44268: FFFFFE00000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44269: FFFFFF00000000000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44270: FFFFFFC000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44271: FFFFFFE000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44272: FFFFFFF000000000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44273: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44274: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44275: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44276: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44277: FFFFFFFFF00000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44278: FFFFFFFFF8000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44279: FFFFFFFFFE000000000000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44280: FFFFFFFFFF000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44281: FFFFFFFFFFC0000000000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44282: FFFFFFFFFFF0000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44283: FFFFFFFFFFFE00000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44284: FFFFFFFFFFFF8000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44285: FFFFFFFFFFFFF000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44286: FFFFFFFFFFFFFF0000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44287: FFFFFFFFFFFFFFF00000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44288: FFFFFFFFFFFFFFFFE0007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        !          44289: 0707070014230642461006440057030057030000011710150522627502600004100000001173post.src/devopost/charlib/READMEPostscript definitions for special troff characters. File names are
        !          44290: the two character troff names. Each defines a PostScript procedure
        !          44291: that begins with build_ and ends with the character's name. The
        !          44292: build_?? procedure is called with the character width as it's only
        !          44293: argument. The .map files contain extra character data (e.g. image
        !          44294: data) that dpost downloads immediately after the build_?? call,
        !          44295: if the character's font table code field is 2 (rather than 1).
        !          44296: 
        !          44297: The following PostScript variables are available:
        !          44298: 
        !          44299:        font            current font
        !          44300:        ptsize          current point size
        !          44301:        size            actual font size - scaled up from ptsize
        !          44302: 
        !          44303: Don't overuse this stuff!
        !          44304: 
        !          44305: 0707070014230642471006440057030057030000011710160522627502600003500000002631post.src/devopost/charlib/Sl/build_Sl {
        !          44306: pop
        !          44307: gsave
        !          44308: size .0022 mul dup scale
        !          44309: currentpoint translate
        !          44310: 14 93 moveto
        !          44311: 14 96 lineto
        !          44312: 29 110 lineto
        !          44313: 44 121 lineto
        !          44314: 54 127 lineto
        !          44315: 55 132 lineto
        !          44316: 57 146 lineto
        !          44317: 59 157 lineto
        !          44318: 62 171 lineto
        !          44319: 66 186 lineto
        !          44320: 70 199 lineto
        !          44321: 75 213 lineto
        !          44322: 81 228 lineto
        !          44323: 88 243 lineto
        !          44324: 96 257 lineto
        !          44325: 106 272 lineto
        !          44326: 118 287 lineto
        !          44327: 133 300 lineto
        !          44328: 148 307 lineto
        !          44329: 163 308 lineto
        !          44330: 178 304 lineto
        !          44331: 191 293 lineto
        !          44332: 197 281 lineto
        !          44333: 198 277 lineto
        !          44334: 198 260 lineto
        !          44335: 194 246 lineto
        !          44336: 187 231 lineto
        !          44337: 179 217 lineto
        !          44338: 168 202 lineto
        !          44339: 155 187 lineto
        !          44340: 141 172 lineto
        !          44341: 126 158 lineto
        !          44342: 111 146 lineto
        !          44343: 96 136 lineto
        !          44344: 94 131 lineto
        !          44345: 93 123 lineto
        !          44346: 92 112 lineto
        !          44347: 91 103 lineto
        !          44348: 90 93 lineto
        !          44349: 89 81 lineto
        !          44350: 89 40 lineto
        !          44351: 92 28 lineto
        !          44352: 97 18 lineto
        !          44353: 108 10 lineto
        !          44354: 122 10 lineto
        !          44355: 134 18 lineto
        !          44356: 145 33 lineto
        !          44357: 152 48 lineto
        !          44358: 158 62 lineto
        !          44359: 168 58 lineto
        !          44360: 168 59 lineto
        !          44361: 163 45 lineto
        !          44362: 157 31 lineto
        !          44363: 148 16 lineto
        !          44364: 133 3 lineto
        !          44365: 118 -1 lineto
        !          44366: 103 0 lineto
        !          44367: 88 5 lineto
        !          44368: 73 18 lineto
        !          44369: 64 31 lineto
        !          44370: 58 46 lineto
        !          44371: 55 59 lineto
        !          44372: 53 73 lineto
        !          44373: 52 111 lineto
        !          44374: 37 101 lineto
        !          44375: 22 86 lineto
        !          44376: 14 93 lineto
        !          44377: 
        !          44378: 97 152 moveto
        !          44379: 97 153 lineto
        !          44380: 99 166 lineto
        !          44381: 101 178 lineto
        !          44382: 103 190 lineto
        !          44383: 106 205 lineto
        !          44384: 109 218 lineto
        !          44385: 113 232 lineto
        !          44386: 118 246 lineto
        !          44387: 124 261 lineto
        !          44388: 132 275 lineto
        !          44389: 144 290 lineto
        !          44390: 157 298 lineto
        !          44391: 171 298 lineto
        !          44392: 181 291 lineto
        !          44393: 186 283 lineto
        !          44394: 187 279 lineto
        !          44395: 187 264 lineto
        !          44396: 186 260 lineto
        !          44397: 181 246 lineto
        !          44398: 174 233 lineto
        !          44399: 165 218 lineto
        !          44400: 155 204 lineto
        !          44401: 142 190 lineto
        !          44402: 127 175 lineto
        !          44403: 112 162 lineto
        !          44404: 97 152 lineto
        !          44405: 
        !          44406: eofill
        !          44407: grestore
        !          44408: } def
        !          44409: 0707070014230642501006440057030057030000011711140522627502600003500000000264post.src/devopost/charlib/bx/build_bx {
        !          44410:     pop
        !          44411:     size 2 div /side exch def
        !          44412:     currentpoint
        !          44413:     newpath
        !          44414:     moveto
        !          44415:     0 side rlineto
        !          44416:     side 0 rlineto
        !          44417:     0 side neg rlineto
        !          44418:     closepath
        !          44419:     fill
        !          44420: } def
        !          44421: 0707070014230642511006440057030057030000011711150522627502600003500000000221post.src/devopost/charlib/ci/build_ci {
        !          44422:     pop
        !          44423:     size 3 mul 8 div /rad exch def
        !          44424:     currentpoint
        !          44425:     newpath
        !          44426:     rad add exch rad add exch rad 0 360 arc
        !          44427:     stroke
        !          44428: } def
        !          44429: 0707070014230642521006440057030057030000011711160522627502600003500000000074post.src/devopost/charlib/ff/build_ff {
        !          44430:     pop
        !          44431:     size .05 mul neg 0 (ff) ashow
        !          44432: } def
        !          44433: 0707070014230642531006440057030057030000011711170522627502600003500000001716post.src/devopost/charlib/lc%
        !          44434: % This stuff has gotten terribly complicated - sorry.
        !          44435: %
        !          44436: 
        !          44437: currentdict /bvbbox known not {/bvbbox [0 0 0 0 0 0 0] def} if
        !          44438: 
        !          44439: /build_lc {
        !          44440:     pop
        !          44441:     gsave
        !          44442:        currentpoint translate newpath
        !          44443:        bvbbox 6 get size ne {
        !          44444:            gsave
        !          44445:                initgraphics
        !          44446:                scaling scaling scale
        !          44447:                0 0 moveto
        !          44448:                (\357) false charpath flattenpath pathbbox 0 0 size bvbbox astore pop
        !          44449:                0 1 idtransform dup mul exch dup mul add sqrt dup
        !          44450:                bvbbox 1 get add bvbbox 1 3 -1 roll put
        !          44451:                bvbbox 3 get exch sub bvbbox 3 3 -1 roll put
        !          44452:                bvbbox 2 get bvbbox 0 get sub bvbbox 4 3 -1 roll put
        !          44453:                bvbbox 2 get bvbbox 0 get add 2 div bvbbox 5 3 -1 roll put
        !          44454:            grestore
        !          44455:        } if
        !          44456:        bvbbox 0 get bvbbox 1 get moveto
        !          44457:        bvbbox 0 get bvbbox 3 get lineto
        !          44458:        bvbbox 5 get bvbbox 4 get 8 mul add dup bvbbox 3 get lineto
        !          44459:        bvbbox 1 get lineto closepath clip newpath
        !          44460:        0 0 moveto (\357) show
        !          44461:        bvbbox 5 get bvbbox 3 get moveto
        !          44462:        bvbbox 4 get dup dup
        !          44463:        8 mul 0 rlineto
        !          44464:        0 exch neg rlineto
        !          44465:        8 mul neg 0 rlineto
        !          44466:        closepath clip eofill
        !          44467:     grestore
        !          44468: } def
        !          44469: 0707070014230642541006440057030057030000011711300522627502600003500000001712post.src/devopost/charlib/lf%
        !          44470: % This stuff has gotten terribly complicated - sorry.
        !          44471: %
        !          44472: 
        !          44473: currentdict /bvbbox known not {/bvbbox [0 0 0 0 0 0 0] def} if
        !          44474: 
        !          44475: /build_lf {
        !          44476:     pop
        !          44477:     gsave
        !          44478:        currentpoint translate newpath
        !          44479:        bvbbox 6 get size ne {
        !          44480:            gsave
        !          44481:                initgraphics
        !          44482:                scaling scaling scale
        !          44483:                0 0 moveto
        !          44484:                (\357) false charpath flattenpath pathbbox 0 0 size bvbbox astore pop
        !          44485:                0 1 idtransform dup mul exch dup mul add sqrt dup
        !          44486:                bvbbox 1 get add bvbbox 1 3 -1 roll put
        !          44487:                bvbbox 3 get exch sub bvbbox 3 3 -1 roll put
        !          44488:                bvbbox 2 get bvbbox 0 get sub bvbbox 4 3 -1 roll put
        !          44489:                bvbbox 2 get bvbbox 0 get add 2 div bvbbox 5 3 -1 roll put
        !          44490:            grestore
        !          44491:        } if
        !          44492:        bvbbox 0 get bvbbox 1 get moveto
        !          44493:        bvbbox 0 get bvbbox 3 get lineto
        !          44494:        bvbbox 5 get bvbbox 4 get 8 mul add dup bvbbox 3 get lineto
        !          44495:        bvbbox 1 get lineto closepath clip newpath
        !          44496:        0 0 moveto (\357) show
        !          44497:        bvbbox 5 get bvbbox 1 get moveto
        !          44498:        bvbbox 4 get dup dup
        !          44499:        8 mul 0 rlineto
        !          44500:        0 exch rlineto
        !          44501:        8 mul neg 0 rlineto
        !          44502:        closepath clip eofill
        !          44503:     grestore
        !          44504: } def
        !          44505: 0707070014230642551006440057030057030000011711310522627502600003500000004412post.src/devopost/charlib/lh/build_lh {
        !          44506: pop
        !          44507: gsave
        !          44508: size .0022 mul dup scale
        !          44509: currentpoint translate
        !          44510: 
        !          44511: 16 177 moveto
        !          44512: 16 188 lineto
        !          44513: 21 193 lineto
        !          44514: 30 193 lineto
        !          44515: 34 189 lineto
        !          44516: 36 183 lineto
        !          44517: 36 180 lineto
        !          44518: 34 174 lineto
        !          44519: 27 170 lineto
        !          44520: 19 172 lineto
        !          44521: 16 177 lineto
        !          44522: stroke
        !          44523: 
        !          44524: 38 194 moveto
        !          44525: 38 196 lineto
        !          44526: 53 199 lineto
        !          44527: 68 201 lineto
        !          44528: 83 202 lineto
        !          44529: 98 203 lineto
        !          44530: 113 204 lineto
        !          44531: 128 204 lineto
        !          44532: 143 205 lineto
        !          44533: 158 205 lineto
        !          44534: 173 205 lineto
        !          44535: 188 204 lineto
        !          44536: 203 203 lineto
        !          44537: 218 202 lineto
        !          44538: 233 200 lineto
        !          44539: 248 198 lineto
        !          44540: 263 196 lineto
        !          44541: 278 194 lineto
        !          44542: 293 190 lineto
        !          44543: 308 186 lineto
        !          44544: 323 181 lineto
        !          44545: 338 176 lineto
        !          44546: 353 168 lineto
        !          44547: 361 162 lineto
        !          44548: 364 153 lineto
        !          44549: 366 138 lineto
        !          44550: 367 126 lineto
        !          44551: 368 106 lineto
        !          44552: 369 80 lineto
        !          44553: 369 74 lineto
        !          44554: 368 60 lineto
        !          44555: 367 54 lineto
        !          44556: 362 43 lineto
        !          44557: 348 34 lineto
        !          44558: 333 28 lineto
        !          44559: 318 25 lineto
        !          44560: 303 26 lineto
        !          44561: 288 29 lineto
        !          44562: 273 31 lineto
        !          44563: 258 32 lineto
        !          44564: 243 32 lineto
        !          44565: 228 30 lineto
        !          44566: 213 27 lineto
        !          44567: 198 24 lineto
        !          44568: 183 23 lineto
        !          44569: 168 23 lineto
        !          44570: 153 27 lineto
        !          44571: 148 34 lineto
        !          44572: 148 47 lineto
        !          44573: 153 54 lineto
        !          44574: 168 58 lineto
        !          44575: 183 58 lineto
        !          44576: 198 58 lineto
        !          44577: 213 59 lineto
        !          44578: 226 60 lineto
        !          44579: 228 62 lineto
        !          44580: 228 67 lineto
        !          44581: 223 71 lineto
        !          44582: 208 71 lineto
        !          44583: 193 70 lineto
        !          44584: 178 70 lineto
        !          44585: 163 70 lineto
        !          44586: 148 70 lineto
        !          44587: 133 71 lineto
        !          44588: 123 76 lineto
        !          44589: 120 84 lineto
        !          44590: 120 91 lineto
        !          44591: 122 98 lineto
        !          44592: 129 104 lineto
        !          44593: 144 106 lineto
        !          44594: 159 107 lineto
        !          44595: 174 107 lineto
        !          44596: 189 107 lineto
        !          44597: 202 108 lineto
        !          44598: 204 110 lineto
        !          44599: 204 117 lineto
        !          44600: 201 119 lineto
        !          44601: 186 119 lineto
        !          44602: 171 119 lineto
        !          44603: 156 119 lineto
        !          44604: 141 119 lineto
        !          44605: 126 119 lineto
        !          44606: 111 121 lineto
        !          44607: 103 128 lineto
        !          44608: 101 137 lineto
        !          44609: 101 142 lineto
        !          44610: 103 150 lineto
        !          44611: 111 158 lineto
        !          44612: 126 161 lineto
        !          44613: 141 161 lineto
        !          44614: 156 162 lineto
        !          44615: 171 163 lineto
        !          44616: 186 163 lineto
        !          44617: 191 165 lineto
        !          44618: 192 167 lineto
        !          44619: 192 171 lineto
        !          44620: 190 174 lineto
        !          44621: 176 175 lineto
        !          44622: 161 175 lineto
        !          44623: 146 175 lineto
        !          44624: 131 174 lineto
        !          44625: 116 174 lineto
        !          44626: 101 174 lineto
        !          44627: 86 173 lineto
        !          44628: 71 172 lineto
        !          44629: 56 171 lineto
        !          44630: 41 171 lineto
        !          44631: 41 174 lineto
        !          44632: 43 178 lineto
        !          44633: 43 187 lineto
        !          44634: 38 194 lineto
        !          44635: stroke
        !          44636: 
        !          44637: 373 169 moveto
        !          44638: 373 176 lineto
        !          44639: 375 182 lineto
        !          44640: 386 190 lineto
        !          44641: 401 193 lineto
        !          44642: 408 191 lineto
        !          44643: 411 185 lineto
        !          44644: 412 181 lineto
        !          44645: 414 167 lineto
        !          44646: 415 158 lineto
        !          44647: 416 144 lineto
        !          44648: 417 128 lineto
        !          44649: 418 110 lineto
        !          44650: 418 60 lineto
        !          44651: 417 45 lineto
        !          44652: 415 37 lineto
        !          44653: 409 34 lineto
        !          44654: 394 31 lineto
        !          44655: 381 35 lineto
        !          44656: 379 42 lineto
        !          44657: 379 52 lineto
        !          44658: 380 67 lineto
        !          44659: 380 77 lineto
        !          44660: 379 77 lineto
        !          44661: 378 106 lineto
        !          44662: 377 121 lineto
        !          44663: 376 133 lineto
        !          44664: 375 147 lineto
        !          44665: 374 158 lineto
        !          44666: 373 169 lineto
        !          44667: 
        !          44668: stroke
        !          44669: grestore
        !          44670: } def
        !          44671: 0707070014230642561006440057030057030000011711340522627502600003500000000222post.src/devopost/charlib/ob/build_ob {
        !          44672:     pop
        !          44673:     size 3 mul 16 div /rad exch def
        !          44674:     currentpoint
        !          44675:     newpath
        !          44676:     rad add exch rad add exch rad 0 360 arc
        !          44677:     stroke
        !          44678: } def
        !          44679: 0707070014230642571006440057030057030000011711350522627502700003500000001716post.src/devopost/charlib/rc%
        !          44680: % This stuff has gotten terribly complicated - sorry.
        !          44681: %
        !          44682: 
        !          44683: currentdict /bvbbox known not {/bvbbox [0 0 0 0 0 0 0] def} if
        !          44684: 
        !          44685: /build_rc {
        !          44686:     pop
        !          44687:     gsave
        !          44688:        currentpoint translate newpath
        !          44689:        bvbbox 6 get size ne {
        !          44690:            gsave
        !          44691:                initgraphics
        !          44692:                scaling scaling scale
        !          44693:                0 0 moveto
        !          44694:                (\357) false charpath flattenpath pathbbox 0 0 size bvbbox astore pop
        !          44695:                0 1 idtransform dup mul exch dup mul add sqrt dup
        !          44696:                bvbbox 1 get add bvbbox 1 3 -1 roll put
        !          44697:                bvbbox 3 get exch sub bvbbox 3 3 -1 roll put
        !          44698:                bvbbox 2 get bvbbox 0 get sub bvbbox 4 3 -1 roll put
        !          44699:                bvbbox 2 get bvbbox 0 get add 2 div bvbbox 5 3 -1 roll put
        !          44700:            grestore
        !          44701:        } if
        !          44702:        bvbbox 2 get bvbbox 1 get moveto
        !          44703:        bvbbox 2 get bvbbox 3 get lineto
        !          44704:        bvbbox 5 get bvbbox 4 get 8 mul sub dup bvbbox 3 get lineto
        !          44705:        bvbbox 1 get lineto closepath clip newpath
        !          44706:        0 0 moveto (\357) show
        !          44707:        bvbbox 5 get bvbbox 3 get moveto
        !          44708:        bvbbox 4 get dup dup
        !          44709:        8 mul neg 0 rlineto
        !          44710:        0 exch neg rlineto
        !          44711:        8 mul 0 rlineto
        !          44712:        closepath clip eofill
        !          44713:     grestore
        !          44714: } def
        !          44715: 0707070014230642601006440057030057030000011711360522627502700003500000001712post.src/devopost/charlib/rf%
        !          44716: % This stuff has gotten terribly complicated - sorry.
        !          44717: %
        !          44718: 
        !          44719: currentdict /bvbbox known not {/bvbbox [0 0 0 0 0 0 0] def} if
        !          44720: 
        !          44721: /build_rf {
        !          44722:     pop
        !          44723:     gsave
        !          44724:        currentpoint translate newpath
        !          44725:        bvbbox 6 get size ne {
        !          44726:            gsave
        !          44727:                initgraphics
        !          44728:                scaling scaling scale
        !          44729:                0 0 moveto
        !          44730:                (\357) false charpath flattenpath pathbbox 0 0 size bvbbox astore pop
        !          44731:                0 1 idtransform dup mul exch dup mul add sqrt dup
        !          44732:                bvbbox 1 get add bvbbox 1 3 -1 roll put
        !          44733:                bvbbox 3 get exch sub bvbbox 3 3 -1 roll put
        !          44734:                bvbbox 2 get bvbbox 0 get sub bvbbox 4 3 -1 roll put
        !          44735:                bvbbox 2 get bvbbox 0 get add 2 div bvbbox 5 3 -1 roll put
        !          44736:            grestore
        !          44737:        } if
        !          44738:        bvbbox 2 get bvbbox 1 get moveto
        !          44739:        bvbbox 2 get bvbbox 3 get lineto
        !          44740:        bvbbox 5 get bvbbox 4 get 8 mul sub dup bvbbox 3 get lineto
        !          44741:        bvbbox 1 get lineto closepath clip newpath
        !          44742:        0 0 moveto (\357) show
        !          44743:        bvbbox 5 get bvbbox 1 get moveto
        !          44744:        bvbbox 4 get dup dup
        !          44745:        8 mul neg 0 rlineto
        !          44746:        0 exch rlineto
        !          44747:        8 mul 0 rlineto
        !          44748:        closepath clip eofill
        !          44749:     grestore
        !          44750: } def
        !          44751: 0707070014230642611006440057030057030000011711500522627502700003500000004171post.src/devopost/charlib/rh/build_rh {
        !          44752: pop
        !          44753: gsave
        !          44754: size .0022 mul dup scale
        !          44755: currentpoint translate
        !          44756: 
        !          44757: 15 66 moveto
        !          44758: 15 86 lineto
        !          44759: 16 131 lineto
        !          44760: 17 146 lineto
        !          44761: 18 158 lineto
        !          44762: 19 167 lineto
        !          44763: 21 181 lineto
        !          44764: 24 190 lineto
        !          44765: 34 193 lineto
        !          44766: 49 189 lineto
        !          44767: 58 182 lineto
        !          44768: 60 177 lineto
        !          44769: 60 166 lineto
        !          44770: 59 156 lineto
        !          44771: 58 143 lineto
        !          44772: 57 130 lineto
        !          44773: 56 117 lineto
        !          44774: 55 102 lineto
        !          44775: 54 42 lineto
        !          44776: 53 39 lineto
        !          44777: 49 35 lineto
        !          44778: 34 34 lineto
        !          44779: 19 39 lineto
        !          44780: 16 47 lineto
        !          44781: 15 66 lineto
        !          44782: stroke
        !          44783: 
        !          44784: 65 60 moveto
        !          44785: 65 111 lineto
        !          44786: 66 127 lineto
        !          44787: 67 139 lineto
        !          44788: 69 153 lineto
        !          44789: 72 163 lineto
        !          44790: 83 171 lineto
        !          44791: 98 177 lineto
        !          44792: 113 182 lineto
        !          44793: 128 187 lineto
        !          44794: 143 190 lineto
        !          44795: 158 194 lineto
        !          44796: 173 196 lineto
        !          44797: 188 199 lineto
        !          44798: 203 201 lineto
        !          44799: 218 203 lineto
        !          44800: 233 205 lineto
        !          44801: 248 205 lineto
        !          44802: 263 206 lineto
        !          44803: 278 206 lineto
        !          44804: 293 206 lineto
        !          44805: 308 206 lineto
        !          44806: 323 206 lineto
        !          44807: 338 205 lineto
        !          44808: 353 203 lineto
        !          44809: 368 202 lineto
        !          44810: 383 200 lineto
        !          44811: 394 197 lineto
        !          44812: 389 190 lineto
        !          44813: 389 180 lineto
        !          44814: 391 176 lineto
        !          44815: 391 173 lineto
        !          44816: 380 173 lineto
        !          44817: 365 173 lineto
        !          44818: 350 174 lineto
        !          44819: 335 175 lineto
        !          44820: 320 176 lineto
        !          44821: 305 176 lineto
        !          44822: 290 176 lineto
        !          44823: 275 177 lineto
        !          44824: 260 177 lineto
        !          44825: 245 177 lineto
        !          44826: 240 173 lineto
        !          44827: 240 170 lineto
        !          44828: 245 165 lineto
        !          44829: 260 164 lineto
        !          44830: 275 164 lineto
        !          44831: 290 164 lineto
        !          44832: 305 163 lineto
        !          44833: 320 160 lineto
        !          44834: 327 155 lineto
        !          44835: 330 149 lineto
        !          44836: 330 134 lineto
        !          44837: 328 129 lineto
        !          44838: 323 124 lineto
        !          44839: 309 121 lineto
        !          44840: 294 121 lineto
        !          44841: 279 121 lineto
        !          44842: 264 121 lineto
        !          44843: 249 121 lineto
        !          44844: 234 121 lineto
        !          44845: 228 118 lineto
        !          44846: 228 112 lineto
        !          44847: 234 109 lineto
        !          44848: 249 109 lineto
        !          44849: 264 109 lineto
        !          44850: 279 108 lineto
        !          44851: 294 108 lineto
        !          44852: 306 104 lineto
        !          44853: 311 97 lineto
        !          44854: 312 91 lineto
        !          44855: 312 88 lineto
        !          44856: 311 82 lineto
        !          44857: 305 74 lineto
        !          44858: 290 72 lineto
        !          44859: 275 72 lineto
        !          44860: 260 72 lineto
        !          44861: 245 73 lineto
        !          44862: 230 73 lineto
        !          44863: 215 73 lineto
        !          44864: 205 70 lineto
        !          44865: 205 63 lineto
        !          44866: 217 60 lineto
        !          44867: 232 60 lineto
        !          44868: 247 60 lineto
        !          44869: 262 60 lineto
        !          44870: 277 57 lineto
        !          44871: 283 52 lineto
        !          44872: 285 44 lineto
        !          44873: 285 41 lineto
        !          44874: 284 35 lineto
        !          44875: 280 30 lineto
        !          44876: 268 26 lineto
        !          44877: 253 25 lineto
        !          44878: 238 26 lineto
        !          44879: 223 28 lineto
        !          44880: 208 31 lineto
        !          44881: 193 33 lineto
        !          44882: 178 34 lineto
        !          44883: 163 33 lineto
        !          44884: 148 31 lineto
        !          44885: 133 28 lineto
        !          44886: 118 27 lineto
        !          44887: 103 28 lineto
        !          44888: 88 34 lineto
        !          44889: 73 43 lineto
        !          44890: 67 52 lineto
        !          44891: 65 60 lineto
        !          44892: stroke
        !          44893: 
        !          44894: 396 180 moveto
        !          44895: 396 188 lineto
        !          44896: 399 194 lineto
        !          44897: 410 196 lineto
        !          44898: 416 190 lineto
        !          44899: 416 180 lineto
        !          44900: 415 177 lineto
        !          44901: 411 173 lineto
        !          44902: 400 173 lineto
        !          44903: 396 180 lineto
        !          44904: stroke
        !          44905: 
        !          44906: grestore
        !          44907: } def
        !          44908: 0707070014230642621006440057030057030000011711370522627502700003500000000320post.src/devopost/charlib/sq/build_sq {
        !          44909:     pop
        !          44910:     size 2 div /side exch def
        !          44911:     currentpoint
        !          44912:     newpath
        !          44913:     moveto
        !          44914:     0 side rlineto
        !          44915:     side 0 rlineto
        !          44916:     0 side neg rlineto
        !          44917:     closepath
        !          44918:     font B eq {fill} {stroke} ifelse
        !          44919: } def
        !          44920: 0707070014230642631006440057030057030000011711530522627502700003500000000130post.src/devopost/charlib/~=/build_~= {
        !          44921:     pop
        !          44922:     (\176) stringwidth pop neg size -.15 mul (\176\055) ashow
        !          44923: } def
        !          44924: 0707070014230362361006440057030057030000011044500522627502700003600000003013post.src/devopost/devopost.mkMAKE=/bin/make
        !          44925: MAKEFILE=devopost.mk
        !          44926: 
        !          44927: SYSTEM=SYSV
        !          44928: VERSION=3.3
        !          44929: 
        !          44930: GROUP=bin
        !          44931: OWNER=bin
        !          44932: 
        !          44933: FONTDIR=/usr/lib/font
        !          44934: FONTFILES=DESC ? ?? [A-Z]??*
        !          44935: 
        !          44936: all :
        !          44937: 
        !          44938: install : all
        !          44939:        @rm -fr $(FONTDIR)/devopost/*.out
        !          44940:        @if [ ! -d $(FONTDIR) ]; then \
        !          44941:            mkdir $(FONTDIR); \
        !          44942:            chmod 755 $(FONTDIR); \
        !          44943:            chgrp $(GROUP) $(FONTDIR); \
        !          44944:            chown $(OWNER) $(FONTDIR); \
        !          44945:        fi
        !          44946:        @if [ ! -d $(FONTDIR)/devopost ]; then \
        !          44947:            mkdir $(FONTDIR)/devopost; \
        !          44948:            chmod 755 $(FONTDIR)/devopost; \
        !          44949:            chgrp $(GROUP) $(FONTDIR)/devopost; \
        !          44950:            chown $(OWNER) $(FONTDIR)/devopost; \
        !          44951:        fi
        !          44952:        @if [ ! -d $(FONTDIR)/devopost/charlib ]; then \
        !          44953:            mkdir $(FONTDIR)/devopost/charlib; \
        !          44954:            chmod 755 $(FONTDIR)/devopost/charlib; \
        !          44955:            chgrp $(GROUP) $(FONTDIR)/devopost/charlib; \
        !          44956:            chown $(OWNER) $(FONTDIR)/devopost/charlib; \
        !          44957:        fi
        !          44958:        cp $(FONTFILES) $(FONTDIR)/devopost
        !          44959:        @for i in $(FONTFILES); do \
        !          44960:            chmod 644 $(FONTDIR)/devopost/$$i; \
        !          44961:            chgrp $(GROUP) $(FONTDIR)/devopost/$$i; \
        !          44962:            chown $(OWNER) $(FONTDIR)/devopost/$$i; \
        !          44963:        done
        !          44964:        cp charlib/* $(FONTDIR)/devopost/charlib
        !          44965:        @for i in charlib/*; do \
        !          44966:            chmod 644 $(FONTDIR)/devopost/$$i; \
        !          44967:            chgrp $(GROUP) $(FONTDIR)/devopost/$$i; \
        !          44968:            chown $(OWNER) $(FONTDIR)/devopost/$$i; \
        !          44969:        done
        !          44970: 
        !          44971: clean :
        !          44972: 
        !          44973: clobber : clean
        !          44974: 
        !          44975: changes :
        !          44976:        @trap "" 1 2 3 15; \
        !          44977:        sed \
        !          44978:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
        !          44979:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
        !          44980:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          44981:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          44982:            -e "s'^FONTDIR=.*'FONTDIR=$(FONTDIR)'" \
        !          44983:        $(MAKEFILE) >XXX.mk; \
        !          44984:        mv XXX.mk $(MAKEFILE)
        !          44985: 
        !          44986: 0707070014231030720407550057030057030000020303470522627503100002500000000000post.src/devpost.add0707070014231030731006440057030057030000010304460522627502700003000000003356post.src/devpost.add/C1name C1
        !          44987: fontname CenturyOldStyle-Regular
        !          44988: ligatures fi fl 0
        !          44989: spacewidth 25
        !          44990: charset
        !          44991: !      26      2       33
        !          44992: "      40      2       34
        !          44993: dq     "
        !          44994: #      50      2       35
        !          44995: $      50      3       36
        !          44996: %      58      2       37
        !          44997: &      79      2       38
        !          44998: '      21      2       39
        !          44999: (      40      3       40
        !          45000: )      40      3       41
        !          45001: *      50      2       42
        !          45002: +      50      0       43
        !          45003: ,      25      1       44
        !          45004: hy     24      0       45
        !          45005: -      "
        !          45006: .      25      0       46
        !          45007: /      53      3       47
        !          45008: 0      50      2       48
        !          45009: 1      50      2       49
        !          45010: 2      50      2       50
        !          45011: 3      50      2       51
        !          45012: 4      50      2       52
        !          45013: 5      50      2       53
        !          45014: 6      50      2       54
        !          45015: 7      50      2       55
        !          45016: 8      50      2       56
        !          45017: 9      50      2       57
        !          45018: :      25      0       58
        !          45019: ;      25      1       59
        !          45020: ---    50      0       60
        !          45021: =      50      0       61
        !          45022: ---    50      0       62
        !          45023: ?      40      2       63
        !          45024: @      85      2       64
        !          45025: A      66      2       65
        !          45026: B      69      2       66
        !          45027: C      69      2       67
        !          45028: D      76      2       68
        !          45029: E      66      2       69
        !          45030: F      61      2       70
        !          45031: G      74      2       71
        !          45032: H      76      2       72
        !          45033: I      34      2       73
        !          45034: J      40      3       74
        !          45035: K      71      2       75
        !          45036: L      58      2       76
        !          45037: M      95      2       77
        !          45038: N      76      2       78
        !          45039: O      76      2       79
        !          45040: P      61      2       80
        !          45041: Q      76      3       81
        !          45042: R      63      2       82
        !          45043: S      55      2       83
        !          45044: T      63      2       84
        !          45045: U      74      2       85
        !          45046: V      66      2       86
        !          45047: W      95      2       87
        !          45048: X      63      2       88
        !          45049: Y      63      2       89
        !          45050: Z      58      2       90
        !          45051: [      40      3       91
        !          45052: \      25      2       92
        !          45053: bs     "
        !          45054: ]      40      3       93
        !          45055: ---    50      2       94
        !          45056: ---    50      1       95
        !          45057: `      21      2       96
        !          45058: a      47      0       97
        !          45059: b      55      2       98
        !          45060: c      47      0       99
        !          45061: d      55      2       100
        !          45062: e      50      0       101
        !          45063: f      29      2       102
        !          45064: g      55      1       103
        !          45065: h      58      2       104
        !          45066: i      26      2       105
        !          45067: j      24      3       106
        !          45068: k      55      2       107
        !          45069: l      26      2       108
        !          45070: m      84      0       109
        !          45071: n      55      0       110
        !          45072: o      53      0       111
        !          45073: p      53      1       112
        !          45074: q      55      1       113
        !          45075: r      40      0       114
        !          45076: s      45      0       115
        !          45077: t      31      2       116
        !          45078: u      55      0       117
        !          45079: v      47      0       118
        !          45080: w      71      0       119
        !          45081: x      53      0       120
        !          45082: y      50      1       121
        !          45083: z      45      0       122
        !          45084: {      40      3       123
        !          45085: ---    25      2       124
        !          45086: }      40      3       125
        !          45087: ---    50      0       126
        !          45088: ---    26      1       161
        !          45089: ct     50      2       162
        !          45090: ps     50      2       163
        !          45091: fr     9       2       164
        !          45092: yn     50      2       165
        !          45093: fn     50      3       166
        !          45094: sc     50      3       167
        !          45095: cr     50      2       168
        !          45096: ---    21      2       169
        !          45097: ``     40      2       170
        !          45098: ---    47      0       171
        !          45099: ---    29      0       172
        !          45100: ---    29      0       173
        !          45101: fi     58      2       174
        !          45102: fl     55      2       175
        !          45103: en     50      0       177
        !          45104: \-     "
        !          45105: dg     50      3       178
        !          45106: dd     50      3       179
        !          45107: ---    25      0       180
        !          45108: pg     66      3       182
        !          45109: ---    66      0       183
        !          45110: ---    21      1       184
        !          45111: ---    40      1       185
        !          45112: ''     40      2       186
        !          45113: ---    47      0       187
        !          45114: ---    100     0       188
        !          45115: ---    92      2       189
        !          45116: ---    40      1       191
        !          45117: ga     29      2       193
        !          45118: \`     "
        !          45119: aa     29      2       194
        !          45120: \'     "
        !          45121: ^a     37      2       195
        !          45122: ^      "
        !          45123: ~a     50      2       196
        !          45124: ~      "
        !          45125: -a     47      2       197
        !          45126: Ua     50      2       198
        !          45127: .a     26      2       199
        !          45128: :a     47      2       200
        !          45129: oa     34      2       202
        !          45130: ,a     34      1       203
        !          45131: "a     40      2       205
        !          45132: Ca     37      1       206
        !          45133: va     37      2       207
        !          45134: em     100     0       208
        !          45135: ---    103     2       225
        !          45136: ---    34      2       227
        !          45137: ---    58      2       232
        !          45138: ---    76      2       233
        !          45139: ---    108     2       234
        !          45140: ---    34      2       235
        !          45141: ---    76      0       241
        !          45142: ---    26      0       245
        !          45143: ---    26      2       248
        !          45144: ---    53      0       249
        !          45145: ---    84      0       250
        !          45146: ---    58      2       251
        !          45147: 0707070014231030741006440057030057030000010304600522627502700003000000003355post.src/devpost.add/C2name C2
        !          45148: fontname CenturyOldStyle-Italic
        !          45149: ligatures fi fl 0
        !          45150: spacewidth 27
        !          45151: charset
        !          45152: !      31      2       33
        !          45153: "      35      2       34
        !          45154: dq     "
        !          45155: #      54      0       35
        !          45156: $      54      3       36
        !          45157: %      70      2       37
        !          45158: &      75      2       38
        !          45159: '      21      2       39
        !          45160: (      46      3       40
        !          45161: )      46      3       41
        !          45162: *      59      2       42
        !          45163: +      54      0       43
        !          45164: ,      27      1       44
        !          45165: hy     25      0       45
        !          45166: -      "
        !          45167: .      27      0       46
        !          45168: /      46      3       47
        !          45169: 0      54      2       48
        !          45170: 1      54      0       49
        !          45171: 2      54      2       50
        !          45172: 3      54      2       51
        !          45173: 4      54      0       52
        !          45174: 5      54      0       53
        !          45175: 6      54      2       54
        !          45176: 7      54      0       55
        !          45177: 8      54      2       56
        !          45178: 9      54      2       57
        !          45179: :      27      0       58
        !          45180: ;      27      1       59
        !          45181: ---    54      0       60
        !          45182: =      54      0       61
        !          45183: ---    54      0       62
        !          45184: ?      48      2       63
        !          45185: @      78      2       64
        !          45186: A      67      2       65
        !          45187: B      68      2       66
        !          45188: C      65      2       67
        !          45189: D      75      2       68
        !          45190: E      66      2       69
        !          45191: F      61      2       70
        !          45192: G      72      2       71
        !          45193: H      77      2       72
        !          45194: I      36      2       73
        !          45195: J      34      3       74
        !          45196: K      68      2       75
        !          45197: L      58      2       76
        !          45198: M      90      2       77
        !          45199: N      74      2       78
        !          45200: O      74      2       79
        !          45201: P      59      2       80
        !          45202: Q      75      3       81
        !          45203: R      65      2       82
        !          45204: S      57      2       83
        !          45205: T      63      2       84
        !          45206: U      72      2       85
        !          45207: V      62      2       86
        !          45208: W      88      2       87
        !          45209: X      64      2       88
        !          45210: Y      61      2       89
        !          45211: Z      57      2       90
        !          45212: [      46      3       91
        !          45213: \      27      2       92
        !          45214: bs     "
        !          45215: ]      46      3       93
        !          45216: ---    54      2       94
        !          45217: ---    50      1       95
        !          45218: `      21      2       96
        !          45219: a      54      0       97
        !          45220: b      46      2       98
        !          45221: c      41      0       99
        !          45222: d      50      2       100
        !          45223: e      42      0       101
        !          45224: f      25      3       102
        !          45225: g      45      1       103
        !          45226: h      52      2       104
        !          45227: i      31      2       105
        !          45228: j      27      3       106
        !          45229: k      48      2       107
        !          45230: l      27      2       108
        !          45231: m      82      0       109
        !          45232: n      56      0       110
        !          45233: o      47      0       111
        !          45234: p      50      1       112
        !          45235: q      49      1       113
        !          45236: r      40      0       114
        !          45237: s      35      0       115
        !          45238: t      30      0       116
        !          45239: u      56      0       117
        !          45240: v      47      0       118
        !          45241: w      69      0       119
        !          45242: x      41      0       120
        !          45243: y      40      1       121
        !          45244: z      39      0       122
        !          45245: {      46      3       123
        !          45246: ---    27      2       124
        !          45247: }      46      3       125
        !          45248: ---    54      0       126
        !          45249: ---    31      1       161
        !          45250: ct     54      0       162
        !          45251: ps     54      2       163
        !          45252: fr     5       2       164
        !          45253: yn     54      0       165
        !          45254: fn     54      3       166
        !          45255: sc     59      3       167
        !          45256: cr     54      0       168
        !          45257: ---    19      2       169
        !          45258: ``     37      2       170
        !          45259: ---    45      0       171
        !          45260: ---    29      0       172
        !          45261: ---    29      0       173
        !          45262: fi     52      3       174
        !          45263: fl     52      3       175
        !          45264: en     50      0       177
        !          45265: \-     "
        !          45266: dg     59      3       178
        !          45267: dd     59      3       179
        !          45268: ---    27      0       180
        !          45269: pg     61      3       182
        !          45270: ---    61      0       183
        !          45271: ---    21      1       184
        !          45272: ---    37      1       185
        !          45273: ''     37      2       186
        !          45274: ---    45      0       187
        !          45275: ---    100     0       188
        !          45276: ---    103     2       189
        !          45277: ---    48      1       191
        !          45278: ga     39      2       193
        !          45279: \`     "
        !          45280: aa     31      2       194
        !          45281: \'     "
        !          45282: ^a     40      2       195
        !          45283: ^      "
        !          45284: ~a     51      2       196
        !          45285: ~      "
        !          45286: -a     47      0       197
        !          45287: Ua     51      2       198
        !          45288: .a     26      2       199
        !          45289: :a     46      2       200
        !          45290: oa     32      2       202
        !          45291: ,a     35      1       203
        !          45292: "a     39      2       205
        !          45293: Ca     34      1       206
        !          45294: va     40      2       207
        !          45295: em     100     0       208
        !          45296: ---    94      2       225
        !          45297: ---    32      2       227
        !          45298: ---    58      2       232
        !          45299: ---    74      2       233
        !          45300: ---    107     2       234
        !          45301: ---    32      2       235
        !          45302: ---    69      0       241
        !          45303: ---    31      0       245
        !          45304: ---    27      2       248
        !          45305: ---    47      0       249
        !          45306: ---    71      0       250
        !          45307: ---    53      2       251
        !          45308: 0707070014231030751006440057030057030000010304620522627502700003000000003355post.src/devpost.add/C3name C3
        !          45309: fontname CenturyOldStyle-Bold
        !          45310: ligatures fi fl 0
        !          45311: spacewidth 33
        !          45312: charset
        !          45313: !      34      2       33
        !          45314: "      40      2       34
        !          45315: dq     "
        !          45316: #      56      2       35
        !          45317: $      66      3       36
        !          45318: %      79      2       37
        !          45319: &      84      2       38
        !          45320: '      28      2       39
        !          45321: (      39      3       40
        !          45322: )      39      3       41
        !          45323: *      56      2       42
        !          45324: +      56      0       43
        !          45325: ,      33      1       44
        !          45326: hy     32      0       45
        !          45327: -      "
        !          45328: .      33      0       46
        !          45329: /      51      3       47
        !          45330: 0      66      2       48
        !          45331: 1      66      2       49
        !          45332: 2      66      2       50
        !          45333: 3      66      2       51
        !          45334: 4      66      2       52
        !          45335: 5      66      2       53
        !          45336: 6      66      2       54
        !          45337: 7      66      2       55
        !          45338: 8      66      2       56
        !          45339: 9      66      2       57
        !          45340: :      33      0       58
        !          45341: ;      33      1       59
        !          45342: ---    56      0       60
        !          45343: =      56      0       61
        !          45344: ---    56      0       62
        !          45345: ?      47      2       63
        !          45346: @      72      2       64
        !          45347: A      69      2       65
        !          45348: B      76      2       66
        !          45349: C      70      2       67
        !          45350: D      80      2       68
        !          45351: E      71      2       69
        !          45352: F      64      2       70
        !          45353: G      78      2       71
        !          45354: H      83      2       72
        !          45355: I      41      2       73
        !          45356: J      48      2       74
        !          45357: K      76      2       75
        !          45358: L      63      2       76
        !          45359: M      94      2       77
        !          45360: N      80      2       78
        !          45361: O      81      2       79
        !          45362: P      72      2       80
        !          45363: Q      81      3       81
        !          45364: R      72      2       82
        !          45365: S      61      2       83
        !          45366: T      60      2       84
        !          45367: U      78      2       85
        !          45368: V      64      2       86
        !          45369: W      97      2       87
        !          45370: X      68      2       88
        !          45371: Y      67      2       89
        !          45372: Z      59      2       90
        !          45373: [      39      3       91
        !          45374: \      28      2       92
        !          45375: bs     "
        !          45376: ]      39      3       93
        !          45377: ---    56      2       94
        !          45378: ---    50      1       95
        !          45379: `      28      2       96
        !          45380: a      53      0       97
        !          45381: b      60      2       98
        !          45382: c      52      0       99
        !          45383: d      62      2       100
        !          45384: e      54      0       101
        !          45385: f      30      2       102
        !          45386: g      52      3       103
        !          45387: h      62      2       104
        !          45388: i      31      2       105
        !          45389: j      27      3       106
        !          45390: k      60      2       107
        !          45391: l      30      2       108
        !          45392: m      92      0       109
        !          45393: n      62      0       110
        !          45394: o      57      0       111
        !          45395: p      61      1       112
        !          45396: q      60      1       113
        !          45397: r      44      0       114
        !          45398: s      50      0       115
        !          45399: t      33      2       116
        !          45400: u      63      0       117
        !          45401: v      50      0       118
        !          45402: w      74      0       119
        !          45403: x      53      0       120
        !          45404: y      49      1       121
        !          45405: z      44      0       122
        !          45406: {      39      3       123
        !          45407: ---    28      2       124
        !          45408: }      39      3       125
        !          45409: ---    56      0       126
        !          45410: ---    34      1       161
        !          45411: ct     66      2       162
        !          45412: ps     66      2       163
        !          45413: fr     10      2       164
        !          45414: yn     66      2       165
        !          45415: fn     66      3       166
        !          45416: sc     56      3       167
        !          45417: cr     66      2       168
        !          45418: ---    22      2       169
        !          45419: ``     52      2       170
        !          45420: ---    58      0       171
        !          45421: ---    37      0       172
        !          45422: ---    37      0       173
        !          45423: fi     62      2       174
        !          45424: fl     61      2       175
        !          45425: en     50      0       177
        !          45426: \-     "
        !          45427: dg     56      3       178
        !          45428: dd     56      3       179
        !          45429: ---    33      0       180
        !          45430: pg     62      3       182
        !          45431: ---    62      0       183
        !          45432: ---    28      1       184
        !          45433: ---    52      1       185
        !          45434: ''     52      2       186
        !          45435: ---    58      0       187
        !          45436: ---    100     0       188
        !          45437: ---    118     2       189
        !          45438: ---    47      1       191
        !          45439: ga     34      2       193
        !          45440: \`     "
        !          45441: aa     34      2       194
        !          45442: \'     "
        !          45443: ^a     45      2       195
        !          45444: ^      "
        !          45445: ~a     56      2       196
        !          45446: ~      "
        !          45447: -a     53      2       197
        !          45448: Ua     56      2       198
        !          45449: .a     29      2       199
        !          45450: :a     51      2       200
        !          45451: oa     34      2       202
        !          45452: ,a     37      1       203
        !          45453: "a     50      2       205
        !          45454: Ca     38      1       206
        !          45455: va     45      2       207
        !          45456: em     100     0       208
        !          45457: ---    109     2       225
        !          45458: ---    40      2       227
        !          45459: ---    63      2       232
        !          45460: ---    81      2       233
        !          45461: ---    114     2       234
        !          45462: ---    40      2       235
        !          45463: ---    83      0       241
        !          45464: ---    31      0       245
        !          45465: ---    30      2       248
        !          45466: ---    57      0       249
        !          45467: ---    90      0       250
        !          45468: ---    58      2       251
        !          45469: 0707070014231030761006440057030057030000010304640522627502700003000000003353post.src/devpost.add/F1name F1
        !          45470: fontname FranklinGothic-Book
        !          45471: ligatures fi fl 0
        !          45472: spacewidth 30
        !          45473: charset
        !          45474: !      30      2       33
        !          45475: "      46      2       34
        !          45476: dq     "
        !          45477: #      60      2       35
        !          45478: $      60      2       36
        !          45479: %      70      2       37
        !          45480: &      68      2       38
        !          45481: '      30      2       39
        !          45482: (      30      3       40
        !          45483: )      30      3       41
        !          45484: *      60      2       42
        !          45485: +      60      0       43
        !          45486: ,      30      1       44
        !          45487: hy     22      0       45
        !          45488: -      "
        !          45489: .      30      0       46
        !          45490: /      52      3       47
        !          45491: 0      60      2       48
        !          45492: 1      60      2       49
        !          45493: 2      60      2       50
        !          45494: 3      60      2       51
        !          45495: 4      60      2       52
        !          45496: 5      60      2       53
        !          45497: 6      60      2       54
        !          45498: 7      60      2       55
        !          45499: 8      60      2       56
        !          45500: 9      60      2       57
        !          45501: :      30      0       58
        !          45502: ;      30      1       59
        !          45503: ---    60      0       60
        !          45504: =      60      0       61
        !          45505: ---    60      0       62
        !          45506: ?      54      2       63
        !          45507: @      80      2       64
        !          45508: A      56      2       65
        !          45509: B      62      2       66
        !          45510: C      62      2       67
        !          45511: D      66      2       68
        !          45512: E      56      2       69
        !          45513: F      48      2       70
        !          45514: G      66      2       71
        !          45515: H      66      2       72
        !          45516: I      26      2       73
        !          45517: J      40      2       74
        !          45518: K      62      2       75
        !          45519: L      50      2       76
        !          45520: M      82      2       77
        !          45521: N      66      2       78
        !          45522: O      66      2       79
        !          45523: P      56      2       80
        !          45524: Q      66      3       81
        !          45525: R      62      2       82
        !          45526: S      62      2       83
        !          45527: T      50      2       84
        !          45528: U      64      2       85
        !          45529: V      56      2       86
        !          45530: W      82      2       87
        !          45531: X      54      2       88
        !          45532: Y      56      2       89
        !          45533: Z      54      2       90
        !          45534: [      30      3       91
        !          45535: \      52      2       92
        !          45536: bs     "
        !          45537: ]      30      3       93
        !          45538: ---    60      2       94
        !          45539: ---    50      1       95
        !          45540: `      30      2       96
        !          45541: a      54      0       97
        !          45542: b      54      2       98
        !          45543: c      48      0       99
        !          45544: d      54      2       100
        !          45545: e      54      0       101
        !          45546: f      30      2       102
        !          45547: g      50      1       103
        !          45548: h      54      2       104
        !          45549: i      24      2       105
        !          45550: j      22      3       106
        !          45551: k      50      2       107
        !          45552: l      24      2       108
        !          45553: m      82      0       109
        !          45554: n      54      0       110
        !          45555: o      54      0       111
        !          45556: p      54      1       112
        !          45557: q      54      1       113
        !          45558: r      32      0       114
        !          45559: s      52      0       115
        !          45560: t      32      2       116
        !          45561: u      54      0       117
        !          45562: v      44      0       118
        !          45563: w      66      0       119
        !          45564: x      44      0       120
        !          45565: y      42      1       121
        !          45566: z      42      0       122
        !          45567: {      30      3       123
        !          45568: ---    26      2       124
        !          45569: }      30      3       125
        !          45570: ---    60      0       126
        !          45571: ---    30      1       161
        !          45572: ct     60      2       162
        !          45573: ps     60      2       163
        !          45574: fr     16      2       164
        !          45575: yn     60      2       165
        !          45576: fn     60      3       166
        !          45577: sc     60      3       167
        !          45578: cr     60      0       168
        !          45579: ---    30      2       169
        !          45580: ``     46      2       170
        !          45581: ---    40      0       171
        !          45582: ---    26      0       172
        !          45583: ---    26      0       173
        !          45584: fi     50      2       174
        !          45585: fl     50      2       175
        !          45586: en     50      0       177
        !          45587: \-     "
        !          45588: dg     60      3       178
        !          45589: dd     60      3       179
        !          45590: ---    30      0       180
        !          45591: pg     54      3       182
        !          45592: ---    60      0       183
        !          45593: ---    30      1       184
        !          45594: ---    46      1       185
        !          45595: ''     46      2       186
        !          45596: ---    40      0       187
        !          45597: ---    100     0       188
        !          45598: ---    104     2       189
        !          45599: ---    54      1       191
        !          45600: ga     38      2       193
        !          45601: \`     "
        !          45602: aa     38      2       194
        !          45603: \'     "
        !          45604: ^a     48      2       195
        !          45605: ^      "
        !          45606: ~a     50      2       196
        !          45607: ~      "
        !          45608: -a     46      2       197
        !          45609: Ua     48      2       198
        !          45610: .a     24      2       199
        !          45611: :a     40      2       200
        !          45612: oa     32      2       202
        !          45613: ,a     32      1       203
        !          45614: "a     50      2       205
        !          45615: Ca     32      1       206
        !          45616: va     48      2       207
        !          45617: em     100     0       208
        !          45618: ---    96      2       225
        !          45619: ---    36      2       227
        !          45620: ---    50      2       232
        !          45621: ---    66      2       233
        !          45622: ---    100     2       234
        !          45623: ---    36      2       235
        !          45624: ---    90      0       241
        !          45625: ---    24      0       245
        !          45626: ---    20      2       248
        !          45627: ---    54      0       249
        !          45628: ---    88      0       250
        !          45629: ---    58      2       251
        !          45630: 0707070014231030771006440057030057030000010304660522627502700003000000003362post.src/devpost.add/F2name F2
        !          45631: fontname FranklinGothic-BookOblique
        !          45632: ligatures fi fl 0
        !          45633: spacewidth 30
        !          45634: charset
        !          45635: !      30      2       33
        !          45636: "      46      2       34
        !          45637: dq     "
        !          45638: #      60      2       35
        !          45639: $      60      2       36
        !          45640: %      70      2       37
        !          45641: &      68      2       38
        !          45642: '      30      2       39
        !          45643: (      30      3       40
        !          45644: )      30      3       41
        !          45645: *      60      2       42
        !          45646: +      60      0       43
        !          45647: ,      30      1       44
        !          45648: hy     22      0       45
        !          45649: -      "
        !          45650: .      30      0       46
        !          45651: /      52      3       47
        !          45652: 0      60      2       48
        !          45653: 1      60      2       49
        !          45654: 2      60      2       50
        !          45655: 3      60      2       51
        !          45656: 4      60      2       52
        !          45657: 5      60      2       53
        !          45658: 6      60      2       54
        !          45659: 7      60      2       55
        !          45660: 8      60      2       56
        !          45661: 9      60      2       57
        !          45662: :      30      0       58
        !          45663: ;      30      1       59
        !          45664: ---    60      0       60
        !          45665: =      60      0       61
        !          45666: ---    60      0       62
        !          45667: ?      54      2       63
        !          45668: @      80      2       64
        !          45669: A      56      2       65
        !          45670: B      62      2       66
        !          45671: C      62      2       67
        !          45672: D      66      2       68
        !          45673: E      56      2       69
        !          45674: F      48      2       70
        !          45675: G      66      2       71
        !          45676: H      66      2       72
        !          45677: I      26      2       73
        !          45678: J      40      2       74
        !          45679: K      62      2       75
        !          45680: L      50      2       76
        !          45681: M      82      2       77
        !          45682: N      66      2       78
        !          45683: O      66      2       79
        !          45684: P      56      2       80
        !          45685: Q      66      3       81
        !          45686: R      62      2       82
        !          45687: S      62      2       83
        !          45688: T      50      2       84
        !          45689: U      64      2       85
        !          45690: V      56      2       86
        !          45691: W      82      2       87
        !          45692: X      54      2       88
        !          45693: Y      56      2       89
        !          45694: Z      54      2       90
        !          45695: [      30      3       91
        !          45696: \      52      2       92
        !          45697: bs     "
        !          45698: ]      30      3       93
        !          45699: ---    60      2       94
        !          45700: ---    50      1       95
        !          45701: `      30      2       96
        !          45702: a      54      0       97
        !          45703: b      54      2       98
        !          45704: c      48      0       99
        !          45705: d      54      2       100
        !          45706: e      54      0       101
        !          45707: f      30      2       102
        !          45708: g      50      1       103
        !          45709: h      54      2       104
        !          45710: i      24      2       105
        !          45711: j      22      3       106
        !          45712: k      50      2       107
        !          45713: l      24      2       108
        !          45714: m      82      0       109
        !          45715: n      54      0       110
        !          45716: o      54      0       111
        !          45717: p      54      1       112
        !          45718: q      54      1       113
        !          45719: r      32      0       114
        !          45720: s      52      0       115
        !          45721: t      32      2       116
        !          45722: u      54      0       117
        !          45723: v      44      0       118
        !          45724: w      66      0       119
        !          45725: x      44      0       120
        !          45726: y      42      1       121
        !          45727: z      42      0       122
        !          45728: {      30      3       123
        !          45729: ---    26      2       124
        !          45730: }      30      3       125
        !          45731: ---    60      0       126
        !          45732: ---    30      1       161
        !          45733: ct     60      2       162
        !          45734: ps     60      2       163
        !          45735: fr     16      2       164
        !          45736: yn     60      2       165
        !          45737: fn     60      3       166
        !          45738: sc     60      3       167
        !          45739: cr     60      0       168
        !          45740: ---    30      2       169
        !          45741: ``     46      2       170
        !          45742: ---    40      0       171
        !          45743: ---    26      0       172
        !          45744: ---    26      0       173
        !          45745: fi     50      2       174
        !          45746: fl     50      2       175
        !          45747: en     50      0       177
        !          45748: \-     "
        !          45749: dg     60      3       178
        !          45750: dd     60      3       179
        !          45751: ---    30      0       180
        !          45752: pg     54      3       182
        !          45753: ---    60      0       183
        !          45754: ---    30      1       184
        !          45755: ---    46      1       185
        !          45756: ''     46      2       186
        !          45757: ---    40      0       187
        !          45758: ---    100     0       188
        !          45759: ---    104     2       189
        !          45760: ---    54      1       191
        !          45761: ga     38      2       193
        !          45762: \`     "
        !          45763: aa     38      2       194
        !          45764: \'     "
        !          45765: ^a     48      2       195
        !          45766: ^      "
        !          45767: ~a     50      2       196
        !          45768: ~      "
        !          45769: -a     46      2       197
        !          45770: Ua     48      2       198
        !          45771: .a     24      2       199
        !          45772: :a     40      2       200
        !          45773: oa     32      2       202
        !          45774: ,a     32      1       203
        !          45775: "a     50      2       205
        !          45776: Ca     32      1       206
        !          45777: va     48      2       207
        !          45778: em     100     0       208
        !          45779: ---    96      2       225
        !          45780: ---    36      2       227
        !          45781: ---    50      2       232
        !          45782: ---    66      2       233
        !          45783: ---    100     2       234
        !          45784: ---    36      2       235
        !          45785: ---    90      0       241
        !          45786: ---    24      0       245
        !          45787: ---    20      2       248
        !          45788: ---    54      0       249
        !          45789: ---    88      0       250
        !          45790: ---    58      2       251
        !          45791: 0707070014231031001006440057030057030000010305000522627502700003000000003351post.src/devpost.add/F3name F3
        !          45792: fontname FranklinGothic-Demi
        !          45793: ligatures fi fl 0
        !          45794: spacewidth 30
        !          45795: charset
        !          45796: !      32      2       33
        !          45797: "      46      2       34
        !          45798: dq     "
        !          45799: #      60      2       35
        !          45800: $      60      2       36
        !          45801: %      70      2       37
        !          45802: &      72      2       38
        !          45803: '      30      2       39
        !          45804: (      38      3       40
        !          45805: )      38      3       41
        !          45806: *      60      2       42
        !          45807: +      60      0       43
        !          45808: ,      30      1       44
        !          45809: hy     24      0       45
        !          45810: -      "
        !          45811: .      30      0       46
        !          45812: /      60      3       47
        !          45813: 0      60      2       48
        !          45814: 1      60      2       49
        !          45815: 2      60      2       50
        !          45816: 3      60      2       51
        !          45817: 4      60      2       52
        !          45818: 5      60      2       53
        !          45819: 6      60      2       54
        !          45820: 7      60      2       55
        !          45821: 8      60      2       56
        !          45822: 9      60      2       57
        !          45823: :      30      0       58
        !          45824: ;      30      1       59
        !          45825: ---    60      0       60
        !          45826: =      60      0       61
        !          45827: ---    60      0       62
        !          45828: ?      54      2       63
        !          45829: @      80      2       64
        !          45830: A      64      2       65
        !          45831: B      66      2       66
        !          45832: C      66      2       67
        !          45833: D      66      2       68
        !          45834: E      58      2       69
        !          45835: F      54      2       70
        !          45836: G      66      2       71
        !          45837: H      66      2       72
        !          45838: I      30      2       73
        !          45839: J      40      2       74
        !          45840: K      64      2       75
        !          45841: L      50      2       76
        !          45842: M      88      2       77
        !          45843: N      66      2       78
        !          45844: O      66      2       79
        !          45845: P      62      2       80
        !          45846: Q      66      3       81
        !          45847: R      66      2       82
        !          45848: S      60      2       83
        !          45849: T      54      2       84
        !          45850: U      66      2       85
        !          45851: V      60      2       86
        !          45852: W      90      2       87
        !          45853: X      64      2       88
        !          45854: Y      60      2       89
        !          45855: Z      66      2       90
        !          45856: [      38      3       91
        !          45857: \      60      2       92
        !          45858: bs     "
        !          45859: ]      38      3       93
        !          45860: ---    60      2       94
        !          45861: ---    50      1       95
        !          45862: `      30      2       96
        !          45863: a      54      0       97
        !          45864: b      54      2       98
        !          45865: c      54      0       99
        !          45866: d      54      2       100
        !          45867: e      54      0       101
        !          45868: f      30      2       102
        !          45869: g      56      3       103
        !          45870: h      54      2       104
        !          45871: i      26      2       105
        !          45872: j      26      3       106
        !          45873: k      56      2       107
        !          45874: l      26      2       108
        !          45875: m      82      0       109
        !          45876: n      54      0       110
        !          45877: o      54      0       111
        !          45878: p      54      1       112
        !          45879: q      54      1       113
        !          45880: r      34      0       114
        !          45881: s      50      0       115
        !          45882: t      38      2       116
        !          45883: u      54      0       117
        !          45884: v      48      0       118
        !          45885: w      74      0       119
        !          45886: x      54      0       120
        !          45887: y      48      1       121
        !          45888: z      42      0       122
        !          45889: {      38      3       123
        !          45890: ---    30      2       124
        !          45891: }      38      3       125
        !          45892: ---    60      0       126
        !          45893: ---    32      1       161
        !          45894: ct     60      2       162
        !          45895: ps     60      2       163
        !          45896: fr     8       2       164
        !          45897: yn     60      2       165
        !          45898: fn     60      3       166
        !          45899: sc     60      3       167
        !          45900: cr     60      0       168
        !          45901: ---    30      2       169
        !          45902: ``     48      2       170
        !          45903: ---    40      0       171
        !          45904: ---    26      0       172
        !          45905: ---    26      0       173
        !          45906: fi     56      2       174
        !          45907: fl     56      2       175
        !          45908: en     50      0       177
        !          45909: \-     "
        !          45910: dg     60      3       178
        !          45911: dd     60      3       179
        !          45912: ---    30      0       180
        !          45913: pg     54      3       182
        !          45914: ---    60      0       183
        !          45915: ---    30      1       184
        !          45916: ---    48      1       185
        !          45917: ''     48      2       186
        !          45918: ---    40      0       187
        !          45919: ---    100     0       188
        !          45920: ---    104     2       189
        !          45921: ---    54      1       191
        !          45922: ga     38      2       193
        !          45923: \`     "
        !          45924: aa     40      2       194
        !          45925: \'     "
        !          45926: ^a     50      2       195
        !          45927: ^      "
        !          45928: ~a     50      2       196
        !          45929: ~      "
        !          45930: -a     46      2       197
        !          45931: Ua     52      2       198
        !          45932: .a     26      2       199
        !          45933: :a     42      2       200
        !          45934: oa     32      2       202
        !          45935: ,a     34      1       203
        !          45936: "a     52      2       205
        !          45937: Ca     34      1       206
        !          45938: va     52      2       207
        !          45939: em     100     0       208
        !          45940: ---    90      2       225
        !          45941: ---    36      2       227
        !          45942: ---    52      2       232
        !          45943: ---    66      2       233
        !          45944: ---    96      2       234
        !          45945: ---    36      2       235
        !          45946: ---    82      0       241
        !          45947: ---    26      0       245
        !          45948: ---    26      2       248
        !          45949: ---    54      0       249
        !          45950: ---    86      0       250
        !          45951: ---    66      2       251
        !          45952: 0707070014231031011006440057030057030000010305020522627502700003000000003360post.src/devpost.add/F4name F4
        !          45953: fontname FranklinGothic-DemiOblique
        !          45954: ligatures fi fl 0
        !          45955: spacewidth 30
        !          45956: charset
        !          45957: !      32      2       33
        !          45958: "      46      2       34
        !          45959: dq     "
        !          45960: #      60      2       35
        !          45961: $      60      2       36
        !          45962: %      70      2       37
        !          45963: &      72      2       38
        !          45964: '      30      2       39
        !          45965: (      38      3       40
        !          45966: )      38      3       41
        !          45967: *      60      2       42
        !          45968: +      60      0       43
        !          45969: ,      30      1       44
        !          45970: hy     24      0       45
        !          45971: -      "
        !          45972: .      30      0       46
        !          45973: /      60      3       47
        !          45974: 0      60      2       48
        !          45975: 1      60      2       49
        !          45976: 2      60      2       50
        !          45977: 3      60      2       51
        !          45978: 4      60      2       52
        !          45979: 5      60      2       53
        !          45980: 6      60      2       54
        !          45981: 7      60      2       55
        !          45982: 8      60      2       56
        !          45983: 9      60      2       57
        !          45984: :      30      0       58
        !          45985: ;      30      1       59
        !          45986: ---    60      0       60
        !          45987: =      60      0       61
        !          45988: ---    60      0       62
        !          45989: ?      54      2       63
        !          45990: @      80      2       64
        !          45991: A      64      2       65
        !          45992: B      66      2       66
        !          45993: C      66      2       67
        !          45994: D      66      2       68
        !          45995: E      58      2       69
        !          45996: F      54      2       70
        !          45997: G      66      2       71
        !          45998: H      66      2       72
        !          45999: I      30      2       73
        !          46000: J      40      2       74
        !          46001: K      64      2       75
        !          46002: L      50      2       76
        !          46003: M      88      2       77
        !          46004: N      66      2       78
        !          46005: O      66      2       79
        !          46006: P      62      2       80
        !          46007: Q      66      3       81
        !          46008: R      66      2       82
        !          46009: S      60      2       83
        !          46010: T      54      2       84
        !          46011: U      66      2       85
        !          46012: V      60      2       86
        !          46013: W      90      2       87
        !          46014: X      64      2       88
        !          46015: Y      60      2       89
        !          46016: Z      66      2       90
        !          46017: [      38      3       91
        !          46018: \      60      2       92
        !          46019: bs     "
        !          46020: ]      38      3       93
        !          46021: ---    60      2       94
        !          46022: ---    50      1       95
        !          46023: `      30      2       96
        !          46024: a      54      0       97
        !          46025: b      54      2       98
        !          46026: c      54      0       99
        !          46027: d      54      2       100
        !          46028: e      54      0       101
        !          46029: f      30      2       102
        !          46030: g      56      3       103
        !          46031: h      54      2       104
        !          46032: i      26      2       105
        !          46033: j      26      3       106
        !          46034: k      56      2       107
        !          46035: l      26      2       108
        !          46036: m      82      0       109
        !          46037: n      54      0       110
        !          46038: o      54      0       111
        !          46039: p      54      1       112
        !          46040: q      54      1       113
        !          46041: r      34      0       114
        !          46042: s      50      0       115
        !          46043: t      38      2       116
        !          46044: u      54      0       117
        !          46045: v      48      0       118
        !          46046: w      74      0       119
        !          46047: x      54      0       120
        !          46048: y      48      1       121
        !          46049: z      42      0       122
        !          46050: {      38      3       123
        !          46051: ---    30      2       124
        !          46052: }      38      3       125
        !          46053: ---    60      0       126
        !          46054: ---    32      1       161
        !          46055: ct     60      2       162
        !          46056: ps     60      2       163
        !          46057: fr     8       2       164
        !          46058: yn     60      2       165
        !          46059: fn     60      3       166
        !          46060: sc     60      3       167
        !          46061: cr     60      0       168
        !          46062: ---    30      2       169
        !          46063: ``     48      2       170
        !          46064: ---    40      0       171
        !          46065: ---    26      0       172
        !          46066: ---    26      0       173
        !          46067: fi     56      2       174
        !          46068: fl     56      2       175
        !          46069: en     50      0       177
        !          46070: \-     "
        !          46071: dg     60      3       178
        !          46072: dd     60      3       179
        !          46073: ---    30      0       180
        !          46074: pg     54      3       182
        !          46075: ---    60      0       183
        !          46076: ---    30      1       184
        !          46077: ---    48      1       185
        !          46078: ''     48      2       186
        !          46079: ---    40      0       187
        !          46080: ---    100     0       188
        !          46081: ---    104     2       189
        !          46082: ---    54      1       191
        !          46083: ga     38      2       193
        !          46084: \`     "
        !          46085: aa     40      2       194
        !          46086: \'     "
        !          46087: ^a     50      2       195
        !          46088: ^      "
        !          46089: ~a     50      2       196
        !          46090: ~      "
        !          46091: -a     46      2       197
        !          46092: Ua     52      2       198
        !          46093: .a     26      2       199
        !          46094: :a     42      2       200
        !          46095: oa     32      2       202
        !          46096: ,a     34      1       203
        !          46097: "a     52      2       205
        !          46098: Ca     34      1       206
        !          46099: va     52      2       207
        !          46100: em     100     0       208
        !          46101: ---    90      2       225
        !          46102: ---    36      2       227
        !          46103: ---    52      2       232
        !          46104: ---    66      2       233
        !          46105: ---    96      2       234
        !          46106: ---    36      2       235
        !          46107: ---    82      0       241
        !          46108: ---    26      0       245
        !          46109: ---    26      2       248
        !          46110: ---    54      0       249
        !          46111: ---    86      0       250
        !          46112: ---    66      2       251
        !          46113: 0707070014231031021006440057030057030000010305040522627502700003000000003353post.src/devpost.add/F5name F5
        !          46114: fontname FranklinGothic-Heavy
        !          46115: ligatures fi fl 0
        !          46116: spacewidth 30
        !          46117: charset
        !          46118: !      32      2       33
        !          46119: "      52      2       34
        !          46120: dq     "
        !          46121: #      60      2       35
        !          46122: $      60      2       36
        !          46123: %      74      2       37
        !          46124: &      78      2       38
        !          46125: '      30      2       39
        !          46126: (      38      3       40
        !          46127: )      38      3       41
        !          46128: *      60      2       42
        !          46129: +      60      0       43
        !          46130: ,      30      1       44
        !          46131: hy     26      0       45
        !          46132: -      "
        !          46133: .      30      0       46
        !          46134: /      60      3       47
        !          46135: 0      60      2       48
        !          46136: 1      60      2       49
        !          46137: 2      60      2       50
        !          46138: 3      60      2       51
        !          46139: 4      60      2       52
        !          46140: 5      60      2       53
        !          46141: 6      60      2       54
        !          46142: 7      60      2       55
        !          46143: 8      60      2       56
        !          46144: 9      60      2       57
        !          46145: :      30      0       58
        !          46146: ;      30      1       59
        !          46147: ---    60      0       60
        !          46148: =      60      0       61
        !          46149: ---    60      0       62
        !          46150: ?      60      2       63
        !          46151: @      80      2       64
        !          46152: A      66      2       65
        !          46153: B      66      2       66
        !          46154: C      66      2       67
        !          46155: D      68      2       68
        !          46156: E      60      2       69
        !          46157: F      54      2       70
        !          46158: G      68      2       71
        !          46159: H      68      2       72
        !          46160: I      32      2       73
        !          46161: J      44      2       74
        !          46162: K      66      2       75
        !          46163: L      54      2       76
        !          46164: M      86      2       77
        !          46165: N      70      2       78
        !          46166: O      70      2       79
        !          46167: P      66      2       80
        !          46168: Q      70      3       81
        !          46169: R      68      2       82
        !          46170: S      66      2       83
        !          46171: T      50      2       84
        !          46172: U      66      2       85
        !          46173: V      66      2       86
        !          46174: W      92      2       87
        !          46175: X      70      2       88
        !          46176: Y      66      2       89
        !          46177: Z      60      2       90
        !          46178: [      38      3       91
        !          46179: \      60      2       92
        !          46180: bs     "
        !          46181: ]      38      3       93
        !          46182: ---    60      2       94
        !          46183: ---    50      1       95
        !          46184: `      30      2       96
        !          46185: a      58      0       97
        !          46186: b      58      2       98
        !          46187: c      54      0       99
        !          46188: d      58      2       100
        !          46189: e      60      0       101
        !          46190: f      40      2       102
        !          46191: g      58      3       103
        !          46192: h      58      2       104
        !          46193: i      30      2       105
        !          46194: j      30      3       106
        !          46195: k      58      2       107
        !          46196: l      30      2       108
        !          46197: m      86      0       109
        !          46198: n      58      0       110
        !          46199: o      60      0       111
        !          46200: p      58      1       112
        !          46201: q      58      1       113
        !          46202: r      38      0       114
        !          46203: s      54      0       115
        !          46204: t      40      2       116
        !          46205: u      60      0       117
        !          46206: v      54      0       118
        !          46207: w      78      0       119
        !          46208: x      58      0       120
        !          46209: y      54      1       121
        !          46210: z      50      0       122
        !          46211: {      38      3       123
        !          46212: ---    30      2       124
        !          46213: }      38      3       125
        !          46214: ---    60      0       126
        !          46215: ---    32      1       161
        !          46216: ct     60      2       162
        !          46217: ps     60      2       163
        !          46218: fr     12      2       164
        !          46219: yn     60      2       165
        !          46220: fn     60      3       166
        !          46221: sc     60      3       167
        !          46222: cr     60      0       168
        !          46223: ---    30      2       169
        !          46224: ``     52      2       170
        !          46225: ---    42      0       171
        !          46226: ---    26      0       172
        !          46227: ---    26      0       173
        !          46228: fi     62      2       174
        !          46229: fl     60      2       175
        !          46230: en     50      0       177
        !          46231: \-     "
        !          46232: dg     60      3       178
        !          46233: dd     60      3       179
        !          46234: ---    30      0       180
        !          46235: pg     54      3       182
        !          46236: ---    60      0       183
        !          46237: ---    30      1       184
        !          46238: ---    52      1       185
        !          46239: ''     52      2       186
        !          46240: ---    42      0       187
        !          46241: ---    100     0       188
        !          46242: ---    108     2       189
        !          46243: ---    60      1       191
        !          46244: ga     40      2       193
        !          46245: \`     "
        !          46246: aa     40      2       194
        !          46247: \'     "
        !          46248: ^a     54      2       195
        !          46249: ^      "
        !          46250: ~a     50      2       196
        !          46251: ~      "
        !          46252: -a     46      2       197
        !          46253: Ua     52      2       198
        !          46254: .a     28      2       199
        !          46255: :a     44      2       200
        !          46256: oa     34      2       202
        !          46257: ,a     34      1       203
        !          46258: "a     60      2       205
        !          46259: Ca     34      1       206
        !          46260: va     54      2       207
        !          46261: em     100     0       208
        !          46262: ---    96      2       225
        !          46263: ---    38      2       227
        !          46264: ---    56      2       232
        !          46265: ---    70      2       233
        !          46266: ---    98      2       234
        !          46267: ---    38      2       235
        !          46268: ---    82      0       241
        !          46269: ---    30      0       245
        !          46270: ---    30      2       248
        !          46271: ---    60      0       249
        !          46272: ---    86      0       250
        !          46273: ---    66      2       251
        !          46274: 0707070014231031031006440057030057030000010305060522627502700003000000003361post.src/devpost.add/F6name F6
        !          46275: fontname FranklinGothic-HeavyOblique
        !          46276: ligatures fi fl 0
        !          46277: spacewidth 30
        !          46278: charset
        !          46279: !      32      2       33
        !          46280: "      52      2       34
        !          46281: dq     "
        !          46282: #      60      2       35
        !          46283: $      60      2       36
        !          46284: %      74      2       37
        !          46285: &      78      2       38
        !          46286: '      30      2       39
        !          46287: (      38      3       40
        !          46288: )      38      3       41
        !          46289: *      60      2       42
        !          46290: +      60      0       43
        !          46291: ,      30      1       44
        !          46292: hy     26      0       45
        !          46293: -      "
        !          46294: .      30      0       46
        !          46295: /      60      3       47
        !          46296: 0      60      2       48
        !          46297: 1      60      2       49
        !          46298: 2      60      2       50
        !          46299: 3      60      2       51
        !          46300: 4      60      2       52
        !          46301: 5      60      2       53
        !          46302: 6      60      2       54
        !          46303: 7      60      2       55
        !          46304: 8      60      2       56
        !          46305: 9      60      2       57
        !          46306: :      30      0       58
        !          46307: ;      30      1       59
        !          46308: ---    60      0       60
        !          46309: =      60      0       61
        !          46310: ---    60      0       62
        !          46311: ?      60      2       63
        !          46312: @      80      2       64
        !          46313: A      66      2       65
        !          46314: B      66      2       66
        !          46315: C      66      2       67
        !          46316: D      68      2       68
        !          46317: E      60      2       69
        !          46318: F      54      2       70
        !          46319: G      68      2       71
        !          46320: H      68      2       72
        !          46321: I      32      2       73
        !          46322: J      44      2       74
        !          46323: K      66      2       75
        !          46324: L      54      2       76
        !          46325: M      86      2       77
        !          46326: N      70      2       78
        !          46327: O      70      2       79
        !          46328: P      66      2       80
        !          46329: Q      70      3       81
        !          46330: R      68      2       82
        !          46331: S      66      2       83
        !          46332: T      50      2       84
        !          46333: U      66      2       85
        !          46334: V      66      2       86
        !          46335: W      92      2       87
        !          46336: X      70      2       88
        !          46337: Y      66      2       89
        !          46338: Z      60      2       90
        !          46339: [      38      3       91
        !          46340: \      60      2       92
        !          46341: bs     "
        !          46342: ]      38      3       93
        !          46343: ---    60      2       94
        !          46344: ---    50      1       95
        !          46345: `      30      2       96
        !          46346: a      58      0       97
        !          46347: b      58      2       98
        !          46348: c      54      0       99
        !          46349: d      58      2       100
        !          46350: e      60      0       101
        !          46351: f      40      2       102
        !          46352: g      58      3       103
        !          46353: h      58      2       104
        !          46354: i      30      2       105
        !          46355: j      30      3       106
        !          46356: k      58      2       107
        !          46357: l      30      2       108
        !          46358: m      86      0       109
        !          46359: n      58      0       110
        !          46360: o      60      0       111
        !          46361: p      58      1       112
        !          46362: q      58      1       113
        !          46363: r      38      0       114
        !          46364: s      54      0       115
        !          46365: t      40      2       116
        !          46366: u      60      0       117
        !          46367: v      54      0       118
        !          46368: w      78      0       119
        !          46369: x      58      0       120
        !          46370: y      54      1       121
        !          46371: z      50      0       122
        !          46372: {      38      3       123
        !          46373: or     30      2       124
        !          46374: }      38      3       125
        !          46375: ---    60      0       126
        !          46376: ---    32      1       161
        !          46377: ct     60      2       162
        !          46378: ps     60      2       163
        !          46379: fr     12      2       164
        !          46380: yn     60      2       165
        !          46381: fn     60      3       166
        !          46382: sc     60      3       167
        !          46383: cr     60      0       168
        !          46384: ---    30      2       169
        !          46385: ``     52      2       170
        !          46386: ---    42      0       171
        !          46387: ---    26      0       172
        !          46388: ---    26      0       173
        !          46389: fi     62      2       174
        !          46390: fl     60      2       175
        !          46391: en     50      0       177
        !          46392: \-     "
        !          46393: dg     60      3       178
        !          46394: dd     60      3       179
        !          46395: ---    30      0       180
        !          46396: pg     54      3       182
        !          46397: ---    60      0       183
        !          46398: ---    30      1       184
        !          46399: ---    52      1       185
        !          46400: ''     52      2       186
        !          46401: ---    42      0       187
        !          46402: ---    100     0       188
        !          46403: ---    108     2       189
        !          46404: ---    60      1       191
        !          46405: ga     40      2       193
        !          46406: \`     "
        !          46407: aa     40      2       194
        !          46408: \'     "
        !          46409: ^a     54      2       195
        !          46410: ^      "
        !          46411: ~a     50      2       196
        !          46412: ~      "
        !          46413: -a     46      2       197
        !          46414: Ua     52      2       198
        !          46415: .a     28      2       199
        !          46416: :a     44      2       200
        !          46417: oa     34      2       202
        !          46418: ,a     34      1       203
        !          46419: "a     60      2       205
        !          46420: Ca     34      1       206
        !          46421: va     54      2       207
        !          46422: em     100     0       208
        !          46423: ---    96      2       225
        !          46424: ---    38      2       227
        !          46425: ---    56      2       232
        !          46426: ---    70      2       233
        !          46427: ---    98      2       234
        !          46428: ---    38      2       235
        !          46429: ---    82      0       241
        !          46430: ---    30      0       245
        !          46431: ---    30      2       248
        !          46432: ---    60      0       249
        !          46433: ---    86      0       250
        !          46434: ---    66      2       251
        !          46435: 0707070014231031041006440057030057030000010305200522627502700003000000003346post.src/devpost.add/G1name G1
        !          46436: fontname Garamond-Light
        !          46437: ligatures fi fl 0
        !          46438: spacewidth 32
        !          46439: charset
        !          46440: !      22      2       33
        !          46441: "      34      2       34
        !          46442: dq     "
        !          46443: #      60      2       35
        !          46444: $      50      2       36
        !          46445: %      76      2       37
        !          46446: &      70      2       38
        !          46447: '      22      2       39
        !          46448: (      36      3       40
        !          46449: )      36      3       41
        !          46450: *      34      2       42
        !          46451: +      56      0       43
        !          46452: ,      26      1       44
        !          46453: hy     32      0       45
        !          46454: -      "
        !          46455: .      26      0       46
        !          46456: /      40      2       47
        !          46457: 0      50      2       48
        !          46458: 1      50      2       49
        !          46459: 2      50      2       50
        !          46460: 3      50      2       51
        !          46461: 4      50      2       52
        !          46462: 5      50      2       53
        !          46463: 6      50      2       54
        !          46464: 7      50      2       55
        !          46465: 8      50      2       56
        !          46466: 9      50      2       57
        !          46467: :      26      0       58
        !          46468: ;      26      1       59
        !          46469: ---    56      0       60
        !          46470: =      56      0       61
        !          46471: ---    56      0       62
        !          46472: ?      30      2       63
        !          46473: @      74      3       64
        !          46474: A      64      2       65
        !          46475: B      64      2       66
        !          46476: C      62      2       67
        !          46477: D      74      2       68
        !          46478: E      56      2       69
        !          46479: F      52      2       70
        !          46480: G      74      2       71
        !          46481: H      74      2       72
        !          46482: I      32      2       73
        !          46483: J      32      2       74
        !          46484: K      66      2       75
        !          46485: L      48      2       76
        !          46486: M      80      2       77
        !          46487: N      70      2       78
        !          46488: O      78      2       79
        !          46489: P      56      2       80
        !          46490: Q      78      3       81
        !          46491: R      58      2       82
        !          46492: S      48      2       83
        !          46493: T      58      2       84
        !          46494: U      70      2       85
        !          46495: V      64      2       86
        !          46496: W      92      2       87
        !          46497: X      64      2       88
        !          46498: Y      66      2       89
        !          46499: Z      60      2       90
        !          46500: [      24      3       91
        !          46501: \      52      2       92
        !          46502: bs     "
        !          46503: ]      24      3       93
        !          46504: ---    56      2       94
        !          46505: ---    50      1       95
        !          46506: `      22      2       96
        !          46507: a      48      0       97
        !          46508: b      56      2       98
        !          46509: c      46      0       99
        !          46510: d      56      2       100
        !          46511: e      50      0       101
        !          46512: f      30      2       102
        !          46513: g      52      1       103
        !          46514: h      56      2       104
        !          46515: i      26      2       105
        !          46516: j      22      3       106
        !          46517: k      54      2       107
        !          46518: l      26      2       108
        !          46519: m      82      0       109
        !          46520: n      56      0       110
        !          46521: o      56      0       111
        !          46522: p      58      1       112
        !          46523: q      56      1       113
        !          46524: r      34      0       114
        !          46525: s      40      0       115
        !          46526: t      28      2       116
        !          46527: u      56      0       117
        !          46528: v      50      0       118
        !          46529: w      78      0       119
        !          46530: x      52      0       120
        !          46531: y      50      1       121
        !          46532: z      46      0       122
        !          46533: {      26      3       123
        !          46534: ---    56      3       124
        !          46535: }      26      3       125
        !          46536: ---    56      0       126
        !          46537: ---    22      1       161
        !          46538: ct     50      2       162
        !          46539: ps     64      2       163
        !          46540: fr     16      2       164
        !          46541: yn     66      2       165
        !          46542: fn     50      3       166
        !          46543: sc     36      3       167
        !          46544: cr     50      2       168
        !          46545: ---    20      2       169
        !          46546: ``     38      2       170
        !          46547: ---    26      0       171
        !          46548: ---    16      0       172
        !          46549: ---    16      0       173
        !          46550: fi     56      2       174
        !          46551: fl     56      2       175
        !          46552: en     50      0       177
        !          46553: \-     "
        !          46554: dg     40      3       178
        !          46555: dd     40      3       179
        !          46556: ---    26      0       180
        !          46557: pg     62      3       182
        !          46558: ---    62      0       183
        !          46559: ---    22      1       184
        !          46560: ---    36      1       185
        !          46561: ''     38      2       186
        !          46562: ---    26      0       187
        !          46563: ---    100     0       188
        !          46564: ---    108     2       189
        !          46565: ---    30      1       191
        !          46566: ga     36      2       193
        !          46567: \`     "
        !          46568: aa     36      2       194
        !          46569: \'     "
        !          46570: ^a     42      2       195
        !          46571: ^      "
        !          46572: ~a     42      2       196
        !          46573: ~      "
        !          46574: -a     38      2       197
        !          46575: Ua     40      2       198
        !          46576: .a     22      2       199
        !          46577: :a     40      2       200
        !          46578: oa     28      2       202
        !          46579: ,a     32      1       203
        !          46580: "a     38      2       205
        !          46581: Ca     30      1       206
        !          46582: va     42      2       207
        !          46583: em     100     0       208
        !          46584: ---    94      2       225
        !          46585: ---    34      2       227
        !          46586: ---    48      2       232
        !          46587: ---    78      2       233
        !          46588: ---    100     2       234
        !          46589: ---    34      2       235
        !          46590: ---    74      0       241
        !          46591: ---    26      0       245
        !          46592: ---    26      2       248
        !          46593: ---    56      0       249
        !          46594: ---    88      0       250
        !          46595: ---    56      2       251
        !          46596: 0707070014231031051006440057030057030000010305220522627502700003000000003353post.src/devpost.add/G2name G2
        !          46597: fontname Garamond-LightItalic
        !          46598: ligatures fi fl 0
        !          46599: spacewidth 27
        !          46600: charset
        !          46601: !      26      2       33
        !          46602: "      35      2       34
        !          46603: dq     "
        !          46604: #      54      2       35
        !          46605: $      55      2       36
        !          46606: %      78      2       37
        !          46607: &      64      2       38
        !          46608: '      25      2       39
        !          46609: (      38      3       40
        !          46610: )      38      3       41
        !          46611: *      32      2       42
        !          46612: +      57      0       43
        !          46613: ,      27      1       44
        !          46614: hy     33      0       45
        !          46615: -      "
        !          46616: .      27      0       46
        !          46617: /      30      2       47
        !          46618: 0      55      2       48
        !          46619: 1      55      2       49
        !          46620: 2      55      2       50
        !          46621: 3      55      2       51
        !          46622: 4      55      2       52
        !          46623: 5      55      2       53
        !          46624: 6      55      2       54
        !          46625: 7      55      2       55
        !          46626: 8      55      2       56
        !          46627: 9      55      2       57
        !          46628: :      27      0       58
        !          46629: ;      27      1       59
        !          46630: ---    57      0       60
        !          46631: =      57      0       61
        !          46632: ---    57      0       62
        !          46633: ?      35      2       63
        !          46634: @      69      3       64
        !          46635: A      64      2       65
        !          46636: B      63      2       66
        !          46637: C      63      2       67
        !          46638: D      72      2       68
        !          46639: E      55      2       69
        !          46640: F      52      2       70
        !          46641: G      71      2       71
        !          46642: H      73      2       72
        !          46643: I      31      2       73
        !          46644: J      30      2       74
        !          46645: K      63      2       75
        !          46646: L      46      2       76
        !          46647: M      80      2       77
        !          46648: N      66      2       78
        !          46649: O      72      2       79
        !          46650: P      58      2       80
        !          46651: Q      73      3       81
        !          46652: R      58      2       82
        !          46653: S      46      2       83
        !          46654: T      54      2       84
        !          46655: U      63      2       85
        !          46656: V      62      2       86
        !          46657: W      90      2       87
        !          46658: X      65      2       88
        !          46659: Y      58      2       89
        !          46660: Z      59      2       90
        !          46661: [      23      3       91
        !          46662: \      51      2       92
        !          46663: bs     "
        !          46664: ]      23      3       93
        !          46665: ---    57      2       94
        !          46666: ---    50      1       95
        !          46667: `      25      2       96
        !          46668: a      57      0       97
        !          46669: b      52      2       98
        !          46670: c      46      0       99
        !          46671: d      57      2       100
        !          46672: e      44      0       101
        !          46673: f      30      2       102
        !          46674: g      48      1       103
        !          46675: h      56      2       104
        !          46676: i      30      2       105
        !          46677: j      27      3       106
        !          46678: k      49      2       107
        !          46679: l      26      2       108
        !          46680: m      84      0       109
        !          46681: n      62      0       110
        !          46682: o      50      0       111
        !          46683: p      51      1       112
        !          46684: q      52      1       113
        !          46685: r      39      0       114
        !          46686: s      36      0       115
        !          46687: t      28      2       116
        !          46688: u      61      0       117
        !          46689: v      46      0       118
        !          46690: w      73      0       119
        !          46691: x      53      0       120
        !          46692: y      47      1       121
        !          46693: z      51      0       122
        !          46694: {      26      3       123
        !          46695: ---    57      3       124
        !          46696: }      26      3       125
        !          46697: ---    57      0       126
        !          46698: ---    26      1       161
        !          46699: ct     55      2       162
        !          46700: ps     65      2       163
        !          46701: fr     12      2       164
        !          46702: yn     55      2       165
        !          46703: fn     55      3       166
        !          46704: sc     36      3       167
        !          46705: cr     56      2       168
        !          46706: ---    19      2       169
        !          46707: ``     41      2       170
        !          46708: ---    27      0       171
        !          46709: ---    16      0       172
        !          46710: ---    16      0       173
        !          46711: fi     56      2       174
        !          46712: fl     56      2       175
        !          46713: en     50      0       177
        !          46714: \-     "
        !          46715: dg     42      3       178
        !          46716: dd     42      3       179
        !          46717: ---    27      0       180
        !          46718: pg     61      3       182
        !          46719: ---    62      0       183
        !          46720: ---    25      1       184
        !          46721: ---    41      1       185
        !          46722: ''     41      2       186
        !          46723: ---    27      0       187
        !          46724: ---    100     0       188
        !          46725: ---    113     2       189
        !          46726: ---    35      1       191
        !          46727: ga     39      2       193
        !          46728: \`     "
        !          46729: aa     34      2       194
        !          46730: \'     "
        !          46731: ^a     43      2       195
        !          46732: ^      "
        !          46733: ~a     46      2       196
        !          46734: ~      "
        !          46735: -a     38      2       197
        !          46736: Ua     43      2       198
        !          46737: .a     21      2       199
        !          46738: :a     36      2       200
        !          46739: oa     29      2       202
        !          46740: ,a     33      1       203
        !          46741: "a     32      2       205
        !          46742: Ca     29      1       206
        !          46743: va     43      2       207
        !          46744: em     100     0       208
        !          46745: ---    80      2       225
        !          46746: ---    37      2       227
        !          46747: ---    47      2       232
        !          46748: ---    72      2       233
        !          46749: ---    92      2       234
        !          46750: ---    37      2       235
        !          46751: ---    78      0       241
        !          46752: ---    30      0       245
        !          46753: ---    29      2       248
        !          46754: ---    50      0       249
        !          46755: ---    81      0       250
        !          46756: ---    59      2       251
        !          46757: 0707070014231031061006440057030057030000010305240522627503000003000000003345post.src/devpost.add/G3name G3
        !          46758: fontname Garamond-Bold
        !          46759: ligatures fi fl 0
        !          46760: spacewidth 28
        !          46761: charset
        !          46762: !      28      2       33
        !          46763: "      40      2       34
        !          46764: dq     "
        !          46765: #      60      2       35
        !          46766: $      56      2       36
        !          46767: %      88      2       37
        !          46768: &      76      2       38
        !          46769: '      26      2       39
        !          46770: (      40      3       40
        !          46771: )      40      3       41
        !          46772: *      34      2       42
        !          46773: +      56      0       43
        !          46774: ,      28      1       44
        !          46775: hy     30      0       45
        !          46776: -      "
        !          46777: .      28      0       46
        !          46778: /      44      2       47
        !          46779: 0      56      2       48
        !          46780: 1      56      2       49
        !          46781: 2      56      2       50
        !          46782: 3      56      2       51
        !          46783: 4      56      2       52
        !          46784: 5      56      2       53
        !          46785: 6      56      2       54
        !          46786: 7      56      2       55
        !          46787: 8      56      2       56
        !          46788: 9      56      2       57
        !          46789: :      28      0       58
        !          46790: ;      28      1       59
        !          46791: ---    56      0       60
        !          46792: =      56      0       61
        !          46793: ---    56      0       62
        !          46794: ?      42      2       63
        !          46795: @      72      3       64
        !          46796: A      66      2       65
        !          46797: B      64      2       66
        !          46798: C      66      2       67
        !          46799: D      76      2       68
        !          46800: E      60      2       69
        !          46801: F      56      2       70
        !          46802: G      72      2       71
        !          46803: H      78      2       72
        !          46804: I      36      2       73
        !          46805: J      40      2       74
        !          46806: K      74      2       75
        !          46807: L      54      2       76
        !          46808: M      86      2       77
        !          46809: N      72      2       78
        !          46810: O      76      2       79
        !          46811: P      60      2       80
        !          46812: Q      76      3       81
        !          46813: R      66      2       82
        !          46814: S      52      2       83
        !          46815: T      60      2       84
        !          46816: U      70      2       85
        !          46817: V      64      2       86
        !          46818: W      94      2       87
        !          46819: X      70      2       88
        !          46820: Y      68      2       89
        !          46821: Z      62      2       90
        !          46822: [      28      3       91
        !          46823: \      54      2       92
        !          46824: bs     "
        !          46825: ]      28      3       93
        !          46826: ---    56      2       94
        !          46827: ---    50      1       95
        !          46828: `      26      2       96
        !          46829: a      52      0       97
        !          46830: b      60      2       98
        !          46831: c      50      0       99
        !          46832: d      60      2       100
        !          46833: e      52      0       101
        !          46834: f      36      2       102
        !          46835: g      54      1       103
        !          46836: h      66      2       104
        !          46837: i      32      2       105
        !          46838: j      30      3       106
        !          46839: k      60      2       107
        !          46840: l      32      2       108
        !          46841: m      94      0       109
        !          46842: n      66      0       110
        !          46843: o      60      0       111
        !          46844: p      64      1       112
        !          46845: q      60      1       113
        !          46846: r      46      0       114
        !          46847: s      46      0       115
        !          46848: t      34      2       116
        !          46849: u      60      0       117
        !          46850: v      54      0       118
        !          46851: w      82      0       119
        !          46852: x      62      0       120
        !          46853: y      56      1       121
        !          46854: z      48      0       122
        !          46855: {      28      3       123
        !          46856: ---    56      3       124
        !          46857: }      28      3       125
        !          46858: ---    56      0       126
        !          46859: ---    28      1       161
        !          46860: ct     56      2       162
        !          46861: ps     68      2       163
        !          46862: fr     56      2       164
        !          46863: yn     72      2       165
        !          46864: fn     66      3       166
        !          46865: sc     40      3       167
        !          46866: cr     56      2       168
        !          46867: ---    22      2       169
        !          46868: ``     44      2       170
        !          46869: ---    34      0       171
        !          46870: ---    20      0       172
        !          46871: ---    20      0       173
        !          46872: fi     70      2       174
        !          46873: fl     70      2       175
        !          46874: en     50      0       177
        !          46875: \-     "
        !          46876: dg     54      3       178
        !          46877: dd     54      3       179
        !          46878: ---    28      0       180
        !          46879: pg     66      3       182
        !          46880: ---    62      0       183
        !          46881: ---    26      1       184
        !          46882: ---    44      1       185
        !          46883: ''     44      2       186
        !          46884: ---    34      0       187
        !          46885: ---    100     0       188
        !          46886: ---    126     2       189
        !          46887: ---    42      1       191
        !          46888: ga     40      2       193
        !          46889: \`     "
        !          46890: aa     40      2       194
        !          46891: \'     "
        !          46892: ^a     50      2       195
        !          46893: ^      "
        !          46894: ~a     52      2       196
        !          46895: ~      "
        !          46896: -a     52      2       197
        !          46897: Ua     48      2       198
        !          46898: .a     30      2       199
        !          46899: :a     44      2       200
        !          46900: oa     32      2       202
        !          46901: ,a     32      1       203
        !          46902: "a     42      2       205
        !          46903: Ca     34      1       206
        !          46904: va     50      2       207
        !          46905: em     100     0       208
        !          46906: ---    96      2       225
        !          46907: ---    36      2       227
        !          46908: ---    54      2       232
        !          46909: ---    76      2       233
        !          46910: ---    100     2       234
        !          46911: ---    36      2       235
        !          46912: ---    80      0       241
        !          46913: ---    32      0       245
        !          46914: ---    34      2       248
        !          46915: ---    60      0       249
        !          46916: ---    92      0       250
        !          46917: ---    64      2       251
        !          46918: 0707070014231031071006440057030057030000010305260522627503000003000000003354post.src/devpost.add/G4name G4
        !          46919: fontname Garamond-BoldItalic
        !          46920: ligatures fi fl 0
        !          46921: spacewidth 28
        !          46922: charset
        !          46923: !      24      2       33
        !          46924: "      40      2       34
        !          46925: dq     "
        !          46926: #      56      2       35
        !          46927: $      56      2       36
        !          46928: %      76      2       37
        !          46929: &      74      2       38
        !          46930: '      22      2       39
        !          46931: (      48      3       40
        !          46932: )      48      3       41
        !          46933: *      54      2       42
        !          46934: +      56      0       43
        !          46935: ,      24      1       44
        !          46936: hy     30      0       45
        !          46937: -      "
        !          46938: .      24      0       46
        !          46939: /      44      2       47
        !          46940: 0      56      2       48
        !          46941: 1      56      2       49
        !          46942: 2      56      2       50
        !          46943: 3      56      2       51
        !          46944: 4      56      2       52
        !          46945: 5      56      2       53
        !          46946: 6      56      2       54
        !          46947: 7      56      2       55
        !          46948: 8      56      2       56
        !          46949: 9      56      2       57
        !          46950: :      24      0       58
        !          46951: ;      24      1       59
        !          46952: ---    56      0       60
        !          46953: =      56      0       61
        !          46954: ---    56      0       62
        !          46955: ?      40      2       63
        !          46956: @      76      3       64
        !          46957: A      64      2       65
        !          46958: B      64      2       66
        !          46959: C      64      2       67
        !          46960: D      76      2       68
        !          46961: E      64      2       69
        !          46962: F      60      2       70
        !          46963: G      72      2       71
        !          46964: H      84      2       72
        !          46965: I      42      2       73
        !          46966: J      40      2       74
        !          46967: K      76      2       75
        !          46968: L      56      2       76
        !          46969: M      88      2       77
        !          46970: N      74      2       78
        !          46971: O      74      2       79
        !          46972: P      68      2       80
        !          46973: Q      74      3       81
        !          46974: R      72      2       82
        !          46975: S      52      2       83
        !          46976: T      58      2       84
        !          46977: U      72      2       85
        !          46978: V      64      2       86
        !          46979: W      90      2       87
        !          46980: X      72      2       88
        !          46981: Y      62      2       89
        !          46982: Z      62      2       90
        !          46983: [      34      3       91
        !          46984: \      54      2       92
        !          46985: bs     "
        !          46986: ]      34      3       93
        !          46987: ---    56      2       94
        !          46988: ---    50      1       95
        !          46989: `      22      2       96
        !          46990: a      62      0       97
        !          46991: b      56      2       98
        !          46992: c      50      0       99
        !          46993: d      62      2       100
        !          46994: e      52      0       101
        !          46995: f      38      2       102
        !          46996: g      56      1       103
        !          46997: h      64      2       104
        !          46998: i      34      2       105
        !          46999: j      32      3       106
        !          47000: k      60      2       107
        !          47001: l      28      2       108
        !          47002: m      86      0       109
        !          47003: n      58      0       110
        !          47004: o      60      0       111
        !          47005: p      64      1       112
        !          47006: q      60      1       113
        !          47007: r      50      0       114
        !          47008: s      50      0       115
        !          47009: t      34      2       116
        !          47010: u      64      0       117
        !          47011: v      52      0       118
        !          47012: w      82      0       119
        !          47013: x      66      0       120
        !          47014: y      54      1       121
        !          47015: z      56      0       122
        !          47016: {      34      3       123
        !          47017: ---    56      3       124
        !          47018: }      34      3       125
        !          47019: ---    56      0       126
        !          47020: ---    24      1       161
        !          47021: ct     56      2       162
        !          47022: ps     56      2       163
        !          47023: fr     18      2       164
        !          47024: yn     56      2       165
        !          47025: fn     56      3       166
        !          47026: sc     54      3       167
        !          47027: cr     56      2       168
        !          47028: ---    22      2       169
        !          47029: ``     42      2       170
        !          47030: ---    42      0       171
        !          47031: ---    24      0       172
        !          47032: ---    24      0       173
        !          47033: fi     70      2       174
        !          47034: fl     66      2       175
        !          47035: en     50      0       177
        !          47036: \-     "
        !          47037: dg     54      3       178
        !          47038: dd     54      3       179
        !          47039: ---    24      0       180
        !          47040: pg     70      3       182
        !          47041: ---    62      0       183
        !          47042: ---    22      1       184
        !          47043: ---    42      1       185
        !          47044: ''     42      2       186
        !          47045: ---    42      0       187
        !          47046: ---    100     0       188
        !          47047: ---    114     2       189
        !          47048: ---    40      1       191
        !          47049: ga     42      2       193
        !          47050: \`     "
        !          47051: aa     38      2       194
        !          47052: \'     "
        !          47053: ^a     50      2       195
        !          47054: ^      "
        !          47055: ~a     56      2       196
        !          47056: ~      "
        !          47057: -a     52      2       197
        !          47058: Ua     50      2       198
        !          47059: .a     26      2       199
        !          47060: :a     48      2       200
        !          47061: oa     32      2       202
        !          47062: ,a     38      1       203
        !          47063: "a     38      2       205
        !          47064: Ca     34      1       206
        !          47065: va     50      2       207
        !          47066: em     100     0       208
        !          47067: ---    100     2       225
        !          47068: ---    40      2       227
        !          47069: ---    56      2       232
        !          47070: ---    76      2       233
        !          47071: ---    104     2       234
        !          47072: ---    38      2       235
        !          47073: ---    88      0       241
        !          47074: ---    34      0       245
        !          47075: ---    28      2       248
        !          47076: ---    60      0       249
        !          47077: ---    90      0       250
        !          47078: ---    64      2       251
        !          47079: 0707070014231031101006440057030057030000010305400522627503000003000000003344post.src/devpost.add/Gbname Gb
        !          47080: fontname Goudy-Bold
        !          47081: ligatures fi fl 0
        !          47082: spacewidth 28
        !          47083: charset
        !          47084: !      33      2       33
        !          47085: "      50      2       34
        !          47086: dq     "
        !          47087: #      61      2       35
        !          47088: $      56      2       36
        !          47089: %      89      2       37
        !          47090: &      89      2       38
        !          47091: '      28      2       39
        !          47092: (      39      3       40
        !          47093: )      39      3       41
        !          47094: *      50      2       42
        !          47095: +      61      0       43
        !          47096: ,      28      1       44
        !          47097: hy     33      0       45
        !          47098: -      "
        !          47099: .      28      0       46
        !          47100: /      28      2       47
        !          47101: 0      56      2       48
        !          47102: 1      56      2       49
        !          47103: 2      56      2       50
        !          47104: 3      56      2       51
        !          47105: 4      56      2       52
        !          47106: 5      56      2       53
        !          47107: 6      56      2       54
        !          47108: 7      56      2       55
        !          47109: 8      56      2       56
        !          47110: 9      56      2       57
        !          47111: :      33      0       58
        !          47112: ;      33      1       59
        !          47113: ---    61      0       60
        !          47114: =      61      0       61
        !          47115: ---    61      0       62
        !          47116: ?      39      2       63
        !          47117: @      75      3       64
        !          47118: A      78      2       65
        !          47119: B      67      2       66
        !          47120: C      72      2       67
        !          47121: D      78      2       68
        !          47122: E      61      2       69
        !          47123: F      56      2       70
        !          47124: G      78      2       71
        !          47125: H      83      2       72
        !          47126: I      39      2       73
        !          47127: J      39      2       74
        !          47128: K      72      2       75
        !          47129: L      61      2       76
        !          47130: M      89      2       77
        !          47131: N      83      2       78
        !          47132: O      78      2       79
        !          47133: P      61      2       80
        !          47134: Q      78      3       81
        !          47135: R      72      2       82
        !          47136: S      56      2       83
        !          47137: T      72      2       84
        !          47138: U      83      2       85
        !          47139: V      78      2       86
        !          47140: W      100     2       87
        !          47141: X      72      2       88
        !          47142: Y      67      2       89
        !          47143: Z      61      2       90
        !          47144: [      33      3       91
        !          47145: \      61      2       92
        !          47146: bs     "
        !          47147: ]      33      3       93
        !          47148: ---    61      2       94
        !          47149: ---    50      1       95
        !          47150: `      28      2       96
        !          47151: a      44      0       97
        !          47152: b      50      2       98
        !          47153: c      44      0       99
        !          47154: d      50      2       100
        !          47155: e      44      0       101
        !          47156: f      33      2       102
        !          47157: g      44      1       103
        !          47158: h      56      2       104
        !          47159: i      28      2       105
        !          47160: j      28      3       106
        !          47161: k      56      2       107
        !          47162: l      28      2       108
        !          47163: m      78      0       109
        !          47164: n      56      0       110
        !          47165: o      50      0       111
        !          47166: p      50      1       112
        !          47167: q      50      1       113
        !          47168: r      39      0       114
        !          47169: s      39      0       115
        !          47170: t      33      2       116
        !          47171: u      56      0       117
        !          47172: v      50      0       118
        !          47173: w      72      0       119
        !          47174: x      50      0       120
        !          47175: y      50      1       121
        !          47176: z      39      0       122
        !          47177: {      33      3       123
        !          47178: ---    61      3       124
        !          47179: }      33      3       125
        !          47180: ---    61      0       126
        !          47181: ---    33      1       161
        !          47182: ct     56      2       162
        !          47183: ps     56      2       163
        !          47184: fr     17      2       164
        !          47185: yn     56      2       165
        !          47186: fn     56      3       166
        !          47187: sc     50      3       167
        !          47188: cr     56      2       168
        !          47189: ---    28      2       169
        !          47190: ``     50      2       170
        !          47191: ---    50      0       171
        !          47192: ---    33      0       172
        !          47193: ---    33      0       173
        !          47194: fi     56      2       174
        !          47195: fl     56      2       175
        !          47196: en     50      0       177
        !          47197: \-     "
        !          47198: dg     50      3       178
        !          47199: dd     50      3       179
        !          47200: ---    28      0       180
        !          47201: pg     63      3       182
        !          47202: ---    61      0       183
        !          47203: ---    28      1       184
        !          47204: ---    50      1       185
        !          47205: ''     50      2       186
        !          47206: ---    50      0       187
        !          47207: ---    100     0       188
        !          47208: ---    100     2       189
        !          47209: ---    39      1       191
        !          47210: ga     33      2       193
        !          47211: \`     "
        !          47212: aa     33      2       194
        !          47213: \'     "
        !          47214: ^a     33      2       195
        !          47215: ^      "
        !          47216: ~a     33      2       196
        !          47217: ~      "
        !          47218: -a     33      2       197
        !          47219: Ua     33      2       198
        !          47220: .a     33      2       199
        !          47221: :a     33      2       200
        !          47222: oa     33      2       202
        !          47223: ,a     33      1       203
        !          47224: "a     33      2       205
        !          47225: Ca     33      1       206
        !          47226: va     33      2       207
        !          47227: em     100     0       208
        !          47228: ---    100     2       225
        !          47229: ---    28      2       227
        !          47230: ---    61      2       232
        !          47231: ---    78      2       233
        !          47232: ---    100     2       234
        !          47233: ---    30      2       235
        !          47234: ---    72      0       241
        !          47235: ---    28      0       245
        !          47236: ---    28      2       248
        !          47237: ---    50      0       249
        !          47238: ---    78      0       250
        !          47239: ---    56      2       251
        !          47240: 0707070014231031111006440057030057030000010305420522627503000003000000003343post.src/devpost.add/Giname Gi
        !          47241: fontname Goudy-Italic
        !          47242: ligatures fi fl 0
        !          47243: spacewidth 25
        !          47244: charset
        !          47245: !      33      2       33
        !          47246: "      44      2       34
        !          47247: dq     "
        !          47248: #      61      2       35
        !          47249: $      50      2       36
        !          47250: %      83      2       37
        !          47251: &      83      2       38
        !          47252: '      28      2       39
        !          47253: (      39      3       40
        !          47254: )      39      3       41
        !          47255: *      50      2       42
        !          47256: +      61      0       43
        !          47257: ,      33      1       44
        !          47258: hy     33      0       45
        !          47259: -      "
        !          47260: .      33      0       46
        !          47261: /      28      2       47
        !          47262: 0      50      2       48
        !          47263: 1      50      2       49
        !          47264: 2      50      2       50
        !          47265: 3      50      2       51
        !          47266: 4      50      2       52
        !          47267: 5      50      2       53
        !          47268: 6      50      2       54
        !          47269: 7      50      2       55
        !          47270: 8      50      2       56
        !          47271: 9      50      2       57
        !          47272: :      33      0       58
        !          47273: ;      33      1       59
        !          47274: ---    61      0       60
        !          47275: =      61      0       61
        !          47276: ---    61      0       62
        !          47277: ?      39      2       63
        !          47278: @      75      3       64
        !          47279: A      72      2       65
        !          47280: B      61      2       66
        !          47281: C      72      2       67
        !          47282: D      72      2       68
        !          47283: E      61      2       69
        !          47284: F      56      2       70
        !          47285: G      78      2       71
        !          47286: H      78      2       72
        !          47287: I      33      2       73
        !          47288: J      33      2       74
        !          47289: K      67      2       75
        !          47290: L      56      2       76
        !          47291: M      89      2       77
        !          47292: N      78      2       78
        !          47293: O      78      2       79
        !          47294: P      56      2       80
        !          47295: Q      78      3       81
        !          47296: R      61      2       82
        !          47297: S      50      2       83
        !          47298: T      67      2       84
        !          47299: U      78      2       85
        !          47300: V      67      2       86
        !          47301: W      94      2       87
        !          47302: X      67      2       88
        !          47303: Y      56      2       89
        !          47304: Z      56      2       90
        !          47305: [      28      3       91
        !          47306: \      61      2       92
        !          47307: bs     "
        !          47308: ]      28      3       93
        !          47309: ---    61      2       94
        !          47310: ---    50      1       95
        !          47311: `      28      2       96
        !          47312: a      44      0       97
        !          47313: b      44      2       98
        !          47314: c      39      0       99
        !          47315: d      44      2       100
        !          47316: e      39      0       101
        !          47317: f      28      2       102
        !          47318: g      39      1       103
        !          47319: h      44      2       104
        !          47320: i      22      2       105
        !          47321: j      22      3       106
        !          47322: k      44      2       107
        !          47323: l      22      2       108
        !          47324: m      72      0       109
        !          47325: n      50      0       110
        !          47326: o      44      0       111
        !          47327: p      44      1       112
        !          47328: q      44      1       113
        !          47329: r      33      0       114
        !          47330: s      33      0       115
        !          47331: t      28      2       116
        !          47332: u      50      0       117
        !          47333: v      44      0       118
        !          47334: w      67      0       119
        !          47335: x      44      0       120
        !          47336: y      44      1       121
        !          47337: z      39      0       122
        !          47338: {      28      3       123
        !          47339: ---    61      3       124
        !          47340: }      28      3       125
        !          47341: ---    61      0       126
        !          47342: ---    33      1       161
        !          47343: ct     50      2       162
        !          47344: ps     50      2       163
        !          47345: fr     17      2       164
        !          47346: yn     50      2       165
        !          47347: fn     50      3       166
        !          47348: sc     50      3       167
        !          47349: cr     61      2       168
        !          47350: ---    28      2       169
        !          47351: ``     44      2       170
        !          47352: ---    50      0       171
        !          47353: ---    33      0       172
        !          47354: ---    33      0       173
        !          47355: fi     50      2       174
        !          47356: fl     50      2       175
        !          47357: en     50      0       177
        !          47358: \-     "
        !          47359: dg     50      3       178
        !          47360: dd     50      3       179
        !          47361: ---    33      0       180
        !          47362: pg     63      3       182
        !          47363: ---    61      0       183
        !          47364: ---    28      1       184
        !          47365: ---    44      1       185
        !          47366: ''     44      2       186
        !          47367: ---    50      0       187
        !          47368: ---    100     0       188
        !          47369: ---    100     2       189
        !          47370: ---    39      1       191
        !          47371: ga     33      2       193
        !          47372: \`     "
        !          47373: aa     33      2       194
        !          47374: \'     "
        !          47375: ^a     33      2       195
        !          47376: ^      "
        !          47377: ~a     33      2       196
        !          47378: ~      "
        !          47379: -a     33      2       197
        !          47380: Ua     33      2       198
        !          47381: .a     33      2       199
        !          47382: :a     33      2       200
        !          47383: oa     33      2       202
        !          47384: ,a     33      1       203
        !          47385: "a     33      2       205
        !          47386: Ca     33      1       206
        !          47387: va     33      2       207
        !          47388: em     100     0       208
        !          47389: ---    94      2       225
        !          47390: ---    50      2       227
        !          47391: ---    56      2       232
        !          47392: ---    78      2       233
        !          47393: ---    94      2       234
        !          47394: ---    50      2       235
        !          47395: ---    67      0       241
        !          47396: ---    22      0       245
        !          47397: ---    22      2       248
        !          47398: ---    44      0       249
        !          47399: ---    72      0       250
        !          47400: ---    50      2       251
        !          47401: 0707070014231031121006440057030057030000010305440522627503000003000000003347post.src/devpost.add/Grname Gr
        !          47402: fontname Goudy-Regular
        !          47403: ligatures fi fl 0
        !          47404: spacewidth 25
        !          47405: charset
        !          47406: !      33      2       33
        !          47407: "      37      2       34
        !          47408: dq     "
        !          47409: #      61      2       35
        !          47410: $      50      2       36
        !          47411: %      83      2       37
        !          47412: &      83      2       38
        !          47413: '      22      2       39
        !          47414: (      39      3       40
        !          47415: )      39      3       41
        !          47416: *      50      2       42
        !          47417: +      61      0       43
        !          47418: ,      25      1       44
        !          47419: hy     33      0       45
        !          47420: -      "
        !          47421: .      25      0       46
        !          47422: /      28      2       47
        !          47423: 0      50      2       48
        !          47424: 1      50      2       49
        !          47425: 2      50      2       50
        !          47426: 3      50      2       51
        !          47427: 4      50      2       52
        !          47428: 5      50      2       53
        !          47429: 6      50      2       54
        !          47430: 7      50      2       55
        !          47431: 8      50      2       56
        !          47432: 9      50      2       57
        !          47433: :      25      0       58
        !          47434: ;      25      1       59
        !          47435: ---    61      0       60
        !          47436: =      61      0       61
        !          47437: ---    61      0       62
        !          47438: ?      33      2       63
        !          47439: @      75      3       64
        !          47440: A      78      2       65
        !          47441: B      61      2       66
        !          47442: C      72      2       67
        !          47443: D      72      2       68
        !          47444: E      56      2       69
        !          47445: F      50      2       70
        !          47446: G      78      2       71
        !          47447: H      78      2       72
        !          47448: I      33      2       73
        !          47449: J      33      2       74
        !          47450: K      67      2       75
        !          47451: L      56      2       76
        !          47452: M      89      2       77
        !          47453: N      78      2       78
        !          47454: O      78      2       79
        !          47455: P      56      2       80
        !          47456: Q      78      3       81
        !          47457: R      67      2       82
        !          47458: S      56      2       83
        !          47459: T      67      2       84
        !          47460: U      78      2       85
        !          47461: V      72      2       86
        !          47462: W      100     2       87
        !          47463: X      67      2       88
        !          47464: Y      61      2       89
        !          47465: Z      56      2       90
        !          47466: [      28      3       91
        !          47467: \      61      2       92
        !          47468: bs     "
        !          47469: ]      28      3       93
        !          47470: ---    61      2       94
        !          47471: ---    50      1       95
        !          47472: `      22      2       96
        !          47473: a      44      0       97
        !          47474: b      50      2       98
        !          47475: c      44      0       99
        !          47476: d      50      2       100
        !          47477: e      44      0       101
        !          47478: f      28      2       102
        !          47479: g      44      1       103
        !          47480: h      56      2       104
        !          47481: i      28      2       105
        !          47482: j      28      3       106
        !          47483: k      50      2       107
        !          47484: l      28      2       108
        !          47485: m      78      0       109
        !          47486: n      56      0       110
        !          47487: o      50      0       111
        !          47488: p      50      1       112
        !          47489: q      50      1       113
        !          47490: r      33      0       114
        !          47491: s      33      0       115
        !          47492: t      33      2       116
        !          47493: u      50      0       117
        !          47494: v      50      0       118
        !          47495: w      67      0       119
        !          47496: x      50      0       120
        !          47497: y      44      1       121
        !          47498: z      33      0       122
        !          47499: {      28      3       123
        !          47500: ---    61      3       124
        !          47501: }      28      3       125
        !          47502: ---    61      0       126
        !          47503: ---    33      1       161
        !          47504: ct     50      2       162
        !          47505: ps     50      2       163
        !          47506: fr     17      2       164
        !          47507: yn     50      2       165
        !          47508: fn     50      3       166
        !          47509: sc     50      3       167
        !          47510: cr     50      2       168
        !          47511: ---    22      2       169
        !          47512: ``     39      2       170
        !          47513: ---    50      0       171
        !          47514: ---    33      0       172
        !          47515: ---    33      0       173
        !          47516: fi     50      2       174
        !          47517: fl     50      2       175
        !          47518: en     50      0       177
        !          47519: \-     "
        !          47520: dg     50      3       178
        !          47521: dd     50      3       179
        !          47522: ---    25      0       180
        !          47523: pg     63      3       182
        !          47524: ---    61      0       183
        !          47525: ---    22      1       184
        !          47526: ---    39      1       185
        !          47527: ''     39      2       186
        !          47528: ---    50      0       187
        !          47529: ---    100     0       188
        !          47530: ---    100     2       189
        !          47531: ---    33      1       191
        !          47532: ga     33      2       193
        !          47533: \`     "
        !          47534: aa     33      2       194
        !          47535: \'     "
        !          47536: ^a     33      2       195
        !          47537: ^      "
        !          47538: ~a     33      2       196
        !          47539: ~      "
        !          47540: -a     33      2       197
        !          47541: Ua     33      2       198
        !          47542: .a     33      2       199
        !          47543: :a     33      2       200
        !          47544: oa     33      2       202
        !          47545: ,a     33      1       203
        !          47546: "a     33      2       205
        !          47547: Ca     33      1       206
        !          47548: va     33      2       207
        !          47549: em     100     0       208
        !          47550: ---    100     2       225
        !          47551: ---    39      2       227
        !          47552: ---    56      2       232
        !          47553: ---    78      2       233
        !          47554: ---    100     2       234
        !          47555: ---    43      2       235
        !          47556: ---    72      0       241
        !          47557: ---    28      0       245
        !          47558: ---    28      2       248
        !          47559: ---    50      0       249
        !          47560: ---    78      0       250
        !          47561: ---    50      2       251
        !          47562: 0707070014231031131006440057030057030000010305460522627503000003000000003347post.src/devpost.add/Gxname Gx
        !          47563: fontname Goudy-BoldItalic
        !          47564: ligatures fi fl 0
        !          47565: spacewidth 28
        !          47566: charset
        !          47567: !      33      2       33
        !          47568: "      50      2       34
        !          47569: dq     "
        !          47570: #      61      2       35
        !          47571: $      56      2       36
        !          47572: %      83      2       37
        !          47573: &      83      2       38
        !          47574: '      28      2       39
        !          47575: (      39      3       40
        !          47576: )      39      3       41
        !          47577: *      50      2       42
        !          47578: +      61      0       43
        !          47579: ,      33      1       44
        !          47580: hy     33      0       45
        !          47581: -      "
        !          47582: .      33      0       46
        !          47583: /      28      2       47
        !          47584: 0      56      2       48
        !          47585: 1      56      2       49
        !          47586: 2      56      2       50
        !          47587: 3      56      2       51
        !          47588: 4      56      2       52
        !          47589: 5      56      2       53
        !          47590: 6      56      2       54
        !          47591: 7      56      2       55
        !          47592: 8      56      2       56
        !          47593: 9      56      2       57
        !          47594: :      33      0       58
        !          47595: ;      33      1       59
        !          47596: ---    61      0       60
        !          47597: =      61      0       61
        !          47598: ---    61      0       62
        !          47599: ?      39      2       63
        !          47600: @      75      3       64
        !          47601: A      72      2       65
        !          47602: B      67      2       66
        !          47603: C      67      2       67
        !          47604: D      78      2       68
        !          47605: E      67      2       69
        !          47606: F      61      2       70
        !          47607: G      72      2       71
        !          47608: H      78      2       72
        !          47609: I      39      2       73
        !          47610: J      44      2       74
        !          47611: K      72      2       75
        !          47612: L      61      2       76
        !          47613: M      94      2       77
        !          47614: N      78      2       78
        !          47615: O      78      2       79
        !          47616: P      67      2       80
        !          47617: Q      78      3       81
        !          47618: R      72      2       82
        !          47619: S      50      2       83
        !          47620: T      72      2       84
        !          47621: U      78      2       85
        !          47622: V      67      2       86
        !          47623: W      94      2       87
        !          47624: X      72      2       88
        !          47625: Y      61      2       89
        !          47626: Z      61      2       90
        !          47627: [      39      3       91
        !          47628: \      61      2       92
        !          47629: bs     "
        !          47630: ]      39      3       93
        !          47631: ---    61      2       94
        !          47632: ---    50      1       95
        !          47633: `      28      2       96
        !          47634: a      50      0       97
        !          47635: b      50      2       98
        !          47636: c      44      0       99
        !          47637: d      50      2       100
        !          47638: e      44      0       101
        !          47639: f      28      2       102
        !          47640: g      44      1       103
        !          47641: h      56      2       104
        !          47642: i      28      2       105
        !          47643: j      28      3       106
        !          47644: k      50      2       107
        !          47645: l      28      2       108
        !          47646: m      78      0       109
        !          47647: n      56      0       110
        !          47648: o      44      0       111
        !          47649: p      50      1       112
        !          47650: q      50      1       113
        !          47651: r      39      0       114
        !          47652: s      39      0       115
        !          47653: t      33      2       116
        !          47654: u      56      0       117
        !          47655: v      44      0       118
        !          47656: w      72      0       119
        !          47657: x      44      0       120
        !          47658: y      44      1       121
        !          47659: z      39      0       122
        !          47660: {      39      3       123
        !          47661: ---    61      3       124
        !          47662: }      39      3       125
        !          47663: ---    61      0       126
        !          47664: ---    33      1       161
        !          47665: ct     56      2       162
        !          47666: ps     56      2       163
        !          47667: fr     17      2       164
        !          47668: yn     56      2       165
        !          47669: fn     56      3       166
        !          47670: sc     50      3       167
        !          47671: cr     61      2       168
        !          47672: ---    28      2       169
        !          47673: ``     50      2       170
        !          47674: ---    50      0       171
        !          47675: ---    33      0       172
        !          47676: ---    33      0       173
        !          47677: fi     56      2       174
        !          47678: fl     56      2       175
        !          47679: en     50      0       177
        !          47680: \-     "
        !          47681: dg     50      3       178
        !          47682: dd     50      3       179
        !          47683: ---    33      0       180
        !          47684: pg     63      3       182
        !          47685: ---    61      0       183
        !          47686: ---    28      1       184
        !          47687: ---    50      1       185
        !          47688: ''     50      2       186
        !          47689: ---    50      0       187
        !          47690: ---    100     0       188
        !          47691: ---    100     2       189
        !          47692: ---    39      1       191
        !          47693: ga     33      2       193
        !          47694: \`     "
        !          47695: aa     33      2       194
        !          47696: \'     "
        !          47697: ^a     33      2       195
        !          47698: ^      "
        !          47699: ~a     33      2       196
        !          47700: ~      "
        !          47701: -a     33      2       197
        !          47702: Ua     33      2       198
        !          47703: .a     33      2       199
        !          47704: :a     33      2       200
        !          47705: oa     33      2       202
        !          47706: ,a     33      1       203
        !          47707: "a     33      2       205
        !          47708: Ca     33      1       206
        !          47709: va     33      2       207
        !          47710: em     100     0       208
        !          47711: ---    89      2       225
        !          47712: ---    30      2       227
        !          47713: ---    61      2       232
        !          47714: ---    78      2       233
        !          47715: ---    94      2       234
        !          47716: ---    30      2       235
        !          47717: ---    72      0       241
        !          47718: ---    28      0       245
        !          47719: ---    28      2       248
        !          47720: ---    44      0       249
        !          47721: ---    72      0       250
        !          47722: ---    50      2       251
        !          47723: 0707070014231031141006440057030057030000010305600522627503000003000000003360post.src/devpost.add/H1name H1
        !          47724: fontname Helvetica-Condensed-Light
        !          47725: ligatures fi fl 0
        !          47726: spacewidth 22
        !          47727: charset
        !          47728: !      22      2       33
        !          47729: "      31      2       34
        !          47730: dq     "
        !          47731: #      44      2       35
        !          47732: $      44      2       36
        !          47733: %      78      2       37
        !          47734: &      61      2       38
        !          47735: '      16      2       39
        !          47736: (      28      3       40
        !          47737: )      28      3       41
        !          47738: *      39      2       42
        !          47739: +      44      0       43
        !          47740: ,      22      1       44
        !          47741: hy     33      0       45
        !          47742: -      "
        !          47743: .      22      0       46
        !          47744: /      28      2       47
        !          47745: 0      44      2       48
        !          47746: 1      44      2       49
        !          47747: 2      44      2       50
        !          47748: 3      44      2       51
        !          47749: 4      44      2       52
        !          47750: 5      44      2       53
        !          47751: 6      44      2       54
        !          47752: 7      44      2       55
        !          47753: 8      44      2       56
        !          47754: 9      44      2       57
        !          47755: :      22      0       58
        !          47756: ;      22      1       59
        !          47757: ---    44      0       60
        !          47758: =      44      0       61
        !          47759: ---    44      0       62
        !          47760: ?      39      2       63
        !          47761: @      80      3       64
        !          47762: A      50      2       65
        !          47763: B      50      2       66
        !          47764: C      56      2       67
        !          47765: D      56      2       68
        !          47766: E      44      2       69
        !          47767: F      44      2       70
        !          47768: G      56      2       71
        !          47769: H      56      2       72
        !          47770: I      22      2       73
        !          47771: J      39      2       74
        !          47772: K      50      2       75
        !          47773: L      44      2       76
        !          47774: M      72      2       77
        !          47775: N      56      2       78
        !          47776: O      56      2       79
        !          47777: P      50      2       80
        !          47778: Q      56      3       81
        !          47779: R      50      2       82
        !          47780: S      50      2       83
        !          47781: T      44      2       84
        !          47782: U      56      2       85
        !          47783: V      50      2       86
        !          47784: W      72      2       87
        !          47785: X      50      2       88
        !          47786: Y      50      2       89
        !          47787: Z      44      2       90
        !          47788: [      28      3       91
        !          47789: \      22      2       92
        !          47790: bs     "
        !          47791: ]      28      3       93
        !          47792: ---    44      2       94
        !          47793: ---    50      1       95
        !          47794: `      22      2       96
        !          47795: a      39      0       97
        !          47796: b      44      2       98
        !          47797: c      39      0       99
        !          47798: d      44      2       100
        !          47799: e      39      0       101
        !          47800: f      22      2       102
        !          47801: g      44      1       103
        !          47802: h      44      2       104
        !          47803: i      22      2       105
        !          47804: j      22      3       106
        !          47805: k      39      2       107
        !          47806: l      22      2       108
        !          47807: m      67      0       109
        !          47808: n      44      0       110
        !          47809: o      44      0       111
        !          47810: p      44      1       112
        !          47811: q      44      1       113
        !          47812: r      28      0       114
        !          47813: s      39      0       115
        !          47814: t      22      2       116
        !          47815: u      44      0       117
        !          47816: v      39      0       118
        !          47817: w      56      0       119
        !          47818: x      39      0       120
        !          47819: y      39      1       121
        !          47820: z      33      0       122
        !          47821: {      35      3       123
        !          47822: ---    22      3       124
        !          47823: }      35      3       125
        !          47824: ---    44      0       126
        !          47825: ---    22      1       161
        !          47826: ct     44      2       162
        !          47827: ps     44      2       163
        !          47828: fr     17      2       164
        !          47829: yn     44      2       165
        !          47830: fn     44      3       166
        !          47831: sc     44      3       167
        !          47832: cr     44      2       168
        !          47833: ---    20      2       169
        !          47834: ``     33      2       170
        !          47835: ---    50      0       171
        !          47836: ---    33      0       172
        !          47837: ---    33      0       173
        !          47838: fi     44      2       174
        !          47839: fl     44      2       175
        !          47840: en     50      0       177
        !          47841: \-     "
        !          47842: dg     44      3       178
        !          47843: dd     44      3       179
        !          47844: ---    22      0       180
        !          47845: pg     56      3       182
        !          47846: ---    61      0       183
        !          47847: ---    22      1       184
        !          47848: ---    33      1       185
        !          47849: ''     33      2       186
        !          47850: ---    50      0       187
        !          47851: ---    100     0       188
        !          47852: ---    100     2       189
        !          47853: ---    39      1       191
        !          47854: ga     33      2       193
        !          47855: \`     "
        !          47856: aa     33      2       194
        !          47857: \'     "
        !          47858: ^a     33      2       195
        !          47859: ^      "
        !          47860: ~a     33      2       196
        !          47861: ~      "
        !          47862: -a     33      2       197
        !          47863: Ua     33      2       198
        !          47864: .a     33      2       199
        !          47865: :a     33      2       200
        !          47866: oa     33      2       202
        !          47867: ,a     33      1       203
        !          47868: "a     33      2       205
        !          47869: Ca     33      1       206
        !          47870: va     33      2       207
        !          47871: em     100     0       208
        !          47872: ---    72      2       225
        !          47873: ---    27      2       227
        !          47874: ---    44      2       232
        !          47875: ---    56      2       233
        !          47876: ---    78      2       234
        !          47877: ---    27      2       235
        !          47878: ---    61      0       241
        !          47879: ---    20      0       245
        !          47880: ---    22      2       248
        !          47881: ---    44      0       249
        !          47882: ---    67      0       250
        !          47883: ---    44      2       251
        !          47884: 0707070014231031151006440057030057030000010305620522627503000003000000003367post.src/devpost.add/H2name H2
        !          47885: fontname Helvetica-Condensed-LightOblique
        !          47886: ligatures fi fl 0
        !          47887: spacewidth 22
        !          47888: charset
        !          47889: !      22      2       33
        !          47890: "      31      2       34
        !          47891: dq     "
        !          47892: #      44      2       35
        !          47893: $      44      2       36
        !          47894: %      78      2       37
        !          47895: &      61      2       38
        !          47896: '      16      2       39
        !          47897: (      28      3       40
        !          47898: )      28      3       41
        !          47899: *      39      2       42
        !          47900: +      44      0       43
        !          47901: ,      22      1       44
        !          47902: hy     33      0       45
        !          47903: -      "
        !          47904: .      22      0       46
        !          47905: /      28      2       47
        !          47906: 0      44      2       48
        !          47907: 1      44      2       49
        !          47908: 2      44      2       50
        !          47909: 3      44      2       51
        !          47910: 4      44      2       52
        !          47911: 5      44      2       53
        !          47912: 6      44      2       54
        !          47913: 7      44      2       55
        !          47914: 8      44      2       56
        !          47915: 9      44      2       57
        !          47916: :      22      0       58
        !          47917: ;      22      1       59
        !          47918: ---    44      0       60
        !          47919: =      44      0       61
        !          47920: ---    44      0       62
        !          47921: ?      39      2       63
        !          47922: @      80      3       64
        !          47923: A      50      2       65
        !          47924: B      50      2       66
        !          47925: C      56      2       67
        !          47926: D      56      2       68
        !          47927: E      44      2       69
        !          47928: F      44      2       70
        !          47929: G      56      2       71
        !          47930: H      56      2       72
        !          47931: I      22      2       73
        !          47932: J      39      2       74
        !          47933: K      50      2       75
        !          47934: L      44      2       76
        !          47935: M      72      2       77
        !          47936: N      56      2       78
        !          47937: O      56      2       79
        !          47938: P      50      2       80
        !          47939: Q      56      3       81
        !          47940: R      50      2       82
        !          47941: S      50      2       83
        !          47942: T      44      2       84
        !          47943: U      56      2       85
        !          47944: V      50      2       86
        !          47945: W      72      2       87
        !          47946: X      50      2       88
        !          47947: Y      50      2       89
        !          47948: Z      44      2       90
        !          47949: [      28      3       91
        !          47950: \      22      2       92
        !          47951: bs     "
        !          47952: ]      28      3       93
        !          47953: ---    44      2       94
        !          47954: ---    50      1       95
        !          47955: `      22      2       96
        !          47956: a      39      0       97
        !          47957: b      44      2       98
        !          47958: c      39      0       99
        !          47959: d      44      2       100
        !          47960: e      39      0       101
        !          47961: f      22      2       102
        !          47962: g      44      1       103
        !          47963: h      44      2       104
        !          47964: i      22      2       105
        !          47965: j      22      3       106
        !          47966: k      39      2       107
        !          47967: l      22      2       108
        !          47968: m      67      0       109
        !          47969: n      44      0       110
        !          47970: o      44      0       111
        !          47971: p      44      1       112
        !          47972: q      44      1       113
        !          47973: r      28      0       114
        !          47974: s      39      0       115
        !          47975: t      22      2       116
        !          47976: u      44      0       117
        !          47977: v      39      0       118
        !          47978: w      56      0       119
        !          47979: x      39      0       120
        !          47980: y      39      1       121
        !          47981: z      33      0       122
        !          47982: {      35      3       123
        !          47983: ---    22      3       124
        !          47984: }      35      3       125
        !          47985: ---    44      0       126
        !          47986: ---    22      1       161
        !          47987: ct     44      2       162
        !          47988: ps     44      2       163
        !          47989: fr     17      2       164
        !          47990: yn     44      2       165
        !          47991: fn     44      3       166
        !          47992: sc     44      3       167
        !          47993: cr     44      2       168
        !          47994: ---    20      2       169
        !          47995: ``     33      2       170
        !          47996: ---    50      0       171
        !          47997: ---    33      0       172
        !          47998: ---    33      0       173
        !          47999: fi     44      2       174
        !          48000: fl     44      2       175
        !          48001: en     50      0       177
        !          48002: \-     "
        !          48003: dg     44      3       178
        !          48004: dd     44      3       179
        !          48005: ---    22      0       180
        !          48006: pg     56      3       182
        !          48007: ---    61      0       183
        !          48008: ---    22      1       184
        !          48009: ---    33      1       185
        !          48010: ''     33      2       186
        !          48011: ---    50      0       187
        !          48012: ---    100     0       188
        !          48013: ---    100     2       189
        !          48014: ---    39      1       191
        !          48015: ga     33      2       193
        !          48016: \`     "
        !          48017: aa     33      2       194
        !          48018: \'     "
        !          48019: ^a     33      2       195
        !          48020: ^      "
        !          48021: ~a     33      2       196
        !          48022: ~      "
        !          48023: -a     33      2       197
        !          48024: Ua     33      2       198
        !          48025: .a     33      2       199
        !          48026: :a     33      2       200
        !          48027: oa     33      2       202
        !          48028: ,a     33      1       203
        !          48029: "a     33      2       205
        !          48030: Ca     33      1       206
        !          48031: va     33      2       207
        !          48032: em     100     0       208
        !          48033: ---    72      2       225
        !          48034: ---    27      2       227
        !          48035: ---    44      2       232
        !          48036: ---    56      2       233
        !          48037: ---    78      2       234
        !          48038: ---    27      2       235
        !          48039: ---    61      0       241
        !          48040: ---    20      0       245
        !          48041: ---    22      2       248
        !          48042: ---    44      0       249
        !          48043: ---    67      0       250
        !          48044: ---    44      2       251
        !          48045: 0707070014231031161006440057030057030000010305640522627503000003000000003352post.src/devpost.add/H3name H3
        !          48046: fontname Helvetica-Condensed
        !          48047: ligatures fi fl 0
        !          48048: spacewidth 25
        !          48049: charset
        !          48050: !      33      2       33
        !          48051: "      25      2       34
        !          48052: dq     "
        !          48053: #      50      2       35
        !          48054: $      50      2       36
        !          48055: %      83      2       37
        !          48056: &      67      2       38
        !          48057: '      22      2       39
        !          48058: (      33      3       40
        !          48059: )      33      3       41
        !          48060: *      50      2       42
        !          48061: +      50      0       43
        !          48062: ,      25      1       44
        !          48063: hy     33      0       45
        !          48064: -      "
        !          48065: .      25      0       46
        !          48066: /      28      2       47
        !          48067: 0      50      2       48
        !          48068: 1      50      2       49
        !          48069: 2      50      2       50
        !          48070: 3      50      2       51
        !          48071: 4      50      2       52
        !          48072: 5      50      2       53
        !          48073: 6      50      2       54
        !          48074: 7      50      2       55
        !          48075: 8      50      2       56
        !          48076: 9      50      2       57
        !          48077: :      25      0       58
        !          48078: ;      25      1       59
        !          48079: ---    50      0       60
        !          48080: =      50      0       61
        !          48081: ---    50      0       62
        !          48082: ?      50      2       63
        !          48083: @      80      3       64
        !          48084: A      56      2       65
        !          48085: B      56      2       66
        !          48086: C      56      2       67
        !          48087: D      61      2       68
        !          48088: E      50      2       69
        !          48089: F      44      2       70
        !          48090: G      61      2       71
        !          48091: H      61      2       72
        !          48092: I      28      2       73
        !          48093: J      44      2       74
        !          48094: K      56      2       75
        !          48095: L      50      2       76
        !          48096: M      78      2       77
        !          48097: N      61      2       78
        !          48098: O      61      2       79
        !          48099: P      56      2       80
        !          48100: Q      61      3       81
        !          48101: R      61      2       82
        !          48102: S      56      2       83
        !          48103: T      50      2       84
        !          48104: U      61      2       85
        !          48105: V      56      2       86
        !          48106: W      83      2       87
        !          48107: X      56      2       88
        !          48108: Y      56      2       89
        !          48109: Z      50      2       90
        !          48110: [      33      3       91
        !          48111: \      25      2       92
        !          48112: bs     "
        !          48113: ]      33      3       93
        !          48114: ---    50      2       94
        !          48115: ---    50      1       95
        !          48116: `      22      2       96
        !          48117: a      44      0       97
        !          48118: b      50      2       98
        !          48119: c      44      0       99
        !          48120: d      50      2       100
        !          48121: e      44      0       101
        !          48122: f      28      2       102
        !          48123: g      50      1       103
        !          48124: h      50      2       104
        !          48125: i      22      2       105
        !          48126: j      22      3       106
        !          48127: k      44      2       107
        !          48128: l      22      2       108
        !          48129: m      78      0       109
        !          48130: n      50      0       110
        !          48131: o      50      0       111
        !          48132: p      50      1       112
        !          48133: q      50      1       113
        !          48134: r      33      0       114
        !          48135: s      44      0       115
        !          48136: t      28      2       116
        !          48137: u      50      0       117
        !          48138: v      44      0       118
        !          48139: w      67      0       119
        !          48140: x      44      0       120
        !          48141: y      44      1       121
        !          48142: z      39      0       122
        !          48143: {      27      3       123
        !          48144: ---    25      3       124
        !          48145: }      27      3       125
        !          48146: ---    48      0       126
        !          48147: ---    33      1       161
        !          48148: ct     50      2       162
        !          48149: ps     50      2       163
        !          48150: fr     17      2       164
        !          48151: yn     50      2       165
        !          48152: fn     50      3       166
        !          48153: sc     50      3       167
        !          48154: cr     50      2       168
        !          48155: ---    25      2       169
        !          48156: ``     39      2       170
        !          48157: ---    50      0       171
        !          48158: ---    28      0       172
        !          48159: ---    28      0       173
        !          48160: fi     50      2       174
        !          48161: fl     50      2       175
        !          48162: en     50      0       177
        !          48163: \-     "
        !          48164: dg     50      3       178
        !          48165: dd     50      3       179
        !          48166: ---    28      0       180
        !          48167: pg     44      3       182
        !          48168: ---    33      0       183
        !          48169: ---    22      1       184
        !          48170: ---    39      1       185
        !          48171: ''     39      2       186
        !          48172: ---    50      0       187
        !          48173: ---    100     0       188
        !          48174: ---    111     2       189
        !          48175: ---    50      1       191
        !          48176: ga     33      2       193
        !          48177: \`     "
        !          48178: aa     33      2       194
        !          48179: \'     "
        !          48180: ^a     33      2       195
        !          48181: ^      "
        !          48182: ~a     33      2       196
        !          48183: ~      "
        !          48184: -a     33      2       197
        !          48185: Ua     33      2       198
        !          48186: .a     33      2       199
        !          48187: :a     33      2       200
        !          48188: oa     33      2       202
        !          48189: ,a     33      1       203
        !          48190: "a     33      2       205
        !          48191: Ca     33      1       206
        !          48192: va     33      2       207
        !          48193: em     100     0       208
        !          48194: ---    83      2       225
        !          48195: ---    30      2       227
        !          48196: ---    50      2       232
        !          48197: ---    61      2       233
        !          48198: ---    83      2       234
        !          48199: ---    30      2       235
        !          48200: ---    67      0       241
        !          48201: ---    22      0       245
        !          48202: ---    22      2       248
        !          48203: ---    50      0       249
        !          48204: ---    72      0       250
        !          48205: ---    50      2       251
        !          48206: 0707070014231031171006440057030057030000010305660522627503000003000000003362post.src/devpost.add/H4name H4
        !          48207: fontname Helvetica-Condensed-Oblique
        !          48208: ligatures fi fl 0
        !          48209: spacewidth 25
        !          48210: charset
        !          48211: !      33      2       33
        !          48212: "      25      2       34
        !          48213: dq     "
        !          48214: #      50      2       35
        !          48215: $      50      2       36
        !          48216: %      83      2       37
        !          48217: &      67      2       38
        !          48218: '      22      2       39
        !          48219: (      33      3       40
        !          48220: )      33      3       41
        !          48221: *      50      2       42
        !          48222: +      50      0       43
        !          48223: ,      25      1       44
        !          48224: hy     33      0       45
        !          48225: -      "
        !          48226: .      25      0       46
        !          48227: /      28      2       47
        !          48228: 0      50      2       48
        !          48229: 1      50      2       49
        !          48230: 2      50      2       50
        !          48231: 3      50      2       51
        !          48232: 4      50      2       52
        !          48233: 5      50      2       53
        !          48234: 6      50      2       54
        !          48235: 7      50      2       55
        !          48236: 8      50      2       56
        !          48237: 9      50      2       57
        !          48238: :      25      0       58
        !          48239: ;      25      1       59
        !          48240: ---    50      0       60
        !          48241: =      50      0       61
        !          48242: ---    50      0       62
        !          48243: ?      50      2       63
        !          48244: @      80      3       64
        !          48245: A      56      2       65
        !          48246: B      56      2       66
        !          48247: C      56      2       67
        !          48248: D      61      2       68
        !          48249: E      50      2       69
        !          48250: F      44      2       70
        !          48251: G      61      2       71
        !          48252: H      61      2       72
        !          48253: I      28      2       73
        !          48254: J      44      2       74
        !          48255: K      56      2       75
        !          48256: L      50      2       76
        !          48257: M      78      2       77
        !          48258: N      61      2       78
        !          48259: O      61      2       79
        !          48260: P      56      2       80
        !          48261: Q      61      3       81
        !          48262: R      61      2       82
        !          48263: S      56      2       83
        !          48264: T      50      2       84
        !          48265: U      61      2       85
        !          48266: V      56      2       86
        !          48267: W      83      2       87
        !          48268: X      56      2       88
        !          48269: Y      56      2       89
        !          48270: Z      50      2       90
        !          48271: [      33      3       91
        !          48272: \      25      2       92
        !          48273: bs     "
        !          48274: ]      33      3       93
        !          48275: ---    50      2       94
        !          48276: ---    50      1       95
        !          48277: `      22      2       96
        !          48278: a      44      0       97
        !          48279: b      50      2       98
        !          48280: c      44      0       99
        !          48281: d      50      2       100
        !          48282: e      44      0       101
        !          48283: f      28      2       102
        !          48284: g      50      1       103
        !          48285: h      50      2       104
        !          48286: i      22      2       105
        !          48287: j      22      3       106
        !          48288: k      44      2       107
        !          48289: l      22      2       108
        !          48290: m      78      0       109
        !          48291: n      50      0       110
        !          48292: o      50      0       111
        !          48293: p      50      1       112
        !          48294: q      50      1       113
        !          48295: r      33      0       114
        !          48296: s      44      0       115
        !          48297: t      28      2       116
        !          48298: u      50      0       117
        !          48299: v      44      0       118
        !          48300: w      67      0       119
        !          48301: x      44      0       120
        !          48302: y      44      1       121
        !          48303: z      39      0       122
        !          48304: {      27      3       123
        !          48305: ---    25      3       124
        !          48306: }      27      3       125
        !          48307: ---    48      0       126
        !          48308: ---    33      1       161
        !          48309: ct     50      2       162
        !          48310: ps     50      2       163
        !          48311: fr     17      2       164
        !          48312: yn     50      2       165
        !          48313: fn     50      3       166
        !          48314: sc     50      3       167
        !          48315: cr     50      2       168
        !          48316: ---    25      2       169
        !          48317: ``     39      2       170
        !          48318: ---    50      0       171
        !          48319: ---    28      0       172
        !          48320: ---    28      0       173
        !          48321: fi     50      2       174
        !          48322: fl     50      2       175
        !          48323: en     50      0       177
        !          48324: \-     "
        !          48325: dg     50      3       178
        !          48326: dd     50      3       179
        !          48327: ---    28      0       180
        !          48328: pg     44      3       182
        !          48329: ---    33      0       183
        !          48330: ---    22      1       184
        !          48331: ---    39      1       185
        !          48332: ''     39      2       186
        !          48333: ---    50      0       187
        !          48334: ---    100     0       188
        !          48335: ---    111     2       189
        !          48336: ---    50      1       191
        !          48337: ga     33      2       193
        !          48338: \`     "
        !          48339: aa     33      2       194
        !          48340: \'     "
        !          48341: ^a     33      2       195
        !          48342: ^      "
        !          48343: ~a     33      2       196
        !          48344: ~      "
        !          48345: -a     33      2       197
        !          48346: Ua     33      2       198
        !          48347: .a     33      2       199
        !          48348: :a     33      2       200
        !          48349: oa     33      2       202
        !          48350: ,a     33      1       203
        !          48351: "a     33      2       205
        !          48352: Ca     33      1       206
        !          48353: va     33      2       207
        !          48354: em     100     0       208
        !          48355: ---    83      2       225
        !          48356: ---    30      2       227
        !          48357: ---    50      2       232
        !          48358: ---    61      2       233
        !          48359: ---    83      2       234
        !          48360: ---    30      2       235
        !          48361: ---    67      0       241
        !          48362: ---    22      0       245
        !          48363: ---    22      2       248
        !          48364: ---    50      0       249
        !          48365: ---    72      0       250
        !          48366: ---    50      2       251
        !          48367: 0707070014231031201006440057030057030000010306000522627503000003000000003357post.src/devpost.add/H5name H5
        !          48368: fontname Helvetica-Condensed-Bold
        !          48369: ligatures fi fl 0
        !          48370: spacewidth 25
        !          48371: charset
        !          48372: !      33      2       33
        !          48373: "      33      2       34
        !          48374: dq     "
        !          48375: #      50      2       35
        !          48376: $      50      2       36
        !          48377: %      83      2       37
        !          48378: &      67      2       38
        !          48379: '      28      2       39
        !          48380: (      33      3       40
        !          48381: )      33      3       41
        !          48382: *      50      2       42
        !          48383: +      50      0       43
        !          48384: ,      33      1       44
        !          48385: hy     33      0       45
        !          48386: -      "
        !          48387: .      33      0       46
        !          48388: /      28      2       47
        !          48389: 0      50      2       48
        !          48390: 1      50      2       49
        !          48391: 2      50      2       50
        !          48392: 3      50      2       51
        !          48393: 4      50      2       52
        !          48394: 5      50      2       53
        !          48395: 6      50      2       54
        !          48396: 7      50      2       55
        !          48397: 8      50      2       56
        !          48398: 9      50      2       57
        !          48399: :      28      0       58
        !          48400: ;      28      1       59
        !          48401: ---    50      0       60
        !          48402: =      50      0       61
        !          48403: ---    50      0       62
        !          48404: ?      50      2       63
        !          48405: @      83      3       64
        !          48406: A      56      2       65
        !          48407: B      56      2       66
        !          48408: C      56      2       67
        !          48409: D      61      2       68
        !          48410: E      50      2       69
        !          48411: F      50      2       70
        !          48412: G      61      2       71
        !          48413: H      61      2       72
        !          48414: I      28      2       73
        !          48415: J      44      2       74
        !          48416: K      56      2       75
        !          48417: L      50      2       76
        !          48418: M      78      2       77
        !          48419: N      61      2       78
        !          48420: O      61      2       79
        !          48421: P      56      2       80
        !          48422: Q      61      3       81
        !          48423: R      61      2       82
        !          48424: S      56      2       83
        !          48425: T      50      2       84
        !          48426: U      61      2       85
        !          48427: V      56      2       86
        !          48428: W      83      2       87
        !          48429: X      56      2       88
        !          48430: Y      56      2       89
        !          48431: Z      50      2       90
        !          48432: [      33      3       91
        !          48433: \      25      2       92
        !          48434: bs     "
        !          48435: ]      33      3       93
        !          48436: ---    50      2       94
        !          48437: ---    50      1       95
        !          48438: `      28      2       96
        !          48439: a      50      0       97
        !          48440: b      50      2       98
        !          48441: c      44      0       99
        !          48442: d      50      2       100
        !          48443: e      50      0       101
        !          48444: f      28      2       102
        !          48445: g      50      1       103
        !          48446: h      50      2       104
        !          48447: i      28      2       105
        !          48448: j      28      3       106
        !          48449: k      44      2       107
        !          48450: l      28      2       108
        !          48451: m      78      0       109
        !          48452: n      50      0       110
        !          48453: o      50      0       111
        !          48454: p      50      1       112
        !          48455: q      50      1       113
        !          48456: r      33      0       114
        !          48457: s      44      0       115
        !          48458: t      28      2       116
        !          48459: u      50      0       117
        !          48460: v      44      0       118
        !          48461: w      67      0       119
        !          48462: x      44      0       120
        !          48463: y      44      1       121
        !          48464: z      39      0       122
        !          48465: {      27      3       123
        !          48466: ---    25      3       124
        !          48467: }      27      3       125
        !          48468: ---    50      0       126
        !          48469: ---    33      1       161
        !          48470: ct     50      2       162
        !          48471: ps     50      2       163
        !          48472: fr     17      2       164
        !          48473: yn     50      2       165
        !          48474: fn     50      3       166
        !          48475: sc     50      3       167
        !          48476: cr     50      2       168
        !          48477: ---    25      2       169
        !          48478: ``     50      2       170
        !          48479: ---    50      0       171
        !          48480: ---    28      0       172
        !          48481: ---    28      0       173
        !          48482: fi     50      2       174
        !          48483: fl     50      2       175
        !          48484: en     50      0       177
        !          48485: \-     "
        !          48486: dg     50      3       178
        !          48487: dd     50      3       179
        !          48488: ---    33      0       180
        !          48489: pg     55      3       182
        !          48490: ---    42      0       183
        !          48491: ---    28      1       184
        !          48492: ---    50      1       185
        !          48493: ''     50      2       186
        !          48494: ---    50      0       187
        !          48495: ---    100     0       188
        !          48496: ---    111     2       189
        !          48497: ---    50      1       191
        !          48498: ga     33      2       193
        !          48499: \`     "
        !          48500: aa     33      2       194
        !          48501: \'     "
        !          48502: ^a     33      2       195
        !          48503: ^      "
        !          48504: ~a     33      2       196
        !          48505: ~      "
        !          48506: -a     33      2       197
        !          48507: Ua     33      2       198
        !          48508: .a     33      2       199
        !          48509: :a     33      2       200
        !          48510: oa     33      2       202
        !          48511: ,a     33      1       203
        !          48512: "a     33      2       205
        !          48513: Ca     33      1       206
        !          48514: va     33      2       207
        !          48515: em     100     0       208
        !          48516: ---    78      2       225
        !          48517: ---    30      2       227
        !          48518: ---    50      2       232
        !          48519: ---    61      2       233
        !          48520: ---    83      2       234
        !          48521: ---    30      2       235
        !          48522: ---    72      0       241
        !          48523: ---    28      0       245
        !          48524: ---    28      2       248
        !          48525: ---    50      0       249
        !          48526: ---    72      0       250
        !          48527: ---    50      2       251
        !          48528: 0707070014231031211006440057030057030000010306020522627503000003000000003366post.src/devpost.add/H6name H6
        !          48529: fontname Helvetica-Condensed-BoldOblique
        !          48530: ligatures fi fl 0
        !          48531: spacewidth 25
        !          48532: charset
        !          48533: !      33      2       33
        !          48534: "      33      2       34
        !          48535: dq     "
        !          48536: #      50      2       35
        !          48537: $      50      2       36
        !          48538: %      83      2       37
        !          48539: &      67      2       38
        !          48540: '      28      2       39
        !          48541: (      33      3       40
        !          48542: )      33      3       41
        !          48543: *      50      2       42
        !          48544: +      50      0       43
        !          48545: ,      33      1       44
        !          48546: hy     33      0       45
        !          48547: -      "
        !          48548: .      33      0       46
        !          48549: /      28      2       47
        !          48550: 0      50      2       48
        !          48551: 1      50      2       49
        !          48552: 2      50      2       50
        !          48553: 3      50      2       51
        !          48554: 4      50      2       52
        !          48555: 5      50      2       53
        !          48556: 6      50      2       54
        !          48557: 7      50      2       55
        !          48558: 8      50      2       56
        !          48559: 9      50      2       57
        !          48560: :      28      0       58
        !          48561: ;      28      1       59
        !          48562: ---    50      0       60
        !          48563: =      50      0       61
        !          48564: ---    50      0       62
        !          48565: ?      50      2       63
        !          48566: @      83      3       64
        !          48567: A      56      2       65
        !          48568: B      56      2       66
        !          48569: C      56      2       67
        !          48570: D      61      2       68
        !          48571: E      50      2       69
        !          48572: F      50      2       70
        !          48573: G      61      2       71
        !          48574: H      61      2       72
        !          48575: I      28      2       73
        !          48576: J      44      2       74
        !          48577: K      56      2       75
        !          48578: L      50      2       76
        !          48579: M      78      2       77
        !          48580: N      61      2       78
        !          48581: O      61      2       79
        !          48582: P      56      2       80
        !          48583: Q      61      3       81
        !          48584: R      61      2       82
        !          48585: S      56      2       83
        !          48586: T      50      2       84
        !          48587: U      61      2       85
        !          48588: V      56      2       86
        !          48589: W      83      2       87
        !          48590: X      56      2       88
        !          48591: Y      56      2       89
        !          48592: Z      50      2       90
        !          48593: [      33      3       91
        !          48594: \      25      2       92
        !          48595: bs     "
        !          48596: ]      33      3       93
        !          48597: ---    50      2       94
        !          48598: ---    50      1       95
        !          48599: `      28      2       96
        !          48600: a      50      0       97
        !          48601: b      50      2       98
        !          48602: c      44      0       99
        !          48603: d      50      2       100
        !          48604: e      50      0       101
        !          48605: f      28      2       102
        !          48606: g      50      1       103
        !          48607: h      50      2       104
        !          48608: i      28      2       105
        !          48609: j      28      3       106
        !          48610: k      44      2       107
        !          48611: l      28      2       108
        !          48612: m      78      0       109
        !          48613: n      50      0       110
        !          48614: o      50      0       111
        !          48615: p      50      1       112
        !          48616: q      50      1       113
        !          48617: r      33      0       114
        !          48618: s      44      0       115
        !          48619: t      28      2       116
        !          48620: u      50      0       117
        !          48621: v      44      0       118
        !          48622: w      67      0       119
        !          48623: x      44      0       120
        !          48624: y      44      1       121
        !          48625: z      39      0       122
        !          48626: {      27      3       123
        !          48627: ---    25      3       124
        !          48628: }      27      3       125
        !          48629: ---    50      0       126
        !          48630: ---    33      1       161
        !          48631: ct     50      2       162
        !          48632: ps     50      2       163
        !          48633: fr     17      2       164
        !          48634: yn     50      2       165
        !          48635: fn     50      3       166
        !          48636: sc     50      3       167
        !          48637: cr     50      2       168
        !          48638: ---    25      2       169
        !          48639: ``     50      2       170
        !          48640: ---    50      0       171
        !          48641: ---    28      0       172
        !          48642: ---    28      0       173
        !          48643: fi     50      2       174
        !          48644: fl     50      2       175
        !          48645: en     50      0       177
        !          48646: \-     "
        !          48647: dg     50      3       178
        !          48648: dd     50      3       179
        !          48649: ---    33      0       180
        !          48650: pg     55      3       182
        !          48651: ---    42      0       183
        !          48652: ---    28      1       184
        !          48653: ---    50      1       185
        !          48654: ''     50      2       186
        !          48655: ---    50      0       187
        !          48656: ---    100     0       188
        !          48657: ---    111     2       189
        !          48658: ---    50      1       191
        !          48659: ga     33      2       193
        !          48660: \`     "
        !          48661: aa     33      2       194
        !          48662: \'     "
        !          48663: ^a     33      2       195
        !          48664: ^      "
        !          48665: ~a     33      2       196
        !          48666: ~      "
        !          48667: -a     33      2       197
        !          48668: Ua     33      2       198
        !          48669: .a     33      2       199
        !          48670: :a     33      2       200
        !          48671: oa     33      2       202
        !          48672: ,a     33      1       203
        !          48673: "a     33      2       205
        !          48674: Ca     33      1       206
        !          48675: va     33      2       207
        !          48676: em     100     0       208
        !          48677: ---    78      2       225
        !          48678: ---    30      2       227
        !          48679: ---    50      2       232
        !          48680: ---    61      2       233
        !          48681: ---    83      2       234
        !          48682: ---    30      2       235
        !          48683: ---    72      0       241
        !          48684: ---    28      0       245
        !          48685: ---    28      2       248
        !          48686: ---    50      0       249
        !          48687: ---    72      0       250
        !          48688: ---    50      2       251
        !          48689: 0707070014231031221006440057030057030000010306040522627503000003000000003360post.src/devpost.add/H7name H7
        !          48690: fontname Helvetica-Condensed-Black
        !          48691: ligatures fi fl 0
        !          48692: spacewidth 25
        !          48693: charset
        !          48694: !      33      2       33
        !          48695: "      33      2       34
        !          48696: dq     "
        !          48697: #      50      2       35
        !          48698: $      50      2       36
        !          48699: %      83      2       37
        !          48700: &      67      2       38
        !          48701: '      28      2       39
        !          48702: (      28      3       40
        !          48703: )      28      3       41
        !          48704: *      50      2       42
        !          48705: +      50      0       43
        !          48706: ,      33      1       44
        !          48707: hy     33      0       45
        !          48708: -      "
        !          48709: .      33      0       46
        !          48710: /      28      2       47
        !          48711: 0      50      2       48
        !          48712: 1      50      2       49
        !          48713: 2      50      2       50
        !          48714: 3      50      2       51
        !          48715: 4      50      2       52
        !          48716: 5      50      2       53
        !          48717: 6      50      2       54
        !          48718: 7      50      2       55
        !          48719: 8      50      2       56
        !          48720: 9      50      2       57
        !          48721: :      28      0       58
        !          48722: ;      28      1       59
        !          48723: ---    50      0       60
        !          48724: =      50      0       61
        !          48725: ---    50      0       62
        !          48726: ?      50      2       63
        !          48727: @      83      3       64
        !          48728: A      56      2       65
        !          48729: B      56      2       66
        !          48730: C      56      2       67
        !          48731: D      56      2       68
        !          48732: E      50      2       69
        !          48733: F      50      2       70
        !          48734: G      56      2       71
        !          48735: H      56      2       72
        !          48736: I      28      2       73
        !          48737: J      44      2       74
        !          48738: K      56      2       75
        !          48739: L      44      2       76
        !          48740: M      78      2       77
        !          48741: N      56      2       78
        !          48742: O      56      2       79
        !          48743: P      56      2       80
        !          48744: Q      56      3       81
        !          48745: R      56      2       82
        !          48746: S      50      2       83
        !          48747: T      50      2       84
        !          48748: U      56      2       85
        !          48749: V      56      2       86
        !          48750: W      78      2       87
        !          48751: X      56      2       88
        !          48752: Y      56      2       89
        !          48753: Z      44      2       90
        !          48754: [      28      3       91
        !          48755: \      25      2       92
        !          48756: bs     "
        !          48757: ]      28      3       93
        !          48758: ---    50      2       94
        !          48759: ---    50      1       95
        !          48760: `      28      2       96
        !          48761: a      50      0       97
        !          48762: b      50      2       98
        !          48763: c      50      0       99
        !          48764: d      50      2       100
        !          48765: e      50      0       101
        !          48766: f      33      2       102
        !          48767: g      50      1       103
        !          48768: h      50      2       104
        !          48769: i      28      2       105
        !          48770: j      28      3       106
        !          48771: k      50      2       107
        !          48772: l      28      2       108
        !          48773: m      72      0       109
        !          48774: n      50      0       110
        !          48775: o      50      0       111
        !          48776: p      50      1       112
        !          48777: q      50      1       113
        !          48778: r      33      0       114
        !          48779: s      44      0       115
        !          48780: t      33      2       116
        !          48781: u      50      0       117
        !          48782: v      44      0       118
        !          48783: w      67      0       119
        !          48784: x      44      0       120
        !          48785: y      44      1       121
        !          48786: z      39      0       122
        !          48787: {      27      3       123
        !          48788: ---    25      3       124
        !          48789: }      27      3       125
        !          48790: ---    50      0       126
        !          48791: ---    33      1       161
        !          48792: ct     50      2       162
        !          48793: ps     50      2       163
        !          48794: fr     17      2       164
        !          48795: yn     50      2       165
        !          48796: fn     50      3       166
        !          48797: sc     50      3       167
        !          48798: cr     50      2       168
        !          48799: ---    25      2       169
        !          48800: ``     50      2       170
        !          48801: ---    50      0       171
        !          48802: ---    28      0       172
        !          48803: ---    28      0       173
        !          48804: fi     56      2       174
        !          48805: fl     56      2       175
        !          48806: en     50      0       177
        !          48807: \-     "
        !          48808: dg     50      3       178
        !          48809: dd     50      3       179
        !          48810: ---    33      0       180
        !          48811: pg     55      3       182
        !          48812: ---    42      0       183
        !          48813: ---    28      1       184
        !          48814: ---    50      1       185
        !          48815: ''     50      2       186
        !          48816: ---    50      0       187
        !          48817: ---    100     0       188
        !          48818: ---    111     2       189
        !          48819: ---    50      1       191
        !          48820: ga     33      2       193
        !          48821: \`     "
        !          48822: aa     33      2       194
        !          48823: \'     "
        !          48824: ^a     33      2       195
        !          48825: ^      "
        !          48826: ~a     33      2       196
        !          48827: ~      "
        !          48828: -a     33      2       197
        !          48829: Ua     33      2       198
        !          48830: .a     33      2       199
        !          48831: :a     33      2       200
        !          48832: oa     33      2       202
        !          48833: ,a     33      1       203
        !          48834: "a     33      2       205
        !          48835: Ca     33      1       206
        !          48836: va     33      2       207
        !          48837: em     100     0       208
        !          48838: ---    78      2       225
        !          48839: ---    30      2       227
        !          48840: ---    44      2       232
        !          48841: ---    56      2       233
        !          48842: ---    78      2       234
        !          48843: ---    30      2       235
        !          48844: ---    72      0       241
        !          48845: ---    28      0       245
        !          48846: ---    28      2       248
        !          48847: ---    50      0       249
        !          48848: ---    72      0       250
        !          48849: ---    50      2       251
        !          48850: 0707070014231031231006440057030057030000010306060522627503000003000000003367post.src/devpost.add/H8name H8
        !          48851: fontname Helvetica-Condensed-BlackOblique
        !          48852: ligatures fi fl 0
        !          48853: spacewidth 25
        !          48854: charset
        !          48855: !      33      2       33
        !          48856: "      33      2       34
        !          48857: dq     "
        !          48858: #      50      2       35
        !          48859: $      50      2       36
        !          48860: %      83      2       37
        !          48861: &      67      2       38
        !          48862: '      28      2       39
        !          48863: (      28      3       40
        !          48864: )      28      3       41
        !          48865: *      50      2       42
        !          48866: +      50      0       43
        !          48867: ,      33      1       44
        !          48868: hy     33      0       45
        !          48869: -      "
        !          48870: .      33      0       46
        !          48871: /      28      2       47
        !          48872: 0      50      2       48
        !          48873: 1      50      2       49
        !          48874: 2      50      2       50
        !          48875: 3      50      2       51
        !          48876: 4      50      2       52
        !          48877: 5      50      2       53
        !          48878: 6      50      2       54
        !          48879: 7      50      2       55
        !          48880: 8      50      2       56
        !          48881: 9      50      2       57
        !          48882: :      28      0       58
        !          48883: ;      28      1       59
        !          48884: ---    50      0       60
        !          48885: =      50      0       61
        !          48886: ---    50      0       62
        !          48887: ?      50      2       63
        !          48888: @      83      3       64
        !          48889: A      56      2       65
        !          48890: B      56      2       66
        !          48891: C      56      2       67
        !          48892: D      56      2       68
        !          48893: E      50      2       69
        !          48894: F      50      2       70
        !          48895: G      56      2       71
        !          48896: H      56      2       72
        !          48897: I      28      2       73
        !          48898: J      44      2       74
        !          48899: K      56      2       75
        !          48900: L      44      2       76
        !          48901: M      78      2       77
        !          48902: N      56      2       78
        !          48903: O      56      2       79
        !          48904: P      56      2       80
        !          48905: Q      56      3       81
        !          48906: R      56      2       82
        !          48907: S      50      2       83
        !          48908: T      50      2       84
        !          48909: U      56      2       85
        !          48910: V      56      2       86
        !          48911: W      78      2       87
        !          48912: X      56      2       88
        !          48913: Y      56      2       89
        !          48914: Z      44      2       90
        !          48915: [      28      3       91
        !          48916: \      25      2       92
        !          48917: bs     "
        !          48918: ]      28      3       93
        !          48919: ---    50      2       94
        !          48920: ---    50      1       95
        !          48921: `      28      2       96
        !          48922: a      50      0       97
        !          48923: b      50      2       98
        !          48924: c      50      0       99
        !          48925: d      50      2       100
        !          48926: e      50      0       101
        !          48927: f      33      2       102
        !          48928: g      50      1       103
        !          48929: h      50      2       104
        !          48930: i      28      2       105
        !          48931: j      28      3       106
        !          48932: k      50      2       107
        !          48933: l      28      2       108
        !          48934: m      72      0       109
        !          48935: n      50      0       110
        !          48936: o      50      0       111
        !          48937: p      50      1       112
        !          48938: q      50      1       113
        !          48939: r      33      0       114
        !          48940: s      44      0       115
        !          48941: t      33      2       116
        !          48942: u      50      0       117
        !          48943: v      44      0       118
        !          48944: w      67      0       119
        !          48945: x      44      0       120
        !          48946: y      44      1       121
        !          48947: z      39      0       122
        !          48948: {      27      3       123
        !          48949: ---    25      3       124
        !          48950: }      27      3       125
        !          48951: ---    50      0       126
        !          48952: ---    33      1       161
        !          48953: ct     50      2       162
        !          48954: ps     50      2       163
        !          48955: fr     17      2       164
        !          48956: yn     50      2       165
        !          48957: fn     50      3       166
        !          48958: sc     50      3       167
        !          48959: cr     50      2       168
        !          48960: ---    25      2       169
        !          48961: ``     50      2       170
        !          48962: ---    50      0       171
        !          48963: ---    28      0       172
        !          48964: ---    28      0       173
        !          48965: fi     56      2       174
        !          48966: fl     56      2       175
        !          48967: en     50      0       177
        !          48968: \-     "
        !          48969: dg     50      3       178
        !          48970: dd     50      3       179
        !          48971: ---    33      0       180
        !          48972: pg     55      3       182
        !          48973: ---    42      0       183
        !          48974: ---    28      1       184
        !          48975: ---    50      1       185
        !          48976: ''     50      2       186
        !          48977: ---    50      0       187
        !          48978: ---    100     0       188
        !          48979: ---    111     2       189
        !          48980: ---    50      1       191
        !          48981: ga     33      2       193
        !          48982: \`     "
        !          48983: aa     33      2       194
        !          48984: \'     "
        !          48985: ^a     33      2       195
        !          48986: ^      "
        !          48987: ~a     33      2       196
        !          48988: ~      "
        !          48989: -a     33      2       197
        !          48990: Ua     33      2       198
        !          48991: .a     33      2       199
        !          48992: :a     33      2       200
        !          48993: oa     33      2       202
        !          48994: ,a     33      1       203
        !          48995: "a     33      2       205
        !          48996: Ca     33      1       206
        !          48997: va     33      2       207
        !          48998: em     100     0       208
        !          48999: ---    78      2       225
        !          49000: ---    30      2       227
        !          49001: ---    44      2       232
        !          49002: ---    56      2       233
        !          49003: ---    78      2       234
        !          49004: ---    30      2       235
        !          49005: ---    72      0       241
        !          49006: ---    28      0       245
        !          49007: ---    28      2       248
        !          49008: ---    50      0       249
        !          49009: ---    72      0       250
        !          49010: ---    50      2       251
        !          49011: 0707070014231031241006440057030057030000010306200522627503000003000000003355post.src/devpost.add/HCname HC
        !          49012: fontname Helvetica-Black
        !          49013: ligatures fi fl 0
        !          49014: spacewidth 33
        !          49015: charset
        !          49016: !      33      2       33
        !          49017: "      50      2       34
        !          49018: dq     "
        !          49019: #      66      2       35
        !          49020: $      67      2       36
        !          49021: %      100     2       37
        !          49022: &      89      2       38
        !          49023: '      28      2       39
        !          49024: (      39      3       40
        !          49025: )      39      3       41
        !          49026: *      56      2       42
        !          49027: +      66      0       43
        !          49028: ,      33      1       44
        !          49029: hy     33      0       45
        !          49030: -      "
        !          49031: .      33      0       46
        !          49032: /      28      2       47
        !          49033: 0      67      2       48
        !          49034: 1      67      2       49
        !          49035: 2      67      2       50
        !          49036: 3      67      2       51
        !          49037: 4      67      2       52
        !          49038: 5      67      2       53
        !          49039: 6      67      2       54
        !          49040: 7      67      2       55
        !          49041: 8      67      2       56
        !          49042: 9      67      2       57
        !          49043: :      33      0       58
        !          49044: ;      33      1       59
        !          49045: ---    66      0       60
        !          49046: =      66      0       61
        !          49047: ---    66      0       62
        !          49048: ?      61      2       63
        !          49049: @      74      3       64
        !          49050: A      78      2       65
        !          49051: B      78      2       66
        !          49052: C      78      2       67
        !          49053: D      78      2       68
        !          49054: E      72      2       69
        !          49055: F      67      2       70
        !          49056: G      83      2       71
        !          49057: H      83      2       72
        !          49058: I      39      2       73
        !          49059: J      67      2       74
        !          49060: K      83      2       75
        !          49061: L      67      2       76
        !          49062: M      94      2       77
        !          49063: N      83      2       78
        !          49064: O      83      2       79
        !          49065: P      72      2       80
        !          49066: Q      83      3       81
        !          49067: R      78      2       82
        !          49068: S      72      2       83
        !          49069: T      72      2       84
        !          49070: U      83      2       85
        !          49071: V      78      2       86
        !          49072: W      100     2       87
        !          49073: X      78      2       88
        !          49074: Y      78      2       89
        !          49075: Z      72      2       90
        !          49076: [      39      3       91
        !          49077: \      28      2       92
        !          49078: bs     "
        !          49079: ]      39      3       93
        !          49080: ---    61      2       94
        !          49081: ---    50      1       95
        !          49082: `      28      2       96
        !          49083: a      67      0       97
        !          49084: b      67      2       98
        !          49085: c      67      0       99
        !          49086: d      67      2       100
        !          49087: e      67      0       101
        !          49088: f      38      2       102
        !          49089: g      67      1       103
        !          49090: h      67      2       104
        !          49091: i      33      2       105
        !          49092: j      33      3       106
        !          49093: k      67      2       107
        !          49094: l      33      2       108
        !          49095: m      100     0       109
        !          49096: n      67      0       110
        !          49097: o      67      0       111
        !          49098: p      67      1       112
        !          49099: q      67      1       113
        !          49100: r      44      0       114
        !          49101: s      61      0       115
        !          49102: t      44      2       116
        !          49103: u      67      0       117
        !          49104: v      61      0       118
        !          49105: w      94      0       119
        !          49106: x      67      0       120
        !          49107: y      61      1       121
        !          49108: z      56      0       122
        !          49109: {      39      3       123
        !          49110: ---    28      3       124
        !          49111: }      39      3       125
        !          49112: ---    66      0       126
        !          49113: ---    33      1       161
        !          49114: ct     67      2       162
        !          49115: ps     67      2       163
        !          49116: fr     17      2       164
        !          49117: yn     67      2       165
        !          49118: fn     67      3       166
        !          49119: sc     67      3       167
        !          49120: cr     66      2       168
        !          49121: ---    28      2       169
        !          49122: ``     50      2       170
        !          49123: ---    67      0       171
        !          49124: ---    33      0       172
        !          49125: ---    33      0       173
        !          49126: fi     67      2       174
        !          49127: fl     67      2       175
        !          49128: en     50      0       177
        !          49129: \-     "
        !          49130: dg     67      3       178
        !          49131: dd     67      3       179
        !          49132: ---    33      0       180
        !          49133: pg     85      3       182
        !          49134: ---    50      0       183
        !          49135: ---    28      1       184
        !          49136: ---    50      1       185
        !          49137: ''     50      2       186
        !          49138: ---    67      0       187
        !          49139: ---    100     0       188
        !          49140: ---    100     2       189
        !          49141: ---    61      1       191
        !          49142: ga     33      2       193
        !          49143: \`     "
        !          49144: aa     33      2       194
        !          49145: \'     "
        !          49146: ^a     33      2       195
        !          49147: ^      "
        !          49148: ~a     33      2       196
        !          49149: ~      "
        !          49150: -a     33      2       197
        !          49151: Ua     33      2       198
        !          49152: .a     33      2       199
        !          49153: :a     33      2       200
        !          49154: oa     33      2       202
        !          49155: ,a     33      1       203
        !          49156: "a     33      2       205
        !          49157: Ca     33      1       206
        !          49158: va     33      2       207
        !          49159: em     100     0       208
        !          49160: ---    100     2       225
        !          49161: ---    40      2       227
        !          49162: ---    67      2       232
        !          49163: ---    83      2       233
        !          49164: ---    100     2       234
        !          49165: ---    40      2       235
        !          49166: ---    100     0       241
        !          49167: ---    33      0       245
        !          49168: ---    33      2       248
        !          49169: ---    67      0       249
        !          49170: ---    100     0       250
        !          49171: ---    67      2       251
        !          49172: 0707070014231031251006440057030057030000010306220522627503000003000000003357post.src/devpost.add/HKname HK
        !          49173: fontname Helvetica-LightOblique
        !          49174: ligatures fi fl 0
        !          49175: spacewidth 28
        !          49176: charset
        !          49177: !      33      2       33
        !          49178: "      28      2       34
        !          49179: dq     "
        !          49180: #      66      2       35
        !          49181: $      56      2       36
        !          49182: %      89      2       37
        !          49183: &      67      2       38
        !          49184: '      22      2       39
        !          49185: (      33      3       40
        !          49186: )      33      3       41
        !          49187: *      39      2       42
        !          49188: +      66      0       43
        !          49189: ,      28      1       44
        !          49190: hy     33      0       45
        !          49191: -      "
        !          49192: .      28      0       46
        !          49193: /      28      2       47
        !          49194: 0      56      2       48
        !          49195: 1      56      2       49
        !          49196: 2      56      2       50
        !          49197: 3      56      2       51
        !          49198: 4      56      2       52
        !          49199: 5      56      2       53
        !          49200: 6      56      2       54
        !          49201: 7      56      2       55
        !          49202: 8      56      2       56
        !          49203: 9      56      2       57
        !          49204: :      28      0       58
        !          49205: ;      28      1       59
        !          49206: ---    66      0       60
        !          49207: =      66      0       61
        !          49208: ---    66      0       62
        !          49209: ?      50      2       63
        !          49210: @      80      3       64
        !          49211: A      67      2       65
        !          49212: B      67      2       66
        !          49213: C      72      2       67
        !          49214: D      72      2       68
        !          49215: E      61      2       69
        !          49216: F      56      2       70
        !          49217: G      78      2       71
        !          49218: H      72      2       72
        !          49219: I      28      2       73
        !          49220: J      50      2       74
        !          49221: K      67      2       75
        !          49222: L      56      2       76
        !          49223: M      83      2       77
        !          49224: N      72      2       78
        !          49225: O      78      2       79
        !          49226: P      61      2       80
        !          49227: Q      78      3       81
        !          49228: R      67      2       82
        !          49229: S      61      2       83
        !          49230: T      56      2       84
        !          49231: U      72      2       85
        !          49232: V      61      2       86
        !          49233: W      89      2       87
        !          49234: X      61      2       88
        !          49235: Y      61      2       89
        !          49236: Z      61      2       90
        !          49237: [      33      3       91
        !          49238: \      28      2       92
        !          49239: bs     "
        !          49240: ]      33      3       93
        !          49241: ---    66      2       94
        !          49242: ---    50      1       95
        !          49243: `      22      2       96
        !          49244: a      56      0       97
        !          49245: b      61      2       98
        !          49246: c      56      0       99
        !          49247: d      61      2       100
        !          49248: e      56      0       101
        !          49249: f      28      2       102
        !          49250: g      61      1       103
        !          49251: h      56      2       104
        !          49252: i      22      2       105
        !          49253: j      22      3       106
        !          49254: k      50      2       107
        !          49255: l      22      2       108
        !          49256: m      83      0       109
        !          49257: n      56      0       110
        !          49258: o      56      0       111
        !          49259: p      61      1       112
        !          49260: q      61      1       113
        !          49261: r      33      0       114
        !          49262: s      50      0       115
        !          49263: t      28      2       116
        !          49264: u      56      0       117
        !          49265: v      50      0       118
        !          49266: w      72      0       119
        !          49267: x      50      0       120
        !          49268: y      50      1       121
        !          49269: z      50      0       122
        !          49270: {      33      3       123
        !          49271: ---    22      3       124
        !          49272: }      33      3       125
        !          49273: ---    66      0       126
        !          49274: ---    33      1       161
        !          49275: ct     56      2       162
        !          49276: ps     56      2       163
        !          49277: fr     17      2       164
        !          49278: yn     56      2       165
        !          49279: fn     56      3       166
        !          49280: sc     56      3       167
        !          49281: cr     56      2       168
        !          49282: ---    22      2       169
        !          49283: ``     39      2       170
        !          49284: ---    56      0       171
        !          49285: ---    39      0       172
        !          49286: ---    39      0       173
        !          49287: fi     50      2       174
        !          49288: fl     50      2       175
        !          49289: en     50      0       177
        !          49290: \-     "
        !          49291: dg     56      3       178
        !          49292: dd     56      3       179
        !          49293: ---    28      0       180
        !          49294: pg     65      3       182
        !          49295: ---    50      0       183
        !          49296: ---    22      1       184
        !          49297: ---    39      1       185
        !          49298: ''     39      2       186
        !          49299: ---    56      0       187
        !          49300: ---    100     0       188
        !          49301: ---    100     2       189
        !          49302: ---    50      1       191
        !          49303: ga     33      2       193
        !          49304: \`     "
        !          49305: aa     33      2       194
        !          49306: \'     "
        !          49307: ^a     33      2       195
        !          49308: ^      "
        !          49309: ~a     33      2       196
        !          49310: ~      "
        !          49311: -a     33      2       197
        !          49312: Ua     33      2       198
        !          49313: .a     33      2       199
        !          49314: :a     33      2       200
        !          49315: oa     33      2       202
        !          49316: ,a     33      1       203
        !          49317: "a     33      2       205
        !          49318: Ca     33      1       206
        !          49319: va     33      2       207
        !          49320: em     100     0       208
        !          49321: ---    100     2       225
        !          49322: ---    33      2       227
        !          49323: ---    56      2       232
        !          49324: ---    78      2       233
        !          49325: ---    100     2       234
        !          49326: ---    33      2       235
        !          49327: ---    89      0       241
        !          49328: ---    22      0       245
        !          49329: ---    22      2       248
        !          49330: ---    56      0       249
        !          49331: ---    94      0       250
        !          49332: ---    50      2       251
        !          49333: 0707070014231031261006440057030057030000010306240522627503000003000000003350post.src/devpost.add/HLname HL
        !          49334: fontname Helvetica-Light
        !          49335: ligatures fi fl 0
        !          49336: spacewidth 28
        !          49337: charset
        !          49338: !      33      2       33
        !          49339: "      28      2       34
        !          49340: dq     "
        !          49341: #      66      2       35
        !          49342: $      56      2       36
        !          49343: %      89      2       37
        !          49344: &      67      2       38
        !          49345: '      22      2       39
        !          49346: (      33      3       40
        !          49347: )      33      3       41
        !          49348: *      39      2       42
        !          49349: +      66      0       43
        !          49350: ,      28      1       44
        !          49351: hy     33      0       45
        !          49352: -      "
        !          49353: .      28      0       46
        !          49354: /      28      2       47
        !          49355: 0      56      2       48
        !          49356: 1      56      2       49
        !          49357: 2      56      2       50
        !          49358: 3      56      2       51
        !          49359: 4      56      2       52
        !          49360: 5      56      2       53
        !          49361: 6      56      2       54
        !          49362: 7      56      2       55
        !          49363: 8      56      2       56
        !          49364: 9      56      2       57
        !          49365: :      28      0       58
        !          49366: ;      28      1       59
        !          49367: ---    66      0       60
        !          49368: =      66      0       61
        !          49369: ---    66      0       62
        !          49370: ?      50      2       63
        !          49371: @      80      3       64
        !          49372: A      67      2       65
        !          49373: B      67      2       66
        !          49374: C      72      2       67
        !          49375: D      72      2       68
        !          49376: E      61      2       69
        !          49377: F      56      2       70
        !          49378: G      78      2       71
        !          49379: H      72      2       72
        !          49380: I      28      2       73
        !          49381: J      50      2       74
        !          49382: K      67      2       75
        !          49383: L      56      2       76
        !          49384: M      83      2       77
        !          49385: N      72      2       78
        !          49386: O      78      2       79
        !          49387: P      61      2       80
        !          49388: Q      78      3       81
        !          49389: R      67      2       82
        !          49390: S      61      2       83
        !          49391: T      56      2       84
        !          49392: U      72      2       85
        !          49393: V      61      2       86
        !          49394: W      89      2       87
        !          49395: X      61      2       88
        !          49396: Y      61      2       89
        !          49397: Z      61      2       90
        !          49398: [      33      3       91
        !          49399: \      28      2       92
        !          49400: bs     "
        !          49401: ]      33      3       93
        !          49402: ---    66      2       94
        !          49403: ---    50      1       95
        !          49404: `      22      2       96
        !          49405: a      56      0       97
        !          49406: b      61      2       98
        !          49407: c      56      0       99
        !          49408: d      61      2       100
        !          49409: e      56      0       101
        !          49410: f      28      2       102
        !          49411: g      61      1       103
        !          49412: h      56      2       104
        !          49413: i      22      2       105
        !          49414: j      22      3       106
        !          49415: k      50      2       107
        !          49416: l      22      2       108
        !          49417: m      83      0       109
        !          49418: n      56      0       110
        !          49419: o      56      0       111
        !          49420: p      61      1       112
        !          49421: q      61      1       113
        !          49422: r      33      0       114
        !          49423: s      50      0       115
        !          49424: t      28      2       116
        !          49425: u      56      0       117
        !          49426: v      50      0       118
        !          49427: w      72      0       119
        !          49428: x      50      0       120
        !          49429: y      50      1       121
        !          49430: z      50      0       122
        !          49431: {      33      3       123
        !          49432: ---    22      3       124
        !          49433: }      33      3       125
        !          49434: ---    66      0       126
        !          49435: ---    33      1       161
        !          49436: ct     56      2       162
        !          49437: ps     56      2       163
        !          49438: fr     17      2       164
        !          49439: yn     56      2       165
        !          49440: fn     56      3       166
        !          49441: sc     56      3       167
        !          49442: cr     56      2       168
        !          49443: ---    22      2       169
        !          49444: ``     39      2       170
        !          49445: ---    56      0       171
        !          49446: ---    39      0       172
        !          49447: ---    39      0       173
        !          49448: fi     50      2       174
        !          49449: fl     50      2       175
        !          49450: en     50      0       177
        !          49451: \-     "
        !          49452: dg     56      3       178
        !          49453: dd     56      3       179
        !          49454: ---    28      0       180
        !          49455: pg     65      3       182
        !          49456: ---    50      0       183
        !          49457: ---    22      1       184
        !          49458: ---    39      1       185
        !          49459: ''     39      2       186
        !          49460: ---    56      0       187
        !          49461: ---    100     0       188
        !          49462: ---    100     2       189
        !          49463: ---    50      1       191
        !          49464: ga     33      2       193
        !          49465: \`     "
        !          49466: aa     33      2       194
        !          49467: \'     "
        !          49468: ^a     33      2       195
        !          49469: ^      "
        !          49470: ~a     33      2       196
        !          49471: ~      "
        !          49472: -a     33      2       197
        !          49473: Ua     33      2       198
        !          49474: .a     33      2       199
        !          49475: :a     33      2       200
        !          49476: oa     33      2       202
        !          49477: ,a     33      1       203
        !          49478: "a     33      2       205
        !          49479: Ca     33      1       206
        !          49480: va     33      2       207
        !          49481: em     100     0       208
        !          49482: ---    100     2       225
        !          49483: ---    33      2       227
        !          49484: ---    56      2       232
        !          49485: ---    78      2       233
        !          49486: ---    100     2       234
        !          49487: ---    33      2       235
        !          49488: ---    89      0       241
        !          49489: ---    22      0       245
        !          49490: ---    22      2       248
        !          49491: ---    56      0       249
        !          49492: ---    94      0       250
        !          49493: ---    50      2       251
        !          49494: 0707070014231031271006440057030057030000010306260522627503000003000000003364post.src/devpost.add/HYname HY
        !          49495: fontname Helvetica-BlackOblique
        !          49496: ligatures fi fl 0
        !          49497: spacewidth 33
        !          49498: charset
        !          49499: !      33      2       33
        !          49500: "      50      2       34
        !          49501: dq     "
        !          49502: #      66      2       35
        !          49503: $      67      2       36
        !          49504: %      100     2       37
        !          49505: &      89      2       38
        !          49506: '      28      2       39
        !          49507: (      39      3       40
        !          49508: )      39      3       41
        !          49509: *      56      2       42
        !          49510: +      66      0       43
        !          49511: ,      33      1       44
        !          49512: hy     33      0       45
        !          49513: -      "
        !          49514: .      33      0       46
        !          49515: /      28      2       47
        !          49516: 0      67      2       48
        !          49517: 1      67      2       49
        !          49518: 2      67      2       50
        !          49519: 3      67      2       51
        !          49520: 4      67      2       52
        !          49521: 5      67      2       53
        !          49522: 6      67      2       54
        !          49523: 7      67      2       55
        !          49524: 8      67      2       56
        !          49525: 9      67      2       57
        !          49526: :      33      0       58
        !          49527: ;      33      1       59
        !          49528: ---    66      0       60
        !          49529: =      66      0       61
        !          49530: ---    66      0       62
        !          49531: ?      61      2       63
        !          49532: @      74      3       64
        !          49533: A      78      2       65
        !          49534: B      78      2       66
        !          49535: C      78      2       67
        !          49536: D      78      2       68
        !          49537: E      72      2       69
        !          49538: F      67      2       70
        !          49539: G      83      2       71
        !          49540: H      83      2       72
        !          49541: I      39      2       73
        !          49542: J      67      2       74
        !          49543: K      83      2       75
        !          49544: L      67      2       76
        !          49545: M      94      2       77
        !          49546: N      83      2       78
        !          49547: O      83      2       79
        !          49548: P      72      2       80
        !          49549: Q      83      3       81
        !          49550: R      78      2       82
        !          49551: S      72      2       83
        !          49552: T      72      2       84
        !          49553: U      83      2       85
        !          49554: V      78      2       86
        !          49555: W      100     2       87
        !          49556: X      78      2       88
        !          49557: Y      78      2       89
        !          49558: Z      72      2       90
        !          49559: [      39      3       91
        !          49560: \      28      2       92
        !          49561: bs     "
        !          49562: ]      39      3       93
        !          49563: ---    61      2       94
        !          49564: ---    50      1       95
        !          49565: `      28      2       96
        !          49566: a      67      0       97
        !          49567: b      67      2       98
        !          49568: c      67      0       99
        !          49569: d      67      2       100
        !          49570: e      67      0       101
        !          49571: f      38      2       102
        !          49572: g      67      1       103
        !          49573: h      67      2       104
        !          49574: i      33      2       105
        !          49575: j      33      3       106
        !          49576: k      67      2       107
        !          49577: l      33      2       108
        !          49578: m      100     0       109
        !          49579: n      67      0       110
        !          49580: o      67      0       111
        !          49581: p      67      1       112
        !          49582: q      67      1       113
        !          49583: r      44      0       114
        !          49584: s      61      0       115
        !          49585: t      44      2       116
        !          49586: u      67      0       117
        !          49587: v      61      0       118
        !          49588: w      94      0       119
        !          49589: x      67      0       120
        !          49590: y      61      1       121
        !          49591: z      56      0       122
        !          49592: {      39      3       123
        !          49593: ---    28      3       124
        !          49594: }      39      3       125
        !          49595: ---    66      0       126
        !          49596: ---    33      1       161
        !          49597: ct     67      2       162
        !          49598: ps     67      2       163
        !          49599: fr     17      2       164
        !          49600: yn     67      2       165
        !          49601: fn     67      3       166
        !          49602: sc     67      3       167
        !          49603: cr     66      2       168
        !          49604: ---    28      2       169
        !          49605: ``     50      2       170
        !          49606: ---    67      0       171
        !          49607: ---    33      0       172
        !          49608: ---    33      0       173
        !          49609: fi     67      2       174
        !          49610: fl     67      2       175
        !          49611: en     50      0       177
        !          49612: \-     "
        !          49613: dg     67      3       178
        !          49614: dd     67      3       179
        !          49615: ---    33      0       180
        !          49616: pg     85      3       182
        !          49617: ---    50      0       183
        !          49618: ---    28      1       184
        !          49619: ---    50      1       185
        !          49620: ''     50      2       186
        !          49621: ---    67      0       187
        !          49622: ---    100     0       188
        !          49623: ---    100     2       189
        !          49624: ---    61      1       191
        !          49625: ga     33      2       193
        !          49626: \`     "
        !          49627: aa     33      2       194
        !          49628: \'     "
        !          49629: ^a     33      2       195
        !          49630: ^      "
        !          49631: ~a     33      2       196
        !          49632: ~      "
        !          49633: -a     33      2       197
        !          49634: Ua     33      2       198
        !          49635: .a     33      2       199
        !          49636: :a     33      2       200
        !          49637: oa     33      2       202
        !          49638: ,a     33      1       203
        !          49639: "a     33      2       205
        !          49640: Ca     33      1       206
        !          49641: va     33      2       207
        !          49642: em     100     0       208
        !          49643: ---    100     2       225
        !          49644: ---    40      2       227
        !          49645: ---    67      2       232
        !          49646: ---    83      2       233
        !          49647: ---    100     2       234
        !          49648: ---    40      2       235
        !          49649: ---    100     0       241
        !          49650: ---    33      0       245
        !          49651: ---    33      2       248
        !          49652: ---    67      0       249
        !          49653: ---    100     0       250
        !          49654: ---    67      2       251
        !          49655: 0707070014231031301006440057030057030000010306400522627503000003000000004160post.src/devpost.add/MUfontname Sonata
        !          49656: name MU
        !          49657: charset
        !          49658: ---    15      0       32
        !          49659: ---    21      0       33
        !          49660: ---    51      2       34
        !          49661: ---    22      1       35
        !          49662: ---    51      3       36
        !          49663: ---    52      1       37
        !          49664: ---    61      3       38
        !          49665: ---    13      0       39
        !          49666: ---    17      2       40
        !          49667: ---    17      2       41
        !          49668: ---    36      0       42
        !          49669: ---    30      0       43
        !          49670: ---    18      1       44
        !          49671: ---    30      0       45
        !          49672: ---    9       0       46
        !          49673: ---    17      2       47
        !          49674: ---    36      1       48
        !          49675: ---    25      1       49
        !          49676: ---    34      1       50
        !          49677: ---    32      1       51
        !          49678: ---    33      1       52
        !          49679: ---    30      1       53
        !          49680: ---    33      1       54
        !          49681: ---    34      1       55
        !          49682: ---    33      1       56
        !          49683: ---    33      1       57
        !          49684: ---    15      1       58
        !          49685: ---    27      2       59
        !          49686: ---    100     2       61
        !          49687: ---    42      0       62
        !          49688: ---    69      2       63
        !          49689: ---    20      0       64
        !          49690: ---    30      1       65
        !          49691: ---    67      2       66
        !          49692: ---    42      1       67
        !          49693: ---    81      0       68
        !          49694: ---    30      1       69
        !          49695: ---    83      2       70
        !          49696: ---    15      0       71
        !          49697: ---    30      1       72
        !          49698: ---    11      0       73
        !          49699: ---    0       1       74
        !          49700: ---    0       1       75
        !          49701: ---    41      1       76
        !          49702: ---    59      0       77
        !          49703: ---    30      0       79
        !          49704: ---    80      1       80
        !          49705: ---    30      3       81
        !          49706: ---    20      3       82
        !          49707: ---    60      3       83
        !          49708: ---    62      0       84
        !          49709: ---    66      2       85
        !          49710: ---    72      2       86
        !          49711: ---    61      0       87
        !          49712: ---    30      1       88
        !          49713: ---    56      1       89
        !          49714: ---    65      3       90
        !          49715: ---    15      2       91
        !          49716: ---    0       2       92
        !          49717: ---    46      2       93
        !          49718: ---    6       2       94
        !          49719: ---    50      0       95
        !          49720: ---    50      0       96
        !          49721: ---    30      3       97
        !          49722: ---    20      3       98
        !          49723: ---    42      1       99
        !          49724: ---    75      0       100
        !          49725: ---    55      3       101
        !          49726: ---    52      3       102
        !          49727: ---    14      2       103
        !          49728: ---    30      3       104
        !          49729: ---    10      1       105
        !          49730: ---    0       2       106
        !          49731: ---    0       2       107
        !          49732: ---    4       2       108
        !          49733: ---    6       0       109
        !          49734: ---    18      1       110
        !          49735: ---    12      1       111
        !          49736: ---    45      1       112
        !          49737: ---    30      3       113
        !          49738: ---    56      3       114
        !          49739: ---    23      0       115
        !          49740: ---    52      2       116
        !          49741: ---    66      1       117
        !          49742: ---    26      2       118
        !          49743: ---    41      0       119
        !          49744: ---    56      3       120
        !          49745: ---    30      3       121
        !          49746: ---    29      0       122
        !          49747: ---    13      2       123
        !          49748: ---    0       1       124
        !          49749: ---    46      2       125
        !          49750: ---    34      0       126
        !          49751: ---    17      2       160
        !          49752: ---    79      2       161
        !          49753: ---    25      0       162
        !          49754: ---    24      0       163
        !          49755: ---    21      0       164
        !          49756: ---    26      0       165
        !          49757: ---    23      0       166
        !          49758: ---    30      3       167
        !          49759: ---    21      3       168
        !          49760: ---    15      2       169
        !          49761: ---    25      0       170
        !          49762: ---    8       2       172
        !          49763: ---    30      0       173
        !          49764: ---    13      0       174
        !          49765: ---    30      1       175
        !          49766: ---    23      0       176
        !          49767: ---    30      1       177
        !          49768: ---    30      0       178
        !          49769: ---    34      0       179
        !          49770: ---    30      3       180
        !          49771: ---    85      0       181
        !          49772: ---    31      0       183
        !          49773: ---    120     1       184
        !          49774: ---    82      1       185
        !          49775: ---    37      1       186
        !          49776: ---    22      0       187
        !          49777: ---    23      0       188
        !          49778: ---    48      0       189
        !          49779: ---    30      2       190
        !          49780: ---    30      3       191
        !          49781: ---    30      0       192
        !          49782: ---    20      0       193
        !          49783: ---    41      2       194
        !          49784: ---    57      2       195
        !          49785: ---    78      3       196
        !          49786: ---    14      1       197
        !          49787: ---    56      3       198
        !          49788: ---    0       0       199
        !          49789: ---    0       1       200
        !          49790: ---    28      2       201
        !          49791: ---    28      0       202
        !          49792: ---    26      1       206
        !          49793: ---    30      0       207
        !          49794: ---    30      0       208
        !          49795: ---    30      0       209
        !          49796: ---    26      2       210
        !          49797: ---    46      2       211
        !          49798: ---    61      2       212
        !          49799: ---    28      2       214
        !          49800: ---    56      2       215
        !          49801: ---    47      2       217
        !          49802: ---    56      2       218
        !          49803: ---    27      0       220
        !          49804: ---    50      2       221
        !          49805: ---    44      1       222
        !          49806: ---    23      0       224
        !          49807: ---    30      1       225
        !          49808: ---    30      1       226
        !          49809: ---    15      0       227
        !          49810: ---    7       1       228
        !          49811: ---    35      3       229
        !          49812: ---    56      1       231
        !          49813: ---    28      0       232
        !          49814: ---    9       1       233
        !          49815: ---    30      3       234
        !          49816: ---    105     3       236
        !          49817: ---    15      1       237
        !          49818: ---    31      0       238
        !          49819: ---    30      1       239
        !          49820: ---    0       2       240
        !          49821: ---    4       2       241
        !          49822: ---    37      2       242
        !          49823: ---    28      0       243
        !          49824: ---    28      3       244
        !          49825: ---    0       0       246
        !          49826: ---    30      0       250
        !          49827: ---    0       1       251
        !          49828: 0707070014231031311006440057030057030000010306430522627503000003000000003347post.src/devpost.add/OAfontname Optima-Regular
        !          49829: name OA
        !          49830: ligatures fi fl 0
        !          49831: spacewidth 28
        !          49832: charset
        !          49833: !      33      2       33
        !          49834: "      33      2       34
        !          49835: dq     "
        !          49836: #      61      2       35
        !          49837: $      56      2       36
        !          49838: %      89      2       37
        !          49839: &      72      2       38
        !          49840: '      28      2       39
        !          49841: (      28      3       40
        !          49842: )      28      3       41
        !          49843: *      44      2       42
        !          49844: +      61      0       43
        !          49845: ,      28      1       44
        !          49846: hy     33      0       45
        !          49847: -      "
        !          49848: .      28      0       46
        !          49849: /      28      2       47
        !          49850: 0      56      2       48
        !          49851: 1      56      2       49
        !          49852: 2      56      2       50
        !          49853: 3      56      2       51
        !          49854: 4      56      2       52
        !          49855: 5      56      2       53
        !          49856: 6      56      2       54
        !          49857: 7      56      2       55
        !          49858: 8      56      2       56
        !          49859: 9      56      2       57
        !          49860: :      28      0       58
        !          49861: ;      28      1       59
        !          49862: ---    61      0       60
        !          49863: =      61      0       61
        !          49864: ---    61      0       62
        !          49865: ?      39      2       63
        !          49866: @      80      3       64
        !          49867: A      67      2       65
        !          49868: B      61      2       66
        !          49869: C      67      2       67
        !          49870: D      78      2       68
        !          49871: E      50      2       69
        !          49872: F      50      2       70
        !          49873: G      78      2       71
        !          49874: H      78      2       72
        !          49875: I      28      2       73
        !          49876: J      28      2       74
        !          49877: K      61      2       75
        !          49878: L      50      2       76
        !          49879: M      89      2       77
        !          49880: N      78      2       78
        !          49881: O      83      2       79
        !          49882: P      56      2       80
        !          49883: Q      83      3       81
        !          49884: R      61      2       82
        !          49885: S      50      2       83
        !          49886: T      56      2       84
        !          49887: U      78      2       85
        !          49888: V      67      2       86
        !          49889: W      100     2       87
        !          49890: X      61      2       88
        !          49891: Y      61      2       89
        !          49892: Z      61      2       90
        !          49893: [      33      3       91
        !          49894: \      50      2       92
        !          49895: bs     "
        !          49896: ]      33      3       93
        !          49897: ---    61      2       94
        !          49898: ---    50      1       95
        !          49899: `      28      2       96
        !          49900: a      50      0       97
        !          49901: b      56      2       98
        !          49902: c      50      0       99
        !          49903: d      56      2       100
        !          49904: e      50      0       101
        !          49905: f      28      2       102
        !          49906: g      50      1       103
        !          49907: h      56      2       104
        !          49908: i      28      2       105
        !          49909: j      28      3       106
        !          49910: k      50      2       107
        !          49911: l      28      2       108
        !          49912: m      83      0       109
        !          49913: n      56      0       110
        !          49914: o      56      0       111
        !          49915: p      56      1       112
        !          49916: q      56      1       113
        !          49917: r      33      0       114
        !          49918: s      39      0       115
        !          49919: t      28      2       116
        !          49920: u      56      0       117
        !          49921: v      50      0       118
        !          49922: w      78      0       119
        !          49923: x      50      0       120
        !          49924: y      50      1       121
        !          49925: z      50      0       122
        !          49926: {      33      3       123
        !          49927: ---    33      3       124
        !          49928: }      33      3       125
        !          49929: ---    61      0       126
        !          49930: ---    33      1       161
        !          49931: ct     56      2       162
        !          49932: ps     56      2       163
        !          49933: fr     17      2       164
        !          49934: yn     56      2       165
        !          49935: fn     56      3       166
        !          49936: sc     50      3       167
        !          49937: cr     56      2       168
        !          49938: ---    28      2       169
        !          49939: ``     44      2       170
        !          49940: ---    50      0       171
        !          49941: ---    33      0       172
        !          49942: ---    33      0       173
        !          49943: fi     56      2       174
        !          49944: fl     56      2       175
        !          49945: en     50      0       177
        !          49946: \-     "
        !          49947: dg     50      3       178
        !          49948: dd     50      3       179
        !          49949: ---    28      0       180
        !          49950: pg     80      3       182
        !          49951: ---    61      0       183
        !          49952: ---    28      1       184
        !          49953: ---    44      1       185
        !          49954: ''     44      2       186
        !          49955: ---    50      0       187
        !          49956: ---    100     0       188
        !          49957: ---    100     2       189
        !          49958: ---    39      1       191
        !          49959: ga     33      2       193
        !          49960: \`     "
        !          49961: aa     33      2       194
        !          49962: \'     "
        !          49963: ^a     33      2       195
        !          49964: ^      "
        !          49965: ~a     33      2       196
        !          49966: ~      "
        !          49967: -a     33      2       197
        !          49968: Ua     33      2       198
        !          49969: .a     33      2       199
        !          49970: :a     33      2       200
        !          49971: oa     33      2       202
        !          49972: ,a     33      1       203
        !          49973: "a     33      2       205
        !          49974: Ca     33      1       206
        !          49975: va     33      2       207
        !          49976: em     100     0       208
        !          49977: ---    83      2       225
        !          49978: ---    32      2       227
        !          49979: ---    50      2       232
        !          49980: ---    83      2       233
        !          49981: ---    100     2       234
        !          49982: ---    34      2       235
        !          49983: ---    78      0       241
        !          49984: ---    28      0       245
        !          49985: ---    28      2       248
        !          49986: ---    56      0       249
        !          49987: ---    89      0       250
        !          49988: ---    56      2       251
        !          49989: 0707070014231031321006440057030057030000010306450522627503100003000000003345post.src/devpost.add/OBname OB
        !          49990: fontname Optima-Bold
        !          49991: ligatures fi fl 0
        !          49992: spacewidth 28
        !          49993: charset
        !          49994: !      33      2       33
        !          49995: "      33      2       34
        !          49996: dq     "
        !          49997: #      61      2       35
        !          49998: $      56      2       36
        !          49999: %      100     2       37
        !          50000: &      72      2       38
        !          50001: '      28      2       39
        !          50002: (      33      3       40
        !          50003: )      33      3       41
        !          50004: *      44      2       42
        !          50005: +      61      0       43
        !          50006: ,      28      1       44
        !          50007: hy     33      0       45
        !          50008: -      "
        !          50009: .      28      0       46
        !          50010: /      39      2       47
        !          50011: 0      56      2       48
        !          50012: 1      56      2       49
        !          50013: 2      56      2       50
        !          50014: 3      56      2       51
        !          50015: 4      56      2       52
        !          50016: 5      56      2       53
        !          50017: 6      56      2       54
        !          50018: 7      56      2       55
        !          50019: 8      56      2       56
        !          50020: 9      56      2       57
        !          50021: :      28      0       58
        !          50022: ;      28      1       59
        !          50023: ---    61      0       60
        !          50024: =      61      0       61
        !          50025: ---    61      0       62
        !          50026: ?      44      2       63
        !          50027: @      75      3       64
        !          50028: A      67      2       65
        !          50029: B      61      2       66
        !          50030: C      67      2       67
        !          50031: D      78      2       68
        !          50032: E      50      2       69
        !          50033: F      50      2       70
        !          50034: G      78      2       71
        !          50035: H      78      2       72
        !          50036: I      33      2       73
        !          50037: J      33      2       74
        !          50038: K      61      2       75
        !          50039: L      50      2       76
        !          50040: M      89      2       77
        !          50041: N      78      2       78
        !          50042: O      83      2       79
        !          50043: P      56      2       80
        !          50044: Q      83      3       81
        !          50045: R      61      2       82
        !          50046: S      50      2       83
        !          50047: T      56      2       84
        !          50048: U      78      2       85
        !          50049: V      67      2       86
        !          50050: W      100     2       87
        !          50051: X      61      2       88
        !          50052: Y      61      2       89
        !          50053: Z      61      2       90
        !          50054: [      33      3       91
        !          50055: \      52      2       92
        !          50056: bs     "
        !          50057: ]      33      3       93
        !          50058: ---    61      2       94
        !          50059: ---    50      1       95
        !          50060: `      28      2       96
        !          50061: a      50      0       97
        !          50062: b      56      2       98
        !          50063: c      50      0       99
        !          50064: d      56      2       100
        !          50065: e      50      0       101
        !          50066: f      32      2       102
        !          50067: g      50      1       103
        !          50068: h      56      2       104
        !          50069: i      28      2       105
        !          50070: j      28      3       106
        !          50071: k      50      2       107
        !          50072: l      28      2       108
        !          50073: m      83      0       109
        !          50074: n      56      0       110
        !          50075: o      56      0       111
        !          50076: p      56      1       112
        !          50077: q      56      1       113
        !          50078: r      39      0       114
        !          50079: s      39      0       115
        !          50080: t      33      2       116
        !          50081: u      56      0       117
        !          50082: v      50      0       118
        !          50083: w      78      0       119
        !          50084: x      50      0       120
        !          50085: y      50      1       121
        !          50086: z      50      0       122
        !          50087: {      33      3       123
        !          50088: ---    61      3       124
        !          50089: }      33      3       125
        !          50090: ---    61      0       126
        !          50091: ---    33      1       161
        !          50092: ct     56      2       162
        !          50093: ps     56      2       163
        !          50094: fr     17      2       164
        !          50095: yn     56      2       165
        !          50096: fn     56      3       166
        !          50097: sc     56      3       167
        !          50098: cr     56      2       168
        !          50099: ---    28      2       169
        !          50100: ``     50      2       170
        !          50101: ---    50      0       171
        !          50102: ---    33      0       172
        !          50103: ---    33      0       173
        !          50104: fi     61      2       174
        !          50105: fl     61      2       175
        !          50106: en     50      0       177
        !          50107: \-     "
        !          50108: dg     56      3       178
        !          50109: dd     56      3       179
        !          50110: ---    28      0       180
        !          50111: pg     70      3       182
        !          50112: ---    61      0       183
        !          50113: ---    28      1       184
        !          50114: ---    50      1       185
        !          50115: ''     50      2       186
        !          50116: ---    50      0       187
        !          50117: ---    100     0       188
        !          50118: ---    100     2       189
        !          50119: ---    44      1       191
        !          50120: ga     33      2       193
        !          50121: \`     "
        !          50122: aa     33      2       194
        !          50123: \'     "
        !          50124: ^a     33      2       195
        !          50125: ^      "
        !          50126: ~a     33      2       196
        !          50127: ~      "
        !          50128: -a     33      2       197
        !          50129: Ua     33      2       198
        !          50130: .a     33      2       199
        !          50131: :a     33      2       200
        !          50132: oa     33      2       202
        !          50133: ,a     33      1       203
        !          50134: "a     33      2       205
        !          50135: Ca     33      1       206
        !          50136: va     33      2       207
        !          50137: em     100     0       208
        !          50138: ---    89      2       225
        !          50139: ---    33      2       227
        !          50140: ---    50      2       232
        !          50141: ---    83      2       233
        !          50142: ---    100     2       234
        !          50143: ---    34      2       235
        !          50144: ---    78      0       241
        !          50145: ---    28      0       245
        !          50146: ---    28      2       248
        !          50147: ---    56      0       249
        !          50148: ---    89      0       250
        !          50149: ---    56      2       251
        !          50150: 0707070014231031331006440057030057030000010306600522627503100003000000003347post.src/devpost.add/OIname OI
        !          50151: fontname Optima-Oblique
        !          50152: ligatures fi fl 0
        !          50153: spacewidth 28
        !          50154: charset
        !          50155: !      33      2       33
        !          50156: "      33      2       34
        !          50157: dq     "
        !          50158: #      61      2       35
        !          50159: $      56      2       36
        !          50160: %      89      2       37
        !          50161: &      72      2       38
        !          50162: '      28      2       39
        !          50163: (      28      3       40
        !          50164: )      28      3       41
        !          50165: *      44      2       42
        !          50166: +      61      0       43
        !          50167: ,      28      1       44
        !          50168: hy     33      0       45
        !          50169: -      "
        !          50170: .      28      0       46
        !          50171: /      28      2       47
        !          50172: 0      56      2       48
        !          50173: 1      56      2       49
        !          50174: 2      56      2       50
        !          50175: 3      56      2       51
        !          50176: 4      56      2       52
        !          50177: 5      56      2       53
        !          50178: 6      56      2       54
        !          50179: 7      56      2       55
        !          50180: 8      56      2       56
        !          50181: 9      56      2       57
        !          50182: :      28      0       58
        !          50183: ;      28      1       59
        !          50184: ---    61      0       60
        !          50185: =      61      0       61
        !          50186: ---    61      0       62
        !          50187: ?      39      2       63
        !          50188: @      80      3       64
        !          50189: A      67      2       65
        !          50190: B      61      2       66
        !          50191: C      67      2       67
        !          50192: D      78      2       68
        !          50193: E      50      2       69
        !          50194: F      50      2       70
        !          50195: G      78      2       71
        !          50196: H      78      2       72
        !          50197: I      28      2       73
        !          50198: J      28      2       74
        !          50199: K      61      2       75
        !          50200: L      50      2       76
        !          50201: M      89      2       77
        !          50202: N      78      2       78
        !          50203: O      83      2       79
        !          50204: P      56      2       80
        !          50205: Q      83      3       81
        !          50206: R      61      2       82
        !          50207: S      50      2       83
        !          50208: T      56      2       84
        !          50209: U      78      2       85
        !          50210: V      67      2       86
        !          50211: W      100     2       87
        !          50212: X      61      2       88
        !          50213: Y      61      2       89
        !          50214: Z      61      2       90
        !          50215: [      33      3       91
        !          50216: \      50      2       92
        !          50217: bs     "
        !          50218: ]      33      3       93
        !          50219: ---    61      2       94
        !          50220: ---    50      1       95
        !          50221: `      28      2       96
        !          50222: a      50      0       97
        !          50223: b      56      2       98
        !          50224: c      50      0       99
        !          50225: d      56      2       100
        !          50226: e      50      0       101
        !          50227: f      28      2       102
        !          50228: g      50      1       103
        !          50229: h      56      2       104
        !          50230: i      28      2       105
        !          50231: j      28      3       106
        !          50232: k      50      2       107
        !          50233: l      28      2       108
        !          50234: m      83      0       109
        !          50235: n      56      0       110
        !          50236: o      56      0       111
        !          50237: p      56      1       112
        !          50238: q      56      1       113
        !          50239: r      33      0       114
        !          50240: s      39      0       115
        !          50241: t      28      2       116
        !          50242: u      56      0       117
        !          50243: v      50      0       118
        !          50244: w      78      0       119
        !          50245: x      50      0       120
        !          50246: y      50      1       121
        !          50247: z      50      0       122
        !          50248: {      33      3       123
        !          50249: ---    33      3       124
        !          50250: }      33      3       125
        !          50251: ---    61      0       126
        !          50252: ---    33      1       161
        !          50253: ct     56      2       162
        !          50254: ps     56      2       163
        !          50255: fr     17      2       164
        !          50256: yn     56      2       165
        !          50257: fn     56      3       166
        !          50258: sc     50      3       167
        !          50259: cr     56      2       168
        !          50260: ---    28      2       169
        !          50261: ``     44      2       170
        !          50262: ---    50      0       171
        !          50263: ---    33      0       172
        !          50264: ---    33      0       173
        !          50265: fi     56      2       174
        !          50266: fl     56      2       175
        !          50267: en     50      0       177
        !          50268: \-     "
        !          50269: dg     50      3       178
        !          50270: dd     50      3       179
        !          50271: ---    28      0       180
        !          50272: pg     80      3       182
        !          50273: ---    61      0       183
        !          50274: ---    28      1       184
        !          50275: ---    44      1       185
        !          50276: ''     44      2       186
        !          50277: ---    50      0       187
        !          50278: ---    100     0       188
        !          50279: ---    100     2       189
        !          50280: ---    39      1       191
        !          50281: ga     33      2       193
        !          50282: \`     "
        !          50283: aa     33      2       194
        !          50284: \'     "
        !          50285: ^a     33      2       195
        !          50286: ^      "
        !          50287: ~a     33      2       196
        !          50288: ~      "
        !          50289: -a     33      2       197
        !          50290: Ua     33      2       198
        !          50291: .a     33      2       199
        !          50292: :a     33      2       200
        !          50293: oa     33      2       202
        !          50294: ,a     33      1       203
        !          50295: "a     33      2       205
        !          50296: Ca     33      1       206
        !          50297: va     33      2       207
        !          50298: em     100     0       208
        !          50299: ---    83      2       225
        !          50300: ---    32      2       227
        !          50301: ---    50      2       232
        !          50302: ---    83      2       233
        !          50303: ---    100     2       234
        !          50304: ---    34      2       235
        !          50305: ---    78      0       241
        !          50306: ---    28      0       245
        !          50307: ---    28      2       248
        !          50308: ---    56      0       249
        !          50309: ---    89      0       250
        !          50310: ---    56      2       251
        !          50311: 0707070014231031341006440057030057030000010306620522627503100003000000003354post.src/devpost.add/OXname OX
        !          50312: fontname Optima-BoldOblique
        !          50313: ligatures fi fl 0
        !          50314: spacewidth 28
        !          50315: charset
        !          50316: !      33      2       33
        !          50317: "      33      2       34
        !          50318: dq     "
        !          50319: #      61      2       35
        !          50320: $      56      2       36
        !          50321: %      100     2       37
        !          50322: &      72      2       38
        !          50323: '      28      2       39
        !          50324: (      33      3       40
        !          50325: )      33      3       41
        !          50326: *      44      2       42
        !          50327: +      61      0       43
        !          50328: ,      28      1       44
        !          50329: hy     33      0       45
        !          50330: -      "
        !          50331: .      28      0       46
        !          50332: /      39      2       47
        !          50333: 0      56      2       48
        !          50334: 1      56      2       49
        !          50335: 2      56      2       50
        !          50336: 3      56      2       51
        !          50337: 4      56      2       52
        !          50338: 5      56      2       53
        !          50339: 6      56      2       54
        !          50340: 7      56      2       55
        !          50341: 8      56      2       56
        !          50342: 9      56      2       57
        !          50343: :      28      0       58
        !          50344: ;      28      1       59
        !          50345: ---    61      0       60
        !          50346: =      61      0       61
        !          50347: ---    61      0       62
        !          50348: ?      44      2       63
        !          50349: @      75      3       64
        !          50350: A      67      2       65
        !          50351: B      61      2       66
        !          50352: C      67      2       67
        !          50353: D      78      2       68
        !          50354: E      50      2       69
        !          50355: F      50      2       70
        !          50356: G      78      2       71
        !          50357: H      78      2       72
        !          50358: I      33      2       73
        !          50359: J      33      2       74
        !          50360: K      61      2       75
        !          50361: L      50      2       76
        !          50362: M      89      2       77
        !          50363: N      78      2       78
        !          50364: O      83      2       79
        !          50365: P      56      2       80
        !          50366: Q      83      3       81
        !          50367: R      61      2       82
        !          50368: S      50      2       83
        !          50369: T      56      2       84
        !          50370: U      78      2       85
        !          50371: V      67      2       86
        !          50372: W      100     2       87
        !          50373: X      61      2       88
        !          50374: Y      61      2       89
        !          50375: Z      61      2       90
        !          50376: [      33      3       91
        !          50377: \      52      2       92
        !          50378: bs     "
        !          50379: ]      33      3       93
        !          50380: ---    61      2       94
        !          50381: ---    50      1       95
        !          50382: `      28      2       96
        !          50383: a      50      0       97
        !          50384: b      56      2       98
        !          50385: c      50      0       99
        !          50386: d      56      2       100
        !          50387: e      50      0       101
        !          50388: f      32      2       102
        !          50389: g      50      1       103
        !          50390: h      56      2       104
        !          50391: i      28      2       105
        !          50392: j      28      3       106
        !          50393: k      50      2       107
        !          50394: l      28      2       108
        !          50395: m      83      0       109
        !          50396: n      56      0       110
        !          50397: o      56      0       111
        !          50398: p      56      1       112
        !          50399: q      56      1       113
        !          50400: r      39      0       114
        !          50401: s      39      0       115
        !          50402: t      33      2       116
        !          50403: u      56      0       117
        !          50404: v      50      0       118
        !          50405: w      78      0       119
        !          50406: x      50      0       120
        !          50407: y      50      1       121
        !          50408: z      50      0       122
        !          50409: {      33      3       123
        !          50410: ---    61      3       124
        !          50411: }      33      3       125
        !          50412: ---    61      0       126
        !          50413: ---    33      1       161
        !          50414: ct     56      2       162
        !          50415: ps     56      2       163
        !          50416: fr     17      2       164
        !          50417: yn     56      2       165
        !          50418: fn     56      3       166
        !          50419: sc     56      3       167
        !          50420: cr     56      2       168
        !          50421: ---    28      2       169
        !          50422: ``     50      2       170
        !          50423: ---    50      0       171
        !          50424: ---    33      0       172
        !          50425: ---    33      0       173
        !          50426: fi     61      2       174
        !          50427: fl     61      2       175
        !          50428: en     50      0       177
        !          50429: \-     "
        !          50430: dg     56      3       178
        !          50431: dd     56      3       179
        !          50432: ---    28      0       180
        !          50433: pg     70      3       182
        !          50434: ---    61      0       183
        !          50435: ---    28      1       184
        !          50436: ---    50      1       185
        !          50437: ''     50      2       186
        !          50438: ---    50      0       187
        !          50439: ---    100     0       188
        !          50440: ---    100     2       189
        !          50441: ---    44      1       191
        !          50442: ga     33      2       193
        !          50443: \`     "
        !          50444: aa     33      2       194
        !          50445: \'     "
        !          50446: ^a     33      2       195
        !          50447: ^      "
        !          50448: ~a     33      2       196
        !          50449: ~      "
        !          50450: -a     33      2       197
        !          50451: Ua     33      2       198
        !          50452: .a     33      2       199
        !          50453: :a     33      2       200
        !          50454: oa     33      2       202
        !          50455: ,a     33      1       203
        !          50456: "a     33      2       205
        !          50457: Ca     33      1       206
        !          50458: va     33      2       207
        !          50459: em     100     0       208
        !          50460: ---    89      2       225
        !          50461: ---    33      2       227
        !          50462: ---    50      2       232
        !          50463: ---    83      2       233
        !          50464: ---    100     2       234
        !          50465: ---    34      2       235
        !          50466: ---    78      0       241
        !          50467: ---    28      0       245
        !          50468: ---    28      2       248
        !          50469: ---    56      0       249
        !          50470: ---    89      0       250
        !          50471: ---    56      2       251
        !          50472: 0707070014231031351006440057030057030000010306640522627503100003000000003366post.src/devpost.add/a1name a1
        !          50473: fontname CenturyOldStyleAbstract-Regular
        !          50474: ligatures fi fl 0
        !          50475: spacewidth 25
        !          50476: charset
        !          50477: !      26      2       33
        !          50478: "      40      2       34
        !          50479: dq     "
        !          50480: #      50      2       35
        !          50481: $      50      3       36
        !          50482: %      58      2       37
        !          50483: &      79      2       38
        !          50484: '      21      2       39
        !          50485: (      40      3       40
        !          50486: )      40      3       41
        !          50487: *      50      2       42
        !          50488: +      50      0       43
        !          50489: ,      25      1       44
        !          50490: hy     24      0       45
        !          50491: -      "
        !          50492: .      25      0       46
        !          50493: /      53      3       47
        !          50494: 0      50      2       48
        !          50495: 1      50      2       49
        !          50496: 2      50      2       50
        !          50497: 3      50      2       51
        !          50498: 4      50      2       52
        !          50499: 5      50      2       53
        !          50500: 6      50      2       54
        !          50501: 7      50      2       55
        !          50502: 8      50      2       56
        !          50503: 9      50      2       57
        !          50504: :      25      0       58
        !          50505: ;      25      1       59
        !          50506: ---    50      0       60
        !          50507: =      50      0       61
        !          50508: ---    50      0       62
        !          50509: ?      40      2       63
        !          50510: @      85      2       64
        !          50511: A      66      2       65
        !          50512: B      69      2       66
        !          50513: C      69      2       67
        !          50514: D      76      2       68
        !          50515: E      66      2       69
        !          50516: F      61      2       70
        !          50517: G      74      2       71
        !          50518: H      76      2       72
        !          50519: I      34      2       73
        !          50520: J      40      3       74
        !          50521: K      71      2       75
        !          50522: L      58      2       76
        !          50523: M      95      2       77
        !          50524: N      76      2       78
        !          50525: O      76      2       79
        !          50526: P      61      2       80
        !          50527: Q      76      3       81
        !          50528: R      63      2       82
        !          50529: S      55      2       83
        !          50530: T      63      2       84
        !          50531: U      74      2       85
        !          50532: V      66      2       86
        !          50533: W      95      2       87
        !          50534: X      63      2       88
        !          50535: Y      63      2       89
        !          50536: Z      58      2       90
        !          50537: [      40      3       91
        !          50538: \      25      2       92
        !          50539: bs     "
        !          50540: ]      40      3       93
        !          50541: ---    50      2       94
        !          50542: ---    50      1       95
        !          50543: `      21      2       96
        !          50544: a      47      0       97
        !          50545: b      55      2       98
        !          50546: c      47      0       99
        !          50547: d      55      2       100
        !          50548: e      50      0       101
        !          50549: f      29      2       102
        !          50550: g      55      1       103
        !          50551: h      58      2       104
        !          50552: i      26      2       105
        !          50553: j      24      3       106
        !          50554: k      55      2       107
        !          50555: l      26      2       108
        !          50556: m      84      0       109
        !          50557: n      55      0       110
        !          50558: o      53      0       111
        !          50559: p      53      1       112
        !          50560: q      55      1       113
        !          50561: r      40      0       114
        !          50562: s      45      0       115
        !          50563: t      31      2       116
        !          50564: u      55      0       117
        !          50565: v      47      0       118
        !          50566: w      71      0       119
        !          50567: x      53      0       120
        !          50568: y      50      1       121
        !          50569: z      45      0       122
        !          50570: {      40      3       123
        !          50571: ---    25      2       124
        !          50572: }      40      3       125
        !          50573: ---    50      0       126
        !          50574: ---    26      1       161
        !          50575: ct     50      2       162
        !          50576: ps     50      2       163
        !          50577: fr     9       2       164
        !          50578: yn     50      2       165
        !          50579: fn     50      3       166
        !          50580: sc     50      3       167
        !          50581: cr     50      2       168
        !          50582: ---    21      2       169
        !          50583: ``     40      2       170
        !          50584: ---    47      0       171
        !          50585: ---    29      0       172
        !          50586: ---    29      0       173
        !          50587: fi     58      2       174
        !          50588: fl     55      2       175
        !          50589: en     50      0       177
        !          50590: \-     "
        !          50591: dg     50      3       178
        !          50592: dd     50      3       179
        !          50593: ---    25      0       180
        !          50594: pg     66      3       182
        !          50595: ---    66      0       183
        !          50596: ---    21      1       184
        !          50597: ---    40      1       185
        !          50598: ''     40      2       186
        !          50599: ---    47      0       187
        !          50600: ---    100     0       188
        !          50601: ---    92      2       189
        !          50602: ---    40      1       191
        !          50603: ga     29      2       193
        !          50604: \`     "
        !          50605: aa     29      2       194
        !          50606: \'     "
        !          50607: ^a     37      2       195
        !          50608: ^      "
        !          50609: ~a     50      2       196
        !          50610: ~      "
        !          50611: -a     47      2       197
        !          50612: Ua     50      2       198
        !          50613: .a     26      2       199
        !          50614: :a     47      2       200
        !          50615: oa     34      2       202
        !          50616: ,a     34      1       203
        !          50617: "a     40      2       205
        !          50618: Ca     37      1       206
        !          50619: va     37      2       207
        !          50620: em     100     0       208
        !          50621: ---    103     2       225
        !          50622: ---    34      2       227
        !          50623: ---    58      2       232
        !          50624: ---    76      2       233
        !          50625: ---    108     2       234
        !          50626: ---    34      2       235
        !          50627: ---    76      0       241
        !          50628: ---    26      0       245
        !          50629: ---    26      2       248
        !          50630: ---    53      0       249
        !          50631: ---    84      0       250
        !          50632: ---    58      2       251
        !          50633: 0707070014231031361006440057030057030000010306660522627503100003000000003365post.src/devpost.add/a2name a2
        !          50634: fontname CenturyOldStyleAbstract-Italic
        !          50635: ligatures fi fl 0
        !          50636: spacewidth 27
        !          50637: charset
        !          50638: !      31      2       33
        !          50639: "      35      2       34
        !          50640: dq     "
        !          50641: #      54      0       35
        !          50642: $      54      3       36
        !          50643: %      70      2       37
        !          50644: &      75      2       38
        !          50645: '      21      2       39
        !          50646: (      46      3       40
        !          50647: )      46      3       41
        !          50648: *      59      2       42
        !          50649: +      54      0       43
        !          50650: ,      27      1       44
        !          50651: hy     25      0       45
        !          50652: -      "
        !          50653: .      27      0       46
        !          50654: /      46      3       47
        !          50655: 0      54      2       48
        !          50656: 1      54      0       49
        !          50657: 2      54      2       50
        !          50658: 3      54      2       51
        !          50659: 4      54      0       52
        !          50660: 5      54      0       53
        !          50661: 6      54      2       54
        !          50662: 7      54      0       55
        !          50663: 8      54      2       56
        !          50664: 9      54      2       57
        !          50665: :      27      0       58
        !          50666: ;      27      1       59
        !          50667: ---    54      0       60
        !          50668: =      54      0       61
        !          50669: ---    54      0       62
        !          50670: ?      48      2       63
        !          50671: @      78      2       64
        !          50672: A      67      2       65
        !          50673: B      68      2       66
        !          50674: C      65      2       67
        !          50675: D      75      2       68
        !          50676: E      66      2       69
        !          50677: F      61      2       70
        !          50678: G      72      2       71
        !          50679: H      77      2       72
        !          50680: I      36      2       73
        !          50681: J      34      3       74
        !          50682: K      68      2       75
        !          50683: L      58      2       76
        !          50684: M      90      2       77
        !          50685: N      74      2       78
        !          50686: O      74      2       79
        !          50687: P      59      2       80
        !          50688: Q      75      3       81
        !          50689: R      65      2       82
        !          50690: S      57      2       83
        !          50691: T      63      2       84
        !          50692: U      72      2       85
        !          50693: V      62      2       86
        !          50694: W      88      2       87
        !          50695: X      64      2       88
        !          50696: Y      61      2       89
        !          50697: Z      57      2       90
        !          50698: [      46      3       91
        !          50699: \      27      2       92
        !          50700: bs     "
        !          50701: ]      46      3       93
        !          50702: ---    54      2       94
        !          50703: ---    50      1       95
        !          50704: `      21      2       96
        !          50705: a      54      0       97
        !          50706: b      46      2       98
        !          50707: c      41      0       99
        !          50708: d      50      2       100
        !          50709: e      42      0       101
        !          50710: f      25      3       102
        !          50711: g      45      1       103
        !          50712: h      52      2       104
        !          50713: i      31      2       105
        !          50714: j      27      3       106
        !          50715: k      48      2       107
        !          50716: l      27      2       108
        !          50717: m      82      0       109
        !          50718: n      56      0       110
        !          50719: o      47      0       111
        !          50720: p      50      1       112
        !          50721: q      49      1       113
        !          50722: r      40      0       114
        !          50723: s      35      0       115
        !          50724: t      30      0       116
        !          50725: u      56      0       117
        !          50726: v      47      0       118
        !          50727: w      69      0       119
        !          50728: x      41      0       120
        !          50729: y      40      1       121
        !          50730: z      39      0       122
        !          50731: {      46      3       123
        !          50732: ---    27      2       124
        !          50733: }      46      3       125
        !          50734: ---    54      0       126
        !          50735: ---    31      1       161
        !          50736: ct     54      0       162
        !          50737: ps     54      2       163
        !          50738: fr     5       2       164
        !          50739: yn     54      0       165
        !          50740: fn     54      3       166
        !          50741: sc     59      3       167
        !          50742: cr     54      0       168
        !          50743: ---    19      2       169
        !          50744: ``     37      2       170
        !          50745: ---    45      0       171
        !          50746: ---    29      0       172
        !          50747: ---    29      0       173
        !          50748: fi     52      3       174
        !          50749: fl     52      3       175
        !          50750: en     50      0       177
        !          50751: \-     "
        !          50752: dg     59      3       178
        !          50753: dd     59      3       179
        !          50754: ---    27      0       180
        !          50755: pg     61      3       182
        !          50756: ---    61      0       183
        !          50757: ---    21      1       184
        !          50758: ---    37      1       185
        !          50759: ''     37      2       186
        !          50760: ---    45      0       187
        !          50761: ---    100     0       188
        !          50762: ---    103     2       189
        !          50763: ---    48      1       191
        !          50764: ga     39      2       193
        !          50765: \`     "
        !          50766: aa     31      2       194
        !          50767: \'     "
        !          50768: ^a     40      2       195
        !          50769: ^      "
        !          50770: ~a     51      2       196
        !          50771: ~      "
        !          50772: -a     47      0       197
        !          50773: Ua     51      2       198
        !          50774: .a     26      2       199
        !          50775: :a     46      2       200
        !          50776: oa     32      2       202
        !          50777: ,a     35      1       203
        !          50778: "a     39      2       205
        !          50779: Ca     34      1       206
        !          50780: va     40      2       207
        !          50781: em     100     0       208
        !          50782: ---    94      2       225
        !          50783: ---    32      2       227
        !          50784: ---    58      2       232
        !          50785: ---    74      2       233
        !          50786: ---    107     2       234
        !          50787: ---    32      2       235
        !          50788: ---    69      0       241
        !          50789: ---    31      0       245
        !          50790: ---    27      2       248
        !          50791: ---    47      0       249
        !          50792: ---    71      0       250
        !          50793: ---    53      2       251
        !          50794: 0707070014231031371006440057030057030000010307000522627503100003000000003367post.src/devpost.add/c1name c1
        !          50795: fontname CenturyOldStyleCondensed-Regular
        !          50796: ligatures fi fl 0
        !          50797: spacewidth 25
        !          50798: charset
        !          50799: !      26      2       33
        !          50800: "      40      2       34
        !          50801: dq     "
        !          50802: #      50      2       35
        !          50803: $      50      3       36
        !          50804: %      58      2       37
        !          50805: &      79      2       38
        !          50806: '      21      2       39
        !          50807: (      40      3       40
        !          50808: )      40      3       41
        !          50809: *      50      2       42
        !          50810: +      50      0       43
        !          50811: ,      25      1       44
        !          50812: hy     24      0       45
        !          50813: -      "
        !          50814: .      25      0       46
        !          50815: /      53      3       47
        !          50816: 0      50      2       48
        !          50817: 1      50      2       49
        !          50818: 2      50      2       50
        !          50819: 3      50      2       51
        !          50820: 4      50      2       52
        !          50821: 5      50      2       53
        !          50822: 6      50      2       54
        !          50823: 7      50      2       55
        !          50824: 8      50      2       56
        !          50825: 9      50      2       57
        !          50826: :      25      0       58
        !          50827: ;      25      1       59
        !          50828: ---    50      0       60
        !          50829: =      50      0       61
        !          50830: ---    50      0       62
        !          50831: ?      40      2       63
        !          50832: @      85      2       64
        !          50833: A      66      2       65
        !          50834: B      69      2       66
        !          50835: C      69      2       67
        !          50836: D      76      2       68
        !          50837: E      66      2       69
        !          50838: F      61      2       70
        !          50839: G      74      2       71
        !          50840: H      76      2       72
        !          50841: I      34      2       73
        !          50842: J      40      3       74
        !          50843: K      71      2       75
        !          50844: L      58      2       76
        !          50845: M      95      2       77
        !          50846: N      76      2       78
        !          50847: O      76      2       79
        !          50848: P      61      2       80
        !          50849: Q      76      3       81
        !          50850: R      63      2       82
        !          50851: S      55      2       83
        !          50852: T      63      2       84
        !          50853: U      74      2       85
        !          50854: V      66      2       86
        !          50855: W      95      2       87
        !          50856: X      63      2       88
        !          50857: Y      63      2       89
        !          50858: Z      58      2       90
        !          50859: [      40      3       91
        !          50860: \      25      2       92
        !          50861: bs     "
        !          50862: ]      40      3       93
        !          50863: ---    50      2       94
        !          50864: ---    50      1       95
        !          50865: `      21      2       96
        !          50866: a      47      0       97
        !          50867: b      55      2       98
        !          50868: c      47      0       99
        !          50869: d      55      2       100
        !          50870: e      50      0       101
        !          50871: f      29      2       102
        !          50872: g      55      1       103
        !          50873: h      58      2       104
        !          50874: i      26      2       105
        !          50875: j      24      3       106
        !          50876: k      55      2       107
        !          50877: l      26      2       108
        !          50878: m      84      0       109
        !          50879: n      55      0       110
        !          50880: o      53      0       111
        !          50881: p      53      1       112
        !          50882: q      55      1       113
        !          50883: r      40      0       114
        !          50884: s      45      0       115
        !          50885: t      31      2       116
        !          50886: u      55      0       117
        !          50887: v      47      0       118
        !          50888: w      71      0       119
        !          50889: x      53      0       120
        !          50890: y      50      1       121
        !          50891: z      45      0       122
        !          50892: {      40      3       123
        !          50893: ---    25      2       124
        !          50894: }      40      3       125
        !          50895: ---    50      0       126
        !          50896: ---    26      1       161
        !          50897: ct     50      2       162
        !          50898: ps     50      2       163
        !          50899: fr     9       2       164
        !          50900: yn     50      2       165
        !          50901: fn     50      3       166
        !          50902: sc     50      3       167
        !          50903: cr     50      2       168
        !          50904: ---    21      2       169
        !          50905: ``     40      2       170
        !          50906: ---    47      0       171
        !          50907: ---    29      0       172
        !          50908: ---    29      0       173
        !          50909: fi     58      2       174
        !          50910: fl     55      2       175
        !          50911: en     50      0       177
        !          50912: \-     "
        !          50913: dg     50      3       178
        !          50914: dd     50      3       179
        !          50915: ---    25      0       180
        !          50916: pg     66      3       182
        !          50917: ---    66      0       183
        !          50918: ---    21      1       184
        !          50919: ---    40      1       185
        !          50920: ''     40      2       186
        !          50921: ---    47      0       187
        !          50922: ---    100     0       188
        !          50923: ---    92      2       189
        !          50924: ---    40      1       191
        !          50925: ga     29      2       193
        !          50926: \`     "
        !          50927: aa     29      2       194
        !          50928: \'     "
        !          50929: ^a     37      2       195
        !          50930: ^      "
        !          50931: ~a     50      2       196
        !          50932: ~      "
        !          50933: -a     47      2       197
        !          50934: Ua     50      2       198
        !          50935: .a     26      2       199
        !          50936: :a     47      2       200
        !          50937: oa     34      2       202
        !          50938: ,a     34      1       203
        !          50939: "a     40      2       205
        !          50940: Ca     37      1       206
        !          50941: va     37      2       207
        !          50942: em     100     0       208
        !          50943: ---    103     2       225
        !          50944: ---    34      2       227
        !          50945: ---    58      2       232
        !          50946: ---    76      2       233
        !          50947: ---    108     2       234
        !          50948: ---    34      2       235
        !          50949: ---    76      0       241
        !          50950: ---    26      0       245
        !          50951: ---    26      2       248
        !          50952: ---    53      0       249
        !          50953: ---    84      0       250
        !          50954: ---    58      2       251
        !          50955: 0707070014231031401006440057030057030000010307020522627503100003000000003366post.src/devpost.add/c2name c2
        !          50956: fontname CenturyOldStyleCondensed-Italic
        !          50957: ligatures fi fl 0
        !          50958: spacewidth 27
        !          50959: charset
        !          50960: !      31      2       33
        !          50961: "      35      2       34
        !          50962: dq     "
        !          50963: #      54      0       35
        !          50964: $      54      3       36
        !          50965: %      70      2       37
        !          50966: &      75      2       38
        !          50967: '      21      2       39
        !          50968: (      46      3       40
        !          50969: )      46      3       41
        !          50970: *      59      2       42
        !          50971: +      54      0       43
        !          50972: ,      27      1       44
        !          50973: hy     25      0       45
        !          50974: -      "
        !          50975: .      27      0       46
        !          50976: /      46      3       47
        !          50977: 0      54      2       48
        !          50978: 1      54      0       49
        !          50979: 2      54      2       50
        !          50980: 3      54      2       51
        !          50981: 4      54      0       52
        !          50982: 5      54      0       53
        !          50983: 6      54      2       54
        !          50984: 7      54      0       55
        !          50985: 8      54      2       56
        !          50986: 9      54      2       57
        !          50987: :      27      0       58
        !          50988: ;      27      1       59
        !          50989: ---    54      0       60
        !          50990: =      54      0       61
        !          50991: ---    54      0       62
        !          50992: ?      48      2       63
        !          50993: @      78      2       64
        !          50994: A      67      2       65
        !          50995: B      68      2       66
        !          50996: C      65      2       67
        !          50997: D      75      2       68
        !          50998: E      66      2       69
        !          50999: F      61      2       70
        !          51000: G      72      2       71
        !          51001: H      77      2       72
        !          51002: I      36      2       73
        !          51003: J      34      3       74
        !          51004: K      68      2       75
        !          51005: L      58      2       76
        !          51006: M      90      2       77
        !          51007: N      74      2       78
        !          51008: O      74      2       79
        !          51009: P      59      2       80
        !          51010: Q      75      3       81
        !          51011: R      65      2       82
        !          51012: S      57      2       83
        !          51013: T      63      2       84
        !          51014: U      72      2       85
        !          51015: V      62      2       86
        !          51016: W      88      2       87
        !          51017: X      64      2       88
        !          51018: Y      61      2       89
        !          51019: Z      57      2       90
        !          51020: [      46      3       91
        !          51021: \      27      2       92
        !          51022: bs     "
        !          51023: ]      46      3       93
        !          51024: ---    54      2       94
        !          51025: ---    50      1       95
        !          51026: `      21      2       96
        !          51027: a      54      0       97
        !          51028: b      46      2       98
        !          51029: c      41      0       99
        !          51030: d      50      2       100
        !          51031: e      42      0       101
        !          51032: f      25      3       102
        !          51033: g      45      1       103
        !          51034: h      52      2       104
        !          51035: i      31      2       105
        !          51036: j      27      3       106
        !          51037: k      48      2       107
        !          51038: l      27      2       108
        !          51039: m      82      0       109
        !          51040: n      56      0       110
        !          51041: o      47      0       111
        !          51042: p      50      1       112
        !          51043: q      49      1       113
        !          51044: r      40      0       114
        !          51045: s      35      0       115
        !          51046: t      30      0       116
        !          51047: u      56      0       117
        !          51048: v      47      0       118
        !          51049: w      69      0       119
        !          51050: x      41      0       120
        !          51051: y      40      1       121
        !          51052: z      39      0       122
        !          51053: {      46      3       123
        !          51054: ---    27      2       124
        !          51055: }      46      3       125
        !          51056: ---    54      0       126
        !          51057: ---    31      1       161
        !          51058: ct     54      0       162
        !          51059: ps     54      2       163
        !          51060: fr     5       2       164
        !          51061: yn     54      0       165
        !          51062: fn     54      3       166
        !          51063: sc     59      3       167
        !          51064: cr     54      0       168
        !          51065: ---    19      2       169
        !          51066: ``     37      2       170
        !          51067: ---    45      0       171
        !          51068: ---    29      0       172
        !          51069: ---    29      0       173
        !          51070: fi     52      3       174
        !          51071: fl     52      3       175
        !          51072: en     50      0       177
        !          51073: \-     "
        !          51074: dg     59      3       178
        !          51075: dd     59      3       179
        !          51076: ---    27      0       180
        !          51077: pg     61      3       182
        !          51078: ---    61      0       183
        !          51079: ---    21      1       184
        !          51080: ---    37      1       185
        !          51081: ''     37      2       186
        !          51082: ---    45      0       187
        !          51083: ---    100     0       188
        !          51084: ---    103     2       189
        !          51085: ---    48      1       191
        !          51086: ga     39      2       193
        !          51087: \`     "
        !          51088: aa     31      2       194
        !          51089: \'     "
        !          51090: ^a     40      2       195
        !          51091: ^      "
        !          51092: ~a     51      2       196
        !          51093: ~      "
        !          51094: -a     47      0       197
        !          51095: Ua     51      2       198
        !          51096: .a     26      2       199
        !          51097: :a     46      2       200
        !          51098: oa     32      2       202
        !          51099: ,a     35      1       203
        !          51100: "a     39      2       205
        !          51101: Ca     34      1       206
        !          51102: va     40      2       207
        !          51103: em     100     0       208
        !          51104: ---    94      2       225
        !          51105: ---    32      2       227
        !          51106: ---    58      2       232
        !          51107: ---    74      2       233
        !          51108: ---    107     2       234
        !          51109: ---    32      2       235
        !          51110: ---    69      0       241
        !          51111: ---    31      0       245
        !          51112: ---    27      2       248
        !          51113: ---    47      0       249
        !          51114: ---    71      0       250
        !          51115: ---    53      2       251
        !          51116: 0707070014231031411006440057030057030000010307040522627503100003000000003366post.src/devpost.add/c3name c3
        !          51117: fontname CenturyOldStyleCondensed-Bold
        !          51118: ligatures fi fl 0
        !          51119: spacewidth 33
        !          51120: charset
        !          51121: !      34      2       33
        !          51122: "      40      2       34
        !          51123: dq     "
        !          51124: #      56      2       35
        !          51125: $      66      3       36
        !          51126: %      79      2       37
        !          51127: &      84      2       38
        !          51128: '      28      2       39
        !          51129: (      39      3       40
        !          51130: )      39      3       41
        !          51131: *      56      2       42
        !          51132: +      56      0       43
        !          51133: ,      33      1       44
        !          51134: hy     32      0       45
        !          51135: -      "
        !          51136: .      33      0       46
        !          51137: /      51      3       47
        !          51138: 0      66      2       48
        !          51139: 1      66      2       49
        !          51140: 2      66      2       50
        !          51141: 3      66      2       51
        !          51142: 4      66      2       52
        !          51143: 5      66      2       53
        !          51144: 6      66      2       54
        !          51145: 7      66      2       55
        !          51146: 8      66      2       56
        !          51147: 9      66      2       57
        !          51148: :      33      0       58
        !          51149: ;      33      1       59
        !          51150: ---    56      0       60
        !          51151: =      56      0       61
        !          51152: ---    56      0       62
        !          51153: ?      47      2       63
        !          51154: @      72      2       64
        !          51155: A      69      2       65
        !          51156: B      76      2       66
        !          51157: C      70      2       67
        !          51158: D      80      2       68
        !          51159: E      71      2       69
        !          51160: F      64      2       70
        !          51161: G      78      2       71
        !          51162: H      83      2       72
        !          51163: I      41      2       73
        !          51164: J      48      2       74
        !          51165: K      76      2       75
        !          51166: L      63      2       76
        !          51167: M      94      2       77
        !          51168: N      80      2       78
        !          51169: O      81      2       79
        !          51170: P      72      2       80
        !          51171: Q      81      3       81
        !          51172: R      72      2       82
        !          51173: S      61      2       83
        !          51174: T      60      2       84
        !          51175: U      78      2       85
        !          51176: V      64      2       86
        !          51177: W      97      2       87
        !          51178: X      68      2       88
        !          51179: Y      67      2       89
        !          51180: Z      59      2       90
        !          51181: [      39      3       91
        !          51182: \      28      2       92
        !          51183: bs     "
        !          51184: ]      39      3       93
        !          51185: ---    56      2       94
        !          51186: ---    50      1       95
        !          51187: `      28      2       96
        !          51188: a      53      0       97
        !          51189: b      60      2       98
        !          51190: c      52      0       99
        !          51191: d      62      2       100
        !          51192: e      54      0       101
        !          51193: f      30      2       102
        !          51194: g      52      3       103
        !          51195: h      62      2       104
        !          51196: i      31      2       105
        !          51197: j      27      3       106
        !          51198: k      60      2       107
        !          51199: l      30      2       108
        !          51200: m      92      0       109
        !          51201: n      62      0       110
        !          51202: o      57      0       111
        !          51203: p      61      1       112
        !          51204: q      60      1       113
        !          51205: r      44      0       114
        !          51206: s      50      0       115
        !          51207: t      33      2       116
        !          51208: u      63      0       117
        !          51209: v      50      0       118
        !          51210: w      74      0       119
        !          51211: x      53      0       120
        !          51212: y      49      1       121
        !          51213: z      44      0       122
        !          51214: {      39      3       123
        !          51215: ---    28      2       124
        !          51216: }      39      3       125
        !          51217: ---    56      0       126
        !          51218: ---    34      1       161
        !          51219: ct     66      2       162
        !          51220: ps     66      2       163
        !          51221: fr     10      2       164
        !          51222: yn     66      2       165
        !          51223: fn     66      3       166
        !          51224: sc     56      3       167
        !          51225: cr     66      2       168
        !          51226: ---    22      2       169
        !          51227: ``     52      2       170
        !          51228: ---    58      0       171
        !          51229: ---    37      0       172
        !          51230: ---    37      0       173
        !          51231: fi     62      2       174
        !          51232: fl     61      2       175
        !          51233: en     50      0       177
        !          51234: \-     "
        !          51235: dg     56      3       178
        !          51236: dd     56      3       179
        !          51237: ---    33      0       180
        !          51238: pg     62      3       182
        !          51239: ---    62      0       183
        !          51240: ---    28      1       184
        !          51241: ---    52      1       185
        !          51242: ''     52      2       186
        !          51243: ---    58      0       187
        !          51244: ---    100     0       188
        !          51245: ---    118     2       189
        !          51246: ---    47      1       191
        !          51247: ga     34      2       193
        !          51248: \`     "
        !          51249: aa     34      2       194
        !          51250: \'     "
        !          51251: ^a     45      2       195
        !          51252: ^      "
        !          51253: ~a     56      2       196
        !          51254: ~      "
        !          51255: -a     53      2       197
        !          51256: Ua     56      2       198
        !          51257: .a     29      2       199
        !          51258: :a     51      2       200
        !          51259: oa     34      2       202
        !          51260: ,a     37      1       203
        !          51261: "a     50      2       205
        !          51262: Ca     38      1       206
        !          51263: va     45      2       207
        !          51264: em     100     0       208
        !          51265: ---    109     2       225
        !          51266: ---    40      2       227
        !          51267: ---    63      2       232
        !          51268: ---    81      2       233
        !          51269: ---    114     2       234
        !          51270: ---    40      2       235
        !          51271: ---    83      0       241
        !          51272: ---    31      0       245
        !          51273: ---    30      2       248
        !          51274: ---    57      0       249
        !          51275: ---    90      0       250
        !          51276: ---    58      2       251
        !          51277: 0707070014231031421006440057030057030000010307060522627503100004400000002013post.src/devpost.add/devpost.add.mkMAKE=/bin/make
        !          51278: MAKEFILE=devpost.add.mk
        !          51279: 
        !          51280: SYSTEM=SYSV
        !          51281: VERSION=3.2
        !          51282: 
        !          51283: GROUP=bin
        !          51284: OWNER=bin
        !          51285: 
        !          51286: FONTDIR=/usr/lib/font
        !          51287: FONTFILES=??
        !          51288: 
        !          51289: all :
        !          51290: 
        !          51291: install : all
        !          51292:        @if [ ! -d $(FONTDIR) ]; then \
        !          51293:            mkdir $(FONTDIR); \
        !          51294:            chmod 755 $(FONTDIR); \
        !          51295:            chgrp $(GROUP) $(FONTDIR); \
        !          51296:            chown $(OWNER) $(FONTDIR); \
        !          51297:        fi
        !          51298:        @if [ ! -d $(FONTDIR)/devpost ]; then \
        !          51299:            mkdir $(FONTDIR)/devpost; \
        !          51300:            chmod 755 $(FONTDIR)/devpost; \
        !          51301:            chgrp $(GROUP) $(FONTDIR)/devpost; \
        !          51302:            chown $(OWNER) $(FONTDIR)/devpost; \
        !          51303:        fi
        !          51304:        cp $(FONTFILES) $(FONTDIR)/devpost
        !          51305:        @for i in $(FONTFILES); do \
        !          51306:            chmod 644 $(FONTDIR)/devpost/$$i; \
        !          51307:            chgrp $(GROUP) $(FONTDIR)/devpost/$$i; \
        !          51308:            chown $(OWNER) $(FONTDIR)/devpost/$$i; \
        !          51309:        done
        !          51310: 
        !          51311: clean :
        !          51312: 
        !          51313: clobber : clean
        !          51314: 
        !          51315: changes :
        !          51316:        @trap "" 1 2 3 15; \
        !          51317:        sed \
        !          51318:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
        !          51319:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
        !          51320:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          51321:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          51322:            -e "s'^FONTDIR=.*'FONTDIR=$(FONTDIR)'" \
        !          51323:        $(MAKEFILE) >XXX.mk; \
        !          51324:        mv XXX.mk $(MAKEFILE)
        !          51325: 
        !          51326: 0707070014230547760407550057030057030000021527350522633074000002200000000000post.src/download0707070014230547771006440057030057030000011527360522627503100003100000000756post.src/download/README
        !          51327: A simple program that scans PostScript files for %%DocumentFonts:
        !          51328: comments and prepends requested host resident font files to the
        !          51329: input. Written for Unix 4.0 lp.
        !          51330: 
        !          51331: Downloaded fonts are the ones named in the %%DocumentFonts: comment
        !          51332: and listed in a special map file (which can be selected using the
        !          51333: -m option). See example.map and comments in download.c for examples
        !          51334: of map files. By default map files and font files are in *hostfontdir.
        !          51335: It's initialized using HOSTDIR (file ../common/path.h).
        !          51336: 
        !          51337: 0707070014230550001006440057030057030000011527370522627503100003500000000443post.src/download/download.h/*
        !          51338:  *
        !          51339:  * The font data for a printer is saved in an array of the following type.
        !          51340:  *
        !          51341:  */
        !          51342: 
        !          51343: typedef struct map {
        !          51344:        char    *font;          /* a request for this PostScript font */
        !          51345:        char    *file;          /* means copy this unix file */
        !          51346:        int     downloaded;     /* TRUE after *file is downloaded */
        !          51347: } Map;
        !          51348: 
        !          51349: Map    *allocate();
        !          51350: 
        !          51351: 0707070014230550061006400057030057030000011527660522633073700003600000003434post.src/download/download.mkMAKE=/bin/make
        !          51352: MAKEFILE=download.mk
        !          51353: 
        !          51354: SYSTEM=V9
        !          51355: VERSION=3.3.2
        !          51356: 
        !          51357: GROUP=bin
        !          51358: OWNER=bin
        !          51359: 
        !          51360: HOSTDIR=/usr/lib/font/postscript
        !          51361: MAN1DIR=/tmp
        !          51362: POSTBIN=/usr/bin/postscript
        !          51363: POSTLIB=/usr/lib/postscript
        !          51364: 
        !          51365: COMMONDIR=../common
        !          51366: 
        !          51367: CFLGS=-O
        !          51368: LDFLGS=-s
        !          51369: 
        !          51370: CFLAGS=$(CFLGS) -I$(COMMONDIR)
        !          51371: LDFLAGS=$(LDFLGS)
        !          51372: 
        !          51373: HFILES=download.h\
        !          51374:        $(COMMONDIR)/comments.h\
        !          51375:        $(COMMONDIR)/ext.h\
        !          51376:        $(COMMONDIR)/gen.h\
        !          51377:        $(COMMONDIR)/path.h
        !          51378: 
        !          51379: OFILES=download.o\
        !          51380:        $(COMMONDIR)/glob.o\
        !          51381:        $(COMMONDIR)/misc.o\
        !          51382:        $(COMMONDIR)/tempnam.o
        !          51383: 
        !          51384: all : download
        !          51385: 
        !          51386: install : all
        !          51387:        @if [ ! -d "$(POSTBIN)" ]; then \
        !          51388:            mkdir $(POSTBIN); \
        !          51389:            chmod 755 $(POSTBIN); \
        !          51390:            chgrp $(GROUP) $(POSTBIN); \
        !          51391:            chown $(OWNER) $(POSTBIN); \
        !          51392:        fi
        !          51393:        cp download $(POSTBIN)/download
        !          51394:        @chmod 755 $(POSTBIN)/download
        !          51395:        @chgrp $(GROUP) $(POSTBIN)/download
        !          51396:        @chown $(OWNER) $(POSTBIN)/download
        !          51397:        cp download.1 $(MAN1DIR)/download.1
        !          51398:        @chmod 644 $(MAN1DIR)/download.1
        !          51399:        @chgrp $(GROUP) $(MAN1DIR)/download.1
        !          51400:        @chown $(OWNER) $(MAN1DIR)/download.1
        !          51401: 
        !          51402: clean :
        !          51403:        rm -f *.o
        !          51404: 
        !          51405: clobber : clean
        !          51406:        rm -f download
        !          51407: 
        !          51408: download : $(OFILES)
        !          51409:        $(CC) $(CFLAGS) $(LDFLAGS) -o download $(OFILES)
        !          51410: 
        !          51411: download.o : $(HFILES)
        !          51412: 
        !          51413: $(COMMONDIR)/glob.o\
        !          51414: $(COMMONDIR)/misc.o\
        !          51415: $(COMMONDIR)/tempnam.o :
        !          51416:        @cd $(COMMONDIR); $(MAKE) -f common.mk SYSTEM=$(SYSTEM) `basename $@`
        !          51417: 
        !          51418: changes :
        !          51419:        @trap "" 1 2 3 15; \
        !          51420:        sed \
        !          51421:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
        !          51422:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
        !          51423:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          51424:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          51425:            -e "s'^HOSTDIR=.*'HOSTDIR=$(HOSTDIR)'" \
        !          51426:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
        !          51427:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
        !          51428:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
        !          51429:        $(MAKEFILE) >XXX.mk; \
        !          51430:        mv XXX.mk $(MAKEFILE); \
        !          51431:        sed \
        !          51432:            -e "s'^.ds dH.*'.ds dH $(HOSTDIR)'" \
        !          51433:        download.1 >XXX.1; \
        !          51434:        mv XXX.1 download.1
        !          51435: 
        !          51436: 0707070014230550021006440057030057030000011527420522627503100003600000001664post.src/download/example.map%
        !          51437: % An example font map table that extends the standard collection of 13
        !          51438: % fonts to the 35 made popular by the LaserWriter Plus.
        !          51439: %
        !          51440: % First string is full PostScript font name, exactly as it would appear
        !          51441: % in a %%DocumentFonts comment. Second string is the name of the Unix
        !          51442: % file relative to *hostfontdir, unless that string begins with a /, in
        !          51443: % which case it's taken as the full pathname.
        !          51444: %
        !          51445: 
        !          51446:        Palatino-Roman                  PA
        !          51447:        Palatino-Italic                 PI
        !          51448:        Palatino-Bold                   PB
        !          51449:        Palatino-BoldItalic             PX
        !          51450:        Helvetica-Narrow                Hr
        !          51451:        Helvetica-Narrow-Oblique        Hi
        !          51452:        Helvetica-Narrow-Bold           Hb
        !          51453:        Helvetica-Narrow-BoldOblique    Hx
        !          51454:        Bookman-Light                   KR
        !          51455:        Bookman-LightItalic             KI
        !          51456:        Bookman-Demi                    KB
        !          51457:        Bookman-DemiItalic              KX
        !          51458:        AvantGarde-Book                 AR
        !          51459:        AvantGarde-BookOblique          AI
        !          51460:        AvantGarde-Demi                 AB
        !          51461:        AvantGarde-DemiOblique          AX
        !          51462:        NewCenturySchlbk-Roman          NR
        !          51463:        NewCenturySchlbk-Italic         NI
        !          51464:        NewCenturySchlbk-Bold           NB
        !          51465:        NewCenturySchlbk-BoldItalic     NX
        !          51466:        ZapfDingbats                    ZD
        !          51467:        ZapfChancery-MediumItalic       ZI
        !          51468:        
        !          51469: 0707070014230550031006440057030057030000011527500522627503100003500000034165post.src/download/download.c/*
        !          51470:  *
        !          51471:  * download - host resident font downloader
        !          51472:  *
        !          51473:  * Prepends host resident fonts to PostScript input files. The program assumes
        !          51474:  * the input files are part of a single PostScript job and that requested fonts
        !          51475:  * can be downloaded at the start of each input file. Downloaded fonts are the
        !          51476:  * ones named in a %%DocumentFonts: comment and listed in a special map table.
        !          51477:  * Map table pathnames (supplied using the -m option) that begin with a / are
        !          51478:  * taken as is. Otherwise the final pathname is built using *hostfontdir (-H
        !          51479:  * option), *mapname (-m option), and *suffix.
        !          51480:  *
        !          51481:  * The map table consists of fontname-filename pairs, separated by white space.
        !          51482:  * Comments are introduced by % (as in PostScript) and extend to the end of the
        !          51483:  * current line. The only fonts that can be downloaded are the ones listed in
        !          51484:  * the active map table that point the program to a readable Unix file. A request
        !          51485:  * for an unlisted font or inaccessible file is ignored. All font requests are
        !          51486:  * ignored if the map table can't be read. In that case the program simply copies
        !          51487:  * the input files to stdout.
        !          51488:  *
        !          51489:  * An example (but not one to follow) of what can be in a map table is,
        !          51490:  *
        !          51491:  *     %
        !          51492:  *     % Map requests for Bookman-Light to file *hostfontdir/KR
        !          51493:  *     %
        !          51494:  *
        !          51495:  *       Bookman-Light         KR      % Keeping everything (including the map
        !          51496:  *                                     % table) in *hostfontdir seems like the
        !          51497:  *                                     % cleanest approach.
        !          51498:  *
        !          51499:  *     %
        !          51500:  *     % Map Palatino-Roman to file *hostfontdir/palatino/Roman
        !          51501:  *     %
        !          51502:  *       Palatino-Roman        palatino/Roman
        !          51503:  *
        !          51504:  *     % Map ZapfDingbats to file /usr/lib/host/dingbats
        !          51505:  *
        !          51506:  *       ZapfDingbats          /usr/lib/host/dingbats
        !          51507:  *
        !          51508:  * Once again, file names that begin with a / are taken as is. All others have
        !          51509:  * *hostfontdir/ prepended to the file string associated with a particular font.
        !          51510:  *
        !          51511:  * Map table can be associated with a printer model (e.g. a LaserWriter), a
        !          51512:  * printer destination, or whatever - the choice is up to an administrator.
        !          51513:  * By destination may be best if your spooler is running several private
        !          51514:  * printers. Host resident fonts are usually purchased under a license that
        !          51515:  * restricts their use to a limited number of printers. A font licensed for
        !          51516:  * a single printer should only be used on that printer.
        !          51517:  *
        !          51518:  * Was written quickly, so there's much room for improvement. Undoubtedly should
        !          51519:  * be a more general program (e.g. scan for other comments).
        !          51520:  *
        !          51521:  */
        !          51522: 
        !          51523: #include <stdio.h>
        !          51524: #include <signal.h>
        !          51525: #include <fcntl.h>
        !          51526: #include <sys/types.h>
        !          51527: #include <sys/stat.h>
        !          51528: 
        !          51529: #include "comments.h"                  /* PostScript file structuring comments */
        !          51530: #include "gen.h"                       /* general purpose definitions */
        !          51531: #include "path.h"                      /* for temporary directory */
        !          51532: #include "ext.h"                       /* external variable declarations */
        !          51533: #include "download.h"                  /* a few special definitions */
        !          51534: 
        !          51535: char   *temp_dir = TEMPDIR;            /* temp directory - for copying stdin */
        !          51536: char   *hostfontdir = HOSTDIR;         /* host resident directory */
        !          51537: char   *mapname = "map";               /* map table - usually in *hostfontdir */
        !          51538: char   *suffix = "";                   /* appended to the map table pathname */
        !          51539: Map    *map = NULL;                    /* device font map table */
        !          51540: char   *stringspace = NULL;            /* for storing font and file strings */
        !          51541: int    next = 0;                       /* next free slot in map[] */
        !          51542: 
        !          51543: char   *residentfonts = NULL;          /* list of printer resident fonts */
        !          51544: char   *printer = NULL;                /* printer name - only for Unix 4.0 lp */
        !          51545: 
        !          51546: char   buf[2048];                      /* input file line buffer */
        !          51547: char   *comment = DOCUMENTFONTS;       /* look for this comment */
        !          51548: int    atend = FALSE;                  /* TRUE only if a comment says so */
        !          51549: 
        !          51550: FILE   *fp_in = stdin;                 /* next input file */
        !          51551: FILE   *fp_temp = NULL;                /* for copying stdin */
        !          51552: 
        !          51553: /*****************************************************************************/
        !          51554: 
        !          51555: main(agc, agv)
        !          51556: 
        !          51557:     int                agc;
        !          51558:     char       *agv[];
        !          51559: 
        !          51560: {
        !          51561: 
        !          51562: /*
        !          51563:  *
        !          51564:  * Host resident font downloader. The input files are assumed to be part of a
        !          51565:  * single PostScript job.
        !          51566:  *
        !          51567:  */
        !          51568: 
        !          51569:     argc = agc;                                /* other routines may want them */
        !          51570:     argv = agv;
        !          51571: 
        !          51572:     prog_name = argv[0];               /* just for error messages */
        !          51573: 
        !          51574:     init_signals();                    /* sets up interrupt handling */
        !          51575:     options();                         /* first get command line options */
        !          51576:     readmap();                         /* read the font map table */
        !          51577:     readresident();                    /* and the optional resident font list */
        !          51578:     arguments();                       /* then process non-option arguments */
        !          51579:     done();                            /* and clean things up */
        !          51580: 
        !          51581:     exit(x_stat);                      /* not much could be wrong */
        !          51582: 
        !          51583: }   /* End of main */
        !          51584: 
        !          51585: /*****************************************************************************/
        !          51586: 
        !          51587: init_signals()
        !          51588: 
        !          51589: {
        !          51590: 
        !          51591: /*
        !          51592:  *
        !          51593:  * Makes sure we handle interrupts properly.
        !          51594:  *
        !          51595:  */
        !          51596: 
        !          51597:     if ( signal(SIGINT, interrupt) == SIG_IGN ) {
        !          51598:        signal(SIGINT, SIG_IGN);
        !          51599:        signal(SIGQUIT, SIG_IGN);
        !          51600:        signal(SIGHUP, SIG_IGN);
        !          51601:     } else {
        !          51602:        signal(SIGHUP, interrupt);
        !          51603:        signal(SIGQUIT, interrupt);
        !          51604:     }   /* End else */
        !          51605: 
        !          51606:     signal(SIGTERM, interrupt);
        !          51607: 
        !          51608: }   /* End of init_signals */
        !          51609: 
        !          51610: /*****************************************************************************/
        !          51611: 
        !          51612: options()
        !          51613: 
        !          51614: {
        !          51615: 
        !          51616:     int                ch;                     /* return value from getopt() */
        !          51617:     char       *optnames = "c:fm:p:r:H:T:DI";
        !          51618: 
        !          51619:     extern char        *optarg;                /* used by getopt() */
        !          51620:     extern int optind;
        !          51621: 
        !          51622: /*
        !          51623:  *
        !          51624:  * Reads and processes the command line options.
        !          51625:  *
        !          51626:  */
        !          51627: 
        !          51628:     while ( (ch = getopt(argc, argv, optnames)) != EOF ) {
        !          51629:        switch ( ch ) {
        !          51630:            case 'c':                   /* look for this comment */
        !          51631:                    comment = optarg;
        !          51632:                    break;
        !          51633: 
        !          51634:            case 'f':                   /* force a complete input file scan */
        !          51635:                    atend = TRUE;
        !          51636:                    break;
        !          51637: 
        !          51638:            case 'm':                   /* printer map table name */
        !          51639:                    mapname = optarg;
        !          51640:                    break;
        !          51641: 
        !          51642:            case 'p':                   /* printer name - for Unix 4.0 lp */
        !          51643:                    printer = optarg;
        !          51644:                    break;
        !          51645: 
        !          51646:            case 'r':                   /* resident font list */
        !          51647:                    residentfonts = optarg;
        !          51648:                    break;
        !          51649: 
        !          51650:            case 'H':                   /* host resident font directory */
        !          51651:                    hostfontdir = optarg;
        !          51652:                    break;
        !          51653: 
        !          51654:            case 'T':                   /* temporary file directory */
        !          51655:                    temp_dir = optarg;
        !          51656:                    break;
        !          51657: 
        !          51658:            case 'D':                   /* debug flag */
        !          51659:                    debug = ON;
        !          51660:                    break;
        !          51661: 
        !          51662:            case 'I':                   /* ignore FATAL errors */
        !          51663:                    ignore = ON;
        !          51664:                    break;
        !          51665: 
        !          51666:            case '?':                   /* don't understand the option */
        !          51667:                    error(FATAL, "");
        !          51668:                    break;
        !          51669: 
        !          51670:            default:                    /* don't know what to do for ch */
        !          51671:                    error(FATAL, "missing case for option %c\n", ch);
        !          51672:                    break;
        !          51673:        }   /* End switch */
        !          51674:     }   /* End while */
        !          51675: 
        !          51676:     argc -= optind;                    /* get ready for non-option args */
        !          51677:     argv += optind;
        !          51678: 
        !          51679: }   /* End of options */
        !          51680: 
        !          51681: /*****************************************************************************/
        !          51682: 
        !          51683: readmap()
        !          51684: 
        !          51685: {
        !          51686: 
        !          51687:     char       *path;
        !          51688:     char       *ptr;
        !          51689:     int                fd;
        !          51690:     struct stat        sbuf;
        !          51691: 
        !          51692: /*
        !          51693:  *
        !          51694:  * Initializes the map table by reading an ASCII mapping file. If mapname begins
        !          51695:  * with a / it's the map table. Otherwise hostfontdir, mapname, and suffix are
        !          51696:  * combined to build the final pathname. If we can open the file we read it all
        !          51697:  * into memory, erase comments, and separate the font and file name pairs. When
        !          51698:  * we leave next points to the next free slot in the map[] array. If it's zero
        !          51699:  * nothing was in the file or we couldn't open it.
        !          51700:  *
        !          51701:  */
        !          51702: 
        !          51703:     if ( hostfontdir == NULL || mapname == NULL )
        !          51704:        return;
        !          51705: 
        !          51706:     if ( *mapname != '/' ) {
        !          51707:        if ( (path = malloc(strlen(hostfontdir) + strlen(mapname) +
        !          51708:                                                strlen(suffix) + 2)) == NULL )
        !          51709:            error(FATAL, "no memory");
        !          51710:        sprintf(path, "%s/%s%s", hostfontdir, mapname, suffix);
        !          51711:     } else path = mapname;
        !          51712: 
        !          51713:     if ( (fd = open(path, 0)) != -1 ) {
        !          51714:        if ( fstat(fd, &sbuf) == -1 )
        !          51715:            error(FATAL, "can't fstat %s", path);
        !          51716:        if ( (stringspace = malloc(sbuf.st_size + 2)) == NULL )
        !          51717:            error(FATAL, "no memory");
        !          51718:        if ( read(fd, stringspace, sbuf.st_size) == -1 )
        !          51719:            error(FATAL, "can't read %s", path);
        !          51720:        close(fd);
        !          51721: 
        !          51722:        stringspace[sbuf.st_size] = '\n';       /* just to be safe */
        !          51723:        stringspace[sbuf.st_size+1] = '\0';
        !          51724:        for ( ptr = stringspace; *ptr != '\0'; ptr++ )  /* erase comments */
        !          51725:            if ( *ptr == '%' )
        !          51726:                for ( ; *ptr != '\n' ; ptr++ )
        !          51727:                    *ptr = ' ';
        !          51728: 
        !          51729:        for ( ptr = stringspace; ; next++ ) {
        !          51730:            if ( (next % 50) == 0 )
        !          51731:                map = allocate(map, next+50);
        !          51732:            map[next].downloaded = FALSE;
        !          51733:            map[next].font = strtok(ptr, " \t\n");
        !          51734:            map[next].file = strtok(ptr = NULL, " \t\n");
        !          51735:            if ( map[next].font == NULL )
        !          51736:                break;
        !          51737:            if ( map[next].file == NULL )
        !          51738:                error(FATAL, "map table format error - check %s", path);
        !          51739:        }   /* End for */
        !          51740:     }  /* End if */
        !          51741: 
        !          51742: }   /* End of readmap */
        !          51743: 
        !          51744: /*****************************************************************************/
        !          51745: 
        !          51746: readresident()
        !          51747: 
        !          51748: {
        !          51749: 
        !          51750:     FILE       *fp;
        !          51751:     char       *path;
        !          51752:     int                ch;
        !          51753:     int                n;
        !          51754: 
        !          51755: /*
        !          51756:  *
        !          51757:  * Reads a file that lists the resident fonts for a particular printer and marks
        !          51758:  * each font as already downloaded. Nothing's done if the file can't be read or
        !          51759:  * there's no mapping file. Comments, as in the map file, begin with a % and
        !          51760:  * extend to the end of the line. Added for Unix 4.0 lp.
        !          51761:  *
        !          51762:  */
        !          51763: 
        !          51764:     if ( next == 0 || (printer == NULL && residentfonts == NULL) )
        !          51765:        return;
        !          51766: 
        !          51767:     if ( printer != NULL ) {           /* use Unix 4.0 lp pathnames */
        !          51768:        sprintf(buf, "/etc/lp/printers/%s/residentfonts", printer);
        !          51769:        path = buf;
        !          51770:     } else path = residentfonts;
        !          51771: 
        !          51772:     if ( (fp = fopen(path, "r")) != NULL ) {
        !          51773:        while ( fscanf(fp, "%s", buf) != EOF )
        !          51774:            if ( buf[0] == '%' )
        !          51775:                while ( (ch = getc(fp)) != EOF && ch != '\n' ) ;
        !          51776:            else if ( (n = lookup(buf)) < next )
        !          51777:                map[n].downloaded = TRUE;
        !          51778:        fclose(fp);
        !          51779:     }  /* End if */
        !          51780: 
        !          51781: }   /* End of readresident */
        !          51782: 
        !          51783: /*****************************************************************************/
        !          51784: 
        !          51785: arguments()
        !          51786: 
        !          51787: {
        !          51788: 
        !          51789: /*
        !          51790:  *
        !          51791:  * Makes sure all the non-option command line arguments are processed. If we get
        !          51792:  * here and there aren't any arguments left, or if '-' is one of the input files
        !          51793:  * we'll translate stdin. Assumes input files are part of a single PostScript
        !          51794:  * job and fonts can be downloaded at the start of each file.
        !          51795:  *
        !          51796:  */
        !          51797: 
        !          51798:     if ( argc < 1 )
        !          51799:        download();
        !          51800:     else {
        !          51801:        while ( argc > 0 ) {
        !          51802:            fp_temp = NULL;
        !          51803:            if ( strcmp(*argv, "-") == 0 )
        !          51804:                fp_in = stdin;
        !          51805:            else if ( (fp_in = fopen(*argv, "r")) == NULL )
        !          51806:                error(FATAL, "can't open %s", *argv);
        !          51807:            download();
        !          51808:            if ( fp_in != stdin )
        !          51809:                fclose(fp_in);
        !          51810:            if ( fp_temp != NULL )
        !          51811:                fclose(fp_temp);
        !          51812:            argc--;
        !          51813:            argv++;
        !          51814:        }   /* End while */
        !          51815:     }  /* End else */
        !          51816: 
        !          51817: }   /* End of arguments */
        !          51818: 
        !          51819: /*****************************************************************************/
        !          51820: 
        !          51821: done()
        !          51822: 
        !          51823: {
        !          51824: 
        !          51825: /*
        !          51826:  *
        !          51827:  * Clean things up before we quit.
        !          51828:  *
        !          51829:  */
        !          51830: 
        !          51831:     if ( temp_file != NULL )
        !          51832:        unlink(temp_file);
        !          51833: 
        !          51834: }   /* End of done */
        !          51835: 
        !          51836: /*****************************************************************************/
        !          51837: 
        !          51838: download()
        !          51839: 
        !          51840: {
        !          51841: 
        !          51842:     int                infontlist = FALSE;
        !          51843: 
        !          51844: /*
        !          51845:  *
        !          51846:  * If next is zero the map table is empty and all we do is copy the input file
        !          51847:  * to stdout. Otherwise we read the input file looking for %%DocumentFonts: or
        !          51848:  * continuation comments, add any accessible fonts to the output file, and then
        !          51849:  * append the input file. When reading stdin we append lines to fp_temp and
        !          51850:  * recover them when we're ready to copy the input file. fp_temp will often
        !          51851:  * only contain part of stdin - if there's no %%DocumentFonts: (atend) comment
        !          51852:  * we stop reading fp_in after the header.
        !          51853:  *
        !          51854:  */
        !          51855: 
        !          51856:     if ( next > 0 ) {
        !          51857:        if ( fp_in == stdin ) {
        !          51858:            if ( (temp_file = tempnam(temp_dir, "post")) == NULL )
        !          51859:                error(FATAL, "can't generate temp file name");
        !          51860:            if ( (fp_temp = fopen(temp_file, "w+r")) == NULL )
        !          51861:                error(FATAL, "can't open %s", temp_file);
        !          51862:            unlink(temp_file);
        !          51863:            temp_file = NULL;
        !          51864:        }   /* End if */
        !          51865: 
        !          51866:        while ( fgets(buf, sizeof(buf), fp_in) != NULL ) {
        !          51867:            if ( fp_temp != NULL )
        !          51868:                fprintf(fp_temp, "%s", buf);
        !          51869:            if ( buf[0] != '%' || buf[1] != '%' ) {
        !          51870:                if ( (buf[0] != '%' || buf[1] != '!') && atend == FALSE )
        !          51871:                    break;
        !          51872:                infontlist = FALSE;
        !          51873:            } else if ( strncmp(buf, comment, strlen(comment)) == 0 ) {
        !          51874:                copyfonts(buf);
        !          51875:                infontlist = TRUE;
        !          51876:            } else if ( buf[2] == '+' && infontlist == TRUE )
        !          51877:                copyfonts(buf);
        !          51878:            else infontlist = FALSE;
        !          51879:        }   /* End while */
        !          51880:     }  /* End if */
        !          51881: 
        !          51882:     copyinput();
        !          51883: 
        !          51884: }   /* End of download */
        !          51885: 
        !          51886: /*****************************************************************************/
        !          51887: 
        !          51888: copyfonts(list)
        !          51889: 
        !          51890:     char       *list;
        !          51891: 
        !          51892: {
        !          51893: 
        !          51894:     char       *font;
        !          51895:     char       *path;
        !          51896:     int                n;
        !          51897: 
        !          51898: /*
        !          51899:  *
        !          51900:  * list points to a %%DocumentFonts: or continuation comment. What follows the
        !          51901:  * the keyword will be a list of fonts separated by white space (or (atend)).
        !          51902:  * Look for each font in the map table and if it's found copy the font file to
        !          51903:  * stdout (once only).
        !          51904:  *
        !          51905:  */
        !          51906: 
        !          51907:     strtok(list, " \n");               /* skip to the font list */
        !          51908: 
        !          51909:     while ( (font = strtok(NULL, " \t\n")) != NULL ) {
        !          51910:        if ( strcmp(font, ATEND) == 0 ) {
        !          51911:            atend = TRUE;
        !          51912:            break;
        !          51913:        }   /* End if */
        !          51914:        if ( (n = lookup(font)) < next ) {
        !          51915:            if ( *map[n].file != '/' ) {
        !          51916:                if ( (path = malloc(strlen(hostfontdir)+strlen(map[n].file)+2)) == NULL )
        !          51917:                    error(FATAL, "no memory");
        !          51918:                sprintf(path, "%s/%s", hostfontdir, map[n].file);
        !          51919:                cat(path);
        !          51920:                free(path);
        !          51921:            } else cat(map[n].file);
        !          51922:            map[n].downloaded = TRUE;
        !          51923:        }   /* End if */
        !          51924:     }  /* End while */
        !          51925: 
        !          51926: }   /* End of copyfonts */
        !          51927: 
        !          51928: /*****************************************************************************/
        !          51929: 
        !          51930: copyinput()
        !          51931: 
        !          51932: {
        !          51933: 
        !          51934: /*
        !          51935:  *
        !          51936:  * Copies the input file to stdout. If fp_temp isn't NULL seek to the start and
        !          51937:  * add it to the output file - it's a partial (or complete) copy of stdin made
        !          51938:  * by download(). Then copy fp_in, but only seek to the start if it's not stdin.
        !          51939:  *
        !          51940:  */
        !          51941: 
        !          51942:     if ( fp_temp != NULL ) {
        !          51943:        fseek(fp_temp, 0L, 0);
        !          51944:        while ( fgets(buf, sizeof(buf), fp_temp) != NULL )
        !          51945:            printf("%s", buf);
        !          51946:     }  /* End if */
        !          51947: 
        !          51948:     if ( fp_in != stdin )
        !          51949:        fseek(fp_in, 0L, 0);
        !          51950: 
        !          51951:     while ( fgets(buf, sizeof(buf), fp_in) != NULL )
        !          51952:        printf("%s", buf);
        !          51953: 
        !          51954: }   /* End of copyinput */
        !          51955: 
        !          51956: /*****************************************************************************/
        !          51957: 
        !          51958: lookup(font)
        !          51959: 
        !          51960:     char       *font;
        !          51961: 
        !          51962: {
        !          51963: 
        !          51964:     int                i;
        !          51965: 
        !          51966: /*
        !          51967:  *
        !          51968:  * Looks for *font in the map table. Return the map table index if found and
        !          51969:  * not yet downloaded - otherwise return next.
        !          51970:  *
        !          51971:  */
        !          51972: 
        !          51973:     for ( i = 0; i < next; i++ )
        !          51974:        if ( strcmp(font, map[i].font) == 0 ) {
        !          51975:            if ( map[i].downloaded == TRUE )
        !          51976:                i = next;
        !          51977:            break;
        !          51978:        }   /* End if */
        !          51979: 
        !          51980:     return(i);
        !          51981: 
        !          51982: }   /* End of lookup */
        !          51983: 
        !          51984: /*****************************************************************************/
        !          51985: 
        !          51986: Map *allocate(ptr, num)
        !          51987: 
        !          51988:     Map                *ptr;
        !          51989:     int                num;
        !          51990: 
        !          51991: {
        !          51992: 
        !          51993: /*
        !          51994:  *
        !          51995:  * Allocates space for num Map elements. Calls malloc() if ptr is NULL and
        !          51996:  * realloc() otherwise.
        !          51997:  *
        !          51998:  */
        !          51999: 
        !          52000:     if ( ptr == NULL )
        !          52001:        ptr = (Map *)malloc(num * sizeof(Map));
        !          52002:     else ptr = (Map *)realloc(ptr, num * sizeof(Map));
        !          52003: 
        !          52004:     if ( ptr == NULL )
        !          52005:        error(FATAL, "no map memory");
        !          52006: 
        !          52007:     return(ptr);
        !          52008: 
        !          52009: }   /* End of allocate */
        !          52010: 
        !          52011: /*****************************************************************************/
        !          52012: 
        !          52013: 0707070014230550121006400057030057030000011530300522633074000003500000007101post.src/download/download.1.ds dH /usr/lib/font/postscript
        !          52014: .TH DOWNLOAD 1 "DWB 3.2"
        !          52015: .SH NAME
        !          52016: download \- host-resident PostScript font download
        !          52017: .SH SYNOPSIS
        !          52018: \*(mBdownload\f1
        !          52019: .OP "" options []
        !          52020: .OP "" files []
        !          52021: .SH DESCRIPTION
        !          52022: .B download
        !          52023: prepends host-resident fonts to
        !          52024: .I files
        !          52025: and writes the results on the standard output.
        !          52026: If no
        !          52027: .I files
        !          52028: are specified, or if
        !          52029: .OP \-
        !          52030: is one of the input
        !          52031: .IR files ,
        !          52032: the standard input is read.
        !          52033: .B download
        !          52034: assumes the input
        !          52035: .I files
        !          52036: are a single PostScript job and that requested fonts
        !          52037: can be included at the start of each input
        !          52038: .IR file .
        !          52039: The following
        !          52040: .I options
        !          52041: are understood:
        !          52042: .TP 1.0i
        !          52043: .OP \-f
        !          52044: Force a complete scan of each input
        !          52045: .I file.
        !          52046: In the absence of an explicit comment pointing
        !          52047: .I download
        !          52048: to the end of the file, the default scan stops
        !          52049: immediately after the PostScript header comments.
        !          52050: .TP 1.0i
        !          52051: .OP \-m name
        !          52052: Use
        !          52053: .I name
        !          52054: as the font map table.
        !          52055: A
        !          52056: .I name
        !          52057: that begins with
        !          52058: .MW /
        !          52059: is the full pathname of the
        !          52060: map table.
        !          52061: Otherwise
        !          52062: .I name
        !          52063: is relative to the host font directory.
        !          52064: .TP 1.0i
        !          52065: .OP \-p printer
        !          52066: Read the printer-resident font list from file
        !          52067: .br
        !          52068: .MI /etc/lp/printers/ printer /residentfonts \f1.
        !          52069: .br
        !          52070: Fonts named in this file will not be downloaded.
        !          52071: The
        !          52072: .OP \-p
        !          52073: option is for use with Unix 4.0 lp.
        !          52074: Other spoolers should use the
        !          52075: .OP \-r
        !          52076: option.
        !          52077: .TP 1.0i
        !          52078: .OP \-r file
        !          52079: Read the list of printer-resident fonts from
        !          52080: .I file.
        !          52081: Fonts named in this file will not be downloaded.
        !          52082: .TP 1.0i
        !          52083: .OP \-H dir
        !          52084: Use
        !          52085: .I dir
        !          52086: as the host font directory.
        !          52087: The default is
        !          52088: .MR \*(dH .
        !          52089: .TP 1.0i
        !          52090: .OP \-T dir
        !          52091: Use
        !          52092: .I dir
        !          52093: as the temporary file directory.
        !          52094: Only used to make a copy of standard input.
        !          52095: By default
        !          52096: .I dir
        !          52097: is set to
        !          52098: .MR /tmp .
        !          52099: .PP
        !          52100: Requested fonts are named in a
        !          52101: .MW %%DocumentFonts:
        !          52102: comment in the input
        !          52103: .IR files .
        !          52104: Available fonts are the ones listed in the map table
        !          52105: selected using the
        !          52106: .OP \-m
        !          52107: option.
        !          52108: .PP
        !          52109: The map table consists of fontname\-filename pairs.
        !          52110: The fontname is the full name of the PostScript font,
        !          52111: exactly as it would appear in a
        !          52112: .MW %%DocumentFonts:
        !          52113: comment.
        !          52114: The filename is the pathname of the host resident font.
        !          52115: A filename that begins with a
        !          52116: .MW /
        !          52117: is used as is,
        !          52118: otherwise the pathname is relative to the host font
        !          52119: directory.
        !          52120: Comments are introduced by
        !          52121: .MW %
        !          52122: (as in PostScript) and
        !          52123: extend to the end of the line.
        !          52124: .PP
        !          52125: The only candidates for downloading are fonts listed
        !          52126: in the map table that point
        !          52127: .B download
        !          52128: to readable files.
        !          52129: A font is downloaded at most once per job.
        !          52130: Requests for unlisted fonts or inaccessible files
        !          52131: are ignored.
        !          52132: All requests are ignored if the map table can't be read.
        !          52133: .SH EXAMPLES
        !          52134: A map table used to control the downloading
        !          52135: of the Bookman font family might be,
        !          52136: .EX -1
        !          52137: %
        !          52138: % The first string is the full PostScript font name. The second string
        !          52139: % is the file name - relative the host font directory unless it begins
        !          52140: % with a /.
        !          52141: %
        !          52142: 
        !          52143:   Bookman-Light            KR
        !          52144:   Bookman-LightItalic      KI
        !          52145:   Bookman-Demi             KB
        !          52146:   Bookman-DemiItalic       KX
        !          52147: .EE
        !          52148: Use file
        !          52149: .MW myprinter
        !          52150: (in the default host font directory) as the
        !          52151: map table:
        !          52152: .EX
        !          52153: download -m myprinter \f2file
        !          52154: .EE
        !          52155: Set the host font directory to
        !          52156: .MW /tmp/font
        !          52157: and use
        !          52158: .MW /tmp/font/xxx
        !          52159: as the map table:
        !          52160: .EX
        !          52161: download -H /tmp/font -mxxx \f2file
        !          52162: .EE
        !          52163: .SH DIAGNOSTICS
        !          52164: 0 exit status is returned if
        !          52165: .I files
        !          52166: were successfully processed.
        !          52167: .SH BUGS
        !          52168: .B download
        !          52169: should be part of a more general program.
        !          52170: .PP
        !          52171: .B download
        !          52172: does not look for
        !          52173: .MW %%PageFonts:
        !          52174: comments
        !          52175: and there is no way to force multiple downloads of
        !          52176: a particular font.
        !          52177: .PP
        !          52178: Using full pathnames, either in map tables or for the map table
        !          52179: name, is not often recommended.
        !          52180: .SH SEE ALSO
        !          52181: .BR dpost (1),
        !          52182: .BR postdaisy (1),
        !          52183: .BR postdmd (1),
        !          52184: .BR postio (1),
        !          52185: .BR postmd (1),
        !          52186: .BR postprint (1),
        !          52187: .BR posttek (1)
        !          52188: 0707070014231031431006440057030057030000010231460522634431100001700000002663post.src/NOTES Directory dpost is DWB 3.3 version without UTF changes. dpost.utf is
        !          52189:  stuff for Plan 9. Both build and install dpost, so only pick one. The
        !          52190:  makefile I sent (postscript.mk) builds dpost.utf.
        !          52191: 
        !          52192:  Left READING set to ONEBYTE in common/gen.h. Expect dpost errors unless
        !          52193:  'x E UTF' is added to troff output or READING set to UTFENCODING. Easy
        !          52194:  to make 'x E UTF' anything else too.
        !          52195: 
        !          52196:  Left RUNELIB defined in common/rune.h so rune.c stuff is used when
        !          52197:  dpost.utf is built.
        !          52198: 
        !          52199:  UTF.enc is in directory psencoding. Install and link to Default.enc on
        !          52200:  Plan 9.
        !          52201: 
        !          52202:  Carmela requested two new characters: \(bs for backslash and \(dq for
        !          52203:  double quote. Both are in devLatin1 and devpost tables. Carmela also
        !          52204:  asked for a bunch of her devpost accent characters in devLatin1. Added
        !          52205:  them to the end of the devLatin1 tables.
        !          52206: 
        !          52207:  A word of warning about devLatin1. Carmela, Peter and others complained
        !          52208:  about - and hyphens being too long in the Latin1 fonts. I used Abode's
        !          52209:  choice but nobody liked it. New devLatin1 tables use a smaller character
        !          52210:  for hy. Looks better (I guess) but a width change affects line and page
        !          52211:  breaks!! Not sure what you want to do. Complaints on this one go to
        !          52212:  npn and carmela!!!
        !          52213: 
        !          52214:  Didn't take your suggested pathname change in download. Didn't want to
        !          52215:  risk breaking Unix 4.0 lp. What's there is bogus but was only for Unix
        !          52216:  4.0. The -r option accomplishes something similiar but needs a full path.
        !          52217: 
        !          52218:  postio.mk is very different and not tested on V9.
        !          52219: 
        !          52220: 0707070014230735420407550057030057030000020011070522633074300002000000000000post.src/grabit0707070014230732661006400057030057030000010000700522633074200003200000002732post.src/grabit/grabit.mkMAKE=/bin/make
        !          52221: MAKEFILE=grabit.mk
        !          52222: 
        !          52223: OWNER=bin
        !          52224: GROUP=bin
        !          52225: 
        !          52226: MAN1DIR=/tmp
        !          52227: MAN5DIR=/usr/man/p_man/man5
        !          52228: POSTBIN=/usr/bin/postscript
        !          52229: POSTLIB=/usr/lib/postscript
        !          52230: 
        !          52231: all : grabit
        !          52232: 
        !          52233: install : all
        !          52234:        @if [ ! -d "$(POSTBIN)" ]; then \
        !          52235:            mkdir $(POSTBIN); \
        !          52236:            chmod 755 $(POSTBIN); \
        !          52237:            chgrp $(GROUP) $(POSTBIN); \
        !          52238:            chown $(OWNER) $(POSTBIN); \
        !          52239:        fi
        !          52240:        @if [ ! -d "$(POSTLIB)" ]; then \
        !          52241:            mkdir $(POSTLIB); \
        !          52242:            chmod 755 $(POSTLIB); \
        !          52243:            chgrp $(GROUP) $(POSTLIB); \
        !          52244:            chown $(OWNER) $(POSTLIB); \
        !          52245:        fi
        !          52246:        cp grabit $(POSTBIN)/grabit
        !          52247:        @chmod 755 $(POSTBIN)/grabit
        !          52248:        @chgrp $(GROUP) $(POSTBIN)/grabit
        !          52249:        @chown $(OWNER) $(POSTBIN)/grabit
        !          52250:        cp grabit.ps $(POSTLIB)/grabit.ps
        !          52251:        @chmod 644 $(POSTLIB)/grabit.ps
        !          52252:        @chgrp $(GROUP) $(POSTLIB)/grabit.ps
        !          52253:        @chown $(OWNER) $(POSTLIB)/grabit.ps
        !          52254:        cp grabit.1 $(MAN1DIR)/grabit.1
        !          52255:        @chmod 644 $(MAN1DIR)/grabit.1
        !          52256:        @chgrp $(GROUP) $(MAN1DIR)/grabit.1
        !          52257:        @chown $(OWNER) $(MAN1DIR)/grabit.1
        !          52258: 
        !          52259: clean :
        !          52260: 
        !          52261: clobber : clean
        !          52262:        rm -f grabit
        !          52263: 
        !          52264: grabit : grabit.sh
        !          52265:        sed "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" grabit.sh >grabit
        !          52266:        @chmod 755 grabit
        !          52267: 
        !          52268: changes :
        !          52269:        @trap "" 1 2 3 15; \
        !          52270:        sed \
        !          52271:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          52272:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          52273:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
        !          52274:            -e "s'^MAN5DIR=.*'MAN5DIR=$(MAN5DIR)'" \
        !          52275:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
        !          52276:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
        !          52277:        $(MAKEFILE) >XXX.mk; \
        !          52278:        mv XXX.mk $(MAKEFILE); \
        !          52279:        sed \
        !          52280:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
        !          52281:        grabit.1 >XXX.1; \
        !          52282:        mv XXX.1 grabit.1
        !          52283: 
        !          52284: 0707070014230735441006440057030057030000010014500522627503200003200000030161post.src/grabit/grabit.ps%
        !          52285: % Dump a PostScript object, occasionally in a form that can be sent back
        !          52286: % through the interpreter. Similiar to Adobe's == procedure, but output
        !          52287: % is usually easier to read. No binding so operators like rcheck and exec
        !          52288: % can be conviently redefined.
        !          52289: %
        !          52290: 
        !          52291: /GrabitDict 100 dict dup begin
        !          52292: 
        !          52293: /recursive true def
        !          52294: /scratchstring 200 string def
        !          52295: /slowdown 100 def
        !          52296: 
        !          52297: /column 0 def
        !          52298: /lastcolumn 80 def
        !          52299: /level 0 def
        !          52300: /multiline 100 array def
        !          52301: /nextname 0 def
        !          52302: /arraylength 0 def
        !          52303: /lengthonly false def
        !          52304: 
        !          52305: /GrabitSetup {
        !          52306:        counttomark {OmitNames exch true put} repeat pop
        !          52307:        0 0 moveto              % for hardcopy output
        !          52308: } def
        !          52309: 
        !          52310: /OmitNames 30 dict def         % ignore these names
        !          52311: /OtherDicts 200 dict def       % unrecognized dictionaries
        !          52312: 
        !          52313: %
        !          52314: % All strings returned to the host go through Print. First pass through an
        !          52315: % array has lengthonly set to true.
        !          52316: %
        !          52317: 
        !          52318: /Print {
        !          52319:        dup type /stringtype ne {scratchstring cvs} if
        !          52320:        lengthonly {
        !          52321:                length arraylength add /arraylength exch def
        !          52322:        }{
        !          52323:                dup length column add /column exch def
        !          52324:                print flush
        !          52325:                slowdown {1 pop} repeat
        !          52326:        } ifelse
        !          52327: } def
        !          52328: 
        !          52329: /Indent {level {(    ) Print} repeat} def
        !          52330: /Newline {(\n) Print lengthonly not {/column 0 def} if} def
        !          52331: 
        !          52332: /NextLevel {/level level 1 add def multiline level 0 put} def
        !          52333: /LastLevel {/level level 1 sub def} def
        !          52334: 
        !          52335: %
        !          52336: % Make a unique name for each unrecognized dictionary and remember the name
        !          52337: % and dictionary in OtherDicts.
        !          52338: %
        !          52339: 
        !          52340: /Register {
        !          52341:        dup type /dicttype eq {
        !          52342:                /nextname nextname 1 add def
        !          52343:                dup (UnknownDict   ) dup
        !          52344:                (UnknownDict) length nextname (   ) cvs putinterval
        !          52345:                0 (UnknownDict) length nextname (   ) cvs length add getinterval cvn
        !          52346:                exch OtherDicts 3 1 roll put
        !          52347:        } if
        !          52348: } def
        !          52349: 
        !          52350: %
        !          52351: % Replace array or dictionary values by known names. Lookups are in the
        !          52352: % standard PostScript dictionaries and in OtherDicts. If found replace
        !          52353: % the value by the name and make it executable so nametype omits the
        !          52354: % leading /.
        !          52355: %
        !          52356: 
        !          52357: /Replace {
        !          52358:        false
        !          52359:        1 index type /dicttype eq {pop true} if
        !          52360:        1 index type /arraytype eq 2 index xcheck not and {pop true} if
        !          52361:        {
        !          52362:                false
        !          52363:                [userdict systemdict statusdict serverdict OtherDicts] {
        !          52364:                        {
        !          52365:                                3 index eq
        !          52366:                                        {exch pop exch pop cvx true exit}
        !          52367:                                        {pop}
        !          52368:                                ifelse
        !          52369:                        } forall
        !          52370:                        dup {exit} if
        !          52371:                } forall
        !          52372:                pop
        !          52373:        } if
        !          52374: } def
        !          52375: 
        !          52376: %
        !          52377: % Simple type handlers. In some cases (e.g. savetype) what's returned can't
        !          52378: % be sent back through the interpreter.
        !          52379: %
        !          52380: 
        !          52381: /booleantype {{(true )}{(false )} ifelse Print} def
        !          52382: /marktype {pop (mark ) Print} def
        !          52383: /nulltype {pop (null ) Print} def
        !          52384: /integertype {Print ( ) Print} def
        !          52385: /realtype {Print ( ) Print} def
        !          52386: /filetype {pop (-file- ) Print} def
        !          52387: /fonttype {pop (-fontID- ) Print} def
        !          52388: /savetype {pop (-saveobj- ) Print} def
        !          52389: 
        !          52390: %
        !          52391: % Special formatting for operators is enabled if the flag in multiline
        !          52392: % (for the current level) is set to 1. In that case each operator, after
        !          52393: % being printed, is looked up in OperatorDict. If found the value is used
        !          52394: % as an index into the OperatorProcs array and the object at that index
        !          52395: % is retrieved and executed. Currently only used to choose the operators
        !          52396: % that end a line.
        !          52397: %
        !          52398: 
        !          52399: /operatortype {
        !          52400:        dup Print ( ) Print
        !          52401:        multiline level get 1 eq {
        !          52402:                scratchstring cvs cvn dup OperatorDict exch known {
        !          52403:                        OperatorDict exch get
        !          52404:                        OperatorProcs exch get exec
        !          52405:                }{
        !          52406:                        pop
        !          52407:                        column lastcolumn gt {Newline Indent} if
        !          52408:                } ifelse
        !          52409:        }{pop} ifelse
        !          52410: } def
        !          52411: 
        !          52412: %
        !          52413: % Executable names are passed to operatortype. Non-executable names get a
        !          52414: % leading /.
        !          52415: %
        !          52416: 
        !          52417: /nametype {
        !          52418:        dup xcheck {
        !          52419:                operatortype
        !          52420:        }{
        !          52421:                (/) Print Print ( ) Print
        !          52422:        } ifelse
        !          52423: } def
        !          52424: 
        !          52425: %
        !          52426: % Arrays are processed in two passes. The first computes the length of the
        !          52427: % string returned to the host without any special formatting. If it extends
        !          52428: % past the last column special formatting is enabled by setting a flag in
        !          52429: % array multiline. Arrays are processed in a for loop so the last element
        !          52430: % easily recognized. At that point special fortmatting is disabled.
        !          52431: %
        !          52432: 
        !          52433: /packedarraytype {arraytype} def
        !          52434: 
        !          52435: /arraytype {
        !          52436:        NextLevel
        !          52437:        lengthonly not {
        !          52438:                /lengthonly true def
        !          52439:                /arraylength 0 def
        !          52440:                dup dup type exec
        !          52441:                arraylength 20 gt arraylength column add lastcolumn gt and {
        !          52442:                        multiline level 1 put
        !          52443:                } if
        !          52444:                /lengthonly false def
        !          52445:        } if
        !          52446: 
        !          52447:        dup rcheck not {
        !          52448:                (-array- ) Print pop
        !          52449:        }{
        !          52450:                dup xcheck {({)}{([)} ifelse Print
        !          52451:                multiline level get 0 ne {Newline Indent}{( ) Print} ifelse
        !          52452:                0 1 2 index length 1 sub {
        !          52453:                        2 copy exch length 1 sub eq multiline level get 1 eq and {
        !          52454:                                multiline level 2 put
        !          52455:                        } if
        !          52456:                        2 copy get exch pop
        !          52457:                        dup type /dicttype eq {
        !          52458:                                Replace
        !          52459:                                dup type /dicttype eq {
        !          52460:                                        dup Register Replace
        !          52461:                                        recursive {
        !          52462:                                                2 copy cvlit
        !          52463:                                                /def load 3 1 roll
        !          52464:                                                count 3 roll
        !          52465:                                        } if
        !          52466:                                        exch pop
        !          52467:                                } if
        !          52468:                        } if
        !          52469:                        dup type exec
        !          52470:                        dup xcheck not multiline level get 1 eq and {
        !          52471:                                0 index type /arraytype eq
        !          52472:                                1 index type /packedarray eq or
        !          52473:                                1 index type /stringtype eq or {Newline Indent} if
        !          52474:                        } if
        !          52475:                } for
        !          52476:                multiline level get 0 ne {Newline LastLevel Indent NextLevel} if
        !          52477:                xcheck {(} )}{(] )} ifelse Print
        !          52478:        } ifelse
        !          52479:        LastLevel
        !          52480: } def
        !          52481: 
        !          52482: %
        !          52483: % Dictionary handler. Try to replace the value by a name before processing
        !          52484: % the dictionary.
        !          52485: %
        !          52486: 
        !          52487: /dicttype {
        !          52488:        dup
        !          52489:        rcheck not {
        !          52490:                (-dictionary- ) Print pop
        !          52491:        }{
        !          52492:                dup maxlength Print ( dict dup begin) Print Newline
        !          52493:                NextLevel
        !          52494:                {
        !          52495:                        1 index OmitNames exch known {
        !          52496:                                pop pop
        !          52497:                        }{
        !          52498:                                Indent
        !          52499:                                Replace         % arrays and dicts by known names
        !          52500:                                Register        % new dictionaries in OtherDicts
        !          52501:                                exch
        !          52502:                                cvlit dup type exec     % key first - force a /
        !          52503:                                dup type exec           % then the value
        !          52504:                                (def) Print Newline
        !          52505:                        } ifelse
        !          52506:                } forall
        !          52507:                LastLevel
        !          52508:                Indent
        !          52509:                (end ) Print
        !          52510:        } ifelse
        !          52511: } def
        !          52512: 
        !          52513: %
        !          52514: % Strings containing characters not in AsciiDict are returned in hex. All
        !          52515: % others are ASCII strings and use AsciiDict for character mapping.
        !          52516: %
        !          52517: 
        !          52518: /onecharstring ( ) def
        !          52519: /twocharstring (  ) def
        !          52520: 
        !          52521: /stringtype {
        !          52522:        dup
        !          52523:        rcheck not {
        !          52524:                (-string- ) Print
        !          52525:        }{
        !          52526:                /hexit false def
        !          52527:                dup {
        !          52528:                        onecharstring 0 3 -1 roll put
        !          52529:                        AsciiDict onecharstring cvn known not {
        !          52530:                                /hexit true def exit
        !          52531:                        } if
        !          52532:                } forall
        !          52533: 
        !          52534:                hexit {(<)}{(\()} ifelse Print
        !          52535:                0 1 2 index length 1 sub {
        !          52536:                        2 copy 1 getinterval exch pop
        !          52537:                        hexit {
        !          52538:                                0 get /n exch def
        !          52539:                                n -4 bitshift 16#F and 16 twocharstring cvrs pop
        !          52540:                                n 16#F and twocharstring 1 1 getinterval 16 exch cvrs pop
        !          52541:                                twocharstring
        !          52542:                        }{cvn AsciiDict exch get} ifelse
        !          52543:                        Print
        !          52544:                        column lastcolumn gt {
        !          52545:                                hexit not {(\\) Print} if
        !          52546:                                Newline
        !          52547:                        } if
        !          52548:                } for
        !          52549:                hexit {(> )}{(\) )} ifelse Print
        !          52550:        } ifelse
        !          52551:        pop
        !          52552: } def
        !          52553: 
        !          52554: %
        !          52555: % ASCII characters and replacement strings. Ensures the returned string will
        !          52556: % reproduce the original when passed through the scanner. Strings containing
        !          52557: % characters not in this list should be returned as hex strings.
        !          52558: %
        !          52559: 
        !          52560: /AsciiDict 128 dict dup begin
        !          52561:        (\n) cvn (\\n) def
        !          52562:        (\r) cvn (\\r) def
        !          52563:        (\t) cvn (\\t) def
        !          52564:        (\b) cvn (\\b) def
        !          52565:        (\f) cvn (\\f) def
        !          52566:        ( ) cvn ( ) def
        !          52567:        (!) cvn (!) def
        !          52568:        (") cvn (") def
        !          52569:        (#) cvn (#) def
        !          52570:        ($) cvn ($) def
        !          52571:        (%) cvn (\\%) def
        !          52572:        (&) cvn (&) def
        !          52573:        (') cvn (') def
        !          52574:        (\() cvn (\\\() def
        !          52575:        (\)) cvn (\\\)) def
        !          52576:        (*) cvn (*) def
        !          52577:        (+) cvn (+) def
        !          52578:        (,) cvn (,) def
        !          52579:        (-) cvn (-) def
        !          52580:        (.) cvn (.) def
        !          52581:        (/) cvn (/) def
        !          52582:        (0) cvn (0) def
        !          52583:        (1) cvn (1) def
        !          52584:        (2) cvn (2) def
        !          52585:        (3) cvn (3) def
        !          52586:        (4) cvn (4) def
        !          52587:        (5) cvn (5) def
        !          52588:        (6) cvn (6) def
        !          52589:        (7) cvn (7) def
        !          52590:        (8) cvn (8) def
        !          52591:        (9) cvn (9) def
        !          52592:        (:) cvn (:) def
        !          52593:        (;) cvn (;) def
        !          52594:        (<) cvn (<) def
        !          52595:        (=) cvn (=) def
        !          52596:        (>) cvn (>) def
        !          52597:        (?) cvn (?) def
        !          52598:        (@) cvn (@) def
        !          52599:        (A) cvn (A) def
        !          52600:        (B) cvn (B) def
        !          52601:        (C) cvn (C) def
        !          52602:        (D) cvn (D) def
        !          52603:        (E) cvn (E) def
        !          52604:        (F) cvn (F) def
        !          52605:        (G) cvn (G) def
        !          52606:        (H) cvn (H) def
        !          52607:        (I) cvn (I) def
        !          52608:        (J) cvn (J) def
        !          52609:        (K) cvn (K) def
        !          52610:        (L) cvn (L) def
        !          52611:        (M) cvn (M) def
        !          52612:        (N) cvn (N) def
        !          52613:        (O) cvn (O) def
        !          52614:        (P) cvn (P) def
        !          52615:        (Q) cvn (Q) def
        !          52616:        (R) cvn (R) def
        !          52617:        (S) cvn (S) def
        !          52618:        (T) cvn (T) def
        !          52619:        (U) cvn (U) def
        !          52620:        (V) cvn (V) def
        !          52621:        (W) cvn (W) def
        !          52622:        (X) cvn (X) def
        !          52623:        (Y) cvn (Y) def
        !          52624:        (Z) cvn (Z) def
        !          52625:        ([) cvn ([) def
        !          52626:        (\\) cvn (\\\\) def
        !          52627:        (]) cvn (]) def
        !          52628:        (^) cvn (^) def
        !          52629:        (_) cvn (_) def
        !          52630:        (`) cvn (`) def
        !          52631:        (a) cvn (a) def
        !          52632:        (b) cvn (b) def
        !          52633:        (c) cvn (c) def
        !          52634:        (d) cvn (d) def
        !          52635:        (e) cvn (e) def
        !          52636:        (f) cvn (f) def
        !          52637:        (g) cvn (g) def
        !          52638:        (h) cvn (h) def
        !          52639:        (i) cvn (i) def
        !          52640:        (j) cvn (j) def
        !          52641:        (k) cvn (k) def
        !          52642:        (l) cvn (l) def
        !          52643:        (m) cvn (m) def
        !          52644:        (n) cvn (n) def
        !          52645:        (o) cvn (o) def
        !          52646:        (p) cvn (p) def
        !          52647:        (q) cvn (q) def
        !          52648:        (r) cvn (r) def
        !          52649:        (s) cvn (s) def
        !          52650:        (t) cvn (t) def
        !          52651:        (u) cvn (u) def
        !          52652:        (v) cvn (v) def
        !          52653:        (w) cvn (w) def
        !          52654:        (x) cvn (x) def
        !          52655:        (y) cvn (y) def
        !          52656:        (z) cvn (z) def
        !          52657:        ({) cvn ({) def
        !          52658:        (|) cvn (|) def
        !          52659:        (}) cvn (}) def
        !          52660:        (~) cvn (~) def
        !          52661: end def
        !          52662: 
        !          52663: %
        !          52664: % OperatorDict can help format procedure listings. The value assigned to each
        !          52665: % name is used as an index into the OperatorProcs array. The procedure at that
        !          52666: % index is fetched and executed after the named operator is printed. What's in
        !          52667: % OperatorDict is a matter of taste rather than correctness. The default list
        !          52668: % represents our choice of which of Adobe's operators should end a line.
        !          52669: %
        !          52670: 
        !          52671: /OperatorProcs [{} {Newline Indent}] def
        !          52672: 
        !          52673: /OperatorDict 250 dict def
        !          52674: 
        !          52675: OperatorDict   /arc                    1 put
        !          52676: OperatorDict   /arcn                   1 put
        !          52677: OperatorDict   /ashow                  1 put
        !          52678: OperatorDict   /awidthshow             1 put
        !          52679: OperatorDict   /banddevice             1 put
        !          52680: OperatorDict   /begin                  1 put
        !          52681: OperatorDict   /charpath               1 put
        !          52682: OperatorDict   /clear                  1 put
        !          52683: OperatorDict   /cleardictstack         1 put
        !          52684: OperatorDict   /cleartomark            1 put
        !          52685: OperatorDict   /clip                   1 put
        !          52686: OperatorDict   /clippath               1 put
        !          52687: OperatorDict   /closefile              1 put
        !          52688: OperatorDict   /closepath              1 put
        !          52689: OperatorDict   /concat                 1 put
        !          52690: OperatorDict   /copypage               1 put
        !          52691: OperatorDict   /curveto                1 put
        !          52692: OperatorDict   /def                    1 put
        !          52693: OperatorDict   /end                    1 put
        !          52694: OperatorDict   /eoclip                 1 put
        !          52695: OperatorDict   /eofill                 1 put
        !          52696: OperatorDict   /erasepage              1 put
        !          52697: OperatorDict   /exec                   1 put
        !          52698: OperatorDict   /exit                   1 put
        !          52699: OperatorDict   /fill                   1 put
        !          52700: OperatorDict   /flattenpath            1 put
        !          52701: OperatorDict   /flush                  1 put
        !          52702: OperatorDict   /flushfile              1 put
        !          52703: OperatorDict   /for                    1 put
        !          52704: OperatorDict   /forall                 1 put
        !          52705: OperatorDict   /framedevice            1 put
        !          52706: OperatorDict   /grestore               1 put
        !          52707: OperatorDict   /grestoreall            1 put
        !          52708: OperatorDict   /gsave                  1 put
        !          52709: OperatorDict   /handleerror            1 put
        !          52710: OperatorDict   /if                     1 put
        !          52711: OperatorDict   /ifelse                 1 put
        !          52712: OperatorDict   /image                  1 put
        !          52713: OperatorDict   /imagemask              1 put
        !          52714: OperatorDict   /initclip               1 put
        !          52715: OperatorDict   /initgraphics           1 put
        !          52716: OperatorDict   /initmatrix             1 put
        !          52717: OperatorDict   /kshow                  1 put
        !          52718: OperatorDict   /lineto                 1 put
        !          52719: OperatorDict   /loop                   1 put
        !          52720: OperatorDict   /moveto                 1 put
        !          52721: OperatorDict   /newpath                1 put
        !          52722: OperatorDict   /nulldevice             1 put
        !          52723: OperatorDict   /pathforall             1 put
        !          52724: OperatorDict   /print                  1 put
        !          52725: OperatorDict   /prompt                 1 put
        !          52726: OperatorDict   /put                    1 put
        !          52727: OperatorDict   /putinterval            1 put
        !          52728: OperatorDict   /quit                   1 put
        !          52729: OperatorDict   /rcurveto               1 put
        !          52730: OperatorDict   /renderbands            1 put
        !          52731: OperatorDict   /repeat                 1 put
        !          52732: OperatorDict   /resetfile              1 put
        !          52733: OperatorDict   /restore                1 put
        !          52734: OperatorDict   /reversepath            1 put
        !          52735: OperatorDict   /rlineto                1 put
        !          52736: OperatorDict   /rmoveto                1 put
        !          52737: OperatorDict   /rotate                 1 put
        !          52738: OperatorDict   /run                    1 put
        !          52739: OperatorDict   /scale                  1 put
        !          52740: OperatorDict   /setcachedevice         1 put
        !          52741: OperatorDict   /setcachelimit          1 put
        !          52742: OperatorDict   /setcacheparams         1 put
        !          52743: OperatorDict   /setcharwidth           1 put
        !          52744: OperatorDict   /setdash                1 put
        !          52745: OperatorDict   /setdefaulttimeouts     1 put
        !          52746: OperatorDict   /setdostartpage         1 put
        !          52747: OperatorDict   /seteescratch           1 put
        !          52748: OperatorDict   /setflat                1 put
        !          52749: OperatorDict   /setfont                1 put
        !          52750: OperatorDict   /setgray                1 put
        !          52751: OperatorDict   /sethsbcolor            1 put
        !          52752: OperatorDict   /setidlefonts           1 put
        !          52753: OperatorDict   /setjobtimeout          1 put
        !          52754: OperatorDict   /setlinecap             1 put
        !          52755: OperatorDict   /setlinejoin            1 put
        !          52756: OperatorDict   /setlinewidth           1 put
        !          52757: OperatorDict   /setmargins             1 put
        !          52758: OperatorDict   /setmatrix              1 put
        !          52759: OperatorDict   /setmiterlimit          1 put
        !          52760: OperatorDict   /setpacking             1 put
        !          52761: OperatorDict   /setpagetype            1 put
        !          52762: OperatorDict   /setprintname           1 put
        !          52763: OperatorDict   /setrgbcolor            1 put
        !          52764: OperatorDict   /setsccbatch            1 put
        !          52765: OperatorDict   /setsccinteractive      1 put
        !          52766: OperatorDict   /setscreen              1 put
        !          52767: OperatorDict   /settransfer            1 put
        !          52768: OperatorDict   /show                   1 put
        !          52769: OperatorDict   /showpage               1 put
        !          52770: OperatorDict   /start                  1 put
        !          52771: OperatorDict   /stop                   1 put
        !          52772: OperatorDict   /store                  1 put
        !          52773: OperatorDict   /stroke                 1 put
        !          52774: OperatorDict   /strokepath             1 put
        !          52775: OperatorDict   /translate              1 put
        !          52776: OperatorDict   /widthshow              1 put
        !          52777: OperatorDict   /write                  1 put
        !          52778: OperatorDict   /writehexstring         1 put
        !          52779: OperatorDict   /writestring            1 put
        !          52780: 
        !          52781: end def
        !          52782: 
        !          52783: %
        !          52784: % Put an object on the stack and call Grabit. Output continues until stack
        !          52785: % is empty. For example,
        !          52786: %
        !          52787: %              /letter load Grabit
        !          52788: %
        !          52789: % prints a listing of the letter procedure.
        !          52790: %
        !          52791: 
        !          52792: /Grabit {
        !          52793:        /saveobj save def
        !          52794:        GrabitDict begin
        !          52795:                {
        !          52796:                        count 0 eq {exit} if
        !          52797:                        count {dup type exec} repeat
        !          52798:                        (\n) print flush
        !          52799:                } loop
        !          52800:        end
        !          52801:        currentpoint                    % for hardcopy output
        !          52802:        saveobj restore
        !          52803:        moveto
        !          52804: } def
        !          52805: 
        !          52806: 0707070014230735451006440057030057030000010011550522627503200003200000002271post.src/grabit/grabit.sh#
        !          52807: # Print a listing of an object, often a dictionary or an array. Something
        !          52808: # like ==, but the output is often easier to read and closer to PostScript
        !          52809: # that can be sent back through the interpreter.
        !          52810: #
        !          52811: 
        !          52812: POSTLIB=/usr/lib/postscript
        !          52813: PROLOGUE=$POSTLIB/grabit.ps
        !          52814: 
        !          52815: COPYFILE=
        !          52816: RECURSIVE=true
        !          52817: OMITNAMES="/Grabit /GrabitDict"
        !          52818: 
        !          52819: NONCONFORMING="%!PS"
        !          52820: ENDPROLOG="%%EndProlog"
        !          52821: BEGINSETUP="%%BeginSetup"
        !          52822: ENDSETUP="%%EndSetup"
        !          52823: TRAILER="%%Trailer"
        !          52824: 
        !          52825: SETUP=GrabitSetup
        !          52826: 
        !          52827: while [ -n "$1" ]; do
        !          52828:     case $1 in
        !          52829:        -d)  RECURSIVE=false;;
        !          52830: 
        !          52831:        -o)  shift; OMITNAMES="$OMITNAMES $1";;
        !          52832:        -o*) OMITNAMES="$OMITNAMES `echo $1 | sed s/-o//`";;
        !          52833: 
        !          52834:        -C)  shift; COPYFILE="$COPYFILE $1";;
        !          52835:        -C*) COPYFILE="$COPYFILE `echo $1 | sed s/-C//`";;
        !          52836: 
        !          52837:        -L)  shift; PROLOGUE=$1;;
        !          52838:        -L*) PROLOGUE=`echo $1 | sed s/-L//`;;
        !          52839: 
        !          52840:        --)  shift; break;;
        !          52841: 
        !          52842:        -*)  echo "$0: illegal option $1" >&2; exit 1;;
        !          52843: 
        !          52844:        *)   break;;
        !          52845:     esac
        !          52846:     shift
        !          52847: done
        !          52848: 
        !          52849: echo $NONCONFORMING
        !          52850: cat $PROLOGUE
        !          52851: echo $ENDPROLOG
        !          52852: echo $BEGINSETUP
        !          52853: cat ${COPYFILE:-/dev/null}
        !          52854: echo "GrabitDict begin"
        !          52855: echo "/recursive $RECURSIVE def"
        !          52856: 
        !          52857: echo mark
        !          52858: for i in $OMITNAMES; do
        !          52859:     case $i in
        !          52860:        /*) echo "$i";;
        !          52861:        ?*) echo "/$i";;
        !          52862:     esac
        !          52863: done
        !          52864: echo GrabitSetup
        !          52865: 
        !          52866: echo end
        !          52867: echo $ENDSETUP
        !          52868: 
        !          52869: for i do
        !          52870:     echo "$i Grabit"
        !          52871: done
        !          52872: 
        !          52873: 0707070014230733311006400057030057030000011776300522633074300003100000003520post.src/grabit/grabit.1.ds dQ /usr/lib/postscript
        !          52874: .TH GRABIT 1 "DWB 3.2"
        !          52875: .SH NAME
        !          52876: .B grabit
        !          52877: \- recover the text representation of PostScript objects
        !          52878: .SH SYNOPSIS
        !          52879: \*(mBgrabit\f1
        !          52880: .OP "" options []
        !          52881: .OP "" object
        !          52882: \&...
        !          52883: .SH DESCRIPTION
        !          52884: .B Grabit
        !          52885: builds a PostScript program that generates a text representation
        !          52886: of one or more PostScript
        !          52887: .IR object s.
        !          52888: The program is written on the standard output.
        !          52889: The following
        !          52890: .I options
        !          52891: are understood:
        !          52892: .TP 1.0i
        !          52893: .OP \-d
        !          52894: Do not automatically dump the contents of unrecognized dictionary
        !          52895: objects found in PostScript arrays.
        !          52896: .TP 1.0i
        !          52897: .OP \-C file
        !          52898: Copy
        !          52899: .I file
        !          52900: into the PostScript program.
        !          52901: .I file
        !          52902: must contain legitimate PostScript.
        !          52903: .TP 1.0i
        !          52904: .OP \-L file
        !          52905: Use
        !          52906: .I file
        !          52907: as the PostScript prologue.
        !          52908: .br
        !          52909: The default is
        !          52910: .MR \*(dQ/grabit.ps .
        !          52911: .PP
        !          52912: When the program built by
        !          52913: .B grabit
        !          52914: is sent to a PostScript printer the text representation of each
        !          52915: .I object
        !          52916: is normally returned to the host computer over the printer's serial port.
        !          52917: Use
        !          52918: .BR hardcopy (1)
        !          52919: if you do not have access to the port.
        !          52920: .PP
        !          52921: Each argument should be a PostScript
        !          52922: .I object
        !          52923: or commands that generate a PostScript
        !          52924: .IR object .
        !          52925: The program built by
        !          52926: .B grabit
        !          52927: produces results that are often close to legitimate PostScript that
        !          52928: can be successfully sent through an interpreter.
        !          52929: .SH EXAMPLES
        !          52930: .PP
        !          52931: If you can read and write 
        !          52932: .MW /dev/tty00
        !          52933: and there is a PostScript printer on
        !          52934: the other end, then
        !          52935: recover the readable portions of the
        !          52936: .MW userdict
        !          52937: and
        !          52938: .MW statusdict
        !          52939: dictionaries:
        !          52940: .EX
        !          52941: grabit userdict statusdict | postio -l/dev/tty00 -t
        !          52942: .EE
        !          52943: Otherwise get a printout of the dictionaries:
        !          52944: .EX
        !          52945: grabit userdict statusdict | hardcopy | lp ...
        !          52946: .EE
        !          52947: Arguments should be PostScript code that leaves an object on the stack.
        !          52948: Dump the contents of Adobe's
        !          52949: .MW internaldict
        !          52950: dictionary:
        !          52951: .EX
        !          52952: grabit "1183615869 internaldict" | postio -l/dev/tty00 -t
        !          52953: .EE
        !          52954: .SH FILES
        !          52955: .MW \*(dQ/grabit.ps
        !          52956: .SH SEE ALSO
        !          52957: .BR hardcopy (1),
        !          52958: .BR postio (1)
        !          52959: 0707070014230642640407550057030057030000021711540522633074500002200000000000post.src/hardcopy0707070014230642651006440057030057030000011711550522627503200003600000003137post.src/hardcopy/hardcopy.sh#
        !          52960: # Generate paper output from the data that a PostScript program normally
        !          52961: # sends back to a host computer using file output operators.
        !          52962: #
        !          52963: 
        !          52964: POSTLIB=/usr/lib/postscript
        !          52965: PROLOGUE=$POSTLIB/hardcopy.ps
        !          52966: 
        !          52967: OPTIONS=
        !          52968: MODE=portrait
        !          52969: 
        !          52970: NONCONFORMING="%!PS"
        !          52971: ENDPROLOG="%%EndProlog"
        !          52972: BEGINSETUP="%%BeginSetup"
        !          52973: ENDSETUP="%%EndSetup"
        !          52974: TRAILER="%%Trailer"
        !          52975: 
        !          52976: SETUP=HardcopySetup
        !          52977: DONE="(%stdout)(w) file -1 write"
        !          52978: 
        !          52979: while [ -n "$1" ]; do
        !          52980:     case $1 in
        !          52981:        -c)  shift; OPTIONS="$OPTIONS /#copies $1 store";;
        !          52982:        -c*) OPTIONS="$OPTIONS /#copies `echo $1 | sed s/-c//` store";;
        !          52983: 
        !          52984:        -f)  shift; OPTIONS="$OPTIONS /font /$1 def";;
        !          52985:        -f*) OPTIONS="$OPTIONS /font /`echo $1 | sed s/-f//` def";;
        !          52986: 
        !          52987:        -p)  shift; MODE=$1;;
        !          52988:        -p*) MODE=`echo $1 | sed s/-p//`;;
        !          52989: 
        !          52990:        -m)  shift; OPTIONS="$OPTIONS /magnification $1 def";;
        !          52991:        -m*) OPTIONS="$OPTIONS /magnification `echo $1 | sed s/-m//` def";;
        !          52992: 
        !          52993:        -s)  shift; OPTIONS="$OPTIONS /pointsize $1 def";;
        !          52994:        -s*) OPTIONS="$OPTIONS /pointsize `echo $1 | sed s/-s//` def";;
        !          52995: 
        !          52996:        -x)  shift; OPTIONS="$OPTIONS /xoffset $1 def";;
        !          52997:        -x*) OPTIONS="$OPTIONS /xoffset `echo $1 | sed s/-x//` def";;
        !          52998: 
        !          52999:        -y)  shift; OPTIONS="$OPTIONS /yoffset $1 def";;
        !          53000:        -y*) OPTIONS="$OPTIONS /yoffset `echo $1 | sed s/-y//` def";;
        !          53001: 
        !          53002:        -L)  shift; PROLOGUE=$1;;
        !          53003:        -L*) PROLOGUE=`echo $1 | sed s/-L//`;;
        !          53004: 
        !          53005:        --)  shift; break;;
        !          53006: 
        !          53007:        -*)  echo "$0: illegal option $1" >&2; exit 1;;
        !          53008: 
        !          53009:        *)   break;;
        !          53010:     esac
        !          53011:     shift
        !          53012: done
        !          53013: 
        !          53014: case "$MODE" in
        !          53015:     l*) OPTIONS="$OPTIONS /landscape true def";;
        !          53016:     *)  OPTIONS="$OPTIONS /landscape false def";;
        !          53017: esac
        !          53018: 
        !          53019: echo $NONCONFORMING
        !          53020: cat $PROLOGUE
        !          53021: echo $ENDPROLOG
        !          53022: echo $BEGINSETUP
        !          53023: echo $OPTIONS
        !          53024: echo $SETUP
        !          53025: echo $ENDSETUP
        !          53026: 
        !          53027: cat $*
        !          53028: 
        !          53029: echo $TRAILER
        !          53030: echo $DONE
        !          53031: 
        !          53032: 0707070014230642661006440057030057030000011711700522627503200003600000007544post.src/hardcopy/hardcopy.ps%
        !          53033: % Redefiniton of the PostScript file output operators so results go to paper.
        !          53034: % Complicated and slow, but the implementation doesn't place many demands on
        !          53035: % included PostScript. About all that's required is gentle treatment of the
        !          53036: % graphics state between write calls.
        !          53037: %
        !          53038: 
        !          53039: /#copies 1 store
        !          53040: /aspectratio 1 def
        !          53041: /font /Courier def
        !          53042: /formsperpage 1 def
        !          53043: /landscape false def
        !          53044: /magnification 1 def
        !          53045: /orientation 0 def
        !          53046: /pointsize 10 def
        !          53047: /rotation 1 def
        !          53048: /xoffset .1 def
        !          53049: /yoffset .1 def
        !          53050: 
        !          53051: /roundpage true def
        !          53052: /useclippath true def
        !          53053: /pagebbox [0 0 612 792] def
        !          53054: 
        !          53055: /inch {72 mul} def
        !          53056: /min {2 copy gt {exch} if pop} def
        !          53057: 
        !          53058: /HardcopySetup {
        !          53059:        landscape {/orientation 90 orientation add def} if
        !          53060:        font findfont 1 1.1 div scalefont setfont
        !          53061: 
        !          53062:        pagedimensions
        !          53063:        xcenter ycenter translate
        !          53064:        orientation rotation mul rotate
        !          53065:        width 2 div neg height 2 div translate
        !          53066:        xoffset inch yoffset inch neg translate
        !          53067:        pointsize 1.1 mul dup scale
        !          53068:        magnification dup aspectratio mul scale
        !          53069:        height width div 1 min dup scale
        !          53070:        0 -1 translate
        !          53071:        0 0 moveto
        !          53072: } def
        !          53073: 
        !          53074: /pagedimensions {
        !          53075:        useclippath {
        !          53076:                /pagebbox [clippath pathbbox newpath] def
        !          53077:                roundpage currentdict /roundpagebbox known and {roundpagebbox} if
        !          53078:        } if
        !          53079:        pagebbox aload pop
        !          53080:        4 -1 roll exch 4 1 roll 4 copy
        !          53081:        landscape {4 2 roll} if
        !          53082:        sub /width exch def
        !          53083:        sub /height exch def
        !          53084:        add 2 div /xcenter exch def
        !          53085:        add 2 div /ycenter exch def
        !          53086: } def
        !          53087: 
        !          53088: %
        !          53089: % Unbind the operators in an executable array or packedarray. Leaves the
        !          53090: % unbound array or the original object on the stack.
        !          53091: %
        !          53092: 
        !          53093: /Unbind {
        !          53094:        0 index xcheck
        !          53095:        1 index type /arraytype eq
        !          53096:        2 index type /packedarraytype eq or and {
        !          53097:                dup length array copy cvx
        !          53098:                dup 0 exch {
        !          53099:                        dup type /operatortype eq {
        !          53100:                                (                          ) cvs cvn cvx
        !          53101:                        } if
        !          53102: 
        !          53103:                        dup type /dicttype eq {
        !          53104:                                dup maxlength dict exch {
        !          53105:                                        Unbind
        !          53106:                                        3 copy put pop pop
        !          53107:                                } forall
        !          53108:                        } if
        !          53109: 
        !          53110:                        0 index xcheck
        !          53111:                        1 index type /arraytype eq
        !          53112:                        2 index type /packedarraytype eq or and {
        !          53113:                                Unbind
        !          53114:                        } if
        !          53115: 
        !          53116:                        3 copy put pop
        !          53117:                        1 add
        !          53118:                } forall
        !          53119:                pop
        !          53120:        } if
        !          53121: } def
        !          53122: 
        !          53123: %
        !          53124: % New write operator - don't bind the definition! Expands tabs and backspaces,
        !          53125: % wraps long lines, and starts a new page whenever necessary. The code that
        !          53126: % handles newlines assumes lines are separated by one vertical unit.
        !          53127: %
        !          53128: 
        !          53129: /write {
        !          53130:        true exch
        !          53131: 
        !          53132:       %%case '\b':
        !          53133:        dup 8#10 eq {
        !          53134:                ( ) stringwidth pop neg 0 rmoveto
        !          53135:                currentpoint pop 0 lt {
        !          53136:                        currentpoint exch pop 0 exch moveto
        !          53137:                } if
        !          53138:                exch pop false exch
        !          53139:        } if
        !          53140: 
        !          53141:       %%case '\t':
        !          53142:        dup 8#11 eq {
        !          53143:                currentpoint pop ( ) stringwidth pop div round cvi
        !          53144:                8 mod 8 exch sub {
        !          53145:                        2 index 8#40 write
        !          53146:                } repeat
        !          53147:                exch pop false exch
        !          53148:        } if
        !          53149: 
        !          53150:       %%case '\n':
        !          53151:        dup 8#12 eq {
        !          53152:                currentpoint 0 exch 1 sub moveto pop
        !          53153: 
        !          53154:                gsave clippath pathbbox pop pop exch pop grestore
        !          53155:                currentpoint exch pop 1 sub ge {
        !          53156:                        2 index 8#14 write
        !          53157:                } if
        !          53158:                exch pop false exch
        !          53159:        } if
        !          53160: 
        !          53161:       %%case '\f':
        !          53162:        dup 8#14 eq {
        !          53163:                gsave showpage grestore
        !          53164:                0 0 moveto
        !          53165:                exch pop false exch
        !          53166:        } if
        !          53167: 
        !          53168:       %%case '\r':
        !          53169:        dup 8#15 eq {
        !          53170:                currentpoint 0 exch moveto pop
        !          53171:                exch pop false exch
        !          53172:        } if
        !          53173: 
        !          53174:       %%case EOF:
        !          53175:        dup -1 eq {
        !          53176:                currentpoint 0 ne exch 0 ne or {
        !          53177:                        2 index 8#14 write
        !          53178:                } if
        !          53179:                exch pop false exch
        !          53180:        } if
        !          53181: 
        !          53182:       %%default:
        !          53183:        exch {
        !          53184:                dup
        !          53185:                gsave clippath pathbbox pop 3 1 roll pop pop grestore 
        !          53186:                ( ) stringwidth pop currentpoint pop add le {
        !          53187:                        2 index 8#12 write
        !          53188:                } if
        !          53189:                ( ) dup 0 4 -1 roll put show
        !          53190:        } if
        !          53191: 
        !          53192:        pop             % the character
        !          53193:        pop             % and file object
        !          53194: } def
        !          53195: 
        !          53196: %
        !          53197: % All the other file output operators call our redefined write operator.
        !          53198: %
        !          53199: 
        !          53200: /print {
        !          53201:        (%stdout) (w) file exch {1 index exch write} forall
        !          53202:        pop
        !          53203: } def
        !          53204: 
        !          53205: /writestring {
        !          53206:        {1 index exch write} forall
        !          53207:        pop
        !          53208: } def
        !          53209: 
        !          53210: /writehexstring {
        !          53211:        (0123456789ABCDEF) 3 1 roll {
        !          53212:                dup
        !          53213:                3 index exch -4 bitshift 16#F and get 2 index exch write
        !          53214:                2 index exch 16#F and get 1 index exch write
        !          53215:        } forall
        !          53216:        pop pop
        !          53217: } def
        !          53218: 
        !          53219: %
        !          53220: % Unbind and redefine the remaining file output procedures.
        !          53221: %
        !          53222: 
        !          53223: /= dup load Unbind def
        !          53224: /== dup load Unbind def
        !          53225: /stack dup load Unbind def
        !          53226: /pstack dup load Unbind def
        !          53227: 
        !          53228: 0707070014230642671006440057030057030000011711570522627503200003100000000602post.src/hardcopy/READMERedirect output of the print operator to paper. Particularly useful if
        !          53229: you're trying to extract information from a printer, but you don't have
        !          53230: access to the data the printer returns to the host.
        !          53231: 
        !          53232: For example,
        !          53233: 
        !          53234:        FontDirectory {pop ==} forall
        !          53235: 
        !          53236: names all the fonts registered in the FontDirectory dictionary. Simple,
        !          53237: but only if you can read the data returned to the host by the printer.
        !          53238: 
        !          53239: 0707070014230640011006400057030057030000011722500522633074500003500000005143post.src/hardcopy/hardcopy.1.ds dQ /usr/lib/postscript
        !          53240: .TH HARDCOPY 1 "DWB 3.2"
        !          53241: .SH NAME
        !          53242: .B hardcopy
        !          53243: \- redirects output from PostScript file operators to paper
        !          53244: .SH SYNOPSIS
        !          53245: \*(mBhardcopy\f1
        !          53246: .OP "" options []
        !          53247: .OP "" files []
        !          53248: .SH DESCRIPTION
        !          53249: .B hardcopy
        !          53250: surrounds
        !          53251: .I files
        !          53252: with PostScript that redirects file output to paper,
        !          53253: and writes the results on the standard output.
        !          53254: If no
        !          53255: .I files
        !          53256: are specified, or if
        !          53257: .OP \-
        !          53258: is one of the input
        !          53259: .IR files ,
        !          53260: the standard input is read.
        !          53261: The following
        !          53262: .I options
        !          53263: are understood:
        !          53264: .TP 0.75i
        !          53265: .OP \-c num
        !          53266: Print
        !          53267: .I num
        !          53268: copies of each page.
        !          53269: By default only one copy is printed.
        !          53270: .TP 0.75i
        !          53271: .OP \-f name
        !          53272: Print
        !          53273: .I files
        !          53274: using font
        !          53275: .IR name ,
        !          53276: which should be the name of a constant width font.
        !          53277: The default font is Courier.
        !          53278: .TP 0.75i
        !          53279: .OP \-m num
        !          53280: Magnify each page by the factor
        !          53281: .IR num .
        !          53282: Pages are scaled uniformly about the origin,
        !          53283: which is located near the upper left corner of
        !          53284: each page.
        !          53285: The default magnification is 1.0.
        !          53286: .TP 0.75i
        !          53287: .OP \-p mode
        !          53288: Print
        !          53289: .I files
        !          53290: in either \*(mBportrait\fP or \*(mBlandscape\fP
        !          53291: .IR mode .
        !          53292: Only the first character of
        !          53293: .I mode
        !          53294: is significant.
        !          53295: The default
        !          53296: .I mode
        !          53297: is \*(mBportrait\fP.
        !          53298: .TP 0.75i
        !          53299: .OP \-s num
        !          53300: Print
        !          53301: .I files
        !          53302: using point size
        !          53303: .IR num .
        !          53304: When printing in landscape mode
        !          53305: .I num
        !          53306: is scaled by a factor that depends on the
        !          53307: imaging area of the device.
        !          53308: The default size for portrait mode is 10.
        !          53309: .TP 0.75i
        !          53310: .OP \-x num
        !          53311: Translate the origin
        !          53312: .I num
        !          53313: inches along the positive x axis.
        !          53314: The default
        !          53315: coordinate system has the origin fixed near the
        !          53316: upper left corner of the page, with positive
        !          53317: x to the right and positive y down the page.
        !          53318: Positive
        !          53319: .I num
        !          53320: moves everything right.
        !          53321: The default offset is 0.25 inches.
        !          53322: .TP 0.75i
        !          53323: .OP \-y num
        !          53324: Translate the origin
        !          53325: .I num
        !          53326: inches along the positive y axis.
        !          53327: Positive
        !          53328: .I num
        !          53329: moves text down the page.
        !          53330: The default offset is 0.25 inches.
        !          53331: .TP 0.75i
        !          53332: .OP \-L file
        !          53333: Use
        !          53334: .I file
        !          53335: as the PostScript prologue.
        !          53336: .br
        !          53337: The default is
        !          53338: .MR \*(dQ/hardcopy.ps .
        !          53339: .PP
        !          53340: .B hardcopy
        !          53341: generates paper output from data that a PostScript program
        !          53342: normally sends back to a host computer.
        !          53343: It is particularly useful for recovering data from a printer
        !          53344: that does not allow access to its serial port.
        !          53345: .SH EXAMPLES
        !          53346: For a list of ROM based fonts type:
        !          53347: .EX
        !          53348: echo 'FontDirectory {pop ==} forall' | hardcopy | lp \(el
        !          53349: .EE
        !          53350: To recover the version number of the PostScript interpreter:
        !          53351: .EX
        !          53352: echo 'version ==' | hardcopy -pland | lp \(el
        !          53353: .EE
        !          53354: To build and print a width table for font
        !          53355: .MW R
        !          53356: type:
        !          53357: .EX
        !          53358: trofftable -TLatin1 R | hardcopy | lp \(el
        !          53359: .EE
        !          53360: .SH WARNINGS
        !          53361: Results are unpredictable if the input
        !          53362: .I files
        !          53363: make changes to the graphics state.
        !          53364: .SH FILES
        !          53365: .MW \*(dQ/hardcopy.ps
        !          53366: .SH SEE ALSO
        !          53367: .BR buildtables (1),
        !          53368: .BR postio (1),
        !          53369: .BR trofftable (1)
        !          53370: 0707070014230640001006400057030057030000011713560522633074400003600000003016post.src/hardcopy/hardcopy.mkMAKE=/bin/make
        !          53371: MAKEFILE=hardcopy.mk
        !          53372: 
        !          53373: OWNER=bin
        !          53374: GROUP=bin
        !          53375: 
        !          53376: MAN1DIR=/tmp
        !          53377: MAN5DIR=/usr/man/p_man/man5
        !          53378: POSTLIB=/usr/lib/postscript
        !          53379: POSTBIN=/usr/bin/postscript
        !          53380: 
        !          53381: all : hardcopy
        !          53382: 
        !          53383: install : all
        !          53384:        @if [ ! -d "$(POSTBIN)" ]; then \
        !          53385:            mkdir $(POSTBIN); \
        !          53386:            chmod 755 $(POSTBIN); \
        !          53387:            chgrp $(GROUP) $(POSTBIN); \
        !          53388:            chown $(OWNER) $(POSTBIN); \
        !          53389:        fi
        !          53390:        @if [ ! -d "$(POSTLIB)" ]; then \
        !          53391:            mkdir $(POSTLIB); \
        !          53392:            chmod 755 $(POSTLIB); \
        !          53393:            chgrp $(GROUP) $(POSTLIB); \
        !          53394:            chown $(OWNER) $(POSTLIB); \
        !          53395:        fi
        !          53396:        cp hardcopy $(POSTBIN)/hardcopy
        !          53397:        @chmod 755 $(POSTBIN)/hardcopy
        !          53398:        @chgrp $(GROUP) $(POSTBIN)/hardcopy
        !          53399:        @chown $(OWNER) $(POSTBIN)/hardcopy
        !          53400:        cp hardcopy.ps $(POSTLIB)/hardcopy.ps
        !          53401:        @chmod 644 $(POSTLIB)/hardcopy.ps
        !          53402:        @chgrp $(GROUP) $(POSTLIB)/hardcopy.ps
        !          53403:        @chown $(OWNER) $(POSTLIB)/hardcopy.ps
        !          53404:        cp hardcopy.1 $(MAN1DIR)/hardcopy.1
        !          53405:        @chmod 644 $(MAN1DIR)/hardcopy.1
        !          53406:        @chgrp $(GROUP) $(MAN1DIR)/hardcopy.1
        !          53407:        @chown $(OWNER) $(MAN1DIR)/hardcopy.1
        !          53408: 
        !          53409: 
        !          53410: clean :
        !          53411: 
        !          53412: clobber : clean
        !          53413:        rm -f hardcopy
        !          53414: 
        !          53415: hardcopy : hardcopy.sh
        !          53416:        sed "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" hardcopy.sh >hardcopy
        !          53417:        @chmod 755 hardcopy
        !          53418: 
        !          53419: changes :
        !          53420:        @trap "" 1 2 3 15; \
        !          53421:        sed \
        !          53422:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          53423:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          53424:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
        !          53425:            -e "s'^MAN5DIR=.*'MAN5DIR=$(MAN5DIR)'" \
        !          53426:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
        !          53427:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
        !          53428:        $(MAKEFILE) >XXX.mk; \
        !          53429:        mv XXX.mk $(MAKEFILE); \
        !          53430:        sed \
        !          53431:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
        !          53432:        hardcopy.1 >XXX.1; \
        !          53433:        mv XXX.1 hardcopy.1
        !          53434: 
        !          53435: 
        !          53436: 0707070014230735470407550057030057030000020011170522633100500002000000000000post.src/mcolor0707070014230735501006440057030057030000010012140522627503200003100000004007post.src/mcolor/color.sr.ds Dc black
        !          53437: .ds Cc \*(Dc
        !          53438: .de CL \" Color selection macro
        !          53439: .      \"
        !          53440: .      \"      $1=color (e.g. .CL red) or
        !          53441: .      \"      $1=textcolor on backgroundcolor (e.g. .CL "red on blue")
        !          53442: .      \"      $1=red green blue rgb (e.g. .CL ".2 .3 .4 rgb") or
        !          53443: .      \"      $1=hue saturation brightness hsb (e.g. .CL ".5 .6 .7 hsb")
        !          53444: .      \"      $2=text
        !          53445: .      \"
        !          53446: .      \" If no arguments are given the default color (usually black) will be
        !          53447: .      \" restored. If $2 is omitted the color selected by $1 remains in effect
        !          53448: .      \" until another color is selected. If two arguments are given $2 will be
        !          53449: .      \" printed in color $1 and then the default color will be restored.
        !          53450: .      \"
        !          53451: .      \" The color of the text and the background can be selected by setting $1
        !          53452: .      \" to "textcolor on backgroundcolor" where textcolor and backgroundcolor
        !          53453: .      \" can be any of the known colors. For example use .CL "white on black"
        !          53454: .      \" for reverse video printing. Changing color in a word can be accomplished
        !          53455: .      \" by preceeding the characters with a \X'SetColor:val' command, where val
        !          53456: .      \" is the color you wish to use. Named colors are case independent.
        !          53457: .      \"
        !          53458: .      \" Implementation details are device dependent and are handled in the
        !          53459: .      \" appropriate post-processor. Requesting a color that's not available
        !          53460: .      \" (eg. not defined in /usr/lib/postscript/color.ps) results in the use
        !          53461: .      \" of default colors - black or white on black for reverse video mode.
        !          53462: .      \"
        !          53463: .      \" All colors may not be supported on every output device, and the direct
        !          53464: .      \" specification of a color via an explicit rgb or hsb argument may also
        !          53465: .      \" be device dependent. In any case, to be safe on PostScript devices, all
        !          53466: .      \" numeric paramenters in the direct rgb or hsb specifications should lie
        !          53467: .      \" between 0 and 1 (inclusive). The names of the currently available colors
        !          53468: .      \" on PostScript printers are listed in file /usr/lib/postscript/color.ps.
        !          53469: .      \"
        !          53470: .mk Ov
        !          53471: .if \\n(.$=0 .ds Cc \\*(Dc
        !          53472: .if \\n(.$=1 .ds Cc \\$1
        !          53473: .if \\n(.$<2 \\X'SetColor:\\*(Cc'
        !          53474: .if \\n(.$=2 \\X'SetColor:\\$1'\\c
        !          53475: .if \\n(.$=2 'sp |\\n(Ovu
        !          53476: .if \\n(.$=2 \\$2
        !          53477: .if \\n(.$=2 .mk Ov
        !          53478: .if \\n(.$=2 \\X'SetColor:\\*(Cc'\\c
        !          53479: 'sp |\\n(Ovu
        !          53480: ..
        !          53481: 0707070014230733361006400057030057030000010014750522633100500003100000002066post.src/mcolor/mcolor.5.ds dP /usr/lib/postscript
        !          53482: .ds dT /usr/lib/tmac
        !          53483: .TH MCOLOR 5
        !          53484: .SH NAME
        !          53485: .B mcolor
        !          53486: \- color and reverse video macro
        !          53487: .SH SYNOPSIS
        !          53488: \*(mBtroff \-mcolor\f1
        !          53489: .OP "" options []
        !          53490: .OP "" files []
        !          53491: .SH DESCRIPTION
        !          53492: .B mcolor
        !          53493: is a macro package for color selection and reverse video printing
        !          53494: on PostScript printers.
        !          53495: The package is compatible with most existing macro packages
        !          53496: and includes the following macro:
        !          53497: .TP 1.25i
        !          53498: .MI .CL "\0color\0text"
        !          53499: Prints
        !          53500: .I text
        !          53501: in
        !          53502: .IR color .
        !          53503: No arguments restores the default color (black).
        !          53504: If
        !          53505: .I text
        !          53506: is omitted the selected
        !          53507: .I color
        !          53508: remains in effect until another
        !          53509: .I color
        !          53510: is selected.
        !          53511: If two arguments are given the
        !          53512: .I text
        !          53513: is printed in
        !          53514: .I color
        !          53515: and then the default color is restored.
        !          53516: .PP
        !          53517: Both the text and background color can be selected.
        !          53518: A
        !          53519: .I color
        !          53520: argument of
        !          53521: .RI `` color1
        !          53522: .MW on
        !          53523: .IR color2 ''
        !          53524: prints text in
        !          53525: .I color1
        !          53526: on a background in
        !          53527: .I color2 .
        !          53528: .PP
        !          53529: Named colors must be listed in the
        !          53530: ``colordict''
        !          53531: dictionary in file
        !          53532: .MR \*(dP/color.ps .
        !          53533: .SH FILES
        !          53534: .MW \*(dT/tmac.color
        !          53535: .br
        !          53536: .MW \*(dP/color.ps
        !          53537: .SH SEE ALSO
        !          53538: .BR troff (1),
        !          53539: .BR dpost (1),
        !          53540: .BR mps (5)
        !          53541: 0707070014230732631006400057030057030000010014600522633100500003200000002056post.src/mcolor/mcolor.mk#
        !          53542: # Not installing the man page.
        !          53543: #
        !          53544: 
        !          53545: MAKE=/bin/make
        !          53546: MAKEFILE=mcolor.mk
        !          53547: 
        !          53548: SYSTEM=V9
        !          53549: VERSION=3.3.2
        !          53550: 
        !          53551: OWNER=bin
        !          53552: GROUP=bin
        !          53553: 
        !          53554: POSTLIB=/usr/lib/postscript
        !          53555: TMACDIR=/usr/lib/tmac
        !          53556: 
        !          53557: all :
        !          53558:        @cp color.sr tmac.color
        !          53559: 
        !          53560: install : all
        !          53561:        @if [ ! -d $(TMACDIR) ]; then \
        !          53562:            mkdir $(TMACDIR); \
        !          53563:            chmod 755 $(TMACDIR); \
        !          53564:            chgrp $(GROUP) $(TMACDIR); \
        !          53565:            chown $(OWNER) $(TMACDIR); \
        !          53566:        fi
        !          53567:        cp tmac.color $(TMACDIR)/tmac.color
        !          53568:        @chmod 644 $(TMACDIR)/tmac.color
        !          53569:        @chgrp $(GROUP) $(TMACDIR)/tmac.color
        !          53570:        @chown $(OWNER) $(TMACDIR)/tmac.color
        !          53571: 
        !          53572: clean :
        !          53573:        rm -f tmac.color
        !          53574: 
        !          53575: clobber : clean
        !          53576: 
        !          53577: changes :
        !          53578:        @trap "" 1 2 3 15; \
        !          53579:        sed \
        !          53580:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
        !          53581:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
        !          53582:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          53583:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          53584:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
        !          53585:            -e "s'^TMACDIR=.*'TMACDIR=$(TMACDIR)'" \
        !          53586:        $(MAKEFILE) >X$(MAKEFILE); \
        !          53587:        mv X$(MAKEFILE) $(MAKEFILE); \
        !          53588:        sed \
        !          53589:            -e "s'^.ds dP.*'.ds dP $(POSTLIB)'" \
        !          53590:            -e "s'^.ds dT.*'.ds dT $(TMACDIR)'" \
        !          53591:        mcolor.5 >Xmcolor.5; \
        !          53592:        mv Xmcolor.5 mcolor.5
        !          53593: 
        !          53594: 0707070014230642720407550057030057030000021711770522633074700002300000000000post.src/mpictures0707070014230642731006440057030057030000011712120522627503300003700000010340post.src/mpictures/pictures.sr.de PI       \" Picture Include
        !          53595: .      \" $1=file(page) $2=height,width,yoff,xoff $3=flags
        !          53596: .      \" Height, width, xoff, and yoff are for the frame, flags is for the
        !          53597: .      \" picture. Default dimensions are inches.
        !          53598: \\X'PI:\\n(.o:\\n(.i:\\n(.l:\\n(.t:\\$1:\\$2:\\$3:'\\c
        !          53599: ..
        !          53600: .nr FT 0
        !          53601: .de BP \" Begin a Picture
        !          53602: .      \"
        !          53603: .      \" $1=file(page) $2=height $3=width $4=position $5=offset $6=flags $7=label
        !          53604: .      \"
        !          53605: .      \" Height, width, position, and offset are for the frame, flags is for
        !          53606: .      \" the picture. The postion flag should be l, c, r, or "". Omitting the
        !          53607: .      \" position argument is also allowed for compatibility with the original
        !          53608: .      \" version of the macro. In that case offset is taken relative to your
        !          53609: .      \" left margin.
        !          53610: .if \\n(FT>1 .EP
        !          53611: .      \" Need these when we switch environments.
        !          53612: .nr Ov \\n(.v
        !          53613: .nr Oi \\n(.i
        !          53614: .nr Ol \\n(.l
        !          53615: .      \" Remember the arguments - sometimes as both a string and number register.
        !          53616: .nr $2 \\$2i
        !          53617: .nr $3 \\$3i
        !          53618: .nr $4 \\$4i
        !          53619: .ds $4 \\$4
        !          53620: .nr $5 \\$5i
        !          53621: .ds $5 \\$6
        !          53622: .ds $6 \\$7
        !          53623: .      \" Accept a few unadvertised position flags.
        !          53624: .if '\\*($4'L' .ds $4 l
        !          53625: .if '\\*($4'C' .ds $4 c
        !          53626: .if '\\*($4'R' .ds $4 r
        !          53627: .      \" A null with more than three arguments means l.
        !          53628: .if \\n(.$>3 .if '\\*($4'' .ds $4 l
        !          53629: .      \" Default frame dimensions if missing, zero, or null.
        !          53630: .if !\\n($2>0 .nr $2 3.0i
        !          53631: .if !\\n($3>0 .nr $3 \\n(.lu-\\n(.iu-\\n($4u
        !          53632: .if !\\n($3>0 .nr $3 \\n($2u
        !          53633: .      \" Figure out the offset that will be used the rest of the way.
        !          53634: .if '\\*($4'l' .nr $4 \\n($5u
        !          53635: .if '\\*($4'c' .nr $4 (\\n(.lu-\\n(.iu-\\n($3u)/2u+\\n($5u
        !          53636: .if '\\*($4'r' .nr $4 \\n(.lu-\\n(.iu-\\n($3u+\\n($5u
        !          53637: .      \" If we haven't recognized the position flag assume it wasn't given and
        !          53638: .      \" treat argument four as an offset from the left.
        !          53639: .if !'\\*($4'l' .if !'\\*($4'c' .if !'\\*($4'r' .ds $5 \\$5
        !          53640: .if !'\\*($4'l' .if !'\\*($4'c' .if !'\\*($4'r' .ds $6 \\$6
        !          53641: .      \" Set increments for line length and indent.
        !          53642: .nr Ii \\n($3u+\\n($4u+.1i
        !          53643: .nr Il \\n(.lu-\\n(.iu-\\n($4u+.1i
        !          53644: .      \" Set the frame type to one of:
        !          53645: .      \"      0 - frame is as wide as a line of text - skip over it.
        !          53646: .      \"      1 - fits in left or right margins
        !          53647: .      \"      2 - fill with text on the right
        !          53648: .      \"      3 - on the left
        !          53649: .      \"      4 - or on both sides of the frame
        !          53650: .      \"      5 - only set in EP if FT was 4 and now filling on the right.
        !          53651: .      \" Assume the frame is as wide as a line of text, then check dimensions
        !          53652: .      \" to see what's really true. The order of these tests is important!
        !          53653: .nr FT 0
        !          53654: .if \\n($4u>1.0i .nr FT 3
        !          53655: .if \\n($4u+\\n(.iu>=\\n(.lu .nr FT 1
        !          53656: .if \\n($3u+\\n($4u+\\n(.iu+1.0i<\\n(.lu .nr FT 2
        !          53657: .if \\n($3u+\\n($4u<=0 .nr FT 1
        !          53658: .if \\n(FT=2 .if \\n($4u>1.0i .nr FT 4
        !          53659: .      \" Ask for some vertical space - labeled pictures need a little extra,
        !          53660: .      \" margin pictures a little less.
        !          53661: .if \\n(FT=1 .if '\\*($6'' .ne \\n($2u
        !          53662: .if \\n(FT=1 .if !'\\*($6'' .ne \\n($2u+2v
        !          53663: .if !\\n(FT=1 .if '\\*($6'' .ne \\n($2u+3v
        !          53664: .if !\\n(FT=1 .if !'\\*($6'' .ne \\n($2u+5v
        !          53665: .      \" Save our place, draw the picture, label it, and return. Need precise
        !          53666: .      \" control of when \X'...' is put out - thus the new environment.
        !          53667: .mk Oh
        !          53668: .ev 1
        !          53669: .in \\n(Oiu
        !          53670: .ll \\n(Olu
        !          53671: .vs \\n(Ovu
        !          53672: .if \\n(FT=1 .sp -1v
        !          53673: .if \\n(FT=1 .PI \\$1 \\n($2u,\\n($3u,\\n(.vu,\\n($4u t\\*($5
        !          53674: .if !\\n(FT=1 .PI \\$1 \\n($2u,\\n($3u,\\n(.vu,\\n($4u \\*($5
        !          53675: .in
        !          53676: .ll
        !          53677: .vs
        !          53678: .ev
        !          53679: .lt \\n($3u
        !          53680: .tl \(ts\(ts\\h'\\n($4u+\\n(.iu'\\v'\\n($2u+1.5v'\\*($6\\v'-\\n($2u-1.5v'\\h'-\\n($4u-\\n(.iu'\(ts\(ts
        !          53681: .lt
        !          53682: 'sp |\\n(Ohu
        !          53683: .      \" Figure out what to do with the text that follows.
        !          53684: .if !'\\*($6'' .nr $2 +2v
        !          53685: .if \\n(FT=0 .sp \\n($2u+2v
        !          53686: .if \\n(FT=1 .nr FT 0
        !          53687: .if \\n(FT=2 'in +\\n(Iiu
        !          53688: .if \\n(FT>2 .ll -\\n(Ilu
        !          53689: .if \\n(FT>1 .di BB
        !          53690: .if \\n(FT>1 .dt \\n($2u+2v+1u EP
        !          53691: .      \" Clean things up.
        !          53692: .rr $2
        !          53693: .rr $3
        !          53694: .rr $4
        !          53695: .rm $4
        !          53696: .rr $5
        !          53697: .rm $5
        !          53698: .rm $6
        !          53699: .rr Oh
        !          53700: .rr Oi
        !          53701: .rr Ol
        !          53702: .rr Ov
        !          53703: .if \\n(FT=0 .EP
        !          53704: ..
        !          53705: .de EP \" End the Picture - Normally called from a trap, although it can be used
        !          53706: .      \" on its own to mark the end of a picture.
        !          53707: .nr Ot 0
        !          53708: .if \\n(.tu<\\n(.pu .nr Ot \\n(.tu
        !          53709: .if \\n(Ot>0 .if \\n(FT=4 .nr FT 3
        !          53710: .if \\n(FT<2 .nr Ot 0
        !          53711: .if \\n(Ot>0 .br
        !          53712: .if \\n(FT=5 .nr Ot 0
        !          53713: .if \\n(FT>1 \{\
        !          53714: .      ev 1
        !          53715: .      eo
        !          53716: .      br
        !          53717: .      di
        !          53718: .      nf
        !          53719: .      in 0
        !          53720: .      BB
        !          53721: .      in
        !          53722: .      fi
        !          53723: .      ec
        !          53724: .      ev
        !          53725: .      rm BB\}
        !          53726: .if \\n(FT=5 \{\
        !          53727: .      nr FT 2
        !          53728: '      sp |\\n(Nhu+1v\}
        !          53729: .if \\n(FT=4 \{\
        !          53730: .      mk Nh
        !          53731: .      nr Nh -1v
        !          53732: .      nr FT 5
        !          53733: '      sp -\\n(dnu+1v
        !          53734: '      in +\\n(Iiu
        !          53735: .      ll +\\n(Ilu
        !          53736: .      di BB
        !          53737: .      dt \\n(dnu-2v+1u EP\}
        !          53738: .if \\n(FT=2 'in -\\n(Iiu
        !          53739: .if \\n(FT=3 .ll +\\n(Ilu
        !          53740: .if \\n(FT<4 .nr FT 0
        !          53741: .if \\n(Ot>0 .sp \\n(Otu
        !          53742: .rr Ot
        !          53743: .if \\n(FT=0 \{\
        !          53744: .      rr Nh
        !          53745: .      rr Ii
        !          53746: .      rr Il\}
        !          53747: ..
        !          53748: 0707070014230637741006400057030057030000011563000522633074700003700000010664post.src/mpictures/mpictures.5.ds dT /usr/lib/tmac
        !          53749: .TH MPICTURES 5
        !          53750: .SH NAME
        !          53751: .B mpictures
        !          53752: \- picture inclusion macros
        !          53753: .SH SYNOPSIS
        !          53754: \*(mBtroff \-mpictures\f1
        !          53755: .OP "" options []
        !          53756: .OP "" files []
        !          53757: .SH DESCRIPTION
        !          53758: .B mpictures
        !          53759: is a macro package used to include PostScript pictures in
        !          53760: .B troff
        !          53761: documents.
        !          53762: The package is compatible with many existing
        !          53763: .B troff
        !          53764: macro packages and includes the following three macros:
        !          53765: .TP
        !          53766: .MI .BP "\0file\0height\0width\0position\0offset\0flags\0label"
        !          53767: .sp 0.3v
        !          53768: Places the picture
        !          53769: .I file
        !          53770: in the space set aside by
        !          53771: .IR height ,
        !          53772: .IR width ,
        !          53773: .IR position ,
        !          53774: and
        !          53775: .IR offset ,
        !          53776: which together define and position the picture frame.
        !          53777: The macro arguments are:
        !          53778: .in +0.75i
        !          53779: .de XX
        !          53780: .sp 3p
        !          53781: .ti -0.75i
        !          53782: \f2\\$1\fP
        !          53783: .sp -1v
        !          53784: ..
        !          53785: .XX file
        !          53786: Pathname of a PostScript picture
        !          53787: .IR file .
        !          53788: Appending
        !          53789: .MI ( n )
        !          53790: to
        !          53791: .I file
        !          53792: selects page number
        !          53793: .I n
        !          53794: from a multiple-page picture
        !          53795: .IR file .
        !          53796: By default the first page in
        !          53797: .I file
        !          53798: is selected.
        !          53799: .XX height
        !          53800: Vertical extent of the frame.
        !          53801: The default is
        !          53802: .MR 3i .
        !          53803: .XX width
        !          53804: Horizontal extent of the frame.
        !          53805: The default is the current length of a line of text.
        !          53806: .XX position
        !          53807: One of
        !          53808: .MR l ,
        !          53809: .MR c ,
        !          53810: or
        !          53811: .MW r
        !          53812: used to align the left, center, or
        !          53813: right of the frame with the corresponding position
        !          53814: on the current line of text.
        !          53815: The default is
        !          53816: .MR l .
        !          53817: .XX offset
        !          53818: Moves the frame right (positive) or left (negative)
        !          53819: from the selected
        !          53820: .IR position .
        !          53821: The default is
        !          53822: .MR 0i .
        !          53823: .XX flags
        !          53824: A string built from one or more of the following:
        !          53825: .in +0.5i
        !          53826: .sp 3p
        !          53827: .de YY
        !          53828: .br
        !          53829: .ti -0.5i
        !          53830: \*(mW\\$1\f1
        !          53831: .sp -1v
        !          53832: ..
        !          53833: .YY a[\f2d\*(mW]
        !          53834: Rotate the picture clockwise
        !          53835: .I d
        !          53836: degrees.
        !          53837: If
        !          53838: .I d
        !          53839: is omitted, 90 degrees is added to the
        !          53840: current angle, which starts at zero.
        !          53841: .YY o
        !          53842: Outline the picture with a box.
        !          53843: .YY s
        !          53844: Freely scale both picture dimensions.
        !          53845: .YY w
        !          53846: White out (erase) the area to be occupied by the picture.
        !          53847: .YY l
        !          53848: Attach the picture to the left side of the frame.
        !          53849: .YY r
        !          53850: Attach the picture to the right side of the frame.
        !          53851: .YY t
        !          53852: Attach the picture to the top of the frame.
        !          53853: .YY b
        !          53854: Attach the picture to the bottom of the frame.
        !          53855: .in -0.5i
        !          53856: .XX label
        !          53857: Place
        !          53858: .I label
        !          53859: 1.5 vertical lines below the frame.
        !          53860: .in -0.75i
        !          53861: .sp 0.3v
        !          53862: If there is room
        !          53863: .MW .BP
        !          53864: fills text around the frame.
        !          53865: Everything destined for either side of the frame first
        !          53866: goes into a diversion and only reappears when the accumulated
        !          53867: text sweeps past the trap set by
        !          53868: .MW .BP
        !          53869: or when the diversion is explicitly closed
        !          53870: by the
        !          53871: .MW .EP
        !          53872: macro (see below).
        !          53873: .sp 0.5v
        !          53874: Null arguments, represented by
        !          53875: .MR \&"" ,
        !          53876: are replaced by the defaults as noted above.
        !          53877: .TP
        !          53878: .MI .PI "\0file\0height,\|width,\|yoffset,\|xoffset\0flags"
        !          53879: .sp 0.3v
        !          53880: A low level macro used by
        !          53881: .MR .BP .
        !          53882: It can help if you are trying to do things that
        !          53883: .MW .BP
        !          53884: will not allow or does not do well.
        !          53885: The two arguments not already described are:
        !          53886: .in +0.75i
        !          53887: .XX xoffset
        !          53888: Moves the frame right (positive) or left (negative) from the
        !          53889: left margin.
        !          53890: The default is
        !          53891: .MR 0i .
        !          53892: .XX yoffset
        !          53893: Moves the frame down (positive) or up (negative) from
        !          53894: the current baseline.
        !          53895: The default is
        !          53896: .MR 0i .
        !          53897: .in -0.75i
        !          53898: .sp 0.3v
        !          53899: The second argument is a comma separated list of four numbers,
        !          53900: and although defaults are available, supplying values for all
        !          53901: four numbers is recommended.
        !          53902: .br
        !          53903: .ne 2v
        !          53904: .TP
        !          53905: .MW .EP
        !          53906: Ends a picture started by
        !          53907: .MW .BP .
        !          53908: An explicit
        !          53909: .MW .EP
        !          53910: call is not often required.
        !          53911: Instead
        !          53912: .MW .EP
        !          53913: is usually called by
        !          53914: .MW .BP
        !          53915: at the bottom of each frame.
        !          53916: .PP
        !          53917: Much of what is done depends on file structuring comments
        !          53918: commonly found in PostScript files.
        !          53919: If the comments needed to isolate a particular page are missing
        !          53920: the entire
        !          53921: .I file
        !          53922: is included.
        !          53923: If a
        !          53924: .MW %%BoundingBox
        !          53925: comment is missing the picture is
        !          53926: assumed to fill an 8.5\(mu11-inch page.
        !          53927: A picture
        !          53928: .I file
        !          53929: that cannot be read when the
        !          53930: .B troff
        !          53931: postprocessor runs is replaced by white space.
        !          53932: Nothing done in
        !          53933: .MW .BP
        !          53934: or
        !          53935: .MW .PI
        !          53936: guarantees the picture has not been placed off the page.
        !          53937: All dimensions should be explicitly given in inches.
        !          53938: .SH BUGS
        !          53939: A picture and associated text can silently disappear if
        !          53940: the diversion trap set by
        !          53941: .MW .BP
        !          53942: is not reached.
        !          53943: Including a call to
        !          53944: .MW .EP
        !          53945: at the end of the paper
        !          53946: should recover whatever appears to be missing.
        !          53947: .PP
        !          53948: Macros in other packages occasionally break the adjustments
        !          53949: made to the line length and indent when text is being placed
        !          53950: around a picture.
        !          53951: .PP
        !          53952: A missing or improper
        !          53953: .MW %%BoundingBox
        !          53954: comment often
        !          53955: explains why a picture does not properly fill the space
        !          53956: that has been set aside.
        !          53957: .SH FILES
        !          53958: .MW \*(dT/tmac.pictures
        !          53959: .SH SEE ALSO
        !          53960: .BR troff (1),
        !          53961: .BR dpost (1),
        !          53962: .BR picpack (1),
        !          53963: .BR mps (5)
        !          53964: .SH REFERENCE
        !          53965: R. L. Drechsler and A. R. Wilks,
        !          53966: .ul
        !          53967: PostScript Pictures in Troff Documents
        !          53968: 0707070014230637731006400057030057030000011577770522633074600004000000001740post.src/mpictures/mpictures.mk#
        !          53969: # Not installing the man page.
        !          53970: #
        !          53971: 
        !          53972: MAKE=/bin/make
        !          53973: MAKEFILE=mpictures.mk
        !          53974: 
        !          53975: SYSTEM=V9
        !          53976: VERSION=3.3.2
        !          53977: 
        !          53978: OWNER=bin
        !          53979: GROUP=bin
        !          53980: 
        !          53981: TMACDIR=/usr/lib/tmac
        !          53982: 
        !          53983: all :
        !          53984:        @cp pictures.sr tmac.pictures
        !          53985: 
        !          53986: install : all
        !          53987:        @if [ ! -d $(TMACDIR) ]; then \
        !          53988:            mkdir $(TMACDIR); \
        !          53989:            chmod 755 $(TMACDIR); \
        !          53990:            chgrp $(GROUP) $(TMACDIR); \
        !          53991:            chown $(OWNER) $(TMACDIR); \
        !          53992:        fi
        !          53993:        cp tmac.pictures $(TMACDIR)/tmac.pictures
        !          53994:        @chmod 644 $(TMACDIR)/tmac.pictures
        !          53995:        @chgrp $(GROUP) $(TMACDIR)/tmac.pictures
        !          53996:        @chown $(OWNER) $(TMACDIR)/tmac.pictures
        !          53997: 
        !          53998: clean :
        !          53999:        rm -f tmac.pictures
        !          54000: 
        !          54001: clobber : clean
        !          54002: 
        !          54003: changes :
        !          54004:        @trap "" 1 2 3 15; \
        !          54005:        sed \
        !          54006:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
        !          54007:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
        !          54008:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          54009:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          54010:            -e "s'^TMACDIR=.*'TMACDIR=$(TMACDIR)'" \
        !          54011:        $(MAKEFILE) >X$(MAKEFILE); \
        !          54012:        mv X$(MAKEFILE) $(MAKEFILE); \
        !          54013:        sed \
        !          54014:            -e "s'^.ds dT.*'.ds dT $(TMACDIR)'" \
        !          54015:        mpictures.5 >Xmpictures.5; \
        !          54016:        mv Xmpictures.5 mpictures.5
        !          54017: 
        !          54018: 0707070014230735530407550057030057030000020011570522627503300001600000000000post.src/misc0707070014230735541004440057030057030000010014640522627503300002700000003144post.src/misc/lp.model
        !          54019: #       qmsps800        mac 10/22/86
        !          54020: #
        !          54021: LPDEST=`basename $0`
        !          54022: QMS_FILE="$1"
        !          54023: DATE="`date +%D`"
        !          54024: TIME="`date +%T`"
        !          54025: owner="$2"
        !          54026: site=`uname`
        !          54027: port="`/usr/bin/lpstat -v$LPDEST | sed -e 's/.*: //'`"
        !          54028: filter_cmd="/usr/lbin/postscript/postio"
        !          54029: filter="$filter_cmd -l $port"
        !          54030: landscape="" formsperpage=""
        !          54031: path=/usr/lbin/postscript
        !          54032: printer=postprint
        !          54033: bannerflag=ON
        !          54034: prev="| $path/postreverse"
        !          54035: 
        !          54036: for i in $5
        !          54037: do
        !          54038:         case "$i" in
        !          54039:                 L2)
        !          54040:                         formsperpage="-n2"
        !          54041:                         ;;
        !          54042:                 land)
        !          54043:                         landscape="-pland"
        !          54044:                         ;;
        !          54045:                 dpost|postprint|posttek|postbgi|postdmd|postio)
        !          54046:                         printer="$i"
        !          54047:                         ;;
        !          54048: 
        !          54049:                 postreverse)
        !          54050:                         prev=""
        !          54051:                         ;;
        !          54052:                 nobanner)
        !          54053:                         bannerflag=OFF
        !          54054:                         ;;
        !          54055:                 F*)
        !          54056:                         QMS_FILE="`expr $i : 'F\(.*\)'`"
        !          54057:                         ;;
        !          54058:         esac
        !          54059: done
        !          54060: 
        !          54061: if [ -n "$filter_cmd" -a ! -x "$filter_cmd" ]
        !          54062: then
        !          54063:         disable -r"can't execute filter: $filter_cmd" $LPDEST
        !          54064:         exit 1
        !          54065: fi
        !          54066: 
        !          54067: shift; shift; shift; shift; shift
        !          54068: files="$*"
        !          54069: cp /usr/spool/lp/model/banner.ps /tmp/ban.$$
        !          54070: echo "($QMS_FILE) ($LPDEST) ($TIME) ($DATE) ($owner) banner" >> /tmp/ban.$$
        !          54071: if [ "$printer" = "postio" ]
        !          54072:         then
        !          54073:         eval $filter $files 2> /dev/null
        !          54074: else
        !          54075:         eval $path/$printer $landscape $formsperpage $files $prev | $filter 2> /dev/null
        !          54076:         fi
        !          54077: if [ "$bannerflag" = "ON" ]
        !          54078:         then
        !          54079:         eval $filter /tmp/ban.$$ 2> /dev/null
        !          54080:         fi
        !          54081: rm -f /tmp/ban.$$
        !          54082: exit 0
        !          54083: 
        !          54084: 0707070014230735551004440057030057030000010012170522627503300002500000000763post.src/misc/READMEMiscellaneous programs - all are unsupported.
        !          54085: 
        !          54086:   ibmfont.c    IBM PC to Unix font conversion program
        !          54087:   laserbar.[c1]        Barcode filter and man page - Jan Wolitzky
        !          54088:   lp.model     Sample lp interface (not for Unix 4.0) - Maryann Csaszar
        !          54089:   macfont.c    Macintosh to Unix font conversion program
        !          54090:   pscrypt.c    Quick implementation of Adobe's encryption/decryption algorithm
        !          54091:   setbaud.ps   Example of how to change the printer's baudrate
        !          54092: 
        !          54093: Use make to compile C programs. For example,
        !          54094: 
        !          54095:        make macfont
        !          54096: 
        !          54097: compiles macfont.c.
        !          54098: 
        !          54099: 0707070014230735561004440057030057030000010015000522627503300003000000013025post.src/misc/macfont.c/*
        !          54100:  *
        !          54101:  * Program that converts Macintosh font files to a format that works on Unix
        !          54102:  * systems. Essentially all the information needed came from the Adobe paper
        !          54103:  * "Supporting Downloadable PostScript Fonts". To use the program type,
        !          54104:  *
        !          54105:  *     macfont font.mac >font.unix
        !          54106:  *
        !          54107:  * where font.mac is the font file, exactly as it came over from a Macintosh,
        !          54108:  * and font.unix is equivalent host resident font file usable on Unix systems.
        !          54109:  * 
        !          54110:  */
        !          54111: 
        !          54112: #include <stdio.h>
        !          54113: #include <signal.h>
        !          54114: 
        !          54115: #define OFF            0
        !          54116: #define ON             1
        !          54117: 
        !          54118: #define NON_FATAL      0
        !          54119: #define FATAL          1
        !          54120: 
        !          54121: #define FALSE          0
        !          54122: #define TRUE           1
        !          54123: 
        !          54124: char   **argv;
        !          54125: int    argc;
        !          54126: 
        !          54127: char   *prog_name;
        !          54128: 
        !          54129: int    x_stat;
        !          54130: int    debug = OFF;
        !          54131: int    ignore = OFF;
        !          54132: 
        !          54133: FILE   *fp_in = stdin;
        !          54134: FILE   *fp_out = stdout;
        !          54135: 
        !          54136: /*****************************************************************************/
        !          54137: 
        !          54138: main(agc, agv)
        !          54139: 
        !          54140:     int                agc;
        !          54141:     char       *agv[];
        !          54142: 
        !          54143: {
        !          54144: 
        !          54145: /*
        !          54146:  *
        !          54147:  * Macintosh to Unix font converter.
        !          54148:  *
        !          54149:  */
        !          54150: 
        !          54151:     argc = agc;
        !          54152:     argv = agv;
        !          54153:     prog_name = argv[0];
        !          54154: 
        !          54155:     options();
        !          54156:     arguments();
        !          54157:     exit(x_stat);
        !          54158: 
        !          54159: }   /* End of main */
        !          54160: 
        !          54161: /*****************************************************************************/
        !          54162: 
        !          54163: options()
        !          54164: 
        !          54165: {
        !          54166: 
        !          54167:     int                ch;
        !          54168:     char       *names = "DI";
        !          54169: 
        !          54170:     extern char        *optarg;
        !          54171:     extern int optind;
        !          54172: 
        !          54173: /*
        !          54174:  *
        !          54175:  * Command line options.
        !          54176:  *
        !          54177:  */
        !          54178: 
        !          54179:     while ( (ch = getopt(argc, argv, names)) != EOF ) {
        !          54180:        switch ( ch ) {
        !          54181:            case 'D':                   /* debug flag */
        !          54182:                    debug = ON;
        !          54183:                    break;
        !          54184: 
        !          54185:            case 'I':                   /* ignore FATAL errors */
        !          54186:                    ignore = ON;
        !          54187:                    break;
        !          54188: 
        !          54189:            case '?':                   /* don't understand the option */
        !          54190:                    error(FATAL, "");
        !          54191:                    break;
        !          54192: 
        !          54193:            default:                    /* don't know what to do for ch */
        !          54194:                    error(FATAL, "missing case for option %c\n", ch);
        !          54195:                    break;
        !          54196:        }   /* End switch */
        !          54197:     }   /* End while */
        !          54198: 
        !          54199:     argc -= optind;
        !          54200:     argv += optind;
        !          54201: 
        !          54202: }   /* End of options */
        !          54203: 
        !          54204: /*****************************************************************************/
        !          54205: 
        !          54206: arguments()
        !          54207: 
        !          54208: {
        !          54209: 
        !          54210: 
        !          54211: /*
        !          54212:  *
        !          54213:  * Everything else is an input file. No arguments or '-' means stdin.
        !          54214:  *
        !          54215:  */
        !          54216: 
        !          54217:     if ( argc < 1 )
        !          54218:        conv();
        !          54219:     else
        !          54220:        while ( argc > 0 ) {
        !          54221:            if ( strcmp(*argv, "-") == 0 )
        !          54222:                fp_in = stdin;
        !          54223:            else if ( (fp_in = fopen(*argv, "r")) == NULL )
        !          54224:                error(FATAL, "can't open %s", *argv);
        !          54225:            conv();
        !          54226:            if ( fp_in != stdin )
        !          54227:                fclose(fp_in);
        !          54228:            argc--;
        !          54229:            argv++;
        !          54230:        }   /* End while */
        !          54231: 
        !          54232: }   /* End of arguments */
        !          54233: 
        !          54234: /*****************************************************************************/
        !          54235: 
        !          54236: conv()
        !          54237: 
        !          54238: {
        !          54239: 
        !          54240:     int                blocksize;
        !          54241:     int                blocktype;
        !          54242: 
        !          54243: /*
        !          54244:  *
        !          54245:  * The first four bytes (in a block) are the block size, the fifth is the block
        !          54246:  * type, and the sixth always appears to be NULL. Type 0 blocks are comments and
        !          54247:  * are always skipped. Type 1 blocks are ASCII text, type 2 is binary data that
        !          54248:  * should be converted to hex, while type 5 blocks represent the end of the font
        !          54249:  * file. Commment block lengths appear to be from the first byte, while other
        !          54250:  * lengths seem to be measured from block type byte (ie. the fifth byte). Type
        !          54251:  * four blocks aren't used, while type 3 blocks mean an end of file indication
        !          54252:  * should be sent to the printer. Haven't done anything with type 3 blocks.
        !          54253:  *
        !          54254:  */
        !          54255: 
        !          54256:     while ( 1 ) {
        !          54257:        blocksize = getint(fp_in);
        !          54258:        blocktype = getc(fp_in);
        !          54259:        getc(fp_in);
        !          54260:        if ( debug == ON )
        !          54261:            fprintf(stderr, "blocktype = %d, blocksize = %d\n", blocktype, blocksize);
        !          54262:        switch ( blocktype ) {
        !          54263:            case 0:                     /* comment - skip blockcount bytes */
        !          54264:                fseek(fp_in, (long) blocksize - 6, 1);
        !          54265:                break;
        !          54266: 
        !          54267:            case 1:
        !          54268:                asciitext(blocksize - 2);
        !          54269:                break;
        !          54270: 
        !          54271:            case 2:
        !          54272:                hexdata(blocksize - 2);
        !          54273:                break;
        !          54274: 
        !          54275:            case 3:
        !          54276:            case 4:
        !          54277:                error(FATAL, "resource type %d not implemented", blocktype);
        !          54278:                break;
        !          54279: 
        !          54280:            case 5:
        !          54281:                return;
        !          54282: 
        !          54283:            default:
        !          54284:                error(FATAL, "unknown resource type %d", blocktype);
        !          54285:        }   /* End switch */
        !          54286:     }  /* End while */
        !          54287: 
        !          54288: }   /* End of conv */
        !          54289: 
        !          54290: /*****************************************************************************/
        !          54291: 
        !          54292: asciitext(count)
        !          54293: 
        !          54294:     int                count;                  /* bytes left in the block */
        !          54295: 
        !          54296: {
        !          54297: 
        !          54298:     int                ch;
        !          54299:     int                i = 0;
        !          54300: 
        !          54301: /*
        !          54302:  *
        !          54303:  * Handles type 1 (ie. ASCII text) blocks. Changing carriage returns to newlines
        !          54304:  * is all I've done.
        !          54305:  *
        !          54306:  */
        !          54307: 
        !          54308:     for ( i = 0; i < count; i++ ) {
        !          54309:        if ( (ch = getc(fp_in)) == '\r' )
        !          54310:            ch = '\n';
        !          54311:        putc(ch, fp_out);
        !          54312:     }  /* End for */
        !          54313:        
        !          54314: }   /* End of asciitext */
        !          54315: 
        !          54316: /*****************************************************************************/
        !          54317: 
        !          54318: hexdata(count)
        !          54319: 
        !          54320:     int                count;                  /* bytes left in the block */
        !          54321: 
        !          54322: {
        !          54323: 
        !          54324:     int                i;
        !          54325:     int                n;
        !          54326: 
        !          54327: /*
        !          54328:  *
        !          54329:  * Reads the next count bytes and converts each byte to hex. Also starts a new
        !          54330:  * line every 80 hex characters.
        !          54331:  *
        !          54332:  */
        !          54333: 
        !          54334:     for ( i = 0, n = 0; i < count; i++ ) {
        !          54335:        fprintf(fp_out, "%.2X", getc(fp_in));
        !          54336:        if ( (++n % 40) == 0 )
        !          54337:            putc('\n', fp_out);
        !          54338:     }  /* End for */
        !          54339:        
        !          54340: }   /* End of hexdata */
        !          54341: 
        !          54342: /*****************************************************************************/
        !          54343: 
        !          54344: getint()
        !          54345: 
        !          54346: {
        !          54347: 
        !          54348:     int                val;
        !          54349:     int                i;
        !          54350: 
        !          54351: /*
        !          54352:  *
        !          54353:  * Reads the next four bytes into an integer and returns the value to the caller.
        !          54354:  * First two bytes are probably always 0.
        !          54355:  *
        !          54356:  */
        !          54357: 
        !          54358:     for ( i = 0, val = (getc(fp_in) & 0377); i < 3; i++ )
        !          54359:        val = (val << 8) | (getc(fp_in) & 0377);
        !          54360: 
        !          54361:     return(val);
        !          54362: 
        !          54363: }   /* End of getint */ 
        !          54364: 
        !          54365: /*****************************************************************************/
        !          54366: 
        !          54367: error(kind, mesg, a1, a2, a3)
        !          54368: 
        !          54369: 
        !          54370:     int                kind;
        !          54371:     char       *mesg;
        !          54372:     unsigned   a1, a2, a3;
        !          54373: 
        !          54374: {
        !          54375: 
        !          54376: /*
        !          54377:  *
        !          54378:  * Print *mesg then quit if kind is FATAL.
        !          54379:  *
        !          54380:  */
        !          54381: 
        !          54382:     if ( mesg != NULL && *mesg != '\0' ) {
        !          54383:        fprintf(stderr, "%s: ", prog_name);
        !          54384:        fprintf(stderr, mesg, a1, a2, a3);
        !          54385:        putc('\n', stderr);
        !          54386:     }  /* End if */
        !          54387: 
        !          54388:     if ( kind == FATAL && ignore == OFF )
        !          54389:        exit(x_stat | 01);
        !          54390: 
        !          54391: }   /* End of error */
        !          54392: 
        !          54393: /*****************************************************************************/
        !          54394: 
        !          54395: 0707070014230735571004440057030057030000010015100522627503300003100000010626post.src/misc/laserbar.c/* laserbar -- filter to print barcodes on postscript printer */
        !          54396: 
        !          54397: #define MAIN 1
        !          54398: 
        !          54399: #define        LABEL   01
        !          54400: #define        NFLAG   02
        !          54401: #define        SFLAG   04
        !          54402: 
        !          54403: #include <stdio.h>
        !          54404: #include <ctype.h>
        !          54405: 
        !          54406: static int code39[256] = {
        !          54407:        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        !          54408:        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        !          54409: /*     sp    !     "     #     $     %     &     '     */
        !          54410:        0304, 0,    0,    0,    0250, 0052, 0,    0,   
        !          54411: /*     (     )     *     +     ,     -     -     /     */
        !          54412:        0,    0,    0224, 0212, 0,    0205, 0604, 0242,
        !          54413: /*     0     1     2     3     4     5     6     7     */
        !          54414:        0064, 0441, 0141, 0540, 0061, 0460, 0160, 0045,
        !          54415: /*     8     9     :     ;     <     =     >     ?     */
        !          54416:        0444, 0144, 0,    0,    0,    0,    0,    0,   
        !          54417: /*     @     A     B     C     D     E     F     G     */
        !          54418:        0,    0411, 0111, 0510, 0031, 0430, 0130, 0015,
        !          54419: /*     H     I     J     K     L     M     N     O     */
        !          54420:        0414, 0114, 0034, 0403, 0103, 0502, 0023, 0422,
        !          54421: /*     P     Q     R     S     T     U     V     W     */
        !          54422:        0122, 0007, 0406, 0106, 0026, 0601, 0301, 0700,
        !          54423: /*     X     Y     Z     [     \     ]     ^     _     */
        !          54424:        0221, 0620, 0320, 0,    0,    0,    0,    0,
        !          54425: /*     `     a     b     c     d     e     f     g     */
        !          54426:        0,    0411, 0111, 0510, 0031, 0430, 0130, 0015,
        !          54427: /*     h     i     j     k     l     m     n     o     */
        !          54428:        0414, 0114, 0034, 0403, 0103, 0502, 0023, 0422,
        !          54429: /*     p     q     r     s     t     u     v     w     */
        !          54430:        0122, 0007, 0406, 0106, 0026, 0601, 0301, 0700,
        !          54431: /*     x     y     z     {     |     }     ~     del   */
        !          54432:        0221, 0620, 0320, 0,    0,    0,    0,    0,
        !          54433:        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        !          54434:        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        !          54435:        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        !          54436:        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        !          54437:        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        !          54438:        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        !          54439:        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        !          54440:        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        !          54441: };
        !          54442: 
        !          54443: static void barprt();
        !          54444: void laserbar();
        !          54445: 
        !          54446: #ifdef MAIN
        !          54447: 
        !          54448: main(argc, argv)
        !          54449: char **argv;
        !          54450: {
        !          54451:        int c, flags = 0, error = 0;
        !          54452:        double rotate = 0, xoffset = 0, yoffset = 0, xscale = 1, yscale = 1;
        !          54453:        extern char *optarg;
        !          54454:        extern int optind;
        !          54455:        extern double atof();
        !          54456:        extern void exit();
        !          54457: 
        !          54458:        while ((c = getopt(argc, argv, "r:x:y:X:Y:lns")) != EOF) {
        !          54459:                switch(c) {
        !          54460:                    case 'r':
        !          54461:                        rotate = atof(optarg);
        !          54462:                        break;
        !          54463:                    case 'x':
        !          54464:                        xoffset = atof(optarg);
        !          54465:                        break;
        !          54466:                    case 'y':
        !          54467:                        yoffset = atof(optarg);
        !          54468:                        break;
        !          54469:                    case 'X':
        !          54470:                        xscale = atof(optarg);
        !          54471:                        break;
        !          54472:                    case 'Y':
        !          54473:                        yscale = atof(optarg);
        !          54474:                        break;
        !          54475:                    case 'l':
        !          54476:                        flags |= LABEL;
        !          54477:                        break;
        !          54478:                    case 'n':
        !          54479:                        flags |= NFLAG;
        !          54480:                        break;
        !          54481:                    case 's':
        !          54482:                        flags |= SFLAG;
        !          54483:                        break;
        !          54484:                    case '?':
        !          54485:                        ++error;
        !          54486:                }
        !          54487:        }
        !          54488:        if ((argc - optind) != 1)
        !          54489:                ++error;
        !          54490:        if (error) {
        !          54491:                (void) fprintf(stderr,
        !          54492: "Usage: %s [-r rotate] [-x xoffset] [-y yoffset] [-X xscale] [-Y yscale] [-lns] string\n",
        !          54493:                    *argv);
        !          54494:                exit(1);
        !          54495:        }
        !          54496:        laserbar(stdout, argv[optind], rotate, xoffset, yoffset, xscale, yscale, flags);
        !          54497:        return 0;
        !          54498: }
        !          54499: 
        !          54500: #endif MAIN
        !          54501: 
        !          54502: static int right = 0;
        !          54503: 
        !          54504: void
        !          54505: laserbar(fp, str, rotate, xoffset, yoffset, xscale, yscale, flags)
        !          54506: FILE *fp;
        !          54507: char *str;
        !          54508: double rotate, xoffset, yoffset, xscale, yscale;
        !          54509: int flags;
        !          54510: {
        !          54511:        xoffset *= 72.;
        !          54512:        yoffset *= 72.;
        !          54513:        (void) fprintf(fp, "gsave %s\n", (flags & NFLAG) ? "newpath" : "");
        !          54514:        if (xoffset || yoffset)
        !          54515:                (void) fprintf(fp, "%f %f moveto\n", xoffset, yoffset);
        !          54516:        if (xscale != 1 || yscale != 1)
        !          54517:                (void) fprintf(fp, "%f %f scale\n", xscale, yscale);
        !          54518:        if (rotate)
        !          54519:                (void) fprintf(fp, "%f rotate\n", rotate);
        !          54520:        (void) fputs("/Helvetica findfont 16 scalefont setfont\n", fp);
        !          54521:        (void) fputs("/w { 0 rmoveto gsave 3 setlinewidth 0 -72 rlineto stroke grestore } def\n", fp);
        !          54522:        (void) fputs("/n { 0 rmoveto gsave 1 setlinewidth 0 -72 rlineto stroke grestore } def\n", fp);
        !          54523:        (void) fputs("/l { gsave 2 -88 rmoveto show grestore } def\n", fp);
        !          54524:        barprt(fp, '*', 0);
        !          54525:        while (*str)
        !          54526:                barprt(fp, *(str++), (flags & LABEL));
        !          54527:        barprt(fp, '*', 0);
        !          54528:        (void) fprintf(fp, "%sgrestore\n", (flags & SFLAG) ? "showpage " : "");
        !          54529:        right = 0;
        !          54530: }
        !          54531: 
        !          54532: static void
        !          54533: barprt(fp, c, label)
        !          54534: FILE *fp;
        !          54535: int c, label;
        !          54536: {
        !          54537:        int i, mask, bar, wide;
        !          54538: 
        !          54539:        if (!(i = code39[c]))
        !          54540:                return;
        !          54541:        if (islower(c))
        !          54542:                c = toupper(c);
        !          54543:        if (label)
        !          54544:                (void) fprintf(fp, "(%c) l", c);
        !          54545:        else
        !          54546:                (void) fputs("     ", fp);
        !          54547:        for (bar = 1, mask = 0400; mask; bar = 1 - bar, mask >>= 1) {
        !          54548:                wide = mask & i;
        !          54549:                if (bar) {
        !          54550:                        if (wide)
        !          54551:                                ++right;
        !          54552:                        (void) fprintf(fp, " %d %s", right, wide ? "w" : "n");
        !          54553:                        right = (wide ? 2 : 1);
        !          54554:                }
        !          54555:                else
        !          54556:                        right += (wide ? 3 : 1);
        !          54557:        }
        !          54558:        (void) fputs("\n", fp);
        !          54559:        ++right;
        !          54560: }
        !          54561: 0707070014230735601004440057030057030000010014770522627503300003100000000226post.src/misc/setbaud.ps%
        !          54562: % Sets baud rate to 9600, options to 0 assuming the password is 0.
        !          54563: %
        !          54564: 
        !          54565: serverdict begin
        !          54566:        0 exitserver
        !          54567:        statusdict begin
        !          54568:                25 9600 0 setsccbatch
        !          54569:        end
        !          54570: 0707070014230735611004440057030057030000010015200522627503300003000000012333post.src/misc/ibmfont.c/*
        !          54571:  *
        !          54572:  * Program that converts IBM font files to a format that works on Unix systems.
        !          54573:  * Essentially all the information needed came from the Adobe paper "Supporting
        !          54574:  * Downloadable PostScript Fonts". To use the program type,
        !          54575:  *
        !          54576:  *     ibmfont font.ibm >font.unix
        !          54577:  *
        !          54578:  * where font.ibm is the font file, exactly as it came over from an IBM PC,
        !          54579:  * and font.unix is equivalent host resident font file usable on Unix systems.
        !          54580:  * 
        !          54581:  */
        !          54582: 
        !          54583: #include <stdio.h>
        !          54584: #include <signal.h>
        !          54585: 
        !          54586: #define OFF            0
        !          54587: #define ON             1
        !          54588: 
        !          54589: #define NON_FATAL      0
        !          54590: #define FATAL          1
        !          54591: 
        !          54592: #define FALSE          0
        !          54593: #define TRUE           1
        !          54594: 
        !          54595: char   **argv;
        !          54596: int    argc;
        !          54597: 
        !          54598: char   *prog_name;
        !          54599: 
        !          54600: int    x_stat;
        !          54601: int    debug = OFF;
        !          54602: int    ignore = OFF;
        !          54603: 
        !          54604: FILE   *fp_in = stdin;
        !          54605: FILE   *fp_out = stdout;
        !          54606: 
        !          54607: /*****************************************************************************/
        !          54608: 
        !          54609: main(agc, agv)
        !          54610: 
        !          54611:     int                agc;
        !          54612:     char       *agv[];
        !          54613: 
        !          54614: {
        !          54615: 
        !          54616: /*
        !          54617:  *
        !          54618:  * IBM PC to Unix font converter.
        !          54619:  *
        !          54620:  */
        !          54621: 
        !          54622:     argc = agc;
        !          54623:     argv = agv;
        !          54624:     prog_name = argv[0];
        !          54625: 
        !          54626:     options();
        !          54627:     arguments();
        !          54628:     exit(x_stat);
        !          54629: 
        !          54630: }   /* End of main */
        !          54631: 
        !          54632: /*****************************************************************************/
        !          54633: 
        !          54634: options()
        !          54635: 
        !          54636: {
        !          54637: 
        !          54638:     int                ch;
        !          54639:     char       *names = "DI";
        !          54640: 
        !          54641:     extern char        *optarg;
        !          54642:     extern int optind;
        !          54643: 
        !          54644: /*
        !          54645:  *
        !          54646:  * Command line options.
        !          54647:  *
        !          54648:  */
        !          54649: 
        !          54650:     while ( (ch = getopt(argc, argv, names)) != EOF ) {
        !          54651:        switch ( ch ) {
        !          54652:            case 'D':                   /* debug flag */
        !          54653:                    debug = ON;
        !          54654:                    break;
        !          54655: 
        !          54656:            case 'I':                   /* ignore FATAL errors */
        !          54657:                    ignore = ON;
        !          54658:                    break;
        !          54659: 
        !          54660:            case '?':                   /* don't understand the option */
        !          54661:                    error(FATAL, "");
        !          54662:                    break;
        !          54663: 
        !          54664:            default:                    /* don't know what to do for ch */
        !          54665:                    error(FATAL, "missing case for option %c\n", ch);
        !          54666:                    break;
        !          54667:        }   /* End switch */
        !          54668:     }   /* End while */
        !          54669: 
        !          54670:     argc -= optind;
        !          54671:     argv += optind;
        !          54672: 
        !          54673: }   /* End of options */
        !          54674: 
        !          54675: /*****************************************************************************/
        !          54676: 
        !          54677: arguments()
        !          54678: 
        !          54679: {
        !          54680: 
        !          54681: /*
        !          54682:  *
        !          54683:  * Everything esle is an input file. No arguments or '-' means stdin.
        !          54684:  *
        !          54685:  */
        !          54686: 
        !          54687: 
        !          54688:     if ( argc < 1 )
        !          54689:        conv();
        !          54690:     else
        !          54691:        while ( argc > 0 ) {
        !          54692:            if ( strcmp(*argv, "-") == 0 )
        !          54693:                fp_in = stdin;
        !          54694:            else if ( (fp_in = fopen(*argv, "r")) == NULL )
        !          54695:                error(FATAL, "can't open %s", *argv);
        !          54696:            conv();
        !          54697:            if ( fp_in != stdin )
        !          54698:                fclose(fp_in);
        !          54699:            argc--;
        !          54700:            argv++;
        !          54701:        }   /* End while */
        !          54702: 
        !          54703: }   /* End of arguments */
        !          54704: 
        !          54705: /*****************************************************************************/
        !          54706: 
        !          54707: conv()
        !          54708: 
        !          54709: {
        !          54710: 
        !          54711:     int                blocksize;
        !          54712:     int                blocktype;
        !          54713:     int                seg;
        !          54714:     long       ftell();
        !          54715: 
        !          54716: /*
        !          54717:  *
        !          54718:  * Font files on the IBM PC are stored in a compressed binary format. Individual
        !          54719:  * segments in the file are preceeded by a header that looks like,
        !          54720:  *
        !          54721:  *             Byte 1:         128
        !          54722:  *             Byte 2:         segment type (1=ASCII, 2=TOHEX, or 3=EOF)
        !          54723:  *             Bytes 3-6:      length of the segment
        !          54724:  *             Bytes 7 ...     data
        !          54725:  *
        !          54726:  */
        !          54727: 
        !          54728:     while ( 1 ) {
        !          54729:        seg = ftell(fp_in);
        !          54730:        if ( getc(fp_in) != 128 )
        !          54731:            error(FATAL, "bad file format");
        !          54732:        blocktype = getc(fp_in);
        !          54733:        blocksize = getint(fp_in);
        !          54734:        if ( debug == ON ) {
        !          54735:            fprintf(stderr, "blocktype = %d, blocksize = %d\n", blocktype, blocksize);
        !          54736:            fprintf(stderr, "start=0%o, end=0%o\n", seg, seg+blocksize+6);
        !          54737:            fprintf(stderr, "start=%d, end=%d\n", seg, seg+blocksize+6);
        !          54738:        }   /* End if */
        !          54739:        switch ( blocktype ) {
        !          54740:            case 1:
        !          54741:                asciitext(blocksize);
        !          54742:                break;
        !          54743: 
        !          54744:            case 2:
        !          54745:                hexdata(blocksize);
        !          54746:                break;
        !          54747: 
        !          54748:            case 3:
        !          54749:                return;
        !          54750: 
        !          54751:            default:
        !          54752:                error(FATAL, "unknown resource type %d", blocktype);
        !          54753:        }   /* End switch */
        !          54754:     }  /* End while */
        !          54755: 
        !          54756: }   /* End of conv */
        !          54757: 
        !          54758: /*****************************************************************************/
        !          54759: 
        !          54760: asciitext(count)
        !          54761: 
        !          54762:     int                count;                  /* bytes left in the block */
        !          54763: 
        !          54764: {
        !          54765: 
        !          54766:     int                ch;
        !          54767:     int                i = 0;
        !          54768: 
        !          54769: /*
        !          54770:  *
        !          54771:  * Handles type 1 (ie. ASCII text) blocks. Changing carriage returns to newlines
        !          54772:  * is all I've done.
        !          54773:  *
        !          54774:  */
        !          54775: 
        !          54776:     for ( i = 0; i < count; i++ ) {
        !          54777:        if ( (ch = getc(fp_in)) == '\r' )
        !          54778:            ch = '\n';
        !          54779:        putc(ch, fp_out);
        !          54780:     }  /* End for */
        !          54781:        
        !          54782: }   /* End of asciitext */
        !          54783: 
        !          54784: /*****************************************************************************/
        !          54785: 
        !          54786: hexdata(count)
        !          54787: 
        !          54788:     int                count;                  /* bytes left in the block */
        !          54789: 
        !          54790: {
        !          54791: 
        !          54792:     int                i;
        !          54793:     int                n;
        !          54794: 
        !          54795: /*
        !          54796:  *
        !          54797:  * Reads the next count bytes and converts each byte to hex. Also starts a new
        !          54798:  * line every 80 hex characters.
        !          54799:  *
        !          54800:  */
        !          54801: 
        !          54802:     for ( i = 0, n = 0; i < count; i++ ) {
        !          54803:        fprintf(fp_out, "%.2X", getc(fp_in));
        !          54804:        if ( (++n % 40) == 0 )
        !          54805:            putc('\n', fp_out);
        !          54806:     }  /* End for */
        !          54807:        
        !          54808: }   /* End of hexdata */
        !          54809: 
        !          54810: /*****************************************************************************/
        !          54811: 
        !          54812: getint()
        !          54813: 
        !          54814: {
        !          54815: 
        !          54816:     int                val;
        !          54817: 
        !          54818: /*
        !          54819:  *
        !          54820:  * Reads the next four bytes into an integer and returns the value to the caller.
        !          54821:  * First two bytes are probably always 0.
        !          54822:  *
        !          54823:  */
        !          54824: 
        !          54825:     val = getc(fp_in);
        !          54826:     val |= (getc(fp_in) << 8);
        !          54827:     val |= (getc(fp_in) << 16);
        !          54828:     val |= (getc(fp_in) << 24);
        !          54829: 
        !          54830:     return(val);
        !          54831: 
        !          54832: }   /* End of getint */ 
        !          54833: 
        !          54834: /*****************************************************************************/
        !          54835: 
        !          54836: error(kind, mesg, a1, a2, a3)
        !          54837: 
        !          54838:     int                kind;
        !          54839:     char       *mesg;
        !          54840:     unsigned   a1, a2, a3;
        !          54841: 
        !          54842: {
        !          54843: 
        !          54844: /*
        !          54845:  *
        !          54846:  * Print mesg and quit if kind is FATAL.
        !          54847:  *
        !          54848:  */
        !          54849: 
        !          54850:     if ( mesg != NULL && *mesg != '\0' ) {
        !          54851:        fprintf(stderr, "%s: ", prog_name);
        !          54852:        fprintf(stderr, mesg, a1, a2, a3);
        !          54853:        putc('\n', stderr);
        !          54854:     }  /* End if */
        !          54855: 
        !          54856:     if ( kind == FATAL && ignore == OFF )
        !          54857:        exit(x_stat | 01);
        !          54858: 
        !          54859: }   /* End of error */
        !          54860: 
        !          54861: /*****************************************************************************/
        !          54862: 
        !          54863: 0707070014230735621004440057030057030000010015300522627503300003000000014610post.src/misc/pscrypt.c/*
        !          54864:  *
        !          54865:  * Adobe's encryption/decryption algorithm for eexec and show. Runs in
        !          54866:  * eexec mode unless told otherwise. Use,
        !          54867:  *
        !          54868:  *             pscrypt file.cypher > file.clear
        !          54869:  *
        !          54870:  * to decrypt eexec input. Assumes file.cypher is hex with the key as the
        !          54871:  * first four bytes, and writes file.clear as binary (omitting the key).
        !          54872:  * Use
        !          54873:  *
        !          54874:  *             pscrypt -e12ab34ef file.clear >file.cypher
        !          54875:  *
        !          54876:  * to encrypt file.clear (for eexec) using 12ab34ef as the key. Input is
        !          54877:  * binary and output is hex. The key must be given as a hex number. Use
        !          54878:  * -sshow to encrypt or decrypt a CharString or Subr,
        !          54879:  *
        !          54880:  *             pscrypt -sshow file.cypher > file.clear
        !          54881:  *
        !          54882:  * Use -b or -x to read binary or hex input, and -B or -X to output binary
        !          54883:  * or hex.
        !          54884:  *
        !          54885:  */
        !          54886: 
        !          54887: #include <stdio.h>
        !          54888: #include <ctype.h>
        !          54889: 
        !          54890: #define ENCRYPT                0
        !          54891: #define DECRYPT                1
        !          54892: 
        !          54893: #define NOTSET         -1
        !          54894: #define BINARY         0
        !          54895: #define HEX            1
        !          54896: #define LINELENGTH     40
        !          54897: 
        !          54898: #define CHARSTRING     4330
        !          54899: #define EEXEC          55665
        !          54900: #define MAGIC1         52845
        !          54901: #define MAGIC2         22719
        !          54902: 
        !          54903: int    argc;
        !          54904: char   **argv;
        !          54905: 
        !          54906: int    mode = DECRYPT;
        !          54907: int    input = NOTSET;
        !          54908: int    output = NOTSET;
        !          54909: int    outoffset = NOTSET;
        !          54910: int    inoffset = NOTSET;
        !          54911: 
        !          54912: int    cryptkey = 0;                   /* encryption key set with -e */
        !          54913: int    linelength = LINELENGTH;        /* only for hex output */
        !          54914: int    lastchar = 0;
        !          54915: 
        !          54916: unsigned long  seed = EEXEC;
        !          54917: unsigned long  key;
        !          54918: 
        !          54919: FILE   *fp_in = stdin;
        !          54920: 
        !          54921: /*****************************************************************************/
        !          54922: 
        !          54923: main(agc, agv)
        !          54924: 
        !          54925:     int                agc;
        !          54926:     char       *agv[];
        !          54927: 
        !          54928: {
        !          54929: 
        !          54930: /*
        !          54931:  *
        !          54932:  * Implementation of the encryption/decryption used by eexec and show.
        !          54933:  *
        !          54934:  */
        !          54935: 
        !          54936:     argc = agc;
        !          54937:     argv = agv;
        !          54938: 
        !          54939:     options();
        !          54940:     initialize();
        !          54941:     arguments();
        !          54942: 
        !          54943:     exit(0);
        !          54944: 
        !          54945: }   /* End of main */
        !          54946: 
        !          54947: /*****************************************************************************/
        !          54948: 
        !          54949: options()
        !          54950: 
        !          54951: {
        !          54952: 
        !          54953:     int                ch;
        !          54954:     char       *names = "bde:l:os:xBSX";
        !          54955: 
        !          54956:     extern char        *optarg;
        !          54957:     extern int optind;
        !          54958: 
        !          54959: /*
        !          54960:  *
        !          54961:  * Command line options.
        !          54962:  *
        !          54963:  */
        !          54964: 
        !          54965:     while ( (ch = getopt(argc, argv, names)) != EOF )
        !          54966:        switch ( ch ) {
        !          54967:            case 'b':                   /* binary input */
        !          54968:                    input = BINARY;
        !          54969:                    break;
        !          54970: 
        !          54971:            case 'd':                   /* decrypt */
        !          54972:                    mode = DECRYPT;
        !          54973:                    break;
        !          54974: 
        !          54975:            case 'e':                   /* encrypt */
        !          54976:                    mode = ENCRYPT;
        !          54977:                    if ( *optarg == '0' && *optarg == 'x' )
        !          54978:                        optarg += 2;
        !          54979:                    sscanf(optarg, "%8x", &cryptkey);
        !          54980:                    break;
        !          54981: 
        !          54982:            case 'l':                   /* line length hex output */
        !          54983:                    linelength = atoi(optarg);
        !          54984:                    break;
        !          54985: 
        !          54986:            case 'o':                   /* output all bytes - debugging */
        !          54987:                    outoffset = 0;
        !          54988:                    break;
        !          54989: 
        !          54990:            case 's':                   /* seed */
        !          54991:                    if ( *optarg == 'e' )
        !          54992:                        seed = EEXEC;
        !          54993:                    else if ( *optarg == 's' )
        !          54994:                        seed = CHARSTRING;
        !          54995:                    else if ( *optarg == '0' && *(optarg+1) == 'x' )
        !          54996:                        sscanf(optarg+2, "%x", &seed);
        !          54997:                    else if ( *optarg == '0' )
        !          54998:                        sscanf(optarg, "%o", &seed);
        !          54999:                    else sscanf(optarg, "%d", &seed);
        !          55000:                    break;
        !          55001: 
        !          55002:            case 'x':                   /* hex input */
        !          55003:                    input = HEX;
        !          55004:                    break;
        !          55005: 
        !          55006:            case 'B':                   /* binary output */
        !          55007:                    output = BINARY;
        !          55008:                    break;
        !          55009: 
        !          55010:            case 'X':                   /* hex output */
        !          55011:                    output = HEX;
        !          55012:                    break;
        !          55013: 
        !          55014:            case '?':                   /* don't understand the option */
        !          55015:                    fprintf(stderr, "bad option -%c\n", ch);
        !          55016:                    exit(1);
        !          55017:                    break;
        !          55018: 
        !          55019:            default:                    /* don't know what to do for ch */
        !          55020:                    fprintf(stderr, "missing case for option -%c\n", ch);
        !          55021:                    exit(1);
        !          55022:                    break;
        !          55023:        }   /* End switch */
        !          55024: 
        !          55025:     argc -= optind;                    /* get ready for non-option args */
        !          55026:     argv += optind;
        !          55027: 
        !          55028: }   /* End of options */
        !          55029: 
        !          55030: /*****************************************************************************/
        !          55031: 
        !          55032: initialize()
        !          55033: 
        !          55034: {
        !          55035: 
        !          55036: /*
        !          55037:  *
        !          55038:  * Initialization that has to be done after the options.
        !          55039:  *
        !          55040:  */
        !          55041: 
        !          55042:     key = seed;
        !          55043: 
        !          55044:     if ( mode == DECRYPT ) {
        !          55045:        input = (input == NOTSET) ? HEX : input;
        !          55046:        output = (output == NOTSET) ? BINARY : output;
        !          55047:        inoffset = (inoffset == NOTSET) ? 0 : inoffset;
        !          55048:        outoffset = (outoffset == NOTSET) ? -4 : outoffset;
        !          55049:     } else {
        !          55050:        input = (input == NOTSET) ? BINARY : input;
        !          55051:        output = (output == NOTSET) ? HEX : output;
        !          55052:        inoffset = (inoffset == NOTSET) ? 4 : inoffset;
        !          55053:        outoffset = (outoffset == NOTSET) ? 0 : outoffset;
        !          55054:     }  /* End else */
        !          55055: 
        !          55056:     if ( linelength <= 0 )
        !          55057:        linelength = LINELENGTH;
        !          55058: 
        !          55059: }   /* End of initialize */
        !          55060: 
        !          55061: /*****************************************************************************/
        !          55062: 
        !          55063: arguments()
        !          55064: 
        !          55065: {
        !          55066: 
        !          55067: /*
        !          55068:  *
        !          55069:  * Everything left is an input file. No arguments or '-' means stdin.
        !          55070:  *
        !          55071:  */
        !          55072: 
        !          55073:     if ( argc < 1 )
        !          55074:        crypt();
        !          55075:     else
        !          55076:        while ( argc > 0 ) {
        !          55077:            if ( strcmp(*argv, "-") == 0 )
        !          55078:                fp_in = stdin;
        !          55079:            else if ( (fp_in = fopen(*argv, "r")) == NULL ) {
        !          55080:                fprintf(stderr, "can't open %s\n", *argv);
        !          55081:                exit(1);
        !          55082:            }   /* End if */
        !          55083:            crypt();
        !          55084:            if ( fp_in != stdin )
        !          55085:                fclose(fp_in);
        !          55086:            argc--;
        !          55087:            argv++;
        !          55088:        }   /* End while */
        !          55089: 
        !          55090: }   /* End of arguments */
        !          55091: 
        !          55092: /*****************************************************************************/
        !          55093: 
        !          55094: crypt()
        !          55095: 
        !          55096: {
        !          55097: 
        !          55098:     unsigned int       cypher;
        !          55099:     unsigned int       clear;
        !          55100: 
        !          55101: /*
        !          55102:  *
        !          55103:  * Runs the encryption/decryption algorithm.
        !          55104:  *
        !          55105:  */
        !          55106: 
        !          55107:     while ( lastchar != EOF ) {
        !          55108:        cypher = nextbyte();
        !          55109:        clear = ((key >> 8) ^ cypher) & 0xFF;
        !          55110:        key = (key + (mode == DECRYPT ? cypher : clear)) * MAGIC1 + MAGIC2;
        !          55111:        if ( ++outoffset > 0 && lastchar != EOF ) {
        !          55112:            if ( output == HEX ) {
        !          55113:                printf("%.2X", clear);
        !          55114:                if ( linelength > 0 && (outoffset % linelength) == 0 )
        !          55115:                    putchar('\n');
        !          55116:            } else putchar(clear);
        !          55117:        }   /* End if */
        !          55118:     }  /* End while */
        !          55119: 
        !          55120: }   /* End of crypt */
        !          55121: 
        !          55122: /*****************************************************************************/
        !          55123: 
        !          55124: nextbyte()
        !          55125: 
        !          55126: {
        !          55127: 
        !          55128:     int                val = EOF;
        !          55129: 
        !          55130: /*
        !          55131:  *
        !          55132:  * Returns the next byte. Uses cryptkey (i.e. what followed -e) while inoffset is
        !          55133:  * positive, otherwise reads (hex or binary) from fp_in.
        !          55134:  *
        !          55135:  */
        !          55136: 
        !          55137:     if ( inoffset-- > 0 )
        !          55138:        val = (cryptkey >> (inoffset*8)) & 0xFF;
        !          55139:     else if ( input == HEX ) {
        !          55140:        if ( (val = nexthexchar()) != EOF )
        !          55141:            val = (val << 4) | nexthexchar();
        !          55142:     } else if ( input == BINARY )
        !          55143:        val = Getc(fp_in);
        !          55144: 
        !          55145:     return(val);
        !          55146: 
        !          55147: }   /* End of nextbyte */
        !          55148: 
        !          55149: /*****************************************************************************/
        !          55150: 
        !          55151: nexthexchar()
        !          55152: 
        !          55153: {
        !          55154: 
        !          55155:     int                ch;
        !          55156: 
        !          55157: /*
        !          55158:  *
        !          55159:  * Reads the next hex character.
        !          55160:  *
        !          55161:  */
        !          55162: 
        !          55163:     while ( (ch = Getc(fp_in)) != EOF && ! isxdigit(ch) ) ;
        !          55164: 
        !          55165:     if ( isdigit(ch) )
        !          55166:        ch -= '0';
        !          55167:     else if ( isupper(ch) )
        !          55168:        ch -= 'A' - 10;
        !          55169:     else if ( islower(ch) )
        !          55170:        ch -= 'a' - 10;
        !          55171: 
        !          55172:     return(ch);
        !          55173: 
        !          55174: }   /* End of nexthexchar */
        !          55175: 
        !          55176: /*****************************************************************************/
        !          55177: 
        !          55178: Getc(fp)
        !          55179: 
        !          55180:     FILE       *fp;
        !          55181: 
        !          55182: {
        !          55183: 
        !          55184: /*
        !          55185:  *
        !          55186:  * Reads the next byte from *fp, sets lastchar, and returns the character.
        !          55187:  *
        !          55188:  */
        !          55189: 
        !          55190:     return(lastchar = getc(fp));
        !          55191: 
        !          55192: }   /* End of Getc */
        !          55193: 
        !          55194: /*****************************************************************************/
        !          55195: 
        !          55196: 0707070014230735631004440057030057030000010014660522627503300003100000003244post.src/misc/laserbar.1.TH LASERBAR 1
        !          55197: .SH NAME
        !          55198: laserbar \- produce bar codes on a PostScript laser printer
        !          55199: .SH SYNOPSIS
        !          55200: .B laserbar
        !          55201: [\fB-r\fP rotate] [\fB-x\fP xoffset] [\fB-y\fP yoffset]
        !          55202: [\fB-X\fP xscale] [\fB-Y\fP yscale] [\fB-lns\fP] string
        !          55203: .SH DESCRIPTION
        !          55204: .I Laserbar
        !          55205: prints on the standard output the PostScript text that will produce
        !          55206: (on a suitable laser printer) the \s-2CODE-39\s+2 bar code
        !          55207: corresponding to
        !          55208: .I string.
        !          55209: The \fBr\fP option may be used to specify a rotation (in
        !          55210: degrees) of the bar code.
        !          55211: The \fBx\fP, \fBy\fP, \fBX\fP, and \fBY\fP options may be used to specify
        !          55212: an x- or y-axis offset (in inches) or scaling factor, respectively.
        !          55213: (The offset is measured from the lower left corner of the page
        !          55214: to the upper left corner of the bar
        !          55215: code.  By default, the bar code produced is one inch high, and is scaled
        !          55216: so that the narrowest elements are each 1/72-inch \- i.e., one point \- wide.)
        !          55217: If the \fBl\fP option is specified, the bar code produced is labeled.
        !          55218: If the \fBn\fP option is specified, the resulting PostScript text
        !          55219: includes a leading \f(CWnewpath\fP command, so that the text may stand
        !          55220: alone or precede any other PostScript commands.
        !          55221: If the \fBs\fP option is specified, the resulting PostScript text includes 
        !          55222: a trailing \f(CWshowpage\fP command, so that the text may stand alone
        !          55223: or follow any other PostScript commands.
        !          55224: .P
        !          55225: This manual page (if it appears with a bar code printed on it) was
        !          55226: produced by something like the following sequence:
        !          55227: .IP
        !          55228: .ft CW
        !          55229: laserbar -x 2.5 -y 3 -l -n ABC123xyz > tempfile
        !          55230: .br
        !          55231: troff -man -Tpost laserbar.1 | dpost >> tempfile
        !          55232: .br
        !          55233: prt -dprinter -lpostscript tempfile
        !          55234: .ft P
        !          55235: .SH SEE ALSO
        !          55236: laserbar(3), prt(1), dpost(1), postbgi(1), postprint(1), postdmd(1), posttek(1), etc.
        !          55237: 0707070014231310670407550057030057030000021027270522633075100002100000000000post.src/picpack0707070014231307541006400057030057030000011033650522633075000003400000002737post.src/picpack/picpack.mkMAKE=/bin/make
        !          55238: MAKEFILE=picpack.mk
        !          55239: 
        !          55240: SYSTEM=V9
        !          55241: VERSION=3.3.2
        !          55242: 
        !          55243: GROUP=bin
        !          55244: OWNER=bin
        !          55245: 
        !          55246: MAN1DIR=/tmp
        !          55247: POSTBIN=/usr/bin/postscript
        !          55248: 
        !          55249: COMMONDIR=../common
        !          55250: 
        !          55251: CFLGS=-O
        !          55252: LDFLGS=-s
        !          55253: 
        !          55254: CFLAGS=$(CFLGS) -I$(COMMONDIR)
        !          55255: LDFLAGS=$(LDFLGS)
        !          55256: 
        !          55257: HFILES=$(COMMONDIR)/ext.h\
        !          55258:        $(COMMONDIR)/gen.h\
        !          55259:        $(COMMONDIR)/path.h
        !          55260: 
        !          55261: OFILES=picpack.o\
        !          55262:        $(COMMONDIR)/glob.o\
        !          55263:        $(COMMONDIR)/misc.o\
        !          55264:        $(COMMONDIR)/tempnam.o
        !          55265: 
        !          55266: all : picpack
        !          55267: 
        !          55268: install : all
        !          55269:        @if [ ! -d "$(POSTBIN)" ]; then \
        !          55270:            mkdir $(POSTBIN); \
        !          55271:            chmod 755 $(POSTBIN); \
        !          55272:            chgrp $(GROUP) $(POSTBIN); \
        !          55273:            chown $(OWNER) $(POSTBIN); \
        !          55274:        fi
        !          55275:        cp picpack $(POSTBIN)/picpack
        !          55276:        @chmod 755 $(POSTBIN)/picpack
        !          55277:        @chgrp $(GROUP) $(POSTBIN)/picpack
        !          55278:        @chown $(OWNER) $(POSTBIN)/picpack
        !          55279:        cp picpack.1 $(MAN1DIR)/picpack.1
        !          55280:        @chmod 644 $(MAN1DIR)/picpack.1
        !          55281:        @chgrp $(GROUP) $(MAN1DIR)/picpack.1
        !          55282:        @chown $(OWNER) $(MAN1DIR)/picpack.1
        !          55283: 
        !          55284: clean :
        !          55285:        rm -f *.o
        !          55286: 
        !          55287: clobber : clean
        !          55288:        rm -f picpack
        !          55289: 
        !          55290: picpack : $(OFILES)
        !          55291:        $(CC) $(CFLAGS) $(LDFLAGS) -o picpack $(OFILES)
        !          55292: 
        !          55293: picpack.o : $(HFILES)
        !          55294: 
        !          55295: $(COMMONDIR)/glob.o\
        !          55296: $(COMMONDIR)/misc.o\
        !          55297: $(COMMONDIR)/tempnam.o :
        !          55298:        @cd $(COMMONDIR); $(MAKE) -f common.mk SYSTEM=$(SYSTEM) `basename $@`
        !          55299: 
        !          55300: changes :
        !          55301:        @trap "" 1 2 3 15; \
        !          55302:        sed \
        !          55303:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
        !          55304:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
        !          55305:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          55306:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          55307:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
        !          55308:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
        !          55309:        $(MAKEFILE) >XXX.mk; \
        !          55310:        mv XXX.mk $(MAKEFILE)
        !          55311: 
        !          55312: 0707070014231310711006440057030057030000011030000522627503400003300000030265post.src/picpack/picpack.c/*
        !          55313:  *
        !          55314:  * picpack - picture packing pre-processor
        !          55315:  *
        !          55316:  * A trivial troff pre-processor that copies files to stdout, expanding picture
        !          55317:  * requests into an in-line format that's passed transparently through troff and
        !          55318:  * handled by dpost. The program is an attempt to address requirements, expressed
        !          55319:  * by several organizations, of being able to store a document as a single file
        !          55320:  * (usually troff input) that can then be sent through dpost and ultimately to
        !          55321:  * a PostScript printer.
        !          55322:  *
        !          55323:  * The program looks for strings listed in the keys[] array at the start of each
        !          55324:  * line. When a picture request (as listed in keys[]) is found the second string
        !          55325:  * on the line is taken to be a picture file pathname that's added (in transparent
        !          55326:  * mode) to the output file. In addition each in-line picture file is preceeded by
        !          55327:  * device control command (again passed through in transparent mode) that looks
        !          55328:  * like,
        !          55329:  *
        !          55330:  *     x X InlinePicture filename bytes
        !          55331:  *
        !          55332:  * where bytes is the size of the picture file (which begins on the next line)
        !          55333:  * and filename is the pathname of the picture file. dpost uses both arguments to
        !          55334:  * manage in-line pictures (in a big temp file). To handle pictures in diversions
        !          55335:  * picpack reads each input file twice. The first pass looks for picture inclusion
        !          55336:  * requests and copies each picture file transparently to the output file, while
        !          55337:  * second pass just copies the input file to the output file. Things could still
        !          55338:  * break, but the two pass method should handle most jobs.
        !          55339:  *
        !          55340:  * The recognized in-line picture requests are saved in keys[] and by default only
        !          55341:  * expand .BP and .PI macro calls. The -k option changes the recognized strings,
        !          55342:  * and may be needed if you've built your own picture inclusion macros on top of
        !          55343:  * .BP or .PI or decided to list each picture file at the start of your input file
        !          55344:  * using a dummy macro. For example you could require every in-line picture be
        !          55345:  * named by a dummy macro (say .iP), then the command line,
        !          55346:  *
        !          55347:  *     picpack -k.iP file > file.pack
        !          55348:  *
        !          55349:  * hits on lines that begin with .iP (rather than .BP or .PI), and the only files
        !          55350:  * pulled in would be ones named as the second argument to the new .iP macro. The
        !          55351:  * -k option accepts a space or comma separated list of up to 10 different key
        !          55352:  * strings. picpack imposes no contraints on key strings, other than not allowing
        !          55353:  * spaces or commas. A key string can begin with \" and in that case it would be
        !          55354:  * troff comment.
        !          55355:  *
        !          55356:  * Although the program will help some users, there are obvious disadvantages.
        !          55357:  * Perhaps the most important is that troff output files (with in-line pictures
        !          55358:  * included) don't fit the device independent language accepted by important post
        !          55359:  * processors like proof, and that means you won't be able to reliably preview a
        !          55360:  * packed file on your 5620 or whatever. Another potential problem is that picture
        !          55361:  * files can be large. Packing everything together in a single file at an early
        !          55362:  * stage has a better chance of exceeding your system's ulimit.
        !          55363:  *
        !          55364:  */
        !          55365: 
        !          55366: #include       <stdio.h>
        !          55367: #include       <sys/types.h>
        !          55368: #include       <sys/stat.h>
        !          55369: 
        !          55370: #include       "gen.h"                 /* general purpose definitions */
        !          55371: #include       "ext.h"                 /* external variable definitions */
        !          55372: #include       "path.h"                /* just for TEMPDIR definition */
        !          55373: 
        !          55374: char           *keys[11] = {".BP", ".PI", NULL};
        !          55375: int            quiet = FALSE;
        !          55376: 
        !          55377: FILE           *fp_in = stdin;         /* input */
        !          55378: FILE           *fp_out = stdout;       /* and output files */
        !          55379: 
        !          55380: /*****************************************************************************/
        !          55381: 
        !          55382: main(agc, agv)
        !          55383: 
        !          55384:     int                agc;
        !          55385:     char       *agv[];
        !          55386: 
        !          55387: {
        !          55388: 
        !          55389: /*
        !          55390:  *
        !          55391:  * A picture packing pre-processor that copies input files to stdout, expanding
        !          55392:  * picture requests (as listed in keys[]) to an in-line format that can be passed
        !          55393:  * through troff (using transparent mode) and handled later by dpost.
        !          55394:  *
        !          55395:  */
        !          55396: 
        !          55397:     argc = agc;                                /* global so everyone can use them */
        !          55398:     argv = agv;
        !          55399: 
        !          55400:     prog_name = argv[0];               /* just for error messages */
        !          55401: 
        !          55402:     options();                         /* command line options */
        !          55403:     arguments();                       /* translate all the input files */
        !          55404:     done();                            /* clean things up */
        !          55405: 
        !          55406:     exit(x_stat);                      /* everything probably went OK */
        !          55407: 
        !          55408: }   /* End of main */
        !          55409: 
        !          55410: /*****************************************************************************/
        !          55411: 
        !          55412: options()
        !          55413: 
        !          55414: {
        !          55415: 
        !          55416:     int                ch;                     /* name returned by getopt() */
        !          55417: 
        !          55418:     extern char        *optarg;                /* option argument set by getopt() */
        !          55419:     extern int optind;
        !          55420: 
        !          55421: /*
        !          55422:  *
        !          55423:  * Handles the command line options.
        !          55424:  *
        !          55425:  */
        !          55426: 
        !          55427:     while ( (ch = getopt(argc, argv, "k:qDI")) != EOF )  {
        !          55428:        switch ( ch )  {
        !          55429:            case 'k':                   /* new expansion key strings */
        !          55430:                    newkeys(optarg);
        !          55431:                    break;
        !          55432: 
        !          55433:            case 'q':                   /* disables "missing picture" messages */
        !          55434:                    quiet = TRUE;
        !          55435:                    break;
        !          55436: 
        !          55437:            case 'D':                   /* debug flag */
        !          55438:                    debug = ON;
        !          55439:                    break;
        !          55440: 
        !          55441:            case 'I':                   /* ignore FATAL errors */
        !          55442:                    ignore = ON;
        !          55443:                    break;
        !          55444: 
        !          55445:            case '?':                   /* don't know the option */
        !          55446:                    error(FATAL, "");
        !          55447:                    break;
        !          55448: 
        !          55449:            default:
        !          55450:                    error(FATAL, "missing case for option %c", ch);
        !          55451:                    break;
        !          55452:        }   /* End switch */
        !          55453:     }  /* End while */
        !          55454: 
        !          55455:     argc -= optind;                    /* get ready for non-options args */
        !          55456:     argv += optind;
        !          55457: 
        !          55458: }   /* End of options */
        !          55459: 
        !          55460: /*****************************************************************************/
        !          55461: 
        !          55462: newkeys(list)
        !          55463: 
        !          55464:     char       *list;                  /* comma or space separated key strings */
        !          55465: 
        !          55466: {
        !          55467: 
        !          55468:     char       *p;                     /* next key string from *list */
        !          55469:     int                i;                      /* goes in keys[i] */
        !          55470:     int                n;                      /* last key string slot in keys[] */
        !          55471: 
        !          55472: /*
        !          55473:  *
        !          55474:  * Separates *list into space or comma separated strings and adds each to the
        !          55475:  * keys[] array. The strings in keys[] are used to locate the picture inclusion
        !          55476:  * requests that are translated to the in-line format. The keys array must end
        !          55477:  * with a NULL pointer and by default only expands .BP and .PI macro calls.
        !          55478:  *
        !          55479:  */
        !          55480: 
        !          55481:     n = (sizeof(keys) / sizeof(char *)) - 1;
        !          55482: 
        !          55483:     for ( i = 0, p = strtok(list, " ,"); p != NULL; i++, p = strtok(NULL, " ,") )
        !          55484:        if ( i >= n )
        !          55485:            error(FATAL, "too many key strings");
        !          55486:        else keys[i] = p;
        !          55487: 
        !          55488:     keys[i] = NULL;
        !          55489: 
        !          55490: }   /* End of newkeys */
        !          55491: 
        !          55492: /*****************************************************************************/
        !          55493: 
        !          55494: arguments()
        !          55495: 
        !          55496: {
        !          55497: 
        !          55498:     FILE       *copystdin();
        !          55499: 
        !          55500: /*
        !          55501:  *
        !          55502:  * Makes sure all the non-option command line arguments are processed. If we get
        !          55503:  * here and there aren't any arguments left, or if '-' is one of the input files
        !          55504:  * we process stdin, after copying it to a temporary file.
        !          55505:  *
        !          55506:  */
        !          55507: 
        !          55508:     if ( argc < 1 )  {
        !          55509:        fp_in = copystdin();
        !          55510:        picpack();
        !          55511:     } else
        !          55512:        while ( argc > 0 ) {
        !          55513:            if ( strcmp(*argv, "-") == 0 )
        !          55514:                fp_in = copystdin();
        !          55515:            else if ( (fp_in = fopen(*argv, "r")) == NULL )
        !          55516:                error(FATAL, "can't open %s", *argv);
        !          55517:            picpack();
        !          55518:            fclose(fp_in);
        !          55519:            argc--;
        !          55520:            argv++;
        !          55521:        }   /* End while */
        !          55522: 
        !          55523: }   /* End of arguments */
        !          55524: 
        !          55525: /*****************************************************************************/
        !          55526: 
        !          55527: FILE *copystdin()
        !          55528: 
        !          55529: {
        !          55530: 
        !          55531:     char       *tfile;                 /* temporary file name */
        !          55532:     int                fd_out;                 /* and its file descriptor */
        !          55533:     FILE       *fp;                    /* return value - the new input file */
        !          55534: 
        !          55535: /*
        !          55536:  *
        !          55537:  * Copies stdin to a temp file, unlinks the file, and returns the file pointer
        !          55538:  * for the new temporary file to the caller. Needed because we read each input
        !          55539:  * file twice in an attempt to handle pictures in diversions.
        !          55540:  *
        !          55541:  */
        !          55542: 
        !          55543:     if ( (tfile = tempnam(TEMPDIR, "post")) == NULL )
        !          55544:        error(FATAL, "can't generate temp file name");
        !          55545: 
        !          55546:     if ( (fd_out = creat(tfile, 0660)) == -1 )
        !          55547:        error(FATAL, "can't create %s", tfile);
        !          55548: 
        !          55549:     copyfile(fileno(stdin), fd_out);
        !          55550:     close(fd_out);
        !          55551: 
        !          55552:     if ( (fp = fopen(tfile, "r")) == NULL )
        !          55553:        error(FATAL, "can't open %s", tfile);
        !          55554: 
        !          55555:     unlink(tfile);
        !          55556:     return(fp);
        !          55557: 
        !          55558: }   /* End of copystdin */
        !          55559: 
        !          55560: /*****************************************************************************/
        !          55561: 
        !          55562: copyfile(fd_in, fd_out)
        !          55563: 
        !          55564:     int                fd_in;                  /* input */
        !          55565:     int                fd_out;                 /* and output files */
        !          55566: 
        !          55567: {
        !          55568: 
        !          55569:     char       buf[512];               /* internal buffer for reads and writes */
        !          55570:     int                count;                  /* number of bytes put in buf[] */
        !          55571: 
        !          55572: /*
        !          55573:  *
        !          55574:  * Copies file fd_in to fd_out. Handles the second pass for each input file and
        !          55575:  * also used to copy stdin to a temporary file.
        !          55576:  *
        !          55577:  */
        !          55578: 
        !          55579:     while ( (count = read(fd_in, buf, sizeof(buf))) > 0 )
        !          55580:        if ( write(fd_out, buf, count) != count )
        !          55581:            error(FATAL, "write error");
        !          55582: 
        !          55583: }   /* End of copyfile */
        !          55584: 
        !          55585: /*****************************************************************************/
        !          55586: 
        !          55587: done()
        !          55588: 
        !          55589: {
        !          55590: 
        !          55591: /*
        !          55592:  *
        !          55593:  * Finished with all the input files - unlink the temporary file that was used
        !          55594:  * to record the in-line picture file pathnames.
        !          55595:  *
        !          55596:  */
        !          55597: 
        !          55598:     if ( temp_file != NULL )
        !          55599:        unlink(temp_file);
        !          55600: 
        !          55601: }   /* End of done */
        !          55602: 
        !          55603: /*****************************************************************************/
        !          55604: 
        !          55605: picpack()
        !          55606: 
        !          55607: {
        !          55608: 
        !          55609:     char       line[512];              /* next input line */
        !          55610:     char       name[100];              /* picture file names - from BP or PI */
        !          55611:     int                i;                      /* for looking through keys[] */
        !          55612: 
        !          55613: /*
        !          55614:  *
        !          55615:  * Handles the two passes over the next input file. First pass compares the start
        !          55616:  * of each line in *fp_in with the key strings saved in the keys[] array. If a
        !          55617:  * match is found inline() is called to copy the picture file (ie. the file named
        !          55618:  * as the second string in line[]) to stdout, provided the file hasn't previously
        !          55619:  * been copied. The second pass goes back to the start of fp_in and copies it all
        !          55620:  * to the output file.
        !          55621:  *
        !          55622:  */
        !          55623: 
        !          55624:     while ( fgets(line, sizeof(line), fp_in) != NULL )  {
        !          55625:        for ( i = 0; keys[i] != NULL; i++ )
        !          55626:            if ( strncmp(line, keys[i], strlen(keys[i])) == 0 )  {
        !          55627:                if ( sscanf(line, "%*s %s", name) == 1 )  {
        !          55628:                    strtok(name, "(");
        !          55629:                    if ( gotpicfile(name) == FALSE )
        !          55630:                        inline(name);
        !          55631:                }   /* End if */
        !          55632:            }   /* End if */
        !          55633:     }  /* End while */
        !          55634: 
        !          55635:     fflush(fp_out);                    /* second pass - copy fp_in to fp_out */
        !          55636:     fseek(fp_in, 0L, 0);
        !          55637:     copyfile(fileno(fp_in), fileno(fp_out));
        !          55638: 
        !          55639: }   /* End of picpack */
        !          55640: 
        !          55641: /*****************************************************************************/
        !          55642: 
        !          55643: inline(name)
        !          55644: 
        !          55645:     char       *name;                  /* name of the in-line picture file */
        !          55646: 
        !          55647: {
        !          55648: 
        !          55649:     long       size;                   /* size in bytes - from fstat */
        !          55650:     FILE       *fp;                    /* for reading *name */
        !          55651:     int                ch;                     /* next character from picture file */
        !          55652:     int                lastch = '\n';          /* so we know when to put out \! */
        !          55653: 
        !          55654:     struct stat        sbuf;                   /* for the picture file size */
        !          55655: 
        !          55656: /*
        !          55657:  *
        !          55658:  * Copies the picture file *name to the output file in an in-line format that can
        !          55659:  * be passed through troff and recovered later by dpost. Transparent mode is used
        !          55660:  * so each line starts with \! and all \ characters must be escaped. The in-line
        !          55661:  * picture sequence begins with an "x X InlinePicture" device control command that
        !          55662:  * names the picture file and gives its size (in bytes).
        !          55663:  *
        !          55664:  */
        !          55665: 
        !          55666:     if ( (fp = fopen(name, "r")) != NULL )  {
        !          55667:        fstat(fileno(fp), &sbuf);
        !          55668:        if ( (size = sbuf.st_size) > 0 )  {
        !          55669:            fprintf(fp_out, "\\!x X InlinePicture %s %ld\n", name, size);
        !          55670:            while ( (ch = getc(fp)) != EOF )  {
        !          55671:                if ( lastch == '\n' )
        !          55672:                    fprintf(fp_out, "\\!");
        !          55673:                if ( ch == '\\' )
        !          55674:                    putc('\\', fp_out);
        !          55675:                putc(lastch = ch, fp_out);
        !          55676:            }   /* End while */
        !          55677:            if ( lastch != '\n' )
        !          55678:                putc('\n', fp_out);
        !          55679:        }    /* End if */
        !          55680:        fclose(fp);
        !          55681:        addpicfile(name);
        !          55682:     } else if ( quiet == FALSE )
        !          55683:        error(NON_FATAL, "can't read picture file %s", name);
        !          55684: 
        !          55685: }   /* End of inline */
        !          55686: 
        !          55687: /*****************************************************************************/
        !          55688: 
        !          55689: gotpicfile(name)
        !          55690: 
        !          55691:     char       *name;
        !          55692: 
        !          55693: {
        !          55694: 
        !          55695:     char       buf[100];
        !          55696:     FILE       *fp_pic;
        !          55697: 
        !          55698: /*
        !          55699:  *
        !          55700:  * Checks the list of previously added picture files in *temp_file and returns
        !          55701:  * FALSE if it's a new file and TRUE otherwise. Probably should open the temp
        !          55702:  * file once for update and leave it open, rather than opening and closing it
        !          55703:  * every time.
        !          55704:  *
        !          55705:  */
        !          55706: 
        !          55707:     if ( temp_file != NULL )
        !          55708:        if ( (fp_pic = fopen(temp_file, "r")) != NULL )  {
        !          55709:            while ( fscanf(fp_pic, "%s", buf) != EOF )
        !          55710:                if ( strcmp(buf, name) == 0 )  {
        !          55711:                    fclose(fp_pic);
        !          55712:                    return(TRUE);
        !          55713:                }   /* End if */
        !          55714:            fclose(fp_pic);
        !          55715:        }   /* End if */
        !          55716: 
        !          55717:     return(FALSE);
        !          55718: 
        !          55719: }   /* End of gotpicfile */
        !          55720: 
        !          55721: /*****************************************************************************/
        !          55722: 
        !          55723: addpicfile(name)
        !          55724: 
        !          55725:     char       *name;
        !          55726: 
        !          55727: {
        !          55728: 
        !          55729:     FILE       *fp_pic;
        !          55730: 
        !          55731: /*
        !          55732:  *
        !          55733:  * Adds string *name to the list of in-line picture files that's maintained in
        !          55734:  * *temp_file. Should undoubtedly open the file once for update and use fseek()
        !          55735:  * to move around in the file!
        !          55736:  *
        !          55737:  */
        !          55738: 
        !          55739:     if ( temp_file == NULL )
        !          55740:        if ( (temp_file = tempnam(TEMPDIR, "picpac")) == NULL )
        !          55741:            return;
        !          55742: 
        !          55743:     if ( (fp_pic = fopen(temp_file, "a")) != NULL )  {
        !          55744:        fprintf(fp_pic, "%s\n", name);
        !          55745:        fclose(fp_pic);
        !          55746:     }  /* End if */
        !          55747: 
        !          55748: }   /* End of addpicfile */
        !          55749: 
        !          55750: /*****************************************************************************/
        !          55751: 
        !          55752: 0707070014231310721006440057030057030000011030250522627503400003300000005252post.src/picpack/picpack.1.TH PICPACK 1
        !          55753: .SH NAME
        !          55754: .B picpack
        !          55755: \- PostScript picture packing preprocessor
        !          55756: .SH SYNOPSIS
        !          55757: \*(mBpicpack\f1
        !          55758: .OP "" options []
        !          55759: .OP "" files []
        !          55760: .SH DESCRIPTION
        !          55761: .B picpack
        !          55762: copies
        !          55763: .I files
        !          55764: to stdout, expanding picture inclusion requests
        !          55765: (marked by the
        !          55766: .MW .BP
        !          55767: or
        !          55768: .MW .PI
        !          55769: macros) into an in-line
        !          55770: format that can be passed through
        !          55771: .B troff
        !          55772: and handled by
        !          55773: .BR dpost .
        !          55774: If no
        !          55775: .I files
        !          55776: are specified
        !          55777: or if
        !          55778: .OP \-
        !          55779: is one of the input
        !          55780: .I files
        !          55781: standard input is read.
        !          55782: The following
        !          55783: .I options
        !          55784: are understood:
        !          55785: .TP 0.75i
        !          55786: .OP \-k list
        !          55787: .I list
        !          55788: is a comma- or space-separated string of words used to locate
        !          55789: picture inclusion requests.
        !          55790: The start of every line in the input
        !          55791: .I files
        !          55792: is compared with each word in
        !          55793: .I list .
        !          55794: If there is a match, the second string on the line is
        !          55795: taken as the pathname of a picture file that is added
        !          55796: to the output file.
        !          55797: The default
        !          55798: .I list
        !          55799: is
        !          55800: .RM `` ".BP .PI ''.
        !          55801: .TP
        !          55802: .OP \-q
        !          55803: Suppress ``missing picture file'' error messages.
        !          55804: .PP
        !          55805: .B picpack
        !          55806: is a trivial preprocessor that, in a sense, duplicates some of the
        !          55807: picture inclusion capabilities already available in
        !          55808: .BR dpost .
        !          55809: .B picpack
        !          55810: should not be used if your formatting command line includes
        !          55811: a call to
        !          55812: .BR dpost .
        !          55813: Its only purpose is to combine picture files with text in a single
        !          55814: file that can be passed through
        !          55815: .B troff
        !          55816: and unpacked, at some later time, by
        !          55817: .BR dpost .
        !          55818: The original picture inclusion mechanism, with files are pulled in by
        !          55819: .BR dpost ,
        !          55820: is the preferred approach.
        !          55821: .SH EXAMPLES
        !          55822: A typical application might be in a distributed printing environment
        !          55823: where everything up to
        !          55824: .B troff
        !          55825: is run by the user and everything after
        !          55826: .B troff
        !          55827: is handled by a spooling daemon (perhaps
        !          55828: .BR lp ).
        !          55829: In that case the command line would be,
        !          55830: .EX
        !          55831: pic  \f2file\fP | tbl | eqn | picpack | troff -mm -Tpost | lp
        !          55832: .EE
        !          55833: A poor example, although one that should still work, would be,
        !          55834: .EX
        !          55835: pic  \f2file\fP | tbl | eqn | picpack | troff -mm -Tpost | dpost >\f2file\fP.ps
        !          55836: .EE
        !          55837: In this case picture inclusion requests could (and should) be handled by
        !          55838: .BR dpost .
        !          55839: Running
        !          55840: .B picpack
        !          55841: is not needed or even recommended.
        !          55842: It should be dropped from any pipeline that includes a call to
        !          55843: .BR dpost .
        !          55844: .SH DIAGNOSTICS
        !          55845: A 0 exit status is returned if
        !          55846: .I files
        !          55847: were successfully processed.
        !          55848: .SH WARNINGS
        !          55849: .PP
        !          55850: Combining pictures and text using the capabilities available in
        !          55851: .B dpost
        !          55852: is the recommended approach and is always guaranteed to be more
        !          55853: efficient than
        !          55854: .BR picpack .
        !          55855: Running
        !          55856: .B picpack
        !          55857: and
        !          55858: .B dpost
        !          55859: in the same pipeline makes little sense.
        !          55860: .PP
        !          55861: Using
        !          55862: .B picpack
        !          55863: will likely result in files that can no longer be reliably passed
        !          55864: through other important
        !          55865: .B troff
        !          55866: postprocessors like
        !          55867: .BR proof .
        !          55868: At present
        !          55869: .B picpack
        !          55870: is only guaranteed to work with
        !          55871: .BR dpost .
        !          55872: .SH SEE ALSO
        !          55873: .BR dpost (1),
        !          55874: .BR troff (1)
        !          55875: 0707070014230265620407550057030057030000020675370522633075200002100000000000post.src/postbgi0707070014230265771006400057030057030000010664560522633075200003400000003742post.src/postbgi/postbgi.mkMAKE=/bin/make
        !          55876: MAKEFILE=postbgi.mk
        !          55877: 
        !          55878: SYSTEM=V9
        !          55879: VERSION=3.3.2
        !          55880: 
        !          55881: GROUP=bin
        !          55882: OWNER=bin
        !          55883: 
        !          55884: MAN1DIR=/tmp
        !          55885: POSTBIN=/usr/bin/postscript
        !          55886: POSTLIB=/usr/lib/postscript
        !          55887: 
        !          55888: COMMONDIR=../common
        !          55889: 
        !          55890: CFLGS=-O
        !          55891: LDFLGS=-s
        !          55892: 
        !          55893: CFLAGS=$(CFLGS) -I$(COMMONDIR)
        !          55894: LDFLAGS=$(LDFLGS)
        !          55895: 
        !          55896: HFILES=postbgi.h\
        !          55897:        $(COMMONDIR)/comments.h\
        !          55898:        $(COMMONDIR)/ext.h\
        !          55899:        $(COMMONDIR)/gen.h\
        !          55900:        $(COMMONDIR)/path.h
        !          55901: 
        !          55902: OFILES=postbgi.o\
        !          55903:        $(COMMONDIR)/glob.o\
        !          55904:        $(COMMONDIR)/misc.o\
        !          55905:        $(COMMONDIR)/request.o
        !          55906: 
        !          55907: all : postbgi
        !          55908: 
        !          55909: install : all
        !          55910:        @if [ ! -d "$(POSTBIN)" ]; then \
        !          55911:            mkdir $(POSTBIN); \
        !          55912:            chmod 755 $(POSTBIN); \
        !          55913:            chgrp $(GROUP) $(POSTBIN); \
        !          55914:            chown $(OWNER) $(POSTBIN); \
        !          55915:        fi
        !          55916:        @if [ ! -d "$(POSTLIB)" ]; then \
        !          55917:            mkdir $(POSTLIB); \
        !          55918:            chmod 755 $(POSTLIB); \
        !          55919:            chgrp $(GROUP) $(POSTLIB); \
        !          55920:            chown $(OWNER) $(POSTLIB); \
        !          55921:        fi
        !          55922:        cp postbgi $(POSTBIN)/postbgi
        !          55923:        @chmod 755 $(POSTBIN)/postbgi
        !          55924:        @chgrp $(GROUP) $(POSTBIN)/postbgi
        !          55925:        @chown $(OWNER) $(POSTBIN)/postbgi
        !          55926:        cp postbgi.ps $(POSTLIB)/postbgi.ps
        !          55927:        @chmod 644 $(POSTLIB)/postbgi.ps
        !          55928:        @chgrp $(GROUP) $(POSTLIB)/postbgi.ps
        !          55929:        @chown $(OWNER) $(POSTLIB)/postbgi.ps
        !          55930:        cp postbgi.1 $(MAN1DIR)/postbgi.1
        !          55931:        @chmod 644 $(MAN1DIR)/postbgi.1
        !          55932:        @chgrp $(GROUP) $(MAN1DIR)/postbgi.1
        !          55933:        @chown $(OWNER) $(MAN1DIR)/postbgi.1
        !          55934: 
        !          55935: clean :
        !          55936:        rm -f *.o
        !          55937: 
        !          55938: clobber : clean
        !          55939:        rm -f postbgi
        !          55940: 
        !          55941: postbgi : $(OFILES)
        !          55942:        $(CC) $(CFLAGS) $(LDFLAGS) -o postbgi $(OFILES) -lm
        !          55943: 
        !          55944: postbgi.o : $(HFILES)
        !          55945: 
        !          55946: $(COMMONDIR)/glob.o\
        !          55947: $(COMMONDIR)/misc.o\
        !          55948: $(COMMONDIR)/request.o :
        !          55949:        @cd $(COMMONDIR); $(MAKE) -f common.mk `basename $@`
        !          55950: 
        !          55951: changes :
        !          55952:        @trap "" 1 2 3 15; \
        !          55953:        sed \
        !          55954:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
        !          55955:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
        !          55956:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          55957:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          55958:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
        !          55959:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
        !          55960:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
        !          55961:        $(MAKEFILE) >XXX.mk; \
        !          55962:        mv XXX.mk $(MAKEFILE); \
        !          55963:        sed \
        !          55964:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
        !          55965:        postbgi.1 >XXX.1; \
        !          55966:        mv XXX.1 postbgi.1
        !          55967: 
        !          55968: 0707070014230265641006440057030057030000010675700522627503400003300000117472post.src/postbgi/postbgi.c/*
        !          55969:  *
        !          55970:  * postbgi - BGI (Basic Graphical Instructions) to PostScript translator.
        !          55971:  *
        !          55972:  * A simple program that translates BGI files into PostScript. Probably only
        !          55973:  * useful in Computer Centers that support STARE or PRISM plotters. Most of the
        !          55974:  * code was borrowed from the corresponding program that was written for printers
        !          55975:  * that understand Impress.
        !          55976:  *
        !          55977:  * Extending the original program to handle PRISM jobs was not trivial. Graphics
        !          55978:  * packages that support PRISM occasionally use BGI commands that I ignored in the
        !          55979:  * STARE implementation. Subroutines, color requests, patterns (for filling), and
        !          55980:  * filled trapeziods were the most important omissions. All are now implemented,
        !          55981:  * and at present only repeats, filled slices, and raster rectangles are missing.
        !          55982:  *
        !          55983:  * Pattern filling results were not always predictable or even good, unless the
        !          55984:  * halftone screen definitions were changed and scaling was adjusted so one pixel
        !          55985:  * in user space mapped into an integral number of device space pixels. Doing that
        !          55986:  * makes the resulting PostScript output device dependent, but was often necessary.
        !          55987:  * I've added two booleans to the PostScript prologue (fixscreen and scaletodevice)
        !          55988:  * that control what's done. By default both are false (check postbgi.ps) but can
        !          55989:  * be set to true on the command line using the -P option or by hand by changing
        !          55990:  * the definitions in the prologue. A command line that would set fixscreen and
        !          55991:  * scaletodevice true would look like,
        !          55992:  *
        !          55993:  *     postbgi -P"/fixscreen true" -P"/scaletodevice true" file >file.ps
        !          55994:  *
        !          55995:  * Several other approaches are available if you want to have your spooler handle
        !          55996:  * STARE and PRISM jobs differently. A boolean called prism is defined in the
        !          55997:  * prologue (postbgi.ps) and if it's set to true PostScript procedure setup will
        !          55998:  * set fixscreen and scaletodevice to true before anything important is done. That
        !          55999:  * means the following command line,
        !          56000:  *
        !          56001:  *     postbgi -P"/prism true" file >file.ps
        !          56002:  *
        !          56003:  * accomplishes the same things as the last example. Two different prologue files,
        !          56004:  * one for STARE jobs and the other for PRISM, could be used and the spooler could
        !          56005:  * point postbgi to the appropriate one using the -L option. In that case the only
        !          56006:  * important difference in the two prologues would be the definition of prism. The
        !          56007:  * prologue used for PRISM jobs would have prism set to true, while the STARE
        !          56008:  * prologue would have it set to false.
        !          56009:  *
        !          56010:  * Also included is code that ties lines to device space coordinates. What you get
        !          56011:  * is a consistent line thickness, but placement of lines won't be exact. It's a
        !          56012:  * trade-off that should be right for most jobs. Everything is implemented in the
        !          56013:  * prologue (postbgi.ps) and nothing will be done if the linewidth is zero or if
        !          56014:  * the boolean fixlinewidth (again in postbgi.ps) is false. Once again the -P
        !          56015:  * option can be used to set fixlinewidth to whatever you choose.
        !          56016:  *
        !          56017:  * BGI supports color mixing but PostScript doesn't. BGI files that expect to mix
        !          56018:  * colors won't print properly. PostScript's fill operator overlays whatever has
        !          56019:  * already been put down. Implementing color mixing would have been a terribly
        !          56020:  * difficult job - not worth the effort!
        !          56021:  *
        !          56022:  * The PostScript prologue is copied from *prologue before any of the input files
        !          56023:  * are translated. The program expects that the following PostScript procedures
        !          56024:  * are defined in that file:
        !          56025:  *
        !          56026:  *     setup
        !          56027:  *
        !          56028:  *       mark ... setup -
        !          56029:  *
        !          56030:  *         Handles special initialization stuff that depends on how the program
        !          56031:  *         was called. Expects to find a mark followed by key/value pairs on the
        !          56032:  *         stack. The def operator is applied to each pair up to the mark, then
        !          56033:  *         the default state is set up.
        !          56034:  *
        !          56035:  *     pagesetup
        !          56036:  *
        !          56037:  *       page pagesetup -
        !          56038:  *
        !          56039:  *         Does whatever is needed to set things up for the next page. Expects
        !          56040:  *         to find the current page number on the stack.
        !          56041:  *
        !          56042:  *     v
        !          56043:  *
        !          56044:  *       dx1 dy1 ... dxn dyn x y v -
        !          56045:  *
        !          56046:  *         Draws the vector described by the numbers on the stack. The top two
        !          56047:  *         numbers are the coordinates of the starting point. The rest of the
        !          56048:  *         numbers are relative displacements from the preceeding point.
        !          56049:  *
        !          56050:  *     pp
        !          56051:  *
        !          56052:  *       x1 y1 ... xn yn string pp -
        !          56053:  *
        !          56054:  *         Prints string, which is always a single character, at the points
        !          56055:  *         represented by the rest of the numbers on the stack.
        !          56056:  *
        !          56057:  *     R
        !          56058:  *
        !          56059:  *       n deltax deltay x y R -
        !          56060:  *
        !          56061:  *         Creates a rectangular path with its lower left corner at (x, y) and
        !          56062:  *         sides of length deltax and deltay. The resulting path is stroked if
        !          56063:  *         n is 0 and filled otherwise.
        !          56064:  *
        !          56065:  *     T
        !          56066:  *
        !          56067:  *       dx3 dy3 dx2 dy2 dx1 dy1 x y T -
        !          56068:  *
        !          56069:  *         Fills a trapezoid starting at (x, y) and having relative displacements
        !          56070:  *         given by the (dx, dy) pairs.
        !          56071:  *
        !          56072:  *     t
        !          56073:  *
        !          56074:  *       angle x y string t -
        !          56075:  *
        !          56076:  *         Prints string starting at (x, y) using an orientation of angle degrees.
        !          56077:  *         The PostScript procedure can handle any angle, but BGI files will only
        !          56078:  *         request 0 or 90 degrees. Text printed at any other orientation will be
        !          56079:  *         vector generated.
        !          56080:  *
        !          56081:  *     p
        !          56082:  *
        !          56083:  *       x y p -
        !          56084:  *
        !          56085:  *         Called to mark the point (x, y). It fills a small circle, that right
        !          56086:  *         now has a constant radius. This stuff could probably be much more
        !          56087:  *         efficient?
        !          56088:  *
        !          56089:  *     l
        !          56090:  *
        !          56091:  *       array l -
        !          56092:  *
        !          56093:  *         Sets the line drawing mode according to the description given in
        !          56094:  *         array. The arrays that describe the different line styles are declared
        !          56095:  *         in STYLES (file posttek.h), although it would be better to have them
        !          56096:  *         defined in the prologue.
        !          56097:  *
        !          56098:  *     c
        !          56099:  *
        !          56100:  *       red green blue c -
        !          56101:  *
        !          56102:  *         Sets the current PostScript RGB color using setrgbcolor. Also used for
        !          56103:  *         selecting appropriate patterns as colors.
        !          56104:  *
        !          56105:  *     f
        !          56106:  *
        !          56107:  *       bgisize f -
        !          56108:  *
        !          56109:  *         Changes the size of the font that's used to print text. bgisize is a
        !          56110:  *         grid separation in a 5 by 7 array in which characters are assumed to
        !          56111:  *         be built.
        !          56112:  *
        !          56113:  *     done
        !          56114:  *
        !          56115:  *       done
        !          56116:  *
        !          56117:  *         Makes sure the last page is printed. Only needed when we're printing
        !          56118:  *         more than one page on each sheet of paper.
        !          56119:  *
        !          56120:  * The default line width is zero, which forces lines to be one pixel wide. That
        !          56121:  * works well for 'write to black' engines but won't be right for 'write to white'
        !          56122:  * engines. The line width can be changed using the -w option, or you can change
        !          56123:  * the initialization of linewidth in the prologue. Code in the prologue supports
        !          56124:  * the generation of uniform width lines when linewidth is non-zero and boolean
        !          56125:  * fixlinewidth is true.
        !          56126:  *
        !          56127:  * Many default values, like the magnification and orientation, are defined in 
        !          56128:  * the prologue, which is where they belong. If they're changed (by options), an
        !          56129:  * appropriate definition is made after the prologue is added to the output file.
        !          56130:  * The -P option passes arbitrary PostScript through to the output file. Among
        !          56131:  * other things it can be used to set (or change) values that can't be accessed by
        !          56132:  * other options.
        !          56133:  *
        !          56134:  */
        !          56135: 
        !          56136: #include <stdio.h>
        !          56137: #include <fcntl.h>
        !          56138: #include <signal.h>
        !          56139: #include <math.h>
        !          56140: #include <ctype.h>
        !          56141: 
        !          56142: #include "comments.h"                  /* PostScript file structuring comments */
        !          56143: #include "gen.h"                       /* general purpose definitions */
        !          56144: #include "path.h"                      /* for the prologue */
        !          56145: #include "ext.h"                       /* external variable declarations */
        !          56146: #include "postbgi.h"                   /* a few definitions just used here */
        !          56147: 
        !          56148: char   *optnames = "a:c:f:m:n:o:p:w:x:y:A:C:E:J:L:P:R:DI";
        !          56149: 
        !          56150: char   *prologue = POSTBGI;            /* default PostScript prologue */
        !          56151: char   *formfile = FORMFILE;           /* stuff for multiple pages per sheet */
        !          56152: 
        !          56153: int    formsperpage = 1;               /* page images on each piece of paper */
        !          56154: int    copies = 1;                     /* and this many copies of each sheet */
        !          56155: 
        !          56156: char   *styles[] = STYLES;             /* descriptions of line styles */
        !          56157: 
        !          56158: int    hpos = 0;                       /* current horizontal */
        !          56159: int    vpos = 0;                       /* and vertical position */
        !          56160: 
        !          56161: int    bgisize = BGISIZE;              /* just the character grid spacing */
        !          56162: int    linespace;                      /* distance between lines of text */
        !          56163: 
        !          56164: int    bgimode;                        /* character or graph mode */
        !          56165: 
        !          56166: int    in_subr = FALSE;                /* currently defining a subroutine */
        !          56167: int    in_global = FALSE;              /* to save space with subroutine defs */
        !          56168: int    subr_id = 0;                    /* defining this subroutine */
        !          56169: int    shpos = 0;                      /* starting horizontal */
        !          56170: int    svpos = 0;                      /* and vertical positions - subroutines */
        !          56171: Disp   displacement[64];               /* dx and dy after a subroutine call */
        !          56172: 
        !          56173: Fontmap        fontmap[] = FONTMAP;            /* for translating font names */
        !          56174: char   *fontname = "Courier";          /* use this PostScript font */
        !          56175: 
        !          56176: int    page = 0;                       /* page we're working on */
        !          56177: int    printed = 0;                    /* printed this many pages */
        !          56178: 
        !          56179: FILE   *fp_in = stdin;                 /* read from this file */
        !          56180: FILE   *fp_out = NULL;                 /* and write stuff here */
        !          56181: FILE   *fp_acct = NULL;                /* for accounting data */
        !          56182: 
        !          56183: /*****************************************************************************/
        !          56184: 
        !          56185: main(agc, agv)
        !          56186: 
        !          56187:     int                agc;
        !          56188:     char       *agv[];
        !          56189: 
        !          56190: {
        !          56191: 
        !          56192: /*
        !          56193:  *
        !          56194:  * A program that converts BGI (Basic Graphical Instructions) files generated by
        !          56195:  * packages like GRAFPAC and DISSPLA into PostScript. It does an adequate job but
        !          56196:  * is far from perfect. A few things still haven't been implemented (eg. repeats
        !          56197:  * and raster rectangles), but what's here should be good enough for most of our
        !          56198:  * STARE and PRISM jobs. Color mixing (in PRISM jobs) won't work on PostScript
        !          56199:  * printers, and there's no chance I'll implement it!
        !          56200:  *
        !          56201:  */
        !          56202: 
        !          56203:     argc = agc;                                /* global so everyone can use them */
        !          56204:     argv = agv;
        !          56205: 
        !          56206:     prog_name = argv[0];               /* just for error messages */
        !          56207: 
        !          56208:     init_signals();                    /* set up interrupt handling */
        !          56209:     header();                          /* PostScript header comments */
        !          56210:     options();                         /* command line options */
        !          56211:     setup();                           /* for PostScript */
        !          56212:     arguments();                       /* followed by each input file */
        !          56213:     done();                            /* print the last page etc. */
        !          56214:     account();                         /* job accounting data */
        !          56215: 
        !          56216:     exit(x_stat);                      /* everything probably went OK */
        !          56217: 
        !          56218: }   /* End of main */
        !          56219: 
        !          56220: /*****************************************************************************/
        !          56221: 
        !          56222: init_signals()
        !          56223: 
        !          56224: {
        !          56225: 
        !          56226: /*
        !          56227:  *
        !          56228:  * Make sure we handle interrupts.
        !          56229:  *
        !          56230:  */
        !          56231: 
        !          56232:     if ( signal(SIGINT, interrupt) == SIG_IGN )  {
        !          56233:        signal(SIGINT, SIG_IGN);
        !          56234:        signal(SIGQUIT, SIG_IGN);
        !          56235:        signal(SIGHUP, SIG_IGN);
        !          56236:     } else {
        !          56237:        signal(SIGHUP, interrupt);
        !          56238:        signal(SIGQUIT, interrupt);
        !          56239:     }   /* End else */
        !          56240: 
        !          56241:     signal(SIGTERM, interrupt);
        !          56242: 
        !          56243: }   /* End of init_signals */
        !          56244: 
        !          56245: /*****************************************************************************/
        !          56246: 
        !          56247: header()
        !          56248: 
        !          56249: {
        !          56250: 
        !          56251:     int                ch;                     /* return value from getopt() */
        !          56252:     int                old_optind = optind;    /* for restoring optind - should be 1 */
        !          56253: 
        !          56254: /*
        !          56255:  *
        !          56256:  * Scans the option list looking for things, like the prologue file, that we need
        !          56257:  * right away but could be changed from the default. Doing things this way is an
        !          56258:  * attempt to conform to Adobe's latest file structuring conventions. In particular
        !          56259:  * they now say there should be nothing executed in the prologue, and they have
        !          56260:  * added two new comments that delimit global initialization calls. Once we know
        !          56261:  * where things really are we write out the job header, follow it by the prologue,
        !          56262:  * and then add the ENDPROLOG and BEGINSETUP comments.
        !          56263:  *
        !          56264:  */
        !          56265: 
        !          56266:     while ( (ch = getopt(argc, argv, optnames)) != EOF )
        !          56267:        if ( ch == 'L' )
        !          56268:            prologue = optarg;
        !          56269:        else if ( ch == '?' )
        !          56270:            error(FATAL, "");
        !          56271: 
        !          56272:     optind = old_optind;               /* get ready for option scanning */
        !          56273: 
        !          56274:     fprintf(stdout, "%s", CONFORMING);
        !          56275:     fprintf(stdout, "%s %s\n", VERSION, PROGRAMVERSION);
        !          56276:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, ATEND);
        !          56277:     fprintf(stdout, "%s %s\n", PAGES, ATEND);
        !          56278:     fprintf(stdout, "%s", ENDCOMMENTS);
        !          56279: 
        !          56280:     if ( cat(prologue) == FALSE )
        !          56281:        error(FATAL, "can't read %s", prologue);
        !          56282: 
        !          56283:     fprintf(stdout, "%s", ENDPROLOG);
        !          56284:     fprintf(stdout, "%s", BEGINSETUP);
        !          56285:     fprintf(stdout, "mark\n");
        !          56286: 
        !          56287: }   /* End of header */
        !          56288: 
        !          56289: /*****************************************************************************/
        !          56290: 
        !          56291: options()
        !          56292: 
        !          56293: {
        !          56294: 
        !          56295:     int                ch;                     /* option name - from getopt() */
        !          56296: 
        !          56297: /*
        !          56298:  *
        !          56299:  * Reads and processes the command line options.
        !          56300:  *
        !          56301:  */
        !          56302: 
        !          56303:     while ( (ch = getopt(argc, argv, optnames)) != EOF )  {
        !          56304:        switch ( ch )  {
        !          56305:            case 'a':                   /* aspect ratio */
        !          56306:                    fprintf(stdout, "/aspectratio %s def\n", optarg);
        !          56307:                    break;
        !          56308: 
        !          56309:            case 'c':                   /* copies */
        !          56310:                    copies = atoi(optarg);
        !          56311:                    fprintf(stdout, "/#copies %s def\n", optarg);
        !          56312:                    break;
        !          56313: 
        !          56314:            case 'f':                   /* new font */
        !          56315:                    fontname = get_font(optarg);
        !          56316:                    fprintf(stdout, "/font /%s def\n", fontname);
        !          56317:                    break;
        !          56318: 
        !          56319:            case 'm':                   /* magnification */
        !          56320:                    fprintf(stdout, "/magnification %s def\n", optarg);
        !          56321:                    break;
        !          56322: 
        !          56323:            case 'n':                   /* forms per page */
        !          56324:                    formsperpage = atoi(optarg);
        !          56325:                    fprintf(stdout, "%s %s\n", FORMSPERPAGE, optarg);
        !          56326:                    fprintf(stdout, "/formsperpage %s def\n", optarg);
        !          56327:                    break;
        !          56328: 
        !          56329:            case 'o':                   /* output page list */
        !          56330:                    out_list(optarg);
        !          56331:                    break;
        !          56332: 
        !          56333:            case 'p':                   /* landscape or portrait mode */
        !          56334:                    if ( *optarg == 'l' )
        !          56335:                        fprintf(stdout, "/landscape true def\n");
        !          56336:                    else fprintf(stdout, "/landscape false def\n");
        !          56337:                    break;
        !          56338: 
        !          56339:            case 'w':                   /* line width */
        !          56340:                    fprintf(stdout, "/linewidth %s def\n", optarg);
        !          56341:                    break;
        !          56342: 
        !          56343:            case 'x':                   /* shift horizontally */
        !          56344:                    fprintf(stdout, "/xoffset %s def\n", optarg);
        !          56345:                    break;
        !          56346: 
        !          56347:            case 'y':                   /* and vertically on the page */
        !          56348:                    fprintf(stdout, "/yoffset %s def\n", optarg);
        !          56349:                    break;
        !          56350: 
        !          56351:            case 'A':                   /* force job accounting */
        !          56352:            case 'J':
        !          56353:                    if ( (fp_acct = fopen(optarg, "a")) == NULL )
        !          56354:                        error(FATAL, "can't open accounting file %s", optarg);
        !          56355:                    break;
        !          56356: 
        !          56357:            case 'C':                   /* copy file straight to output */
        !          56358:                    if ( cat(optarg) == FALSE )
        !          56359:                        error(FATAL, "can't read %s", optarg);
        !          56360:                    break;
        !          56361: 
        !          56362:            case 'E':                   /* text font encoding */
        !          56363:                    fontencoding = optarg;
        !          56364:                    break;
        !          56365: 
        !          56366:            case 'L':                   /* Postscript prologue file */
        !          56367:                    prologue = optarg;
        !          56368:                    break;
        !          56369: 
        !          56370:            case 'P':                   /* PostScript pass through */
        !          56371:                    fprintf(stdout, "%s\n", optarg);
        !          56372:                    break;
        !          56373: 
        !          56374:            case 'R':                   /* special global or page level request */
        !          56375:                    saverequest(optarg);
        !          56376:                    break;
        !          56377: 
        !          56378:            case 'D':                   /* debug flag */
        !          56379:                    debug = ON;
        !          56380:                    break;
        !          56381: 
        !          56382:            case 'I':                   /* ignore FATAL errors */
        !          56383:                    ignore = ON;
        !          56384:                    break;
        !          56385: 
        !          56386:            case '?':                   /* don't know the option */
        !          56387:                    error(FATAL, "");
        !          56388:                    break;
        !          56389: 
        !          56390:            default:                    /* don't know what to do for ch */
        !          56391:                    error(FATAL, "missing case for option %c", ch);
        !          56392:                    break;
        !          56393:        }   /* End switch */
        !          56394:     }  /* End while */
        !          56395: 
        !          56396:     argc -= optind;                    /* get ready for non-option args */
        !          56397:     argv += optind;
        !          56398: 
        !          56399: }   /* End of options */
        !          56400: 
        !          56401: /*****************************************************************************/
        !          56402: 
        !          56403: char *get_font(name)
        !          56404: 
        !          56405:     char       *name;                  /* name the user asked for */
        !          56406: 
        !          56407: {
        !          56408: 
        !          56409:     int                i;                      /* for looking through fontmap[] */
        !          56410: 
        !          56411: /*
        !          56412:  *
        !          56413:  * Called from options() to map a user's font name into a legal PostScript name.
        !          56414:  * If the lookup fails *name is returned to the caller. That should let you choose
        !          56415:  * any PostScript font.
        !          56416:  *
        !          56417:  */
        !          56418: 
        !          56419:     for ( i = 0; fontmap[i].name != NULL; i++ )
        !          56420:        if ( strcmp(name, fontmap[i].name) == 0 )
        !          56421:            return(fontmap[i].val);
        !          56422: 
        !          56423:     return(name);
        !          56424: 
        !          56425: }   /* End of get_font */
        !          56426: 
        !          56427: /*****************************************************************************/
        !          56428: 
        !          56429: setup()
        !          56430: 
        !          56431: {
        !          56432: 
        !          56433: /*
        !          56434:  *
        !          56435:  * Handles things that must be done after the options are read but before the
        !          56436:  * input files are processed.
        !          56437:  *
        !          56438:  */
        !          56439: 
        !          56440:     writerequest(0, stdout);           /* global requests eg. manual feed */
        !          56441:     setencoding(fontencoding);
        !          56442:     fprintf(stdout, "setup\n");
        !          56443: 
        !          56444:     if ( formsperpage > 1 )  {
        !          56445:        if ( cat(formfile) == FALSE )
        !          56446:            error(FATAL, "can't read %s", formfile);
        !          56447:        fprintf(stdout, "%d setupforms\n", formsperpage);
        !          56448:     }  /* End if */
        !          56449: 
        !          56450:     fprintf(stdout, "%s", ENDSETUP);
        !          56451: 
        !          56452: }   /* End of setup */
        !          56453: 
        !          56454: /*****************************************************************************/
        !          56455: 
        !          56456: arguments()
        !          56457: 
        !          56458: {
        !          56459: 
        !          56460: /*
        !          56461:  *
        !          56462:  * Makes sure all the non-option command line options are processed. If we get
        !          56463:  * here and there aren't any arguments left, or if '-' is one of the input files
        !          56464:  * we'll process stdin.
        !          56465:  *
        !          56466:  */
        !          56467: 
        !          56468:     if ( argc < 1 )
        !          56469:        conv();
        !          56470:     else
        !          56471:        while ( argc > 0 )  {
        !          56472:            if ( strcmp(*argv, "-") == 0 )
        !          56473:                fp_in = stdin;
        !          56474:            else if ( (fp_in = fopen(*argv, "r")) == NULL )
        !          56475:                error(FATAL, "can't open %s", *argv);
        !          56476:            conv();
        !          56477:            if ( fp_in != stdin )
        !          56478:                fclose(fp_in);
        !          56479:            argc--;
        !          56480:            argv++;
        !          56481:        }   /* End while */
        !          56482: 
        !          56483: }   /* End of arguments */
        !          56484: 
        !          56485: /*****************************************************************************/
        !          56486: 
        !          56487: done()
        !          56488: 
        !          56489: {
        !          56490: 
        !          56491: /*
        !          56492:  *
        !          56493:  * Finished with the last input file, so mark the end of the pages, make sure the
        !          56494:  * last page is printed, and restore the initial environment.
        !          56495:  *
        !          56496:  */
        !          56497: 
        !          56498:     fprintf(stdout, "%s", TRAILER);
        !          56499:     fprintf(stdout, "done\n");
        !          56500:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, fontname);
        !          56501:     fprintf(stdout, "%s %d\n", PAGES, printed);
        !          56502: 
        !          56503: }   /* End of done */
        !          56504: 
        !          56505: /*****************************************************************************/
        !          56506: 
        !          56507: account()
        !          56508: 
        !          56509: {
        !          56510: 
        !          56511: /*
        !          56512:  *
        !          56513:  * Writes an accounting record to *fp_acct, provided it's not NULL.
        !          56514:  *
        !          56515:  */
        !          56516: 
        !          56517:     if ( fp_acct != NULL )
        !          56518:        fprintf(fp_acct, " print %d\n copies %d\n", printed, copies);
        !          56519: 
        !          56520: }   /* End of account */
        !          56521: 
        !          56522: /*****************************************************************************/
        !          56523: 
        !          56524: conv()
        !          56525: 
        !          56526: {
        !          56527: 
        !          56528:     int                ch;                     /* next input character */
        !          56529: 
        !          56530: /*
        !          56531:  *
        !          56532:  * Controls the conversion of BGI files into PostScript. Not everything has been
        !          56533:  * implemented, but what's been done should be good enough for our purposes.
        !          56534:  *
        !          56535:  */
        !          56536: 
        !          56537:     redirect(-1);                      /* get ready for the first page */
        !          56538:     bgimode = 0;
        !          56539:     formfeed();
        !          56540: 
        !          56541:     while ( (ch = get_char()) != EOF )  {
        !          56542:        switch ( ch )  {
        !          56543:                case BRCHAR:                    /* rotated character mode */
        !          56544:                            bgimode = ch;
        !          56545:                            text(90);
        !          56546:                            break;
        !          56547: 
        !          56548:                case BCHAR:                     /* graphical character mode */
        !          56549:                            bgimode = ch;
        !          56550:                            text(0);
        !          56551:                            break;
        !          56552: 
        !          56553:                case BGRAPH:                    /* graphical master mode */
        !          56554:                            bgimode = ch;
        !          56555:                            break;
        !          56556: 
        !          56557:                case BSUB:                      /* subroutine definition */
        !          56558:                            subr_def();
        !          56559:                            break;
        !          56560: 
        !          56561:                case BRET:                      /* end of subroutine */
        !          56562:                            subr_end();
        !          56563:                            break;
        !          56564: 
        !          56565:                case BCALL:                     /* subroutine call */
        !          56566:                            subr_call();
        !          56567:                            break;
        !          56568: 
        !          56569:                case BEND:                      /* end display - page */
        !          56570:                            formfeed();
        !          56571:                            break;
        !          56572: 
        !          56573:                case BERASE:                    /* erase - shouldn't be used */
        !          56574:                            error(FATAL, "BGI erase opcode obsolete");
        !          56575:                            break;
        !          56576: 
        !          56577:                case BREP:                      /* repeat */
        !          56578:                            error(FATAL, "Repeat not implemented");
        !          56579:                            repeat();
        !          56580:                            break;
        !          56581: 
        !          56582:                case BSETX:                     /* new x coordinate */
        !          56583:                            hgoto(get_int(0));
        !          56584:                            break;
        !          56585: 
        !          56586:                case BSETY:                     /* new y coordinate */
        !          56587:                            vgoto(get_int(0));
        !          56588:                            break;
        !          56589: 
        !          56590:                case BSETXY:                    /* new x and y coordinates */
        !          56591:                            hgoto(get_int(0));
        !          56592:                            vgoto(get_int(0));
        !          56593:                            break;
        !          56594: 
        !          56595:                case BINTEN:                    /* mark the current point */
        !          56596:                            fprintf(fp_out, "%d %d p\n", hpos, vpos);
        !          56597:                            break;
        !          56598: 
        !          56599:                case BVISX:                     /* visible x */
        !          56600:                            vector(X_COORD, VISIBLE);
        !          56601:                            break;
        !          56602: 
        !          56603:                case BINVISX:                   /* invisible x */
        !          56604:                            vector(X_COORD, INVISIBLE);
        !          56605:                            break;
        !          56606: 
        !          56607:                case BVISY:                     /* visible y */
        !          56608:                            vector(Y_COORD, VISIBLE);
        !          56609:                            break;
        !          56610: 
        !          56611:                case BINVISY:                   /* invisible y */
        !          56612:                            vector(Y_COORD, INVISIBLE);
        !          56613:                            break;
        !          56614: 
        !          56615:                case BVEC:                      /* arbitrary vector */
        !          56616:                            vector(LONGVECTOR, VISIBLE);
        !          56617:                            break;
        !          56618: 
        !          56619:                case BSVEC:                     /* short vector */
        !          56620:                            vector(SHORTVECTOR, VISIBLE);
        !          56621:                            break;
        !          56622: 
        !          56623:                case BRECT:                     /* draw rectangle */
        !          56624:                            rectangle(OUTLINE);
        !          56625:                            break;
        !          56626: 
        !          56627:                case BPOINT1:                   /* point plot 1 */
        !          56628:                case BPOINT:                    /* point plot 2 */
        !          56629:                            point_plot(ch, get_char());
        !          56630:                            break;
        !          56631: 
        !          56632:                case BLINE:                     /* line plot */
        !          56633:                            line_plot();
        !          56634:                            break;
        !          56635: 
        !          56636:                case BLTY:                      /* line type */
        !          56637:                            fprintf(fp_out, "%s l\n", styles[get_data()]);
        !          56638:                            break;
        !          56639: 
        !          56640:                case BARC:                      /* circular arc */
        !          56641:                            arc(OUTLINE);
        !          56642:                            break;
        !          56643: 
        !          56644:                case BFARC:                     /* filled circle */
        !          56645:                            arc(FILL);
        !          56646:                            break;
        !          56647: 
        !          56648:                case BFRECT:                    /* filled rectangle */
        !          56649:                            rectangle(FILL);
        !          56650:                            break;
        !          56651: 
        !          56652:                case BRASRECT:                  /* raster rectangle */
        !          56653:                            error(FATAL, "Raster Rectangle not implemented");
        !          56654:                            break;
        !          56655: 
        !          56656:                case BCOL:                      /* select color */
        !          56657:                            set_color(get_data());
        !          56658:                            break;
        !          56659: 
        !          56660:                case BFTRAPH:                   /* filled trapezoid */
        !          56661:                            trapezoid();
        !          56662:                            break;
        !          56663: 
        !          56664:                case BPAT:                      /* pattern for area filling */
        !          56665:                            pattern();
        !          56666:                            break;
        !          56667: 
        !          56668:                case BCSZ:                      /* change BGI character 'size' */
        !          56669:                            setsize(get_data());
        !          56670:                            break;
        !          56671: 
        !          56672:                case BNOISE:                    /* from bad file format */
        !          56673:                            break;
        !          56674: 
        !          56675:                default:                        /* don't recognize the code */
        !          56676:                            error(FATAL, "bad BGI command %d (0%o)", ch, ch);
        !          56677:                            break;
        !          56678:        }   /* End switch */
        !          56679: 
        !          56680:        if ( debug == ON )
        !          56681:            fprintf(stderr, "\n");
        !          56682:     }  /* End while */
        !          56683: 
        !          56684:     formfeed();                                        /* in case BEND was missing */
        !          56685: 
        !          56686: }   /* End of conv */
        !          56687: 
        !          56688: /*****************************************************************************/
        !          56689: 
        !          56690: hgoto(n)
        !          56691: 
        !          56692:     int                n;                      /* new horizontal position */
        !          56693: 
        !          56694: {
        !          56695: 
        !          56696: /*
        !          56697:  *
        !          56698:  * Sets the current BGI horizontal position to n.
        !          56699:  *
        !          56700:  */
        !          56701: 
        !          56702:     hpos = n;
        !          56703: 
        !          56704: }   /* End of hgoto */
        !          56705: 
        !          56706: /*****************************************************************************/
        !          56707: 
        !          56708: vgoto(n)
        !          56709: 
        !          56710:     int                n;                      /* move to this vertical position */
        !          56711: 
        !          56712: {
        !          56713: 
        !          56714: /*
        !          56715:  *
        !          56716:  * Sets the absolute vertical position to n.
        !          56717:  * 
        !          56718:  */
        !          56719: 
        !          56720:     vpos = n;
        !          56721: 
        !          56722: }   /* End of vgoto */
        !          56723: 
        !          56724: /*****************************************************************************/
        !          56725: 
        !          56726: setsize(n)
        !          56727: 
        !          56728:     int                n;                      /* BGI size - just a grid separation */
        !          56729: 
        !          56730: {
        !          56731: 
        !          56732: /*
        !          56733:  *
        !          56734:  * Called when we're supposed to change the BGI character size to n. The BGI
        !          56735:  * size is the grid separation in a 5 by 7 array in which characters are assumed
        !          56736:  * to be built.
        !          56737:  *
        !          56738:  */
        !          56739: 
        !          56740:     bgisize = n;
        !          56741:     linespace = LINESPACE(bgisize);
        !          56742: 
        !          56743:     fprintf(fp_out, "%d f\n", bgisize);
        !          56744: 
        !          56745:     if ( debug == ON )
        !          56746:        fprintf(stderr, "BGI size = %d\n", n);
        !          56747: 
        !          56748: }   /* End of setsize */
        !          56749: 
        !          56750: /*****************************************************************************/
        !          56751: 
        !          56752: repeat()
        !          56753: 
        !          56754: {
        !          56755: 
        !          56756:     int                count;                  /* repeat this many times */
        !          56757:     int                ch;                     /* next input character */
        !          56758: 
        !          56759: /*
        !          56760:  *
        !          56761:  * Haven't implemented repeats, although it wouldn't be difficult. Apparently it's
        !          56762:  * not used by any graphics packages that generate BGI.
        !          56763:  *
        !          56764:  */
        !          56765: 
        !          56766:     count = get_int();                 /* get the repeat count */
        !          56767: 
        !          56768:     while ( (ch = get_char()) != EOF  &&  ch != BENDR ) ;
        !          56769: 
        !          56770: }   /* End of repeat */
        !          56771: 
        !          56772: /*****************************************************************************/
        !          56773: 
        !          56774: text(angle)
        !          56775: 
        !          56776:     int                angle;                  /* either 0 or 90 degrees */
        !          56777: 
        !          56778: {
        !          56779: 
        !          56780:     int                ch;                     /* next character from file *fp_in */
        !          56781: 
        !          56782: /*
        !          56783:  *
        !          56784:  * Called from conv() after we've entered one of the graphical character modes.
        !          56785:  * Characters are read from the input file and printed until the next mode change
        !          56786:  * opcode is found (or until EOF). angle will be 90 for rotated character mode
        !          56787:  * and 0 otherwise.
        !          56788:  *
        !          56789:  *
        !          56790:  */
        !          56791: 
        !          56792:     fprintf(fp_out, "%d %d %d(", angle, hpos, vpos);
        !          56793: 
        !          56794:     while ( (ch = get_char()) != EOF )  {
        !          56795:        if ( ch == BGRAPH || ch == BCHAR || ch == BRCHAR )  {
        !          56796:            ungetc(ch, fp_in);
        !          56797:            position--;
        !          56798:            break;
        !          56799:        }   /* End if */
        !          56800: 
        !          56801:        switch ( ch )  {
        !          56802:            case '\012':
        !          56803:                vgoto(vpos - linespace);
        !          56804: 
        !          56805:            case '\015':
        !          56806:                hgoto(0);
        !          56807:                fprintf(fp_out, ")t\n%d %d %d(", angle, hpos, vpos);
        !          56808:                break;
        !          56809: 
        !          56810:            case '(':
        !          56811:            case ')':
        !          56812:            case '\\':
        !          56813:                putc('\\', fp_out);
        !          56814: 
        !          56815:            default:
        !          56816:                if ( isascii(ch) && isprint(ch) )
        !          56817:                    putc(ch, fp_out);
        !          56818:                else fprintf(fp_out, "\\%.3o", ch & 0377);
        !          56819:                break;
        !          56820:        }   /* End switch */
        !          56821:     }  /* End while */
        !          56822: 
        !          56823:     fprintf(fp_out, ") t\n");
        !          56824: 
        !          56825: }   /* End of text */
        !          56826: 
        !          56827: /*****************************************************************************/
        !          56828: 
        !          56829: formfeed()
        !          56830: 
        !          56831: {
        !          56832: 
        !          56833:     int                ch;                     /* repeat count for this page */
        !          56834: 
        !          56835: /*
        !          56836:  *
        !          56837:  * Does whatever is needed to print the last page and get ready for the next one.
        !          56838:  * It's called, from conv(), after a BEND code is processed. I'm ignoring the
        !          56839:  * copy count that's expected to follow each page.
        !          56840:  *
        !          56841:  */
        !          56842: 
        !          56843:     if ( bgimode == BGRAPH && (ch = get_char()) != EOF  &&  ! (ch & MSB) )  {
        !          56844:        ungetc(ch, fp_in);
        !          56845:        position--;
        !          56846:     }  /* End if */
        !          56847: 
        !          56848:     if ( fp_out == stdout )            /* count the last page */
        !          56849:        printed++;
        !          56850: 
        !          56851:     fprintf(fp_out, "cleartomark\n");
        !          56852:     fprintf(fp_out, "showpage\n");
        !          56853:     fprintf(fp_out, "saveobj restore\n");
        !          56854:     fprintf(fp_out, "%s %d %d\n", ENDPAGE, page, printed);
        !          56855: 
        !          56856:     while ( (ch = get_char()) == 0 ) ; /* skip any NULL characters */
        !          56857:     ungetc(ch, fp_in);
        !          56858:     position--;
        !          56859: 
        !          56860:     if ( ungetc(getc(fp_in), fp_in) == EOF )
        !          56861:        redirect(-1);
        !          56862:     else redirect(++page);
        !          56863: 
        !          56864:     fprintf(fp_out, "%s %d %d\n", PAGE, page, printed+1);
        !          56865:     fprintf(fp_out, "/saveobj save def\n");
        !          56866:     fprintf(fp_out, "mark\n");
        !          56867:     writerequest(printed+1, fp_out);
        !          56868:     fprintf(fp_out, "%d pagesetup\n", printed+1);
        !          56869: 
        !          56870:     setsize(bgisize);
        !          56871:     hpos = vpos = 0;
        !          56872: 
        !          56873: }    /* End of formfeed */
        !          56874: 
        !          56875: /*****************************************************************************/
        !          56876: 
        !          56877: subr_def()
        !          56878: 
        !          56879: {
        !          56880: 
        !          56881: /*
        !          56882:  *
        !          56883:  * Starts a subroutine definition. All subroutines are defined as PostScript
        !          56884:  * procedures that begin with the character S and end with the subroutine's id
        !          56885:  * (a number between 0 and 63 - I guess). The primary, and perhaps only use of
        !          56886:  * subroutines is in special color plots produced by several graphics libraries,
        !          56887:  * and even there it's not all that common. I've also chosen not to worry about
        !          56888:  * nested subroutine definitions - that would certainly be overkill!
        !          56889:  *
        !          56890:  * All subroutines set up their own (translated) coordinate system, do their work
        !          56891:  * in that system, and restore things when they exit. To make everything work
        !          56892:  * properly we save the current point (in shpos and svpos), set our position to
        !          56893:  * (0, 0), and restore things at the end of the subroutine definition. That means
        !          56894:  * hpos and vpos measure the relative displacement after a subroutine returns, and
        !          56895:  * we save those values in the displacement[] array. The displacements are used
        !          56896:  * (in subr_call()) to properly adjust our position after each subroutine call,
        !          56897:  * and all subroutines are called with the current x and y coordinates on top of
        !          56898:  * the stack.
        !          56899:  *
        !          56900:  */
        !          56901: 
        !          56902:     if ( in_subr == TRUE )             /* a nested subroutine definition?? */
        !          56903:        error(FATAL, "can't handle nested subroutine definitions");
        !          56904: 
        !          56905:     if ( (subr_id = get_data()) == EOF )
        !          56906:        error(FATAL, "missing subroutine identifier");
        !          56907: 
        !          56908:     if ( in_global == FALSE )  {       /* just used to reduce file size some */
        !          56909:        fprintf(fp_out, "cleartomark\n");
        !          56910:        fprintf(fp_out, "saveobj restore\n");
        !          56911:        fprintf(fp_out, "%s", BEGINGLOBAL);
        !          56912:        in_global = TRUE;
        !          56913:     }  /* End if */
        !          56914: 
        !          56915:     fprintf(fp_out, "/S%d {\n", subr_id);
        !          56916:     fprintf(fp_out, "gsave translate\n");
        !          56917: 
        !          56918:     shpos = hpos;                      /* save our current position */
        !          56919:     svpos = vpos;
        !          56920: 
        !          56921:     hgoto(0);                          /* start at the origin */
        !          56922:     vgoto(0);
        !          56923: 
        !          56924:     in_subr = TRUE;                    /* in a subroutine definition */
        !          56925: 
        !          56926: }   /* End of subr_def */
        !          56927: 
        !          56928: /*****************************************************************************/
        !          56929: 
        !          56930: subr_end()
        !          56931: 
        !          56932: {
        !          56933: 
        !          56934:     int                ch;                     /* for looking at next opcode */
        !          56935: 
        !          56936: /*
        !          56937:  *
        !          56938:  * Handles stuff needed at the end of each subroutine. Want to remember the change
        !          56939:  * in horizontal and vertical positions for each subroutine so we can adjust our
        !          56940:  * position after each call - just in case. The current position was set to (0, 0)
        !          56941:  * before we started the subroutine definition, so when we get here hpos and vpos
        !          56942:  * are the relative displacements after the subroutine is called. They're saved in
        !          56943:  * the displacement[] array and used to adjust the current position when we return
        !          56944:  * from a subroutine.
        !          56945:  *
        !          56946:  */
        !          56947: 
        !          56948:     if ( in_subr == FALSE )            /* not in a subroutine definition?? */
        !          56949:        error(FATAL, "subroutine end without corresponding start");
        !          56950: 
        !          56951:     fprintf(fp_out, "grestore\n");
        !          56952:     fprintf(fp_out, "} def\n");
        !          56953: 
        !          56954:     if ( in_global == TRUE && (ch = get_char()) != BSUB )  {
        !          56955:        fprintf(fp_out, "%s", ENDGLOBAL);
        !          56956:        fprintf(fp_out, "/saveobj save def\n");
        !          56957:        fprintf(fp_out, "mark\n");
        !          56958:        in_global = FALSE;
        !          56959:     }  /* End if */
        !          56960: 
        !          56961:     ungetc(ch, fp_in);                 /* put back the next opcode */
        !          56962: 
        !          56963:     displacement[subr_id].dx = hpos;
        !          56964:     displacement[subr_id].dy = vpos;
        !          56965: 
        !          56966:     hgoto(shpos);                      /* back to where we started */
        !          56967:     vgoto(svpos);
        !          56968: 
        !          56969:     in_subr = FALSE;                   /* done with the definition */
        !          56970: 
        !          56971: }   /* End of subr_end */
        !          56972: 
        !          56973: /*****************************************************************************/
        !          56974: 
        !          56975: subr_call()
        !          56976: 
        !          56977: {
        !          56978: 
        !          56979:     int                ch;                     /* next byte from *fp_in */
        !          56980:     int                id;                     /* subroutine id if ch wasn't an opcode */
        !          56981: 
        !          56982: /*
        !          56983:  *
        !          56984:  * Handles subroutine calls. Everything that follows the BCALL opcode (up to the
        !          56985:  * next opcode) is taken as a subroutine identifier - thus the loop that generates
        !          56986:  * the subroutine calls.
        !          56987:  *
        !          56988:  */
        !          56989: 
        !          56990:     while ( (ch = get_char()) != EOF && (ch & MSB) )  {
        !          56991:        id = ch & DMASK;
        !          56992:        fprintf(fp_out, "%d %d S%d\n", hpos, vpos, id);
        !          56993: 
        !          56994:        hgoto(hpos + displacement[id].dx);      /* adjust our position */
        !          56995:        vgoto(vpos + displacement[id].dy);
        !          56996:     }  /* End while */
        !          56997: 
        !          56998:     ungetc(ch, fp_in);
        !          56999: 
        !          57000: }   /* End of subr_call */
        !          57001: 
        !          57002: /*****************************************************************************/
        !          57003: 
        !          57004: vector(var, mode)
        !          57005: 
        !          57006:     int                var;                    /* coordinate that varies next? */
        !          57007:     int                mode;                   /* VISIBLE or INVISIBLE vectors */
        !          57008: 
        !          57009: {
        !          57010: 
        !          57011:     int                ch;                     /* next character from *fp_in */
        !          57012:     int                x, y;                   /* line drawn to this point */
        !          57013:     int                count = 0;              /* number of points so far */
        !          57014: 
        !          57015: /*
        !          57016:  *
        !          57017:  * Handles plotting of all types of BGI vectors. If it's a manhattan vector var
        !          57018:  * specifies which coordinate will be changed by the next number in the input
        !          57019:  * file.
        !          57020:  *
        !          57021:  */
        !          57022: 
        !          57023:     x = hpos;                          /* set up the first point */
        !          57024:     y = vpos;
        !          57025: 
        !          57026:     while ( (ch = get_char()) != EOF  &&  ch & MSB )  {
        !          57027:        if ( var == X_COORD )           /* next length is change in x */
        !          57028:            x += get_int(ch);
        !          57029:        else if ( var == Y_COORD )      /* it's the change in y */
        !          57030:            y += get_int(ch);
        !          57031:        else if ( var == LONGVECTOR )  {        /* long vector */
        !          57032:            x += get_int(ch);
        !          57033:            y += get_int(0);
        !          57034:        } else {                        /* must be a short vector */
        !          57035:            x += ((ch & MSBMAG) * ((ch & SGNB) ? -1 : 1));
        !          57036:            y += (((ch = get_data()) & MSBMAG) * ((ch & SGNB) ? -1 : 1));
        !          57037:        }   /* End else */
        !          57038: 
        !          57039:        if ( mode == VISIBLE )  {       /* draw the line segment */
        !          57040:            fprintf(fp_out, "%d %d\n", hpos - x, vpos - y);
        !          57041:            count++;
        !          57042:        }   /* End if */
        !          57043: 
        !          57044:        hgoto(x);                       /* adjust the current BGI position */
        !          57045:        vgoto(y);
        !          57046: 
        !          57047:        if ( var == X_COORD )           /* vertical length comes next */
        !          57048:            var = Y_COORD;
        !          57049:        else if ( var == Y_COORD )      /* change horizontal next */
        !          57050:            var = X_COORD;
        !          57051:     }  /* End while */
        !          57052: 
        !          57053:     if ( count > 0 )
        !          57054:        fprintf(fp_out, "%d %d v\n", hpos, vpos);
        !          57055: 
        !          57056:     ungetc(ch, fp_in);                 /* it wasn't part of the vector */
        !          57057:     position--;
        !          57058: 
        !          57059: }   /* End of vector */
        !          57060: 
        !          57061: /*****************************************************************************/
        !          57062: 
        !          57063: rectangle(mode)
        !          57064: 
        !          57065:     int                mode;                   /* FILL or OUTLINE the rectangle */
        !          57066: 
        !          57067: {
        !          57068: 
        !          57069:     int                deltax;                 /* displacement for horizontal side */
        !          57070:     int                deltay;                 /* same but for vertical sides */
        !          57071: 
        !          57072: /*
        !          57073:  *
        !          57074:  * Draws a rectangle and either outlines or fills it, depending on the value of
        !          57075:  * mode. Would be clearer, and perhaps better, if {stroke} or {fill} were put on
        !          57076:  * the stack instead of 0 or 1. R could then define the path and just do an exec
        !          57077:  * to fill or stroke it.
        !          57078:  *
        !          57079:  */
        !          57080: 
        !          57081:     deltax = get_int(0);               /* get the height and width */
        !          57082:     deltay = get_int(0);
        !          57083: 
        !          57084:     if ( mode == OUTLINE )
        !          57085:        fprintf(fp_out, "0 %d %d %d %d R\n", deltax, deltay, hpos, vpos);
        !          57086:     else fprintf(fp_out, "1 %d %d %d %d R\n", deltax, deltay, hpos, vpos);
        !          57087: 
        !          57088: }   /* End of rectangle */
        !          57089: 
        !          57090: /*****************************************************************************/
        !          57091: 
        !          57092: trapezoid()
        !          57093: 
        !          57094: {
        !          57095: 
        !          57096:     int                kind;                   /* which sides are parallel */
        !          57097:     int                d[6];                   /* true displacements - depends on kind */
        !          57098: 
        !          57099: /*
        !          57100:  *
        !          57101:  * Handles filled trapeziods. A data byte of 0101 following the opcode means the
        !          57102:  * horizontal sides are parallel, 0102 means the vertical sides are parallel.
        !          57103:  * Filling is handled by eofill so we don't need to get things in the right order.
        !          57104:  *
        !          57105:  */
        !          57106: 
        !          57107:     kind = get_data();
        !          57108: 
        !          57109:     d[0] = get_int(0);
        !          57110:     d[1] = 0;
        !          57111:     d[2] = get_int(0);
        !          57112:     d[3] = get_int(0);
        !          57113:     d[4] = get_int(0);
        !          57114:     d[5] = 0;
        !          57115: 
        !          57116:     if ( kind == 2 )  {                        /* parallel sides are vertical */
        !          57117:        d[1] = d[0];
        !          57118:        d[0] = 0;
        !          57119:        d[5] = d[4];
        !          57120:        d[4] = 0;
        !          57121:     }  /* End if */
        !          57122: 
        !          57123:     fprintf(fp_out, "%d %d %d %d %d %d %d %d T\n", d[4], d[5], d[2], d[3], d[0], d[1], hpos, vpos);
        !          57124: 
        !          57125: }   /* End of trapezoid */
        !          57126: 
        !          57127: /*****************************************************************************/
        !          57128: 
        !          57129: point_plot(mode, ch)
        !          57130: 
        !          57131:     int                mode;                   /* plotting mode BPOINT or BPOINT1 */
        !          57132:     int                ch;                     /* will be placed at the points */
        !          57133: 
        !          57134: {
        !          57135: 
        !          57136:     int                c;                      /* next character from input file */
        !          57137:     int                x, y;                   /* ch gets put here next */
        !          57138:     int                deltax;                 /* x increment for BPOINT1 mode */
        !          57139: 
        !          57140: /*
        !          57141:  *
        !          57142:  * The two point plot modes are used to place a character at selected points. The
        !          57143:  * difference in the two modes, namely BPOINT and BPOINT1, is the way we get the
        !          57144:  * coordinates of the next point. In BPOINT1 the two bytes immediately following
        !          57145:  * ch select a constant horizontal change, while both coordinates are given for
        !          57146:  * all points in BPOINT mode.
        !          57147:  *
        !          57148:  */
        !          57149: 
        !          57150:     if ( mode == BPOINT1 )  {          /* first integer is change in x */
        !          57151:        deltax = get_int(0);
        !          57152:        x = hpos - deltax;
        !          57153:     }  /* End if */
        !          57154: 
        !          57155:     while ( (c = get_char()) != EOF  &&  (c & MSB) )  {
        !          57156:        if ( mode == BPOINT1 )  {       /* only read y coordinate */
        !          57157:            y = get_int(c);
        !          57158:            x += deltax;
        !          57159:        } else {                        /* get new x and y from input file */
        !          57160:            x = get_int(c);
        !          57161:            y = get_int(0);
        !          57162:        }   /* End else */
        !          57163: 
        !          57164:        hgoto(x);                       /* adjust BGI position */
        !          57165:        vgoto(y);
        !          57166: 
        !          57167:        fprintf(fp_out, "%d %d\n", hpos, vpos);
        !          57168:     }  /* End while */
        !          57169: 
        !          57170:     putc('(', fp_out);
        !          57171: 
        !          57172:     switch ( ch )  {
        !          57173:        case '(':
        !          57174:        case ')':
        !          57175:        case '\\':
        !          57176:                putc('\\', fp_out);
        !          57177: 
        !          57178:        default:
        !          57179:                putc(ch, fp_out);
        !          57180:     }  /* End switch */
        !          57181: 
        !          57182:     fprintf(fp_out, ")pp\n");
        !          57183: 
        !          57184:     ungetc(c, fp_in);                  /* it wasn't part of the point plot */
        !          57185:     position--;
        !          57186: 
        !          57187: }   /* End of point_plot */
        !          57188: 
        !          57189: /*****************************************************************************/
        !          57190: 
        !          57191: line_plot()
        !          57192: 
        !          57193: {
        !          57194: 
        !          57195:     int                c;                      /* next input character from fp_in */
        !          57196:     int                deltax;                 /* change in x coordinate */
        !          57197:     int                x0, y0;                 /* starting point for next segment */
        !          57198:     int                x1, y1;                 /* endpoint of the line */
        !          57199:     int                count = 0;              /* number of points so far */
        !          57200: 
        !          57201: /*
        !          57202:  *
        !          57203:  * Essentially the same format as BPOINT1, except that in this case we connect
        !          57204:  * pairs of points by line segments.
        !          57205:  *
        !          57206:  */
        !          57207: 
        !          57208:     deltax = get_int(0);               /* again the change in x is first */
        !          57209: 
        !          57210:     x1 = hpos;                         /* so it works first time through */
        !          57211:     y1 = get_int(0);
        !          57212: 
        !          57213:     while ( (c = get_char()) != EOF  &&  (c & MSB) )  {
        !          57214:        x0 = x1;                        /* line starts here */
        !          57215:        y0 = y1;
        !          57216: 
        !          57217:        x1 += deltax;                   /* and ends at this point */
        !          57218:        y1 = get_int(c);
        !          57219: 
        !          57220:        fprintf(fp_out, "%d %d\n", -deltax, y0 - y1);
        !          57221:        count++;
        !          57222:     }  /* End while */
        !          57223: 
        !          57224:     hgoto(x1);                         /* adjust current BGI position */
        !          57225:     vgoto(y1);
        !          57226: 
        !          57227:     if ( count > 0 )
        !          57228:        fprintf(fp_out, "%d %d v\n", hpos, vpos);
        !          57229: 
        !          57230:     ungetc(c, fp_in);                  /* wasn't part of the line */
        !          57231:     position--;
        !          57232: 
        !          57233: }   /* End of line_plot */
        !          57234: 
        !          57235: /*****************************************************************************/
        !          57236: 
        !          57237: arc(mode)
        !          57238: 
        !          57239:     int                mode;                   /* FILL or OUTLINE the path */
        !          57240: 
        !          57241: {
        !          57242: 
        !          57243:     int                dx1, dy1;               /* displacements for first point */
        !          57244:     int                dx2, dy2;               /* same for the second point */
        !          57245:     int                radius;                 /* of the arc */
        !          57246:     int                angle1, angle2;         /* starting and ending angles */
        !          57247: 
        !          57248: /*
        !          57249:  *
        !          57250:  * Called whenever we need to draw an arc. I'm ignoring filled slices for now.
        !          57251:  *
        !          57252:  */
        !          57253: 
        !          57254:     dx1 = get_int(0);                  /* displacements relative to center */
        !          57255:     dy1 = get_int(0);
        !          57256:     dx2 = get_int(0);
        !          57257:     dy2 = get_int(0);
        !          57258: 
        !          57259:     radius = get_int(0);               /* and the radius */
        !          57260: 
        !          57261:     if ( radius == 0 )                 /* nothing to do */
        !          57262:        return;
        !          57263: 
        !          57264:     angle1 = (atan2((double) dy1, (double) dx1) * 360) / (2 * PI) + .5;
        !          57265:     angle2 = (atan2((double) dy2, (double) dx2) * 360) / (2 * PI) + .5;
        !          57266: 
        !          57267:     fprintf(fp_out, "%d %d %d %d %d arcn stroke\n", hpos, vpos, radius, angle1, angle2);
        !          57268: 
        !          57269: }   /* End of arc */
        !          57270: 
        !          57271: /*****************************************************************************/
        !          57272: 
        !          57273: pattern()
        !          57274: 
        !          57275: {
        !          57276: 
        !          57277:     double     red = 0;                /* color components */
        !          57278:     double     green = 0;
        !          57279:     double     blue = 0;
        !          57280:     int                kind;                   /* corse or fine pattern */
        !          57281:     int                val;                    /* next color data byte */
        !          57282:     int                i;                      /* loop index */
        !          57283: 
        !          57284: /*
        !          57285:  *
        !          57286:  * Handles patterns by setting the current color based of the values assigned to
        !          57287:  * the next four data bytes. BGI supports two kinds of patterns (fine or coarse)
        !          57288:  * but I'm handling each in the same way - for now. In a fine pattern the four
        !          57289:  * data bytes assign a color to four individual pixels (upperleft first) while
        !          57290:  * in a coarse pattern the four colors are assigned to groups of four pixels,
        !          57291:  * for a total of 16. Again the first color goes to the group in the upper left
        !          57292:  * corner. The byte immediately following the BPAT opcode selects fine (040) or
        !          57293:  * coarse (041) patterns. The PostScript RGB color is assigned by averaging the
        !          57294:  * RED, GREEN, and BLUE components assigned to the four pixels (or groups of
        !          57295:  * pixels). Acceptable results, but there's no distinction between fine and
        !          57296:  * coarse patterns.
        !          57297:  *
        !          57298:  */
        !          57299: 
        !          57300:     if ( (kind = get_char()) == EOF )
        !          57301:        error(FATAL, "bad pattern command");
        !          57302: 
        !          57303:     for ( i = 0; i < 4; i++ )  {
        !          57304:        val = get_data();
        !          57305:        red += get_color(val, RED);
        !          57306:        green += get_color(val, GREEN);
        !          57307:        blue += get_color(val, BLUE);
        !          57308:     }  /* End for */
        !          57309: 
        !          57310:     fprintf(fp_out, "%g %g %g c\n", red/4, green/4, blue/4);
        !          57311: 
        !          57312: }   /* End of pattern */
        !          57313: 
        !          57314: /*****************************************************************************/
        !          57315: 
        !          57316: get_color(val, component)
        !          57317: 
        !          57318:     int                val;                    /* color data byte */
        !          57319:     int                component;              /* RED, GREEN, or BLUE component */
        !          57320: 
        !          57321: {
        !          57322: 
        !          57323: 
        !          57324:     int                primary;                /* color mixing mode - bits 2 to 4 */
        !          57325:     int                plane;                  /* primary color plane - bits 5 to 7 */
        !          57326:     unsigned   rgbcolor;               /* PostScript expects an RGB triple */
        !          57327: 
        !          57328: /*
        !          57329:  *
        !          57330:  * Picks the requested color component (RED, GREEN, or BLUE) from val and returns
        !          57331:  * the result to the caller. BGI works with Cyan, Yellow, and Magenta so the one's
        !          57332:  * complement stuff (following the exclusive or'ing) recovers the RED, BLUE, and
        !          57333:  * GREEN components that PostScript's setrgbcolor operator needs. The PostScript
        !          57334:  * interpreter in the ColorScript 100 has a setcmycolor operator, but it's not
        !          57335:  * generally available so I've decided to stick with setrgbcolor.
        !          57336:  *
        !          57337:  */
        !          57338: 
        !          57339:     primary = (val >> 3) & 07;
        !          57340:     plane = val & 07;
        !          57341:     rgbcolor = (~(primary ^ plane)) & 07;
        !          57342: 
        !          57343:     if ( debug == ON )
        !          57344:        fprintf(stderr, "val = %o, primary = %o, plane = %o, rgbcolor = %o\n",
        !          57345:                val, primary, plane, rgbcolor);
        !          57346: 
        !          57347:     switch ( component )  {
        !          57348:        case RED:
        !          57349:                return(rgbcolor>>2);
        !          57350: 
        !          57351:        case GREEN:
        !          57352:                return(rgbcolor&01);
        !          57353: 
        !          57354:        case BLUE:
        !          57355:                return((rgbcolor>>1)&01);
        !          57356: 
        !          57357:        default:
        !          57358:                error(FATAL, "unknown color component");
        !          57359:                return(0);
        !          57360:     }  /* End switch */
        !          57361: 
        !          57362: }   /* End of get_color */
        !          57363: 
        !          57364: /*****************************************************************************/
        !          57365: 
        !          57366: set_color(val)
        !          57367: 
        !          57368:     int                val;                    /* color data byte */
        !          57369: 
        !          57370: {
        !          57371: 
        !          57372: /*
        !          57373:  *
        !          57374:  * Arranges to have the color set to the value requested in the BGI data byte val.
        !          57375:  *
        !          57376:  */
        !          57377: 
        !          57378:     fprintf(fp_out, "%d %d %d c\n", get_color(val, RED), get_color(val, GREEN), get_color(val, BLUE));
        !          57379: 
        !          57380: }   /* End of set_color */
        !          57381: 
        !          57382: /*****************************************************************************/
        !          57383: 
        !          57384: get_int(highbyte)
        !          57385: 
        !          57386:     int                highbyte;               /* already read this byte */
        !          57387: 
        !          57388: {
        !          57389: 
        !          57390:     int                lowbyte;                /* this and highbyte make the int */
        !          57391: 
        !          57392: /*
        !          57393:  *
        !          57394:  * Figures out the value on the integer (sign magnitude form) that's next in the
        !          57395:  * input file. If highbyte is nonzero we'll use it and the next byte to build the
        !          57396:  * integer, otherwise two bytes are read from fp_in.
        !          57397:  *
        !          57398:  */
        !          57399: 
        !          57400: 
        !          57401:     if ( highbyte == 0 )               /* need to read the first byte */
        !          57402:        highbyte = get_data();
        !          57403: 
        !          57404:     lowbyte = get_data();              /* always need the second byte */
        !          57405: 
        !          57406:     return(highbyte & SGNB ? -MAG(highbyte, lowbyte) : MAG(highbyte, lowbyte));
        !          57407: 
        !          57408: }   /* End of get_int */
        !          57409: 
        !          57410: /*****************************************************************************/
        !          57411: 
        !          57412: get_data()
        !          57413: 
        !          57414: {
        !          57415: 
        !          57416:     int                val;                    /* data value returned to caller */
        !          57417: 
        !          57418: /*
        !          57419:  *
        !          57420:  * Called when we expect to find a single data character in the input file. The
        !          57421:  * data bit is turned off and the resulting value is returned to the caller.
        !          57422:  *
        !          57423:  */
        !          57424: 
        !          57425:     if ( (val = get_char()) == EOF  ||  ! (val & MSB) )
        !          57426:        error(FATAL, "missing data value");
        !          57427: 
        !          57428:     return(val & DMASK);
        !          57429: 
        !          57430: }   /* End of get_data */
        !          57431: 
        !          57432: /*****************************************************************************/
        !          57433: 
        !          57434: get_char()
        !          57435: 
        !          57436: {
        !          57437: 
        !          57438:     int                ch;                     /* character we just read */
        !          57439: 
        !          57440: /*
        !          57441:  *
        !          57442:  * Reads the next character from file *fp_in and returns the value to the caller.
        !          57443:  * This routine isn't really needed, but we may want to deal directly with some
        !          57444:  * screwball file formats so I thought it would probably be a good idea to isolate
        !          57445:  * all the input in one routine that could be easily changed.
        !          57446:  *
        !          57447:  */
        !          57448: 
        !          57449:     if ( (ch = getc(fp_in)) != EOF )  {
        !          57450:        position++;
        !          57451:        ch &= CHMASK;
        !          57452:     }  /* End if */
        !          57453: 
        !          57454:     if ( debug == ON )
        !          57455:        fprintf(stderr, "%o ", ch);
        !          57456: 
        !          57457:     return(ch);
        !          57458: 
        !          57459: }   /* End of get_char */
        !          57460: 
        !          57461: /*****************************************************************************/
        !          57462: 
        !          57463: redirect(pg)
        !          57464: 
        !          57465:     int                pg;                     /* next page we're printing */
        !          57466: 
        !          57467: {
        !          57468: 
        !          57469:     static FILE        *fp_null = NULL;        /* if output is turned off */
        !          57470: 
        !          57471: /*
        !          57472:  *
        !          57473:  * If we're not supposed to print page pg, fp_out will be directed to /dev/null,
        !          57474:  * otherwise output goes to stdout.
        !          57475:  *
        !          57476:  */
        !          57477: 
        !          57478:     if ( pg >= 0 && in_olist(pg) == ON )
        !          57479:        fp_out = stdout;
        !          57480:     else if ( (fp_out = fp_null) == NULL )
        !          57481:        fp_out = fp_null = fopen("/dev/null", "w");
        !          57482: 
        !          57483: }   /* End of redirect */
        !          57484: 
        !          57485: /*****************************************************************************/
        !          57486: 
        !          57487: 0707070014230265651006440057030057030000010675520522627503400003300000012631post.src/postbgi/postbgi.h/*
        !          57488:  *
        !          57489:  * BGI opcodes.
        !          57490:  *
        !          57491:  */
        !          57492: 
        !          57493: #define BRCHAR         033             /* rotated character mode */
        !          57494: #define BCHAR          034             /* graphical character mode */
        !          57495: #define BGRAPH         035             /* graphical master mode */
        !          57496: 
        !          57497: #define BSUB           042             /* subroutine definition */
        !          57498: #define BRET           043             /* end of subroutine */
        !          57499: #define BCALL          044             /* subroutine call */
        !          57500: 
        !          57501: #define BEND           045             /* end page */
        !          57502: #define BERASE         046             /* erase - obsolete */
        !          57503: #define BREP           047             /* repeat */
        !          57504: #define BENDR          050             /* end repeat */
        !          57505: 
        !          57506: #define BSETX          051             /* set horizontal position */
        !          57507: #define BSETY          052             /* set vertical position */
        !          57508: #define BSETXY         053             /* set horizontal and vertical positions */
        !          57509: #define BINTEN         054             /* intensify - mark current pixel */
        !          57510: 
        !          57511: #define BVISX          055             /* manhattan vector - change x first */
        !          57512: #define BINVISX                056             /* same as BVISX but nothing drawn */
        !          57513: #define BVISY          057             /* manhattan vector - change y first */
        !          57514: #define BINVISY                060             /* same as BVISY but nothing drawn */
        !          57515: 
        !          57516: #define BVEC           061             /* arbitrary long vector */
        !          57517: #define BSVEC          062             /* arbitrary short vector */
        !          57518: #define BRECT          063             /* outline rectangle */
        !          57519: #define BPOINT1                064             /* point plot - mode 1 */
        !          57520: #define BPOINT         065             /* point plot - mode 2 */
        !          57521: #define BLINE          066             /* line plot */
        !          57522: 
        !          57523: #define BCSZ           067             /* set character size */
        !          57524: #define BLTY           070             /* select line type */
        !          57525: #define BARC           071             /* draw circular arc */
        !          57526: #define BFARC          072             /* filled circular arc */
        !          57527: #define BFRECT         073             /* filled rectangle */
        !          57528: #define BRASRECT       074             /* raster rectangle */
        !          57529: #define BCOL           075             /* select color */
        !          57530: #define BFTRAPH                076             /* filled trapezoid */
        !          57531: #define BPAT           077             /* pattern are for filling - no info */
        !          57532: 
        !          57533: #define BNOISE         0               /* from bad file format */
        !          57534: 
        !          57535: /*
        !          57536:  *
        !          57537:  * Character size is controlled by the spacing of dots in a 5x7 dot matrix, which
        !          57538:  * by default is set to BGISIZE.
        !          57539:  *
        !          57540:  */
        !          57541: 
        !          57542: #define BGISIZE                2               /* default character grid spacing */
        !          57543: 
        !          57544: /*
        !          57545:  *
        !          57546:  * Definitions used to decode the bytes read from a BGI file.
        !          57547:  *
        !          57548:  */
        !          57549: 
        !          57550: #define CHMASK         0177            /* characters only use 7 bits */
        !          57551: #define DMASK          077             /* data values use lower 6 bits */
        !          57552: #define MSB            0100            /* used to check for data or opcode */
        !          57553: #define SGNB           040             /* sign bit for integers */
        !          57554: #define MSBMAG         037             /* mag of most sig byte in a BGI int */
        !          57555: 
        !          57556: /*
        !          57557:  *
        !          57558:  * Descriptions of BGI vectors and what's done when they're drawn.
        !          57559:  *
        !          57560:  */
        !          57561: 
        !          57562: #define X_COORD                0               /* change x next in manhattan vector */
        !          57563: #define Y_COORD                1               /* same but y change comes next */
        !          57564: #define LONGVECTOR     2               /* arbitrary long vector */
        !          57565: #define SHORTVECTOR    3               /* components given in 6 bits */
        !          57566: 
        !          57567: #define VISIBLE                0               /* really draw the vector */
        !          57568: #define INVISIBLE      1               /* just move the current position */
        !          57569: 
        !          57570: /*
        !          57571:  *
        !          57572:  * What's done with a closed path.
        !          57573:  *
        !          57574:  */
        !          57575: 
        !          57576: #define OUTLINE                0               /* outline the defined path */
        !          57577: #define FILL           1               /* fill it in */
        !          57578: 
        !          57579: /*
        !          57580:  *
        !          57581:  * BGI line style definitions. They're used as an index into the STYLES array,
        !          57582:  * which really belongs in the prologue.
        !          57583:  *
        !          57584:  */
        !          57585: 
        !          57586: #define SOLID          0
        !          57587: #define DOTTED         1
        !          57588: #define SHORTDASH      2
        !          57589: #define DASH           3
        !          57590: #define LONGDASH       4
        !          57591: #define DOTDASH                5
        !          57592: #define THREEDOT       6
        !          57593: 
        !          57594: #define STYLES                                                         \
        !          57595:                                                                        \
        !          57596:        {                                                               \
        !          57597:            "[]",                                                       \
        !          57598:            "[.5 2]",                                                   \
        !          57599:            "[2 4]",                                                    \
        !          57600:            "[4 4]",                                                    \
        !          57601:            "[8 4]",                                                    \
        !          57602:            "[.5 2 4 2]",                                               \
        !          57603:            "[.5 2 .5 2 .5 2 4 2]"                                      \
        !          57604:        }
        !          57605: 
        !          57606: /*
        !          57607:  *
        !          57608:  * Three constants used to choose which component (RED, GREEN, or BLUE) we're
        !          57609:  * interested in. BGI colors are specified as a single data byte and pulling a
        !          57610:  * particular  component out of the BGI color byte is handled by procedure
        !          57611:  * get_color().
        !          57612:  *
        !          57613:  */
        !          57614: 
        !          57615: #define RED            0
        !          57616: #define GREEN          1
        !          57617: #define BLUE           2
        !          57618: 
        !          57619: /*
        !          57620:  *
        !          57621:  * An array of type Disp is used to save the horizontal and vertical displacements
        !          57622:  * that result after a subroutine has been called. Needed so we can properly adjust
        !          57623:  * our horizontal and vertical positions after a subroutine call. Entries are made
        !          57624:  * immediately after a subroutine is defined and used after the call. Subroutine
        !          57625:  * names are integers that range from 0 to 63 (assigned in the BG file) and the
        !          57626:  * name is used as an index into the Disp array when we save or retrieve the
        !          57627:  * displacement.
        !          57628:  *
        !          57629:  */
        !          57630: 
        !          57631: typedef struct {
        !          57632:        int     dx;                     /* horizontal and */
        !          57633:        int     dy;                     /* vertical displacements */
        !          57634: } Disp;
        !          57635: 
        !          57636: /*
        !          57637:  *
        !          57638:  * An array of type Fontmap helps convert font names requested by users into
        !          57639:  * legitimate PostScript names. The array is initialized using FONTMAP, which must
        !          57640:  * end with and entry that has NULL defined as its name field.
        !          57641:  *
        !          57642:  */
        !          57643: 
        !          57644: typedef struct {
        !          57645:        char    *name;                  /* user's font name */
        !          57646:        char    *val;                   /* corresponding PostScript name */
        !          57647: } Fontmap;
        !          57648: 
        !          57649: #define FONTMAP                                                                \
        !          57650:                                                                        \
        !          57651:        {                                                               \
        !          57652:            "R", "Courier",                                             \
        !          57653:            "I", "Courier-Oblique",                                     \
        !          57654:            "B", "Courier-Bold",                                        \
        !          57655:            "CO", "Courier",                                            \
        !          57656:            "CI", "Courier-Oblique",                                    \
        !          57657:            "CB", "Courier-Bold",                                       \
        !          57658:            "CW", "Courier",                                            \
        !          57659:            "PO", "Courier",                                            \
        !          57660:            "courier", "Courier",                                       \
        !          57661:            "cour", "Courier",                                          \
        !          57662:            "co", "Courier",                                            \
        !          57663:            NULL, NULL                                                  \
        !          57664:        }
        !          57665: 
        !          57666: /*
        !          57667:  *
        !          57668:  * Two macros that are useful in processing BGI files:
        !          57669:  *
        !          57670:  *       MAG(A, B)    - Takes bytes A and B which have been read from a BGI file
        !          57671:  *                      and returns the magnitude of the integer represented by
        !          57672:  *                      the two bytes.
        !          57673:  *
        !          57674:  *       LINESPACE(A) - Takes BGI size A and returns the number of address units
        !          57675:  *                      that can be used for a reasonable interline spacing.
        !          57676:  *
        !          57677:  */
        !          57678: 
        !          57679: #define MAG(A, B)      (((A & MSBMAG) << 6) | (B & DMASK))
        !          57680: #define LINESPACE(A)   (8 * A)
        !          57681: 
        !          57682: /*
        !          57683:  *
        !          57684:  * Some of the non-integer valued functions in postdmd.c.
        !          57685:  *
        !          57686:  */
        !          57687: 
        !          57688: char   *get_font();
        !          57689: 
        !          57690: 0707070014230265661006440057030057030000010677100522627503400003000000001447post.src/postbgi/README
        !          57691: BGI (Basic Graphical Instructions) to PostScript translator. Probably
        !          57692: not useful outside the Computer Centers. Added code to tie lines to
        !          57693: device space coordinates. Helps eliminate variations in line widths
        !          57694: noticeable when users selected a non-zero linewidth with the -w option.
        !          57695: 
        !          57696: Much that was omitted from early versions of the program has been
        !          57697: implemented. What's in place will handle most STARE (black and white)
        !          57698: and PRISM (color) BGI jobs. PRISM jobs often fill regions with color,
        !          57699: and need require device specific tuning to get things just right. An
        !          57700: easy solution is add "-P/prism true def" option to the postbgi command
        !          57701: line when you translate PRISM jobs.
        !          57702: 
        !          57703: A typical command line for STARE jobs would be,
        !          57704: 
        !          57705:        postbgi file >file.ps
        !          57706: 
        !          57707: while for PRISM jobs use,
        !          57708: 
        !          57709:        postbgi -P"/prism true def" file >file.ps
        !          57710: 
        !          57711: 0707070014230266641006400057030057030000010700100522633075200003300000010325post.src/postbgi/postbgi.1.ds dQ /usr/lib/postscript
        !          57712: .TH POSTBGI 1 "DWB 3.2"
        !          57713: .SH NAME
        !          57714: .B postbgi
        !          57715: \- PostScript translator for
        !          57716: .SM BGI
        !          57717: (Basic Graphical Instructions) files
        !          57718: .SH SYNOPSIS
        !          57719: \*(mBpostbgi\f1
        !          57720: .OP "" options []
        !          57721: .OP "" files []
        !          57722: .SH DESCRIPTION
        !          57723: .B postbgi
        !          57724: translates
        !          57725: .SM BGI
        !          57726: (Basic Graphical Instructions)
        !          57727: .I files
        !          57728: into PostScript and writes the results on the
        !          57729: standard output.
        !          57730: If no
        !          57731: .I files
        !          57732: are specified, or if
        !          57733: .OP \-
        !          57734: is one of the input
        !          57735: .IR files ,
        !          57736: the standard input is read.
        !          57737: The following
        !          57738: .I options
        !          57739: are understood:
        !          57740: .TP 0.75i
        !          57741: .OP \-c num
        !          57742: Print
        !          57743: .I num
        !          57744: copies of each page.
        !          57745: By default only one copy is printed.
        !          57746: .TP
        !          57747: .OP \-f name
        !          57748: Print text using font
        !          57749: .IR name .
        !          57750: Any PostScript font can be used,
        !          57751: although the best results will only be
        !          57752: obtained with constant width fonts.
        !          57753: The default font is Courier.
        !          57754: .TP
        !          57755: .OP \-m num
        !          57756: Magnify each logical page by the factor
        !          57757: .IR num .
        !          57758: Pages are scaled uniformly about the origin,
        !          57759: which by default is located at the center of
        !          57760: each page.
        !          57761: The default magnification is 1.0.
        !          57762: .TP
        !          57763: .OP \-n num
        !          57764: Print
        !          57765: .I num
        !          57766: logical pages on each piece of paper,
        !          57767: where
        !          57768: .I num
        !          57769: can be any positive integer.
        !          57770: By default
        !          57771: .I num
        !          57772: is set to 1.
        !          57773: .TP
        !          57774: .OP \-o list
        !          57775: Print pages whose numbers are given in the comma-separated
        !          57776: .IR list .
        !          57777: The list contains single numbers
        !          57778: .I N
        !          57779: and ranges
        !          57780: .IR N1\-\|N2 .
        !          57781: A missing
        !          57782: .I N1
        !          57783: means the lowest numbered page, a missing
        !          57784: .I N2
        !          57785: means the highest.
        !          57786: .TP
        !          57787: .OP \-p mode
        !          57788: Print
        !          57789: .I files
        !          57790: in either \*(mBportrait\fP or \*(mBlandscape\fP
        !          57791: .IR mode .
        !          57792: Only the first character of
        !          57793: .I mode
        !          57794: is significant.
        !          57795: The default
        !          57796: .I mode
        !          57797: is \*(mBportrait\fP.
        !          57798: .TP
        !          57799: .OP \-w num
        !          57800: Set the line width used for graphics to
        !          57801: .I num
        !          57802: points, where a point is approximately 1/72
        !          57803: of an inch.
        !          57804: By default
        !          57805: .I num
        !          57806: is set to 0 points, which forces lines to be
        !          57807: one pixel wide.
        !          57808: .TP
        !          57809: .OP \-x num
        !          57810: Translate the origin
        !          57811: .I num
        !          57812: inches along the positive x axis.
        !          57813: The default
        !          57814: coordinate system has the origin fixed at the
        !          57815: center of the page, with positive
        !          57816: x to the right and positive y up the page.
        !          57817: Positive
        !          57818: .I num
        !          57819: moves everything right.
        !          57820: The default offset is 0 inches.
        !          57821: .TP
        !          57822: .OP \-y num
        !          57823: Translate the origin
        !          57824: .I num
        !          57825: inches along the positive y axis.
        !          57826: Positive
        !          57827: .I num
        !          57828: moves everything up the page.
        !          57829: The default offset is 0 inches.
        !          57830: .TP
        !          57831: .OP \-E name
        !          57832: Set the character encoding for text fonts to
        !          57833: .IR name .
        !          57834: Requesting
        !          57835: .I name
        !          57836: means include file
        !          57837: .MI \*(dQ name .enc \f1.
        !          57838: A nonexistent encoding file is silently ignored.
        !          57839: The default selects file
        !          57840: .MR \*(dQ/Default.enc .
        !          57841: .TP
        !          57842: .OP \-L file
        !          57843: Use
        !          57844: .I file
        !          57845: as the PostScript prologue.
        !          57846: .br
        !          57847: The default is
        !          57848: .MR \*(dQ/postbgi.ps .
        !          57849: .PP
        !          57850: Three options allow insertion of arbitrary PostScript
        !          57851: at controlled points in the translation process:
        !          57852: .TP 0.75i
        !          57853: .OP \-C file
        !          57854: Copy
        !          57855: .I file
        !          57856: to the output file;
        !          57857: .I file
        !          57858: must contain legitimate PostScript.
        !          57859: .TP
        !          57860: .OP \-P string
        !          57861: Include
        !          57862: .I string
        !          57863: in the output file;
        !          57864: .I string
        !          57865: must be legitimate PostScript.
        !          57866: .TP
        !          57867: .OP \-R action
        !          57868: Requests special
        !          57869: .I action
        !          57870: (e.g.,
        !          57871: .MR manualfeed )
        !          57872: on a per page or global basis.
        !          57873: The
        !          57874: .I action
        !          57875: string can be given as
        !          57876: .IR request ,
        !          57877: .IM request : page\f1\|,
        !          57878: or
        !          57879: .IM request : page : file\f1\|.
        !          57880: If
        !          57881: .I page
        !          57882: is omitted or given as 0, the request
        !          57883: applies to all pages.
        !          57884: If
        !          57885: .I file
        !          57886: is omitted, the request
        !          57887: lookup is done in
        !          57888: .MR \*(dQ/ps.requests .
        !          57889: .PP
        !          57890: .B postbgi
        !          57891: can handle
        !          57892: .SM STARE
        !          57893: (black and white) and
        !          57894: .SM PRISM
        !          57895: (color)
        !          57896: .SM BGI
        !          57897: jobs.
        !          57898: By default plots are rigidly scaled to fill the page, which produces
        !          57899: the good results for most
        !          57900: .SM STARE
        !          57901: jobs.
        !          57902: .SM PRISM
        !          57903: jobs typically fill regions with colors, and often require device
        !          57904: specific tuning to produce acceptable results.
        !          57905: Adding the
        !          57906: .MW \-P"/prism\ true\ def"
        !          57907: option is strongly recommended when
        !          57908: .B postbgi
        !          57909: is translating
        !          57910: .SM PRISM
        !          57911: jobs.
        !          57912: .br
        !          57913: .ne 7v
        !          57914: .SH EXAMPLES
        !          57915: For most
        !          57916: .SM STARE
        !          57917: jobs,
        !          57918: .EX
        !          57919: postbgi  \f2file
        !          57920: .EE
        !          57921: gives good results, while
        !          57922: .EX
        !          57923: postbgi \-P"/prism true def"  \f2file
        !          57924: .EE
        !          57925: is recommended when translating
        !          57926: .SM PRISM
        !          57927: jobs.
        !          57928: .SH DIAGNOSTICS
        !          57929: A 0 exit status is returned if
        !          57930: .I files
        !          57931: were successfully processed.
        !          57932: .SH BUGS
        !          57933: The default line width is too small for write-white
        !          57934: print engines, like the one used by the PS-2400.
        !          57935: Several
        !          57936: .SM BGI
        !          57937: opcodes have not been implemented.
        !          57938: .SH FILES
        !          57939: .MW \*(dQ/postbgi.ps
        !          57940: .br
        !          57941: .MW \*(dQ/forms.ps
        !          57942: .br
        !          57943: .MW \*(dQ/ps.requests
        !          57944: .SH SEE ALSO
        !          57945: .BR dpost (1),
        !          57946: .BR postdaisy (1),
        !          57947: .BR postdmd (1),
        !          57948: .BR postio (1),
        !          57949: .BR postmd (1),
        !          57950: .BR postprint (1),
        !          57951: .BR postreverse (1),
        !          57952: .BR posttek (1),
        !          57953: .BR psencoding (1)
        !          57954: 0707070014230265701006440057030057030000010677300522627503400003400000006016post.src/postbgi/postbgi.ps%
        !          57955: % Version 3.3.2 prologue for BGI files - STARE or PRISM.
        !          57956: %
        !          57957: 
        !          57958: /#copies 1 store
        !          57959: /aspectratio 1 def
        !          57960: /fixlinewidth true def
        !          57961: /fixscreen false def
        !          57962: /font /Courier def
        !          57963: /formsperpage 1 def
        !          57964: /landscape false def
        !          57965: /linewidth 0 def
        !          57966: /magnification 1 def
        !          57967: /margin 0 def
        !          57968: /orientation 0 def
        !          57969: /prism false def
        !          57970: /resolution 128 def
        !          57971: /rotation 1 def
        !          57972: /scaletodevice false def
        !          57973: /screenheight 1280 def
        !          57974: /screenwidth 1024 def
        !          57975: /xoffset 0 def
        !          57976: /yoffset 0 def
        !          57977: 
        !          57978: /devres 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt def
        !          57979: 
        !          57980: /useclippath true def
        !          57981: /pagebbox [0 0 612 792] def
        !          57982: 
        !          57983: /inch {72 mul} bind def
        !          57984: /min {2 copy gt {exch} if pop} bind def
        !          57985: 
        !          57986: /kshow {kshow} bind def                % so later references don't bind
        !          57987: /show {show} bind def
        !          57988: 
        !          57989: /setup {
        !          57990:        counttomark 2 idiv {def} repeat pop
        !          57991: 
        !          57992:        landscape {/orientation 90 orientation add def} if
        !          57993:        prism {/fixscreen true def /scaletodevice true def} if
        !          57994:        prism linewidth 0 eq and {/linewidth .3 def} if
        !          57995:        fixscreen {devres 4 div orientation currentscreen 3 1 roll pop pop setscreen} if
        !          57996: 
        !          57997:        pagedimensions
        !          57998:        /scaling
        !          57999:                scaletodevice
        !          58000:                        {devres resolution div truncate 72 mul devres div dup}
        !          58001:                        {height margin sub screenheight div width margin sub screenwidth div}
        !          58002:                ifelse
        !          58003:        min def
        !          58004:        xcenter ycenter translate
        !          58005:        orientation rotation mul rotate
        !          58006:        xoffset inch yoffset inch translate
        !          58007:        magnification dup aspectratio mul scale
        !          58008:        scaling scaling scale
        !          58009:        screenwidth 2 div neg screenheight 2 div neg translate
        !          58010: 
        !          58011:        tietodevicespace
        !          58012:        linewidth scaling div setlinewidth
        !          58013:        1 setlinecap
        !          58014:        newpath
        !          58015: } def
        !          58016: 
        !          58017: /pagedimensions {
        !          58018:        useclippath {
        !          58019:                /pagebbox [clippath pathbbox newpath] def
        !          58020:        } if
        !          58021:        pagebbox aload pop
        !          58022:        4 -1 roll exch 4 1 roll 4 copy
        !          58023:        landscape {4 2 roll} if
        !          58024:        sub /width exch def
        !          58025:        sub /height exch def
        !          58026:        add 2 div /xcenter exch def
        !          58027:        add 2 div /ycenter exch def
        !          58028:        userdict /gotpagebbox true put
        !          58029: } def
        !          58030: 
        !          58031: /pagesetup {/page exch def} bind def
        !          58032: 
        !          58033: /tietodevicespace {
        !          58034:        fixlinewidth linewidth 0 gt and linewidth 1 lt and {
        !          58035:                /moveto {
        !          58036:                        2 copy /Y exch def /X exch def
        !          58037:                        transform round exch round exch itransform
        !          58038:                        moveto
        !          58039:                } bind def
        !          58040:                /lineto {
        !          58041:                        2 copy /Y exch def /X exch def
        !          58042:                        transform round exch round exch itransform
        !          58043:                        lineto
        !          58044:                } bind def
        !          58045:                /rlineto {Y add exch X add exch lineto} bind def
        !          58046:                /v V 0 get bind def
        !          58047:        } if
        !          58048: } def
        !          58049: 
        !          58050: /V [{moveto counttomark 2 idiv {rlineto} repeat stroke}] def
        !          58051: /v V 0 get bind def
        !          58052: /p {linewidth 2 div 0 360 arc fill} bind def
        !          58053: /pp {/ch exch def counttomark 2 idiv {moveto xc yc rmoveto ch show} repeat} bind def
        !          58054: 
        !          58055: /l {{scaling div} forall counttomark array astore 0 setdash} bind def
        !          58056: /c {setrgbcolor} bind def
        !          58057: 
        !          58058: /T {newpath moveto rlineto rlineto rlineto closepath eofill} bind def
        !          58059: 
        !          58060: /R {
        !          58061:        newpath moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath
        !          58062:        0 eq {stroke} {eofill} ifelse
        !          58063: } bind def
        !          58064: 
        !          58065: /f {
        !          58066:        dup dup
        !          58067:        /charwidth exch 6 mul def
        !          58068:        /xc exch -2.5 mul def
        !          58069:        /yc exch -3.5 mul def
        !          58070:        font findfont charwidth .6 div scalefont setfont
        !          58071: } bind def
        !          58072: 
        !          58073: /t {
        !          58074:        /str exch def
        !          58075:        gsave
        !          58076:        translate rotate
        !          58077:        xc yc moveto
        !          58078:        currentpoint
        !          58079:        {
        !          58080:                pop pop
        !          58081:                exch charwidth add exch
        !          58082:                moveto currentpoint
        !          58083:        } str kshow
        !          58084:        pop pop
        !          58085:        grestore
        !          58086: } bind def
        !          58087: 
        !          58088: /done {/lastpage where {pop lastpage} if} def
        !          58089: 0707070014230642760407550057030057030000021712350522633075400002300000000000post.src/postdaisy0707070014230637751006400057030057030000011711740522633075300004000000004021post.src/postdaisy/postdaisy.mkMAKE=/bin/make
        !          58090: MAKEFILE=postdaisy.mk
        !          58091: 
        !          58092: SYSTEM=V9
        !          58093: VERSION=3.3.2
        !          58094: 
        !          58095: GROUP=bin
        !          58096: OWNER=bin
        !          58097: 
        !          58098: MAN1DIR=/tmp
        !          58099: POSTBIN=/usr/bin/postscript
        !          58100: POSTLIB=/usr/lib/postscript
        !          58101: 
        !          58102: COMMONDIR=../common
        !          58103: 
        !          58104: CFLGS=-O
        !          58105: LDFLGS=-s
        !          58106: 
        !          58107: CFLAGS=$(CFLGS) -I$(COMMONDIR)
        !          58108: LDFLAGS=$(LDFLGS)
        !          58109: 
        !          58110: HFILES=postdaisy.h \
        !          58111:        $(COMMONDIR)/comments.h\
        !          58112:        $(COMMONDIR)/ext.h\
        !          58113:        $(COMMONDIR)/gen.h\
        !          58114:        $(COMMONDIR)/path.h
        !          58115: 
        !          58116: OFILES=postdaisy.o\
        !          58117:        $(COMMONDIR)/glob.o\
        !          58118:        $(COMMONDIR)/misc.o\
        !          58119:        $(COMMONDIR)/request.o
        !          58120: 
        !          58121: all : postdaisy
        !          58122: 
        !          58123: install : all
        !          58124:        @if [ ! -d "$(POSTBIN)" ]; then \
        !          58125:            mkdir $(POSTBIN); \
        !          58126:            chmod 755 $(POSTBIN); \
        !          58127:            chgrp $(GROUP) $(POSTBIN); \
        !          58128:            chown $(OWNER) $(POSTBIN); \
        !          58129:        fi
        !          58130:        @if [ ! -d "$(POSTLIB)" ]; then \
        !          58131:            mkdir $(POSTLIB); \
        !          58132:            chmod 755 $(POSTLIB); \
        !          58133:            chgrp $(GROUP) $(POSTLIB); \
        !          58134:            chown $(OWNER) $(POSTLIB); \
        !          58135:        fi
        !          58136:        cp postdaisy $(POSTBIN)/postdaisy
        !          58137:        @chmod 755 $(POSTBIN)/postdaisy
        !          58138:        @chgrp $(GROUP) $(POSTBIN)/postdaisy
        !          58139:        @chown $(OWNER) $(POSTBIN)/postdaisy
        !          58140:        cp postdaisy.ps $(POSTLIB)/postdaisy.ps
        !          58141:        @chmod 644 $(POSTLIB)/postdaisy.ps
        !          58142:        @chgrp $(GROUP) $(POSTLIB)/postdaisy.ps
        !          58143:        @chown $(OWNER) $(POSTLIB)/postdaisy.ps
        !          58144:        cp postdaisy.1 $(MAN1DIR)/postdaisy.1
        !          58145:        @chmod 644 $(MAN1DIR)/postdaisy.1
        !          58146:        @chgrp $(GROUP) $(MAN1DIR)/postdaisy.1
        !          58147:        @chown $(OWNER) $(MAN1DIR)/postdaisy.1
        !          58148: 
        !          58149: clean :
        !          58150:        rm -f *.o
        !          58151: 
        !          58152: clobber : clean
        !          58153:        rm -f postdaisy
        !          58154: 
        !          58155: postdaisy : $(OFILES)
        !          58156:        $(CC) $(CFLAGS) $(LDFLAGS) -o postdaisy $(OFILES)
        !          58157: 
        !          58158: postdaisy.o : $(HFILES)
        !          58159: 
        !          58160: $(COMMONDIR)/glob.o\
        !          58161: $(COMMONDIR)/misc.o\
        !          58162: $(COMMONDIR)/request.o :
        !          58163:        @cd $(COMMONDIR); $(MAKE) -f common.mk `basename $@`
        !          58164: 
        !          58165: changes :
        !          58166:        @trap "" 1 2 3 15; \
        !          58167:        sed \
        !          58168:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
        !          58169:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
        !          58170:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          58171:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          58172:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
        !          58173:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
        !          58174:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
        !          58175:        $(MAKEFILE) >XXX.mk; \
        !          58176:        mv XXX.mk $(MAKEFILE); \
        !          58177:        sed \
        !          58178:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
        !          58179:        postdaisy.1 >XXX.1; \
        !          58180:        mv XXX.1 postdaisy.1
        !          58181: 
        !          58182: 0707070014230643001006440057030057030000011712530522627503500003700000004056post.src/postdaisy/postdaisy.h/*
        !          58183:  *
        !          58184:  * Definitions used by the PostScript translator for Diablo 1640 files.
        !          58185:  *
        !          58186:  * Diablo printers have horizontal and vertical resolutions of 120 and 48 dpi.
        !          58187:  * We'll use a single resolution of 240 dpi and let the program scale horizontal
        !          58188:  * and vertical positions by HSCALE and VSCALE.
        !          58189:  *
        !          58190:  */
        !          58191: 
        !          58192: #define RES            240
        !          58193: #define HSCALE         2
        !          58194: #define VSCALE         5
        !          58195: 
        !          58196: /*
        !          58197:  *
        !          58198:  * HMI is the default character spacing and VMI is the line spacing. Both values
        !          58199:  * are in terms of the 240 dpi resolution.
        !          58200:  *
        !          58201:  */
        !          58202: 
        !          58203: #define HMI            (12 * HSCALE)
        !          58204: #define VMI            (8 * VSCALE)
        !          58205: 
        !          58206: /*
        !          58207:  *
        !          58208:  * Paper dimensions don't seem to be all that important. They're just used to
        !          58209:  * set the right and bottom margins. Both are given in terms of the 240 dpi
        !          58210:  * resolution.
        !          58211:  *
        !          58212:  */
        !          58213: 
        !          58214: #define LEFTMARGIN     0
        !          58215: #define RIGHTMARGIN    3168
        !          58216: #define TOPMARGIN      0
        !          58217: #define BOTTOMMARGIN   2640
        !          58218: 
        !          58219: /*
        !          58220:  *
        !          58221:  * ROWS and COLUMNS set the dimensions of the horizontal and vertical tab arrays.
        !          58222:  * The way I've implemented both kinds of tabs leaves something to be desired, but
        !          58223:  * it was simple and should be good enough for now. If arrays are going to be used
        !          58224:  * to mark tab stops I probably should use malloc() to get enough space once the
        !          58225:  * initial hmi and vmi are know.
        !          58226:  *
        !          58227:  */
        !          58228: 
        !          58229: #define ROWS           400
        !          58230: #define COLUMNS                200
        !          58231: 
        !          58232: /*
        !          58233:  *
        !          58234:  * An array of type Fontmap helps convert font names requested by users into
        !          58235:  * legitimate PostScript names. The array is initialized using FONTMAP, which must
        !          58236:  * end with an entry that has NULL defined as its name field.
        !          58237:  *
        !          58238:  */
        !          58239: 
        !          58240: typedef struct {
        !          58241:        char    *name;                  /* user's font name */
        !          58242:        char    *val;                   /* corresponding PostScript name */
        !          58243: } Fontmap;
        !          58244: 
        !          58245: #define FONTMAP                                                                \
        !          58246:                                                                        \
        !          58247:        {                                                               \
        !          58248:            "R", "Courier",                                             \
        !          58249:            "I", "Courier-Oblique",                                     \
        !          58250:            "B", "Courier-Bold",                                        \
        !          58251:            "CO", "Courier",                                            \
        !          58252:            "CI", "Courier-Oblique",                                    \
        !          58253:            "CB", "Courier-Bold",                                       \
        !          58254:            "CW", "Courier",                                            \
        !          58255:            "PO", "Courier",                                            \
        !          58256:            "courier", "Courier",                                       \
        !          58257:            "cour", "Courier",                                          \
        !          58258:            "co", "Courier",                                            \
        !          58259:            NULL, NULL                                                  \
        !          58260:        }
        !          58261: 
        !          58262: /*
        !          58263:  *
        !          58264:  * Some of the non-integer functions in postdaisy.c.
        !          58265:  *
        !          58266:  */
        !          58267: 
        !          58268: char   *get_font();
        !          58269: 
        !          58270: 0707070014230643011006440057030057030000011712700522627503500003700000067263post.src/postdaisy/postdaisy.c/*
        !          58271:  *
        !          58272:  * postdaisy - PostScript translator for Diablo 1640 files.
        !          58273:  *
        !          58274:  * A program that translates Diablo 1640 files into PostScript. Absolutely nothing
        !          58275:  * is guaranteed. Quite a few things haven't been implemented, and what's been
        !          58276:  * done isn't well tested. Most of the documentation used to write this program
        !          58277:  * was taken from the 'Diablo Emulator' section of a recent Imagen manual.
        !          58278:  *
        !          58279:  * Some of document comments that are generated may not be right. Most of the test
        !          58280:  * files I used produced a trailing blank page. I've put a check in formfeed() that
        !          58281:  * won't print the last page if it doesn't contain any text, but PAGES comments may
        !          58282:  * not be right. The DOCUMENTFONTS comment will also be wrong if auto underline or
        !          58283:  * bold printing have been turned on by escape commands.
        !          58284:  *
        !          58285:  * The brute force approach used to implement horizontal and vertical tabs leaves
        !          58286:  * much to be desired, and may not work for very small initial hmi and vmi values.
        !          58287:  * At the very least I should have used malloc() to get space for the two tabstop
        !          58288:  * arrays after hmi and vmi are known!
        !          58289:  *
        !          58290:  * Reverse printing mode hasn't been tested at all, but what's here should be
        !          58291:  * close even though it's not efficient.
        !          58292:  *
        !          58293:  * The PostScript prologue is copied from *prologue before any of the input files
        !          58294:  * are translated. The program expects that the following PostScript procedures
        !          58295:  * are defined in that file:
        !          58296:  *
        !          58297:  *     setup
        !          58298:  *
        !          58299:  *       mark ... setup -
        !          58300:  *
        !          58301:  *         Handles special initialization stuff that depends on how this program
        !          58302:  *         was called. Expects to find a mark followed by key/value pairs on the
        !          58303:  *         stack. The def operator is applied to each pair up to the mark, then
        !          58304:  *         the default state is set up.
        !          58305:  *
        !          58306:  *     pagesetup
        !          58307:  *
        !          58308:  *       page pagesetup -
        !          58309:  *
        !          58310:  *         Does whatever is needed to set things up for the next page. Expects to
        !          58311:  *         find the current page number on the stack.
        !          58312:  *
        !          58313:  *     t
        !          58314:  *
        !          58315:  *       mark str1 x1 str2 x2 ... strn xn y hmi t mark
        !          58316:  *
        !          58317:  *         Handles all the text on the stack. Characters in the strings are
        !          58318:  *         printed using hmi as the character advance, and all strings are at
        !          58319:  *         vertical position y. Each string is begins at the horizontal position
        !          58320:  *         that preceeds it.
        !          58321:  *
        !          58322:  *     f
        !          58323:  *
        !          58324:  *       font f -
        !          58325:  *
        !          58326:  *         Use font f, where f is the full PostScript font name. Only used when
        !          58327:  *         we switch to auto underline (Courier-Italic) or bold (Courier-Bold)
        !          58328:  *         printing.
        !          58329:  *
        !          58330:  *     done
        !          58331:  *
        !          58332:  *       done
        !          58333:  *
        !          58334:  *         Makes sure the last page is printed. Only needed when we're printing
        !          58335:  *         more than one page on each sheet of paper.
        !          58336:  *
        !          58337:  * Many default values, like the magnification and orientation, are defined in 
        !          58338:  * the prologue, which is where they belong. If they're changed (by options), an
        !          58339:  * appropriate definition is made after the prologue is added to the output file.
        !          58340:  * The -P option passes arbitrary PostScript through to the output file. Among
        !          58341:  * other things it can be used to set (or change) values that can't be accessed by
        !          58342:  * other options.
        !          58343:  *
        !          58344:  */
        !          58345: 
        !          58346: #include <stdio.h>
        !          58347: #include <signal.h>
        !          58348: #include <ctype.h>
        !          58349: #include <fcntl.h>
        !          58350: 
        !          58351: #include "comments.h"                  /* PostScript file structuring comments */
        !          58352: #include "gen.h"                       /* general purpose definitions */
        !          58353: #include "path.h"                      /* for the prologue */
        !          58354: #include "ext.h"                       /* external variable declarations */
        !          58355: #include "postdaisy.h"                 /* a few special definitions */
        !          58356: 
        !          58357: char   *optnames = "a:c:f:h:l:m:n:o:p:r:s:v:x:y:A:C:E:J:L:P:DI";
        !          58358: 
        !          58359: char   *prologue = POSTDAISY;          /* default PostScript prologue */
        !          58360: char   *formfile = FORMFILE;           /* stuff for multiple pages per sheet */
        !          58361: 
        !          58362: int    formsperpage = 1;               /* page images on each piece of paper */
        !          58363: int    copies = 1;                     /* and this many copies of each sheet */
        !          58364: 
        !          58365: char   htabstops[COLUMNS];             /* horizontal */
        !          58366: char   vtabstops[ROWS];                /* and vertical tabs */
        !          58367: 
        !          58368: int    res = RES;                      /* input file resolution - sort of */
        !          58369: 
        !          58370: int    hmi = HMI;                      /* horizontal motion index - 1/120 inch */
        !          58371: int    vmi = VMI;                      /* vertical motion index - 1/48 inch */
        !          58372: int    ohmi = HMI;                     /* original hmi */
        !          58373: int    ovmi = VMI;                     /* and vmi - for tabs and char size */
        !          58374: 
        !          58375: int    hpos = 0;                       /* current horizontal */
        !          58376: int    vpos = 0;                       /* and vertical position */
        !          58377: 
        !          58378: int    lastx = -1;                     /* printer's last horizontal */
        !          58379: int    lasty = -1;                     /* and vertical position */
        !          58380: int    lasthmi = -1;                   /* hmi for current text strings */
        !          58381: 
        !          58382: int    lastc = -1;                     /* last printed character */
        !          58383: int    prevx = -1;                     /* at this position */
        !          58384: 
        !          58385: int    leftmargin = LEFTMARGIN;        /* page margins */
        !          58386: int    rightmargin = RIGHTMARGIN;
        !          58387: int    topmargin = TOPMARGIN;
        !          58388: int    bottommargin = BOTTOMMARGIN;
        !          58389: 
        !          58390: int    stringcount = 0;                /* number of strings on the stack */
        !          58391: int    stringstart = 1;                /* column where current one starts */
        !          58392: int    advance = 1;                    /* -1 if in backward print mode */
        !          58393: 
        !          58394: int    lfiscr = OFF;                   /* line feed implies carriage return */
        !          58395: int    crislf = OFF;                   /* carriage return implies line feed */
        !          58396: 
        !          58397: int    linespp = 0;                    /* lines per page if it's positive */
        !          58398: int    markedpage = FALSE;             /* helps prevent trailing blank page */
        !          58399: int    page = 0;                       /* page we're working on */
        !          58400: int    printed = 0;                    /* printed this many pages */
        !          58401: 
        !          58402: Fontmap        fontmap[] = FONTMAP;            /* for translating font names */
        !          58403: char   *fontname = "Courier";          /* use this PostScript font */
        !          58404: int    shadowprint = OFF;              /* automatic bold printing if ON */
        !          58405: 
        !          58406: FILE   *fp_in;                         /* read from this file */
        !          58407: FILE   *fp_out = stdout;               /* and write stuff here */
        !          58408: FILE   *fp_acct = NULL;                /* for accounting data */
        !          58409: 
        !          58410: /*****************************************************************************/
        !          58411: 
        !          58412: main(agc, agv)
        !          58413: 
        !          58414:     int                agc;
        !          58415:     char       *agv[];
        !          58416: 
        !          58417: {
        !          58418: 
        !          58419: /*
        !          58420:  *
        !          58421:  * A simple program that translates Diablo 1640 files into PostScript. Nothing
        !          58422:  * is guaranteed - the program not well tested and doesn't implement everything.
        !          58423:  *
        !          58424:  */
        !          58425: 
        !          58426:     argc = agc;                                /* other routines may want them */
        !          58427:     argv = agv;
        !          58428: 
        !          58429:     prog_name = argv[0];               /* really just for error messages */
        !          58430: 
        !          58431:     init_signals();                    /* sets up interrupt handling */
        !          58432:     header();                          /* PostScript header comments */
        !          58433:     options();                         /* handle the command line options */
        !          58434:     setup();                           /* for PostScript */
        !          58435:     arguments();                       /* followed by each input file */
        !          58436:     done();                            /* print the last page etc. */
        !          58437:     account();                         /* job accounting data */
        !          58438: 
        !          58439:     exit(x_stat);                      /* not much could be wrong */
        !          58440: 
        !          58441: }   /* End of main */
        !          58442: 
        !          58443: /*****************************************************************************/
        !          58444: 
        !          58445: init_signals()
        !          58446: 
        !          58447: {
        !          58448: 
        !          58449: /*
        !          58450:  *
        !          58451:  * Makes sure we handle interrupts.
        !          58452:  *
        !          58453:  */
        !          58454: 
        !          58455:     if ( signal(SIGINT, interrupt) == SIG_IGN )  {
        !          58456:        signal(SIGINT, SIG_IGN);
        !          58457:        signal(SIGQUIT, SIG_IGN);
        !          58458:        signal(SIGHUP, SIG_IGN);
        !          58459:     } else {
        !          58460:        signal(SIGHUP, interrupt);
        !          58461:        signal(SIGQUIT, interrupt);
        !          58462:     }   /* End else */
        !          58463: 
        !          58464:     signal(SIGTERM, interrupt);
        !          58465: 
        !          58466: }   /* End of init_signals */
        !          58467: 
        !          58468: /*****************************************************************************/
        !          58469: 
        !          58470: header()
        !          58471: 
        !          58472: {
        !          58473: 
        !          58474:     int                ch;                     /* return value from getopt() */
        !          58475:     int                old_optind = optind;    /* for restoring optind - should be 1 */
        !          58476: 
        !          58477: /*
        !          58478:  *
        !          58479:  * Scans the option list looking for things, like the prologue file, that we need
        !          58480:  * right away but could be changed from the default. Doing things this way is an
        !          58481:  * attempt to conform to Adobe's latest file structuring conventions. In particular
        !          58482:  * they now say there should be nothing executed in the prologue, and they have
        !          58483:  * added two new comments that delimit global initialization calls. Once we know
        !          58484:  * where things really are we write out the job header, follow it by the prologue,
        !          58485:  * and then add the ENDPROLOG and BEGINSETUP comments.
        !          58486:  *
        !          58487:  */
        !          58488: 
        !          58489:     while ( (ch = getopt(argc, argv, optnames)) != EOF )
        !          58490:        if ( ch == 'L' )
        !          58491:            prologue = optarg;
        !          58492:        else if ( ch == '?' )
        !          58493:            error(FATAL, "");
        !          58494: 
        !          58495:     optind = old_optind;               /* get ready for option scanning */
        !          58496: 
        !          58497:     fprintf(stdout, "%s", CONFORMING);
        !          58498:     fprintf(stdout, "%s %s\n", VERSION, PROGRAMVERSION);
        !          58499:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, ATEND);
        !          58500:     fprintf(stdout, "%s %s\n", PAGES, ATEND);
        !          58501:     fprintf(stdout, "%s", ENDCOMMENTS);
        !          58502: 
        !          58503:     if ( cat(prologue) == FALSE )
        !          58504:        error(FATAL, "can't read %s", prologue);
        !          58505: 
        !          58506:     if ( DOROUND )
        !          58507:        cat(ROUNDPAGE);
        !          58508: 
        !          58509:     fprintf(stdout, "%s", ENDPROLOG);
        !          58510:     fprintf(stdout, "%s", BEGINSETUP);
        !          58511:     fprintf(stdout, "mark\n");
        !          58512: 
        !          58513: }   /* End of header */
        !          58514: 
        !          58515: /*****************************************************************************/
        !          58516: 
        !          58517: options()
        !          58518: 
        !          58519: {
        !          58520: 
        !          58521:     int                ch;                     /* return value from getopt() */
        !          58522:     int                n;                      /* for CR and LF modes */
        !          58523: 
        !          58524: /*
        !          58525:  *
        !          58526:  * Reads and processes the command line options. Added the -P option so arbitrary
        !          58527:  * PostScript code can be passed through. Expect it could be useful for changing
        !          58528:  * definitions in the prologue for which options have not been defined.
        !          58529:  *
        !          58530:  * Although any PostScript font can be used, things will only work for constant
        !          58531:  * width fonts.
        !          58532:  *
        !          58533:  */
        !          58534: 
        !          58535:     while ( (ch = getopt(argc, argv, optnames)) != EOF )  {
        !          58536:        switch ( ch )  {
        !          58537:            case 'a':                   /* aspect ratio */
        !          58538:                    fprintf(stdout, "/aspectratio %s def\n", optarg);
        !          58539:                    break;
        !          58540: 
        !          58541:            case 'c':                   /* copies */
        !          58542:                    copies = atoi(optarg);
        !          58543:                    fprintf(stdout, "/#copies %s store\n", optarg);
        !          58544:                    break;
        !          58545: 
        !          58546:            case 'f':                   /* use this PostScript font */
        !          58547:                    fontname = get_font(optarg);
        !          58548:                    fprintf(stdout, "/font /%s def\n", fontname);
        !          58549:                    break;
        !          58550: 
        !          58551:            case 'h':                   /* default character spacing */
        !          58552:                    ohmi = hmi = atoi(optarg) * HSCALE;
        !          58553:                    fprintf(stdout, "/hmi %s def\n", optarg);
        !          58554:                    break;
        !          58555: 
        !          58556:            case 'l':                   /* lines per page */
        !          58557:                    linespp = atoi(optarg);
        !          58558:                    break;
        !          58559: 
        !          58560:            case 'm':                   /* magnification */
        !          58561:                    fprintf(stdout, "/magnification %s def\n", optarg);
        !          58562:                    break;
        !          58563: 
        !          58564:            case 'n':                   /* forms per page */
        !          58565:                    formsperpage = atoi(optarg);
        !          58566:                    fprintf(stdout, "%s %s\n", FORMSPERPAGE, optarg);
        !          58567:                    fprintf(stdout, "/formsperpage %s def\n", optarg);
        !          58568:                    break;
        !          58569: 
        !          58570:            case 'o':                   /* output page list */
        !          58571:                    out_list(optarg);
        !          58572:                    break;
        !          58573: 
        !          58574:            case 'p':                   /* landscape or portrait mode */
        !          58575:                    if ( *optarg == 'l' )
        !          58576:                        fprintf(stdout, "/landscape true def\n");
        !          58577:                    else fprintf(stdout, "/landscape false def\n");
        !          58578:                    break;
        !          58579: 
        !          58580:            case 'r':                   /* set CR and LF modes */
        !          58581:                    n = atoi(optarg);
        !          58582:                    if ( n & 01 )
        !          58583:                        lfiscr = ON;
        !          58584:                    else lfiscr = OFF;
        !          58585:                    if ( n & 02 )
        !          58586:                        crislf = ON;
        !          58587:                    else crislf = OFF;
        !          58588:                    break;
        !          58589: 
        !          58590:            case 's':                   /* point size */
        !          58591:                    fprintf(stdout, "/pointsize %s def\n", optarg);
        !          58592:                    break;
        !          58593: 
        !          58594:            case 'v':                   /* default line spacing */
        !          58595:                    ovmi = vmi = atoi(optarg) * VSCALE;
        !          58596:                    break;
        !          58597: 
        !          58598:            case 'x':                   /* shift things horizontally */
        !          58599:                    fprintf(stdout, "/xoffset %s def\n", optarg);
        !          58600:                    break;
        !          58601: 
        !          58602:            case 'y':                   /* and vertically on the page */
        !          58603:                    fprintf(stdout, "/yoffset %s def\n", optarg);
        !          58604:                    break;
        !          58605: 
        !          58606:            case 'A':                   /* force job accounting */
        !          58607:            case 'J':
        !          58608:                    if ( (fp_acct = fopen(optarg, "a")) == NULL )
        !          58609:                        error(FATAL, "can't open accounting file %s", optarg);
        !          58610:                    break;
        !          58611: 
        !          58612:            case 'C':                   /* copy file straight to output */
        !          58613:                    if ( cat(optarg) == FALSE )
        !          58614:                        error(FATAL, "can't read %s", optarg);
        !          58615:                    break;
        !          58616: 
        !          58617:            case 'E':                   /* text font encoding */
        !          58618:                    fontencoding = optarg;
        !          58619:                    break;
        !          58620: 
        !          58621:            case 'L':                   /* PostScript prologue file */
        !          58622:                    prologue = optarg;
        !          58623:                    break;
        !          58624: 
        !          58625:            case 'P':                   /* PostScript pass through */
        !          58626:                    fprintf(stdout, "%s\n", optarg);
        !          58627:                    break;
        !          58628: 
        !          58629:            case 'R':                   /* special global or page level request */
        !          58630:                    saverequest(optarg);
        !          58631:                    break;
        !          58632: 
        !          58633:            case 'D':                   /* debug flag */
        !          58634:                    debug = ON;
        !          58635:                    break;
        !          58636: 
        !          58637:            case 'I':                   /* ignore FATAL errors */
        !          58638:                    ignore = ON;
        !          58639:                    break;
        !          58640: 
        !          58641:            case '?':                   /* don't understand the option */
        !          58642:                    error(FATAL, "");
        !          58643:                    break;
        !          58644: 
        !          58645:            default:                    /* don't know what to do for ch */
        !          58646:                    error(FATAL, "missing case for option %c\n", ch);
        !          58647:                    break;
        !          58648:        }   /* End switch */
        !          58649:     }   /* End while */
        !          58650: 
        !          58651:     argc -= optind;                    /* get ready for non-option args */
        !          58652:     argv += optind;
        !          58653: 
        !          58654: }   /* End of options */
        !          58655: 
        !          58656: /*****************************************************************************/
        !          58657: 
        !          58658: char *get_font(name)
        !          58659: 
        !          58660:     char       *name;                  /* name the user asked for */
        !          58661: 
        !          58662: {
        !          58663: 
        !          58664:     int                i;                      /* for looking through fontmap[] */
        !          58665: 
        !          58666: /*
        !          58667:  *
        !          58668:  * Called from options() to map a user's font name into a legal PostScript name.
        !          58669:  * If the lookup fails *name is returned to the caller. That should let you choose
        !          58670:  * any PostScript font, although things will only work well for constant width
        !          58671:  * fonts.
        !          58672:  *
        !          58673:  */
        !          58674: 
        !          58675:     for ( i = 0; fontmap[i].name != NULL; i++ )
        !          58676:        if ( strcmp(name, fontmap[i].name) == 0 )
        !          58677:            return(fontmap[i].val);
        !          58678: 
        !          58679:     return(name);
        !          58680: 
        !          58681: }   /* End of get_font */
        !          58682: 
        !          58683: /*****************************************************************************/
        !          58684: 
        !          58685: setup()
        !          58686: 
        !          58687: {
        !          58688: 
        !          58689: /*
        !          58690:  *
        !          58691:  * Handles things that must be done after the options are read but before the
        !          58692:  * input files are processed.
        !          58693:  *
        !          58694:  */
        !          58695: 
        !          58696:     writerequest(0, stdout);           /* global requests eg. manual feed */
        !          58697:     setencoding(fontencoding);
        !          58698:     fprintf(stdout, "setup\n");
        !          58699: 
        !          58700:     if ( formsperpage > 1 )  {
        !          58701:        if ( cat(formfile) == FALSE )
        !          58702:            error(FATAL, "can't read %s", formfile);
        !          58703:        fprintf(stdout, "%d setupforms\n", formsperpage);
        !          58704:     }  /* End if */
        !          58705: 
        !          58706:     fprintf(stdout, "%s", ENDSETUP);
        !          58707: 
        !          58708: }   /* End of setup */
        !          58709: 
        !          58710: /*****************************************************************************/
        !          58711: 
        !          58712: arguments()
        !          58713: 
        !          58714: {
        !          58715: 
        !          58716: /*
        !          58717:  *
        !          58718:  * Makes sure all the non-option command line arguments are processed. If we get
        !          58719:  * here and there aren't any arguments left, or if '-' is one of the input files
        !          58720:  * we'll process stdin.
        !          58721:  *
        !          58722:  */
        !          58723: 
        !          58724:     fp_in = stdin;
        !          58725: 
        !          58726:     if ( argc < 1 )
        !          58727:        text();
        !          58728:     else {                             /* at least one argument is left */
        !          58729:        while ( argc > 0 )  {
        !          58730:            if ( strcmp(*argv, "-") == 0 )
        !          58731:                fp_in = stdin;
        !          58732:            else if ( (fp_in = fopen(*argv, "r")) == NULL )
        !          58733:                error(FATAL, "can't open %s", *argv);
        !          58734:            text();
        !          58735:            if ( fp_in != stdin )
        !          58736:                fclose(fp_in);
        !          58737:            argc--;
        !          58738:            argv++;
        !          58739:        }   /* End while */
        !          58740:     }   /* End else */
        !          58741: 
        !          58742: }   /* End of arguments */
        !          58743: 
        !          58744: /*****************************************************************************/
        !          58745: 
        !          58746: done()
        !          58747: 
        !          58748: {
        !          58749: 
        !          58750: /*
        !          58751:  *
        !          58752:  * Finished with all the input files, so mark the end of the pages, make sure the
        !          58753:  * last page is printed, and restore the initial environment.
        !          58754:  *
        !          58755:  */
        !          58756: 
        !          58757:     fprintf(stdout, "%s", TRAILER);
        !          58758:     fprintf(stdout, "done\n");
        !          58759:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, fontname);
        !          58760:     fprintf(stdout, "%s %d\n", PAGES, printed);
        !          58761: 
        !          58762: }   /* End of done */
        !          58763: 
        !          58764: /*****************************************************************************/
        !          58765: 
        !          58766: account()
        !          58767: 
        !          58768: {
        !          58769: 
        !          58770: /*
        !          58771:  *
        !          58772:  * Writes an accounting record to *fp_acct provided it's not NULL. Accounting
        !          58773:  * is requested using the -A or -J options.
        !          58774:  *
        !          58775:  */
        !          58776: 
        !          58777:     if ( fp_acct != NULL )
        !          58778:        fprintf(fp_acct, " print %d\n copies %d\n", printed, copies);
        !          58779: 
        !          58780: }   /* End of account */
        !          58781: 
        !          58782: /*****************************************************************************/
        !          58783: 
        !          58784: text()
        !          58785: 
        !          58786: {
        !          58787: 
        !          58788:     int                ch;                     /* next input character */
        !          58789: 
        !          58790: /*
        !          58791:  *
        !          58792:  * Translates the next input file into PostScript. The redirect(-1) call forces
        !          58793:  * the initial output to go to /dev/null - so the stuff formfeed() does at the
        !          58794:  * end of each page doesn't go to stdout.
        !          58795:  *
        !          58796:  */
        !          58797: 
        !          58798:     redirect(-1);                      /* get ready for the first page */
        !          58799:     formfeed();                                /* force PAGE comment etc. */
        !          58800:     inittabs();
        !          58801: 
        !          58802:     while ( (ch = getc(fp_in)) != EOF )
        !          58803:        switch ( ch )  {
        !          58804:            case '\010':                /* backspace */
        !          58805:                    backspace();
        !          58806:                    break;
        !          58807: 
        !          58808:            case '\011':                /* horizontal tab */
        !          58809:                    htab();
        !          58810:                    break;
        !          58811: 
        !          58812:            case '\012':                /* new line */
        !          58813:                    linefeed();
        !          58814:                    break;
        !          58815: 
        !          58816:            case '\013':                /* vertical tab */
        !          58817:                    vtab();
        !          58818:                    break;
        !          58819: 
        !          58820:            case '\014':                /* form feed */
        !          58821:                    formfeed();
        !          58822:                    break;
        !          58823: 
        !          58824:            case '\015':                /* carriage return */
        !          58825:                    carriage();
        !          58826:                    break;
        !          58827: 
        !          58828:            case '\016':                /* extended character set - SO */
        !          58829:                    break;
        !          58830: 
        !          58831:            case '\017':                /* extended character set - SI */
        !          58832:                    break;
        !          58833: 
        !          58834:            case '\031':                /* next char from supplementary set */
        !          58835:                    break;
        !          58836: 
        !          58837:            case '\033':                /* 2 or 3 byte escape sequence */
        !          58838:                    escape();
        !          58839:                    break;
        !          58840: 
        !          58841:            default:
        !          58842:                    oput(ch);
        !          58843:                    break;
        !          58844:        }   /* End switch */
        !          58845: 
        !          58846:     formfeed();                                /* next file starts on a new page? */
        !          58847: 
        !          58848: }   /* End of text */
        !          58849: 
        !          58850: /*****************************************************************************/
        !          58851: 
        !          58852: inittabs()
        !          58853: 
        !          58854: {
        !          58855: 
        !          58856:     int                i;                      /* loop index */
        !          58857: 
        !          58858: /*
        !          58859:  *
        !          58860:  * Initializes the horizontal and vertical tab arrays. The way tabs are handled is
        !          58861:  * quite inefficient and may not work for all initial hmi or vmi values.
        !          58862:  *
        !          58863:  */
        !          58864: 
        !          58865:     for ( i = 0; i < COLUMNS; i++ )
        !          58866:        htabstops[i] = ((i % 8) == 0) ? ON : OFF;
        !          58867: 
        !          58868:     for ( i = 0; i < ROWS; i++ )
        !          58869:        vtabstops[i] = ((i * ovmi) > BOTTOMMARGIN) ? ON : OFF;
        !          58870: 
        !          58871: }   /* End of inittabs */
        !          58872: 
        !          58873: /*****************************************************************************/
        !          58874: 
        !          58875: cleartabs()
        !          58876: 
        !          58877: {
        !          58878: 
        !          58879:     int                i;                      /* loop index */
        !          58880: 
        !          58881: /*
        !          58882:  *
        !          58883:  * Clears all horizontal and vertical tab stops.
        !          58884:  *
        !          58885:  */
        !          58886: 
        !          58887:     for ( i = 0; i < ROWS; i++ )
        !          58888:        htabstops[i] = OFF;
        !          58889: 
        !          58890:     for ( i = 0; i < COLUMNS; i++ )
        !          58891:        vtabstops[i] = OFF;
        !          58892: 
        !          58893: }   /* End of cleartabs */
        !          58894: 
        !          58895: /*****************************************************************************/
        !          58896: 
        !          58897: formfeed()
        !          58898: 
        !          58899: {
        !          58900: 
        !          58901: /*
        !          58902:  *
        !          58903:  * Called whenever we've finished with the last page and want to get ready for the
        !          58904:  * next one. Also used at the beginning and end of each input file, so we have to
        !          58905:  * be careful about what's done. I've added a simple test before the showpage that
        !          58906:  * should eliminate the extra blank page that was put out at the end of many jobs,
        !          58907:  * but the PAGES comments may be wrong.
        !          58908:  *
        !          58909:  */
        !          58910: 
        !          58911:     if ( fp_out == stdout )            /* count the last page */
        !          58912:        printed++;
        !          58913: 
        !          58914:     endline();                         /* print the last line */
        !          58915: 
        !          58916:     fprintf(fp_out, "cleartomark\n");
        !          58917:     if ( feof(fp_in) == 0 || markedpage == TRUE )
        !          58918:        fprintf(fp_out, "showpage\n");
        !          58919:     fprintf(fp_out, "saveobj restore\n");
        !          58920:     fprintf(fp_out, "%s %d %d\n", ENDPAGE, page, printed);
        !          58921: 
        !          58922:     if ( ungetc(getc(fp_in), fp_in) == EOF )
        !          58923:        redirect(-1);
        !          58924:     else redirect(++page);
        !          58925: 
        !          58926:     fprintf(fp_out, "%s %d %d\n", PAGE, page, printed+1);
        !          58927:     fprintf(fp_out, "/saveobj save def\n");
        !          58928:     fprintf(fp_out, "mark\n");
        !          58929:     writerequest(printed+1, fp_out);
        !          58930:     fprintf(fp_out, "%d pagesetup\n", printed+1);
        !          58931: 
        !          58932:     vgoto(topmargin);
        !          58933:     hgoto(leftmargin);
        !          58934: 
        !          58935:     markedpage = FALSE;
        !          58936: 
        !          58937: }   /* End of formfeed */
        !          58938: 
        !          58939: /*****************************************************************************/
        !          58940: 
        !          58941: linefeed()
        !          58942: 
        !          58943: {
        !          58944: 
        !          58945:     int                line = 0;               /* current line - based on ovmi */
        !          58946: 
        !          58947: /*
        !          58948:  *
        !          58949:  * Adjust our current vertical position. If we've passed the bottom of the page
        !          58950:  * or exceeded the number of lines per page, print it and go to the upper left
        !          58951:  * corner of the next page. This routine is also called from carriage() if crislf
        !          58952:  * is ON.
        !          58953:  *
        !          58954:  */
        !          58955: 
        !          58956:     vmot(vmi);
        !          58957: 
        !          58958:     if ( lfiscr == ON )
        !          58959:        hgoto(leftmargin);
        !          58960: 
        !          58961:     if ( linespp > 0 )                 /* means something so see where we are */
        !          58962:        line = vpos / ovmi + 1;
        !          58963: 
        !          58964:     if ( vpos > bottommargin || line > linespp )
        !          58965:        formfeed();
        !          58966: 
        !          58967: }   /* End of linefeed */
        !          58968: 
        !          58969: /*****************************************************************************/
        !          58970: 
        !          58971: carriage()
        !          58972: 
        !          58973: {
        !          58974: 
        !          58975: /*
        !          58976:  *
        !          58977:  * Handles carriage return character. If crislf is ON we'll generate a line feed
        !          58978:  * every time we get a carriage return character.
        !          58979:  *
        !          58980:  */
        !          58981: 
        !          58982:     if ( shadowprint == ON )           /* back to normal mode */
        !          58983:        changefont(fontname);
        !          58984: 
        !          58985:     advance = 1;
        !          58986:     shadowprint = OFF;
        !          58987: 
        !          58988:     hgoto(leftmargin);
        !          58989: 
        !          58990:     if ( crislf == ON )
        !          58991:        linefeed();
        !          58992: 
        !          58993: }   /* End of carriage */
        !          58994: 
        !          58995: /*****************************************************************************/
        !          58996: 
        !          58997: htab()
        !          58998: 
        !          58999: {
        !          59000: 
        !          59001:     int                col;                    /* 'column' we'll be at next */
        !          59002:     int                i;                      /* loop index */
        !          59003: 
        !          59004: /*
        !          59005:  *
        !          59006:  * Tries to figure out where the next tab stop is. Wasn't positive about this
        !          59007:  * one, since hmi can change. I'll assume columns are determined by the original
        !          59008:  * value of hmi. That fixes them on the page, which seems to make more sense than
        !          59009:  * letting them float all over the place.
        !          59010:  *
        !          59011:  */
        !          59012: 
        !          59013:     endline();
        !          59014: 
        !          59015:     col = hpos/ohmi + 1;
        !          59016:     for ( i = col; i < ROWS; i++ )
        !          59017:        if ( htabstops[i] == ON )  {
        !          59018:            col = i;
        !          59019:            break;
        !          59020:        }   /* End if */
        !          59021: 
        !          59022:     hgoto(col * ohmi);
        !          59023:     lastx = hpos;
        !          59024: 
        !          59025: }   /* End of htab */
        !          59026: 
        !          59027: /*****************************************************************************/
        !          59028: 
        !          59029: vtab()
        !          59030: 
        !          59031: {
        !          59032: 
        !          59033:     int                line;                   /* line we'll be at next */
        !          59034:     int                i;                      /* loop index */
        !          59035: 
        !          59036: /*
        !          59037:  *
        !          59038:  * Looks for the next vertical tab stop in the vtabstops[] array and moves to that
        !          59039:  * line. If we don't find a tab we'll just move down one line - shouldn't happen.
        !          59040:  *
        !          59041:  */
        !          59042: 
        !          59043:     endline();
        !          59044: 
        !          59045:     line = vpos/ovmi + 1;
        !          59046:     for ( i = line; i < COLUMNS; i++ )
        !          59047:        if ( vtabstops[i] == ON )  {
        !          59048:            line = i;
        !          59049:            break;
        !          59050:        }   /* End if */
        !          59051: 
        !          59052:     vgoto(line * ovmi);
        !          59053: 
        !          59054: }   /* End of vtab */
        !          59055: 
        !          59056: /*****************************************************************************/
        !          59057: 
        !          59058: backspace()
        !          59059: 
        !          59060: {
        !          59061: 
        !          59062: /*
        !          59063:  *
        !          59064:  * Moves backwards a distance equal to the current value of hmi, but don't go
        !          59065:  * past the left margin.
        !          59066:  *
        !          59067:  */
        !          59068: 
        !          59069:     endline();
        !          59070: 
        !          59071:     if ( hpos - leftmargin >= hmi )
        !          59072:        hmot(-hmi);
        !          59073:     else hgoto(leftmargin);            /* maybe just ignore the backspace?? */
        !          59074: 
        !          59075:     lastx = hpos;
        !          59076: 
        !          59077: }   /* End of backspace */
        !          59078: 
        !          59079: /*****************************************************************************/
        !          59080: 
        !          59081: escape()
        !          59082: 
        !          59083: {
        !          59084: 
        !          59085:     int                ch;                     /* control character */
        !          59086: 
        !          59087: /*
        !          59088:  *
        !          59089:  * Handles special codes that are expected to follow an escape character. The
        !          59090:  * initial escape character is followed by one or two bytes.
        !          59091:  *
        !          59092:  */
        !          59093: 
        !          59094:     switch ( ch = getc(fp_in) ) {
        !          59095:        case 'T':                       /* top margin */
        !          59096:                topmargin = vpos;
        !          59097:                break;
        !          59098: 
        !          59099:        case 'L':                       /* bottom margin */
        !          59100:                bottommargin = vpos;
        !          59101:                break;
        !          59102: 
        !          59103:        case 'C':                       /* clear top and bottom margins */
        !          59104:                bottommargin = BOTTOMMARGIN;
        !          59105:                topmargin = TOPMARGIN;
        !          59106:                break;
        !          59107: 
        !          59108:        case '9':                       /* left margin */
        !          59109:                leftmargin = hpos;
        !          59110:                break;
        !          59111: 
        !          59112:        case '0':                       /* right margin */
        !          59113:                rightmargin = hpos;
        !          59114:                break;
        !          59115: 
        !          59116:        case '1':                       /* set horizontal tab */
        !          59117:                htabstops[hpos/ohmi] = ON;
        !          59118:                break;
        !          59119: 
        !          59120:        case '8':                       /* clear horizontal tab at hpos */
        !          59121:                htabstops[hpos/ohmi] = OFF;
        !          59122:                break;
        !          59123: 
        !          59124:        case '-':                       /* set vertical tab */
        !          59125:                vtabstops[vpos/ovmi] = ON;
        !          59126:                break;
        !          59127: 
        !          59128:        case '2':                       /* clear all tabs */
        !          59129:                cleartabs();
        !          59130:                break;
        !          59131: 
        !          59132:        case '\014':                    /* set lines per page */
        !          59133:                linespp = getc(fp_in);
        !          59134:                break;
        !          59135: 
        !          59136:        case '\037':                    /* set hmi to next byte minus 1 */
        !          59137:                hmi = HSCALE * (getc(fp_in) - 1);
        !          59138:                break;
        !          59139: 
        !          59140:        case 'S':                       /* reset hmi to default */
        !          59141:                hmi = ohmi;
        !          59142:                break;
        !          59143: 
        !          59144:        case '\011':                    /* move to column given by next byte */
        !          59145:                hgoto((getc(fp_in)-1) * ohmi);
        !          59146:                break;
        !          59147: 
        !          59148:        case '?':                       /* do carriage return after line feed */
        !          59149:                lfiscr = ON;
        !          59150:                break;
        !          59151: 
        !          59152:        case '!':                       /* don't generate carriage return */
        !          59153:                lfiscr = OFF;
        !          59154:                break;
        !          59155: 
        !          59156:        case '5':                       /* forward print mode */
        !          59157:                advance = 1;
        !          59158:                break;
        !          59159: 
        !          59160:        case '6':                       /* backward print mode */
        !          59161:                advance = -1;
        !          59162:                break;
        !          59163: 
        !          59164:        case '\036':                    /* set vmi to next byte minus 1 */
        !          59165:                vmi = VSCALE * (getc(fp_in) - 1);
        !          59166:                break;
        !          59167: 
        !          59168:        case '\013':                    /* move to line given by next byte */
        !          59169:                vgoto((getc(fp_in)-1) * ovmi);
        !          59170:                break;
        !          59171: 
        !          59172:        case 'U':                       /* positive half line feed */
        !          59173:                vmot(vmi/2);
        !          59174:                break;
        !          59175: 
        !          59176:        case 'D':                       /* negative half line feed */
        !          59177:                vmot(-vmi/2);
        !          59178:                break;
        !          59179: 
        !          59180:        case '\012':                    /* negative line feed */
        !          59181:                vmot(-vmi);
        !          59182:                break;
        !          59183: 
        !          59184:        case '\015':                    /* clear all margins */
        !          59185:                bottommargin = BOTTOMMARGIN;
        !          59186:                topmargin = TOPMARGIN;
        !          59187:                leftmargin = BOTTOMMARGIN;
        !          59188:                rightmargin = RIGHTMARGIN;
        !          59189:                break;
        !          59190: 
        !          59191:        case 'E':                       /* auto underscore - use italic font */
        !          59192:                changefont("/Courier-Oblique");
        !          59193:                break;
        !          59194: 
        !          59195:        case 'R':                       /* disable auto underscore */
        !          59196:                changefont(fontname);
        !          59197:                break;
        !          59198: 
        !          59199:        case 'O':                       /* bold/shadow printing */
        !          59200:        case 'W':
        !          59201:                changefont("/Courier-Bold");
        !          59202:                shadowprint = ON;
        !          59203:                break;
        !          59204: 
        !          59205:        case '&':                       /* disable bold printing */
        !          59206:                changefont(fontname);
        !          59207:                shadowprint = OFF;
        !          59208:                break;
        !          59209: 
        !          59210:        case '/':                       /* ignored 2 byte escapes */
        !          59211:        case '\\':
        !          59212:        case '<':
        !          59213:        case '>':
        !          59214:        case '%':
        !          59215:        case '=':
        !          59216:        case '.':
        !          59217:        case '4':
        !          59218:        case 'A':
        !          59219:        case 'B':
        !          59220:        case 'M':
        !          59221:        case 'N':
        !          59222:        case 'P':
        !          59223:        case 'Q':
        !          59224:        case 'X':
        !          59225:        case '\010':
        !          59226:                break;
        !          59227: 
        !          59228:        case ',':                       /* ignored 3 byte escapes */
        !          59229:        case '\016':
        !          59230:        case '\021':
        !          59231:                getc(fp_in);
        !          59232:                break;
        !          59233: 
        !          59234:        case '3':                       /* graphics mode - should quit! */
        !          59235:        case '7':
        !          59236:        case 'G':
        !          59237:        case 'V':
        !          59238:        case 'Y':
        !          59239:        case 'Z':
        !          59240:                error(FATAL, "graphics mode is not implemented");
        !          59241:                break;
        !          59242: 
        !          59243:        default:
        !          59244:                error(FATAL, "missing case for escape o%o\n", ch);
        !          59245:                break;
        !          59246:     }  /* End switch */
        !          59247: 
        !          59248: }   /* End of escape */
        !          59249: 
        !          59250: /*****************************************************************************/
        !          59251: 
        !          59252: vmot(n)
        !          59253: 
        !          59254:     int                n;                      /* move this far vertically */
        !          59255: 
        !          59256: {
        !          59257: 
        !          59258: /*
        !          59259:  *
        !          59260:  * Move vertically n units from where we are.
        !          59261:  *
        !          59262:  */
        !          59263: 
        !          59264:     vpos += n;
        !          59265: 
        !          59266: }   /* End of vmot */
        !          59267: 
        !          59268: /*****************************************************************************/
        !          59269: 
        !          59270: vgoto(n)
        !          59271: 
        !          59272:     int                n;                      /* new vertical position */
        !          59273: 
        !          59274: {
        !          59275: 
        !          59276: /*
        !          59277:  *
        !          59278:  * Moves to absolute vertical position n.
        !          59279:  *
        !          59280:  */
        !          59281: 
        !          59282:     vpos = n;
        !          59283: 
        !          59284: }   /* End of vgoto */
        !          59285: 
        !          59286: /*****************************************************************************/
        !          59287: 
        !          59288: hmot(n)
        !          59289: 
        !          59290:     int                n;                      /* move this horizontally */
        !          59291: 
        !          59292: {
        !          59293: 
        !          59294: /*
        !          59295:  *
        !          59296:  * Moves horizontally n units from our current position.
        !          59297:  *
        !          59298:  */
        !          59299: 
        !          59300:     hpos += n * advance;
        !          59301: 
        !          59302:     if ( hpos < leftmargin )
        !          59303:        hpos = leftmargin;
        !          59304: 
        !          59305: }   /* End of hmot */
        !          59306: 
        !          59307: /*****************************************************************************/
        !          59308: 
        !          59309: hgoto(n)
        !          59310: 
        !          59311:     int                n;                      /* go to this horizontal position */
        !          59312: 
        !          59313: {
        !          59314: 
        !          59315: /*
        !          59316:  *
        !          59317:  * Moves to absolute horizontal position n.
        !          59318:  *
        !          59319:  */
        !          59320: 
        !          59321:     hpos = n;
        !          59322: 
        !          59323: }   /* End of hgoto */
        !          59324: 
        !          59325: /*****************************************************************************/
        !          59326: 
        !          59327: changefont(name)
        !          59328: 
        !          59329:     char       *name;
        !          59330: 
        !          59331: {
        !          59332: 
        !          59333: /*
        !          59334:  *
        !          59335:  * Changes the current font. Used to get in and out of auto underscore and bold
        !          59336:  * printing.
        !          59337:  *
        !          59338:  */
        !          59339: 
        !          59340:     endline();
        !          59341:     fprintf(fp_out, "%s f\n", name);
        !          59342: 
        !          59343: }   /* End of changefont */
        !          59344: 
        !          59345: /*****************************************************************************/
        !          59346: 
        !          59347: startline()
        !          59348: 
        !          59349: {
        !          59350: 
        !          59351: /*
        !          59352:  *
        !          59353:  * Called whenever we want to be certain we're ready to start pushing characters
        !          59354:  * into an open string on the stack. If stringcount is positive we've already
        !          59355:  * started, so there's nothing to do. The first string starts in column 1.
        !          59356:  *
        !          59357:  */
        !          59358: 
        !          59359:     if ( stringcount < 1 )  {
        !          59360:        putc('(', fp_out);
        !          59361:        stringstart = lastx = hpos;
        !          59362:        lasty = vpos;
        !          59363:        lasthmi = hmi;
        !          59364:        lastc = -1;
        !          59365:        prevx = -1;
        !          59366:        stringcount = 1;
        !          59367:     }  /* End if */
        !          59368: 
        !          59369: }   /* End of startline */
        !          59370: 
        !          59371: /*****************************************************************************/
        !          59372: 
        !          59373: endline()
        !          59374: 
        !          59375: {
        !          59376: 
        !          59377: /*
        !          59378:  *
        !          59379:  * Generates a call to the PostScript procedure that processes the text on the
        !          59380:  * the stack - provided stringcount is positive.
        !          59381:  *
        !          59382:  */
        !          59383: 
        !          59384:     if ( stringcount > 0 )
        !          59385:        fprintf(fp_out, ")%d %d %d t\n", stringstart, lasty, lasthmi);
        !          59386: 
        !          59387:     stringcount = 0;
        !          59388: 
        !          59389: }   /* End of endline */
        !          59390: 
        !          59391: /*****************************************************************************/
        !          59392: 
        !          59393: endstring()
        !          59394: 
        !          59395: {
        !          59396: 
        !          59397: /*
        !          59398:  *
        !          59399:  * Takes the string we've been working on and adds it to the output file. Called
        !          59400:  * when we need to adjust our horizontal position before starting a new string.
        !          59401:  * Also called from endline() when we're done with the current line.
        !          59402:  *
        !          59403:  */
        !          59404: 
        !          59405:     if ( stringcount > 0 )  {
        !          59406:        fprintf(fp_out, ")%d(", stringstart);
        !          59407:        lastx = stringstart = hpos;
        !          59408:        stringcount++;
        !          59409:     }  /* End if */
        !          59410: 
        !          59411: }   /* End of endstring */
        !          59412: 
        !          59413: /*****************************************************************************/
        !          59414: 
        !          59415: oput(ch)
        !          59416: 
        !          59417:     int                ch;                     /* next output character */
        !          59418: 
        !          59419: {
        !          59420: 
        !          59421: /*
        !          59422:  *
        !          59423:  * Responsible for adding all printing characters from the input file to the
        !          59424:  * open string on top of the stack. The only other characters that end up in
        !          59425:  * that string are the quotes required for special characters. Reverse printing
        !          59426:  * mode hasn't been tested but it should be close. hpos and lastx should disagree
        !          59427:  * each time (except after startline() does something), and that should force a
        !          59428:  * call to endstring() for every character.
        !          59429:  *
        !          59430:  */
        !          59431: 
        !          59432:     if ( stringcount > 100 )           /* don't put too much on the stack */
        !          59433:        endline();
        !          59434: 
        !          59435:     if ( vpos != lasty )
        !          59436:        endline();
        !          59437: 
        !          59438:     if ( advance == -1 )               /* for reverse printing - move first */
        !          59439:        hmot(hmi);
        !          59440: 
        !          59441:     startline();
        !          59442: 
        !          59443:     if ( lastc != ch || hpos != prevx )  {
        !          59444:        if ( lastx != hpos )
        !          59445:            endstring();
        !          59446: 
        !          59447:        if ( isascii(ch) && isprint(ch) ) {
        !          59448:            if ( ch == '\\' || ch == '(' || ch == ')' )
        !          59449:                putc('\\', fp_out);
        !          59450:            putc(ch, fp_out);
        !          59451:        } else fprintf(fp_out, "\\%.3o", ch & 0377);
        !          59452: 
        !          59453:        lastc = ch;
        !          59454:        prevx = hpos;
        !          59455:        lastx += lasthmi;
        !          59456:     }  /* End if */
        !          59457: 
        !          59458:     if ( advance != -1 )
        !          59459:        hmot(hmi);
        !          59460: 
        !          59461:     markedpage = TRUE;
        !          59462: 
        !          59463: }   /* End of oput */
        !          59464: 
        !          59465: /*****************************************************************************/
        !          59466: 
        !          59467: redirect(pg)
        !          59468: 
        !          59469:     int                pg;                     /* next page we're printing */
        !          59470: 
        !          59471: {
        !          59472: 
        !          59473:     static FILE        *fp_null = NULL;        /* if output is turned off */
        !          59474: 
        !          59475: /*
        !          59476:  *
        !          59477:  * If we're not supposed to print page pg, fp_out will be directed to /dev/null,
        !          59478:  * otherwise output goes to stdout.
        !          59479:  *
        !          59480:  */
        !          59481: 
        !          59482:     if ( pg >= 0 && in_olist(pg) == ON )
        !          59483:        fp_out = stdout;
        !          59484:     else if ( (fp_out = fp_null) == NULL )
        !          59485:        fp_out = fp_null = fopen("/dev/null", "w");
        !          59486: 
        !          59487: }   /* End of redirect */
        !          59488: 
        !          59489: /*****************************************************************************/
        !          59490: 
        !          59491: 0707070014230643021006440057030057030000011712360522627503500003200000000127post.src/postdaisy/README
        !          59492: Diablo 630 to PostScript translator. Not terribly useful, and much has
        !          59493: been omitted.
        !          59494: 
        !          59495: 0707070014230637761006400057030057030000011712300522633075400003700000007451post.src/postdaisy/postdaisy.1.ds dQ /usr/lib/postscript
        !          59496: .TH POSTDAISY 1 "DWB 3.2"
        !          59497: .SH NAME
        !          59498: .B postdaisy
        !          59499: \- PostScript translator for Diablo 630 files
        !          59500: .SH SYNOPSIS
        !          59501: \*(mBpostdaisy\f1
        !          59502: .OP "" options []
        !          59503: .OP "" files []
        !          59504: .SH DESCRIPTION
        !          59505: .B postdaisy
        !          59506: translates Diablo 630 daisy-wheel
        !          59507: .I files
        !          59508: into PostScript and writes the results on the
        !          59509: standard output.
        !          59510: If no
        !          59511: .I files
        !          59512: are specified, or if
        !          59513: .OP \-
        !          59514: is one of the input
        !          59515: .IR files ,
        !          59516: the standard input is read.
        !          59517: The following
        !          59518: .I options
        !          59519: are understood:
        !          59520: .TP 0.75i
        !          59521: .OP \-c num
        !          59522: Print
        !          59523: .I num
        !          59524: copies of each page.
        !          59525: By default only one copy is printed.
        !          59526: .TP
        !          59527: .OP \-f name
        !          59528: Print
        !          59529: .I files
        !          59530: using font
        !          59531: .IR name .
        !          59532: Any PostScript font can be used,
        !          59533: although the best results will only be
        !          59534: obtained with constant width fonts.
        !          59535: The default font is Courier.
        !          59536: .TP
        !          59537: .OP \-h num
        !          59538: Set the initial horizontal motion index to
        !          59539: .IR num .
        !          59540: Determines the character advance and the default
        !          59541: point size, unless the
        !          59542: .OP \-s
        !          59543: option is used.
        !          59544: The default is 12.
        !          59545: .TP
        !          59546: .OP \-m num
        !          59547: Magnify each logical page by the factor
        !          59548: .IR num .
        !          59549: Pages are scaled uniformly about the origin,
        !          59550: which is located near the upper left corner of
        !          59551: each page.
        !          59552: The default magnification is 1.0.
        !          59553: .TP
        !          59554: .OP \-n num
        !          59555: Print
        !          59556: .I num
        !          59557: logical pages on each piece of paper,
        !          59558: where
        !          59559: .I num
        !          59560: can be any positive integer.
        !          59561: By default
        !          59562: .I num
        !          59563: is set to 1.
        !          59564: .TP
        !          59565: .OP \-o list
        !          59566: Print pages whose numbers are given in the comma-separated
        !          59567: .IR list .
        !          59568: The list contains single numbers
        !          59569: .I N
        !          59570: and ranges
        !          59571: .IR N1\-\|N2 .
        !          59572: A missing
        !          59573: .I N1
        !          59574: means the lowest numbered page, a missing
        !          59575: .I N2
        !          59576: means the highest.
        !          59577: .TP
        !          59578: .OP \-p mode
        !          59579: Print
        !          59580: .I files
        !          59581: in either \*(mBportrait\fP or \*(mBlandscape\fP
        !          59582: .IR mode .
        !          59583: Only the first character of
        !          59584: .I mode
        !          59585: is significant.
        !          59586: The default
        !          59587: .I mode
        !          59588: is \*(mBportrait\fP.
        !          59589: .TP
        !          59590: .OP \-r num
        !          59591: Selects carriage return and line feed behavior.
        !          59592: If
        !          59593: .I num
        !          59594: is 1 a line feed generates a carriage return.
        !          59595: If
        !          59596: .I num
        !          59597: is 2 a carriage return generates a line feed.
        !          59598: Setting
        !          59599: .I num
        !          59600: to 3 enables both modes.
        !          59601: .TP
        !          59602: .OP \-s num
        !          59603: Use point size
        !          59604: .I num
        !          59605: instead of the default value set by the
        !          59606: initial horizontal motion index.
        !          59607: .TP
        !          59608: .OP \-v num
        !          59609: Set the initial vertical motion index to
        !          59610: .IR num .
        !          59611: The default is 8.
        !          59612: .TP
        !          59613: .OP \-x num
        !          59614: Translate the origin
        !          59615: .I num
        !          59616: inches along the positive x axis.
        !          59617: The default
        !          59618: coordinate system has the origin fixed near the
        !          59619: upper left corner of the page, with positive
        !          59620: x to the right and positive y down the page.
        !          59621: Positive
        !          59622: .I num
        !          59623: moves everything right.
        !          59624: The default offset is 0.25 inches.
        !          59625: .TP
        !          59626: .OP \-y num
        !          59627: Translate the origin
        !          59628: .I num
        !          59629: inches along the positive y axis.
        !          59630: Positive
        !          59631: .I num
        !          59632: moves text down the page.
        !          59633: The default offset is 0.25 inches.
        !          59634: .TP
        !          59635: .OP \-E name
        !          59636: Set the character encoding for text fonts to
        !          59637: .IR name .
        !          59638: Requesting
        !          59639: .I name
        !          59640: means include file
        !          59641: .MI \*(dQ/ name .enc \f1.
        !          59642: A nonexistent encoding file is silently ignored.
        !          59643: The default selects file
        !          59644: .MR \*(dQ/Default.enc .
        !          59645: .TP
        !          59646: .OP \-L file
        !          59647: Use
        !          59648: .I file
        !          59649: as the PostScript prologue.
        !          59650: .br
        !          59651: The default is
        !          59652: .MR \*(dQ/postdaisy.ps .
        !          59653: .PP
        !          59654: Three options allow insertion of arbitrary PostScript
        !          59655: at controlled points in the translation process:
        !          59656: .TP 0.75i
        !          59657: .OP \-C file
        !          59658: Copy
        !          59659: .I file
        !          59660: to the output file;
        !          59661: .I file
        !          59662: must contain legitimate PostScript.
        !          59663: .TP
        !          59664: .OP \-P string
        !          59665: Include
        !          59666: .I string
        !          59667: in output file;
        !          59668: .I string
        !          59669: must be legitimate PostScript.
        !          59670: .TP
        !          59671: .OP \-R action
        !          59672: Requests special
        !          59673: .I action
        !          59674: (e.g.,
        !          59675: .MR manualfeed )
        !          59676: on a per page or global basis.
        !          59677: The
        !          59678: .I action
        !          59679: string can be given as
        !          59680: .IR request ,
        !          59681: .IM request : page\f1\|,
        !          59682: or
        !          59683: .IM request : page : file\f1\|.
        !          59684: If
        !          59685: .I page
        !          59686: is omitted or given as 0, the request
        !          59687: applies to all pages.
        !          59688: If
        !          59689: .I file
        !          59690: is omitted, the request
        !          59691: lookup is done in
        !          59692: .MR \*(dQ/ps.requests .
        !          59693: .SH DIAGNOSTICS
        !          59694: A 0 exit status is returned if
        !          59695: .I files
        !          59696: were successfully processed.
        !          59697: .SH FILES
        !          59698: .MW \*(dQ/postdaisy.ps
        !          59699: .br
        !          59700: .MW \*(dQ/forms.ps
        !          59701: .br
        !          59702: .MW \*(dQ/ps.requests
        !          59703: .SH SEE ALSO
        !          59704: .BR dpost (1),
        !          59705: .BR postdmd (1),
        !          59706: .BR postio (1),
        !          59707: .BR postmd (1),
        !          59708: .BR postprint (1),
        !          59709: .BR postreverse (1),
        !          59710: .BR posttek (1),
        !          59711: .BR psencoding (1)
        !          59712: 0707070014230643041006440057030057030000011712560522627503500004000000003367post.src/postdaisy/postdaisy.ps%
        !          59713: % Version 3.3.2 prologue for Diablo 1640 files.
        !          59714: %
        !          59715: 
        !          59716: /#copies 1 store
        !          59717: /aspectratio 1 def
        !          59718: /font /Courier def
        !          59719: /formsperpage 1 def
        !          59720: /hmi 12 def
        !          59721: /landscape false def
        !          59722: /magnification 1 def
        !          59723: /margin 10 def
        !          59724: /orientation 0 def
        !          59725: /resolution 240 def
        !          59726: /rotation 1 def
        !          59727: /xoffset .25 def
        !          59728: /yoffset .25 def
        !          59729: 
        !          59730: /roundpage true def
        !          59731: /useclippath true def
        !          59732: /pagebbox [0 0 612 792] def
        !          59733: 
        !          59734: /inch {72 mul} bind def
        !          59735: /min {2 copy gt {exch} if pop} bind def
        !          59736: 
        !          59737: /ashow {ashow} bind def                % so later references don't bind
        !          59738: /stringwidth {stringwidth} bind def
        !          59739: 
        !          59740: /setup {
        !          59741:        counttomark 2 idiv {def} repeat pop
        !          59742: 
        !          59743:        landscape {/orientation 90 orientation add def} if
        !          59744:        /scaling 72 resolution div def
        !          59745:        currentdict /pointsize known not {/pointsize hmi def} if
        !          59746:        font findfont pointsize scaling div scalefont setfont
        !          59747:        /charwidth (M) stringwidth pop def
        !          59748: 
        !          59749:        pagedimensions
        !          59750:        xcenter ycenter translate
        !          59751:        orientation rotation mul rotate
        !          59752:        width 2 div neg height 2 div translate
        !          59753:        xoffset inch yoffset inch neg translate
        !          59754:        margin 2 div dup neg translate
        !          59755:        magnification dup aspectratio mul scale
        !          59756:        height width div 1 min dup scale
        !          59757:        scaling dup scale
        !          59758: } def
        !          59759: 
        !          59760: /pagedimensions {
        !          59761:        useclippath userdict /gotpagebbox known not and {
        !          59762:                /pagebbox [clippath pathbbox newpath] def
        !          59763:                roundpage currentdict /roundpagebbox known and {roundpagebbox} if
        !          59764:        } if
        !          59765:        pagebbox aload pop
        !          59766:        4 -1 roll exch 4 1 roll 4 copy
        !          59767:        landscape {4 2 roll} if
        !          59768:        sub /width exch def
        !          59769:        sub /height exch def
        !          59770:        add 2 div /xcenter exch def
        !          59771:        add 2 div /ycenter exch def
        !          59772:        userdict /gotpagebbox true put
        !          59773: } def
        !          59774: 
        !          59775: /pagesetup {/page exch def 0 0 moveto} bind def
        !          59776: 
        !          59777: /t {
        !          59778:        charwidth sub /advance exch def
        !          59779:        neg /y exch def
        !          59780:        counttomark 2 idiv {y moveto advance 0 3 -1 roll ashow} repeat
        !          59781: } bind def
        !          59782: 
        !          59783: /f {findfont pointsize scaling div scalefont setfont} bind def
        !          59784: 
        !          59785: /done {/lastpage where {pop lastpage} if} def
        !          59786: 0707070014230643051006440057030057030000011713700522627503500004000000067255post.src/postdaisy/Opostdaisy.c/*
        !          59787:  *
        !          59788:  * postdaisy - PostScript translator for Diablo 1640 files.
        !          59789:  *
        !          59790:  * A program that translates Diablo 1640 files into PostScript. Absolutely nothing
        !          59791:  * is guaranteed. Quite a few things haven't been implemented, and what's been
        !          59792:  * done isn't well tested. Most of the documentation used to write this program
        !          59793:  * was taken from the 'Diablo Emulator' section of a recent Imagen manual.
        !          59794:  *
        !          59795:  * Some of document comments that are generated may not be right. Most of the test
        !          59796:  * files I used produced a trailing blank page. I've put a check in formfeed() that
        !          59797:  * won't print the last page if it doesn't contain any text, but PAGES comments may
        !          59798:  * not be right. The DOCUMENTFONTS comment will also be wrong if auto underline or
        !          59799:  * bold printing have been turned on by escape commands.
        !          59800:  *
        !          59801:  * The brute force approach used to implement horizontal and vertical tabs leaves
        !          59802:  * much to be desired, and may not work for very small initial hmi and vmi values.
        !          59803:  * At the very least I should have used malloc() to get space for the two tabstop
        !          59804:  * arrays after hmi and vmi are known!
        !          59805:  *
        !          59806:  * Reverse printing mode hasn't been tested at all, but what's here should be
        !          59807:  * close even though it's not efficient.
        !          59808:  *
        !          59809:  * The PostScript prologue is copied from *prologue before any of the input files
        !          59810:  * are translated. The program expects that the following PostScript procedures
        !          59811:  * are defined in that file:
        !          59812:  *
        !          59813:  *     setup
        !          59814:  *
        !          59815:  *       mark ... setup -
        !          59816:  *
        !          59817:  *         Handles special initialization stuff that depends on how this program
        !          59818:  *         was called. Expects to find a mark followed by key/value pairs on the
        !          59819:  *         stack. The def operator is applied to each pair up to the mark, then
        !          59820:  *         the default state is set up.
        !          59821:  *
        !          59822:  *     pagesetup
        !          59823:  *
        !          59824:  *       page pagesetup -
        !          59825:  *
        !          59826:  *         Does whatever is needed to set things up for the next page. Expects to
        !          59827:  *         find the current page number on the stack.
        !          59828:  *
        !          59829:  *     t
        !          59830:  *
        !          59831:  *       mark str1 x1 str2 x2 ... strn xn y hmi t mark
        !          59832:  *
        !          59833:  *         Handles all the text on the stack. Characters in the strings are
        !          59834:  *         printed using hmi as the character advance, and all strings are at
        !          59835:  *         vertical position y. Each string is begins at the horizontal position
        !          59836:  *         that preceeds it.
        !          59837:  *
        !          59838:  *     f
        !          59839:  *
        !          59840:  *       font f -
        !          59841:  *
        !          59842:  *         Use font f, where f is the full PostScript font name. Only used when
        !          59843:  *         we switch to auto underline (Courier-Italic) or bold (Courier-Bold)
        !          59844:  *         printing.
        !          59845:  *
        !          59846:  *     done
        !          59847:  *
        !          59848:  *       done
        !          59849:  *
        !          59850:  *         Makes sure the last page is printed. Only needed when we're printing
        !          59851:  *         more than one page on each sheet of paper.
        !          59852:  *
        !          59853:  * Many default values, like the magnification and orientation, are defined in 
        !          59854:  * the prologue, which is where they belong. If they're changed (by options), an
        !          59855:  * appropriate definition is made after the prologue is added to the output file.
        !          59856:  * The -P option passes arbitrary PostScript through to the output file. Among
        !          59857:  * other things it can be used to set (or change) values that can't be accessed by
        !          59858:  * other options.
        !          59859:  *
        !          59860:  */
        !          59861: 
        !          59862: #include <stdio.h>
        !          59863: #include <signal.h>
        !          59864: #include <ctype.h>
        !          59865: #include <fcntl.h>
        !          59866: 
        !          59867: #include "comments.h"                  /* PostScript file structuring comments */
        !          59868: #include "gen.h"                       /* general purpose definitions */
        !          59869: #include "path.h"                      /* for the prologue */
        !          59870: #include "ext.h"                       /* external variable declarations */
        !          59871: #include "postdaisy.h"                 /* a few special definitions */
        !          59872: 
        !          59873: char   *optnames = "a:c:f:h:l:m:n:o:p:r:s:v:x:y:A:C:E:J:L:P:DI";
        !          59874: 
        !          59875: char   *prologue = POSTDAISY;          /* default PostScript prologue */
        !          59876: char   *formfile = FORMFILE;           /* stuff for multiple pages per sheet */
        !          59877: 
        !          59878: int    formsperpage = 1;               /* page images on each piece of paper */
        !          59879: int    copies = 1;                     /* and this many copies of each sheet */
        !          59880: 
        !          59881: char   htabstops[COLUMNS];             /* horizontal */
        !          59882: char   vtabstops[ROWS];                /* and vertical tabs */
        !          59883: 
        !          59884: int    res = RES;                      /* input file resolution - sort of */
        !          59885: 
        !          59886: int    hmi = HMI;                      /* horizontal motion index - 1/120 inch */
        !          59887: int    vmi = VMI;                      /* vertical motion index - 1/48 inch */
        !          59888: int    ohmi = HMI;                     /* original hmi */
        !          59889: int    ovmi = VMI;                     /* and vmi - for tabs and char size */
        !          59890: 
        !          59891: int    hpos = 0;                       /* current horizontal */
        !          59892: int    vpos = 0;                       /* and vertical position */
        !          59893: 
        !          59894: int    lastx = -1;                     /* printer's last horizontal */
        !          59895: int    lasty = -1;                     /* and vertical position */
        !          59896: int    lasthmi = -1;                   /* hmi for current text strings */
        !          59897: 
        !          59898: int    lastc = -1;                     /* last printed character */
        !          59899: int    prevx = -1;                     /* at this position */
        !          59900: 
        !          59901: int    leftmargin = LEFTMARGIN;        /* page margins */
        !          59902: int    rightmargin = RIGHTMARGIN;
        !          59903: int    topmargin = TOPMARGIN;
        !          59904: int    bottommargin = BOTTOMMARGIN;
        !          59905: 
        !          59906: int    stringcount = 0;                /* number of strings on the stack */
        !          59907: int    stringstart = 1;                /* column where current one starts */
        !          59908: int    advance = 1;                    /* -1 if in backward print mode */
        !          59909: 
        !          59910: int    lfiscr = OFF;                   /* line feed implies carriage return */
        !          59911: int    crislf = OFF;                   /* carriage return implies line feed */
        !          59912: 
        !          59913: int    linespp = 0;                    /* lines per page if it's positive */
        !          59914: int    markedpage = FALSE;             /* helps prevent trailing blank page */
        !          59915: int    page = 0;                       /* page we're working on */
        !          59916: int    printed = 0;                    /* printed this many pages */
        !          59917: 
        !          59918: Fontmap        fontmap[] = FONTMAP;            /* for translating font names */
        !          59919: char   *fontname = "Courier";          /* use this PostScript font */
        !          59920: int    shadowprint = OFF;              /* automatic bold printing if ON */
        !          59921: 
        !          59922: FILE   *fp_in;                         /* read from this file */
        !          59923: FILE   *fp_out = stdout;               /* and write stuff here */
        !          59924: FILE   *fp_acct = NULL;                /* for accounting data */
        !          59925: 
        !          59926: /*****************************************************************************/
        !          59927: 
        !          59928: main(agc, agv)
        !          59929: 
        !          59930:     int                agc;
        !          59931:     char       *agv[];
        !          59932: 
        !          59933: {
        !          59934: 
        !          59935: /*
        !          59936:  *
        !          59937:  * A simple program that translates Diablo 1640 files into PostScript. Nothing
        !          59938:  * is guaranteed - the program not well tested and doesn't implement everything.
        !          59939:  *
        !          59940:  */
        !          59941: 
        !          59942:     argc = agc;                                /* other routines may want them */
        !          59943:     argv = agv;
        !          59944: 
        !          59945:     prog_name = argv[0];               /* really just for error messages */
        !          59946: 
        !          59947:     init_signals();                    /* sets up interrupt handling */
        !          59948:     header();                          /* PostScript header comments */
        !          59949:     options();                         /* handle the command line options */
        !          59950:     setup();                           /* for PostScript */
        !          59951:     arguments();                       /* followed by each input file */
        !          59952:     done();                            /* print the last page etc. */
        !          59953:     account();                         /* job accounting data */
        !          59954: 
        !          59955:     exit(x_stat);                      /* not much could be wrong */
        !          59956: 
        !          59957: }   /* End of main */
        !          59958: 
        !          59959: /*****************************************************************************/
        !          59960: 
        !          59961: init_signals()
        !          59962: 
        !          59963: {
        !          59964: 
        !          59965:     int                interrupt();            /* signal handler */
        !          59966: 
        !          59967: /*
        !          59968:  *
        !          59969:  * Makes sure we handle interrupts.
        !          59970:  *
        !          59971:  */
        !          59972: 
        !          59973:     if ( signal(SIGINT, interrupt) == SIG_IGN )  {
        !          59974:        signal(SIGINT, SIG_IGN);
        !          59975:        signal(SIGQUIT, SIG_IGN);
        !          59976:        signal(SIGHUP, SIG_IGN);
        !          59977:     } else {
        !          59978:        signal(SIGHUP, interrupt);
        !          59979:        signal(SIGQUIT, interrupt);
        !          59980:     }   /* End else */
        !          59981: 
        !          59982:     signal(SIGTERM, interrupt);
        !          59983: 
        !          59984: }   /* End of init_signals */
        !          59985: 
        !          59986: /*****************************************************************************/
        !          59987: 
        !          59988: header()
        !          59989: 
        !          59990: {
        !          59991: 
        !          59992:     int                ch;                     /* return value from getopt() */
        !          59993:     int                old_optind = optind;    /* for restoring optind - should be 1 */
        !          59994: 
        !          59995: /*
        !          59996:  *
        !          59997:  * Scans the option list looking for things, like the prologue file, that we need
        !          59998:  * right away but could be changed from the default. Doing things this way is an
        !          59999:  * attempt to conform to Adobe's latest file structuring conventions. In particular
        !          60000:  * they now say there should be nothing executed in the prologue, and they have
        !          60001:  * added two new comments that delimit global initialization calls. Once we know
        !          60002:  * where things really are we write out the job header, follow it by the prologue,
        !          60003:  * and then add the ENDPROLOG and BEGINSETUP comments.
        !          60004:  *
        !          60005:  */
        !          60006: 
        !          60007:     while ( (ch = getopt(argc, argv, optnames)) != EOF )
        !          60008:        if ( ch == 'L' )
        !          60009:            prologue = optarg;
        !          60010:        else if ( ch == '?' )
        !          60011:            error(FATAL, "");
        !          60012: 
        !          60013:     optind = old_optind;               /* get ready for option scanning */
        !          60014: 
        !          60015:     fprintf(stdout, "%s", CONFORMING);
        !          60016:     fprintf(stdout, "%s %s\n", VERSION, PROGRAMVERSION);
        !          60017:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, ATEND);
        !          60018:     fprintf(stdout, "%s %s\n", PAGES, ATEND);
        !          60019:     fprintf(stdout, "%s", ENDCOMMENTS);
        !          60020: 
        !          60021:     if ( cat(prologue) == FALSE )
        !          60022:        error(FATAL, "can't read %s", prologue);
        !          60023: 
        !          60024:     if ( DOROUND )
        !          60025:        cat(ROUNDPAGE);
        !          60026: 
        !          60027:     fprintf(stdout, "%s", ENDPROLOG);
        !          60028:     fprintf(stdout, "%s", BEGINSETUP);
        !          60029:     fprintf(stdout, "mark\n");
        !          60030: 
        !          60031: }   /* End of header */
        !          60032: 
        !          60033: /*****************************************************************************/
        !          60034: 
        !          60035: options()
        !          60036: 
        !          60037: {
        !          60038: 
        !          60039:     int                ch;                     /* return value from getopt() */
        !          60040:     int                n;                      /* for CR and LF modes */
        !          60041: 
        !          60042: /*
        !          60043:  *
        !          60044:  * Reads and processes the command line options. Added the -P option so arbitrary
        !          60045:  * PostScript code can be passed through. Expect it could be useful for changing
        !          60046:  * definitions in the prologue for which options have not been defined.
        !          60047:  *
        !          60048:  * Although any PostScript font can be used, things will only work for constant
        !          60049:  * width fonts.
        !          60050:  *
        !          60051:  */
        !          60052: 
        !          60053:     while ( (ch = getopt(argc, argv, optnames)) != EOF )  {
        !          60054:        switch ( ch )  {
        !          60055:            case 'a':                   /* aspect ratio */
        !          60056:                    fprintf(stdout, "/aspectratio %s def\n", optarg);
        !          60057:                    break;
        !          60058: 
        !          60059:            case 'c':                   /* copies */
        !          60060:                    copies = atoi(optarg);
        !          60061:                    fprintf(stdout, "/#copies %s store\n", optarg);
        !          60062:                    break;
        !          60063: 
        !          60064:            case 'f':                   /* use this PostScript font */
        !          60065:                    fontname = get_font(optarg);
        !          60066:                    fprintf(stdout, "/font /%s def\n", fontname);
        !          60067:                    break;
        !          60068: 
        !          60069:            case 'h':                   /* default character spacing */
        !          60070:                    ohmi = hmi = atoi(optarg) * HSCALE;
        !          60071:                    fprintf(stdout, "/hmi %s def\n", optarg);
        !          60072:                    break;
        !          60073: 
        !          60074:            case 'l':                   /* lines per page */
        !          60075:                    linespp = atoi(optarg);
        !          60076:                    break;
        !          60077: 
        !          60078:            case 'm':                   /* magnification */
        !          60079:                    fprintf(stdout, "/magnification %s def\n", optarg);
        !          60080:                    break;
        !          60081: 
        !          60082:            case 'n':                   /* forms per page */
        !          60083:                    formsperpage = atoi(optarg);
        !          60084:                    fprintf(stdout, "%s %s\n", FORMSPERPAGE, optarg);
        !          60085:                    fprintf(stdout, "/formsperpage %s def\n", optarg);
        !          60086:                    break;
        !          60087: 
        !          60088:            case 'o':                   /* output page list */
        !          60089:                    out_list(optarg);
        !          60090:                    break;
        !          60091: 
        !          60092:            case 'p':                   /* landscape or portrait mode */
        !          60093:                    if ( *optarg == 'l' )
        !          60094:                        fprintf(stdout, "/landscape true def\n");
        !          60095:                    else fprintf(stdout, "/landscape false def\n");
        !          60096:                    break;
        !          60097: 
        !          60098:            case 'r':                   /* set CR and LF modes */
        !          60099:                    n = atoi(optarg);
        !          60100:                    if ( n & 01 )
        !          60101:                        lfiscr = ON;
        !          60102:                    else lfiscr = OFF;
        !          60103:                    if ( n & 02 )
        !          60104:                        crislf = ON;
        !          60105:                    else crislf = OFF;
        !          60106:                    break;
        !          60107: 
        !          60108:            case 's':                   /* point size */
        !          60109:                    fprintf(stdout, "/pointsize %s def\n", optarg);
        !          60110:                    break;
        !          60111: 
        !          60112:            case 'v':                   /* default line spacing */
        !          60113:                    ovmi = vmi = atoi(optarg) * VSCALE;
        !          60114:                    break;
        !          60115: 
        !          60116:            case 'x':                   /* shift things horizontally */
        !          60117:                    fprintf(stdout, "/xoffset %s def\n", optarg);
        !          60118:                    break;
        !          60119: 
        !          60120:            case 'y':                   /* and vertically on the page */
        !          60121:                    fprintf(stdout, "/yoffset %s def\n", optarg);
        !          60122:                    break;
        !          60123: 
        !          60124:            case 'A':                   /* force job accounting */
        !          60125:            case 'J':
        !          60126:                    if ( (fp_acct = fopen(optarg, "a")) == NULL )
        !          60127:                        error(FATAL, "can't open accounting file %s", optarg);
        !          60128:                    break;
        !          60129: 
        !          60130:            case 'C':                   /* copy file straight to output */
        !          60131:                    if ( cat(optarg) == FALSE )
        !          60132:                        error(FATAL, "can't read %s", optarg);
        !          60133:                    break;
        !          60134: 
        !          60135:            case 'E':                   /* text font encoding */
        !          60136:                    fontencoding = optarg;
        !          60137:                    break;
        !          60138: 
        !          60139:            case 'L':                   /* PostScript prologue file */
        !          60140:                    prologue = optarg;
        !          60141:                    break;
        !          60142: 
        !          60143:            case 'P':                   /* PostScript pass through */
        !          60144:                    fprintf(stdout, "%s\n", optarg);
        !          60145:                    break;
        !          60146: 
        !          60147:            case 'R':                   /* special global or page level request */
        !          60148:                    saverequest(optarg);
        !          60149:                    break;
        !          60150: 
        !          60151:            case 'D':                   /* debug flag */
        !          60152:                    debug = ON;
        !          60153:                    break;
        !          60154: 
        !          60155:            case 'I':                   /* ignore FATAL errors */
        !          60156:                    ignore = ON;
        !          60157:                    break;
        !          60158: 
        !          60159:            case '?':                   /* don't understand the option */
        !          60160:                    error(FATAL, "");
        !          60161:                    break;
        !          60162: 
        !          60163:            default:                    /* don't know what to do for ch */
        !          60164:                    error(FATAL, "missing case for option %c\n", ch);
        !          60165:                    break;
        !          60166:        }   /* End switch */
        !          60167:     }   /* End while */
        !          60168: 
        !          60169:     argc -= optind;                    /* get ready for non-option args */
        !          60170:     argv += optind;
        !          60171: 
        !          60172: }   /* End of options */
        !          60173: 
        !          60174: /*****************************************************************************/
        !          60175: 
        !          60176: char *get_font(name)
        !          60177: 
        !          60178:     char       *name;                  /* name the user asked for */
        !          60179: 
        !          60180: {
        !          60181: 
        !          60182:     int                i;                      /* for looking through fontmap[] */
        !          60183: 
        !          60184: /*
        !          60185:  *
        !          60186:  * Called from options() to map a user's font name into a legal PostScript name.
        !          60187:  * If the lookup fails *name is returned to the caller. That should let you choose
        !          60188:  * any PostScript font, although things will only work well for constant width
        !          60189:  * fonts.
        !          60190:  *
        !          60191:  */
        !          60192: 
        !          60193:     for ( i = 0; fontmap[i].name != NULL; i++ )
        !          60194:        if ( strcmp(name, fontmap[i].name) == 0 )
        !          60195:            return(fontmap[i].val);
        !          60196: 
        !          60197:     return(name);
        !          60198: 
        !          60199: }   /* End of get_font */
        !          60200: 
        !          60201: /*****************************************************************************/
        !          60202: 
        !          60203: setup()
        !          60204: 
        !          60205: {
        !          60206: 
        !          60207: /*
        !          60208:  *
        !          60209:  * Handles things that must be done after the options are read but before the
        !          60210:  * input files are processed.
        !          60211:  *
        !          60212:  */
        !          60213: 
        !          60214:     writerequest(0, stdout);           /* global requests eg. manual feed */
        !          60215:     setencoding(fontencoding);
        !          60216:     fprintf(stdout, "setup\n");
        !          60217: 
        !          60218:     if ( formsperpage > 1 )  {
        !          60219:        if ( cat(formfile) == FALSE )
        !          60220:            error(FATAL, "can't read %s", formfile);
        !          60221:        fprintf(stdout, "%d setupforms\n", formsperpage);
        !          60222:     }  /* End if */
        !          60223: 
        !          60224:     fprintf(stdout, "%s", ENDSETUP);
        !          60225: 
        !          60226: }   /* End of setup */
        !          60227: 
        !          60228: /*****************************************************************************/
        !          60229: 
        !          60230: arguments()
        !          60231: 
        !          60232: {
        !          60233: 
        !          60234: /*
        !          60235:  *
        !          60236:  * Makes sure all the non-option command line arguments are processed. If we get
        !          60237:  * here and there aren't any arguments left, or if '-' is one of the input files
        !          60238:  * we'll process stdin.
        !          60239:  *
        !          60240:  */
        !          60241: 
        !          60242:     fp_in = stdin;
        !          60243: 
        !          60244:     if ( argc < 1 )
        !          60245:        text();
        !          60246:     else {                             /* at least one argument is left */
        !          60247:        while ( argc > 0 )  {
        !          60248:            if ( strcmp(*argv, "-") == 0 )
        !          60249:                fp_in = stdin;
        !          60250:            else if ( (fp_in = fopen(*argv, "r")) == NULL )
        !          60251:                error(FATAL, "can't open %s", *argv);
        !          60252:            text();
        !          60253:            if ( fp_in != stdin )
        !          60254:                fclose(fp_in);
        !          60255:            argc--;
        !          60256:            argv++;
        !          60257:        }   /* End while */
        !          60258:     }   /* End else */
        !          60259: 
        !          60260: }   /* End of arguments */
        !          60261: 
        !          60262: /*****************************************************************************/
        !          60263: 
        !          60264: done()
        !          60265: 
        !          60266: {
        !          60267: 
        !          60268: /*
        !          60269:  *
        !          60270:  * Finished with all the input files, so mark the end of the pages, make sure the
        !          60271:  * last page is printed, and restore the initial environment.
        !          60272:  *
        !          60273:  */
        !          60274: 
        !          60275:     fprintf(stdout, "%s", TRAILER);
        !          60276:     fprintf(stdout, "done\n");
        !          60277:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, fontname);
        !          60278:     fprintf(stdout, "%s %d\n", PAGES, printed);
        !          60279: 
        !          60280: }   /* End of done */
        !          60281: 
        !          60282: /*****************************************************************************/
        !          60283: 
        !          60284: account()
        !          60285: 
        !          60286: {
        !          60287: 
        !          60288: /*
        !          60289:  *
        !          60290:  * Writes an accounting record to *fp_acct provided it's not NULL. Accounting
        !          60291:  * is requested using the -A or -J options.
        !          60292:  *
        !          60293:  */
        !          60294: 
        !          60295:     if ( fp_acct != NULL )
        !          60296:        fprintf(fp_acct, " print %d\n copies %d\n", printed, copies);
        !          60297: 
        !          60298: }   /* End of account */
        !          60299: 
        !          60300: /*****************************************************************************/
        !          60301: 
        !          60302: text()
        !          60303: 
        !          60304: {
        !          60305: 
        !          60306:     int                ch;                     /* next input character */
        !          60307: 
        !          60308: /*
        !          60309:  *
        !          60310:  * Translates the next input file into PostScript. The redirect(-1) call forces
        !          60311:  * the initial output to go to /dev/null - so the stuff formfeed() does at the
        !          60312:  * end of each page doesn't go to stdout.
        !          60313:  *
        !          60314:  */
        !          60315: 
        !          60316:     redirect(-1);                      /* get ready for the first page */
        !          60317:     formfeed();                                /* force PAGE comment etc. */
        !          60318:     inittabs();
        !          60319: 
        !          60320:     while ( (ch = getc(fp_in)) != EOF )
        !          60321:        switch ( ch )  {
        !          60322:            case '\010':                /* backspace */
        !          60323:                    backspace();
        !          60324:                    break;
        !          60325: 
        !          60326:            case '\011':                /* horizontal tab */
        !          60327:                    htab();
        !          60328:                    break;
        !          60329: 
        !          60330:            case '\012':                /* new line */
        !          60331:                    linefeed();
        !          60332:                    break;
        !          60333: 
        !          60334:            case '\013':                /* vertical tab */
        !          60335:                    vtab();
        !          60336:                    break;
        !          60337: 
        !          60338:            case '\014':                /* form feed */
        !          60339:                    formfeed();
        !          60340:                    break;
        !          60341: 
        !          60342:            case '\015':                /* carriage return */
        !          60343:                    carriage();
        !          60344:                    break;
        !          60345: 
        !          60346:            case '\016':                /* extended character set - SO */
        !          60347:                    break;
        !          60348: 
        !          60349:            case '\017':                /* extended character set - SI */
        !          60350:                    break;
        !          60351: 
        !          60352:            case '\031':                /* next char from supplementary set */
        !          60353:                    break;
        !          60354: 
        !          60355:            case '\033':                /* 2 or 3 byte escape sequence */
        !          60356:                    escape();
        !          60357:                    break;
        !          60358: 
        !          60359:            default:
        !          60360:                    if ( isascii(ch) && isprint(ch) )
        !          60361:                        oput(ch);
        !          60362:                    break;
        !          60363:        }   /* End switch */
        !          60364: 
        !          60365:     formfeed();                                /* next file starts on a new page? */
        !          60366: 
        !          60367: }   /* End of text */
        !          60368: 
        !          60369: /*****************************************************************************/
        !          60370: 
        !          60371: inittabs()
        !          60372: 
        !          60373: {
        !          60374: 
        !          60375:     int                i;                      /* loop index */
        !          60376: 
        !          60377: /*
        !          60378:  *
        !          60379:  * Initializes the horizontal and vertical tab arrays. The way tabs are handled is
        !          60380:  * quite inefficient and may not work for all initial hmi or vmi values.
        !          60381:  *
        !          60382:  */
        !          60383: 
        !          60384:     for ( i = 0; i < COLUMNS; i++ )
        !          60385:        htabstops[i] = ((i % 8) == 0) ? ON : OFF;
        !          60386: 
        !          60387:     for ( i = 0; i < ROWS; i++ )
        !          60388:        vtabstops[i] = ((i * ovmi) > BOTTOMMARGIN) ? ON : OFF;
        !          60389: 
        !          60390: }   /* End of inittabs */
        !          60391: 
        !          60392: /*****************************************************************************/
        !          60393: 
        !          60394: cleartabs()
        !          60395: 
        !          60396: {
        !          60397: 
        !          60398:     int                i;                      /* loop index */
        !          60399: 
        !          60400: /*
        !          60401:  *
        !          60402:  * Clears all horizontal and vertical tab stops.
        !          60403:  *
        !          60404:  */
        !          60405: 
        !          60406:     for ( i = 0; i < ROWS; i++ )
        !          60407:        htabstops[i] = OFF;
        !          60408: 
        !          60409:     for ( i = 0; i < COLUMNS; i++ )
        !          60410:        vtabstops[i] = OFF;
        !          60411: 
        !          60412: }   /* End of cleartabs */
        !          60413: 
        !          60414: /*****************************************************************************/
        !          60415: 
        !          60416: formfeed()
        !          60417: 
        !          60418: {
        !          60419: 
        !          60420: /*
        !          60421:  *
        !          60422:  * Called whenever we've finished with the last page and want to get ready for the
        !          60423:  * next one. Also used at the beginning and end of each input file, so we have to
        !          60424:  * be careful about what's done. I've added a simple test before the showpage that
        !          60425:  * should eliminate the extra blank page that was put out at the end of many jobs,
        !          60426:  * but the PAGES comments may be wrong.
        !          60427:  *
        !          60428:  */
        !          60429: 
        !          60430:     if ( fp_out == stdout )            /* count the last page */
        !          60431:        printed++;
        !          60432: 
        !          60433:     endline();                         /* print the last line */
        !          60434: 
        !          60435:     fprintf(fp_out, "cleartomark\n");
        !          60436:     if ( feof(fp_in) == 0 || markedpage == TRUE )
        !          60437:        fprintf(fp_out, "showpage\n");
        !          60438:     fprintf(fp_out, "saveobj restore\n");
        !          60439:     fprintf(fp_out, "%s %d %d\n", ENDPAGE, page, printed);
        !          60440: 
        !          60441:     if ( ungetc(getc(fp_in), fp_in) == EOF )
        !          60442:        redirect(-1);
        !          60443:     else redirect(++page);
        !          60444: 
        !          60445:     fprintf(fp_out, "%s %d %d\n", PAGE, page, printed+1);
        !          60446:     fprintf(fp_out, "/saveobj save def\n");
        !          60447:     fprintf(fp_out, "mark\n");
        !          60448:     writerequest(printed+1, fp_out);
        !          60449:     fprintf(fp_out, "%d pagesetup\n", printed+1);
        !          60450: 
        !          60451:     vgoto(topmargin);
        !          60452:     hgoto(leftmargin);
        !          60453: 
        !          60454:     markedpage = FALSE;
        !          60455: 
        !          60456: }   /* End of formfeed */
        !          60457: 
        !          60458: /*****************************************************************************/
        !          60459: 
        !          60460: linefeed()
        !          60461: 
        !          60462: {
        !          60463: 
        !          60464:     int                line = 0;               /* current line - based on ovmi */
        !          60465: 
        !          60466: /*
        !          60467:  *
        !          60468:  * Adjust our current vertical position. If we've passed the bottom of the page
        !          60469:  * or exceeded the number of lines per page, print it and go to the upper left
        !          60470:  * corner of the next page. This routine is also called from carriage() if crislf
        !          60471:  * is ON.
        !          60472:  *
        !          60473:  */
        !          60474: 
        !          60475:     vmot(vmi);
        !          60476: 
        !          60477:     if ( lfiscr == ON )
        !          60478:        hgoto(leftmargin);
        !          60479: 
        !          60480:     if ( linespp > 0 )                 /* means something so see where we are */
        !          60481:        line = vpos / ovmi + 1;
        !          60482: 
        !          60483:     if ( vpos > bottommargin || line > linespp )
        !          60484:        formfeed();
        !          60485: 
        !          60486: }   /* End of linefeed */
        !          60487: 
        !          60488: /*****************************************************************************/
        !          60489: 
        !          60490: carriage()
        !          60491: 
        !          60492: {
        !          60493: 
        !          60494: /*
        !          60495:  *
        !          60496:  * Handles carriage return character. If crislf is ON we'll generate a line feed
        !          60497:  * every time we get a carriage return character.
        !          60498:  *
        !          60499:  */
        !          60500: 
        !          60501:     if ( shadowprint == ON )           /* back to normal mode */
        !          60502:        changefont(fontname);
        !          60503: 
        !          60504:     advance = 1;
        !          60505:     shadowprint = OFF;
        !          60506: 
        !          60507:     hgoto(leftmargin);
        !          60508: 
        !          60509:     if ( crislf == ON )
        !          60510:        linefeed();
        !          60511: 
        !          60512: }   /* End of carriage */
        !          60513: 
        !          60514: /*****************************************************************************/
        !          60515: 
        !          60516: htab()
        !          60517: 
        !          60518: {
        !          60519: 
        !          60520:     int                col;                    /* 'column' we'll be at next */
        !          60521:     int                i;                      /* loop index */
        !          60522: 
        !          60523: /*
        !          60524:  *
        !          60525:  * Tries to figure out where the next tab stop is. Wasn't positive about this
        !          60526:  * one, since hmi can change. I'll assume columns are determined by the original
        !          60527:  * value of hmi. That fixes them on the page, which seems to make more sense than
        !          60528:  * letting them float all over the place.
        !          60529:  *
        !          60530:  */
        !          60531: 
        !          60532:     endline();
        !          60533: 
        !          60534:     col = hpos/ohmi + 1;
        !          60535:     for ( i = col; i < ROWS; i++ )
        !          60536:        if ( htabstops[i] == ON )  {
        !          60537:            col = i;
        !          60538:            break;
        !          60539:        }   /* End if */
        !          60540: 
        !          60541:     hgoto(col * ohmi);
        !          60542:     lastx = hpos;
        !          60543: 
        !          60544: }   /* End of htab */
        !          60545: 
        !          60546: /*****************************************************************************/
        !          60547: 
        !          60548: vtab()
        !          60549: 
        !          60550: {
        !          60551: 
        !          60552:     int                line;                   /* line we'll be at next */
        !          60553:     int                i;                      /* loop index */
        !          60554: 
        !          60555: /*
        !          60556:  *
        !          60557:  * Looks for the next vertical tab stop in the vtabstops[] array and moves to that
        !          60558:  * line. If we don't find a tab we'll just move down one line - shouldn't happen.
        !          60559:  *
        !          60560:  */
        !          60561: 
        !          60562:     endline();
        !          60563: 
        !          60564:     line = vpos/ovmi + 1;
        !          60565:     for ( i = line; i < COLUMNS; i++ )
        !          60566:        if ( vtabstops[i] == ON )  {
        !          60567:            line = i;
        !          60568:            break;
        !          60569:        }   /* End if */
        !          60570: 
        !          60571:     vgoto(line * ovmi);
        !          60572: 
        !          60573: }   /* End of vtab */
        !          60574: 
        !          60575: /*****************************************************************************/
        !          60576: 
        !          60577: backspace()
        !          60578: 
        !          60579: {
        !          60580: 
        !          60581: /*
        !          60582:  *
        !          60583:  * Moves backwards a distance equal to the current value of hmi, but don't go
        !          60584:  * past the left margin.
        !          60585:  *
        !          60586:  */
        !          60587: 
        !          60588:     endline();
        !          60589: 
        !          60590:     if ( hpos - leftmargin >= hmi )
        !          60591:        hmot(-hmi);
        !          60592:     else hgoto(leftmargin);            /* maybe just ignore the backspace?? */
        !          60593: 
        !          60594:     lastx = hpos;
        !          60595: 
        !          60596: }   /* End of backspace */
        !          60597: 
        !          60598: /*****************************************************************************/
        !          60599: 
        !          60600: escape()
        !          60601: 
        !          60602: {
        !          60603: 
        !          60604:     int                ch;                     /* control character */
        !          60605: 
        !          60606: /*
        !          60607:  *
        !          60608:  * Handles special codes that are expected to follow an escape character. The
        !          60609:  * initial escape character is followed by one or two bytes.
        !          60610:  *
        !          60611:  */
        !          60612: 
        !          60613:     switch ( ch = getc(fp_in) ) {
        !          60614:        case 'T':                       /* top margin */
        !          60615:                topmargin = vpos;
        !          60616:                break;
        !          60617: 
        !          60618:        case 'L':                       /* bottom margin */
        !          60619:                bottommargin = vpos;
        !          60620:                break;
        !          60621: 
        !          60622:        case 'C':                       /* clear top and bottom margins */
        !          60623:                bottommargin = BOTTOMMARGIN;
        !          60624:                topmargin = TOPMARGIN;
        !          60625:                break;
        !          60626: 
        !          60627:        case '9':                       /* left margin */
        !          60628:                leftmargin = hpos;
        !          60629:                break;
        !          60630: 
        !          60631:        case '0':                       /* right margin */
        !          60632:                rightmargin = hpos;
        !          60633:                break;
        !          60634: 
        !          60635:        case '1':                       /* set horizontal tab */
        !          60636:                htabstops[hpos/ohmi] = ON;
        !          60637:                break;
        !          60638: 
        !          60639:        case '8':                       /* clear horizontal tab at hpos */
        !          60640:                htabstops[hpos/ohmi] = OFF;
        !          60641:                break;
        !          60642: 
        !          60643:        case '-':                       /* set vertical tab */
        !          60644:                vtabstops[vpos/ovmi] = ON;
        !          60645:                break;
        !          60646: 
        !          60647:        case '2':                       /* clear all tabs */
        !          60648:                cleartabs();
        !          60649:                break;
        !          60650: 
        !          60651:        case '\014':                    /* set lines per page */
        !          60652:                linespp = getc(fp_in);
        !          60653:                break;
        !          60654: 
        !          60655:        case '\037':                    /* set hmi to next byte minus 1 */
        !          60656:                hmi = HSCALE * (getc(fp_in) - 1);
        !          60657:                break;
        !          60658: 
        !          60659:        case 'S':                       /* reset hmi to default */
        !          60660:                hmi = ohmi;
        !          60661:                break;
        !          60662: 
        !          60663:        case '\011':                    /* move to column given by next byte */
        !          60664:                hgoto((getc(fp_in)-1) * ohmi);
        !          60665:                break;
        !          60666: 
        !          60667:        case '?':                       /* do carriage return after line feed */
        !          60668:                lfiscr = ON;
        !          60669:                break;
        !          60670: 
        !          60671:        case '!':                       /* don't generate carriage return */
        !          60672:                lfiscr = OFF;
        !          60673:                break;
        !          60674: 
        !          60675:        case '5':                       /* forward print mode */
        !          60676:                advance = 1;
        !          60677:                break;
        !          60678: 
        !          60679:        case '6':                       /* backward print mode */
        !          60680:                advance = -1;
        !          60681:                break;
        !          60682: 
        !          60683:        case '\036':                    /* set vmi to next byte minus 1 */
        !          60684:                vmi = VSCALE * (getc(fp_in) - 1);
        !          60685:                break;
        !          60686: 
        !          60687:        case '\013':                    /* move to line given by next byte */
        !          60688:                vgoto((getc(fp_in)-1) * ovmi);
        !          60689:                break;
        !          60690: 
        !          60691:        case 'U':                       /* positive half line feed */
        !          60692:                vmot(vmi/2);
        !          60693:                break;
        !          60694: 
        !          60695:        case 'D':                       /* negative half line feed */
        !          60696:                vmot(-vmi/2);
        !          60697:                break;
        !          60698: 
        !          60699:        case '\012':                    /* negative line feed */
        !          60700:                vmot(-vmi);
        !          60701:                break;
        !          60702: 
        !          60703:        case '\015':                    /* clear all margins */
        !          60704:                bottommargin = BOTTOMMARGIN;
        !          60705:                topmargin = TOPMARGIN;
        !          60706:                leftmargin = BOTTOMMARGIN;
        !          60707:                rightmargin = RIGHTMARGIN;
        !          60708:                break;
        !          60709: 
        !          60710:        case 'E':                       /* auto underscore - use italic font */
        !          60711:                changefont("/Courier-Oblique");
        !          60712:                break;
        !          60713: 
        !          60714:        case 'R':                       /* disable auto underscore */
        !          60715:                changefont(fontname);
        !          60716:                break;
        !          60717: 
        !          60718:        case 'O':                       /* bold/shadow printing */
        !          60719:        case 'W':
        !          60720:                changefont("/Courier-Bold");
        !          60721:                shadowprint = ON;
        !          60722:                break;
        !          60723: 
        !          60724:        case '&':                       /* disable bold printing */
        !          60725:                changefont(fontname);
        !          60726:                shadowprint = OFF;
        !          60727:                break;
        !          60728: 
        !          60729:        case '/':                       /* ignored 2 byte escapes */
        !          60730:        case '\\':
        !          60731:        case '<':
        !          60732:        case '>':
        !          60733:        case '%':
        !          60734:        case '=':
        !          60735:        case '.':
        !          60736:        case '4':
        !          60737:        case 'A':
        !          60738:        case 'B':
        !          60739:        case 'M':
        !          60740:        case 'N':
        !          60741:        case 'P':
        !          60742:        case 'Q':
        !          60743:        case 'X':
        !          60744:        case '\010':
        !          60745:                break;
        !          60746: 
        !          60747:        case ',':                       /* ignored 3 byte escapes */
        !          60748:        case '\016':
        !          60749:        case '\021':
        !          60750:                getc(fp_in);
        !          60751:                break;
        !          60752: 
        !          60753:        case '3':                       /* graphics mode - should quit! */
        !          60754:        case '7':
        !          60755:        case 'G':
        !          60756:        case 'V':
        !          60757:        case 'Y':
        !          60758:        case 'Z':
        !          60759:                error(FATAL, "graphics mode is not implemented");
        !          60760:                break;
        !          60761: 
        !          60762:        default:
        !          60763:                error(FATAL, "missing case for escape o%o\n", ch);
        !          60764:                break;
        !          60765:     }  /* End switch */
        !          60766: 
        !          60767: }   /* End of escape */
        !          60768: 
        !          60769: /*****************************************************************************/
        !          60770: 
        !          60771: vmot(n)
        !          60772: 
        !          60773:     int                n;                      /* move this far vertically */
        !          60774: 
        !          60775: {
        !          60776: 
        !          60777: /*
        !          60778:  *
        !          60779:  * Move vertically n units from where we are.
        !          60780:  *
        !          60781:  */
        !          60782: 
        !          60783:     vpos += n;
        !          60784: 
        !          60785: }   /* End of vmot */
        !          60786: 
        !          60787: /*****************************************************************************/
        !          60788: 
        !          60789: vgoto(n)
        !          60790: 
        !          60791:     int                n;                      /* new vertical position */
        !          60792: 
        !          60793: {
        !          60794: 
        !          60795: /*
        !          60796:  *
        !          60797:  * Moves to absolute vertical position n.
        !          60798:  *
        !          60799:  */
        !          60800: 
        !          60801:     vpos = n;
        !          60802: 
        !          60803: }   /* End of vgoto */
        !          60804: 
        !          60805: /*****************************************************************************/
        !          60806: 
        !          60807: hmot(n)
        !          60808: 
        !          60809:     int                n;                      /* move this horizontally */
        !          60810: 
        !          60811: {
        !          60812: 
        !          60813: /*
        !          60814:  *
        !          60815:  * Moves horizontally n units from our current position.
        !          60816:  *
        !          60817:  */
        !          60818: 
        !          60819:     hpos += n * advance;
        !          60820: 
        !          60821:     if ( hpos < leftmargin )
        !          60822:        hpos = leftmargin;
        !          60823: 
        !          60824: }   /* End of hmot */
        !          60825: 
        !          60826: /*****************************************************************************/
        !          60827: 
        !          60828: hgoto(n)
        !          60829: 
        !          60830:     int                n;                      /* go to this horizontal position */
        !          60831: 
        !          60832: {
        !          60833: 
        !          60834: /*
        !          60835:  *
        !          60836:  * Moves to absolute horizontal position n.
        !          60837:  *
        !          60838:  */
        !          60839: 
        !          60840:     hpos = n;
        !          60841: 
        !          60842: }   /* End of hgoto */
        !          60843: 
        !          60844: /*****************************************************************************/
        !          60845: 
        !          60846: changefont(name)
        !          60847: 
        !          60848:     char       *name;
        !          60849: 
        !          60850: {
        !          60851: 
        !          60852: /*
        !          60853:  *
        !          60854:  * Changes the current font. Used to get in and out of auto underscore and bold
        !          60855:  * printing.
        !          60856:  *
        !          60857:  */
        !          60858: 
        !          60859:     endline();
        !          60860:     fprintf(fp_out, "%s f\n", name);
        !          60861: 
        !          60862: }   /* End of changefont */
        !          60863: 
        !          60864: /*****************************************************************************/
        !          60865: 
        !          60866: startline()
        !          60867: 
        !          60868: {
        !          60869: 
        !          60870: /*
        !          60871:  *
        !          60872:  * Called whenever we want to be certain we're ready to start pushing characters
        !          60873:  * into an open string on the stack. If stringcount is positive we've already
        !          60874:  * started, so there's nothing to do. The first string starts in column 1.
        !          60875:  *
        !          60876:  */
        !          60877: 
        !          60878:     if ( stringcount < 1 )  {
        !          60879:        putc('(', fp_out);
        !          60880:        stringstart = lastx = hpos;
        !          60881:        lasty = vpos;
        !          60882:        lasthmi = hmi;
        !          60883:        lastc = -1;
        !          60884:        prevx = -1;
        !          60885:        stringcount = 1;
        !          60886:     }  /* End if */
        !          60887: 
        !          60888: }   /* End of startline */
        !          60889: 
        !          60890: /*****************************************************************************/
        !          60891: 
        !          60892: endline()
        !          60893: 
        !          60894: {
        !          60895: 
        !          60896: /*
        !          60897:  *
        !          60898:  * Generates a call to the PostScript procedure that processes the text on the
        !          60899:  * the stack - provided stringcount is positive.
        !          60900:  *
        !          60901:  */
        !          60902: 
        !          60903:     if ( stringcount > 0 )
        !          60904:        fprintf(fp_out, ")%d %d %d t\n", stringstart, lasty, lasthmi);
        !          60905: 
        !          60906:     stringcount = 0;
        !          60907: 
        !          60908: }   /* End of endline */
        !          60909: 
        !          60910: /*****************************************************************************/
        !          60911: 
        !          60912: endstring()
        !          60913: 
        !          60914: {
        !          60915: 
        !          60916: /*
        !          60917:  *
        !          60918:  * Takes the string we've been working on and adds it to the output file. Called
        !          60919:  * when we need to adjust our horizontal position before starting a new string.
        !          60920:  * Also called from endline() when we're done with the current line.
        !          60921:  *
        !          60922:  */
        !          60923: 
        !          60924:     if ( stringcount > 0 )  {
        !          60925:        fprintf(fp_out, ")%d(", stringstart);
        !          60926:        lastx = stringstart = hpos;
        !          60927:        stringcount++;
        !          60928:     }  /* End if */
        !          60929: 
        !          60930: }   /* End of endstring */
        !          60931: 
        !          60932: /*****************************************************************************/
        !          60933: 
        !          60934: oput(ch)
        !          60935: 
        !          60936:     int                ch;                     /* next output character */
        !          60937: 
        !          60938: {
        !          60939: 
        !          60940: /*
        !          60941:  *
        !          60942:  * Responsible for adding all printing characters from the input file to the
        !          60943:  * open string on top of the stack. The only other characters that end up in
        !          60944:  * that string are the quotes required for special characters. Reverse printing
        !          60945:  * mode hasn't been tested but it should be close. hpos and lastx should disagree
        !          60946:  * each time (except after startline() does something), and that should force a
        !          60947:  * call to endstring() for every character.
        !          60948:  *
        !          60949:  */
        !          60950: 
        !          60951:     if ( stringcount > 100 )           /* don't put too much on the stack */
        !          60952:        endline();
        !          60953: 
        !          60954:     if ( vpos != lasty )
        !          60955:        endline();
        !          60956: 
        !          60957:     if ( advance == -1 )               /* for reverse printing - move first */
        !          60958:        hmot(hmi);
        !          60959: 
        !          60960:     startline();
        !          60961: 
        !          60962:     if ( lastc != ch || hpos != prevx )  {
        !          60963:        if ( lastx != hpos )
        !          60964:            endstring();
        !          60965: 
        !          60966:        if ( ch == '\\' || ch == '(' || ch == ')' )
        !          60967:            putc('\\', fp_out);
        !          60968:        putc(ch, fp_out);
        !          60969: 
        !          60970:        lastc = ch;
        !          60971:        prevx = hpos;
        !          60972:        lastx += lasthmi;
        !          60973:     }  /* End if */
        !          60974: 
        !          60975:     if ( advance != -1 )
        !          60976:        hmot(hmi);
        !          60977: 
        !          60978:     markedpage = TRUE;
        !          60979: 
        !          60980: }   /* End of oput */
        !          60981: 
        !          60982: /*****************************************************************************/
        !          60983: 
        !          60984: redirect(pg)
        !          60985: 
        !          60986:     int                pg;                     /* next page we're printing */
        !          60987: 
        !          60988: {
        !          60989: 
        !          60990:     static FILE        *fp_null = NULL;        /* if output is turned off */
        !          60991: 
        !          60992: /*
        !          60993:  *
        !          60994:  * If we're not supposed to print page pg, fp_out will be directed to /dev/null,
        !          60995:  * otherwise output goes to stdout.
        !          60996:  *
        !          60997:  */
        !          60998: 
        !          60999:     if ( pg >= 0 && in_olist(pg) == ON )
        !          61000:        fp_out = stdout;
        !          61001:     else if ( (fp_out = fp_null) == NULL )
        !          61002:        fp_out = fp_null = fopen("/dev/null", "w");
        !          61003: 
        !          61004: }   /* End of redirect */
        !          61005: 
        !          61006: /*****************************************************************************/
        !          61007: 
        !          61008: 0707070014230735640407550057030057030000020015370522633075500002100000000000post.src/postdmd0707070014230735651006440057030057030000010015060522627503500003000000001317post.src/postdmd/README
        !          61009: DMD bitmap to PostScript translator. Much of the code came from abm,
        !          61010: which was written by Guy Riddle.
        !          61011: 
        !          61012: By default 6 byte patterns are used to encode the output bitmap. Use
        !          61013: the -b option to change the pattern size. Bitmaps are unpacked one
        !          61014: scanline at a time and re-encoded in a format that looks like,
        !          61015: 
        !          61016:        bytes patterns count
        !          61017: 
        !          61018: where bytes and count are decimal integers and patterns is a series
        !          61019: of hex digits. Bytes is the number of bytes represented by the hex
        !          61020: pattern, and count is the number of additional times the pattern
        !          61021: should be repeated. For example,
        !          61022: 
        !          61023:        2 FFFF 4
        !          61024:        5 FFFFFFFFFF 1
        !          61025:        10 FFFFFFFFFFFFFFFFFFFF 0
        !          61026: 
        !          61027: all represent 10 consecutive bytes of ones. Scanlines are terminated
        !          61028: by a 0 on a line by itself.
        !          61029: 
        !          61030: 0707070014230732611006400057030057030000010015760522633075500003400000003714post.src/postdmd/postdmd.mkMAKE=/bin/make
        !          61031: MAKEFILE=postdmd.mk
        !          61032: 
        !          61033: SYSTEM=V9
        !          61034: VERSION=3.3.2
        !          61035: 
        !          61036: GROUP=bin
        !          61037: OWNER=bin
        !          61038: 
        !          61039: MAN1DIR=/tmp
        !          61040: POSTBIN=/usr/bin/postscript
        !          61041: POSTLIB=/usr/lib/postscript
        !          61042: 
        !          61043: COMMONDIR=../common
        !          61044: 
        !          61045: CFLGS=-O
        !          61046: LDFLGS=-s
        !          61047: 
        !          61048: CFLAGS=$(CFLGS) -I$(COMMONDIR)
        !          61049: LDFLAGS=$(LDFLGS)
        !          61050: 
        !          61051: HFILES=$(COMMONDIR)/comments.h\
        !          61052:        $(COMMONDIR)/ext.h\
        !          61053:        $(COMMONDIR)/gen.h\
        !          61054:        $(COMMONDIR)/path.h
        !          61055: 
        !          61056: OFILES=postdmd.o\
        !          61057:        $(COMMONDIR)/glob.o\
        !          61058:        $(COMMONDIR)/misc.o\
        !          61059:        $(COMMONDIR)/request.o
        !          61060: 
        !          61061: all : postdmd
        !          61062: 
        !          61063: install : all
        !          61064:        @if [ ! -d "$(POSTBIN)" ]; then \
        !          61065:            mkdir $(POSTBIN); \
        !          61066:            chmod 755 $(POSTBIN); \
        !          61067:            chgrp $(GROUP) $(POSTBIN); \
        !          61068:            chown $(OWNER) $(POSTBIN); \
        !          61069:        fi
        !          61070:        @if [ ! -d "$(POSTLIB)" ]; then \
        !          61071:            mkdir $(POSTLIB); \
        !          61072:            chmod 755 $(POSTLIB); \
        !          61073:            chgrp $(GROUP) $(POSTLIB); \
        !          61074:            chown $(OWNER) $(POSTLIB); \
        !          61075:        fi
        !          61076:        cp postdmd $(POSTBIN)/postdmd
        !          61077:        @chmod 755 $(POSTBIN)/postdmd
        !          61078:        @chgrp $(GROUP) $(POSTBIN)/postdmd
        !          61079:        @chown $(OWNER) $(POSTBIN)/postdmd
        !          61080:        cp postdmd.ps $(POSTLIB)/postdmd.ps
        !          61081:        @chmod 644 $(POSTLIB)/postdmd.ps
        !          61082:        @chgrp $(GROUP) $(POSTLIB)/postdmd.ps
        !          61083:        @chown $(OWNER) $(POSTLIB)/postdmd.ps
        !          61084:        cp postdmd.1 $(MAN1DIR)/postdmd.1
        !          61085:        @chmod 644 $(MAN1DIR)/postdmd.1
        !          61086:        @chgrp $(GROUP) $(MAN1DIR)/postdmd.1
        !          61087:        @chown $(OWNER) $(MAN1DIR)/postdmd.1
        !          61088: 
        !          61089: clean :
        !          61090:        rm -f *.o
        !          61091: 
        !          61092: clobber : clean
        !          61093:        rm -f postdmd
        !          61094: 
        !          61095: postdmd : $(OFILES)
        !          61096:        $(CC) $(CFLAGS) $(LDFLAGS) -o postdmd $(OFILES)
        !          61097: 
        !          61098: postdmd.o : $(HFILES)
        !          61099: 
        !          61100: $(COMMONDIR)/glob.o\
        !          61101: $(COMMONDIR)/misc.o\
        !          61102: $(COMMONDIR)/request.o :
        !          61103:        @cd $(COMMONDIR); $(MAKE) -f common.mk `basename $@`
        !          61104: 
        !          61105: changes :
        !          61106:        @trap "" 1 2 3 15; \
        !          61107:        sed \
        !          61108:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
        !          61109:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
        !          61110:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          61111:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          61112:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
        !          61113:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
        !          61114:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
        !          61115:        $(MAKEFILE) >XXX.mk; \
        !          61116:        mv XXX.mk $(MAKEFILE); \
        !          61117:        sed \
        !          61118:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
        !          61119:        postdmd.1 >XXX.1; \
        !          61120:        mv XXX.1 postdmd.1
        !          61121: 
        !          61122: 0707070014230735671006440057030057030000010015400522627503500003300000050035post.src/postdmd/postdmd.c/*
        !          61123:  *
        !          61124:  * postdmd - PostScript translator for DMD bitmap files.
        !          61125:  *
        !          61126:  * A simple program that can be used to print DMD bitmaps on PostScript printers.
        !          61127:  * Much of the code was borrowed from abm, which was written by Guy Riddle.
        !          61128:  *
        !          61129:  * Although the program supports two different input bitmap formats, by far the
        !          61130:  * most important is the Eighth (and Ninth) Edition bitfile format. A bitmap in
        !          61131:  * the bitfile format begins with a 10 byte header with the first two bytes set to
        !          61132:  * zero. The next 8 bytes set the x and y coordinates of the bitmap's origin and
        !          61133:  * corner (ie. the upper left and lower right corners). The compressed raster data
        !          61134:  * follows the header and consists of control bytes followed an appropriate number
        !          61135:  * of data bytes. Control bytes (ie. n) less than 127 means read the next 2*n bytes 
        !          61136:  * of raster data directly from the input file, while if n is larger than 128 we
        !          61137:  * read two bytes from the input file and replicate the bytes n-128 times. After
        !          61138:  * each scan line is recovered it's exclusive-or'd with the preceeding line to
        !          61139:  * generate the real raster data.
        !          61140:  *
        !          61141:  * After each raster line is recovered postdmd encodes it in a slightly different
        !          61142:  * format that's designed to be unpacked by a PostScript procedure that's defined
        !          61143:  * in the prologue. By default no exclusive-or'ing is done and packing of pattern
        !          61144:  * data can be based on any number of bytes rather than just the next two bytes.
        !          61145:  * By default 6 byte patterns are used, but any number can be selected with the -b
        !          61146:  * option. A non-positive argument (eg. -b0) disables all pattern encoding. Larger
        !          61147:  * patterns increase the size of the output file, but reduce the work load that's
        !          61148:  * forced on the PostScript interpreter. The default choices I've made (ie. 6 byte
        !          61149:  * patterns and no exclusive-or'ing) do a decent balancing job across currently
        !          61150:  * available PostScript printers. Larger patterns (eg. -b16) increase the output
        !          61151:  * file size, but may be appropriate if you're running at a high baud rate (eg.
        !          61152:  * 19.2KB), while smaller patter size (eg. -b4) may help if you've got a printer
        !          61153:  * with a fast processor (eg. a PS-810).
        !          61154:  *
        !          61155:  * The encoding produced by the program (and decoded on the printer) looks like,
        !          61156:  * 
        !          61157:  *     bytes patterns count
        !          61158:  * 
        !          61159:  * where bytes and count are decimal integers and patterns is a hex string. Bytes
        !          61160:  * is the number of bytes represented by the hex patterns and count is the number
        !          61161:  * of additional times the patterns should be repeated. For example,
        !          61162:  * 
        !          61163:  *     2 FFFF 4
        !          61164:  *     5 FFFFFFFFFF 1
        !          61165:  *     10 FFFFFFFFFFFFFFFFFFFF 0
        !          61166:  * 
        !          61167:  * all represent 10 consecutive bytes of ones. Scanlines are terminated by a 0 on
        !          61168:  * a line by itself.
        !          61169:  *
        !          61170:  * The PostScript prologue is copied from *prologue before any of the input files
        !          61171:  * are translated. The program expects that the following PostScript procedures
        !          61172:  * are defined in that file:
        !          61173:  *
        !          61174:  *     setup
        !          61175:  *
        !          61176:  *       mark ... setup -
        !          61177:  *
        !          61178:  *         Handles special initialization stuff that depends on how this program
        !          61179:  *         was called. Expects to find a mark followed by key/value pairs on the
        !          61180:  *         stack. The def operator is applied to each pair up to the mark, then
        !          61181:  *         the default state is set up.
        !          61182:  *
        !          61183:  *     pagesetup
        !          61184:  *
        !          61185:  *       page pagesetup -
        !          61186:  *
        !          61187:  *         Does whatever is needed to set things up for the next page. Expects
        !          61188:  *         to find the current page number on the stack.
        !          61189:  *
        !          61190:  *     bitmap
        !          61191:  *
        !          61192:  *       v8format flip scanlength scanlines bitmap -
        !          61193:  *
        !          61194:  *         Prints the bitmap that's read from standard input. The bitmap consists
        !          61195:  *         of scanlines lines, each of which includes scanlength pixels. If
        !          61196:  *         v8format is true the picture is assumed to be an Eighth Edition bitmap,
        !          61197:  *         and the exclusive-or'ing will be done on the printer.
        !          61198:  *
        !          61199:  *     done
        !          61200:  *
        !          61201:  *       done
        !          61202:  *
        !          61203:  *         Makes sure the last page is printed. Only needed when we're printing
        !          61204:  *         more than one page on each sheet of paper.
        !          61205:  *
        !          61206:  * Many default values, like the magnification and orientation, are defined in 
        !          61207:  * the prologue, which is where they belong. If they're changed (by options), an
        !          61208:  * appropriate definition is made after the prologue is added to the output file.
        !          61209:  * The -P option passes arbitrary PostScript through to the output file. Among
        !          61210:  * other things it can be used to set (or change) values that can't be accessed by
        !          61211:  * other options.
        !          61212:  *
        !          61213:  */
        !          61214: 
        !          61215: #include <stdio.h>
        !          61216: #include <signal.h>
        !          61217: #include <ctype.h>
        !          61218: #include <fcntl.h>
        !          61219: 
        !          61220: #include "comments.h"                  /* PostScript file structuring comments */
        !          61221: #include "gen.h"                       /* general purpose definitions */
        !          61222: #include "path.h"                      /* for the prologue */
        !          61223: #include "ext.h"                       /* external variable declarations */
        !          61224: 
        !          61225: char   *optnames = "a:b:c:fm:n:o:p:ux:y:A:C:E:J:L:P:DI";
        !          61226: 
        !          61227: char   *prologue = POSTDMD;            /* default PostScript prologue */
        !          61228: char   *formfile = FORMFILE;           /* stuff for multiple pages per sheet */
        !          61229: 
        !          61230: int    bbox[2] = {0, 0};               /* upper right coordinates only */
        !          61231: 
        !          61232: int    formsperpage = 1;               /* page images on each piece of paper */
        !          61233: int    copies = 1;                     /* and this many copies of each sheet */
        !          61234: 
        !          61235: int    bytespp = 6;                    /* bytes per pattern - on output */
        !          61236: int    flip = FALSE;                   /* ones complement the bitmap */
        !          61237: int    v8undo = TRUE;                  /* xor'ing done on host if TRUE */
        !          61238: int    v8format = FALSE;               /* for Eighth Edition bitmaps */
        !          61239: 
        !          61240: int    page = 0;                       /* last page we worked on */
        !          61241: int    printed = 0;                    /* and the number of pages printed */
        !          61242: 
        !          61243: int    patterns;                       /* 16 bit patterns per scan line */
        !          61244: int    scanlines;                      /* lines in the bitmap */
        !          61245: int    patcount = 0;                   /* should be patterns * scanlines */
        !          61246: 
        !          61247: char   *raster = NULL;                 /* next raster line */
        !          61248: char   *prevrast = NULL;               /* and the previous one - v8format */
        !          61249: char   *rptr;                          /* next free byte in raster */
        !          61250: char   *eptr;                          /* one past the last byte in raster */
        !          61251: 
        !          61252: FILE   *fp_in = NULL;                  /* read from this file */
        !          61253: FILE   *fp_out = stdout;               /* and write stuff here */
        !          61254: FILE   *fp_acct = NULL;                /* for accounting data */
        !          61255: 
        !          61256: /*****************************************************************************/
        !          61257: 
        !          61258: main(agc, agv)
        !          61259: 
        !          61260:     int                agc;
        !          61261:     char       *agv[];
        !          61262: 
        !          61263: {
        !          61264: 
        !          61265: /*
        !          61266:  *
        !          61267:  * A simple program that translates DMD bitmap files into PostScript. There can
        !          61268:  * be more than one bitmap per file, but none can be split across input files.
        !          61269:  * Each bitmap goes on a page by itself.
        !          61270:  *
        !          61271:  */
        !          61272: 
        !          61273:     argc = agc;                                /* other routines may want them */
        !          61274:     argv = agv;
        !          61275: 
        !          61276:     prog_name = argv[0];               /* really just for error messages */
        !          61277: 
        !          61278:     init_signals();                    /* sets up interrupt handling */
        !          61279:     header();                          /* PostScript header comments */
        !          61280:     options();                         /* handle the command line options */
        !          61281:     setup();                           /* for PostScript */
        !          61282:     arguments();                       /* followed by each input file */
        !          61283:     done();                            /* print the last page etc. */
        !          61284:     account();                         /* job accounting data */
        !          61285: 
        !          61286:     exit(x_stat);                      /* not much could be wrong */
        !          61287: 
        !          61288: }   /* End of main */
        !          61289: 
        !          61290: /*****************************************************************************/
        !          61291: 
        !          61292: init_signals()
        !          61293: 
        !          61294: {
        !          61295: 
        !          61296: /*
        !          61297:  *
        !          61298:  * Make sure we handle interrupts.
        !          61299:  *
        !          61300:  */
        !          61301: 
        !          61302:     if ( signal(SIGINT, interrupt) == SIG_IGN )  {
        !          61303:        signal(SIGINT, SIG_IGN);
        !          61304:        signal(SIGQUIT, SIG_IGN);
        !          61305:        signal(SIGHUP, SIG_IGN);
        !          61306:     } else {
        !          61307:        signal(SIGHUP, interrupt);
        !          61308:        signal(SIGQUIT, interrupt);
        !          61309:     }   /* End else */
        !          61310: 
        !          61311:     signal(SIGTERM, interrupt);
        !          61312: 
        !          61313: }   /* End of init_signals */
        !          61314: 
        !          61315: /*****************************************************************************/
        !          61316: 
        !          61317: header()
        !          61318: 
        !          61319: {
        !          61320: 
        !          61321:     int                ch;                     /* return value from getopt() */
        !          61322:     int                old_optind = optind;    /* for restoring optind - should be 1 */
        !          61323: 
        !          61324: /*
        !          61325:  *
        !          61326:  * Scans the option list looking for things, like the prologue file, that we need
        !          61327:  * right away but could be changed from the default. Doing things this way is an
        !          61328:  * attempt to conform to Adobe's latest file structuring conventions. In particular
        !          61329:  * they now say there should be nothing executed in the prologue, and they have
        !          61330:  * added two new comments that delimit global initialization calls. Once we know
        !          61331:  * where things really are we write out the job header, follow it by the prologue,
        !          61332:  * and then add the ENDPROLOG and BEGINSETUP comments.
        !          61333:  *
        !          61334:  */
        !          61335: 
        !          61336:     while ( (ch = getopt(argc, argv, optnames)) != EOF )
        !          61337:        if ( ch == 'L' )
        !          61338:            prologue = optarg;
        !          61339:        else if ( ch == '?' )
        !          61340:            error(FATAL, "");
        !          61341: 
        !          61342:     optind = old_optind;               /* get ready for option scanning */
        !          61343: 
        !          61344:     fprintf(stdout, "%s", CONFORMING);
        !          61345:     fprintf(stdout, "%s %s\n", VERSION, PROGRAMVERSION);
        !          61346:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, ATEND);
        !          61347:     fprintf(stdout, "%s %s\n", PAGES, ATEND);
        !          61348:     fprintf(stdout, "%s", ENDCOMMENTS);
        !          61349: 
        !          61350:     if ( cat(prologue) == FALSE )
        !          61351:        error(FATAL, "can't read %s", prologue);
        !          61352: 
        !          61353:     fprintf(stdout, "%s", ENDPROLOG);
        !          61354:     fprintf(stdout, "%s", BEGINSETUP);
        !          61355:     fprintf(stdout, "mark\n");
        !          61356: 
        !          61357: }   /* End of header */
        !          61358: 
        !          61359: /*****************************************************************************/
        !          61360: 
        !          61361: options()
        !          61362: 
        !          61363: {
        !          61364: 
        !          61365:     int                ch;                     /* return value from getopt() */
        !          61366: 
        !          61367: /*
        !          61368:  *
        !          61369:  * Reads and processes the command line options. Added the -P option so arbitrary
        !          61370:  * PostScript code can be passed through. Expect it could be useful for changing
        !          61371:  * definitions in the prologue for which options have not been defined.
        !          61372:  *
        !          61373:  */
        !          61374: 
        !          61375:     while ( (ch = getopt(argc, argv, optnames)) != EOF )  {
        !          61376:        switch ( ch )  {
        !          61377:            case 'a':                   /* aspect ratio */
        !          61378:                    fprintf(stdout, "/aspectratio %s def\n", optarg);
        !          61379:                    break;
        !          61380: 
        !          61381:            case 'b':                   /* bytes per pattern */
        !          61382:                    bytespp = atoi(optarg);
        !          61383:                    break;
        !          61384: 
        !          61385:            case 'c':                   /* copies */
        !          61386:                    copies = atoi(optarg);
        !          61387:                    fprintf(stdout, "/#copies %s store\n", optarg);
        !          61388:                    break;
        !          61389: 
        !          61390:            case 'f':                   /* ones complement - sort of */
        !          61391:                    flip = TRUE;
        !          61392:                    break;
        !          61393: 
        !          61394:            case 'm':                   /* magnification */
        !          61395:                    fprintf(stdout, "/magnification %s def\n", optarg);
        !          61396:                    break;
        !          61397: 
        !          61398:            case 'n':                   /* forms per page */
        !          61399:                    formsperpage = atoi(optarg);
        !          61400:                    fprintf(stdout, "%s %s\n", FORMSPERPAGE, optarg);
        !          61401:                    fprintf(stdout, "/formsperpage %s def\n", optarg);
        !          61402:                    break;
        !          61403: 
        !          61404:            case 'o':                   /* output page list */
        !          61405:                    out_list(optarg);
        !          61406:                    break;
        !          61407: 
        !          61408:            case 'p':                   /* landscape or portrait mode */
        !          61409:                    if ( *optarg == 'l' )
        !          61410:                        fprintf(stdout, "/landscape true def\n");
        !          61411:                    else fprintf(stdout, "/landscape false def\n");
        !          61412:                    break;
        !          61413: 
        !          61414:            case 'u':                   /* don't undo Eighth Edition bitmaps */
        !          61415:                    v8undo = FALSE;
        !          61416:                    break;
        !          61417: 
        !          61418:            case 'x':                   /* shift things horizontally */
        !          61419:                    fprintf(stdout, "/xoffset %s def\n", optarg);
        !          61420:                    break;
        !          61421: 
        !          61422:            case 'y':                   /* and vertically on the page */
        !          61423:                    fprintf(stdout, "/yoffset %s def\n", optarg);
        !          61424:                    break;
        !          61425: 
        !          61426:            case 'A':                   /* force job accounting */
        !          61427:            case 'J':
        !          61428:                    if ( (fp_acct = fopen(optarg, "a")) == NULL )
        !          61429:                        error(FATAL, "can't open accounting file %s", optarg);
        !          61430:                    break;
        !          61431: 
        !          61432:            case 'C':                   /* copy file straight to output */
        !          61433:                    if ( cat(optarg) == FALSE )
        !          61434:                        error(FATAL, "can't read %s", optarg);
        !          61435:                    break;
        !          61436: 
        !          61437:            case 'E':                   /* text font encoding - unnecessary */
        !          61438:                    fontencoding = optarg;
        !          61439:                    break;
        !          61440: 
        !          61441:            case 'L':                   /* PostScript prologue file */
        !          61442:                    prologue = optarg;
        !          61443:                    break;
        !          61444: 
        !          61445:            case 'P':                   /* PostScript pass through */
        !          61446:                    fprintf(stdout, "%s\n", optarg);
        !          61447:                    break;
        !          61448: 
        !          61449:            case 'R':                   /* special global or page level request */
        !          61450:                    saverequest(optarg);
        !          61451:                    break;
        !          61452: 
        !          61453:            case 'D':                   /* debug flag */
        !          61454:                    debug = ON;
        !          61455:                    break;
        !          61456: 
        !          61457:            case 'I':                   /* ignore FATAL errors */
        !          61458:                    ignore = ON;
        !          61459:                    break;
        !          61460: 
        !          61461:            case '?':                   /* don't understand the option */
        !          61462:                    error(FATAL, "");
        !          61463:                    break;
        !          61464: 
        !          61465:            default:                    /* don't know what to do for ch */
        !          61466:                    error(FATAL, "missing case for option %c\n", ch);
        !          61467:                    break;
        !          61468:        }   /* End switch */
        !          61469:     }   /* End while */
        !          61470: 
        !          61471:     argc -= optind;                    /* get ready for non-option args */
        !          61472:     argv += optind;
        !          61473: 
        !          61474: }   /* End of options */
        !          61475: 
        !          61476: /*****************************************************************************/
        !          61477: 
        !          61478: setup()
        !          61479: 
        !          61480: {
        !          61481: 
        !          61482: /*
        !          61483:  *
        !          61484:  * Handles things that must be done after the options are read but before the
        !          61485:  * input files are processed.
        !          61486:  *
        !          61487:  */
        !          61488: 
        !          61489:     writerequest(0, stdout);           /* global requests eg. manual feed */
        !          61490:     setencoding(fontencoding);         /* unnecessary */
        !          61491:     fprintf(stdout, "setup\n");
        !          61492: 
        !          61493:     if ( formsperpage > 1 )  {         /* followed by stuff for multiple pages */
        !          61494:        if ( cat(formfile) == FALSE )
        !          61495:            error(FATAL, "can't read %s", formfile);
        !          61496:        fprintf(stdout, "%d setupforms\n", formsperpage);
        !          61497:     }  /* End if */
        !          61498: 
        !          61499:     fprintf(stdout, "%s", ENDSETUP);
        !          61500: 
        !          61501: }   /* End of setup */
        !          61502: 
        !          61503: /*****************************************************************************/
        !          61504: 
        !          61505: arguments()
        !          61506: 
        !          61507: {
        !          61508: 
        !          61509:     FILE       *fp;                    /* next input file */
        !          61510: 
        !          61511: /*
        !          61512:  *
        !          61513:  * Makes sure all the non-option command line arguments are processed. If we get
        !          61514:  * here and there aren't any arguments left, or if '-' is one of the input files
        !          61515:  * we'll process stdin.
        !          61516:  *
        !          61517:  */
        !          61518: 
        !          61519:     if ( argc < 1 )
        !          61520:        bitmap(stdin);
        !          61521:     else  {                            /* at least one argument is left */
        !          61522:        while ( argc > 0 )  {
        !          61523:            if ( strcmp(*argv, "-") == 0 )
        !          61524:                fp = stdin;
        !          61525:            else if ( (fp = fopen(*argv, "r")) == NULL )
        !          61526:                error(FATAL, "can't open %s", *argv);
        !          61527:            bitmap(fp);
        !          61528:            if ( fp != stdin )
        !          61529:                fclose(fp);
        !          61530:            argc--;
        !          61531:            argv++;
        !          61532:        }   /* End while */
        !          61533:     }   /* End else */
        !          61534: 
        !          61535: }   /* End of arguments */
        !          61536: 
        !          61537: /*****************************************************************************/
        !          61538: 
        !          61539: done()
        !          61540: 
        !          61541: {
        !          61542: 
        !          61543: /*
        !          61544:  *
        !          61545:  * Finished with all the input files, so mark the end of the pages with a TRAILER
        !          61546:  * comment, make sure the last page prints, and add things like the PAGES comment
        !          61547:  * that can only be determined after all the input files have been read.
        !          61548:  *
        !          61549:  */
        !          61550: 
        !          61551:     fprintf(stdout, "%s", TRAILER);
        !          61552:     fprintf(stdout, "done\n");
        !          61553:     fprintf(stdout, "%s 0 0 %d %d\n", BOUNDINGBOX, (bbox[0]*72+100)/100, (bbox[1]*72+100)/100);
        !          61554:     fprintf(stdout, "%s %d\n", PAGES, printed);
        !          61555: 
        !          61556: }   /* End of done */
        !          61557: 
        !          61558: /*****************************************************************************/
        !          61559: 
        !          61560: account()
        !          61561: 
        !          61562: {
        !          61563: 
        !          61564: /*
        !          61565:  *
        !          61566:  * Writes an accounting record to *fp_acct provided it's not NULL. Accounting is
        !          61567:  * requested using the -A or -J options.
        !          61568:  *
        !          61569:  */
        !          61570: 
        !          61571:     if ( fp_acct != NULL )
        !          61572:        fprintf(fp_acct, " print %d\n copies %d\n", printed, copies);
        !          61573: 
        !          61574: }   /* End of account */
        !          61575: 
        !          61576: /*****************************************************************************/
        !          61577: 
        !          61578: bitmap(fp)
        !          61579: 
        !          61580:     FILE       *fp;                    /* next input file */
        !          61581: 
        !          61582: {
        !          61583: 
        !          61584:     int                count;                  /* pattern repeats this many times */
        !          61585:     long       total;                  /* expect this many patterns */
        !          61586: 
        !          61587: /*
        !          61588:  *
        !          61589:  * Reads all the bitmaps from the next input file, translates each one into
        !          61590:  * PostScript, and arranges to have one bitmap printed on each page. Multiple
        !          61591:  * bitmaps per input file work.
        !          61592:  *
        !          61593:  */
        !          61594: 
        !          61595:     fp_in = fp;                                /* everyone reads from this file */
        !          61596: 
        !          61597:     while ( dimensions() == TRUE )  {
        !          61598:        patcount = 0;
        !          61599:        total = scanlines * patterns;
        !          61600: 
        !          61601:        bbox[0] = MAX(bbox[0], patterns*16);    /* for BoundingBox comment */
        !          61602:        bbox[1] = MAX(bbox[1], scanlines);
        !          61603: 
        !          61604:        redirect(++page);
        !          61605:        fprintf(fp_out, "%s %d %d\n", PAGE, page, printed+1);
        !          61606:        fprintf(fp_out, "/saveobj save def\n");
        !          61607:        writerequest(printed+1, fp_out);
        !          61608: 
        !          61609:        fprintf(fp_out, "%s ", (v8format == TRUE && v8undo == FALSE) ? "true" : "false");
        !          61610:        fprintf(fp_out, "%s ", (flip == TRUE) ? "true" : "false");
        !          61611:        fprintf(fp_out, "%d %d bitmap\n", patterns * 16, scanlines);
        !          61612: 
        !          61613:        while ( patcount != total && (count = getc(fp)) != EOF )  {
        !          61614:            addrast(count);
        !          61615:            patcount += (count & 0177);
        !          61616:            if ( patcount % patterns == 0 )
        !          61617:                putrast();
        !          61618:        }   /* End while */
        !          61619: 
        !          61620:        if ( debug == ON )
        !          61621:            fprintf(stderr, "patterns = %d, scanlines = %d, patcount = %d\n", patterns, scanlines, patcount);
        !          61622: 
        !          61623:        if ( total != patcount )
        !          61624:            error(FATAL, "bitmap format error");
        !          61625: 
        !          61626:        if ( fp_out == stdout ) printed++;
        !          61627: 
        !          61628:        fprintf(fp_out, "showpage\n");
        !          61629:        fprintf(fp_out, "saveobj restore\n");
        !          61630:        fprintf(fp_out, "%s %d %d\n", ENDPAGE, page, printed);
        !          61631:     }  /* End while */
        !          61632: 
        !          61633: }   /* End of bitmap */
        !          61634: 
        !          61635: /*****************************************************************************/
        !          61636: 
        !          61637: dimensions()
        !          61638: 
        !          61639: {
        !          61640: 
        !          61641:     int                ox, oy;                 /* coordinates of the origin */
        !          61642:     int                cx, cy;                 /* and right corner of the bitmap */
        !          61643:     int                i;                      /* loop index */
        !          61644: 
        !          61645: /*
        !          61646:  *
        !          61647:  * Determines the dimensions and type of the next bitmap. Eighth edition bitmaps
        !          61648:  * have a zero in the first 16 bits. If valid dimensions are read TRUE is returned
        !          61649:  * to the caller. Changed so the check of whether we're done (by testing scanlines
        !          61650:  * or patterns) comes before the malloc().
        !          61651:  *
        !          61652:  */
        !          61653: 
        !          61654:     if ( (scanlines = getint()) == 0 )  {
        !          61655:        ox = getint();
        !          61656:        oy = getint();
        !          61657:        cx = getint();
        !          61658:        cy = getint();
        !          61659:        scanlines = cy - oy;
        !          61660:        patterns = (cx - ox + 15) / 16;
        !          61661:        v8format = TRUE;
        !          61662:     } else patterns = getint();
        !          61663: 
        !          61664:     if ( scanlines <= 0 || patterns <= 0 )     /* done - don't do the malloc() */
        !          61665:        return(FALSE);
        !          61666: 
        !          61667:     if ( raster != NULL ) free(raster);
        !          61668:     if ( prevrast != NULL ) free(prevrast);
        !          61669: 
        !          61670:     if ( (rptr = raster = (char *) malloc(patterns * 2)) == NULL )
        !          61671:        error(FATAL, "no memory");
        !          61672: 
        !          61673:     if ( (prevrast = (char *) malloc(patterns * 2)) == NULL )
        !          61674:        error(FATAL, "no memory");
        !          61675: 
        !          61676:     for ( i = 0; i < patterns * 2; i++ )
        !          61677:        *(prevrast+i) = 0377;
        !          61678: 
        !          61679:     eptr = rptr + patterns * 2;
        !          61680: 
        !          61681:     return(TRUE);
        !          61682: 
        !          61683: }   /* End of dimensions */
        !          61684: 
        !          61685: /*****************************************************************************/
        !          61686: 
        !          61687: addrast(count)
        !          61688: 
        !          61689:     int                count;                  /* repeat count for next pattern */
        !          61690: 
        !          61691: {
        !          61692: 
        !          61693:     int                size;                   /* number of bytes in next pattern */
        !          61694:     int                l, h;                   /* high and low bytes */
        !          61695:     int                i, j;                   /* loop indices */
        !          61696: 
        !          61697: /*
        !          61698:  *
        !          61699:  * Reads the input file and adds the appropriate number of bytes to the output
        !          61700:  * raster line. If count has bit 7 on, one 16 bit pattern is read and repeated
        !          61701:  * count & 0177 times. If bit 7 is off, count is the number of patterns read from
        !          61702:  * fp_in - each one repeated once.
        !          61703:  *
        !          61704:  */
        !          61705: 
        !          61706:     if ( count & 0200 )  {
        !          61707:        size = 1;
        !          61708:        count &= 0177;
        !          61709:     } else {
        !          61710:        size = count;
        !          61711:        count = 1;
        !          61712:     }  /* End else */
        !          61713: 
        !          61714:     for ( i = size; i > 0; i-- )  {
        !          61715:        if ( (l = getc(fp_in)) == EOF || (h = getc(fp_in)) == EOF )
        !          61716:            return;
        !          61717:        for ( j = count; j > 0; j-- )  {
        !          61718:            *rptr++ = l;
        !          61719:            *rptr++ = h;
        !          61720:        }   /* End for */
        !          61721:     }  /* End for */
        !          61722: 
        !          61723: }   /* End of addrast */
        !          61724: 
        !          61725: /*****************************************************************************/
        !          61726: 
        !          61727: putrast()
        !          61728: 
        !          61729: {
        !          61730: 
        !          61731:     char       *p1, *p2;               /* starting and ending patterns */
        !          61732:     int                n;                      /* set to bytes per pattern */
        !          61733:     int                i;                      /* loop index */
        !          61734: 
        !          61735: /*
        !          61736:  *
        !          61737:  * Takes the scanline that's been saved in *raster, encodes it according to the
        !          61738:  * value that's been assigned to bytespp, and writes the result to *fp_out. Each
        !          61739:  * line in the output bitmap is terminated by a 0 on a line by itself.
        !          61740:  *
        !          61741:  */
        !          61742: 
        !          61743:     n = (bytespp <= 0) ? 2 * patterns : bytespp;
        !          61744: 
        !          61745:     if ( v8format == TRUE && v8undo == TRUE )
        !          61746:        for ( i = 0; i < patterns * 2; i++ )
        !          61747:            *(raster+i) = (*(prevrast+i) ^= *(raster+i));
        !          61748: 
        !          61749:     for ( p1 = raster, p2 = raster + n; p1 < eptr; p1 = p2 )
        !          61750:        if ( patncmp(p1, n) == TRUE )  {
        !          61751:            while ( patncmp(p2, n) == TRUE ) p2 += n;
        !          61752:            p2 += n;
        !          61753:            fprintf(fp_out, "%d ", n);
        !          61754:            for ( i = 0; i < n; i++, p1++ )
        !          61755:                fprintf(fp_out, "%.2X", ((int) *p1) & 0377);
        !          61756:            fprintf(fp_out, " %d\n", (p2 - p1) / n);
        !          61757:        } else {
        !          61758:            while ( p2 < eptr && patncmp(p2, n) == FALSE ) p2 += n;
        !          61759:            if ( p2 > eptr ) p2 = eptr;
        !          61760:            fprintf(fp_out, "%d ", p2 - p1);
        !          61761:            while ( p1 < p2 )
        !          61762:                fprintf(fp_out, "%.2X", ((int) *p1++) & 0377);
        !          61763:            fprintf(fp_out, " 0\n");
        !          61764:        }   /* End else */
        !          61765: 
        !          61766:     fprintf(fp_out, "0\n");
        !          61767: 
        !          61768:     rptr = raster;
        !          61769: 
        !          61770: }   /* End of putrast */
        !          61771: 
        !          61772: /*****************************************************************************/
        !          61773: 
        !          61774: patncmp(p1, n)
        !          61775: 
        !          61776:     char       *p1;                    /* first patterns starts here */
        !          61777:     int                n;                      /* and extends this many bytes */
        !          61778: 
        !          61779: {
        !          61780: 
        !          61781:     char       *p2;                    /* address of the second pattern */
        !          61782: 
        !          61783: /*
        !          61784:  *
        !          61785:  * Compares the two n byte patterns *p1 and *(p1+n). FALSE is returned if they're
        !          61786:  * different or extend past the end of the current raster line.
        !          61787:  *
        !          61788:  */
        !          61789: 
        !          61790:     p2 = p1 + n;
        !          61791: 
        !          61792:     for ( ; n > 0; n--, p1++, p2++ )
        !          61793:        if ( p2 >= eptr || *p1 != *p2 )
        !          61794:            return(FALSE);
        !          61795: 
        !          61796:     return(TRUE);
        !          61797: 
        !          61798: }   /* End of patncmp */
        !          61799: 
        !          61800: /*****************************************************************************/
        !          61801: 
        !          61802: getint()
        !          61803: 
        !          61804: {
        !          61805: 
        !          61806:     int                h, l;                   /* high and low bytes */
        !          61807: 
        !          61808: /*
        !          61809:  *
        !          61810:  * Reads the next two bytes from *fp_in and returns the resulting integer.
        !          61811:  *
        !          61812:  */
        !          61813: 
        !          61814:     if ( (l = getc(fp_in)) == EOF || (h = getc(fp_in)) == EOF )
        !          61815:        return(-1);
        !          61816: 
        !          61817:     return((h & 0377) << 8 | (l & 0377));
        !          61818: 
        !          61819: }   /* End of getint */
        !          61820: 
        !          61821: /*****************************************************************************/
        !          61822: 
        !          61823: redirect(pg)
        !          61824: 
        !          61825:     int                pg;                     /* next page we're printing */
        !          61826: 
        !          61827: {
        !          61828: 
        !          61829:     static FILE        *fp_null = NULL;        /* if output is turned off */
        !          61830: 
        !          61831: /*
        !          61832:  *
        !          61833:  * If we're not supposed to print page pg, fp_out will be directed to /dev/null,
        !          61834:  * otherwise output goes to stdout.
        !          61835:  *
        !          61836:  */
        !          61837: 
        !          61838:     if ( pg >= 0 && in_olist(pg) == ON )
        !          61839:        fp_out = stdout;
        !          61840:     else if ( (fp_out = fp_null) == NULL )
        !          61841:        fp_out = fp_null = fopen("/dev/null", "w");
        !          61842: 
        !          61843: }   /* End of redirect */
        !          61844: 
        !          61845: /*****************************************************************************/
        !          61846: 
        !          61847: 0707070014230732621006400057030057030000010016100522633075500003300000007146post.src/postdmd/postdmd.1.ds dQ /usr/lib/postscript
        !          61848: .TH POSTDMD 1
        !          61849: .SH NAME
        !          61850: .B postdmd
        !          61851: \- PostScript translator for
        !          61852: .SM DMD
        !          61853: bitmap files
        !          61854: .SH SYNOPSIS
        !          61855: \*(mBpostdmd\f1
        !          61856: .OP "" options []
        !          61857: .OP "" files []
        !          61858: .SH DESCRIPTION
        !          61859: .B postdmd
        !          61860: translates
        !          61861: .SM DMD
        !          61862: bitmap
        !          61863: .IR files ,
        !          61864: as produced by
        !          61865: .BR dmdps ,
        !          61866: or
        !          61867: .I files
        !          61868: written in the Ninth Edition
        !          61869: .BR bitfile (9.5)
        !          61870: format
        !          61871: into PostScript and writes the results on the
        !          61872: standard output.
        !          61873: If no
        !          61874: .I files
        !          61875: are specified, or if
        !          61876: .OP \-
        !          61877: is one of the input
        !          61878: .IR files ,
        !          61879: the standard input is read.
        !          61880: The following
        !          61881: .I options
        !          61882: are understood:
        !          61883: .TP 0.75i
        !          61884: .OP \-b num
        !          61885: Pack the bitmap in the output file using
        !          61886: .I num
        !          61887: byte patterns.
        !          61888: A value of 0 turns off all packing of the output file.
        !          61889: By default
        !          61890: .I num
        !          61891: is 6.
        !          61892: .TP
        !          61893: .OP \-c num
        !          61894: Print
        !          61895: .I num
        !          61896: copies of each page.
        !          61897: By default only one copy is printed.
        !          61898: .TP
        !          61899: .OP \-f
        !          61900: Flip the sense of the bits in
        !          61901: .I files
        !          61902: before printing the bitmaps.
        !          61903: .TP
        !          61904: .OP \-m num
        !          61905: Magnify each logical page by the factor
        !          61906: .IR num .
        !          61907: Pages are scaled uniformly about the origin,
        !          61908: which by default is located at the center of
        !          61909: each page.
        !          61910: The default magnification is 1.0.
        !          61911: .TP
        !          61912: .OP \-n num
        !          61913: Print
        !          61914: .I num
        !          61915: logical pages on each piece of paper,
        !          61916: where
        !          61917: .I num
        !          61918: can be any positive integer.
        !          61919: By default
        !          61920: .I num
        !          61921: is set to 1.
        !          61922: .TP
        !          61923: .OP \-o list
        !          61924: Print pages whose numbers are given in the comma-separated
        !          61925: .IR list .
        !          61926: The list contains single numbers
        !          61927: .I N
        !          61928: and ranges
        !          61929: .IR N1\-\|N2 .
        !          61930: A missing
        !          61931: .I N1
        !          61932: means the lowest numbered page, a missing
        !          61933: .I N2
        !          61934: means the highest.
        !          61935: .TP
        !          61936: .OP \-p mode
        !          61937: Print
        !          61938: .I files
        !          61939: in either \*(mBportrait\fP or \*(mBlandscape\fP
        !          61940: .IR mode .
        !          61941: Only the first character of
        !          61942: .I mode
        !          61943: is significant.
        !          61944: The default
        !          61945: .I mode
        !          61946: is \*(mBportrait\fP.
        !          61947: .TP
        !          61948: .OP \-u
        !          61949: Disables much of the unpacking for Eighth
        !          61950: Edition bitmap files.
        !          61951: Usually results in smaller output files that take longer to print.
        !          61952: Not a recommended option.
        !          61953: .TP
        !          61954: .OP \-x num
        !          61955: Translate the origin
        !          61956: .I num
        !          61957: inches along the positive x axis.
        !          61958: The default
        !          61959: coordinate system has the origin fixed at the
        !          61960: center of the page, with positive
        !          61961: x to the right and positive y up the page.
        !          61962: Positive
        !          61963: .I num
        !          61964: moves everything right.
        !          61965: The default offset is 0 inches.
        !          61966: .TP
        !          61967: .OP \-y num
        !          61968: Translate the origin
        !          61969: .I num
        !          61970: inches along the positive y axis.
        !          61971: Positive
        !          61972: .I num
        !          61973: moves everything up the page.
        !          61974: The default offset is 0.
        !          61975: .TP
        !          61976: .TP
        !          61977: .OP \-L file
        !          61978: Use
        !          61979: .I file
        !          61980: as the PostScript prologue.
        !          61981: .br
        !          61982: The default is
        !          61983: .MR \*(dQ/postdmd.ps .
        !          61984: .PP
        !          61985: Three options allow insertion of arbitrary PostScript
        !          61986: at controlled points in the translation process:
        !          61987: .TP 0.75i
        !          61988: .OP \-C file
        !          61989: Copy
        !          61990: .I file
        !          61991: to the output file;
        !          61992: .I file
        !          61993: must contain legitimate PostScript.
        !          61994: .TP
        !          61995: .OP \-P string
        !          61996: Include
        !          61997: .I string
        !          61998: in the output file;
        !          61999: .I string
        !          62000: must be legitimate PostScript.
        !          62001: .TP
        !          62002: .OP \-R action
        !          62003: Requests special
        !          62004: .I action
        !          62005: (e.g.,
        !          62006: .MR manualfeed )
        !          62007: on a per page or global basis.
        !          62008: The
        !          62009: .I action
        !          62010: string can be given as
        !          62011: .IR request,
        !          62012: .IM request : page\f1\|,
        !          62013: or
        !          62014: .IM request : page : file\f1\|.
        !          62015: If
        !          62016: .I page
        !          62017: is omitted or given as 0, the request applies to all pages.
        !          62018: If
        !          62019: .I file
        !          62020: is omitted, the request lookup is done in
        !          62021: .MR \*(dQ/ps.requests .
        !          62022: .PP
        !          62023: Only one bitmap is printed on each logical page, and each of the input
        !          62024: .I files
        !          62025: must contain complete descriptions of at least one bitmap.
        !          62026: Decreasing the pattern size using the
        !          62027: .OP \-b
        !          62028: option may help throughput on printers with fast processors
        !          62029: (e.g., \s-1PS\s+1-810),
        !          62030: while increasing the pattern size will often be the right move
        !          62031: on older models
        !          62032: (.e.g, \s-1PS\s+1-800).
        !          62033: .SH DIAGNOSTICS
        !          62034: A 0 exit status is returned if
        !          62035: .I files
        !          62036: were successfully processed.
        !          62037: .br
        !          62038: .ne 4v
        !          62039: .SH FILES
        !          62040: .MW \*(dQ/postdmd.ps
        !          62041: .br
        !          62042: .MW \*(dQ/forms.ps
        !          62043: .br
        !          62044: .MW \*(dQ/ps.requests
        !          62045: .SH SEE ALSO
        !          62046: .BR dpost (1),
        !          62047: .BR postdaisy (1),
        !          62048: .BR postio (1),
        !          62049: .BR postmd (1),
        !          62050: .BR postprint (1),
        !          62051: .BR postreverse (1),
        !          62052: .BR posttek (1)
        !          62053: 0707070014230735711006440057030057030000010015150522627503500003400000005002post.src/postdmd/postdmd.ps%
        !          62054: % Version 3.3.2 prologue for DMD bitmap files.
        !          62055: %
        !          62056: 
        !          62057: /#copies 1 store
        !          62058: /aspectratio 1 def
        !          62059: /formsperpage 1 def
        !          62060: /landscape false def
        !          62061: /magnification 1 def
        !          62062: /margin 0 def
        !          62063: /orientation 0 def
        !          62064: /rotation 1 def
        !          62065: /screenres 100 def
        !          62066: /xoffset 0 def
        !          62067: /yoffset 0 def
        !          62068: 
        !          62069: /useclippath true def
        !          62070: /pagebbox [0 0 612 792] def
        !          62071: 
        !          62072: /inch {72 mul} bind def
        !          62073: /min {2 copy gt {exch} if pop} bind def
        !          62074: 
        !          62075: /setup {
        !          62076:        counttomark 2 idiv {def} repeat pop
        !          62077: 
        !          62078:        landscape {/orientation 90 orientation add def} if
        !          62079: 
        !          62080:        pagedimensions
        !          62081:        xcenter ycenter translate
        !          62082:        orientation rotation mul rotate
        !          62083:        xoffset inch yoffset inch translate
        !          62084:        magnification dup aspectratio mul scale
        !          62085: 
        !          62086:        /height height margin sub def
        !          62087:        /width width margin sub def
        !          62088: } def
        !          62089: 
        !          62090: /pagedimensions {
        !          62091:        useclippath {
        !          62092:                /pagebbox [clippath pathbbox newpath] def
        !          62093:        } if
        !          62094:        pagebbox aload pop
        !          62095:        4 -1 roll exch 4 1 roll 4 copy
        !          62096:        landscape {4 2 roll} if
        !          62097:        sub /width exch def
        !          62098:        sub /height exch def
        !          62099:        add 2 div /xcenter exch def
        !          62100:        add 2 div /ycenter exch def
        !          62101:        userdict /gotpagebbox true put
        !          62102: } def
        !          62103: 
        !          62104: /pagesetup {/page exch def} bind def
        !          62105: 
        !          62106: /bitmap {
        !          62107:        /scanlines exch def
        !          62108:        /scanlength exch def
        !          62109:        /flip exch def
        !          62110:        /v8format exch def
        !          62111: 
        !          62112:        /bytelength scanlength 8 idiv def
        !          62113:        /picstr bytelength string def
        !          62114:        /lpicstr bytelength string def
        !          62115:        /bytelength bytelength 1 sub def
        !          62116: 
        !          62117:        gsave
        !          62118: 
        !          62119: % First the overall scaling.
        !          62120: 
        !          62121:        height scanlines div width scanlength div min
        !          62122:        72 screenres div min
        !          62123:        dup scale
        !          62124: 
        !          62125: % Followed by the one for the unit square.
        !          62126: 
        !          62127:        scanlength neg 2 div scanlines neg 2 div translate
        !          62128:        scanlength scanlines scale
        !          62129:        v8format {getv8bitmap} {getbitmap} ifelse
        !          62130:        grestore
        !          62131: } bind def
        !          62132: 
        !          62133: /getbitmap {
        !          62134:        scanlength scanlines flip [scanlength 0 0 scanlines neg 0 scanlines] {
        !          62135:                0 {
        !          62136:                        currentfile token pop dup
        !          62137:                        0 eq {pop pop exit} if
        !          62138:                        /charcount exch def
        !          62139:                        picstr 1 index charcount getinterval
        !          62140:                        /repl exch def
        !          62141:                        currentfile repl readhexstring pop pop
        !          62142:                        charcount add
        !          62143:                        currentfile token pop {
        !          62144:                                picstr 1 index repl putinterval
        !          62145:                                charcount add
        !          62146:                        } repeat
        !          62147:                } loop
        !          62148:                picstr
        !          62149:        } imagemask
        !          62150: } bind def
        !          62151: 
        !          62152: /getv8bitmap {
        !          62153:        scanlength scanlines flip not [scanlength 0 0 scanlines neg 0 scanlines] {
        !          62154:                0 {
        !          62155:                        currentfile token pop dup
        !          62156:                        0 eq {pop pop exit} if
        !          62157:                        /charcount exch def
        !          62158:                        picstr 1 index charcount getinterval
        !          62159:                        /repl exch def
        !          62160:                        currentfile repl readhexstring pop pop
        !          62161:                        charcount add
        !          62162:                        currentfile token pop {
        !          62163:                                picstr 1 index repl putinterval
        !          62164:                                charcount add
        !          62165:                        } repeat
        !          62166:                } loop
        !          62167:                0 0 picstr {
        !          62168:                        exch lpicstr exch get xor
        !          62169:                        lpicstr exch 2 index exch put
        !          62170:                        1 add dup
        !          62171:                } forall
        !          62172:                pop pop lpicstr
        !          62173:        } imagemask
        !          62174: } bind def
        !          62175: 
        !          62176: /done {/lastpage where {pop lastpage} if} def
        !          62177: 0707070014230101030407550057030057030000020322170522633075700002100000000000post.src/postgif0707070014230102111006400057030057030000010225450522633075700003300000005276post.src/postgif/postgif.1.ds dQ /usr/lib/postscript
        !          62178: .TH POSTGIF 1
        !          62179: .SH NAME
        !          62180: .B postgif
        !          62181: \- PostScript translator for
        !          62182: .SM GIF
        !          62183: files
        !          62184: .SH SYNOPSIS
        !          62185: \*(mBpostgif\f1
        !          62186: .OP "" options []
        !          62187: .OP "" files []
        !          62188: .SH DESCRIPTION
        !          62189: .B postgif
        !          62190: translates Graphics Interchange Format (\s-1GIF\s+1)
        !          62191: .I files
        !          62192: into PostScript and writes the results on the
        !          62193: standard output.
        !          62194: If no
        !          62195: .I files
        !          62196: are specified, or if
        !          62197: .OP \-
        !          62198: is one of the input
        !          62199: .IR files ,
        !          62200: the standard input is read.
        !          62201: The following
        !          62202: .I options
        !          62203: are understood:
        !          62204: .TP 0.75i
        !          62205: .OP \-c num
        !          62206: Print
        !          62207: .I num
        !          62208: copies of each page.
        !          62209: By default only one copy is printed.
        !          62210: .TP
        !          62211: .OP \-f
        !          62212: Flip the sense of the bits in
        !          62213: .I files
        !          62214: before printing the pixmaps.
        !          62215: .TP
        !          62216: .OP \-g
        !          62217: Generate picture in gray instead of color
        !          62218: .TP
        !          62219: .OP \-m num
        !          62220: Magnify each logical page by the factor
        !          62221: .IR num .
        !          62222: Pages are scaled uniformly about the origin,
        !          62223: which by default is located at the center of
        !          62224: each page.
        !          62225: The default magnification is 1.0.
        !          62226: .TP
        !          62227: .OP \-n num
        !          62228: Print
        !          62229: .I num
        !          62230: logical pages on each piece of paper,
        !          62231: where
        !          62232: .I num
        !          62233: can be any positive integer.
        !          62234: By default
        !          62235: .I num
        !          62236: is set to 1.
        !          62237: .TP
        !          62238: .OP \-o list
        !          62239: Print pages whose numbers are given in the comma-separated
        !          62240: .IR list .
        !          62241: The list contains single numbers
        !          62242: .I N
        !          62243: and ranges
        !          62244: .IR N1\-\|N2 .
        !          62245: A missing
        !          62246: .I N1
        !          62247: means the lowest numbered page, a missing
        !          62248: .I N2
        !          62249: means the highest.
        !          62250: .TP
        !          62251: .OP \-p mode
        !          62252: Print
        !          62253: .I files
        !          62254: in either \*(mBportrait\fP or \*(mBlandscape\fP
        !          62255: .IR mode .
        !          62256: Only the first character of
        !          62257: .I mode
        !          62258: is significant.
        !          62259: The default
        !          62260: .I mode
        !          62261: is \*(mBportrait\fP.
        !          62262: .TP
        !          62263: .OP \-x num
        !          62264: Translate the origin
        !          62265: .I num
        !          62266: inches along the positive x axis.
        !          62267: The default
        !          62268: coordinate system has the origin fixed at the
        !          62269: center of the page, with positive
        !          62270: x to the right and positive y up the page.
        !          62271: Positive
        !          62272: .I num
        !          62273: moves everything right.
        !          62274: The default offset is 0 inches.
        !          62275: .TP
        !          62276: .OP \-y num
        !          62277: Translate the origin
        !          62278: .I num
        !          62279: inches along the positive y axis.
        !          62280: Positive
        !          62281: .I num
        !          62282: moves everything up the page.
        !          62283: The default offset is 0.
        !          62284: .TP
        !          62285: .OP \-L file
        !          62286: Use
        !          62287: .I file
        !          62288: as the PostScript prologue.
        !          62289: .br
        !          62290: The default is
        !          62291: .MR \*(dQ/postgif.ps .
        !          62292: .PP
        !          62293: Two options allow insertion of arbitrary PostScript
        !          62294: at controlled points in the translation process:
        !          62295: .TP 0.75i
        !          62296: .OP \-C file
        !          62297: Copy
        !          62298: .I file
        !          62299: to the output file;
        !          62300: .I file
        !          62301: must contain legitimate PostScript.
        !          62302: .TP
        !          62303: .OP \-P string
        !          62304: Include
        !          62305: .I string
        !          62306: in the output file;
        !          62307: .I string
        !          62308: must be legitimate PostScript.
        !          62309: .PP
        !          62310: Only one pixmap is printed on each logical page,
        !          62311: and each of the input
        !          62312: .I files
        !          62313: must contain complete descriptions of at least one pixmap.
        !          62314: .SH DIAGNOSTICS
        !          62315: A 0 exit status is returned if
        !          62316: .I files
        !          62317: were successfully processed.
        !          62318: .br
        !          62319: .ne 1i
        !          62320: .SH FILES
        !          62321: .MW \*(dQ/postgif.ps
        !          62322: .br
        !          62323: .MW \*(dQ/forms.ps
        !          62324: .SH SEE ALSO
        !          62325: .BR dpost (1),
        !          62326: .BR postdaisy (1),
        !          62327: .BR postdmd (1),
        !          62328: .BR postio (1),
        !          62329: .BR postmd (1),
        !          62330: .BR postprint (1),
        !          62331: .BR postreverse (1),
        !          62332: .BR posttek (1),
        !          62333: .BR psencoding (1)
        !          62334: 0707070014230077041006400057030057030000010311160522633075700003400000003720post.src/postgif/postgif.mkMAKE=/bin/make
        !          62335: MAKEFILE=postgif.mk
        !          62336: 
        !          62337: SYSTEM=V9
        !          62338: VERSION=3.3.2
        !          62339: 
        !          62340: GROUP=bin
        !          62341: OWNER=bin
        !          62342: 
        !          62343: MAN1DIR=/tmp
        !          62344: POSTBIN=/usr/bin/postscript
        !          62345: POSTLIB=/usr/lib/postscript
        !          62346: 
        !          62347: COMMONDIR=../common
        !          62348: 
        !          62349: CFLGS=-O
        !          62350: LDFLGS=-s
        !          62351: 
        !          62352: CFLAGS=$(CFLGS) -I$(COMMONDIR)
        !          62353: LDFLAGS=$(LDFLGS)
        !          62354: 
        !          62355: HFILES=$(COMMONDIR)/comments.h\
        !          62356:        $(COMMONDIR)/ext.h\
        !          62357:        $(COMMONDIR)/gen.h\
        !          62358:        $(COMMONDIR)/path.h
        !          62359: 
        !          62360: OFILES=postgif.o\
        !          62361:        $(COMMONDIR)/glob.o\
        !          62362:        $(COMMONDIR)/misc.o\
        !          62363:        $(COMMONDIR)/request.o
        !          62364: 
        !          62365: all : postgif
        !          62366: 
        !          62367: install : all
        !          62368:        @if [ ! -d "$(POSTBIN)" ]; then \
        !          62369:            mkdir $(POSTBIN); \
        !          62370:            chmod 755 $(POSTBIN); \
        !          62371:            chgrp $(GROUP) $(POSTBIN); \
        !          62372:            chown $(OWNER) $(POSTBIN); \
        !          62373:        fi
        !          62374:        @if [ ! -d "$(POSTLIB)" ]; then \
        !          62375:            mkdir $(POSTLIB); \
        !          62376:            chmod 755 $(POSTLIB); \
        !          62377:            chgrp $(GROUP) $(POSTLIB); \
        !          62378:            chown $(OWNER) $(POSTLIB); \
        !          62379:        fi
        !          62380:        cp postgif $(POSTBIN)/postgif
        !          62381:        @chmod 755 $(POSTBIN)/postgif
        !          62382:        @chgrp $(GROUP) $(POSTBIN)/postgif
        !          62383:        @chown $(OWNER) $(POSTBIN)/postgif
        !          62384:        cp postgif.ps $(POSTLIB)/postgif.ps
        !          62385:        @chmod 644 $(POSTLIB)/postgif.ps
        !          62386:        @chgrp $(GROUP) $(POSTLIB)/postgif.ps
        !          62387:        @chown $(OWNER) $(POSTLIB)/postgif.ps
        !          62388:        cp postgif.1 $(MAN1DIR)/postgif.1
        !          62389:        @chmod 644 $(MAN1DIR)/postgif.1
        !          62390:        @chgrp $(GROUP) $(MAN1DIR)/postgif.1
        !          62391:        @chown $(OWNER) $(MAN1DIR)/postgif.1
        !          62392: 
        !          62393: clean :
        !          62394:        rm -f *.o
        !          62395: 
        !          62396: clobber : clean
        !          62397:        rm -f postgif
        !          62398: 
        !          62399: postgif : $(OFILES)
        !          62400:        $(CC) $(CFLAGS) $(LDFLAGS) -o postgif $(OFILES) -lm
        !          62401: 
        !          62402: postgif.o : $(HFILES)
        !          62403: 
        !          62404: $(COMMONDIR)/glob.o\
        !          62405: $(COMMONDIR)/misc.o\
        !          62406: $(COMMONDIR)/request.o :
        !          62407:        @cd $(COMMONDIR); $(MAKE) -f common.mk `basename $@`
        !          62408: 
        !          62409: changes :
        !          62410:        @trap "" 1 2 3 15; \
        !          62411:        sed \
        !          62412:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
        !          62413:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
        !          62414:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          62415:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          62416:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
        !          62417:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
        !          62418:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
        !          62419:        $(MAKEFILE) >XXX.mk; \
        !          62420:        mv XXX.mk $(MAKEFILE); \
        !          62421:        sed \
        !          62422:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
        !          62423:        postgif.1 >XXX.1; \
        !          62424:        mv XXX.1 postgif.1
        !          62425: 
        !          62426: 0707070014230101061006440057030057030000010322000522627503600003300000044005post.src/postgif/postgif.c
        !          62427: #include <stdio.h>
        !          62428: #include <string.h>
        !          62429: #include <signal.h>
        !          62430: #include <ctype.h>
        !          62431: #include <fcntl.h>
        !          62432: 
        !          62433: #include "comments.h"
        !          62434: #include "gen.h"
        !          62435: #include "path.h"
        !          62436: #include "ext.h"
        !          62437: 
        !          62438: #define dbprt  if (debug) fprintf
        !          62439: 
        !          62440: char   *optnames = "a:c:fglm:n:o:p:x:y:C:E:DG:IL:P:";
        !          62441: char    *prologue = POSTGIF;           /* default PostScript prologue */
        !          62442: char    *formfile = FORMFILE;           /* stuff for multiple pages per sheet */
        !          62443: int     formsperpage = 1;               /* page images on each piece of paper */
        !          62444: int    copies = 1;                     /* and this many copies of each sheet */
        !          62445: int     page = 0;                       /* last page we worked on */
        !          62446: int     printed = 0;                    /* and the number of pages printed */
        !          62447: 
        !          62448: extern char *malloc();
        !          62449: extern void free();
        !          62450: extern double atof(), pow();
        !          62451: 
        !          62452: unsigned char ibuf[BUFSIZ];
        !          62453: unsigned char *cmap, *gcmap, *lcmap;
        !          62454: unsigned char *gmap, *ggmap, *lgmap;
        !          62455: unsigned char *pmap;
        !          62456: double gamma;
        !          62457: float cr = 0.3, cg = 0.59, cb = 0.11;
        !          62458: int maplength, gmaplength, lmaplength;
        !          62459: int scrwidth, scrheight;
        !          62460: int gcolormap, lcolormap;
        !          62461: int bitperpixel, background;
        !          62462: int imageleft, imagetop;
        !          62463: int imagewidth, imageheight;
        !          62464: int interlaced, lbitperpixel;
        !          62465: int gray = 0;
        !          62466: int gammaflag = 0;
        !          62467: int negative = 0;
        !          62468: int terminate = 0;
        !          62469: int codesize, clearcode, endcode, curstblsize, pmindex, byteinibuf, bitsleft;
        !          62470: int prefix[4096], suffix[4096], cstbl[4096];
        !          62471: int bburx = -32767, bbury = -32767;
        !          62472: FILE *fp_in = NULL;
        !          62473: FILE *fp_out = stdout;
        !          62474: 
        !          62475: char *
        !          62476: allocate(size)
        !          62477:     int size;
        !          62478: {
        !          62479:     char *p;
        !          62480: 
        !          62481:     if ((p = malloc(size)) == NULL) error(FATAL, "not enough memory");
        !          62482:     return(p);
        !          62483: }
        !          62484: 
        !          62485: void
        !          62486: puthex(c, fp)
        !          62487:     unsigned char c;
        !          62488:     FILE *fp;
        !          62489: {
        !          62490:     static char hextbl[16] = {
        !          62491:        '0', '1', '2', '3', '4', '5', '6', '7',
        !          62492:        '8', '9', 'a', 'b', 'c', 'd', 'e', 'f',
        !          62493:     };
        !          62494: 
        !          62495:     putc(hextbl[(c >> 4) & 017], fp);
        !          62496:     putc(hextbl[c & 017], fp);
        !          62497: }
        !          62498: 
        !          62499: void
        !          62500: setcolormap(bp)
        !          62501:     int bp;
        !          62502: {
        !          62503:     int i, entries = 1, scale = 1;
        !          62504:     unsigned char *p, *q;
        !          62505: 
        !          62506:     for (i = 0; i < bp; i++) entries *= 2;
        !          62507:     for (i = 0; i < 8 - bp; i++) scale *= 2;
        !          62508:     gcmap = (unsigned char *) allocate(entries*3);
        !          62509:     ggmap = (unsigned char *) allocate(entries);
        !          62510:     gmaplength = entries;
        !          62511:     for (i = 0, p = gcmap, q = ggmap; i < 256; i += scale, p += 3, q++) {
        !          62512:        if (negative) {
        !          62513:            *p = 255 - i; p[1] = *p; p[2] = *p;
        !          62514:            *q = *p;
        !          62515:        }
        !          62516:        else {
        !          62517:            *p = i; p[1] = i; p[2] = i;
        !          62518:            *q = i;
        !          62519:        }
        !          62520:     }
        !          62521:     if (gammaflag)
        !          62522:        for (i = 0, p = gcmap; i < 256; i += scale, p += 3) {
        !          62523:            *p = (unsigned char) (pow((double) *p/256.0, gamma)*256);
        !          62524:            p[1] = *p; p[2] = *p;
        !          62525:        }
        !          62526: dbprt(stderr,"default color map:\n");
        !          62527: for (i = 0; i < entries*3; i += 3)
        !          62528: dbprt(stderr, "%d, %d, %d\n", gcmap[i], gcmap[i+1], gcmap[i+2]);
        !          62529: }
        !          62530: 
        !          62531: void
        !          62532: readgcolormap(bp)
        !          62533:     int bp;
        !          62534: {
        !          62535:     int i, entries = 1;
        !          62536:     unsigned char *p, *q;
        !          62537: 
        !          62538:     for (i = 0; i < bp; i++) entries *= 2;
        !          62539:     gcmap = (unsigned char *) allocate(entries*3);
        !          62540:     ggmap = (unsigned char *) allocate(entries);
        !          62541:     gmaplength = entries;
        !          62542:     fread(gcmap, sizeof(*gcmap), entries*3, fp_in);
        !          62543:     if (negative)
        !          62544:        for (i = 0, p = gcmap; i < entries*3; i++, p++) *p = 255 - *p;
        !          62545:     for (i = 0, p = gcmap, q = ggmap; i < entries; i++, p += 3, q++)
        !          62546:        *q = cr*(int)p[0] + cg*(int)p[1] + cb*(int)p[2] + 0.5;
        !          62547:     if (gammaflag)
        !          62548:        for (i = 0, p = gcmap; i < entries*3; i++, p++)
        !          62549:            *p = (unsigned char) (pow((double) *p/256.0, gamma)*256);
        !          62550: dbprt(stderr,"global color map:\n");
        !          62551: for (i = 0; i < entries*3; i += 3)
        !          62552: dbprt(stderr, "%d, %d, %d\n", gcmap[i], gcmap[i+1], gcmap[i+2]);
        !          62553: }
        !          62554: 
        !          62555: void
        !          62556: readlcolormap(bp)
        !          62557:     int bp;
        !          62558: {
        !          62559:     int i, entries = 1;
        !          62560:     unsigned char *p, *q;
        !          62561: 
        !          62562:     for (i = 0; i < bp; i++) entries *= 2;
        !          62563:     lcmap = (unsigned char *) allocate(entries*3);
        !          62564:     lgmap = (unsigned char *) allocate(entries);
        !          62565:     lmaplength = entries;
        !          62566:     fread(lcmap, sizeof(*lcmap), entries*3, fp_in);
        !          62567:     if (negative)
        !          62568:        for (i = 0, p = lcmap; i < entries*3; i++, p++) *p = 255 - *p;
        !          62569:     for (i = 0, p = lcmap, q = lgmap; i < entries; i++, p += 3, q++)
        !          62570:        *q = cr*(int)p[0] + cg*(int)p[1] + cb*(int)p[2] + 0.5;
        !          62571:     if (gammaflag)
        !          62572:        for (i = 0, p = lcmap; i < entries*3; i++, p++)
        !          62573:            *p = (unsigned char) (pow((double) *p/256.0, gamma)*256);
        !          62574: dbprt(stderr,"local color map:\n");
        !          62575: for (i = 0; i < entries*3; i += 3)
        !          62576: dbprt(stderr, "%d, %d, %d\n", lcmap[i], lcmap[i+1], lcmap[i+2]);
        !          62577: }
        !          62578: 
        !          62579: void
        !          62580: initstbl()
        !          62581: {
        !          62582:     int i, entries = 1, *p, *s;
        !          62583: 
        !          62584:     for (i = 0; i < codesize; i++) entries *= 2;
        !          62585:     clearcode = entries;
        !          62586:     endcode = clearcode + 1;
        !          62587:     for (i = 0, p = prefix, s = suffix; i <= endcode; i++, p++, s++) {
        !          62588:        *p = endcode;
        !          62589:        *s = i;
        !          62590:     }
        !          62591:     curstblsize = endcode + 1;
        !          62592:     pmindex = 0;
        !          62593:     byteinibuf = 0;
        !          62594:     bitsleft = 0;
        !          62595: }
        !          62596: 
        !          62597: int
        !          62598: nextbyte()
        !          62599: {
        !          62600:     static ibufindex;
        !          62601: 
        !          62602:     if (byteinibuf) {
        !          62603:        byteinibuf--;
        !          62604:        ibufindex++;
        !          62605:     }
        !          62606:     else {
        !          62607:        fread(ibuf, sizeof(*ibuf), 1, fp_in);
        !          62608:        byteinibuf = ibuf[0];
        !          62609: dbprt(stderr, "byte count: %d\n", byteinibuf);
        !          62610:        if (byteinibuf) fread(ibuf, sizeof(*ibuf), byteinibuf, fp_in);
        !          62611:        else error(FATAL, "encounter zero byte count block before end code");
        !          62612:        ibufindex = 0;
        !          62613:        byteinibuf--;
        !          62614:        ibufindex++;
        !          62615:     }
        !          62616:     return(ibuf[ibufindex-1]);
        !          62617: }
        !          62618: 
        !          62619: int masktbl[25] = {
        !          62620:     0, 01, 03, 07, 017, 037, 077, 0177, 0377, 0777, 01777, 03777, 07777,
        !          62621:     017777, 037777, 077777, 0177777, 0377777, 0777777, 01777777, 03777777,
        !          62622:     07777777, 017777777, 037777777, 077777777
        !          62623: };
        !          62624: 
        !          62625: int
        !          62626: getcode()
        !          62627: {
        !          62628:     int cs, c;
        !          62629:     static int oldc;
        !          62630: 
        !          62631:     if (curstblsize < 4096) cs = cstbl[curstblsize];
        !          62632:     else cs = 12;
        !          62633:     while (bitsleft < cs) {
        !          62634:        oldc = (oldc & masktbl[bitsleft]) | ((nextbyte() & 0377) << bitsleft);
        !          62635:        bitsleft += 8;
        !          62636:     }
        !          62637:     c = oldc & masktbl[cs];
        !          62638:     oldc = oldc >> cs;
        !          62639:     bitsleft -= cs;
        !          62640: /* dbprt(stderr, "code: %d %d %d\n", curstblsize, cs, c); */
        !          62641:     return(c);
        !          62642: }
        !          62643: 
        !          62644: void
        !          62645: putcode(c)
        !          62646:     int c;
        !          62647: {
        !          62648:     if (prefix[c] != endcode) {
        !          62649:        putcode(prefix[c]);
        !          62650:        pmap[pmindex] = suffix[c];
        !          62651:        pmindex++;
        !          62652:     }
        !          62653:     else {
        !          62654:        pmap[pmindex] = suffix[c];
        !          62655:        pmindex++;
        !          62656:     }
        !          62657: }
        !          62658: 
        !          62659: int
        !          62660: firstof(c)
        !          62661:     int c;
        !          62662: {
        !          62663:     while (prefix[c] != endcode) c = prefix[c];
        !          62664:     return(suffix[c]);
        !          62665: }
        !          62666: 
        !          62667: void
        !          62668: writeimage()
        !          62669: {
        !          62670:     int i, j, k;
        !          62671: 
        !          62672: dbprt(stderr, "pmindex: %d\n", pmindex);
        !          62673:     fputs("save\n", fp_out);
        !          62674:     fprintf(fp_out, "/codestr %d string def\n", imagewidth);
        !          62675:     if (!gray) {
        !          62676:        fprintf(fp_out, "/colortbl currentfile %d string readhexstring\n",
        !          62677:            maplength*3);
        !          62678:         for (i = 0; i < maplength; i++) puthex(cmap[i], fp_out);
        !          62679:         fputs("\n", fp_out);
        !          62680:         for (i = maplength ; i < maplength*2; i++) puthex(cmap[i], fp_out);
        !          62681:         fputs("\n", fp_out);
        !          62682:         for (i = maplength*2 ; i < maplength*3; i++) puthex(cmap[i], fp_out);
        !          62683:         fputs("\npop def\n", fp_out);
        !          62684:        fprintf(fp_out, "/graytbl currentfile %d string readhexstring\n",
        !          62685:            maplength);
        !          62686:         for (i = 0; i < maplength; i++) puthex(gmap[i], fp_out);
        !          62687:         fputs("\npop def\n", fp_out);
        !          62688:     }
        !          62689:     fprintf(fp_out, "%s %d %d %d %d gifimage\n",
        !          62690:        gray ? "true" : "false", imagewidth, imageheight,
        !          62691:        scrwidth - imageleft - imagewidth, scrheight - imagetop - imageheight);
        !          62692:     if (gray) {
        !          62693:        if (interlaced) {
        !          62694:            int *iltbl;
        !          62695: 
        !          62696:            iltbl = (int *) allocate(imageheight*sizeof(int));
        !          62697:            j = 0;
        !          62698:            for (i = 0; i < imageheight; i += 8) {
        !          62699:                iltbl[i] = j;
        !          62700:                j += imagewidth;
        !          62701:            }
        !          62702: dbprt(stderr, "pass1: %d\n", j);
        !          62703:            for (i = 4; i < imageheight; i += 8) {
        !          62704:                iltbl[i] = j;
        !          62705:                j += imagewidth;
        !          62706:            }
        !          62707: dbprt(stderr, "pass2: %d\n", j);
        !          62708:            for (i = 2; i < imageheight; i += 4) {
        !          62709:                iltbl[i] = j;
        !          62710:                j += imagewidth;
        !          62711:            }
        !          62712: dbprt(stderr, "pass3: %d\n", j);
        !          62713:            for (i = 1; i < imageheight; i += 2) {
        !          62714:                iltbl[i] = j;
        !          62715:                j += imagewidth;
        !          62716:            }
        !          62717: dbprt(stderr, "pass4: %d\n", j);
        !          62718: 
        !          62719:            for (i = 0; i < imageheight; i++) {
        !          62720:                k = iltbl[i];
        !          62721:                for (j = 0; j < imagewidth; j++, k++)
        !          62722:                    puthex(gmap[pmap[k]], fp_out);
        !          62723:                fputs("\n", fp_out);
        !          62724:            }
        !          62725:        }
        !          62726:        else {
        !          62727:            for (i = 0, k = 0; i < imageheight; i++) {
        !          62728:                for (j = 0; j < imagewidth; j++, k++)
        !          62729:                    puthex(gmap[pmap[k]], fp_out);
        !          62730:                fputs("\n", fp_out);
        !          62731:            }
        !          62732:        }
        !          62733:     }
        !          62734:     else {
        !          62735:        if (interlaced) {
        !          62736:            int *iltbl;
        !          62737: 
        !          62738:            iltbl = (int *) allocate(imageheight*sizeof(int));
        !          62739:            j = 0;
        !          62740:            for (i = 0; i < imageheight; i += 8) {
        !          62741:                iltbl[i] = j;
        !          62742:                j += imagewidth;
        !          62743:            }
        !          62744: dbprt(stderr, "pass1: %d\n", j);
        !          62745:            for (i = 4; i < imageheight; i += 8) {
        !          62746:                iltbl[i] = j;
        !          62747:                j += imagewidth;
        !          62748:            }
        !          62749: dbprt(stderr, "pass2: %d\n", j);
        !          62750:            for (i = 2; i < imageheight; i += 4) {
        !          62751:                iltbl[i] = j;
        !          62752:                j += imagewidth;
        !          62753:            }
        !          62754: dbprt(stderr, "pass3: %d\n", j);
        !          62755:            for (i = 1; i < imageheight; i += 2) {
        !          62756:                iltbl[i] = j;
        !          62757:                j += imagewidth;
        !          62758:            }
        !          62759: dbprt(stderr, "pass4: %d\n", j);
        !          62760: 
        !          62761:            for (i = 0; i < imageheight; i++) {
        !          62762:                k = iltbl[i];
        !          62763:                for (j = 0; j < imagewidth; j++, k++) puthex(pmap[k], fp_out);
        !          62764:                fputs("\n", fp_out);
        !          62765:            }
        !          62766:        }
        !          62767:        else {
        !          62768:            for (i = 0, k = 0; i < imageheight; i++) {
        !          62769:                for (j = 0; j < imagewidth; j++, k++) puthex(pmap[k], fp_out);
        !          62770:                fputs("\n", fp_out);
        !          62771:            }
        !          62772:        }
        !          62773:     }
        !          62774:     fputs("restore\n", fp_out);
        !          62775: }
        !          62776: 
        !          62777: void
        !          62778: readimage()
        !          62779: {
        !          62780:     int bytecount, zerobytecount = 0;
        !          62781:     int code, oldcode;
        !          62782: 
        !          62783:     fread(ibuf, sizeof(*ibuf), 9, fp_in);
        !          62784:     imageleft = ibuf[0] + 256*ibuf[1];
        !          62785:     imagetop = ibuf[2] + 256*ibuf[3];
        !          62786:     imagewidth = ibuf[4] + 256*ibuf[5];
        !          62787:     imageheight = ibuf[6] + 256*ibuf[7];
        !          62788:     lcolormap = ibuf[8] & 0200;
        !          62789:     interlaced = ibuf[8] & 0100;
        !          62790:     lbitperpixel = (ibuf[8] & 07) + 1;
        !          62791: dbprt(stderr, "imageleft: %d\n", imageleft);
        !          62792: dbprt(stderr, "imagetop: %d\n", imagetop);
        !          62793: dbprt(stderr, "imagewidth: %d\n", imagewidth);
        !          62794: dbprt(stderr, "imgaeheight: %d\n", imageheight);
        !          62795: dbprt(stderr, "lcolormap: %d\n", lcolormap ? 1 : 0);
        !          62796: dbprt(stderr, "interlaced: %d\n", interlaced ? 1 : 0);
        !          62797: dbprt(stderr, "lbitperpixel: %d\n", lbitperpixel);
        !          62798:     if (lcolormap) {
        !          62799:        readlcolormap(lbitperpixel);
        !          62800:        cmap = lcmap;
        !          62801:        gmap = lgmap;
        !          62802:        maplength = lmaplength;
        !          62803:     }
        !          62804: 
        !          62805: dbprt(stderr, "start reading raster data\n");
        !          62806:     fread(ibuf, sizeof(*ibuf), 1, fp_in);
        !          62807:     codesize = ibuf[0];
        !          62808: dbprt(stderr, "codesize: %d\n", codesize);
        !          62809:     pmap = (unsigned char *) allocate(imagewidth*imageheight);
        !          62810:     initstbl();
        !          62811:     while ((code = getcode()) != endcode) {
        !          62812:        if (code == clearcode) {
        !          62813:            curstblsize = endcode + 1;
        !          62814:            code = getcode();
        !          62815:            putcode(code);
        !          62816:            oldcode = code;
        !          62817:        }
        !          62818:        else if (code < curstblsize) {
        !          62819:            putcode(code);
        !          62820:            prefix[curstblsize] = oldcode;
        !          62821:            suffix[curstblsize] = firstof(code);
        !          62822:            curstblsize++;
        !          62823:            oldcode = code;
        !          62824:        }
        !          62825:        else {
        !          62826:           if (code != curstblsize) error(FATAL, "code out of order");
        !          62827:           prefix[curstblsize] = oldcode;
        !          62828:           suffix[curstblsize] = firstof(oldcode);
        !          62829:           curstblsize++;
        !          62830:           putcode(curstblsize-1);
        !          62831:           oldcode = code;
        !          62832:        }
        !          62833:     }
        !          62834: dbprt(stderr, "finish reading raster data\n");
        !          62835: 
        !          62836:     /* read the rest of the raster data */
        !          62837:     do {
        !          62838:        fread(ibuf, sizeof(*ibuf), 1, fp_in);
        !          62839:        bytecount = ibuf[0];
        !          62840: dbprt(stderr, "byte count: %d\n", bytecount);
        !          62841:        if (bytecount) fread(ibuf, sizeof(*ibuf), bytecount, fp_in);
        !          62842:        else zerobytecount = 1;
        !          62843:     } while (!zerobytecount);
        !          62844: 
        !          62845:     writeimage();
        !          62846: 
        !          62847:     if (lcolormap) {
        !          62848:        cmap = gcmap;
        !          62849:        gmap = ggmap;
        !          62850:        maplength = gmaplength;
        !          62851:        free(lcmap);
        !          62852:        free(lgmap);
        !          62853:     }
        !          62854: }
        !          62855: 
        !          62856: void
        !          62857: readextensionblock()
        !          62858: {
        !          62859:     int functioncode, bytecount, zerobytecount = 0;
        !          62860: 
        !          62861:     fread(ibuf, sizeof(*ibuf), 1, fp_in);
        !          62862:     functioncode = ibuf[0];
        !          62863: dbprt(stderr, "function code: %d\n", functioncode);
        !          62864:     do {
        !          62865:        fread(ibuf, sizeof(*ibuf), 1, fp_in);
        !          62866:        bytecount = ibuf[0];
        !          62867: dbprt(stderr, "byte count: %d\n", bytecount);
        !          62868:        if (bytecount) fread(ibuf, sizeof(*ibuf), bytecount, fp_in);
        !          62869:        else zerobytecount = 1;
        !          62870:     } while (!zerobytecount);
        !          62871: }
        !          62872: 
        !          62873: void
        !          62874: writebgscr()
        !          62875: {
        !          62876:     fprintf(fp_out, "%s %d %d\n", PAGE, page, printed+1);
        !          62877:     fputs("/saveobj save def\n", fp_out);
        !          62878:     fprintf(fp_out, "%s: %d %d %d %d\n",
        !          62879:        "%%PageBoundingBox", 0, 0, scrwidth, scrheight);
        !          62880:     if (scrwidth > bburx) bburx = scrwidth;
        !          62881:     if (scrheight > bbury) bbury = scrheight;
        !          62882:     fprintf(fp_out, "%d %d gifscreen\n", scrwidth, scrheight);
        !          62883: }
        !          62884: 
        !          62885: void
        !          62886: writeendscr()
        !          62887: {
        !          62888:     if ( fp_out == stdout ) printed++;
        !          62889:     fputs("showpage\n", fp_out);
        !          62890:     fputs("saveobj restore\n", fp_out);
        !          62891:     fprintf(fp_out, "%s %d %d\n", ENDPAGE, page, printed);
        !          62892: }
        !          62893: 
        !          62894: void
        !          62895: redirect(pg)
        !          62896:     int                pg;                     /* next page we're printing */
        !          62897: {
        !          62898:     static FILE        *fp_null = NULL;        /* if output is turned off */
        !          62899: 
        !          62900:     if ( pg >= 0 && in_olist(pg) == ON )
        !          62901:        fp_out = stdout;
        !          62902:     else if ( (fp_out = fp_null) == NULL )
        !          62903:        fp_out = fp_null = fopen("/dev/null", "w");
        !          62904: 
        !          62905: }
        !          62906: 
        !          62907: void
        !          62908: readgif()
        !          62909: {
        !          62910:     int i, j, k;
        !          62911: 
        !          62912:     for (i = 0, j = 1, k = 0; i < 13; i++) {
        !          62913:        for (; k < j; k++) cstbl[k] = i;
        !          62914:        j *= 2;
        !          62915:     }
        !          62916: 
        !          62917:     fread(ibuf, sizeof(*ibuf), 6, fp_in);
        !          62918: dbprt(stderr, "%.6s\n", ibuf);
        !          62919:     if (strncmp((char *)ibuf, "GIF87a", 6) != 0) {
        !          62920:        fread(ibuf, sizeof(*ibuf), 122, fp_in);
        !          62921:        fread(ibuf, sizeof(*ibuf), 6, fp_in);
        !          62922: dbprt(stderr, "%.6s\n", ibuf);
        !          62923:        if (strncmp((char *)ibuf, "GIF87a", 6) != 0)
        !          62924:                 error(FATAL, "wrong GIF signature");
        !          62925:     }
        !          62926:     fread(ibuf, sizeof(*ibuf), 7, fp_in);
        !          62927:     scrwidth = ibuf[0] + 256*ibuf[1];
        !          62928:     scrheight = ibuf[2] + 256*ibuf[3];
        !          62929:     gcolormap = ibuf[4] & 0200;
        !          62930:     bitperpixel = (ibuf[4] & 07) + 1;
        !          62931:     background = ibuf[5];
        !          62932: dbprt(stderr, "scrwidth: %d\n", scrwidth);
        !          62933: dbprt(stderr, "scrheight: %d\n", scrheight);
        !          62934: dbprt(stderr, "gcolormap: %d\n", gcolormap ? 1 : 0);
        !          62935: dbprt(stderr, "bitperpixel: %d\n", bitperpixel);
        !          62936: dbprt(stderr, "background: %d\n", background);
        !          62937:     if (ibuf[6] != 0) error(FATAL, "wrong screen descriptor");
        !          62938:     if (gcolormap) readgcolormap(bitperpixel);
        !          62939:     else setcolormap(bitperpixel);
        !          62940: 
        !          62941:     redirect(++page);
        !          62942:     writebgscr();
        !          62943: 
        !          62944:     cmap = gcmap;
        !          62945:     gmap = ggmap;
        !          62946:     maplength = gmaplength;
        !          62947: 
        !          62948:     do {
        !          62949:        fread(ibuf, sizeof(*ibuf), 1, fp_in);
        !          62950:        if (ibuf[0] == ',') readimage();
        !          62951:        else if (ibuf[0] == ';') terminate = 1;
        !          62952:        else if (ibuf[0] == '!') readextensionblock();
        !          62953:        else
        !          62954:        error(FATAL, "wrong image separator character or wrong GIF terminator");
        !          62955:     } while (!terminate);
        !          62956: 
        !          62957:     writeendscr();
        !          62958: 
        !          62959:     free(gcmap);
        !          62960:     free(ggmap);
        !          62961: }
        !          62962: 
        !          62963: void
        !          62964: init_signals()
        !          62965: {
        !          62966: 
        !          62967:     if ( signal(SIGINT, interrupt) == SIG_IGN )  {
        !          62968:         signal(SIGINT, SIG_IGN);
        !          62969:         signal(SIGQUIT, SIG_IGN);
        !          62970:         signal(SIGHUP, SIG_IGN);
        !          62971:     }
        !          62972:     else {
        !          62973:         signal(SIGHUP, interrupt);
        !          62974:         signal(SIGQUIT, interrupt);
        !          62975:     }
        !          62976: 
        !          62977:     signal(SIGTERM, interrupt);
        !          62978: }
        !          62979: 
        !          62980: void
        !          62981: header()
        !          62982: {
        !          62983:     int         ch;                     /* return value from getopt() */
        !          62984:     int         old_optind = optind;    /* for restoring optind - should be 1 */
        !          62985: 
        !          62986:     while ( (ch = getopt(argc, argv, optnames)) != EOF )
        !          62987:         if ( ch == 'L' )
        !          62988:             prologue = optarg;
        !          62989:         else if ( ch == '?' )
        !          62990:             error(FATAL, "");
        !          62991: 
        !          62992:     optind = old_optind;                /* get ready for option scanning */
        !          62993: 
        !          62994:     fprintf(stdout, "%s", CONFORMING);
        !          62995:     fprintf(stdout, "%s %s\n", VERSION, PROGRAMVERSION);
        !          62996:     fprintf(stdout, "%s %s\n", BOUNDINGBOX, ATEND);
        !          62997:     fprintf(stdout, "%s %s\n", PAGES, ATEND);
        !          62998:     fprintf(stdout, "%s", ENDCOMMENTS);
        !          62999: 
        !          63000:     if ( cat(prologue) == FALSE )
        !          63001:         error(FATAL, "can't read %s", prologue);
        !          63002: 
        !          63003:     fprintf(stdout, "%s", ENDPROLOG);
        !          63004:     fprintf(stdout, "%s", BEGINSETUP);
        !          63005:     fprintf(stdout, "mark\n");
        !          63006: 
        !          63007: }
        !          63008: 
        !          63009: void
        !          63010: options()
        !          63011: {
        !          63012:     int                ch;                     /* return value from getopt() */
        !          63013: 
        !          63014:     while ( (ch = getopt(argc, argv, optnames)) != EOF )  {
        !          63015:        switch ( ch )  {
        !          63016: 
        !          63017:            case 'a':                   /* aspect ratio */
        !          63018:                    fprintf(stdout, "/aspectratio %s def\n", optarg);
        !          63019:                    break;
        !          63020: 
        !          63021:            case 'c':                   /* copies */
        !          63022:                    copies = atoi(optarg);
        !          63023:                    fprintf(stdout, "/#copies %s store\n", optarg);
        !          63024:                    break;
        !          63025: 
        !          63026:            case 'f':
        !          63027:                    negative = TRUE;
        !          63028:                    break;
        !          63029: 
        !          63030:            case 'g':
        !          63031:                    gray = TRUE;
        !          63032:                    break;
        !          63033: 
        !          63034:            case 'l':
        !          63035:                    fprintf(stdout, "/alignment true def\n");
        !          63036:                    break;
        !          63037: 
        !          63038:            case 'm':                   /* magnification */
        !          63039:                    fprintf(stdout, "/magnification %s def\n", optarg);
        !          63040:                    break;
        !          63041: 
        !          63042:            case 'n':                   /* forms per page */
        !          63043:                    formsperpage = atoi(optarg);
        !          63044:                    fprintf(stdout, "%s %s\n", FORMSPERPAGE, optarg);
        !          63045:                    fprintf(stdout, "/formsperpage %s def\n", optarg);
        !          63046:                    break;
        !          63047: 
        !          63048:            case 'o':                   /* output page list */
        !          63049:                    out_list(optarg);
        !          63050:                    break;
        !          63051: 
        !          63052:            case 'p':                   /* landscape or portrait mode */
        !          63053:                    if ( *optarg == 'l' )
        !          63054:                        fprintf(stdout, "/landscape true def\n");
        !          63055:                    else fprintf(stdout, "/landscape false def\n");
        !          63056:                    break;
        !          63057: 
        !          63058:            case 'x':                   /* shift things horizontally */
        !          63059:                    fprintf(stdout, "/xoffset %s def\n", optarg);
        !          63060:                    break;
        !          63061: 
        !          63062:            case 'y':                   /* and vertically on the page */
        !          63063:                    fprintf(stdout, "/yoffset %s def\n", optarg);
        !          63064:                    break;
        !          63065: 
        !          63066:            case 'C':                   /* copy file straight to output */
        !          63067:                    if ( cat(optarg) == FALSE )
        !          63068:                        error(FATAL, "can't read %s", optarg);
        !          63069:                    break;
        !          63070: 
        !          63071:            case 'E':                   /* text font encoding - unnecessary */
        !          63072:                    fontencoding = optarg;
        !          63073:                    break;
        !          63074: 
        !          63075:            case 'D':                   /* debug flag */
        !          63076:                    debug = ON;
        !          63077:                    break;
        !          63078: 
        !          63079:            case 'G':
        !          63080:                    gammaflag = ON;
        !          63081:                    gamma = atof(optarg);
        !          63082:                    break;
        !          63083: 
        !          63084:            case 'I':                   /* ignore FATAL errors */
        !          63085:                    ignore = ON;
        !          63086:                    break;
        !          63087: 
        !          63088:            case 'L':                   /* PostScript prologue file */
        !          63089:                    prologue = optarg;
        !          63090:                    break;
        !          63091: 
        !          63092:            case 'P':                   /* PostScript pass through */
        !          63093:                    fprintf(stdout, "%s\n", optarg);
        !          63094:                    break;
        !          63095: 
        !          63096:            case '?':                   /* don't understand the option */
        !          63097:                    error(FATAL, "");
        !          63098:                    break;
        !          63099: 
        !          63100:            default:                    /* don't know what to do for ch */
        !          63101:                    error(FATAL, "missing case for option %c\n", ch);
        !          63102:                    break;
        !          63103: 
        !          63104:        }
        !          63105:     }
        !          63106: 
        !          63107:     argc -= optind;                    /* get ready for non-option args */
        !          63108:     argv += optind;
        !          63109: }
        !          63110: 
        !          63111: void
        !          63112: setup()
        !          63113: {
        !          63114:     /*setencoding(fontencoding);*/
        !          63115:     fprintf(stdout, "setup\n");
        !          63116: 
        !          63117:     if ( formsperpage > 1 )  {          /* followed by stuff for multiple pages
        !          63118: */
        !          63119:         if ( cat(formfile) == FALSE )
        !          63120:             error(FATAL, "can't read %s", formfile);
        !          63121:         fprintf(stdout, "%d setupforms\n", formsperpage);
        !          63122:     }   /* End if */
        !          63123: 
        !          63124:     fprintf(stdout, "%s", ENDSETUP);
        !          63125: 
        !          63126: }
        !          63127: 
        !          63128: void
        !          63129: arguments()
        !          63130: {
        !          63131:     if ( argc < 1 ) {
        !          63132:        fp_in = stdin;
        !          63133:        readgif();
        !          63134:     }
        !          63135:     else  {                            /* at least one argument is left */
        !          63136:        while ( argc > 0 )  {
        !          63137:            if ( strcmp(*argv, "-") == 0 )
        !          63138:                fp_in = stdin;
        !          63139:            else if ( (fp_in = fopen(*argv, "r")) == NULL )
        !          63140:                error(FATAL, "can't open %s", *argv);
        !          63141:            readgif();
        !          63142:            if ( fp_in != stdin )
        !          63143:                fclose(fp_in);
        !          63144:            argc--;
        !          63145:            argv++;
        !          63146:        }
        !          63147:     }
        !          63148: }
        !          63149: 
        !          63150: void
        !          63151: done()
        !          63152: {
        !          63153:     fprintf(stdout, "%s", TRAILER);
        !          63154:     fprintf(stdout, "done\n");
        !          63155:     fprintf(stdout, "%s 0 0 %d %d\n", BOUNDINGBOX, bburx, bbury);
        !          63156:     fprintf(stdout, "%s %d\n", PAGES, printed); 
        !          63157: }
        !          63158: 
        !          63159: main(agc, agv)
        !          63160:     int agc;
        !          63161:     char *agv[];
        !          63162: {
        !          63163:     argc = agc;
        !          63164:     argv = agv;
        !          63165:     prog_name = argv[0];
        !          63166: 
        !          63167:     init_signals();
        !          63168:     header();
        !          63169:     options();
        !          63170:     setup();
        !          63171:     arguments();
        !          63172:     done();
        !          63173: 
        !          63174:     exit(0);
        !          63175: }
        !          63176: 
        !          63177: 0707070014230101071006440057030057030000010322300522627503600003400000043614post.src/postgif/Opostgif.c
        !          63178: #include <stdio.h>
        !          63179: #include <string.h>
        !          63180: #include <signal.h>
        !          63181: #include <ctype.h>
        !          63182: #include <fcntl.h>
        !          63183: 
        !          63184: #include "comments.h"
        !          63185: #include "gen.h"
        !          63186: #include "path.h"
        !          63187: #include "ext.h"
        !          63188: 
        !          63189: #define dbprt  if (debug) fprintf
        !          63190: 
        !          63191: char   *optnames = "a:c:fglm:n:o:p:x:y:C:DG:IL:P:";
        !          63192: char    *prologue = POSTGIF;           /* default PostScript prologue */
        !          63193: char    *formfile = FORMFILE;           /* stuff for multiple pages per sheet */
        !          63194: int     formsperpage = 1;               /* page images on each piece of paper */
        !          63195: int    copies = 1;                     /* and this many copies of each sheet */
        !          63196: int     page = 0;                       /* last page we worked on */
        !          63197: int     printed = 0;                    /* and the number of pages printed */
        !          63198: 
        !          63199: extern char *malloc();
        !          63200: extern void free();
        !          63201: extern double atof(), pow();
        !          63202: 
        !          63203: unsigned char ibuf[BUFSIZ];
        !          63204: unsigned char *cmap, *gcmap, *lcmap;
        !          63205: unsigned char *gmap, *ggmap, *lgmap;
        !          63206: unsigned char *pmap;
        !          63207: double gamma;
        !          63208: float cr = 0.3, cg = 0.59, cb = 0.11;
        !          63209: int maplength, gmaplength, lmaplength;
        !          63210: int scrwidth, scrheight;
        !          63211: int gcolormap, lcolormap;
        !          63212: int bitperpixel, background;
        !          63213: int imageleft, imagetop;
        !          63214: int imagewidth, imageheight;
        !          63215: int interlaced, lbitperpixel;
        !          63216: int gray = 0;
        !          63217: int gammaflag = 0;
        !          63218: int negative = 0;
        !          63219: int terminate = 0;
        !          63220: int codesize, clearcode, endcode, curstblsize, pmindex, byteinibuf, bitsleft;
        !          63221: int prefix[4096], suffix[4096], cstbl[4096];
        !          63222: int bburx = -32767, bbury = -32767;
        !          63223: FILE *fp_in = NULL;
        !          63224: FILE *fp_out = stdout;
        !          63225: 
        !          63226: char *
        !          63227: allocate(size)
        !          63228:     int size;
        !          63229: {
        !          63230:     char *p;
        !          63231: 
        !          63232:     if ((p = malloc(size)) == NULL) error(FATAL, "not enough memory");
        !          63233:     return(p);
        !          63234: }
        !          63235: 
        !          63236: void
        !          63237: puthex(c, fp)
        !          63238:     unsigned char c;
        !          63239:     FILE *fp;
        !          63240: {
        !          63241:     static char hextbl[16] = {
        !          63242:        '0', '1', '2', '3', '4', '5', '6', '7',
        !          63243:        '8', '9', 'a', 'b', 'c', 'd', 'e', 'f',
        !          63244:     };
        !          63245: 
        !          63246:     putc(hextbl[(c >> 4) & 017], fp);
        !          63247:     putc(hextbl[c & 017], fp);
        !          63248: }
        !          63249: 
        !          63250: void
        !          63251: setcolormap(bp)
        !          63252:     int bp;
        !          63253: {
        !          63254:     int i, entries = 1, scale = 1;
        !          63255:     unsigned char *p, *q;
        !          63256: 
        !          63257:     for (i = 0; i < bp; i++) entries *= 2;
        !          63258:     for (i = 0; i < 8 - bp; i++) scale *= 2;
        !          63259:     gcmap = (unsigned char *) allocate(entries*3);
        !          63260:     ggmap = (unsigned char *) allocate(entries);
        !          63261:     gmaplength = entries;
        !          63262:     for (i = 0, p = gcmap, q = ggmap; i < 256; i += scale, p += 3, q++) {
        !          63263:        if (negative) {
        !          63264:            *p = 255 - i; p[1] = *p; p[2] = *p;
        !          63265:            *q = *p;
        !          63266:        }
        !          63267:        else {
        !          63268:            *p = i; p[1] = i; p[2] = i;
        !          63269:            *q = i;
        !          63270:        }
        !          63271:     }
        !          63272:     if (gammaflag)
        !          63273:        for (i = 0, p = gcmap; i < 256; i += scale, p += 3) {
        !          63274:            *p = (unsigned char) (pow((double) *p/256.0, gamma)*256);
        !          63275:            p[1] = *p; p[2] = *p;
        !          63276:        }
        !          63277: dbprt(stderr,"default color map:\n");
        !          63278: for (i = 0; i < entries*3; i += 3)
        !          63279: dbprt(stderr, "%d, %d, %d\n", gcmap[i], gcmap[i+1], gcmap[i+2]);
        !          63280: }
        !          63281: 
        !          63282: void
        !          63283: readgcolormap(bp)
        !          63284:     int bp;
        !          63285: {
        !          63286:     int i, entries = 1;
        !          63287:     unsigned char *p, *q;
        !          63288: 
        !          63289:     for (i = 0; i < bp; i++) entries *= 2;
        !          63290:     gcmap = (unsigned char *) allocate(entries*3);
        !          63291:     ggmap = (unsigned char *) allocate(entries);
        !          63292:     gmaplength = entries;
        !          63293:     fread(gcmap, sizeof(*gcmap), entries*3, fp_in);
        !          63294:     if (negative)
        !          63295:        for (i = 0, p = gcmap; i < entries*3; i++, p++) *p = 255 - *p;
        !          63296:     for (i = 0, p = gcmap, q = ggmap; i < entries; i++, p += 3, q++)
        !          63297:        *q = cr*p[0] + cg*p[1] + cb*p[2] + 0.5;
        !          63298:     if (gammaflag)
        !          63299:        for (i = 0, p = gcmap; i < entries*3; i++, p++)
        !          63300:            *p = (unsigned char) (pow((double) *p/256.0, gamma)*256);
        !          63301: dbprt(stderr,"global color map:\n");
        !          63302: for (i = 0; i < entries*3; i += 3)
        !          63303: dbprt(stderr, "%d, %d, %d\n", gcmap[i], gcmap[i+1], gcmap[i+2]);
        !          63304: }
        !          63305: 
        !          63306: void
        !          63307: readlcolormap(bp)
        !          63308:     int bp;
        !          63309: {
        !          63310:     int i, entries = 1;
        !          63311:     unsigned char *p, *q;
        !          63312: 
        !          63313:     for (i = 0; i < bp; i++) entries *= 2;
        !          63314:     lcmap = (unsigned char *) allocate(entries*3);
        !          63315:     lgmap = (unsigned char *) allocate(entries);
        !          63316:     lmaplength = entries;
        !          63317:     fread(lcmap, sizeof(*lcmap), entries*3, fp_in);
        !          63318:     if (negative)
        !          63319:        for (i = 0, p = lcmap; i < entries*3; i++, p++) *p = 255 - *p;
        !          63320:     for (i = 0, p = lcmap, q = lgmap; i < entries; i++, p += 3, q++)
        !          63321:        *q = cr*p[0] + cg*p[1] + cb*p[2] + 0.5;
        !          63322:     if (gammaflag)
        !          63323:        for (i = 0, p = lcmap; i < entries*3; i++, p++)
        !          63324:            *p = (unsigned char) (pow((double) *p/256.0, gamma)*256);
        !          63325: dbprt(stderr,"local color map:\n");
        !          63326: for (i = 0; i < entries*3; i += 3)
        !          63327: dbprt(stderr, "%d, %d, %d\n", lcmap[i], lcmap[i+1], lcmap[i+2]);
        !          63328: }
        !          63329: 
        !          63330: void
        !          63331: initstbl()
        !          63332: {
        !          63333:     int i, entries = 1, *p, *s;
        !          63334: 
        !          63335:     for (i = 0; i < codesize; i++) entries *= 2;
        !          63336:     clearcode = entries;
        !          63337:     endcode = clearcode + 1;
        !          63338:     for (i = 0, p = prefix, s = suffix; i <= endcode; i++, p++, s++) {
        !          63339:        *p = endcode;
        !          63340:        *s = i;
        !          63341:     }
        !          63342:     curstblsize = endcode + 1;
        !          63343:     pmindex = 0;
        !          63344:     byteinibuf = 0;
        !          63345:     bitsleft = 0;
        !          63346: }
        !          63347: 
        !          63348: int
        !          63349: nextbyte()
        !          63350: {
        !          63351:     static ibufindex;
        !          63352: 
        !          63353:     if (byteinibuf) {
        !          63354:        byteinibuf--;
        !          63355:        ibufindex++;
        !          63356:     }
        !          63357:     else {
        !          63358:        fread(ibuf, sizeof(*ibuf), 1, fp_in);
        !          63359:        byteinibuf = ibuf[0];
        !          63360: dbprt(stderr, "byte count: %d\n", byteinibuf);
        !          63361:        if (byteinibuf) fread(ibuf, sizeof(*ibuf), byteinibuf, fp_in);
        !          63362:        else error(FATAL, "encounter zero byte count block before end code");
        !          63363:        ibufindex = 0;
        !          63364:        byteinibuf--;
        !          63365:        ibufindex++;
        !          63366:     }
        !          63367:     return(ibuf[ibufindex-1]);
        !          63368: }
        !          63369: 
        !          63370: int masktbl[25] = {
        !          63371:     0, 01, 03, 07, 017, 037, 077, 0177, 0377, 0777, 01777, 03777, 07777,
        !          63372:     017777, 037777, 077777, 0177777, 0377777, 0777777, 01777777, 03777777,
        !          63373:     07777777, 017777777, 037777777, 077777777
        !          63374: };
        !          63375: 
        !          63376: int
        !          63377: getcode()
        !          63378: {
        !          63379:     int cs, c;
        !          63380:     static int oldc;
        !          63381: 
        !          63382:     if (curstblsize < 4096) cs = cstbl[curstblsize];
        !          63383:     else cs = 12;
        !          63384:     while (bitsleft < cs) {
        !          63385:        oldc = (oldc & masktbl[bitsleft]) | ((nextbyte() & 0377) << bitsleft);
        !          63386:        bitsleft += 8;
        !          63387:     }
        !          63388:     c = oldc & masktbl[cs];
        !          63389:     oldc = oldc >> cs;
        !          63390:     bitsleft -= cs;
        !          63391: /* dbprt(stderr, "code: %d %d %d\n", curstblsize, cs, c); */
        !          63392:     return(c);
        !          63393: }
        !          63394: 
        !          63395: void
        !          63396: putcode(c)
        !          63397:     int c;
        !          63398: {
        !          63399:     if (prefix[c] != endcode) {
        !          63400:        putcode(prefix[c]);
        !          63401:        pmap[pmindex] = suffix[c];
        !          63402:        pmindex++;
        !          63403:     }
        !          63404:     else {
        !          63405:        pmap[pmindex] = suffix[c];
        !          63406:        pmindex++;
        !          63407:     }
        !          63408: }
        !          63409: 
        !          63410: int
        !          63411: firstof(c)
        !          63412:     int c;
        !          63413: {
        !          63414:     while (prefix[c] != endcode) c = prefix[c];
        !          63415:     return(suffix[c]);
        !          63416: }
        !          63417: 
        !          63418: void
        !          63419: writeimage()
        !          63420: {
        !          63421:     int i, j, k;
        !          63422: 
        !          63423: dbprt(stderr, "pmindex: %d\n", pmindex);
        !          63424:     fputs("save\n", fp_out);
        !          63425:     fprintf(fp_out, "/codestr %d string def\n", imagewidth);
        !          63426:     if (!gray) {
        !          63427:        fprintf(fp_out, "/colortbl currentfile %d string readhexstring\n",
        !          63428:            maplength*3);
        !          63429:         for (i = 0; i < maplength; i++) puthex(cmap[i], fp_out);
        !          63430:         fputs("\n", fp_out);
        !          63431:         for (i = maplength ; i < maplength*2; i++) puthex(cmap[i], fp_out);
        !          63432:         fputs("\n", fp_out);
        !          63433:         for (i = maplength*2 ; i < maplength*3; i++) puthex(cmap[i], fp_out);
        !          63434:         fputs("\npop def\n", fp_out);
        !          63435:        fprintf(fp_out, "/graytbl currentfile %d string readhexstring\n",
        !          63436:            maplength);
        !          63437:         for (i = 0; i < maplength; i++) puthex(gmap[i], fp_out);
        !          63438:         fputs("\npop def\n", fp_out);
        !          63439:     }
        !          63440:     fprintf(fp_out, "%s %d %d %d %d gifimage\n",
        !          63441:        gray ? "true" : "false", imagewidth, imageheight,
        !          63442:        scrwidth - imageleft - imagewidth, scrheight - imagetop - imageheight);
        !          63443:     if (gray) {
        !          63444:        if (interlaced) {
        !          63445:            int *iltbl;
        !          63446: 
        !          63447:            iltbl = (int *) allocate(imageheight*sizeof(int));
        !          63448:            j = 0;
        !          63449:            for (i = 0; i < imageheight; i += 8) {
        !          63450:                iltbl[i] = j;
        !          63451:                j += imagewidth;
        !          63452:            }
        !          63453: dbprt(stderr, "pass1: %d\n", j);
        !          63454:            for (i = 4; i < imageheight; i += 8) {
        !          63455:                iltbl[i] = j;
        !          63456:                j += imagewidth;
        !          63457:            }
        !          63458: dbprt(stderr, "pass2: %d\n", j);
        !          63459:            for (i = 2; i < imageheight; i += 4) {
        !          63460:                iltbl[i] = j;
        !          63461:                j += imagewidth;
        !          63462:            }
        !          63463: dbprt(stderr, "pass3: %d\n", j);
        !          63464:            for (i = 1; i < imageheight; i += 2) {
        !          63465:                iltbl[i] = j;
        !          63466:                j += imagewidth;
        !          63467:            }
        !          63468: dbprt(stderr, "pass4: %d\n", j);
        !          63469: 
        !          63470:            for (i = 0; i < imageheight; i++) {
        !          63471:                k = iltbl[i];
        !          63472:                for (j = 0; j < imagewidth; j++, k++)
        !          63473:                    puthex(gmap[pmap[k]], fp_out);
        !          63474:                fputs("\n", fp_out);
        !          63475:            }
        !          63476:        }
        !          63477:        else {
        !          63478:            for (i = 0, k = 0; i < imageheight; i++) {
        !          63479:                for (j = 0; j < imagewidth; j++, k++)
        !          63480:                    puthex(gmap[pmap[k]], fp_out);
        !          63481:                fputs("\n", fp_out);
        !          63482:            }
        !          63483:        }
        !          63484:     }
        !          63485:     else {
        !          63486:        if (interlaced) {
        !          63487:            int *iltbl;
        !          63488: 
        !          63489:            iltbl = (int *) allocate(imageheight*sizeof(int));
        !          63490:            j = 0;
        !          63491:            for (i = 0; i < imageheight; i += 8) {
        !          63492:                iltbl[i] = j;
        !          63493:                j += imagewidth;
        !          63494:            }
        !          63495: dbprt(stderr, "pass1: %d\n", j);
        !          63496:            for (i = 4; i < imageheight; i += 8) {
        !          63497:                iltbl[i] = j;
        !          63498:                j += imagewidth;
        !          63499:            }
        !          63500: dbprt(stderr, "pass2: %d\n", j);
        !          63501:            for (i = 2; i < imageheight; i += 4) {
        !          63502:                iltbl[i] = j;
        !          63503:                j += imagewidth;
        !          63504:            }
        !          63505: dbprt(stderr, "pass3: %d\n", j);
        !          63506:            for (i = 1; i < imageheight; i += 2) {
        !          63507:                iltbl[i] = j;
        !          63508:                j += imagewidth;
        !          63509:            }
        !          63510: dbprt(stderr, "pass4: %d\n", j);
        !          63511: 
        !          63512:            for (i = 0; i < imageheight; i++) {
        !          63513:                k = iltbl[i];
        !          63514:                for (j = 0; j < imagewidth; j++, k++) puthex(pmap[k], fp_out);
        !          63515:                fputs("\n", fp_out);
        !          63516:            }
        !          63517:        }
        !          63518:        else {
        !          63519:            for (i = 0, k = 0; i < imageheight; i++) {
        !          63520:                for (j = 0; j < imagewidth; j++, k++) puthex(pmap[k], fp_out);
        !          63521:                fputs("\n", fp_out);
        !          63522:            }
        !          63523:        }
        !          63524:     }
        !          63525:     fputs("restore\n", fp_out);
        !          63526: }
        !          63527: 
        !          63528: void
        !          63529: readimage()
        !          63530: {
        !          63531:     int bytecount, zerobytecount = 0;
        !          63532:     int code, oldcode;
        !          63533: 
        !          63534:     fread(ibuf, sizeof(*ibuf), 9, fp_in);
        !          63535:     imageleft = ibuf[0] + 256*ibuf[1];
        !          63536:     imagetop = ibuf[2] + 256*ibuf[3];
        !          63537:     imagewidth = ibuf[4] + 256*ibuf[5];
        !          63538:     imageheight = ibuf[6] + 256*ibuf[7];
        !          63539:     lcolormap = ibuf[8] & 0200;
        !          63540:     interlaced = ibuf[8] & 0100;
        !          63541:     lbitperpixel = (ibuf[8] & 07) + 1;
        !          63542: dbprt(stderr, "imageleft: %d\n", imageleft);
        !          63543: dbprt(stderr, "imagetop: %d\n", imagetop);
        !          63544: dbprt(stderr, "imagewidth: %d\n", imagewidth);
        !          63545: dbprt(stderr, "imgaeheight: %d\n", imageheight);
        !          63546: dbprt(stderr, "lcolormap: %d\n", lcolormap ? 1 : 0);
        !          63547: dbprt(stderr, "interlaced: %d\n", interlaced ? 1 : 0);
        !          63548: dbprt(stderr, "lbitperpixel: %d\n", lbitperpixel);
        !          63549:     if (lcolormap) {
        !          63550:        readlcolormap(lbitperpixel);
        !          63551:        cmap = lcmap;
        !          63552:        gmap = lgmap;
        !          63553:        maplength = lmaplength;
        !          63554:     }
        !          63555: 
        !          63556: dbprt(stderr, "start reading raster data\n");
        !          63557:     fread(ibuf, sizeof(*ibuf), 1, fp_in);
        !          63558:     codesize = ibuf[0];
        !          63559: dbprt(stderr, "codesize: %d\n", codesize);
        !          63560:     pmap = (unsigned char *) allocate(imagewidth*imageheight);
        !          63561:     initstbl();
        !          63562:     while ((code = getcode()) != endcode) {
        !          63563:        if (code == clearcode) {
        !          63564:            curstblsize = endcode + 1;
        !          63565:            code = getcode();
        !          63566:            putcode(code);
        !          63567:            oldcode = code;
        !          63568:        }
        !          63569:        else if (code < curstblsize) {
        !          63570:            putcode(code);
        !          63571:            prefix[curstblsize] = oldcode;
        !          63572:            suffix[curstblsize] = firstof(code);
        !          63573:            curstblsize++;
        !          63574:            oldcode = code;
        !          63575:        }
        !          63576:        else {
        !          63577:           if (code != curstblsize) error(FATAL, "code out of order");
        !          63578:           prefix[curstblsize] = oldcode;
        !          63579:           suffix[curstblsize] = firstof(oldcode);
        !          63580:           curstblsize++;
        !          63581:           putcode(curstblsize-1);
        !          63582:           oldcode = code;
        !          63583:        }
        !          63584:     }
        !          63585: dbprt(stderr, "finish reading raster data\n");
        !          63586: 
        !          63587:     /* read the rest of the raster data */
        !          63588:     do {
        !          63589:        fread(ibuf, sizeof(*ibuf), 1, fp_in);
        !          63590:        bytecount = ibuf[0];
        !          63591: dbprt(stderr, "byte count: %d\n", bytecount);
        !          63592:        if (bytecount) fread(ibuf, sizeof(*ibuf), bytecount, fp_in);
        !          63593:        else zerobytecount = 1;
        !          63594:     } while (!zerobytecount);
        !          63595: 
        !          63596:     writeimage();
        !          63597: 
        !          63598:     if (lcolormap) {
        !          63599:        cmap = gcmap;
        !          63600:        gmap = ggmap;
        !          63601:        maplength = gmaplength;
        !          63602:        free(lcmap);
        !          63603:        free(lgmap);
        !          63604:     }
        !          63605: }
        !          63606: 
        !          63607: void
        !          63608: readextensionblock()
        !          63609: {
        !          63610:     int functioncode, bytecount, zerobytecount = 0;
        !          63611: 
        !          63612:     fread(ibuf, sizeof(*ibuf), 1, fp_in);
        !          63613:     functioncode = ibuf[0];
        !          63614: dbprt(stderr, "function code: %d\n", functioncode);
        !          63615:     do {
        !          63616:        fread(ibuf, sizeof(*ibuf), 1, fp_in);
        !          63617:        bytecount = ibuf[0];
        !          63618: dbprt(stderr, "byte count: %d\n", bytecount);
        !          63619:        if (bytecount) fread(ibuf, sizeof(*ibuf), bytecount, fp_in);
        !          63620:        else zerobytecount = 1;
        !          63621:     } while (!zerobytecount);
        !          63622: }
        !          63623: 
        !          63624: void
        !          63625: writebgscr()
        !          63626: {
        !          63627:     fprintf(fp_out, "%s %d %d\n", PAGE, page, printed+1);
        !          63628:     fputs("/saveobj save def\n", fp_out);
        !          63629:     fprintf(fp_out, "%s: %d %d %d %d\n",
        !          63630:        "%%PageBoundingBox", 0, 0, scrwidth, scrheight);
        !          63631:     if (scrwidth > bburx) bburx = scrwidth;
        !          63632:     if (scrheight > bbury) bbury = scrheight;
        !          63633:     fprintf(fp_out, "%d %d gifscreen\n", scrwidth, scrheight);
        !          63634: }
        !          63635: 
        !          63636: void
        !          63637: writeendscr()
        !          63638: {
        !          63639:     if ( fp_out == stdout ) printed++;
        !          63640:     fputs("showpage\n", fp_out);
        !          63641:     fputs("saveobj restore\n", fp_out);
        !          63642:     fprintf(fp_out, "%s %d %d\n", ENDPAGE, page, printed);
        !          63643: }
        !          63644: 
        !          63645: void
        !          63646: redirect(pg)
        !          63647:     int                pg;                     /* next page we're printing */
        !          63648: {
        !          63649:     static FILE        *fp_null = NULL;        /* if output is turned off */
        !          63650: 
        !          63651:     if ( pg >= 0 && in_olist(pg) == ON )
        !          63652:        fp_out = stdout;
        !          63653:     else if ( (fp_out = fp_null) == NULL )
        !          63654:        fp_out = fp_null = fopen("/dev/null", "w");
        !          63655: 
        !          63656: }
        !          63657: 
        !          63658: void
        !          63659: readgif()
        !          63660: {
        !          63661:     int i, j, k;
        !          63662: 
        !          63663:     for (i = 0, j = 1, k = 0; i < 13; i++) {
        !          63664:        for (; k < j; k++) cstbl[k] = i;
        !          63665:        j *= 2;
        !          63666:     }
        !          63667: 
        !          63668:     fread(ibuf, sizeof(*ibuf), 6, fp_in);
        !          63669: dbprt(stderr, "%.6s\n", ibuf);
        !          63670:     if (strncmp(ibuf, "GIF87a", 6) != 0) {
        !          63671:        fread(ibuf, sizeof(*ibuf), 122, fp_in);
        !          63672:        fread(ibuf, sizeof(*ibuf), 6, fp_in);
        !          63673: dbprt(stderr, "%.6s\n", ibuf);
        !          63674:        if (strncmp(ibuf, "GIF87a", 6) != 0)
        !          63675:                 error(FATAL, "wrong GIF signature");
        !          63676:     }
        !          63677:     fread(ibuf, sizeof(*ibuf), 7, fp_in);
        !          63678:     scrwidth = ibuf[0] + 256*ibuf[1];
        !          63679:     scrheight = ibuf[2] + 256*ibuf[3];
        !          63680:     gcolormap = ibuf[4] & 0200;
        !          63681:     bitperpixel = (ibuf[4] & 07) + 1;
        !          63682:     background = ibuf[5];
        !          63683: dbprt(stderr, "scrwidth: %d\n", scrwidth);
        !          63684: dbprt(stderr, "scrheight: %d\n", scrheight);
        !          63685: dbprt(stderr, "gcolormap: %d\n", gcolormap ? 1 : 0);
        !          63686: dbprt(stderr, "bitperpixel: %d\n", bitperpixel);
        !          63687: dbprt(stderr, "background: %d\n", background);
        !          63688:     if (ibuf[6] != 0) error(FATAL, "wrong screen descriptor");
        !          63689:     if (gcolormap) readgcolormap(bitperpixel);
        !          63690:     else setcolormap(bitperpixel);
        !          63691: 
        !          63692:     redirect(++page);
        !          63693:     writebgscr();
        !          63694: 
        !          63695:     cmap = gcmap;
        !          63696:     gmap = ggmap;
        !          63697:     maplength = gmaplength;
        !          63698: 
        !          63699:     do {
        !          63700:        fread(ibuf, sizeof(*ibuf), 1, fp_in);
        !          63701:        if (ibuf[0] == ',') readimage();
        !          63702:        else if (ibuf[0] == ';') terminate = 1;
        !          63703:        else if (ibuf[0] == '!') readextensionblock();
        !          63704:        else
        !          63705:        error(FATAL, "wrong image separator character or wrong GIF terminator");
        !          63706:     } while (!terminate);
        !          63707: 
        !          63708:     writeendscr();
        !          63709: 
        !          63710:     free(gcmap);
        !          63711:     free(ggmap);
        !          63712: }
        !          63713: 
        !          63714: void
        !          63715: init_signals()
        !          63716: {
        !          63717:     int         interrupt();            /* signal handler */
        !          63718: 
        !          63719:     if ( signal(SIGINT, interrupt) == SIG_IGN )  {
        !          63720:         signal(SIGINT, SIG_IGN);
        !          63721:         signal(SIGQUIT, SIG_IGN);
        !          63722:         signal(SIGHUP, SIG_IGN);
        !          63723:     }
        !          63724:     else {
        !          63725:         signal(SIGHUP, interrupt);
        !          63726:         signal(SIGQUIT, interrupt);
        !          63727:     }
        !          63728: 
        !          63729:     signal(SIGTERM, interrupt);
        !          63730: }
        !          63731: 
        !          63732: void
        !          63733: header()
        !          63734: {
        !          63735:     int         ch;                     /* return value from getopt() */
        !          63736:     int         old_optind = optind;    /* for restoring optind - should be 1 */
        !          63737: 
        !          63738:     while ( (ch = getopt(argc, argv, optnames)) != EOF )
        !          63739:         if ( ch == 'L' )
        !          63740:             prologue = optarg;
        !          63741:         else if ( ch == '?' )
        !          63742:             error(FATAL, "");
        !          63743: 
        !          63744:     optind = old_optind;                /* get ready for option scanning */
        !          63745: 
        !          63746:     fprintf(stdout, "%s", CONFORMING);
        !          63747:     fprintf(stdout, "%s %s\n", VERSION, PROGRAMVERSION);
        !          63748:     fprintf(stdout, "%s %s\n", BOUNDINGBOX, ATEND);
        !          63749:     fprintf(stdout, "%s %s\n", PAGES, ATEND);
        !          63750:     fprintf(stdout, "%s", ENDCOMMENTS);
        !          63751: 
        !          63752:     if ( cat(prologue) == FALSE )
        !          63753:         error(FATAL, "can't read %s", prologue);
        !          63754: 
        !          63755:     fprintf(stdout, "%s", ENDPROLOG);
        !          63756:     fprintf(stdout, "%s", BEGINSETUP);
        !          63757:     fprintf(stdout, "mark\n");
        !          63758: 
        !          63759: }
        !          63760: 
        !          63761: void
        !          63762: options()
        !          63763: {
        !          63764:     int                ch;                     /* return value from getopt() */
        !          63765: 
        !          63766:     while ( (ch = getopt(argc, argv, optnames)) != EOF )  {
        !          63767:        switch ( ch )  {
        !          63768: 
        !          63769:            case 'a':                   /* aspect ratio */
        !          63770:                    fprintf(stdout, "/aspectratio %s def\n", optarg);
        !          63771:                    break;
        !          63772: 
        !          63773:            case 'c':                   /* copies */
        !          63774:                    copies = atoi(optarg);
        !          63775:                    fprintf(stdout, "/#copies %s store\n", optarg);
        !          63776:                    break;
        !          63777: 
        !          63778:            case 'f':
        !          63779:                    negative = TRUE;
        !          63780:                    break;
        !          63781: 
        !          63782:            case 'g':
        !          63783:                    gray = TRUE;
        !          63784:                    break;
        !          63785: 
        !          63786:            case 'l':
        !          63787:                    fprintf(stdout, "/alignment true def\n");
        !          63788:                    break;
        !          63789: 
        !          63790:            case 'm':                   /* magnification */
        !          63791:                    fprintf(stdout, "/magnification %s def\n", optarg);
        !          63792:                    break;
        !          63793: 
        !          63794:            case 'n':                   /* forms per page */
        !          63795:                    formsperpage = atoi(optarg);
        !          63796:                    fprintf(stdout, "%s %s\n", FORMSPERPAGE, optarg);
        !          63797:                    fprintf(stdout, "/formsperpage %s def\n", optarg);
        !          63798:                    break;
        !          63799: 
        !          63800:            case 'o':                   /* output page list */
        !          63801:                    out_list(optarg);
        !          63802:                    break;
        !          63803: 
        !          63804:            case 'p':                   /* landscape or portrait mode */
        !          63805:                    if ( *optarg == 'l' )
        !          63806:                        fprintf(stdout, "/landscape true def\n");
        !          63807:                    else fprintf(stdout, "/landscape false def\n");
        !          63808:                    break;
        !          63809: 
        !          63810:            case 'x':                   /* shift things horizontally */
        !          63811:                    fprintf(stdout, "/xoffset %s def\n", optarg);
        !          63812:                    break;
        !          63813: 
        !          63814:            case 'y':                   /* and vertically on the page */
        !          63815:                    fprintf(stdout, "/yoffset %s def\n", optarg);
        !          63816:                    break;
        !          63817: 
        !          63818:            case 'C':                   /* copy file straight to output */
        !          63819:                    if ( cat(optarg) == FALSE )
        !          63820:                        error(FATAL, "can't read %s", optarg);
        !          63821:                    break;
        !          63822: 
        !          63823:            case 'D':                   /* debug flag */
        !          63824:                    debug = ON;
        !          63825:                    break;
        !          63826: 
        !          63827:            case 'G':
        !          63828:                    gammaflag = ON;
        !          63829:                    gamma = atof(optarg);
        !          63830:                    break;
        !          63831: 
        !          63832:            case 'I':                   /* ignore FATAL errors */
        !          63833:                    ignore = ON;
        !          63834:                    break;
        !          63835: 
        !          63836:            case 'L':                   /* PostScript prologue file */
        !          63837:                    prologue = optarg;
        !          63838:                    break;
        !          63839: 
        !          63840:            case 'P':                   /* PostScript pass through */
        !          63841:                    fprintf(stdout, "%s\n", optarg);
        !          63842:                    break;
        !          63843: 
        !          63844:            case '?':                   /* don't understand the option */
        !          63845:                    error(FATAL, "");
        !          63846:                    break;
        !          63847: 
        !          63848:            default:                    /* don't know what to do for ch */
        !          63849:                    error(FATAL, "missing case for option %c\n", ch);
        !          63850:                    break;
        !          63851: 
        !          63852:        }
        !          63853:     }
        !          63854: 
        !          63855:     argc -= optind;                    /* get ready for non-option args */
        !          63856:     argv += optind;
        !          63857: }
        !          63858: 
        !          63859: void
        !          63860: setup()
        !          63861: {
        !          63862:     fprintf(stdout, "setup\n");
        !          63863: 
        !          63864:     if ( formsperpage > 1 )  {          /* followed by stuff for multiple pages
        !          63865: */
        !          63866:         if ( cat(formfile) == FALSE )
        !          63867:             error(FATAL, "can't read %s", formfile);
        !          63868:         fprintf(stdout, "%d setupforms\n", formsperpage);
        !          63869:     }   /* End if */
        !          63870: 
        !          63871:     fprintf(stdout, "%s", ENDSETUP);
        !          63872: 
        !          63873: }
        !          63874: 
        !          63875: void
        !          63876: arguments()
        !          63877: {
        !          63878:     if ( argc < 1 ) {
        !          63879:        fp_in = stdin;
        !          63880:        readgif();
        !          63881:     }
        !          63882:     else  {                            /* at least one argument is left */
        !          63883:        while ( argc > 0 )  {
        !          63884:            if ( strcmp(*argv, "-") == 0 )
        !          63885:                fp_in = stdin;
        !          63886:            else if ( (fp_in = fopen(*argv, "r")) == NULL )
        !          63887:                error(FATAL, "can't open %s", *argv);
        !          63888:            readgif();
        !          63889:            if ( fp_in != stdin )
        !          63890:                fclose(fp_in);
        !          63891:            argc--;
        !          63892:            argv++;
        !          63893:        }
        !          63894:     }
        !          63895: }
        !          63896: 
        !          63897: void
        !          63898: done()
        !          63899: {
        !          63900:     fprintf(stdout, "%s", TRAILER);
        !          63901:     fprintf(stdout, "done\n");
        !          63902:     fprintf(stdout, "%s 0 0 %d %d\n", BOUNDINGBOX, bburx, bbury);
        !          63903:     fprintf(stdout, "%s %d\n", PAGES, printed); 
        !          63904: }
        !          63905: 
        !          63906: main(agc, agv)
        !          63907:     int agc;
        !          63908:     char *agv[];
        !          63909: {
        !          63910:     argc = agc;
        !          63911:     argv = agv;
        !          63912:     prog_name = argv[0];
        !          63913: 
        !          63914:     init_signals();
        !          63915:     header();
        !          63916:     options();
        !          63917:     setup();
        !          63918:     arguments();
        !          63919:     done();
        !          63920: 
        !          63921:     exit(0);
        !          63922: }
        !          63923: 
        !          63924: 0707070014230101101006440057030057030000010322450522627503600003400000004347post.src/postgif/postgif.ps%
        !          63925: % Version 3.3.2 prologue for GIF pixmap files.
        !          63926: %
        !          63927: 
        !          63928: /#copies 1 store
        !          63929: /aspectratio 1 def
        !          63930: /formsperpage 1 def
        !          63931: /landscape false def
        !          63932: /magnification 1 def
        !          63933: /margin 0 def
        !          63934: /orientation 0 def
        !          63935: /rotation 1 def
        !          63936: /xoffset 0 def
        !          63937: /yoffset 0 def
        !          63938: 
        !          63939: /useclippath true def
        !          63940: /pagebbox [0 0 612 792] def
        !          63941: 
        !          63942: /inch {72 mul} bind def
        !          63943: /min {2 copy gt {exch} if pop} bind def
        !          63944: 
        !          63945: /setup {
        !          63946:        counttomark 2 idiv {def} repeat pop
        !          63947: 
        !          63948:        landscape {/orientation 90 orientation add def} if
        !          63949: 
        !          63950:        pagedimensions
        !          63951:        xcenter ycenter translate
        !          63952:        orientation rotation mul rotate
        !          63953:        xoffset inch yoffset inch translate
        !          63954:        magnification dup aspectratio mul scale
        !          63955: 
        !          63956:        /height height margin sub def
        !          63957:        /width width margin sub def
        !          63958: } def
        !          63959: 
        !          63960: /pagedimensions {
        !          63961:        useclippath {
        !          63962:                /pagebbox [clippath pathbbox newpath] def
        !          63963:        } if
        !          63964:        pagebbox aload pop
        !          63965:        4 -1 roll exch 4 1 roll 4 copy
        !          63966:        landscape {4 2 roll} if
        !          63967:        sub /width exch def
        !          63968:        sub /height exch def
        !          63969:        add 2 div /xcenter exch def
        !          63970:        add 2 div /ycenter exch def
        !          63971:        userdict /gotpagebbox true put
        !          63972: } def
        !          63973: 
        !          63974: /pagesetup {/page exch def} bind def
        !          63975: 
        !          63976: /done {/lastpage where {pop lastpage} if} def
        !          63977: 
        !          63978: /alignment false def
        !          63979: 
        !          63980: /gifscreen { % scrwidth scrheight $
        !          63981:     2 copy
        !          63982: 
        !          63983:     alignment {
        !          63984:        100 dup dtransform exch 100 exch div abs exch 100 exch div abs
        !          63985:        2 copy scale
        !          63986:        /height exch height exch div def
        !          63987:        /width exch width exch div def
        !          63988:     } if
        !          63989: 
        !          63990:     height exch div exch width exch div
        !          63991:     2 copy lt { pop } { exch pop } ifelse
        !          63992: 
        !          63993:     alignment { cvi } if
        !          63994: 
        !          63995:     dup scale
        !          63996: 
        !          63997:     neg 2 div exch neg 2 div exch translate
        !          63998: } def
        !          63999: 
        !          64000: /gifimage { % gray imagewidth imageheight xorigin yorigin $
        !          64001:     translate
        !          64002:     2 copy scale
        !          64003:     /imageheight exch def
        !          64004:     /imagewidth exch def
        !          64005:     /gray exch def
        !          64006:     imagewidth imageheight 8 [imagewidth 0 0 imageheight neg 0 imageheight]
        !          64007:     gray {
        !          64008:        { currentfile codestr readhexstring pop } image
        !          64009:     } {
        !          64010:        /colorimage where {
        !          64011:            pop
        !          64012:            /picstr imagewidth 3 mul string def
        !          64013:            { currentfile codestr readhexstring pop pop
        !          64014:                0 1 imagewidth 1 sub {
        !          64015:                    picstr exch dup 3 mul exch colortbl exch codestr exch get
        !          64016:                    3 mul 3 getinterval putinterval
        !          64017:                } for picstr
        !          64018:            } false 3 colorimage
        !          64019:        } {
        !          64020:            { currentfile codestr readhexstring pop pop
        !          64021:                0 1 imagewidth 1 sub {
        !          64022:                    codestr exch dup graytbl exch codestr exch get get put
        !          64023:                } for codestr
        !          64024:            } image
        !          64025:        } ifelse
        !          64026:     } ifelse
        !          64027: } def
        !          64028: 0707070014231405030407550057030057030000021222660522633076100002000000000000post.src/postio0707070014231405041006440057030057030000011222670522627503600002700000001622post.src/postio/READMESerial communications program for PostScript printers.
        !          64029: 
        !          64030: Runs as a single read/write process (by default). Use the -R2 option
        !          64031: or set splitme to TRUE (file postio.c) to get separate read and write
        !          64032: processes. Although not the default, we recommend using separate read
        !          64033: and write processes.
        !          64034: 
        !          64035: Sends occasional status queries (control Ts) while transmitting files.
        !          64036: Use the -q option or set quiet (file postio.c) to TRUE to disable status
        !          64037: queries.
        !          64038: 
        !          64039: Datakit connections are supported on System V and Ninth Edition systems.
        !          64040: The syntax (for connecting to a Datakit destination) varies. Check the
        !          64041: SYSV and V9 versions of setupline() in file ifdef.c.
        !          64042: 
        !          64043: Set DKHOST and DKSTREAMS to TRUE in postio.mk for streams based DKHOST
        !          64044: support. When DKSTREAMS is TRUE postio.mk uses "dknetty" as the stream
        !          64045: module. Settings like DKSTREAMS=dkty select a different stream module
        !          64046: and may be required for full Datakit support on some systems.
        !          64047: 
        !          64048: 0707070014231405051006440057030057030000011223000522627503600003000000056437post.src/postio/ifdef.c/*
        !          64049:  *
        !          64050:  * Conditionally compiled routines for setting up and reading the line. Things
        !          64051:  * were getting out of hand with all the ifdefs, and even though this defeats
        !          64052:  * part of the purpose of conditional complilation directives, I think it's easier
        !          64053:  * to follow this way. Thanks to Alan Buckwalter for the System V DKHOST code.
        !          64054:  *
        !          64055:  * postio now can be run as separate read and write processes, but requires that
        !          64056:  * you write a procedure called resetline() and perhaps modify readline() some.
        !          64057:  * I've already tested the code on System V and it seems to work. Ninth Edition
        !          64058:  * and BSD code may be missing.
        !          64059:  *
        !          64060:  * By request I've changed the way some of the setupline() procedures (eg. in the
        !          64061:  * System V implementation) handle things when no line has been given. If line is
        !          64062:  * NULL the new setupline() procedures try to continue, assuming whoever called
        !          64063:  * postio connected stdout to the printer. Things will only work if we can read
        !          64064:  * and write stdout!
        !          64065:  *
        !          64066:  */
        !          64067: 
        !          64068: #include <stdio.h>
        !          64069: #include <ctype.h>
        !          64070: #include <fcntl.h>
        !          64071: #include <signal.h>
        !          64072: #include <sys/types.h>
        !          64073: #include <errno.h>
        !          64074: 
        !          64075: #include "ifdef.h"                     /* conditional header file inclusion */
        !          64076: #include "gen.h"                       /* general purpose definitions */
        !          64077: 
        !          64078: FILE   *fp_ttyi, *fp_ttyo;
        !          64079: char   *ptr = mesg;
        !          64080: 
        !          64081: extern int     window_size;
        !          64082: 
        !          64083: /*****************************************************************************/
        !          64084: 
        !          64085: #ifdef SYSV
        !          64086: setupline()
        !          64087: 
        !          64088: {
        !          64089: 
        !          64090:     struct termio      termio;
        !          64091: 
        !          64092: /*
        !          64093:  *
        !          64094:  * Line initialization for SYSV. For now if no line is given (ie. line == NULL )
        !          64095:  * we continue on as before using stdout as ttyi and ttyo. Doesn't work when we're
        !          64096:  * running in interactive mode or forcing stuff that comes back from the printer
        !          64097:  * to stdout. Both cases are now caught by a test that's been added to routine
        !          64098:  * initialize(). The change is primarily for the version of lp that's available
        !          64099:  * with SVR3.2.
        !          64100:  *
        !          64101:  */
        !          64102: 
        !          64103: #ifdef DKHOST
        !          64104:     if ( line != NULL && *line != '/' )  {
        !          64105:        if ( strncmp(line, "DK:", 3) == 0 )
        !          64106:            line += 3;
        !          64107:        dkhost_connect();
        !          64108: #ifdef DKSTREAMS
        !          64109:        if ( ioctl(ttyi, I_PUSH, DKSTREAMS) == -1 )
        !          64110:            error(FATAL, "ioctl error - %s", DKSTREAMS);
        !          64111:        if ( ioctl(ttyi, I_PUSH, "ldterm") == -1 )
        !          64112:            error(FATAL, "ioctl error - ldterm");
        !          64113: #endif
        !          64114:     } else
        !          64115: #endif
        !          64116: 
        !          64117:     if ( line == NULL )
        !          64118:        ttyi = fileno(stdout);
        !          64119:     else if ( (ttyi = open(line, O_RDWR)) == -1 )
        !          64120:        error(FATAL, "can't open %s", line);
        !          64121: 
        !          64122:     if ( (ttyo = dup(ttyi)) == -1 )
        !          64123:        error(FATAL, "can't dup file descriptor for %s", line);
        !          64124: 
        !          64125:     if ( stopbits == 1 )
        !          64126:        stopbits = 0;
        !          64127:     else stopbits = CSTOPB;
        !          64128: 
        !          64129:     if ( fcntl(ttyi, F_SETFL, O_NDELAY) == -1 )
        !          64130:        error(FATAL, "fcntl error - F_SETFL");
        !          64131: 
        !          64132:     if ( ioctl(ttyi, TCGETA, &termio) == -1 )
        !          64133:        error(FATAL, "ioctl error - TCGETA");
        !          64134: 
        !          64135:     termio.c_iflag = IXON | IGNCR;
        !          64136:     termio.c_oflag = 0;
        !          64137:     termio.c_cflag = HUPCL | CREAD | CS8 | stopbits | baudrate;
        !          64138:     termio.c_lflag = 0;
        !          64139:     termio.c_cc[VMIN] = termio.c_cc[VTIME] = 0;
        !          64140: 
        !          64141:     if ( ioctl(ttyi, TCSETA, &termio) == -1 )
        !          64142:        error(FATAL, "ioctl error - TCSETA");
        !          64143: 
        !          64144:     if ( ioctl(ttyi, TCFLSH, 2) == -1 )
        !          64145:        error(FATAL, "ioctl error - TCFLSH");
        !          64146: 
        !          64147:     fp_ttyi = fdopen(ttyi, "r");
        !          64148: 
        !          64149: }   /* End of setupline */
        !          64150: 
        !          64151: /*****************************************************************************/
        !          64152: 
        !          64153: resetline()
        !          64154: 
        !          64155: {
        !          64156: 
        !          64157:     int                        flags;          /* for turning O_NDELAY off */
        !          64158:     struct termio      termio;         /* so we can reset flow control */
        !          64159: 
        !          64160: /*
        !          64161:  *
        !          64162:  * Only used if we're running the program as separate read and write processes.
        !          64163:  * Called from split() after the initial connection has been made and returns
        !          64164:  * TRUE if two processes should work. Don't know if the O_NDELAY stuff is really
        !          64165:  * needed, but setting c_cc[VMIN] to 1 definitely is. If we leave it be (as a 0)
        !          64166:  * the read in readline() won't block!
        !          64167:  *
        !          64168:  */
        !          64169: 
        !          64170:     if ( (flags = fcntl(ttyi, F_GETFL, 0)) == -1 )
        !          64171:        error(FATAL, "fcntl error - F_GETFL");
        !          64172: 
        !          64173:     flags &= ~O_NDELAY;
        !          64174: 
        !          64175:     if ( fcntl(ttyi, F_SETFL, flags) == -1 )
        !          64176:        error(FATAL, "fcntl error - F_SETFL");
        !          64177: 
        !          64178:     if ( ioctl(ttyi, TCGETA, &termio) == -1 )
        !          64179:        error(FATAL, "ioctl error - TCGETA");
        !          64180: 
        !          64181:     termio.c_iflag &= ~IXANY;
        !          64182:     termio.c_iflag |= IXON | IXOFF;
        !          64183:     termio.c_cc[VMIN] = 1;
        !          64184:     termio.c_cc[VTIME] = 0;
        !          64185: 
        !          64186:     if ( ioctl(ttyi, TCSETA, &termio) == -1 )
        !          64187:        error(FATAL, "ioctl error - TCSETA");
        !          64188: 
        !          64189:     return(TRUE);
        !          64190: 
        !          64191: }   /* End of resetline */
        !          64192: 
        !          64193: /*****************************************************************************/
        !          64194: 
        !          64195: setupstdin(mode)
        !          64196: 
        !          64197:     int                mode;                   /* what to do with stdin settings */
        !          64198: 
        !          64199: {
        !          64200: 
        !          64201:     struct termio              termio;
        !          64202: 
        !          64203:     static int                 saved = FALSE;
        !          64204:     static struct termio       oldtermio;
        !          64205: 
        !          64206: /*
        !          64207:  *
        !          64208:  * Save (mode = 0), reset (mode = 1), or restore (mode = 2) the tty settings for
        !          64209:  * stdin. Expect something like raw mode with no echo will be set up. Explicit
        !          64210:  * code to ensure blocking reads probably isn't needed because blocksize is set
        !          64211:  * to 1 when we're in interactive mode, but I've included it anyway.
        !          64212:  *
        !          64213:  */
        !          64214: 
        !          64215:     if ( interactive == TRUE )
        !          64216:        switch ( mode )  {
        !          64217:            case 0:
        !          64218:                if ( isatty(0) != 1 )
        !          64219:                    error(FATAL, "stdin not a terminal - can't run interactive mode");
        !          64220:                if ( ioctl(0, TCGETA, &oldtermio) == -1 )
        !          64221:                    error(FATAL, "can't save terminal settings");
        !          64222:                saved = TRUE;
        !          64223:                break;
        !          64224: 
        !          64225:            case 1:
        !          64226:                termio = oldtermio;
        !          64227:                termio.c_lflag &= ~(ICANON | ECHO | ECHOE | ECHOK | ECHONL);
        !          64228:                termio.c_cc[VMIN] = 1;
        !          64229:                termio.c_cc[VTIME] = 0;
        !          64230:                ioctl(0, TCSETA, &termio);
        !          64231:                break;
        !          64232: 
        !          64233:            case 2:
        !          64234:                if ( saved == TRUE )
        !          64235:                    ioctl(0, TCSETA, &oldtermio);
        !          64236:                break;
        !          64237:        }   /* End switch */
        !          64238: 
        !          64239: }   /* End of setupstdin */
        !          64240: 
        !          64241: /*****************************************************************************/
        !          64242: 
        !          64243: readline()
        !          64244: 
        !          64245: {
        !          64246: 
        !          64247:     int                n;                      /* read() return value */
        !          64248:     int                ch;                     /* for interactive mode */
        !          64249: 
        !          64250:     static int tries = 0;              /* consecutive times read returned 0 */
        !          64251: 
        !          64252: /*
        !          64253:  *
        !          64254:  * Reads characters coming back from the printer on ttyi up to a newline (or EOF)
        !          64255:  * or until no more characters are available. Characters are put in mesg[], the
        !          64256:  * string is terminated with '\0' when we're done with a line and TRUE is returned
        !          64257:  * to the caller. If complete line wasn't available FALSE is returned. Interactive
        !          64258:  * mode should loop here forever, except during start(), echoing characters to
        !          64259:  * stdout. If it happens to leave FALSE should be returned. The non-blocking read
        !          64260:  * gets us out until split() is called.
        !          64261:  *
        !          64262:  * Some users (apparently just on 3B2 DKHOST systems) have had problems with the
        !          64263:  * two process implementation that's forced me to kludge things up some. When a
        !          64264:  * printer (on those systems) is turned off while postio is transmitting files
        !          64265:  * the write process hangs in writeblock() (postio.c) - it's typically in the
        !          64266:  * middle of a write() call, while the read() call (below) continually returns 0.
        !          64267:  * In the original code readline() returned FALSE when read() returned 0 and we
        !          64268:  * get into a loop that never ends - because the write process is hung. In the
        !          64269:  * one process implementation having read return 0 is legitimate because the line
        !          64270:  * is opened for no delay, but with two processes the read() blocks and a return
        !          64271:  * value of 0 should never occur. From my point of view the real problem is that
        !          64272:  * the write() call hangs on 3B2 DKHOST systems and apparently doesn't anywhere
        !          64273:  * else. If the write returned anything less than or equal to 0 writeblock() would
        !          64274:  * shut things down. The kludge I've implemented counts the number of consecutive
        !          64275:  * times read() returns a 0 and if it exceeds a limit (100) the read process will
        !          64276:  * shut things down. In fact one return of 0 from read() when we're in the two
        !          64277:  * process mode is undoubtedly sufficient and no counting should be necessary!!!
        !          64278:  * Moving the check to getstatus() should also work and is probably where things
        !          64279:  * belong.
        !          64280:  *
        !          64281:  */
        !          64282: 
        !          64283:     if ( interactive == FALSE )  {
        !          64284:        while ( (n = read(ttyi, ptr, 1)) != 0 )  {
        !          64285:            if ( n < 0 )
        !          64286:                if ( errno == EINTR )
        !          64287:                    continue;
        !          64288:                else error(FATAL, "error reading %s", line);
        !          64289:            tries = 0;
        !          64290:            if ( *ptr == '\n' || *ptr == '\004' || ptr >= endmesg )  {
        !          64291:                *(ptr+1) = '\0';
        !          64292:                if ( *ptr == '\004' )
        !          64293:                    strcpy(ptr, "%%[ status: endofjob ]%%\n");
        !          64294:                ptr = mesg;
        !          64295:                return(TRUE);
        !          64296:            }   /* End if */
        !          64297:            ptr++;
        !          64298:        }   /* End while */
        !          64299:        if ( canread == TRUE && canwrite == FALSE )     /* read process kludge */
        !          64300:            if ( ++tries > 100 )
        !          64301:                error(FATAL, "printer appears to be offline - shutting down");
        !          64302:        return(FALSE);
        !          64303:     }  /* End if */
        !          64304: 
        !          64305:     if ( canwrite == TRUE )            /* don't block during start() */
        !          64306:        return(FALSE);
        !          64307: 
        !          64308:     while ( (ch = getc(fp_ttyi)) != EOF )
        !          64309:        putc(ch, stdout);
        !          64310:     return(FALSE);
        !          64311: 
        !          64312: }   /* End of readline */
        !          64313: #endif
        !          64314: 
        !          64315: /*****************************************************************************/
        !          64316: 
        !          64317: #ifdef V9
        !          64318: #include <ipc.h>
        !          64319: 
        !          64320: char   tbuf[256];                      /* temporary input buffer */
        !          64321: char   *nptr = tbuf;                   /* next character comes from here */
        !          64322: char   *eptr = tbuf;                   /* one past the last character in tbuf */
        !          64323: 
        !          64324: setupline()
        !          64325: 
        !          64326: {
        !          64327: 
        !          64328:     struct sgttyb      sgtty;
        !          64329:     struct ttydevb     ttydev;         /* for setting up the line */
        !          64330:     static struct tchars       tchar = { '\377',       /* interrupt */
        !          64331:                                          '\377',       /* quit */
        !          64332:                                          '\021',       /* start output */
        !          64333:                                          '\023',       /* stop output */
        !          64334:                                          '\377',       /* end-of-file */
        !          64335:                                          '\377'        /* input delimiter */
        !          64336:                                        };
        !          64337: 
        !          64338: /*
        !          64339:  *
        !          64340:  * Line initialization for V9.
        !          64341:  *
        !          64342:  */
        !          64343: 
        !          64344:     if ( line == NULL )  {
        !          64345:        ttyi = ttyo = 1;
        !          64346:        return;
        !          64347:     }  /* End if */
        !          64348:     alarm(120);                        /* watch for hanging opens */
        !          64349:     if ( line[0] == '/' ) {
        !          64350:        if ( (ttyi = open(line, O_RDWR)) == -1 )
        !          64351:        error(FATAL, "can't open %s", line);
        !          64352:     } else if ((ttyi = ipcopen(ipcpath(line, "dk", 0), "")) < 0) {
        !          64353:                sleep(5);       /* wait for Datakit to hangup */
        !          64354:                if ((ttyi = ipcopen(ipcpath(line, "dk", 0), "")) < 0) {
        !          64355:                        fprintf(stderr, "%s", errstr);
        !          64356:                        error(FATAL, "can't ipcopen %s", line);
        !          64357:                }
        !          64358:     }
        !          64359:     alarm(0);
        !          64360: 
        !          64361:     if ( (ttyo = dup(ttyi)) == -1 )
        !          64362:        error(FATAL, "can't dup file descriptor for %s", line);
        !          64363: 
        !          64364:     if ( ioctl(ttyi, FIOPUSHLD, &tty_ld) == -1 )
        !          64365:        error(FATAL, "ioctl error - FIOPUSHLD");
        !          64366: 
        !          64367:     if ( ioctl(ttyi, TIOCGDEV, &ttydev) == -1 )
        !          64368:        error(FATAL, "ioctl error - TIOCGDEV");
        !          64369: 
        !          64370:     if ( ioctl(ttyi, TIOCGETP, &sgtty) == -1 )
        !          64371:        error(FATAL, "ioctl error - TIOCGETP");
        !          64372: 
        !          64373:     sgtty.sg_flags &= ~ECHO;
        !          64374:     sgtty.sg_flags &= ~CRMOD;
        !          64375:     sgtty.sg_flags |= CBREAK;
        !          64376:     ttydev.ispeed = baudrate;
        !          64377:     ttydev.ospeed = baudrate;
        !          64378: 
        !          64379:     if ( ioctl(ttyi, TIOCSDEV, &ttydev) == -1 )
        !          64380:        error(FATAL, "ioctl error - TIOCSDEV");
        !          64381: 
        !          64382:     if ( ioctl(ttyi, TIOCSETP, &sgtty) == -1 )
        !          64383:        error(FATAL, "ioctl error - TIOCSETP");
        !          64384: 
        !          64385:     if ( ioctl(ttyi, TIOCSETC, &tchar) == -1 )
        !          64386:        error(FATAL, "ioctl error - TIOCSETC");
        !          64387: 
        !          64388:     fp_ttyi = fdopen(ttyi, "r");
        !          64389: 
        !          64390: }   /* End of setupline */
        !          64391: 
        !          64392: /*****************************************************************************/
        !          64393: 
        !          64394: resetline()
        !          64395: 
        !          64396: {
        !          64397: 
        !          64398:     struct sgttyb      sgtty;
        !          64399: 
        !          64400: /*
        !          64401:  *
        !          64402:  * Only used if we're running the program as separate read and write processes.
        !          64403:  * Called from split() after the initial connection has been made and returns
        !          64404:  * TRUE if two processes should work. Haven't tested or even compiled the stuff
        !          64405:  * for separate read and write processes on Ninth Edition systems - no guarantees
        !          64406:  * even though we return TRUE!
        !          64407:  *
        !          64408:  */
        !          64409: 
        !          64410:     if ( ioctl(ttyi, TIOCGETP, &sgtty) == -1 )
        !          64411:        error(FATAL, "ioctl error - TIOCGETP");
        !          64412: 
        !          64413:     sgtty.sg_flags |= TANDEM;
        !          64414: 
        !          64415:     if ( ioctl(ttyi, TIOCSETP, &sgtty) == -1 )
        !          64416:        error(FATAL, "ioctl error - TIOCSETP");
        !          64417: 
        !          64418:     return(TRUE);
        !          64419: 
        !          64420: }   /* End of resetline */
        !          64421: 
        !          64422: /*****************************************************************************/
        !          64423: 
        !          64424: setupstdin(mode)
        !          64425: 
        !          64426:     int                mode;                   /* what to do with stdin settings */
        !          64427: 
        !          64428: {
        !          64429: 
        !          64430:     struct sgttyb              sgtty;
        !          64431: 
        !          64432:     static int                 saved = FALSE;
        !          64433:     static struct sgttyb       oldsgtty;
        !          64434: 
        !          64435: /*
        !          64436:  *
        !          64437:  * Save (mode = 0), reset (mode = 1), or restore (mode = 2) the tty settings for
        !          64438:  * stdin. Expect something like raw mode with no echo will be set up. Need to make
        !          64439:  * sure interrupt and quit still work - they're the only good way to exit when
        !          64440:  * we're running interactive mode. I haven't tested or even compiled this code
        !          64441:  * so there are no guarantees.
        !          64442:  *
        !          64443:  */
        !          64444: 
        !          64445:     if ( interactive == TRUE )
        !          64446:        switch ( mode )  {
        !          64447:            case 0:
        !          64448:                if ( ioctl(0, TIOCGETP, &oldsgtty) == -1 )
        !          64449:                    error(FATAL, "can't save terminal settings");
        !          64450:                saved = TRUE;
        !          64451:                break;
        !          64452: 
        !          64453:            case 1:
        !          64454:                sgtty = oldsgtty;
        !          64455:                sgtty.sg_flags &= ~ECHO;
        !          64456:                sgtty.sg_flags |= CBREAK;
        !          64457:                ioctl(0, TIOCSETP, &sgtty);
        !          64458:                break;
        !          64459: 
        !          64460:            case 2:
        !          64461:                if ( saved == TRUE )
        !          64462:                    ioctl(0, TIOCSETP, &oldsgtty);
        !          64463:                break;
        !          64464:        }   /* End switch */
        !          64465: 
        !          64466: }   /* End of setupstdin */
        !          64467: 
        !          64468: /*****************************************************************************/
        !          64469: 
        !          64470: readline()
        !          64471: 
        !          64472: {
        !          64473: 
        !          64474:     int                n;                      /* read() return value */
        !          64475:     int                ch;                     /* for interactive mode */
        !          64476: 
        !          64477: /*
        !          64478:  *
        !          64479:  * Reads characters coming back from the printer on ttyi up to a newline (or EOF)
        !          64480:  * and transfers each line to the mesg[] array. Everything available on ttyi is
        !          64481:  * initially stored in tbuf[] and a line at a time is transferred from there to
        !          64482:  * mesg[]. The string in mesg[] is terminated with a '\0' and TRUE is returned to
        !          64483:  * the caller when we find a newline, EOF, or reach the end of the mesg[] array.
        !          64484:  * If nothing is available on ttyi we return FALSE if a single process is being
        !          64485:  * used for reads and writes, while in the two process implementation we force a
        !          64486:  * one character read. Interactive mode loops here forever, except during start(),
        !          64487:  * echoing everything that comes back on ttyi to stdout. The performance of a
        !          64488:  * simple getc/putc loop for interactive mode was unacceptable when run under mux
        !          64489:  * and has been replaced by more complicated code. When layers wasn't involved
        !          64490:  * the getc/putc loop worked well.
        !          64491:  *
        !          64492:  */
        !          64493: 
        !          64494:     if ( interactive == FALSE )  {
        !          64495:        while ( 1 )  {
        !          64496:            while ( nptr < eptr )  {    /* grab characters from tbuf */
        !          64497:                *ptr = *nptr++;
        !          64498:                if ( *ptr == '\r' ) continue;
        !          64499:                if ( *ptr == '\n' || *ptr == '\004' || ptr >= endmesg )  {
        !          64500:                    *(ptr+1) = '\0';
        !          64501:                    if ( *ptr == '\004' )
        !          64502:                        strcpy(ptr, "%%[ status: endofjob ]%%\n");
        !          64503:                    ptr = mesg;
        !          64504:                    return(TRUE);
        !          64505:                }   /* End if */
        !          64506:                ++ptr;
        !          64507:            }   /* End for */
        !          64508: 
        !          64509:            nptr = eptr = tbuf;
        !          64510:            if ( ioctl(ttyi, FIONREAD, &n) < 0 )
        !          64511:                if ( errno == EINTR )
        !          64512:                    continue;
        !          64513:                else error(FATAL, "ioctl error - FIONREAD");
        !          64514:            if ( n <= 0 )
        !          64515:                if ( canwrite == TRUE )
        !          64516:                    return(FALSE);
        !          64517:            n = ((n < 1) ? 1 : ((n < sizeof(tbuf)) ? n : sizeof(tbuf)));
        !          64518:            if ( (n = read(ttyi, tbuf, n)) < 0 )
        !          64519:                if ( errno == EINTR )
        !          64520:                    continue;
        !          64521:                else error(FATAL, "error reading line %s", line);
        !          64522:            else eptr = nptr + n;
        !          64523:        }   /* End while */
        !          64524:     }  /* End if */
        !          64525: 
        !          64526:     if ( canwrite == TRUE )            /* don't block during start() */
        !          64527:        return(FALSE);
        !          64528: 
        !          64529:     while ( 1 )  {                     /* only interactive mode gets here */
        !          64530:        if ( ioctl(ttyi, FIONREAD, &n) < 0 )
        !          64531:            error(FATAL, "ioctl error - FIONREAD");
        !          64532:        n = ((n < 1) ? 1 : ((n < sizeof(tbuf)) ? n : sizeof(tbuf)));
        !          64533:        if ( (n = read(ttyi, tbuf, n)) < 0 )
        !          64534:            error(FATAL, "error reading line %s", line);
        !          64535:        else if ( n == 0 )              /* should not happen */
        !          64536:            error(FATAL, "end of file in interactive mode");
        !          64537:        if ( write(1, tbuf, n) != n )
        !          64538:            error(FATAL, "error writing to stdout");
        !          64539:     }  /* End while */
        !          64540: 
        !          64541:     return(FALSE);
        !          64542: 
        !          64543: }   /* End of readline */
        !          64544: #endif
        !          64545: 
        !          64546: /*****************************************************************************/
        !          64547: 
        !          64548: #ifdef BSD4_2
        !          64549: setupline()
        !          64550: 
        !          64551: {
        !          64552: 
        !          64553:     struct sgttyb      sgtty;
        !          64554:     static struct tchars       tchar = { '\377',       /* interrupt */
        !          64555:                                          '\377',       /* quit */
        !          64556:                                          '\021',       /* start output */
        !          64557:                                          '\023',       /* stop output */
        !          64558:                                          '\377',       /* end-of-file */
        !          64559:                                          '\377'        /* input delimiter */
        !          64560:                                        };
        !          64561:     long       lmodes;
        !          64562:     int                disc = NTTYDISC;
        !          64563: 
        !          64564: /*
        !          64565:  *
        !          64566:  * Line initialization for BSD4_2. As in the System V code, if no line is given
        !          64567:  * (ie. line == NULL) we continue on as before using stdout as ttyi and ttyo.
        !          64568:  *
        !          64569:  */
        !          64570: 
        !          64571:     if ( line == NULL )
        !          64572:        ttyi = fileno(stdout);
        !          64573:     else if ( (ttyi = open(line, O_RDWR)) == -1 )
        !          64574:        error(FATAL, "can't open %s", line);
        !          64575: 
        !          64576:     if ( (ttyo = dup(ttyi)) == -1 )
        !          64577:        error(FATAL, "can't dup file descriptor for %s", line);
        !          64578: 
        !          64579:     if (ioctl(ttyi, TIOCSETD, &disc) == -1 )
        !          64580:        error(FATAL, "ioctl error - TIOCSETD");
        !          64581: 
        !          64582:     if ( ioctl(ttyi, TIOCGETP, &sgtty) == -1 )
        !          64583:        error(FATAL, "ioctl error - TIOCGETP");
        !          64584: 
        !          64585:     if ( ioctl(ttyi, TIOCLGET, &lmodes) == -1 )
        !          64586:        error(FATAL, "ioctl error - TIOCLGET");
        !          64587: 
        !          64588:     sgtty.sg_flags &= ~ECHO;
        !          64589:     sgtty.sg_flags &= ~CRMOD;
        !          64590:     sgtty.sg_flags |= CBREAK;
        !          64591:     sgtty.sg_ispeed = baudrate;
        !          64592:     sgtty.sg_ospeed = baudrate;
        !          64593:     lmodes |= LDECCTQ;
        !          64594: 
        !          64595:     if ( ioctl(ttyi, TIOCSETP, &sgtty) == -1 )
        !          64596:        error(FATAL, "ioctl error - TIOCSETP");
        !          64597: 
        !          64598:     if ( ioctl(ttyi, TIOCSETC, &tchar) == -1 )
        !          64599:        error(FATAL, "ioctl error - TIOCSETC");
        !          64600: 
        !          64601:     if ( ioctl(ttyi, TIOCLSET, &lmodes) == -1 )
        !          64602:        error(FATAL, "ioctl error - TIOCLSET");
        !          64603: 
        !          64604:     fp_ttyi = fdopen(ttyi, "r");
        !          64605: 
        !          64606: }   /* End of setupline */
        !          64607: 
        !          64608: /*****************************************************************************/
        !          64609: 
        !          64610: resetline()
        !          64611: 
        !          64612: {
        !          64613: 
        !          64614:     struct sgttyb      sgtty;
        !          64615: 
        !          64616: /*
        !          64617:  *
        !          64618:  * Only used if we're running the program as separate read and write processes.
        !          64619:  * Called from split() after the initial connection has been made and returns
        !          64620:  * TRUE if two processes should work. Haven't tested or even compiled the stuff
        !          64621:  * for separate read and write processes on Berkeley systems - no guarantees
        !          64622:  * even though we return TRUE!
        !          64623:  *
        !          64624:  */
        !          64625: 
        !          64626:     if ( ioctl(ttyi, TIOCGETP, &sgtty) == -1 )
        !          64627:        error(FATAL, "ioctl error - TIOCGETP");
        !          64628: 
        !          64629:     sgtty.sg_flags |= TANDEM;
        !          64630: 
        !          64631:     if ( ioctl(ttyi, TIOCSETP, &sgtty) == -1 )
        !          64632:        error(FATAL, "ioctl error - TIOCSETP");
        !          64633: 
        !          64634:     return(TRUE);
        !          64635: 
        !          64636: }   /* End of resetline */
        !          64637: 
        !          64638: /*****************************************************************************/
        !          64639: 
        !          64640: setupstdin(mode)
        !          64641: 
        !          64642:     int                mode;                   /* what to do with stdin settings */
        !          64643: 
        !          64644: {
        !          64645: 
        !          64646:     struct sgttyb              sgtty;
        !          64647: 
        !          64648:     static int                 saved = FALSE;
        !          64649:     static struct sgttyb       oldsgtty;
        !          64650: 
        !          64651: /*
        !          64652:  *
        !          64653:  * Save (mode = 0), reset (mode = 1), or restore (mode = 2) the tty settings for
        !          64654:  * stdin. Expect something like raw mode with no echo will be set up. Need to make
        !          64655:  * sure interrupt and quit still work - they're the only good way to exit when
        !          64656:  * we're running interactive mode. I haven't tested or even compiled this code
        !          64657:  * so there are no guarantees.
        !          64658:  *
        !          64659:  */
        !          64660: 
        !          64661:     if ( interactive == TRUE )
        !          64662:        switch ( mode )  {
        !          64663:            case 0:
        !          64664:                if ( isatty(0) != 1 )
        !          64665:                    error(FATAL, "stdin not a terminal - can't run interactive mode");
        !          64666:                if ( ioctl(0, TIOCGETP, &oldsgtty) == -1 )
        !          64667:                    error(FATAL, "can't save terminal settings");
        !          64668:                saved = TRUE;
        !          64669:                break;
        !          64670: 
        !          64671:            case 1:
        !          64672:                sgtty = oldsgtty;
        !          64673:                sgtty.sg_flags &= ~ECHO;
        !          64674:                sgtty.sg_flags |= CBREAK;
        !          64675:                ioctl(0, TIOCSETP, &sgtty);
        !          64676:                break;
        !          64677: 
        !          64678:            case 2:
        !          64679:                if ( saved == TRUE )
        !          64680:                    ioctl(0, TIOCSETP, &oldsgtty);
        !          64681:                break;
        !          64682:        }   /* End switch */
        !          64683: 
        !          64684: }   /* End of setupstdin */
        !          64685: 
        !          64686: /*****************************************************************************/
        !          64687: 
        !          64688: readline()
        !          64689: 
        !          64690: {
        !          64691: 
        !          64692:     int                n;                      /* read() return value */
        !          64693:     int                ch;                     /* for interactive mode */
        !          64694: 
        !          64695: /*
        !          64696:  *
        !          64697:  * Reads characters coming back from the printer on ttyo up to a newline (or EOF)
        !          64698:  * or until no more characters are available. Characters are put in mesg[], the
        !          64699:  * string is terminated with '\0' when we're done with a line and TRUE is returned
        !          64700:  * to the caller. If complete line wasn't available FALSE is returned. Interactive
        !          64701:  * mode should loop here forever, except during start(), echoing characters to
        !          64702:  * stdout. If it happens to leave FALSE should be returned. Probably should read
        !          64703:  * everything available on ttyi into a temporary buffer and work from there rather
        !          64704:  * than reading one character at a time.
        !          64705:  *
        !          64706:  */
        !          64707: 
        !          64708:     if ( interactive == FALSE )  {
        !          64709:        while ( 1 )  {
        !          64710:            if ( ioctl(ttyi, FIONREAD, &n) < 0 )
        !          64711:                if ( errno == EINTR )
        !          64712:                    continue;
        !          64713:                else error(FATAL, "ioctl error - FIONREAD");
        !          64714:            if ( n <= 0 )
        !          64715:                if ( canwrite == TRUE )
        !          64716:                    return(FALSE);
        !          64717:                else n = 1;
        !          64718:            for ( ; n > 0; n-- )  {
        !          64719:                /*if ( read(ttyi, ptr, 1) < 0 )*/
        !          64720:                if ( (*ptr = getc(fp_ttyi)) == EOF )
        !          64721:                    if ( errno == EINTR )
        !          64722:                        continue;
        !          64723:                    else error(FATAL, "error reading %s", line);
        !          64724:                if ( *ptr == '\r' ) continue;
        !          64725:                if ( *ptr == '\n' || *ptr == '\004' || ptr >= endmesg )  {
        !          64726:                    *(ptr+1) = '\0';
        !          64727:                    if ( *ptr == '\004' )
        !          64728:                        strcpy(ptr, "%%[ status: endofjob ]%%\n");
        !          64729:                    ptr = mesg;
        !          64730:                    return(TRUE);
        !          64731:                }   /* End if */
        !          64732:                ++ptr;
        !          64733:            }   /* End for */
        !          64734:        }   /* End while */
        !          64735:     }  /* End if */
        !          64736: 
        !          64737:     if ( canwrite == TRUE )            /* don't block during start() */
        !          64738:        return(FALSE);
        !          64739: 
        !          64740:     while ( (ch = getc(fp_ttyi)) != EOF )
        !          64741:        putc(ch, stdout);
        !          64742:     return(FALSE);
        !          64743: 
        !          64744: }   /* End of readline */
        !          64745: 
        !          64746: /*****************************************************************************/
        !          64747: 
        !          64748: /*     @(#)strspn.c    1.2     */
        !          64749: /*LINTLIBRARY*/
        !          64750: /*
        !          64751:  * Return the number of characters in the maximum leading segment
        !          64752:  * of string which consists solely of characters from charset.
        !          64753:  */
        !          64754: int
        !          64755: strspn(string, charset)
        !          64756: char   *string;
        !          64757: register char  *charset;
        !          64758: {
        !          64759:        register char *p, *q;
        !          64760: 
        !          64761:        for(q=string; *q != '\0'; ++q) {
        !          64762:                for(p=charset; *p != '\0' && *p != *q; ++p)
        !          64763:                        ;
        !          64764:                if(*p == '\0')
        !          64765:                        break;
        !          64766:        }
        !          64767:        return(q-string);
        !          64768: }
        !          64769: 
        !          64770: /*     @(#)strpbrk.c   1.2     */
        !          64771: /*LINTLIBRARY*/
        !          64772: /*
        !          64773:  * Return ptr to first occurance of any character from `brkset'
        !          64774:  * in the character string `string'; NULL if none exists.
        !          64775:  */
        !          64776: 
        !          64777: char *
        !          64778: strpbrk(string, brkset)
        !          64779: register char *string, *brkset;
        !          64780: {
        !          64781:        register char *p;
        !          64782: 
        !          64783:        do {
        !          64784:                for(p=brkset; *p != '\0' && *p != *string; ++p)
        !          64785:                        ;
        !          64786:                if(*p != '\0')
        !          64787:                        return(string);
        !          64788:        }
        !          64789:        while(*string++);
        !          64790:        return((char*)0);
        !          64791: }
        !          64792: 
        !          64793: /*     @(#)strtok.c    1.2     */
        !          64794: /*     3.0 SID #       1.2     */
        !          64795: /*LINTLIBRARY*/
        !          64796: /*
        !          64797:  * uses strpbrk and strspn to break string into tokens on
        !          64798:  * sequentially subsequent calls.  returns NULL when no
        !          64799:  * non-separator characters remain.
        !          64800:  * `subsequent' calls are calls with first argument NULL.
        !          64801:  */
        !          64802: 
        !          64803: 
        !          64804: extern int strspn();
        !          64805: extern char *strpbrk();
        !          64806: 
        !          64807: char *
        !          64808: strtok(string, sepset)
        !          64809: char   *string, *sepset;
        !          64810: {
        !          64811:        register char   *p, *q, *r;
        !          64812:        static char     *savept;
        !          64813: 
        !          64814:        /*first or subsequent call*/
        !          64815:        p = (string == (char*)0)? savept: string;
        !          64816: 
        !          64817:        if(p == 0)              /* return if no tokens remaining */
        !          64818:                return((char*)0);
        !          64819: 
        !          64820:        q = p + strspn(p, sepset);      /* skip leading separators */
        !          64821: 
        !          64822:        if(*q == '\0')          /* return if no tokens remaining */
        !          64823:                return((char*)0);
        !          64824: 
        !          64825:        if((r = strpbrk(q, sepset)) == (char*)0)        /* move past token */
        !          64826:                savept = 0;     /* indicate this is last token */
        !          64827:        else {
        !          64828:                *r = '\0';
        !          64829:                savept = ++r;
        !          64830:        }
        !          64831:        return(q);
        !          64832: }
        !          64833: #endif
        !          64834: 
        !          64835: /*****************************************************************************/
        !          64836: 
        !          64837: #ifdef DKHOST
        !          64838: 
        !          64839: #ifndef DKSTREAMS
        !          64840: short  dkrmode[3] = {DKR_TIME, 0, 0};
        !          64841: #endif
        !          64842: 
        !          64843: dkhost_connect()
        !          64844: 
        !          64845: {
        !          64846: 
        !          64847:     int                ofd;                    /* for saving and restoring stderr */
        !          64848:     int                dfd;
        !          64849:     int                retrytime = 5;
        !          64850: 
        !          64851: /*
        !          64852:  *
        !          64853:  * Tries to connect to a Datakit destination. The extra stuff I've added to save
        !          64854:  * and later restore stderr is primarily for our spooling setup at Murray Hill.
        !          64855:  * postio is usually called with stderr directed to a file that will be returned
        !          64856:  * to the user when the job finishes printing. Problems encountered by dkdial(),
        !          64857:  * like busy messages, go to stderr but don't belong in the user's mail. They'll
        !          64858:  * be temporarily directed to the log file. After we've connected stderr will be
        !          64859:  * restored.
        !          64860:  *
        !          64861:  */
        !          64862: 
        !          64863:     if ( *line == '\0' )
        !          64864:        error(FATAL, "incomplete Datakit line");
        !          64865: 
        !          64866:     if ( fp_log != NULL && fp_log != stderr )  {       /* redirect dkdial errors */
        !          64867:        ofd = dup(2);
        !          64868:        close(2);
        !          64869:        dup(fileno(fp_log));
        !          64870:     }  /* End if */
        !          64871: 
        !          64872:     while ( (dfd = ttyi = dkdial(line)) < 0 )  {
        !          64873:        if ( retrytime < 0 )
        !          64874:            error(FATAL, "can't connect to %s", line);
        !          64875:        sleep(retrytime++);
        !          64876:        if ( retrytime > 60 )
        !          64877:            retrytime = 60;
        !          64878:     }  /* End while */
        !          64879: 
        !          64880:     if ( fp_log != NULL && fp_log != stderr )  {       /* restore stderr */
        !          64881:        close(2);
        !          64882:        dup(ofd);
        !          64883:        close(ofd);
        !          64884:     }  /* End if */
        !          64885: 
        !          64886: #ifndef DKSTREAMS
        !          64887:     if ( ioctl(ttyi, DIOCRMODE, dkrmode) == -1 )
        !          64888:        error(FATAL, "ioctl error - DIOCRMODE");
        !          64889: 
        !          64890: #ifdef DIOURPWD
        !          64891:     if ( window_size > 0 ) {
        !          64892:        short   dkparm[3];
        !          64893: 
        !          64894:        dkparm[0] = dkminor(ttyi);
        !          64895:        dkparm[1] = 1;
        !          64896:        dkparm[2] = window_size;
        !          64897:        if ( ioctl(ttyi, DIOURPWD, dkparm) < 0 || ioctl(ttyi, DIOCFLUSH, 0) < 0 )
        !          64898:            error(NON_FATAL, "WSA failed");
        !          64899:     }  /* End if */
        !          64900: #endif
        !          64901: 
        !          64902:     line = dtnamer(dkminor(ttyi));
        !          64903: 
        !          64904:     if ( (ttyi = open(line, O_RDWR)) == -1 )
        !          64905:        error(FATAL, "can't open %s", line);
        !          64906: 
        !          64907:     close(dfd);
        !          64908: #endif
        !          64909: 
        !          64910: }   /* End of dkhost_connect */
        !          64911: #endif
        !          64912: 
        !          64913: /*****************************************************************************/
        !          64914: 
        !          64915: 0707070014231405061006440057030057030000011222050522627503600003000000002561post.src/postio/ifdef.h/*
        !          64916:  *
        !          64917:  * Conditional compilation definitions needed in ifdef.c and postio.c.
        !          64918:  *
        !          64919:  */
        !          64920: 
        !          64921: #ifdef SYSV
        !          64922: #include <termio.h>
        !          64923: 
        !          64924: #ifdef DKSTREAMS
        !          64925: #include <sys/stream.h>
        !          64926: #include <sys/stropts.h>
        !          64927: #endif
        !          64928: 
        !          64929: #endif
        !          64930: 
        !          64931: #ifdef V9
        !          64932: #include <sys/filio.h>
        !          64933: #include <sys/ttyio.h>
        !          64934: 
        !          64935: extern int     tty_ld;
        !          64936: #endif
        !          64937: 
        !          64938: #ifdef BSD4_2
        !          64939: #include <sgtty.h>
        !          64940: #include <sys/time.h>
        !          64941: #include <errno.h>
        !          64942: 
        !          64943: #define FD_ZERO(s) (s) = 0
        !          64944: #define FD_SET(n,s) (s) |= 1 << (n)
        !          64945: 
        !          64946: extern int     errno;
        !          64947: #endif
        !          64948: 
        !          64949: #ifdef DKHOST
        !          64950: #include <dk.h>
        !          64951: #include <sysexits.h>
        !          64952: 
        !          64953: extern char    *dtnamer();
        !          64954: extern int     dkminor();
        !          64955: #endif
        !          64956: 
        !          64957: /*
        !          64958:  *
        !          64959:  * External variable declarations - most (if not all) are defined in postio.c and
        !          64960:  * needed by the routines in ifdef.c.
        !          64961:  *
        !          64962:  */
        !          64963: 
        !          64964: extern char    *line;                  /* printer is on this line */
        !          64965: extern int     ttyi;                   /* input */
        !          64966: extern int     ttyo;                   /* and output file descriptors */
        !          64967: extern FILE    *fp_log;                /* just for DKHOST stuff */
        !          64968: 
        !          64969: extern char    mesg[];                 /* exactly what came back on ttyi */
        !          64970: extern char    *endmesg;               /* one in front of last free slot in mesg */
        !          64971: extern int     next;                   /* next character goes in mesg[next] */
        !          64972: 
        !          64973: extern short   baudrate;               /* printer is running at this speed */
        !          64974: extern int     stopbits;               /* and expects this many stop bits */
        !          64975: extern int     interactive;            /* TRUE for interactive mode */
        !          64976: 
        !          64977: extern int     whatami;                /* a READ or WRITE process - or both */
        !          64978: extern int     canread;                /* allows reads */
        !          64979: extern int     canwrite;               /* and writes if TRUE */
        !          64980: 
        !          64981: 0707070014231405071006440057030057030000011223600522627503600003100000015777post.src/postio/postio.1.TH POSTIO 1 "DWB 3.2"
        !          64982: .SH NAME
        !          64983: .B postio
        !          64984: \- serial interface for PostScript printers
        !          64985: .SH SYNOPSIS
        !          64986: \*(mBpostio\f1
        !          64987: .OP \-l line
        !          64988: .OP "" options []
        !          64989: .OP "" files []
        !          64990: .SH DESCRIPTION
        !          64991: .B postio
        !          64992: sends
        !          64993: .I files
        !          64994: to the PostScript printer attached to
        !          64995: .IR line .
        !          64996: If no
        !          64997: .I files
        !          64998: are specified the standard input is sent.
        !          64999: The first group of
        !          65000: .I options
        !          65001: should be sufficient for most applications:
        !          65002: .TP 0.75i
        !          65003: .OP \-b speed
        !          65004: Transmit data over
        !          65005: .I line
        !          65006: at baud rate
        !          65007: .I speed.
        !          65008: Recognized baud rates are 1200, 2400, 4800, 9600, and 19200.
        !          65009: The default
        !          65010: .I speed
        !          65011: is 9600 baud.
        !          65012: .TP
        !          65013: .OP \-c
        !          65014: Do not send
        !          65015: .MR ^C s
        !          65016: (interrupts) to the printer,
        !          65017: which means
        !          65018: .B postio
        !          65019: does not force a busy printer into the idle state.
        !          65020: .TP
        !          65021: .OP \-l line
        !          65022: Connect to printer attached to
        !          65023: .IR line .
        !          65024: In most cases there is no default and
        !          65025: .B postio
        !          65026: must be able to read and write
        !          65027: .IR line .
        !          65028: If
        !          65029: .I line
        !          65030: does not begin with
        !          65031: .MW /
        !          65032: it is treated as a Datakit destination.
        !          65033: .TP
        !          65034: .OP \-q
        !          65035: Prevents status queries while
        !          65036: .I files
        !          65037: are being sent to the printer.
        !          65038: When status queries are disabled a dummy message is appended
        !          65039: to the log file before each block is transmitted.
        !          65040: .TP
        !          65041: .OP \-B num
        !          65042: Set internal buffer size for reading and writing
        !          65043: .I files
        !          65044: to
        !          65045: .I num
        !          65046: bytes
        !          65047: (default is 2048 bytes).
        !          65048: .TP
        !          65049: .OP \-D
        !          65050: Enable debug mode.
        !          65051: Guarantees that everything read on
        !          65052: .I line
        !          65053: will be added to the log file (standard error by default).
        !          65054: .TP
        !          65055: .OP \-L file
        !          65056: Data received on
        !          65057: .I line
        !          65058: gets put in
        !          65059: .IR file .
        !          65060: The default log
        !          65061: .I file
        !          65062: is standard error.
        !          65063: Printer or status messages that do not indicate a change in state
        !          65064: are not normally written to
        !          65065: .I file
        !          65066: but can be forced out using the
        !          65067: .OP \-D
        !          65068: option.
        !          65069: .TP
        !          65070: .OP \-P string
        !          65071: Send
        !          65072: .I string
        !          65073: to the printer before any of the input files.
        !          65074: The default
        !          65075: .I string
        !          65076: is simple PostScript code that disables timeouts.
        !          65077: .TP
        !          65078: .OP \-R num
        !          65079: Run
        !          65080: .B postio
        !          65081: as a single process if
        !          65082: .I num
        !          65083: is 1 or as separate read and write processes if
        !          65084: .I num
        !          65085: is 2.
        !          65086: By default
        !          65087: .B postio
        !          65088: runs as a single process.
        !          65089: .PP
        !          65090: The next two
        !          65091: .I options
        !          65092: are provided for users who expect to run
        !          65093: .B postio
        !          65094: on their own.
        !          65095: Neither is suitable for use in spooler interface
        !          65096: programs:
        !          65097: .TP 0.35i
        !          65098: .OP \-i
        !          65099: Run the program in interactive mode.
        !          65100: Any
        !          65101: .I files
        !          65102: are sent first and followed by the standard input.
        !          65103: Forces separate read and write processes
        !          65104: and overrides many other options.
        !          65105: To exit interactive mode use your interrupt or quit character.
        !          65106: To get a friendly interactive connection with the printer type
        !          65107: .MW executive
        !          65108: on a line by itself.
        !          65109: .TP
        !          65110: .OP \-t
        !          65111: Data received on
        !          65112: .I line
        !          65113: and not recognized as printer or status information is written to
        !          65114: the standard output.
        !          65115: Forces separate read and write processes.
        !          65116: Convenient if you have a PostScript program that
        !          65117: will be returning useful data to the host.
        !          65118: .PP
        !          65119: The last option is not generally recommended and should only
        !          65120: be used if all else fails to provide a reliable connection:
        !          65121: .TP 0.35i
        !          65122: .OP \-S
        !          65123: Slow the transmission of data to the printer.
        !          65124: Severely limits throughput, runs as a single process,
        !          65125: disables the
        !          65126: .OP \-q
        !          65127: option, limits the internal buffer size to 1024 bytes,
        !          65128: can use an excessive amount of
        !          65129: .SM CPU
        !          65130: time, and does nothing in interactive mode.
        !          65131: .PP
        !          65132: Best performance is usually obtained by using
        !          65133: a large internal buffer
        !          65134: .OP -B "" ) (
        !          65135: and by running the program as separate read and write processes
        !          65136: .OP \-R2 "" ). (
        !          65137: Inability to fork the additional process causes
        !          65138: .B postio
        !          65139: to continue as a single read/write process.
        !          65140: When one process is used, only data sent to the printer is flow-controlled.
        !          65141: .PP
        !          65142: The options are not all mutually exclusive.
        !          65143: The
        !          65144: .OP \-i
        !          65145: option always wins, selecting its own settings for whatever is
        !          65146: needed to run interactive mode, independent of anything else
        !          65147: found on the command line.
        !          65148: Interactive mode runs as separate read and write processes
        !          65149: and few of the other
        !          65150: .I options
        !          65151: accomplish anything in the presence of the
        !          65152: .OP \-i
        !          65153: option.
        !          65154: The
        !          65155: .OP \-t
        !          65156: option needs a reliable two way connection to the printer and
        !          65157: therefore tries to force separate read and write processes.
        !          65158: The
        !          65159: .OP \-S
        !          65160: option relies on the status query mechanism, so
        !          65161: .OP \-q
        !          65162: is disabled and the program runs as a single process.
        !          65163: .PP
        !          65164: In most cases
        !          65165: .B postio
        !          65166: starts by making a connection to
        !          65167: .I line
        !          65168: and then attempts to force the printer into the
        !          65169: .SM IDLE
        !          65170: state by sending an appropriate sequence of
        !          65171: .MW ^T
        !          65172: (status query), 
        !          65173: .MW ^C
        !          65174: (interrupt), and
        !          65175: .MW ^D
        !          65176: (end of job) characters.
        !          65177: When the printer goes
        !          65178: .SM IDLE
        !          65179: .I files
        !          65180: are transmitted along with an occasional
        !          65181: .MW ^T
        !          65182: (unless the
        !          65183: .OP \-q
        !          65184: option was used).
        !          65185: After all the
        !          65186: .I files
        !          65187: are sent the program waits until it is reasonably sure the
        !          65188: job is complete.
        !          65189: Printer generated error messages received at any time
        !          65190: except while establishing the initial connection
        !          65191: (or when running interactive mode) cause
        !          65192: .B postio
        !          65193: to exit with a non-zero status.
        !          65194: In addition to being added to the log file, printer error messages
        !          65195: are also echoed to standard error.
        !          65196: .SH EXAMPLES
        !          65197: Run as a single process at 9600 baud and send
        !          65198: .I file1
        !          65199: and
        !          65200: .I file2
        !          65201: to the printer attached to
        !          65202: .MR /dev/tty01 :
        !          65203: .EX
        !          65204: postio -l /dev/tty01  \f2file1  file2
        !          65205: .EE
        !          65206: Same as above except two processes are used,
        !          65207: the internal buffer is set to 4096 bytes,
        !          65208: and data returned by the printer gets put in file
        !          65209: .MR log :
        !          65210: .EX
        !          65211: postio -R2 -B4096 -l/dev/tty01 -Llog  \f2file1  file2
        !          65212: .EE
        !          65213: Establish an interactive connection with the printer at Datakit
        !          65214: destination
        !          65215: .MR my/printer :
        !          65216: .EX
        !          65217: postio -i -l my/printer
        !          65218: .EE
        !          65219: Send file
        !          65220: .MW program
        !          65221: to the printer connected to
        !          65222: .MR /dev/tty22 ,
        !          65223: recover any data in file
        !          65224: .MR results ,
        !          65225: and put log messages in file
        !          65226: .MR log :
        !          65227: .EX
        !          65228: postio -t -l /dev/tty22 -L log program >results
        !          65229: .EE
        !          65230: .SH DIAGNOSTICS
        !          65231: A 0 exit status is returned if the files ran successfully.
        !          65232: System errors (e.g., ``can't open the line'') set the low order
        !          65233: bit in the exit status, while PostScript errors set bit 1.
        !          65234: An exit status of 2 usually means the printer
        !          65235: detected a PostScript error in the input
        !          65236: .IR files .
        !          65237: .SH WARNINGS
        !          65238: .PP
        !          65239: The input
        !          65240: .I files
        !          65241: are handled as a single PostScript job.
        !          65242: Sending several different jobs, each with their own internal
        !          65243: end of job mark
        !          65244: .RM ( ^D )
        !          65245: is not guaranteed to work properly.
        !          65246: .B postio
        !          65247: may quit before all the jobs have completed and could be restarted
        !          65248: before the last one finishes.
        !          65249: .PP
        !          65250: All the capabilities described above may not be available on every
        !          65251: machine or even across the different versions of
        !          65252: .SM UNIX
        !          65253: that are currently supported by the program.
        !          65254: For example, the code needed to connect to a Datakit destination may only
        !          65255: work on System\ V and may require that the
        !          65256: .SM DKHOST
        !          65257: software package be available at compile time.
        !          65258: .PP
        !          65259: There may be no default
        !          65260: .I line
        !          65261: so using
        !          65262: .OP \-l
        !          65263: option is strongly recommended.
        !          65264: If omitted
        !          65265: .B postio
        !          65266: may attempt to connect to the printer using the standard output.
        !          65267: If Datakit is involved the
        !          65268: .OP \-b
        !          65269: may be ineffective and attempts by
        !          65270: .B postio
        !          65271: to flow control data in both directions may not work.
        !          65272: The
        !          65273: .OP \-q
        !          65274: option can help if the printer is connected to \s-1RADIAN\s+1.
        !          65275: The
        !          65276: .OP \-S
        !          65277: option is not generally recommended and should only be used if
        !          65278: all else fails to establish a reliable connection.
        !          65279: .SH SEE ALSO
        !          65280: .BR buildtables (1),
        !          65281: .BR dpost (1),
        !          65282: .BR postdaisy (1),
        !          65283: .BR postdmd (1),
        !          65284: .BR postmd (1),
        !          65285: .BR postprint (1),
        !          65286: .BR postreverse (1),
        !          65287: .BR posttek (1),
        !          65288: .BR printfont (1)
        !          65289: 0707070014231405101006440057030057030000011224000522627503600003100000107251post.src/postio/postio.c/*
        !          65290:  *
        !          65291:  * postio - RS-232 serial interface for PostScript printers
        !          65292:  *
        !          65293:  * A simple program that manages input and output for PostScript printers. Much
        !          65294:  * has been added and changed from early versions of the program, but the basic
        !          65295:  * philosophy is still the same. Don't send real data until we're certain we've
        !          65296:  * connected to a PostScript printer that's in the idle state and try to hold the
        !          65297:  * connection until the job is completely done. It's more work than you might
        !          65298:  * expect is necessary, but should provide a reasonably reliable spooler interface
        !          65299:  * that can return error indications to the caller via the program's exit status.
        !          65300:  *
        !          65301:  * I've added code that will let you split the program into separate read/write
        !          65302:  * processes. Although it's not the default it should be useful if you have a file
        !          65303:  * that will be returning useful data from the printer. The two process stuff was
        !          65304:  * laid down on top of the single process code and both methods still work. The
        !          65305:  * implementation isn't as good as it could be, but didn't require many changes
        !          65306:  * to the original program (despite the fact that there are now many differences).
        !          65307:  *
        !          65308:  * By default the program still runs as a single process. The -R2 option forces
        !          65309:  * separate read and write processes after the intial connection is made. If you
        !          65310:  * want that as the default initialize splitme (below) to TRUE. In addition the
        !          65311:  * -t option that's used to force stuff not recognized as status reports to stdout
        !          65312:  * also tries to run as two processes (by setting splitme to TRUE). It will only
        !          65313:  * work if the required code (ie. resetline() in ifdef.c) has been implemented
        !          65314:  * for your Unix system. I've only tested the System V code.
        !          65315:  *
        !          65316:  * Code needed to support interactive mode has also been added, although again it's
        !          65317:  * not as efficient as it could be. It depends on the system dependent procedures
        !          65318:  * resetline() and setupstdin() (file ifdef.c) and for now is only guaranteed to
        !          65319:  * work on System V. Can be requested using the -i option.
        !          65320:  *
        !          65321:  * Quiet mode (-q option) is also new, but was needed for some printers connected
        !          65322:  * to RADIAN. If you're running in quiet mode no status requests will be sent to
        !          65323:  * the printer while files are being transmitted (ie. in send()).
        !          65324:  *
        !          65325:  * The program expects to receive printer status lines that look like,
        !          65326:  *
        !          65327:  *     %%[ status: idle; source: serial 25 ]%%
        !          65328:  *     %%[ status: waiting; source: serial 25 ]%%
        !          65329:  *     %%[ status: initializing; source: serial 25 ]%%
        !          65330:  *     %%[ status: busy; source: serial 25 ]%%
        !          65331:  *     %%[ status: printing; source: serial 25 ]%%
        !          65332:  *     %%[ status: PrinterError: out of paper; source: serial 25 ]%%
        !          65333:  *     %%[ status: PrinterError: no paper tray; source: serial 25 ]%%
        !          65334:  *
        !          65335:  * although this list isn't complete. Sending a '\024' (control T) character forces
        !          65336:  * the return of a status report. PostScript errors detected on the printer result
        !          65337:  * in the immediate transmission of special error messages that look like,
        !          65338:  *
        !          65339:  *     %%[ Error: undefined; OffendingCommand: xxx ]%%
        !          65340:  *     %%[ Flushing: rest of job (to end-of-file) will be ignored ]%%
        !          65341:  *
        !          65342:  * although we only use the Error and Flushing keywords. Finally conditions, like
        !          65343:  * being out of paper, result in other messages being sent back from the printer
        !          65344:  * over the communications line. Typical PrinterError messages look like,
        !          65345:  *
        !          65346:  *     %%[ PrinterError: out of paper; source: serial 25 ]%%
        !          65347:  *     %%[ PrinterError: paper jam; source: serial 25 ]%%
        !          65348:  *
        !          65349:  * although we only use the PrinterError keyword rather than trying to recognize
        !          65350:  * all possible printer errors.
        !          65351:  *
        !          65352:  * The implications of using one process and only flow controlling data going to
        !          65353:  * the printer are obvious. Job transmission should be reliable, but there can be
        !          65354:  * data loss in stuff sent back from the printer. Usually that only caused problems
        !          65355:  * with jobs designed to run on the printer and return useful data back over the
        !          65356:  * communications line. If that's the kind of job you're sending call postio with
        !          65357:  * the -t option. That should force the program to split into separate read and
        !          65358:  * write processes and everything not bracketed by "%%[ " and " ]%%" strings goes
        !          65359:  * to stdout. In otherwords the data you're expecting should be separated from the
        !          65360:  * status stuff that goes to the log file (or stderr). The -R2 option does almost
        !          65361:  * the same thing (ie. separate read and write processes), but everything that
        !          65362:  * comes back from the printer goes to the log file (stderr by default) and you'll
        !          65363:  * have to separate your data from any printer messages.
        !          65364:  *
        !          65365:  * A typical command line might be,
        !          65366:  *
        !          65367:  *     postio -l /dev/tty01 -b 9600 -L log file1 file2
        !          65368:  *
        !          65369:  * where -l selects the line, -b sets the baud rate, and -L selects the printer
        !          65370:  * log file. Since there's no default line, at least not right now, you'll always
        !          65371:  * need to use the -l option, and if you don't choose a log file stderr will be
        !          65372:  * used. If you have a program that will be returning data the command line might
        !          65373:  * look like,
        !          65374:  *
        !          65375:  *     postio -t -l/dev/tty01 -b9600 -Llog file >results
        !          65376:  *
        !          65377:  * Status stuff goes to file log while the data you're expecting back from the
        !          65378:  * printer gets put in file results.
        !          65379:  *
        !          65380:  */
        !          65381: 
        !          65382: #include <stdio.h>
        !          65383: #include <ctype.h>
        !          65384: #include <fcntl.h>
        !          65385: #include <signal.h>
        !          65386: #include <sys/types.h>
        !          65387: #include <errno.h>
        !          65388: 
        !          65389: #include "ifdef.h"                     /* conditional compilation stuff */
        !          65390: #include "gen.h"                       /* general purpose definitions */
        !          65391: #include "postio.h"                    /* some special definitions */
        !          65392: 
        !          65393: char   **argv;                         /* global so everyone can use them */
        !          65394: int    argc;
        !          65395: 
        !          65396: char   *prog_name = "";                /* really just for error messages */
        !          65397: int    x_stat = 0;                     /* program exit status */
        !          65398: int    debug = OFF;                    /* debug flag */
        !          65399: int    ignore = OFF;                   /* what's done for FATAL errors */
        !          65400: 
        !          65401: char   *line = NULL;                   /* printer is on this tty line */
        !          65402: short  baudrate = BAUDRATE;            /* and running at this baud rate */
        !          65403: Baud   baudtable[] = BAUDTABLE;        /* converts strings to termio values */
        !          65404: 
        !          65405: int    stopbits = 1;                   /* number of stop bits */
        !          65406: int    tostdout = FALSE;               /* non-status stuff goes to stdout? */
        !          65407: int    quiet = FALSE;                  /* no status queries in send() if TRUE */
        !          65408: int    interactive = FALSE;            /* interactive mode */
        !          65409: char   *postbegin = POSTBEGIN;         /* preceeds all the input files */
        !          65410: int    useslowsend = FALSE;            /* not recommended! */
        !          65411: int    sendctrlC = TRUE;               /* interrupt with ctrl-C when BUSY */
        !          65412: int    window_size = -1;               /* for Datakit - use -w */
        !          65413: 
        !          65414: char   *block = NULL;                  /* input file buffer */
        !          65415: int    blocksize = BLOCKSIZE;          /* and its size in bytes */
        !          65416: int    head = 0;                       /* block[head] is the next character */
        !          65417: int    tail = 0;                       /* one past the last byte in block[] */
        !          65418: 
        !          65419: int    splitme = FALSE;                /* into READ and WRITE processes if TRUE */
        !          65420: int    whatami = READWRITE;            /* a READ or WRITE process - or both */
        !          65421: int    canread = TRUE;                 /* allow reads */
        !          65422: int    canwrite = TRUE;                /* and writes if TRUE */
        !          65423: int    otherpid = -1;                  /* who gets signals if greater than 1 */
        !          65424: int    joinsig = SIGTRAP;              /* reader gets this when writing is done */
        !          65425: int    writedone = FALSE;              /* and then sets this to TRUE */
        !          65426: 
        !          65427: char   mesg[MESGSIZE];                 /* exactly what came back on ttyi */
        !          65428: char   sbuf[MESGSIZE];                 /* for parsing the message */
        !          65429: int    next = 0;                       /* next character goes in mesg[next] */
        !          65430: char   *mesgptr = NULL;                /* printer message starts here in mesg[] */
        !          65431: char   *endmesg = NULL;                /* as far as readline() can go in mesg[] */
        !          65432: 
        !          65433: Status status[] = STATUS;              /* for converting status strings */
        !          65434: int    nostatus = NOSTATUS;            /* default getstatus() return value */
        !          65435: 
        !          65436: int    currentstate = NOTCONNECTED;    /* what's happening START, SEND, or DONE */
        !          65437: 
        !          65438: int    ttyi = 0;                       /* input */
        !          65439: int    ttyo = 2;                       /* and output file descriptors */
        !          65440: 
        !          65441: FILE   *fp_log = stderr;               /* log file for stuff from the printer */
        !          65442: 
        !          65443: /*****************************************************************************/
        !          65444: 
        !          65445: main(agc, agv)
        !          65446: 
        !          65447:     int                agc;
        !          65448:     char       *agv[];
        !          65449: 
        !          65450: {
        !          65451: 
        !          65452: /*
        !          65453:  *
        !          65454:  * A simple program that manages input and output for PostScript printers. Can run
        !          65455:  * as a single process or as separate read/write processes. What's done depends on
        !          65456:  * the value assigned to splitme when split() is called.
        !          65457:  *
        !          65458:  */
        !          65459: 
        !          65460:     argc = agc;                                /* other routines may want them */
        !          65461:     argv = agv;
        !          65462: 
        !          65463:     prog_name = argv[0];               /* really just for error messages */
        !          65464: 
        !          65465:     init_signals();                    /* sets up interrupt handling */
        !          65466:     options();                         /* get command line options */
        !          65467:     initialize();                      /* must be done after options() */
        !          65468:     start();                           /* make sure the printer is ready */
        !          65469:     split();                           /* into read/write processes - maybe */
        !          65470:     arguments();                       /* then send each input file */
        !          65471:     done();                            /* wait until the printer is finished */
        !          65472:     cleanup();                         /* make sure the write process stops */
        !          65473: 
        !          65474:     exit(x_stat);                      /* everything probably went OK */
        !          65475: 
        !          65476: }   /* End of main */
        !          65477: 
        !          65478: /*****************************************************************************/
        !          65479: 
        !          65480: init_signals()
        !          65481: 
        !          65482: {
        !          65483: 
        !          65484:     void       interrupt();            /* handles them if we catch signals */
        !          65485: 
        !          65486: /*
        !          65487:  *
        !          65488:  * Makes sure we handle interrupts. The proper way to kill the program, if
        !          65489:  * necessary, is to do a kill -15. That forces a call to interrupt(), which in
        !          65490:  * turn tries to reset the printer and then exits with a non-zero status. If the
        !          65491:  * program is running as two processes, sending SIGTERM to either the parent or
        !          65492:  * child should clean things up.
        !          65493:  *
        !          65494:  */
        !          65495: 
        !          65496:     if ( signal(SIGINT, interrupt) == SIG_IGN )  {
        !          65497:        signal(SIGINT, SIG_IGN);
        !          65498:        signal(SIGQUIT, SIG_IGN);
        !          65499:        signal(SIGHUP, SIG_IGN);
        !          65500:     } else {
        !          65501:        signal(SIGHUP, interrupt);
        !          65502:        signal(SIGQUIT, interrupt);
        !          65503:     }  /* End else */
        !          65504: 
        !          65505:     signal(SIGTERM, interrupt);
        !          65506: 
        !          65507: }   /* End of init_sig */
        !          65508: 
        !          65509: /*****************************************************************************/
        !          65510: 
        !          65511: options()
        !          65512: 
        !          65513: {
        !          65514: 
        !          65515:     int                ch;                     /* return value from getopt() */
        !          65516:     char       *optnames = "b:cil:qs:tw:B:L:P:R:SDI";
        !          65517: 
        !          65518:     extern char        *optarg;                /* used by getopt() */
        !          65519:     extern int optind;
        !          65520: 
        !          65521: /*
        !          65522:  *
        !          65523:  * Reads and processes the command line options. The -R2, -t, and -i options all
        !          65524:  * force separate read and write processes by eventually setting splitme to TRUE
        !          65525:  * (check initialize()). The -S option is not recommended and should only be used
        !          65526:  * as a last resort!
        !          65527:  *
        !          65528:  */
        !          65529: 
        !          65530:     while ( (ch = getopt(argc, argv, optnames)) != EOF )  {
        !          65531:        switch ( ch )  {
        !          65532:            case 'b':                   /* baud rate string */
        !          65533:                    baudrate = getbaud(optarg);
        !          65534:                    break;
        !          65535: 
        !          65536:            case 'c':                   /* no ctrl-C's */
        !          65537:                    sendctrlC = FALSE;
        !          65538:                    break;
        !          65539: 
        !          65540:            case 'i':                   /* interactive mode */
        !          65541:                    interactive = TRUE;
        !          65542:                    break;
        !          65543: 
        !          65544:            case 'l':                   /* printer line */
        !          65545:                    line = optarg;
        !          65546:                    break;
        !          65547: 
        !          65548:            case 'q':                   /* no status queries - for RADIAN? */
        !          65549:                    quiet = TRUE;
        !          65550:                    break;
        !          65551: 
        !          65552:            case 's':                   /* use 2 stop bits - for UNISON? */
        !          65553:                    if ( (stopbits = atoi(optarg)) < 1 || stopbits > 2 )
        !          65554:                        stopbits = 1;
        !          65555:                    break;
        !          65556: 
        !          65557:            case 't':                   /* non-status stuff goes to stdout */
        !          65558:                    tostdout = TRUE;
        !          65559:                    break;
        !          65560: 
        !          65561:            case 'w':                   /* Datakit window size */
        !          65562:                    window_size = atoi(optarg);
        !          65563:                    break;
        !          65564: 
        !          65565:            case 'B':                   /* set the job buffer size */
        !          65566:                    if ( (blocksize = atoi(optarg)) <= 0 )
        !          65567:                        blocksize = BLOCKSIZE;
        !          65568:                    break;
        !          65569: 
        !          65570:            case 'L':                   /* printer log file */
        !          65571:                    if ( (fp_log = fopen(optarg, "w")) == NULL )  {
        !          65572:                        fp_log = stderr;
        !          65573:                        error(NON_FATAL, "can't open log file %s", optarg);
        !          65574:                    }   /* End if */
        !          65575:                    break;
        !          65576: 
        !          65577:            case 'P':                   /* initial PostScript code */
        !          65578:                    postbegin = optarg;
        !          65579:                    break;
        !          65580: 
        !          65581:            case 'R':                   /* run as one or two processes */
        !          65582:                    if ( atoi(optarg) == 2 )
        !          65583:                        splitme = TRUE;
        !          65584:                    else splitme = FALSE;
        !          65585:                    break;
        !          65586: 
        !          65587:            case 'S':                   /* slow and kludged up version of send */
        !          65588:                    useslowsend = TRUE;
        !          65589:                    break;
        !          65590: 
        !          65591:            case 'D':                   /* debug flag */
        !          65592:                    debug = ON;
        !          65593:                    break;
        !          65594: 
        !          65595:            case 'I':                   /* ignore FATAL errors */
        !          65596:                    ignore = ON;
        !          65597:                    break;
        !          65598: 
        !          65599:            case '?':                   /* don't understand the option */
        !          65600:                    error(FATAL, "");
        !          65601:                    break;
        !          65602: 
        !          65603:            default:                    /* don't know what to do for ch */
        !          65604:                    error(FATAL, "missing case for option %c\n", ch);
        !          65605:                    break;
        !          65606:        }   /* End switch */
        !          65607:     }   /* End while */
        !          65608: 
        !          65609:     argc -= optind;                    /* get ready for non-option args */
        !          65610:     argv += optind;
        !          65611: 
        !          65612: }   /* End of options */
        !          65613: 
        !          65614: /*****************************************************************************/
        !          65615: 
        !          65616: getbaud(rate)
        !          65617: 
        !          65618:     char       *rate;                  /* string representing the baud rate */
        !          65619: 
        !          65620: {
        !          65621: 
        !          65622:     int                i;                      /* for looking through baudtable[] */
        !          65623: 
        !          65624: /*
        !          65625:  *
        !          65626:  * Called from options() to convert a baud rate string into an appropriate termio
        !          65627:  * value. *rate is looked up in baudtable[] and if it's found, the corresponding
        !          65628:  * value is returned to the caller.
        !          65629:  *
        !          65630:  */
        !          65631: 
        !          65632:     for ( i = 0; baudtable[i].rate != NULL; i++ )
        !          65633:        if ( strcmp(rate, baudtable[i].rate) == 0 )
        !          65634:            return(baudtable[i].val);
        !          65635: 
        !          65636:     error(FATAL, "don't recognize baud rate %s", rate);
        !          65637: 
        !          65638: }   /* End of getbaud */
        !          65639: 
        !          65640: /*****************************************************************************/
        !          65641: 
        !          65642: initialize()
        !          65643: 
        !          65644: {
        !          65645: 
        !          65646: /*
        !          65647:  *
        !          65648:  * Initialization, a few checks, and a call to setupline() (file ifdef.c) to open
        !          65649:  * and configure the communications line. Settings for interactive mode always
        !          65650:  * take precedence. The setupstdin() call with an argument of 0 saves the current
        !          65651:  * terminal settings if interactive mode has been requested - otherwise nothing's
        !          65652:  * done. Unbuffering stdout (via the setbuf() call) isn't really needed on System V
        !          65653:  * since it's flushed whenever terminal input is requested. It's more efficient if
        !          65654:  * we buffer the stdout (on System V) but safer (for other versions of Unix) if we
        !          65655:  * include the setbuf() call.
        !          65656:  *
        !          65657:  */
        !          65658: 
        !          65659:     whatami = READWRITE;               /* always run start() as one process */
        !          65660:     canread = canwrite = TRUE;
        !          65661: 
        !          65662:     if ( tostdout == TRUE )            /* force separate read/write processes */
        !          65663:        splitme = TRUE;
        !          65664: 
        !          65665:     if ( interactive == TRUE )  {      /* interactive mode settings always win */
        !          65666:        quiet = FALSE;
        !          65667:        tostdout = FALSE;
        !          65668:        splitme = TRUE;
        !          65669:        blocksize = 1;
        !          65670:        postbegin = NULL;
        !          65671:        useslowsend = FALSE;
        !          65672:        nostatus = INTERACTIVE;
        !          65673:        setbuf(stdout, NULL);
        !          65674:     }  /* End if */
        !          65675: 
        !          65676:     if ( useslowsend == TRUE )  {      /* last resort only - not recommended */
        !          65677:        quiet = FALSE;
        !          65678:        splitme = FALSE;
        !          65679:        if ( blocksize > 1024 )         /* don't send too much all at once */
        !          65680:            blocksize = 1024;
        !          65681:     }  /* End if */
        !          65682: 
        !          65683:     if ( tostdout == TRUE && fp_log == stderr )
        !          65684:        fp_log = NULL;
        !          65685: 
        !          65686:     if ( line == NULL && (interactive == TRUE || tostdout == TRUE) )
        !          65687:        error(FATAL, "a printer line must be supplied - use the -l option");
        !          65688: 
        !          65689:     if ( (block = malloc(blocksize)) == NULL )
        !          65690:        error(FATAL, "no memory");
        !          65691: 
        !          65692:     endmesg = mesg + sizeof mesg - 2;  /* one byte from last position in mesg */
        !          65693: 
        !          65694:     setupline();                       /* configure the communications line */
        !          65695:     setupstdin(0);                     /* save current stdin terminal settings */
        !          65696: 
        !          65697: }   /* End of initialize */
        !          65698: 
        !          65699: /*****************************************************************************/
        !          65700: 
        !          65701: start()
        !          65702: 
        !          65703: {
        !          65704: 
        !          65705: /*
        !          65706:  *
        !          65707:  * Tries to put the printer in the IDLE state before anything important is sent.
        !          65708:  * Run as a single process no matter what has been assigned to splitme. Separate
        !          65709:  * read and write processes, if requested, will be created after we're done here.
        !          65710:  *
        !          65711:  */
        !          65712: 
        !          65713:     logit("printer startup\n");
        !          65714: 
        !          65715:     currentstate = START;
        !          65716:     clearline();
        !          65717: 
        !          65718:     while ( 1 )
        !          65719:        switch ( getstatus(1) )  {
        !          65720:            case IDLE:
        !          65721:            case INTERACTIVE:
        !          65722:                    if ( postbegin != NULL && *postbegin != '\0' )
        !          65723:                        Write(ttyo, postbegin, strlen(postbegin));
        !          65724:                    clearline();
        !          65725:                    return;
        !          65726: 
        !          65727:            case BUSY:
        !          65728:                    if ( sendctrlC == TRUE ) {
        !          65729:                        Write(ttyo, "\003", 1);
        !          65730:                        Rest(1);
        !          65731:                    }   /* End if */
        !          65732:                    break;
        !          65733: 
        !          65734:            case WAITING:
        !          65735:            case ERROR:
        !          65736:            case FLUSHING:
        !          65737:                    Write(ttyo, "\004", 1);
        !          65738:                    Rest(1);
        !          65739:                    break;
        !          65740: 
        !          65741:            case PRINTERERROR:
        !          65742:                    Rest(15);
        !          65743:                    break;
        !          65744: 
        !          65745:            case DISCONNECT:
        !          65746:                    error(FATAL, "Disconnected - printer may be offline");
        !          65747:                    break;
        !          65748: 
        !          65749:            case ENDOFJOB:
        !          65750:            case UNKNOWN:
        !          65751:                    clearline();
        !          65752:                    break;
        !          65753: 
        !          65754:            default:
        !          65755:                    Rest(1);
        !          65756:                    break;
        !          65757:        }   /* End switch */
        !          65758: 
        !          65759: }   /* End of start */
        !          65760: 
        !          65761: /*****************************************************************************/
        !          65762: 
        !          65763: split()
        !          65764: 
        !          65765: {
        !          65766: 
        !          65767:     int                pid;
        !          65768:     void       interrupt();
        !          65769: 
        !          65770: /*
        !          65771:  *
        !          65772:  * If splitme is TRUE we fork a process, make the parent handle reading, and let
        !          65773:  * the child take care of writing. resetline() (file ifdef.c) contains all the
        !          65774:  * system dependent code needed to reset the communications line for separate
        !          65775:  * read and write processes. For now it's expected to return TRUE or FALSE and
        !          65776:  * that value controls whether we try the fork. I've only tested the two process
        !          65777:  * stuff for System V. Other versions of resetline() may just be dummy procedures
        !          65778:  * that always return FALSE. If the fork() failed previous versions continued as
        !          65779:  * a single process, although the implementation wasn't quite right, but I've now
        !          65780:  * decided to quit. The main reason is a Datakit channel may be configured to
        !          65781:  * flow control data in both directions, and if we run postio over that channel
        !          65782:  * as a single process we likely will end up in deadlock.
        !          65783:  *
        !          65784:  */
        !          65785: 
        !          65786:     if ( splitme == TRUE )
        !          65787:        if ( resetline() == TRUE )  {
        !          65788:            pid = getpid();
        !          65789:            signal(joinsig, interrupt);
        !          65790:            if ( (otherpid = fork()) == -1 )
        !          65791:                error(FATAL, "can't fork");
        !          65792:            else if ( otherpid == 0 )  {
        !          65793:                whatami = WRITE;
        !          65794:                nostatus = WRITEPROCESS;
        !          65795:                otherpid = pid;
        !          65796:                setupstdin(1);
        !          65797:            } else whatami = READ;
        !          65798:        } else if ( interactive == TRUE || tostdout == TRUE )
        !          65799:            error(FATAL, "can't create two process - check resetline()");
        !          65800:        else error(NON_FATAL, "running as a single process - check resetline()");
        !          65801: 
        !          65802:     canread = (whatami & READ) ? TRUE : FALSE;
        !          65803:     canwrite = (whatami & WRITE) ? TRUE : FALSE;
        !          65804: 
        !          65805: }   /* End of split */
        !          65806: 
        !          65807: /*****************************************************************************/
        !          65808: 
        !          65809: arguments()
        !          65810: 
        !          65811: {
        !          65812: 
        !          65813:     int                fd_in;                  /* next input file */
        !          65814: 
        !          65815: /*
        !          65816:  *
        !          65817:  * Makes sure all the non-option command line arguments are processed. If there
        !          65818:  * aren't any arguments left when we get here we'll send stdin. Input files are
        !          65819:  * only read and sent to the printer if canwrite is TRUE. Checking it here means
        !          65820:  * we won't have to do it in send(). If interactive mode is TRUE we'll stay here
        !          65821:  * forever sending stdin when we run out of files - exit with a break. Actually
        !          65822:  * the loop is bogus and used at most once when we're in interactive mode because
        !          65823:  * stdin is in a pseudo raw mode and the read() in readblock() should never see
        !          65824:  * the end of file.
        !          65825:  *
        !          65826:  */
        !          65827: 
        !          65828:     if ( canwrite == TRUE )
        !          65829:        do                              /* loop is for interactive mode */
        !          65830:            if ( argc < 1 )
        !          65831:                send(fileno(stdin), "pipe.end");
        !          65832:            else  {
        !          65833:                while ( argc > 0 )  {
        !          65834:                    if ( (fd_in = open(*argv, O_RDONLY)) == -1 )
        !          65835:                        error(FATAL, "can't open %s", *argv);
        !          65836:                    send(fd_in, *argv);
        !          65837:                    close(fd_in);
        !          65838:                    argc--;
        !          65839:                    argv++;
        !          65840:                }   /* End while */
        !          65841:            }   /* End else */
        !          65842:        while ( interactive == TRUE );
        !          65843: 
        !          65844: }   /* End of arguments */
        !          65845: 
        !          65846: /*****************************************************************************/
        !          65847: 
        !          65848: send(fd_in, name)
        !          65849: 
        !          65850:     int                fd_in;                  /* next input file */
        !          65851:     char       *name;                  /* and it's pathname */
        !          65852: 
        !          65853: {
        !          65854: 
        !          65855: /*
        !          65856:  *
        !          65857:  * Sends file *name to the printer. There's nothing left here that depends on
        !          65858:  * sending and receiving status reports, although it can be reassuring to know
        !          65859:  * the printer is responding and processing our job. Only the writer gets here
        !          65860:  * in the two process implementation, and in that case split() has reset nostatus
        !          65861:  * to WRITEPROCESS and that's what getstatus() always returns. For now we accept
        !          65862:  * the IDLE state and ENDOFJOB as legitimate and ignore the INITIALIZING state.
        !          65863:  *
        !          65864:  */
        !          65865: 
        !          65866:     if ( interactive == FALSE )
        !          65867:        logit("sending file %s\n", name);
        !          65868: 
        !          65869:     currentstate = SEND;
        !          65870: 
        !          65871:     if ( useslowsend == TRUE )  {
        !          65872:        slowsend(fd_in);
        !          65873:        return;
        !          65874:     }  /* End if */
        !          65875: 
        !          65876:     while ( readblock(fd_in) )
        !          65877:        switch ( getstatus(0) )  {
        !          65878:            case IDLE:
        !          65879:            case BUSY:
        !          65880:            case WAITING:
        !          65881:            case PRINTING:
        !          65882:            case ENDOFJOB:
        !          65883:            case PRINTERERROR:
        !          65884:            case UNKNOWN:
        !          65885:            case NOSTATUS:
        !          65886:            case WRITEPROCESS:
        !          65887:            case INTERACTIVE:
        !          65888:                    writeblock();
        !          65889:                    break;
        !          65890: 
        !          65891:            case ERROR:
        !          65892:                    fprintf(stderr, "%s", mesg);        /* for csw */
        !          65893:                    error(USER_FATAL, "PostScript Error");
        !          65894:                    break;
        !          65895: 
        !          65896:            case FLUSHING:
        !          65897:                    error(USER_FATAL, "Flushing Job");
        !          65898:                    break;
        !          65899: 
        !          65900:            case DISCONNECT:
        !          65901:                    error(FATAL, "Disconnected - printer may be offline");
        !          65902:                    break;
        !          65903:        }   /* End switch */
        !          65904: 
        !          65905: }   /* End of send */
        !          65906: 
        !          65907: /*****************************************************************************/
        !          65908: 
        !          65909: done()
        !          65910: 
        !          65911: {
        !          65912: 
        !          65913:     int                sleeptime = 15;         /* for 'out of paper' etc. */
        !          65914: 
        !          65915: /*
        !          65916:  *
        !          65917:  * Tries to stay connected to the printer until we're reasonably sure the job is
        !          65918:  * complete. It's the only way we can recover error messages or data generated by
        !          65919:  * the PostScript program and returned over the communication line. Actually doing
        !          65920:  * it correctly for all possible PostScript jobs is more difficult that it might
        !          65921:  * seem. For example if we've sent several jobs, each with their own EOF mark, then
        !          65922:  * waiting for ENDOFJOB won't guarantee all the jobs have completed. Even waiting
        !          65923:  * for IDLE isn't good enough. Checking for the WAITING state after all the files
        !          65924:  * have been sent and then sending an EOF may be the best approach, but even that
        !          65925:  * won't work all the time - we could miss it or might not get there. Even sending
        !          65926:  * our own special PostScript job after all the input files has it's own different
        !          65927:  * set of problems, but probably could work (perhaps by printing a fake status
        !          65928:  * message or just not timing out). Anyway it's probably not worth the trouble so
        !          65929:  * for now we'll quit if writedone is TRUE and we get ENDOFJOB or IDLE.
        !          65930:  *
        !          65931:  * If we're running separate read and write processes the reader gets here after
        !          65932:  * after split() while the writer goes to send() and only gets here after all the
        !          65933:  * input files have been transmitted. When they're both here the writer sends the
        !          65934:  * reader signal joinsig and that forces writedone to TRUE in the reader. At that
        !          65935:  * point the reader can begin looking for an indication of the end of the job.
        !          65936:  * The writer hangs around until the reader kills it (usually in cleanup()) sending
        !          65937:  * occasional status requests.
        !          65938:  *
        !          65939:  */
        !          65940: 
        !          65941:     if ( canwrite == TRUE )
        !          65942:        logit("waiting for end of job\n");
        !          65943: 
        !          65944:     currentstate = DONE;
        !          65945:     writedone = (whatami == READWRITE) ? TRUE : FALSE;
        !          65946: 
        !          65947:     while ( 1 )  {
        !          65948:        switch ( getstatus(1) )  {
        !          65949: 
        !          65950:            case WRITEPROCESS:
        !          65951:                    if ( writedone == FALSE )  {
        !          65952:                        sendsignal(joinsig);
        !          65953:                        Write(ttyo, "\004", 1);
        !          65954:                        writedone = TRUE;
        !          65955:                        sleeptime = 1;
        !          65956:                    }   /* End if */
        !          65957:                    Rest(sleeptime++);
        !          65958:                    break;
        !          65959: 
        !          65960:            case WAITING:
        !          65961:                    Write(ttyo, "\004", 1);
        !          65962:                    Rest(1);
        !          65963:                    sleeptime = 15;
        !          65964:                    break;
        !          65965: 
        !          65966:            case IDLE:
        !          65967:            case ENDOFJOB:
        !          65968:                    if ( writedone == TRUE )  {
        !          65969:                        logit("job complete\n");
        !          65970:                        return;
        !          65971:                    }   /* End if */
        !          65972:                    break;
        !          65973: 
        !          65974:            case BUSY:
        !          65975:            case PRINTING:
        !          65976:            case INTERACTIVE:
        !          65977:                    sleeptime = 15;
        !          65978:                    break;
        !          65979: 
        !          65980:            case PRINTERERROR:
        !          65981:                    Rest(sleeptime++);
        !          65982:                    break;
        !          65983: 
        !          65984:            case ERROR:
        !          65985:                    fprintf(stderr, "%s", mesg);        /* for csw */
        !          65986:                    error(USER_FATAL, "PostScript Error");
        !          65987:                    return;
        !          65988: 
        !          65989:            case FLUSHING:
        !          65990:                    error(USER_FATAL, "Flushing Job");
        !          65991:                    return;
        !          65992: 
        !          65993:            case DISCONNECT:
        !          65994:                    error(FATAL, "Disconnected - printer may be offline");
        !          65995:                    return;
        !          65996: 
        !          65997:            default:
        !          65998:                    Rest(1);
        !          65999:                    break;
        !          66000:        }   /* End switch */
        !          66001: 
        !          66002:        if ( sleeptime > 60 )
        !          66003:            sleeptime = 60;
        !          66004:     }  /* End while */
        !          66005: 
        !          66006: }   /* End of done */
        !          66007: 
        !          66008: /*****************************************************************************/
        !          66009: 
        !          66010: cleanup()
        !          66011: 
        !          66012: {
        !          66013: 
        !          66014:     int                w;
        !          66015: 
        !          66016: /*
        !          66017:  *
        !          66018:  * Only needed if we're running separate read and write processes. Makes sure the
        !          66019:  * write process is killed after the read process has successfully finished with
        !          66020:  * all the jobs. sendsignal() returns a -1 if there's nobody to signal so things
        !          66021:  * work when we're running a single process.
        !          66022:  *
        !          66023:  */
        !          66024: 
        !          66025:     while ( sendsignal(SIGKILL) != -1 && (w = wait((int *)0)) != otherpid && w != -1 ) ;
        !          66026: 
        !          66027: }   /* End of cleanup */
        !          66028: 
        !          66029: /*****************************************************************************/
        !          66030: 
        !          66031: readblock(fd_in)
        !          66032: 
        !          66033:     int                fd_in;                  /* current input file */
        !          66034: 
        !          66035: {
        !          66036: 
        !          66037:     static long        blocknum = 1;
        !          66038: 
        !          66039: /*
        !          66040:  *
        !          66041:  * Fills the input buffer with the next block, provided we're all done with the
        !          66042:  * last one. Blocks from fd_in are stored in array block[]. head is the index
        !          66043:  * of the next byte in block[] that's supposed to go to the printer. tail points
        !          66044:  * one past the last byte in the current block. head is adjusted in writeblock()
        !          66045:  * after each successful write, while head and tail are reset here each time
        !          66046:  * a new block is read. Returns the number of bytes left in the current block.
        !          66047:  * Read errors cause the program to abort. The fake status message that's put out
        !          66048:  * in quiet mode is only so you can look at the log file and know something's
        !          66049:  * happening - take it out if you want.
        !          66050:  *
        !          66051:  */
        !          66052: 
        !          66053:     if ( head >= tail )  {             /* done with the last block */
        !          66054:        if ( (tail = read(fd_in, block, blocksize)) == -1 )
        !          66055:            error(FATAL, "error reading input file");
        !          66056:        if ( quiet == TRUE && tail > 0 )        /* put out a fake message? */
        !          66057:            logit("%%%%[ status: busy; block: %d ]%%%%\n", blocknum++);
        !          66058:        head = 0;
        !          66059:     }  /* End if */
        !          66060: 
        !          66061:     return(tail - head);
        !          66062: 
        !          66063: }   /* End of readblock */
        !          66064: 
        !          66065: /*****************************************************************************/
        !          66066: 
        !          66067: writeblock()
        !          66068: 
        !          66069: {
        !          66070: 
        !          66071:     int                count;                  /* bytes successfully written */
        !          66072: 
        !          66073: /*
        !          66074:  *
        !          66075:  * Called from send() when it's OK to send the next block to the printer. head
        !          66076:  * is adjusted after the write, and the number of bytes that were successfully
        !          66077:  * written is returned to the caller.
        !          66078:  *
        !          66079:  */
        !          66080: 
        !          66081:     if ( (count = write(ttyo, &block[head], tail - head)) == -1 )
        !          66082:        error(FATAL, "error writing to %s", line);
        !          66083:     else if ( count == 0 )
        !          66084:        error(FATAL, "printer appears to be offline");
        !          66085: 
        !          66086:     head += count;
        !          66087:     return(count);
        !          66088: 
        !          66089: }   /* End of writeblock */
        !          66090: 
        !          66091: /*****************************************************************************/
        !          66092: 
        !          66093: getstatus(t)
        !          66094: 
        !          66095:     int                t;                      /* sleep time after sending '\024' */
        !          66096: 
        !          66097: {
        !          66098: 
        !          66099:     int                gotline = FALSE;        /* value returned by readline() */
        !          66100:     int                state = nostatus;       /* representation of the current state */
        !          66101:     int                mesgch;                 /* to restore mesg[] when tostdout == TRUE */
        !          66102: 
        !          66103:     static int laststate = NOSTATUS;   /* last state recognized */
        !          66104: 
        !          66105: /*
        !          66106:  *
        !          66107:  * Looks for things coming back from the printer on the communications line, parses
        !          66108:  * complete lines retrieved by readline(), and returns an integer representation
        !          66109:  * of the current printer status to the caller. If nothing was available a status
        !          66110:  * request (control T) is sent to the printer and nostatus is returned to the
        !          66111:  * caller (provided quiet isn't TRUE). Interactive mode either never returns from
        !          66112:  * readline() or returns FALSE.
        !          66113:  * 
        !          66114:  */
        !          66115: 
        !          66116:     if ( canread == TRUE && (gotline = readline()) == TRUE )  {
        !          66117:        state = parsemesg();
        !          66118:        if ( state != laststate || state == UNKNOWN || mesgptr != mesg || debug == ON )
        !          66119:            logit("%s", mesg);
        !          66120: 
        !          66121:        if ( tostdout == TRUE && currentstate != START )  {
        !          66122:            mesgch = *mesgptr;
        !          66123:            *mesgptr = '\0';
        !          66124:            fprintf(stdout, "%s", mesg);
        !          66125:            fflush(stdout);
        !          66126:            *mesgptr = mesgch;          /* for ERROR in send() and done() */
        !          66127:        }   /* End if */
        !          66128:        return(laststate = state);
        !          66129:     }  /* End if */
        !          66130: 
        !          66131:     if ( (quiet == FALSE || currentstate != SEND) &&
        !          66132:         (tostdout == FALSE || currentstate == START) && interactive == FALSE )  {
        !          66133:        if ( Write(ttyo, "\024", 1) != 1 )
        !          66134:            error(FATAL, "printer appears to be offline");
        !          66135:        if ( t > 0 ) Rest(t);
        !          66136:     }  /* End if */
        !          66137: 
        !          66138:     return(nostatus);
        !          66139: 
        !          66140: }   /* End of getstatus */
        !          66141: 
        !          66142: /*****************************************************************************/
        !          66143: 
        !          66144: parsemesg()
        !          66145: 
        !          66146: {
        !          66147: 
        !          66148:     char       *e;                     /* end of printer message in mesg[] */
        !          66149:     char       *key, *val;             /* keyword/value strings in sbuf[] */
        !          66150:     char       *p;                     /* for converting to lower case etc. */
        !          66151:     int                i;                      /* where *key was found in status[] */
        !          66152: 
        !          66153: /*
        !          66154:  *
        !          66155:  * Parsing the lines that readline() stores in mesg[] is messy, and what's done
        !          66156:  * here isn't completely correct nor as fast as it could be. The general format
        !          66157:  * of lines that come back from the printer (assuming no data loss) is:
        !          66158:  *
        !          66159:  *             str%%[ key: val; key: val; key: val ]%%\n
        !          66160:  *
        !          66161:  * where str can be most anything not containing a newline and printer reports
        !          66162:  * (eg. status or error messages) are bracketed by "%%[ " and " ]%%" strings and
        !          66163:  * end with a newline. Usually we'll have the string or printer report but not
        !          66164:  * both. For most jobs the leading string will be empty, but could be anything
        !          66165:  * generated on a printer and returned over the communications line using the
        !          66166:  * PostScript print operator. I'll assume PostScript jobs are well behaved and
        !          66167:  * never bracket their messages with "%%[ " and " ]%%" strings that delimit status
        !          66168:  * or error messages.
        !          66169:  *
        !          66170:  * Printer reports consist of one or more key/val pairs, and what we're interested
        !          66171:  * in (status or error indications) may not be the first pair in the list. In
        !          66172:  * addition we'll sometimes want the value associated with a keyword (eg. when
        !          66173:  * key = status) and other times we'll want the keyword (eg. when key = Error or
        !          66174:  * Flushing). The last pair isn't terminated by a semicolon and a value string
        !          66175:  * often contains many space separated words and it can even include colons in
        !          66176:  * meaningful places. I've also decided to continue converting things to lower
        !          66177:  * case before doing the lookup in status[]. The isupper() test is for Berkeley
        !          66178:  * systems.
        !          66179:  *
        !          66180:  */
        !          66181: 
        !          66182:     if ( *(mesgptr = find("%%[ ", mesg)) != '\0' && *(e = find(" ]%%", mesgptr+4)) != '\0' )  {
        !          66183:        strcpy(sbuf, mesgptr+4);                /* don't change mesg[] */
        !          66184:        sbuf[e-mesgptr-4] = '\0';               /* ignore the trailing " ]%%" */
        !          66185: 
        !          66186:        for ( key = strtok(sbuf, " :"); key != NULL; key = strtok(NULL, " :") )  {
        !          66187:            if ( (val = strtok(NULL, ";")) != NULL && strcmp(key, "status") == 0 )
        !          66188:                key = val;
        !          66189: 
        !          66190:            for ( ; *key == ' '; key++ ) ;      /* skip any leading spaces */
        !          66191:            for ( p = key; *p; p++ )            /* convert to lower case */
        !          66192:                if ( *p == ':' )  {
        !          66193:                    *p = '\0';
        !          66194:                    break;
        !          66195:                } else if ( isupper(*p) ) *p = tolower(*p);
        !          66196: 
        !          66197:            for ( i = 0; status[i].state != NULL; i++ )
        !          66198:                if ( strcmp(status[i].state, key) == 0 )
        !          66199:                    return(status[i].val);
        !          66200:        }   /* End for */
        !          66201:     } else if ( strcmp(mesg, "CONVERSATION ENDED.\n") == 0 )
        !          66202:        return(DISCONNECT);
        !          66203: 
        !          66204:     return(mesgptr == '\0' ? nostatus : UNKNOWN);
        !          66205: 
        !          66206: }   /* End of parsemesg */
        !          66207: 
        !          66208: /*****************************************************************************/
        !          66209: 
        !          66210: char *find(str1, str2)
        !          66211: 
        !          66212:     char       *str1;                  /* look for this string */
        !          66213:     char       *str2;                  /* in this one */
        !          66214: 
        !          66215: {
        !          66216: 
        !          66217:     char       *s1, *s2;               /* can't change str1 or str2 too fast */
        !          66218: 
        !          66219: /*
        !          66220:  *
        !          66221:  * Looks for *str1 in string *str2. Returns a pointer to the start of the substring
        !          66222:  * if it's found or to the end of string str2 otherwise.
        !          66223:  *
        !          66224:  */ 
        !          66225: 
        !          66226:     for ( ; *str2 != '\0'; str2++ )  {
        !          66227:        for ( s1 = str1, s2 = str2; *s1 != '\0' && *s1 == *s2; s1++, s2++ ) ;
        !          66228:        if ( *s1 == '\0' )
        !          66229:            break;
        !          66230:     }  /* End for */
        !          66231: 
        !          66232:     return(str2);
        !          66233: 
        !          66234: }   /* End of find */
        !          66235: 
        !          66236: /*****************************************************************************/
        !          66237: 
        !          66238: clearline()
        !          66239: 
        !          66240: {
        !          66241: 
        !          66242: /*
        !          66243:  *
        !          66244:  * Reads characters from the input line until nothing's left. Don't do anything if
        !          66245:  * we're currently running separate read and write processes.
        !          66246:  * 
        !          66247:  */
        !          66248: 
        !          66249:     if ( whatami == READWRITE )
        !          66250:        while ( readline() != FALSE ) ;
        !          66251: 
        !          66252: }   /* End of clearline */
        !          66253: 
        !          66254: /*****************************************************************************/
        !          66255: 
        !          66256: sendsignal(sig)
        !          66257: 
        !          66258:     int                sig;                    /* this goes to the other process */
        !          66259: 
        !          66260: {
        !          66261: 
        !          66262: /*
        !          66263:  *
        !          66264:  * Sends signal sig to the other process if we're running as separate read and
        !          66265:  * write processes. Returns the result of the kill if there's someone else to
        !          66266:  * signal or -1 if we're running alone.
        !          66267:  *
        !          66268:  */
        !          66269: 
        !          66270:     if ( whatami != READWRITE && otherpid > 1 )
        !          66271:        return(kill(otherpid, sig));
        !          66272: 
        !          66273:     return(-1);
        !          66274: 
        !          66275: }   /* End of sendsignal */
        !          66276: 
        !          66277: /*****************************************************************************/
        !          66278: 
        !          66279: void interrupt(sig)
        !          66280: 
        !          66281:     int                sig;                    /* signal that we caught */
        !          66282: 
        !          66283: {
        !          66284: 
        !          66285: /*
        !          66286:  *
        !          66287:  * Caught a signal - all except joinsig cause the program to quit. joinsig is the
        !          66288:  * signal sent by the writer to the reader after all the jobs have been transmitted.
        !          66289:  * Used to tell the read process when it can start looking for the end of the job.
        !          66290:  *
        !          66291:  */
        !          66292: 
        !          66293:     signal(sig, SIG_IGN);
        !          66294: 
        !          66295:     if ( sig != joinsig )  {
        !          66296:        x_stat |= FATAL;
        !          66297:        if ( canread == TRUE )
        !          66298:            if ( interactive == FALSE )
        !          66299:                error(NON_FATAL, "signal %d abort", sig);
        !          66300:            else error(NON_FATAL, "quitting");
        !          66301:        quit(sig);
        !          66302:     }  /* End if */
        !          66303: 
        !          66304:     writedone = TRUE;
        !          66305:     signal(joinsig, interrupt);
        !          66306: 
        !          66307: }   /* End of interrupt */
        !          66308: 
        !          66309: /*****************************************************************************/
        !          66310: 
        !          66311: logit(mesg, a1, a2, a3)
        !          66312: 
        !          66313:     char       *mesg;                  /* control string */
        !          66314:     unsigned   a1, a2, a3;             /* and possible arguments */
        !          66315: 
        !          66316: {
        !          66317: 
        !          66318: /*
        !          66319:  *
        !          66320:  * Simple routine that's used to write a message to the log file.
        !          66321:  *
        !          66322:  */
        !          66323: 
        !          66324:     if ( mesg != NULL && fp_log != NULL )  {
        !          66325:        fprintf(fp_log, mesg, a1, a2, a3);
        !          66326:        fflush(fp_log);
        !          66327:     }  /* End if */
        !          66328: 
        !          66329: }   /* End of logit */
        !          66330: 
        !          66331: /*****************************************************************************/
        !          66332: 
        !          66333: error(kind, mesg, a1, a2, a3)
        !          66334: 
        !          66335:     int                kind;                   /* FATAL or NON_FATAL error */
        !          66336:     char       *mesg;                  /* error message control string */
        !          66337:     unsigned   a1, a2, a3;             /* control string arguments */
        !          66338: 
        !          66339: {
        !          66340: 
        !          66341:     FILE       *fp_err;
        !          66342: 
        !          66343: /*
        !          66344:  *
        !          66345:  * Called when we've run into some kind of program error. First *mesg is printed
        !          66346:  * using the control string arguments a?. If kind is FATAL and we're not ignoring
        !          66347:  * errors the program will be terminated. If mesg is NULL or *mesg is the NULL
        !          66348:  * string nothing will be printed.
        !          66349:  *
        !          66350:  */
        !          66351: 
        !          66352:     fp_err = (fp_log != NULL) ? fp_log : stderr;
        !          66353: 
        !          66354:     if ( mesg != NULL && *mesg != '\0' )  {
        !          66355:        fprintf(fp_err, "%s: ", prog_name);
        !          66356:        fprintf(fp_err, mesg, a1, a2, a3);
        !          66357:        putc('\n', fp_err);
        !          66358:     }  /* End if */
        !          66359: 
        !          66360:     x_stat |= kind;
        !          66361: 
        !          66362:     if ( kind != NON_FATAL && ignore == OFF )
        !          66363:        quit(SIGTERM);
        !          66364: 
        !          66365: }   /* End of error */
        !          66366: 
        !          66367: /*****************************************************************************/
        !          66368: 
        !          66369: quit(sig)
        !          66370: 
        !          66371:     int                sig;
        !          66372: 
        !          66373: {
        !          66374: 
        !          66375:     int                w;
        !          66376: 
        !          66377: /*
        !          66378:  *
        !          66379:  * Makes sure everything is properly cleaned up if there's a signal or FATAL error
        !          66380:  * that should cause the program to terminate. The sleep by the write process is
        !          66381:  * to help give the reset sequence a chance to reach the printer before we break
        !          66382:  * the connection - primarily for printers connected to Datakit. There's a very
        !          66383:  * slight chance the reset sequence that's sent to the printer could get us stuck
        !          66384:  * here. Simplest solution is don't bother to send it - everything works without it.
        !          66385:  * Flushing ttyo would be better, but means yet another system dependent procedure
        !          66386:  * in ifdef.c! I'll leave things be for now.
        !          66387:  *
        !          66388:  * Obscure problem on PS-810 turbos says wait a bit after sending an interrupt.
        !          66389:  * Seem to remember the printer getting into a bad state immediately after the
        !          66390:  * top was opened when the toner light was on. A sleep after sending the ctrl-C
        !          66391:  * seemed to fix things.
        !          66392:  *
        !          66393:  */
        !          66394: 
        !          66395:     signal(sig, SIG_IGN);
        !          66396:     ignore = ON;
        !          66397: 
        !          66398:     while ( sendsignal(sig) != -1 && (w = wait((int *)0)) != otherpid && w != -1 ) ;
        !          66399: 
        !          66400:     setupstdin(2);
        !          66401: 
        !          66402:     if ( currentstate != NOTCONNECTED ) {
        !          66403:        if ( sendctrlC == TRUE ) {
        !          66404:            Write(ttyo, "\003", 1);
        !          66405:            Rest(1);                    /* PS-810 turbo problem?? */
        !          66406:        }   /* End if */
        !          66407:        Write(ttyo, "\004", 1);
        !          66408:     }  /* End if */
        !          66409: 
        !          66410:     alarm(0);                          /* prevents sleep() loop on V9 systems */
        !          66411:     Rest(2);
        !          66412: 
        !          66413:     exit(x_stat);
        !          66414: 
        !          66415: }   /* End of quit */
        !          66416: 
        !          66417: /*****************************************************************************/
        !          66418: 
        !          66419: Rest(t)
        !          66420: 
        !          66421:     int                t;
        !          66422: 
        !          66423: {
        !          66424: 
        !          66425: /*
        !          66426:  *
        !          66427:  * Used to replace sleep() calls. Only needed if we're running the program as
        !          66428:  * a read and write process and don't want to have the read process sleep. Most
        !          66429:  * sleeps are in the code because of the non-blocking read used by the single
        !          66430:  * process implementation. Probably should be a macro.
        !          66431:  *
        !          66432:  */
        !          66433: 
        !          66434:     if ( t > 0 && canwrite == TRUE )
        !          66435:        sleep(t);
        !          66436: 
        !          66437: }   /* End of Rest */
        !          66438: 
        !          66439: /*****************************************************************************/
        !          66440: 
        !          66441: Read(fd, buf, n)
        !          66442: 
        !          66443:     int                fd;
        !          66444:     char       *buf;
        !          66445:     int                n;
        !          66446: 
        !          66447: {
        !          66448: 
        !          66449:     int                count;
        !          66450: 
        !          66451: /*
        !          66452:  *
        !          66453:  * Used to replace some of the read() calls. Only needed if we're running separate
        !          66454:  * read and write processes. Should only be used to replace read calls on ttyi.
        !          66455:  * Always returns 0 to the caller if the process doesn't have its READ flag set.
        !          66456:  * Probably should be a macro.
        !          66457:  *
        !          66458:  */
        !          66459: 
        !          66460:     if ( canread == TRUE )  {
        !          66461:        if ( (count = read(fd, buf, n)) == -1 && errno == EINTR )
        !          66462:            count = 0;
        !          66463:     } else count = 0;
        !          66464: 
        !          66465:     return(count);
        !          66466: 
        !          66467: }   /* End of Read */
        !          66468: 
        !          66469: /*****************************************************************************/
        !          66470: 
        !          66471: Write(fd, buf, n)
        !          66472: 
        !          66473:     int                fd;
        !          66474:     char       *buf;
        !          66475:     int                n;
        !          66476: 
        !          66477: {
        !          66478: 
        !          66479:     int                count;
        !          66480: 
        !          66481: /*
        !          66482:  *
        !          66483:  * Used to replace some of the write() calls. Again only needed if we're running
        !          66484:  * separate read and write processes. Should only be used to replace write calls
        !          66485:  * on ttyo. Always returns n to the caller if the process doesn't have its WRITE
        !          66486:  * flag set. Should also probably be a macro.
        !          66487:  *
        !          66488:  */
        !          66489: 
        !          66490:     if ( canwrite == TRUE )  {
        !          66491:        if ( (count = write(fd, buf, n)) == -1 && errno == EINTR )
        !          66492:            count = n;
        !          66493:     } else count = n;
        !          66494: 
        !          66495:     return(count);
        !          66496: 
        !          66497: }   /* End of Write */
        !          66498:  
        !          66499: /*****************************************************************************/
        !          66500: 
        !          66501: 0707070014231405111006440057030057030000011225200522627503600003100000015154post.src/postio/postio.h/*
        !          66502:  *
        !          66503:  * POSTBEGIN, if it's not NULL, is some PostScript code that's sent to the printer
        !          66504:  * before any of the input files. It's not terribly important since the same thing
        !          66505:  * can be accomplished in other ways, but this approach is convenient. POSTBEGIN
        !          66506:  * is initialized so as to disable job timeouts. The string can also be set on the
        !          66507:  * command line using the -P option.
        !          66508:  *
        !          66509:  */
        !          66510: 
        !          66511: #define POSTBEGIN      "statusdict /waittimeout 0 put\n"
        !          66512: 
        !          66513: /*
        !          66514:  *
        !          66515:  * The following help determine where postio is when it's running - either in the
        !          66516:  * START, SEND, or DONE states. Primarily controls what's done in getstatus().
        !          66517:  * RADIAN occasionally had problems with two way conversations. Anyway this stuff
        !          66518:  * can be used to prevent status queries while we're transmitting a job. Enabled
        !          66519:  * by the -q option.
        !          66520:  *
        !          66521:  */
        !          66522: 
        !          66523: #define NOTCONNECTED   0
        !          66524: #define START          1
        !          66525: #define SEND           2
        !          66526: #define DONE           3
        !          66527: 
        !          66528: /*
        !          66529:  *
        !          66530:  * Previous versions of postio only ran as a single process. That was (and still
        !          66531:  * is) convenient, but meant we could only flow control one direction. Data coming
        !          66532:  * back from the printer occasionally got lost, but that didn't often hurt (except
        !          66533:  * for lost error messages). Anyway I've added code that lets you split the program
        !          66534:  * into separate read and write processes, thereby helping to prevent data loss in
        !          66535:  * both directions. It should be particularly useful when you're sending a job that
        !          66536:  * you expect will be returning useful data over the communications line.
        !          66537:  *
        !          66538:  * The next three definitions control what's done with data on communications line.
        !          66539:  * The READ flag means the line can be read, while the WRITE flag means it can be
        !          66540:  * written. When we're running as a single process both flags are set. I tried to
        !          66541:  * overlay the separate read/write process code on what was there and working for
        !          66542:  * one process. The implementation isn't as good as it could be, but should be
        !          66543:  * safe. The single process version still works, and remains the default.
        !          66544:  *
        !          66545:  */
        !          66546: 
        !          66547: #define READ           1
        !          66548: #define WRITE          2
        !          66549: #define READWRITE      3
        !          66550: 
        !          66551: /*
        !          66552:  *
        !          66553:  * Messages generated on the printer and returned over the communications line
        !          66554:  * look like,
        !          66555:  *
        !          66556:  *     %%[ status: idle; source: serial 25 ]%%
        !          66557:  *     %%[ status: waiting; source: serial 25 ]%%
        !          66558:  *     %%[ status: initializing; source: serial 25 ]%%
        !          66559:  *     %%[ status: busy; source: serial 25 ]%%
        !          66560:  *     %%[ status: printing; source: serial 25 ]%%
        !          66561:  *     %%[ status: PrinterError: out of paper; source: serial 25 ]%%
        !          66562:  *     %%[ status: PrinterError: no paper tray; source: serial 25 ]%%
        !          66563:  *
        !          66564:  *     %%[ PrinterError: out of paper; source: serial 25 ]%%
        !          66565:  *     %%[ PrinterError: no paper tray; source: serial 25 ]%%
        !          66566:  *
        !          66567:  *     %%[ Error: undefined; OffendingCommand: xxx ]%%
        !          66568:  *     %%[ Flushing: rest of job (to end-of-file) will be ignored ]%%
        !          66569:  *
        !          66570:  * although the list isn't meant to be complete.
        !          66571:  *
        !          66572:  * The following constants are used to classify the recognized printer states.
        !          66573:  * readline() reads complete lines from ttyi and stores them in array mesg[].
        !          66574:  * getstatus() looks for the "%%[ " and " ]%%" delimiters that bracket printer
        !          66575:  * messages and if found it tries to parse the enclosed message. After the lookup
        !          66576:  * one of the following numbers is returned as an indication of the existence or
        !          66577:  * content of the printer message. The return value is used in start(), send(),
        !          66578:  * and done() to figure out what's happening and what can be done next.
        !          66579:  *
        !          66580:  */
        !          66581: 
        !          66582: #define BUSY           0               /* processing data already sent */
        !          66583: #define WAITING                1               /* printer wants more data */
        !          66584: #define PRINTING       2               /* printing a page */
        !          66585: #define IDLE           3               /* ready to start the next job */
        !          66586: #define ENDOFJOB       4               /* readline() builds this up on EOF */
        !          66587: #define PRINTERERROR   5               /* PrinterError - eg. out of paper */
        !          66588: #define ERROR          6               /* some kind of PostScript error */
        !          66589: #define FLUSHING       7               /* throwing out the rest of the job */
        !          66590: #define INITIALIZING   8               /* printer is booting */
        !          66591: #define DISCONNECT     9               /* from Datakit! */
        !          66592: #define UNKNOWN                10              /* in case we missed anything */
        !          66593: #define NOSTATUS       11              /* no response from the printer */
        !          66594: 
        !          66595: #define WRITEPROCESS   12              /* dummy states for write process */
        !          66596: #define INTERACTIVE    13              /* and interactive mode */
        !          66597: 
        !          66598: /*
        !          66599:  *
        !          66600:  * An array of type Status is used, in getstatus(), to figure out the printer's
        !          66601:  * current state. Just helps convert strings representing the current state into
        !          66602:  * integer codes that other routines use.
        !          66603:  *
        !          66604:  */
        !          66605: 
        !          66606: typedef struct {
        !          66607:        char    *state;                 /* printer's current status */
        !          66608:        int     val;                    /* value returned by getstatus() */
        !          66609: } Status;
        !          66610: 
        !          66611: /*
        !          66612:  *
        !          66613:  * STATUS is used to initialize an array of type Status that translates the ASCII
        !          66614:  * strings returned by the printer into appropriate codes that can be used later
        !          66615:  * on in the program. getstatus() converts characters to lower case, so if you
        !          66616:  * add any entries make them lower case and put them in before the UNKNOWN entry.
        !          66617:  * The lookup terminates when we get a match or when an entry with a NULL state
        !          66618:  * is found.
        !          66619:  *
        !          66620:  */
        !          66621: 
        !          66622: #define STATUS                                                         \
        !          66623:                                                                        \
        !          66624:        {                                                               \
        !          66625:            "busy", BUSY,                                               \
        !          66626:            "waiting", WAITING,                                         \
        !          66627:            "printing", PRINTING,                                       \
        !          66628:            "idle", IDLE,                                               \
        !          66629:            "endofjob", ENDOFJOB,                                       \
        !          66630:            "printererror", PRINTERERROR,                               \
        !          66631:            "error", ERROR,                                             \
        !          66632:            "flushing", FLUSHING,                                       \
        !          66633:            "initializing", INITIALIZING,                               \
        !          66634:            NULL, UNKNOWN                                               \
        !          66635:        }
        !          66636: 
        !          66637: /*
        !          66638:  *
        !          66639:  * The baud rate can be set on the command line using the -b option. If you omit
        !          66640:  * it BAUDRATE will be used.
        !          66641:  *
        !          66642:  */
        !          66643: 
        !          66644: #define BAUDRATE       B9600
        !          66645: 
        !          66646: /*
        !          66647:  *
        !          66648:  * An array of type Baud is used, in routine getbaud(), to translate ASCII strings
        !          66649:  * into termio values that represent the requested baud rate.
        !          66650:  *
        !          66651:  */
        !          66652: 
        !          66653: typedef struct {
        !          66654:        char    *rate;                  /* string identifying the baud rate */
        !          66655:        short   val;                    /* and its termio.h value */
        !          66656: } Baud;
        !          66657: 
        !          66658: /*
        !          66659:  *
        !          66660:  * BAUDTABLE initializes the array that's used to translate baud rate requests
        !          66661:  * into termio values. It needs to end with an entry that has NULL assigned to
        !          66662:  * the rate field.
        !          66663:  *
        !          66664:  */
        !          66665: 
        !          66666: #define BAUDTABLE                                                      \
        !          66667:                                                                        \
        !          66668:        {                                                               \
        !          66669:            "9600", B9600,                                              \
        !          66670:            "B9600", B9600,                                             \
        !          66671:            "19200", EXTA,                                              \
        !          66672:            "19.2", EXTA,                                               \
        !          66673:            "B19200", EXTA,                                             \
        !          66674:            "EXTA", EXTA,                                               \
        !          66675:            "1200", B1200,                                              \
        !          66676:            "B1200", B1200,                                             \
        !          66677:            "2400", B2400,                                              \
        !          66678:            "B2400", B2400,                                             \
        !          66679:            "B4800", B4800,                                             \
        !          66680:            "4800", B4800,                                              \
        !          66681:            "38400", EXTB,                                              \
        !          66682:            "38.4", EXTB,                                               \
        !          66683:            "B38400", EXTB,                                             \
        !          66684:            "EXTB", EXTB,                                               \
        !          66685:            NULL, B9600                                                 \
        !          66686:        }
        !          66687: 
        !          66688: /*
        !          66689:  *
        !          66690:  * A few miscellaneous definitions. BLOCKSIZE is the default size of the buffer
        !          66691:  * used for reading the input files (changed with the -B option). MESGSIZE is the
        !          66692:  * size of the character array used to store printer status lines - don't make it
        !          66693:  * too small!
        !          66694:  *
        !          66695:  */
        !          66696: 
        !          66697: #define BLOCKSIZE      2048
        !          66698: #define MESGSIZE       512
        !          66699: 
        !          66700: /*
        !          66701:  *
        !          66702:  * Some of the non-integer valued functions used in postio.c.
        !          66703:  *
        !          66704:  */
        !          66705: 
        !          66706: char   *find();
        !          66707: 
        !          66708: char   *malloc();
        !          66709: char   *strtok();
        !          66710: 0707070014231402051006400057030057030000011227430522633076100003200000004703post.src/postio/postio.mkMAKE=/bin/make
        !          66711: MAKEFILE=postio.mk
        !          66712: 
        !          66713: SYSTEM=V9
        !          66714: VERSION=3.3.2
        !          66715: 
        !          66716: GROUP=bin
        !          66717: OWNER=bin
        !          66718: 
        !          66719: MAN1DIR=/tmp
        !          66720: POSTBIN=/usr/bin/postscript
        !          66721: 
        !          66722: COMMONDIR=../common
        !          66723: 
        !          66724: CFLGS=-O
        !          66725: LDFLGS=-s
        !          66726: 
        !          66727: CFLAGS=$(CFLGS) -I$(COMMONDIR)
        !          66728: LDFLAGS=$(LDFLGS)
        !          66729: 
        !          66730: DKLIB=-ldk
        !          66731: DKHOST=FALSE
        !          66732: DKSTREAMS=FALSE
        !          66733: 
        !          66734: #
        !          66735: # Need dk.h and libdk.a for Datakit support on System V. We recommend you put
        !          66736: # them in standard places. If it's not possible define DKHOSTDIR (below) and
        !          66737: # try uncommenting the following lines:
        !          66738: #
        !          66739: #      DKHOSTDIR=/usr
        !          66740: #      CFLAGS=$(CFLGS) -D$(SYSTEM) -I$(COMMONDIR) -I$(DKHOSTDIR)/include
        !          66741: #      EXTRA=-Wl,-L$(DKHOSTDIR)/lib
        !          66742: #
        !          66743: 
        !          66744: HFILES=postio.h\
        !          66745:        ifdef.h\
        !          66746:        $(COMMONDIR)/gen.h
        !          66747: 
        !          66748: OFILES=postio.o\
        !          66749:        ifdef.o\
        !          66750:        slowsend.o
        !          66751: 
        !          66752: all : postio
        !          66753: 
        !          66754: install : all
        !          66755:        @if [ ! -d "$(POSTBIN)" ]; then \
        !          66756:            mkdir $(POSTBIN); \
        !          66757:            chmod 755 $(POSTBIN); \
        !          66758:            chgrp $(GROUP) $(POSTBIN); \
        !          66759:            chown $(OWNER) $(POSTBIN); \
        !          66760:        fi
        !          66761:        cp postio $(POSTBIN)/postio
        !          66762:        @chmod 755 $(POSTBIN)/postio
        !          66763:        @chgrp $(GROUP) $(POSTBIN)/postio
        !          66764:        @chown $(OWNER) $(POSTBIN)/postio
        !          66765:        cp postio.1 $(MAN1DIR)/postio.1
        !          66766:        @chmod 644 $(MAN1DIR)/postio.1
        !          66767:        @chgrp $(GROUP) $(MAN1DIR)/postio.1
        !          66768:        @chown $(OWNER) $(MAN1DIR)/postio.1
        !          66769: 
        !          66770: clean :
        !          66771:        rm -f *.o
        !          66772: 
        !          66773: clobber : clean
        !          66774:        rm -f postio
        !          66775: 
        !          66776: postio ::
        !          66777:        @CFLAGS="$(CFLAGS)"; export CFLAGS; \
        !          66778:        DKLIB=" "; export DKLIB; \
        !          66779:        if [ "$(SYSTEM)" != V9 ]; \
        !          66780:            then \
        !          66781:                if [ "$(DKHOST)" = TRUE ]; then \
        !          66782:                    if [ "$(DKSTREAMS)" != FALSE ]; then \
        !          66783:                        if [ "$(DKSTREAMS)" = TRUE ]; \
        !          66784:                            then CFLAGS="$$CFLAGS -DDKSTREAMS=\\\"dknetty\\\""; \
        !          66785:                            else CFLAGS="$$CFLAGS -DDKSTREAMS=\\\"$(DKSTREAMS)\\\""; \
        !          66786:                        fi; \
        !          66787:                    fi; \
        !          66788:                    CFLAGS="$$CFLAGS -DDKHOST"; export CFLAGS; \
        !          66789:                    DKLIB=-ldk; export DKLIB; \
        !          66790:                    SYSTEM=SYSV; export SYSTEM; \
        !          66791:                fi; \
        !          66792:            else DKLIB=-lipc; export DKLIB; \
        !          66793:        fi; \
        !          66794:        CFLAGS="$$CFLAGS -D$$SYSTEM"; export CFLAGS; \
        !          66795:        $(MAKE) -e -f [email protected] compile
        !          66796: 
        !          66797: compile : $(OFILES)
        !          66798:        $(CC) $(CFLAGS) $(LDFLAGS) -o postio $(OFILES) $(EXTRA) $(DKLIB)
        !          66799: 
        !          66800: postio.o : $(HFILES)
        !          66801: slowsend.o : postio.h $(COMMONDIR)/gen.h
        !          66802: ifdef.o : ifdef.h $(COMMONDIR)/gen.h
        !          66803: 
        !          66804: changes :
        !          66805:        @trap "" 1 2 3 15; \
        !          66806:        sed \
        !          66807:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
        !          66808:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
        !          66809:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          66810:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          66811:            -e "s'^DKLIB=.*'DKLIB=$(DKLIB)'" \
        !          66812:            -e "s'^DKHOST=.*'DKHOST=$(DKHOST)'" \
        !          66813:            -e "s'^DKSTREAMS=.*'DKSTREAMS=$(DKSTREAMS)'" \
        !          66814:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
        !          66815:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
        !          66816:        $(MAKEFILE) >XXX.mk; \
        !          66817:        mv XXX.mk $(MAKEFILE)
        !          66818: 
        !          66819: 0707070014231405131006440057030057030000011225400522627503700003300000006206post.src/postio/slowsend.c/*
        !          66820:  *
        !          66821:  * Stuff that slows the transmission of jobs to PostScript printers. ONLY use it
        !          66822:  * if you appear to be having trouble with flow control. The idea is simple - only
        !          66823:  * send a significant amount of data when we're certain the printer is in the
        !          66824:  * WAITING state. Depends on receiving status messages and only works when the
        !          66825:  * program is run as a single process. What's done should stop printer generated
        !          66826:  * XOFFs - provided our input buffer (ie. blocksize) is sufficiently small. Was
        !          66827:  * originally included in the postio.tmp directory, but can now be requested with
        !          66828:  * the -S option. Considered eliminating this code, but some printers still depend
        !          66829:  * on it. In particular Datakit connections made using Datakit PVCs and DACUs seem
        !          66830:  * to have the most problems. Much of the new stuff that was added can't work when
        !          66831:  * you use this code and will be automatically disabled.
        !          66832:  *
        !          66833:  */
        !          66834: 
        !          66835: #include <stdio.h>
        !          66836: 
        !          66837: #include "gen.h"
        !          66838: #include "postio.h"
        !          66839: 
        !          66840: extern char    *block;
        !          66841: extern int     blocksize;
        !          66842: extern int     head;
        !          66843: extern int     tail;
        !          66844: extern char    *line;
        !          66845: extern char    mesg[];
        !          66846: extern int     ttyo;
        !          66847: 
        !          66848: /*****************************************************************************/
        !          66849: 
        !          66850: slowsend(fd_in)
        !          66851: 
        !          66852:     int                fd_in;                  /* next input file */
        !          66853: 
        !          66854: {
        !          66855: 
        !          66856: /*
        !          66857:  *
        !          66858:  * A slow version of send() that's very careful about when data is sent to the
        !          66859:  * printer. Should help prevent overflowing the printer's input buffer, provided
        !          66860:  * blocksize is sufficiently small (1024 should be safe). It's a totally kludged
        !          66861:  * up routine that should ONLY be used if you have constant transmission problems.
        !          66862:  * There's really no way it will be able to drive a printer much faster that about
        !          66863:  * six pages a minute, even for the simplest jobs. Get it by using the -S option.
        !          66864:  *
        !          66865:  */
        !          66866: 
        !          66867:     while ( readblock(fd_in) )
        !          66868:        switch ( getstatus(0) )  {
        !          66869:            case WAITING:
        !          66870:                    writeblock(blocksize);
        !          66871:                    break;
        !          66872: 
        !          66873:            case BUSY:
        !          66874:            case IDLE:
        !          66875:            case PRINTING:
        !          66876:                    writeblock(30);
        !          66877:                    break;
        !          66878: 
        !          66879:            case NOSTATUS:
        !          66880:            case UNKNOWN:
        !          66881:                    break;
        !          66882: 
        !          66883:            case PRINTERERROR:
        !          66884:                    sleep(30);
        !          66885:                    break;
        !          66886: 
        !          66887:            case ERROR:
        !          66888:                    fprintf(stderr, "%s", mesg);        /* for csw */
        !          66889:                    error(FATAL, "PostScript Error");
        !          66890:                    break;
        !          66891: 
        !          66892:            case FLUSHING:
        !          66893:                    error(FATAL, "Flushing Job");
        !          66894:                    break;
        !          66895: 
        !          66896:            case DISCONNECT:
        !          66897:                    error(FATAL, "Disconnected - printer may be offline");
        !          66898:                    break;
        !          66899: 
        !          66900:            default:
        !          66901:                    sleep(2);
        !          66902:                    break;
        !          66903:        }   /* End switch */
        !          66904: 
        !          66905: }   /* End of send */
        !          66906: 
        !          66907: /*****************************************************************************/
        !          66908: 
        !          66909: static writeblock(num)
        !          66910: 
        !          66911:     int                num;                    /* most bytes we'll write */
        !          66912: 
        !          66913: {
        !          66914: 
        !          66915:     int                count;                  /* bytes successfully written */
        !          66916: 
        !          66917: /*
        !          66918:  *
        !          66919:  * Called from send() when it's OK to send the next block to the printer. head
        !          66920:  * is adjusted after the write, and the number of bytes that were successfully
        !          66921:  * written is returned to the caller.
        !          66922:  *
        !          66923:  */
        !          66924: 
        !          66925:     if ( num > tail - head )
        !          66926:        num = tail - head;
        !          66927: 
        !          66928:     if ( (count = write(ttyo, &block[head], num)) == -1 )
        !          66929:        error(FATAL, "error writing to %s", line);
        !          66930:     else if ( count == 0 )
        !          66931:        error(FATAL, "printer appears to be offline");
        !          66932: 
        !          66933:     head += count;
        !          66934:     return(count);
        !          66935: 
        !          66936: }   /* End of writeblock */
        !          66937: 
        !          66938: /*****************************************************************************/
        !          66939: 
        !          66940: 0707070014231405141006440057030057030000011225440522627503700003600000003377post.src/postio/postio.mk.oldMAKE=/bin/make
        !          66941: MAKEFILE=postio.mk
        !          66942: 
        !          66943: SYSTEM=V9
        !          66944: VERSION=3.3.1
        !          66945: 
        !          66946: GROUP=bin
        !          66947: OWNER=bin
        !          66948: 
        !          66949: MAN1DIR=/tmp
        !          66950: POSTBIN=/usr/bin/postscript
        !          66951: 
        !          66952: COMMONDIR=../common
        !          66953: 
        !          66954: DKLIB=-lipc
        !          66955: CFLGS=-O
        !          66956: LDFLGS=-s
        !          66957: 
        !          66958: CFLAGS=$(CFLGS) -D$(SYSTEM) -I$(COMMONDIR)
        !          66959: LDFLAGS=$(LDFLGS)
        !          66960: 
        !          66961: #
        !          66962: # Need dk.h and libdk.a for Datakit support on System V. We recommend you put
        !          66963: # them in standard places. If it's not possible define DKHOSTDIR (below) and
        !          66964: # try uncommenting the following lines:
        !          66965: #
        !          66966: #      DKHOSTDIR=/usr
        !          66967: #      CFLAGS=$(CFLGS) -D$(SYSTEM) -I$(COMMONDIR) -I$(DKHOSTDIR)/include
        !          66968: #      EXTRA=-Wl,-L$(DKHOSTDIR)/lib
        !          66969: #
        !          66970: 
        !          66971: HFILES=postio.h\
        !          66972:        ifdef.h\
        !          66973:        $(COMMONDIR)/gen.h
        !          66974: 
        !          66975: OFILES=postio.o\
        !          66976:        ifdef.o\
        !          66977:        slowsend.o
        !          66978: 
        !          66979: all : postio
        !          66980: 
        !          66981: install : all
        !          66982:        @if [ ! -d "$(POSTBIN)" ]; then \
        !          66983:            mkdir $(POSTBIN); \
        !          66984:            chmod 755 $(POSTBIN); \
        !          66985:            chgrp $(GROUP) $(POSTBIN); \
        !          66986:            chown $(OWNER) $(POSTBIN); \
        !          66987:        fi
        !          66988:        cp postio $(POSTBIN)/postio
        !          66989:        @chmod 755 $(POSTBIN)/postio
        !          66990:        @chgrp $(GROUP) $(POSTBIN)/postio
        !          66991:        @chown $(OWNER) $(POSTBIN)/postio
        !          66992:        cp postio.1 $(MAN1DIR)/postio.1
        !          66993:        @chmod 644 $(MAN1DIR)/postio.1
        !          66994:        @chgrp $(GROUP) $(MAN1DIR)/postio.1
        !          66995:        @chown $(OWNER) $(MAN1DIR)/postio.1
        !          66996: 
        !          66997: clean :
        !          66998:        rm -f *.o
        !          66999: 
        !          67000: clobber : clean
        !          67001:        rm -f postio
        !          67002: 
        !          67003: postio : $(OFILES)
        !          67004:        $(CC) $(CFLAGS) $(LDFLAGS) -o postio $(OFILES) $(EXTRA) $(DKLIB)
        !          67005: 
        !          67006: postio.o : $(HFILES)
        !          67007: slowsend.o : postio.h $(COMMONDIR)/gen.h
        !          67008: ifdef.o : ifdef.h $(COMMONDIR)/gen.h
        !          67009: 
        !          67010: changes :
        !          67011:        @trap "" 1 2 3 15; \
        !          67012:        sed \
        !          67013:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
        !          67014:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
        !          67015:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          67016:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          67017:            -e "s'^CFLGS=.*'CFLGS=$(CFLGS)'" \
        !          67018:            -e "s'^DKLIB=.*'DKLIB=$(DKLIB)'" \
        !          67019:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
        !          67020:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
        !          67021:        $(MAKEFILE) >XXX.mk; \
        !          67022:        mv XXX.mk $(MAKEFILE)
        !          67023: 
        !          67024: 0707070014230006040407550057030057030000020074410522633076300002000000000000post.src/postmd0707070014230006051006440057030057030000010074420522627503700002700000002320post.src/postmd/README
        !          67025: A program that displays a matrix as a gray scale image on PostScript
        !          67026: printers. May be useful if you have a large matrix and want a simple
        !          67027: way to look for patterns. Expect a 600x600 matrix is an optimistic
        !          67028: upper limit on a 300 dpi printers using 5 shades of gray and 8.5x11
        !          67029: inch paper.
        !          67030: 
        !          67031: Matrix elements are a series of floating point numbers arranged in
        !          67032: the input file in row major order. By default each matrix is assumed
        !          67033: to be square and the number of rows (and columns) is set to the square
        !          67034: root of the number of elements in the input file. White space, including
        !          67035: newlines, is not used to determine the matrix dimensions. Each matrix
        !          67036: element is mapped into an integer in the range 0 to 255 (254 by default)
        !          67037: and PostScript's image operator maps that integer into a gray scale
        !          67038: appropriate for the printer.
        !          67039: 
        !          67040: The mapping from floating point matrix elements to integers is controlled
        !          67041: by an interval list and grayscale map. The default interval list is
        !          67042: "-1,0,1" which partitions the real line into 7 regions. The default
        !          67043: grayscale map gets darker as the regions move from left to right along
        !          67044: the real line. The -i option changes the interval list and the -g option
        !          67045: modifies the grayscale mapping. Check the man page for more details.
        !          67046: 
        !          67047: 0707070014230004201006400057030057030000010063100522633076300003100000016617post.src/postmd/postmd.1.ds dQ /usr/lib/postscript
        !          67048: .TH POSTMD 1 "DWB 3.2"
        !          67049: .SH NAME
        !          67050: .B postmd
        !          67051: \- matrix display program for PostScript printers
        !          67052: .SH SYNOPSIS
        !          67053: \*(mBpostmd\f1
        !          67054: .OP "" options []
        !          67055: .OP "" files []
        !          67056: .SH DESCRIPTION
        !          67057: .B postmd
        !          67058: reads a series of floating point numbers from
        !          67059: .IR files ,
        !          67060: translates them into a PostScript gray scale image,
        !          67061: and writes the results on the standard output.
        !          67062: In a typical application the numbers might be
        !          67063: the elements of a large matrix,
        !          67064: written in row major order,
        !          67065: while the printed image could help locate
        !          67066: patterns in the matrix.
        !          67067: If no
        !          67068: .I files
        !          67069: are specified, or if
        !          67070: .OP \-
        !          67071: is one of the input
        !          67072: .IR files ,
        !          67073: the standard input is read.
        !          67074: The following
        !          67075: .I options
        !          67076: are understood:
        !          67077: .TP 0.75i
        !          67078: .OP \-b num
        !          67079: Pack the bitmap in the output file using
        !          67080: .I num
        !          67081: byte patterns.
        !          67082: A value of 0 turns off all packing of the output file.
        !          67083: By default
        !          67084: .I num
        !          67085: is 6.
        !          67086: .TP
        !          67087: .OP \-c num
        !          67088: Print
        !          67089: .I num
        !          67090: copies of each page.
        !          67091: By default only one copy is printed.
        !          67092: .TP
        !          67093: .OP \-d dimen
        !          67094: Sets the default matrix dimensions for all input
        !          67095: .I files
        !          67096: to
        !          67097: .IR dimen .
        !          67098: The
        !          67099: .I dimen
        !          67100: string can be given as rows or rows\^\(mu\^columns.
        !          67101: If columns is omitted it will be set to rows.
        !          67102: By default
        !          67103: .B postmd
        !          67104: assumes each matrix is square and sets the number of rows
        !          67105: and columns to the square root of the number of elements in
        !          67106: each input file.
        !          67107: .TP
        !          67108: .OP \-g list
        !          67109: .I list
        !          67110: is a comma- or space-separated string of integers, each lying between
        !          67111: 0 and 255 inclusive,
        !          67112: that assigns PostScript gray scales to the regions of the real line
        !          67113: selected by the
        !          67114: .OP \-i
        !          67115: option.
        !          67116: 255 corresponds to white and 0 to black.
        !          67117: .B postmd
        !          67118: assigns a default gray scale that omits white (i.e., 255) and gets
        !          67119: darker as the regions move from left to right along the real line.
        !          67120: .TP
        !          67121: .OP \-i list
        !          67122: .I list
        !          67123: is a comma- or space-separated string of
        !          67124: .I N
        !          67125: floating point numbers that
        !          67126: partition the real line into
        !          67127: .RI 2 N +1
        !          67128: regions.
        !          67129: The
        !          67130: .I list
        !          67131: must be given in increasing numerical order.
        !          67132: The partitions are used to map floating point numbers read from the input
        !          67133: .I files
        !          67134: into gray scale integers that are assigned automatically by
        !          67135: .B postmd
        !          67136: or arbitrarily selected using the
        !          67137: .OP \-g
        !          67138: option.
        !          67139: The default interval
        !          67140: .I list
        !          67141: is ``\*(mB\-1,0,1\fP'' which partions the real line into 7 regions.
        !          67142: .TP
        !          67143: .OP \-m num
        !          67144: Magnify each logical page by the factor
        !          67145: .IR num .
        !          67146: Pages are scaled uniformly about the origin,
        !          67147: which by default is located at the center of
        !          67148: each page.
        !          67149: The default magnification is 1.0.
        !          67150: .TP
        !          67151: .OP \-n num
        !          67152: Print
        !          67153: .I num
        !          67154: logical pages on each piece of paper,
        !          67155: where
        !          67156: .I num
        !          67157: can be any positive integer.
        !          67158: By default
        !          67159: .I num
        !          67160: is set to 1.
        !          67161: .TP
        !          67162: .OP \-o list
        !          67163: Print pages whose numbers are given in the comma separated
        !          67164: .IR list .
        !          67165: The list contains single numbers
        !          67166: .I N
        !          67167: and ranges
        !          67168: .IR N1\-\|N2 .
        !          67169: A missing
        !          67170: .I N1
        !          67171: means the lowest numbered page, a missing
        !          67172: .I N2
        !          67173: means the highest.
        !          67174: .TP
        !          67175: .OP \-p mode
        !          67176: Print
        !          67177: .I files
        !          67178: in either \*(mBportrait\fP or \*(mBlandscape\fP
        !          67179: .IR mode .
        !          67180: Only the first character of
        !          67181: .I mode
        !          67182: is significant.
        !          67183: The default
        !          67184: .I mode
        !          67185: is \*(mBportrait\fP.
        !          67186: .TP
        !          67187: .OP \-w window
        !          67188: .I window
        !          67189: is a comma- or space-separated list of four positive integers that
        !          67190: select the upper left and lower right corners of a submatrix from
        !          67191: each of the input
        !          67192: .IR files .
        !          67193: Row and column indices start at 1 in the upper left corner and the
        !          67194: numbers in the input
        !          67195: .I files
        !          67196: are assumed to be written in row major order.
        !          67197: By default the entire matrix is displayed.
        !          67198: .TP
        !          67199: .OP \-x num
        !          67200: Translate the origin
        !          67201: .I num
        !          67202: inches along the positive x axis.
        !          67203: The default
        !          67204: coordinate system has the origin fixed at the
        !          67205: center of the page, with positive
        !          67206: x to the right and positive y up the page.
        !          67207: Positive
        !          67208: .I num
        !          67209: moves everything right.
        !          67210: The default offset is 0 inches.
        !          67211: .TP
        !          67212: .OP \-y num
        !          67213: Translate the origin
        !          67214: .I num
        !          67215: inches along the positive y axis.
        !          67216: Positive
        !          67217: .I num
        !          67218: moves everything up the page.
        !          67219: The default offset is 0.
        !          67220: .TP
        !          67221: .OP \-E name
        !          67222: Set the character encoding for text fonts to
        !          67223: .IR name .
        !          67224: Requesting
        !          67225: .I name
        !          67226: means include file
        !          67227: .MI \*(dQ/ name .enc \f1.
        !          67228: A nonexistent encoding file is silently ignored.
        !          67229: The default selects file
        !          67230: .MR \*(dQ/Default.enc .
        !          67231: .TP
        !          67232: .OP \-L file
        !          67233: Use
        !          67234: .I file
        !          67235: as the PostScript prologue.
        !          67236: .br
        !          67237: The default is
        !          67238: .MR \*(dQ/postmd.ps .
        !          67239: .PP
        !          67240: Three options allow insertion of arbitrary PostScript
        !          67241: at controlled points in the translation process:
        !          67242: .TP 0.75i
        !          67243: .OP \-C file
        !          67244: Copy
        !          67245: .I file
        !          67246: to the output file;
        !          67247: .I file
        !          67248: must contain legitimate PostScript.
        !          67249: .TP
        !          67250: .OP \-P string
        !          67251: Include
        !          67252: .I string
        !          67253: in the output file;
        !          67254: .I string
        !          67255: must be legitimate PostScript.
        !          67256: .TP
        !          67257: .OP \-R action
        !          67258: Requests special
        !          67259: .I action
        !          67260: (e.g.,
        !          67261: .MR manualfeed )
        !          67262: on a per page or global basis.
        !          67263: The
        !          67264: .I action
        !          67265: string can be given as
        !          67266: .IR request ,
        !          67267: .IM request : page\f1\|,
        !          67268: or
        !          67269: .IM request : page : file\f1\|.
        !          67270: If
        !          67271: .I page
        !          67272: is omitted or given as 0, the request
        !          67273: applies to all pages.
        !          67274: If
        !          67275: .I file
        !          67276: is omitted, the request
        !          67277: lookup is done in
        !          67278: .MR \*(dQ/ps.requests .
        !          67279: .PP
        !          67280: Only one matrix is displayed on each logical page,
        !          67281: and each of the input
        !          67282: .I files
        !          67283: must contain complete descriptions of exactly one matrix.
        !          67284: Matrix elements are floating point numbers arranged in row major order in
        !          67285: each input file.
        !          67286: White space, including newlines, is not used to determine matrix
        !          67287: dimensions.
        !          67288: By default
        !          67289: .B postmd
        !          67290: assumes each matrix is square and sets the number of rows and columns
        !          67291: to the square root of the number of elements in the input file.
        !          67292: Supplying default dimensions on the command line using the
        !          67293: .OP \-d
        !          67294: option overrides this default behavior, and in that case the
        !          67295: dimensions apply to all input
        !          67296: .IR files .
        !          67297: .PP
        !          67298: An optional header can be supplied with each input file and is used
        !          67299: to set the matrix dimensions, the partition of the real line, the gray scale
        !          67300: map, and a window into the matrix.
        !          67301: The header consists of keyword/value pairs, each on a separate line.
        !          67302: It begins on the first line of each input file and ends with the
        !          67303: first unrecognized string, which should be the first matrix element.
        !          67304: Values set in the header take precedence, but only apply to the
        !          67305: current input file.
        !          67306: Recognized header keywords are
        !          67307: .MR dimension ,
        !          67308: .MR interval ,
        !          67309: .MR grayscale ,
        !          67310: and
        !          67311: .MR window .
        !          67312: The syntax of the value string that follows each keyword parallels what is
        !          67313: accepted by the
        !          67314: .OP \-d ,
        !          67315: .OP \-i ,
        !          67316: .OP \-g ,
        !          67317: and
        !          67318: .OP \-w
        !          67319: options.
        !          67320: .SH EXAMPLES
        !          67321: For example, suppose
        !          67322: .I file
        !          67323: initially contains the 1000 numbers
        !          67324: in a 20\(mu50 matrix.
        !          67325: Then the command line:
        !          67326: .EX
        !          67327: postmd -d20x50 -i"-100 100" -g0,128,254,128,0 \f2file
        !          67328: .EE
        !          67329: and prepending the header,
        !          67330: .EX
        !          67331: dimension 20x50
        !          67332: interval -100.0 .100e+3
        !          67333: grayscale 0 128 254 128 0
        !          67334: .EE
        !          67335: to
        !          67336: .I file
        !          67337: and typing the command line:
        !          67338: .EX
        !          67339: postmd \f2file
        !          67340: .EE
        !          67341: produce exactly the same output.
        !          67342: The interval list partitions the real line into five regions and
        !          67343: the gray scale list maps numbers less than \-100 or greater than 100
        !          67344: into 0 (i.e., black), numbers equal to \-100 or 100 into 128
        !          67345: (i.e., 50 percent
        !          67346: black), and numbers between \-100 and 100 into 254 (i.e., almost white).
        !          67347: .SH DIAGNOSTICS
        !          67348: A 0 exit status is returned if
        !          67349: .I files
        !          67350: were successfully processed.
        !          67351: .SH WARNINGS
        !          67352: The largest matrix that can be adequately displayed is a function
        !          67353: of the interval and gray scale lists, the printer resolution,
        !          67354: and the paper size.
        !          67355: A 600\(mu600 matrix is an optimistic upper bound for a two element interval
        !          67356: list (i.e. five regions) using 8.5\(mu11 inch paper on a 300 dpi printer.
        !          67357: .PP
        !          67358: Using white (i.e., 255) in a gray scale list is not recommended and will not
        !          67359: show up in the legend and bar graph that
        !          67360: .B postmd
        !          67361: displays below each image.
        !          67362: .SH FILES
        !          67363: .MW \*(dQ/postmd.ps
        !          67364: .br
        !          67365: .MW \*(dQ/forms.ps
        !          67366: .br
        !          67367: .MW \*(dQ/ps.requests
        !          67368: .SH SEE ALSO
        !          67369: .BR dpost (1),
        !          67370: .BR postdaisy (1),
        !          67371: .BR postdmd (1),
        !          67372: .BR postio (1),
        !          67373: .BR postprint (1),
        !          67374: .BR postreverse (1),
        !          67375: .BR posttek (1),
        !          67376: .BR psencoding (1)
        !          67377: 0707070014230006071006440057030057030000010111200522627503700003100000103300post.src/postmd/postmd.c/*
        !          67378:  *
        !          67379:  * postmd - matrix display program for PostScript printers.
        !          67380:  *
        !          67381:  * A simple program that can be used to display a matrix as a gray scale image on
        !          67382:  * a PostScript printer using the image operator. Much of the code was borrowed
        !          67383:  * from postdmd, the bitmap display program DMD screen dumps. May help if you have
        !          67384:  * a large matix (of floating point numbers) and want a simple way to look for
        !          67385:  * patterns.
        !          67386:  *
        !          67387:  * Matrix elements are a series of floating point numbers arranged in the input
        !          67388:  * file in row major order. The actual matrix elements can be preceeded by a simple
        !          67389:  * header that sets things like the matrix dimensions, interval list, and possibly
        !          67390:  * a window into the matrix that we'll use for display. The dimension statement is
        !          67391:  * perhaps the most important. If present it determines the number of rows and
        !          67392:  * columns in the matrix. For example, either of the following defines a 50x50
        !          67393:  * matrix,
        !          67394:  *
        !          67395:  *             dimension       50
        !          67396:  *             dimension       50x50
        !          67397:  *
        !          67398:  * If no dimension statement appears in the input file, the matrix is assumed to
        !          67399:  * be square, and the number of rows (and columns) is set to the square root of
        !          67400:  * the number of elements in the input file.
        !          67401:  *
        !          67402:  * Each matrix element is mapped into an integer in the range 0 to 255 (actually
        !          67403:  * 254) and PostScript's image operator then maps that number into a gray scale
        !          67404:  * appropriate for the particular printer. The mapping from the floating point
        !          67405:  * matrix elements to integers is accomplished using an interval list that can be
        !          67406:  * set using the -i option. The format of the interval string is,
        !          67407:  *
        !          67408:  *             num1,num2,num3,...,numn
        !          67409:  *
        !          67410:  * where each num is a floating point number. The list must be given in increasing
        !          67411:  * numerical order. A list of n numbers partitions the real line into 2n+1 regions
        !          67412:  * given as,
        !          67413:  *
        !          67414:  *             region1         element < num1
        !          67415:  *             region2         element = num1
        !          67416:  *             region3         element < num2
        !          67417:  *             region4         element = num2
        !          67418:  *                .
        !          67419:  *                .
        !          67420:  *                .
        !          67421:  *             region2n        element = numn
        !          67422:  *             region2n+1      element > numn
        !          67423:  *
        !          67424:  * Every number in a region is mapped one integer in the range 0 to 254, and that
        !          67425:  * number, when displayed on a printer using the image operator, prints as a square
        !          67426:  * filled with a gray shade that reflects the integer that was chosen. 0 maps to
        !          67427:  * black and 255 maps to white (which by default will not be used).
        !          67428:  *
        !          67429:  * The default gray scale gets darker as the region number increases, but can be
        !          67430:  * changed by supplying a gray scale list with the -g option or in the optional
        !          67431:  * matrix header. The color map is again a comman or space separated list that
        !          67432:  * looks like,
        !          67433:  *
        !          67434:  *             color1,color2, ... ,color2n+1
        !          67435:  *
        !          67436:  * where color1 applies to region 1 and color2n+1 applies to region2n+1. Each
        !          67437:  * number in the list should be an integer between 0 and 255. If less than 2n+1
        !          67438:  * colors are given default assignments will be used for missing regions.
        !          67439:  *
        !          67440:  * The size of the matrix that we can display reasonably well is a function of the
        !          67441:  * number of elements in the interval list, paper size, and printer resolution.
        !          67442:  * For example a 300dpi printer using 8.5x11 inch paper gives us an image area of
        !          67443:  * about 2400x2400 pixels. An interval list of two numbers generates five separate
        !          67444:  * regions and will therefore need that many different shades of gray. Since we're
        !          67445:  * not using white we'll need to partion our image area into 4x4 pixel squares,
        !          67446:  * and that means a 600x600 matrix is about as big as we can go. In practice that's
        !          67447:  * optimistic, but the argument illustrates some of the limitations.
        !          67448:  *
        !          67449:  * A submatrix can be selected to display by windowing into the matrix. The window
        !          67450:  * list can be given using the -w option or can be set in the optional header that
        !          67451:  * can preceed each matrix.  The list should be a comma or space separated list
        !          67452:  * that looks like,
        !          67453:  *
        !          67454:  *             lower-column, lower-row, upper-column, upper-row
        !          67455:  *
        !          67456:  * where each element in the list must be a positive integer. Rows and columns in
        !          67457:  * the input matrix start at 1. The dimension of the displayed window will be from
        !          67458:  * lower-column to upper-column and from lower-row to upper-row inclusive.
        !          67459:  *
        !          67460:  * The encoding produced by the program is essentially identical to what's done
        !          67461:  * by postdmd. See the comments at the beginning of that program if you need more
        !          67462:  * details. The prologue also shares much of the same code. 
        !          67463:  *
        !          67464:  * The PostScript prologue is copied from *prologue before any of the input files
        !          67465:  * are translated. The program expects that the following PostScript procedures
        !          67466:  * are defined in that file:
        !          67467:  *
        !          67468:  *     setup
        !          67469:  *
        !          67470:  *       mark ... setup -
        !          67471:  *
        !          67472:  *         Handles special initialization stuff that depends on how this program
        !          67473:  *         was called. Expects to find a mark followed by key/value pairs on the
        !          67474:  *         stack. The def operator is applied to each pair up to the mark, then
        !          67475:  *         the default state is set up.
        !          67476:  *
        !          67477:  *     pagesetup
        !          67478:  *
        !          67479:  *       page pagesetup -
        !          67480:  *
        !          67481:  *         Does whatever is needed to set things up for the next page. Expects
        !          67482:  *         to find the current page number on the stack.
        !          67483:  *
        !          67484:  *     bitmap
        !          67485:  *
        !          67486:  *       columns rows bitmap -
        !          67487:  *
        !          67488:  *         Prints the image that's read as a hex string from standard input. The
        !          67489:  *         image consists of rows lines, each of which includes columns elements.
        !          67490:  *         Eight bits per pixel are used to encode the matrix elements.
        !          67491:  *
        !          67492:  *     labelmatrix
        !          67493:  *
        !          67494:  *       matrixname matrixlimits labelmatrix -
        !          67495:  *
        !          67496:  *         Prints string matrixname just below the lower left corner of the image
        !          67497:  *         and prints string martixlimits near the lower right corner. Outlines
        !          67498:  *         the entire image with a (one pixel wide) box and then draws tick marks
        !          67499:  *         along the top and left sides of the image. One tick mark is printed
        !          67500:  *         for every ten elements.
        !          67501:  *
        !          67502:  *     legend
        !          67503:  *
        !          67504:  *       n1 ... nN N c1 m1 ... cM mM total regions legend -
        !          67505:  *
        !          67506:  *         Prints the legend as a bar graph below the matrix image. n1 ... nN are
        !          67507:  *         strings that represent the interval list. c1 m1 ... cm mM are pairs
        !          67508:  *         that consist of a region's color and the statistics count. Actually
        !          67509:  *         the c's are trivial procedures that just leave a one character string
        !          67510:  *         on the stack when they're executed by image - which is the way the
        !          67511:  *         bar graph is drawn.
        !          67512:  *
        !          67513:  *     done
        !          67514:  *
        !          67515:  *       done
        !          67516:  *
        !          67517:  *         Makes sure the last page is printed. Only needed when we're printing
        !          67518:  *         more than one page on each sheet of paper.
        !          67519:  *
        !          67520:  * Many default values, like the magnification and orientation, are defined in 
        !          67521:  * the prologue, which is where they belong. If they're changed (by options), an
        !          67522:  * appropriate definition is made after the prologue is added to the output file.
        !          67523:  * The -P option passes arbitrary PostScript through to the output file. Among
        !          67524:  * other things it can be used to set (or change) values that can't be accessed by
        !          67525:  * other options.
        !          67526:  *
        !          67527:  */
        !          67528: 
        !          67529: #include <stdio.h>
        !          67530: #include <signal.h>
        !          67531: #include <ctype.h>
        !          67532: #include <fcntl.h>
        !          67533: 
        !          67534: #include "comments.h"                  /* PostScript file structuring comments */
        !          67535: #include "gen.h"                       /* general purpose definitions */
        !          67536: #include "path.h"                      /* for the prologue */
        !          67537: #include "ext.h"                       /* external variable declarations */
        !          67538: #include "postmd.h"                    /* special matrix display definitions */
        !          67539: 
        !          67540: char   *optnames = "a:b:c:d:g:i:m:n:o:p:w:x:y:A:C:E:J:L:P:R:DI";
        !          67541: 
        !          67542: char   *prologue = POSTMD;             /* default PostScript prologue */
        !          67543: char   *formfile = FORMFILE;           /* stuff for multiple pages per sheet */
        !          67544: char   *temp_dir = TEMPDIR;            /* temp directory for copying stdin */
        !          67545: 
        !          67546: int    formsperpage = 1;               /* page images on each piece of paper */
        !          67547: int    copies = 1;                     /* and this many copies of each sheet */
        !          67548: int    bytespp = 6;                    /* bytes per pattern - on output */
        !          67549: 
        !          67550: int    dostats = ON;                   /* permanent statistics flag */
        !          67551: int    nxtstat = ON;                   /* and the one for the next matrix */
        !          67552: 
        !          67553: char   *interval = DFLTILIST;          /* string representations of the interval */
        !          67554: char   *colormap = NULL;               /* color map */
        !          67555: char   *window = NULL;                 /* and window lists */
        !          67556: char   *matrixname = "pipe.end";       /* name for the next plot */
        !          67557: 
        !          67558: Ilist  ilist[128];                     /* active interval list and color map */
        !          67559: int    next = 0;                       /* one past the last element in ilist[] */
        !          67560: int    regions;                        /* an index assigned to the last region */
        !          67561: int    wlist[4];                       /* upper left and lower right corners */
        !          67562: 
        !          67563: int    page = 0;                       /* last page we worked on */
        !          67564: int    printed = 0;                    /* and the number of pages printed */
        !          67565: 
        !          67566: int    dfltrows = 0;                   /* default rows */
        !          67567: int    dfltcols = 0;                   /* and columns - changed by -d option */
        !          67568: int    rows;                           /* real number of rows */
        !          67569: int    columns;                        /* and columns in the matrix */
        !          67570: int    patcount = 0;                   /* will be set to columns * rows */
        !          67571: 
        !          67572: double element;                        /* next matrix element */
        !          67573: 
        !          67574: char   *raster = NULL;                 /* next raster line */
        !          67575: char   *rptr;                          /* next free byte in raster */
        !          67576: char   *eptr;                          /* one past the last byte in raster */
        !          67577: 
        !          67578: FILE   *fp_in = stdin;                 /* read from this file */
        !          67579: FILE   *fp_out = stdout;               /* and write stuff here */
        !          67580: FILE   *fp_acct = NULL;                /* for accounting data */
        !          67581: 
        !          67582: /*****************************************************************************/
        !          67583: 
        !          67584: main(agc, agv)
        !          67585: 
        !          67586:     int                agc;
        !          67587:     char       *agv[];
        !          67588: 
        !          67589: {
        !          67590: 
        !          67591: /*
        !          67592:  *
        !          67593:  * Bitmap display program for matrices. Only one matrix is allowed per input file,
        !          67594:  * and each one will be displayed on a page by itself. Input files consist of an
        !          67595:  * optional header followed by floating point numbers that represent the matrix
        !          67596:  * elements - in row major order.
        !          67597:  *
        !          67598:  */
        !          67599: 
        !          67600:     argc = agc;                                /* other routines may want them */
        !          67601:     argv = agv;
        !          67602: 
        !          67603:     prog_name = argv[0];               /* really just for error messages */
        !          67604: 
        !          67605:     init_signals();                    /* sets up interrupt handling */
        !          67606:     header();                          /* PostScript header comments */
        !          67607:     options();                         /* handle the command line options */
        !          67608:     setup();                           /* for PostScript */
        !          67609:     arguments();                       /* followed by each input file */
        !          67610:     done();                            /* print the last page etc. */
        !          67611:     account();                         /* job accounting data */
        !          67612: 
        !          67613:     exit(x_stat);                      /* not much could be wrong */
        !          67614: 
        !          67615: }   /* End of main */
        !          67616: 
        !          67617: /*****************************************************************************/
        !          67618: 
        !          67619: init_signals()
        !          67620: 
        !          67621: {
        !          67622: 
        !          67623: /*
        !          67624:  *
        !          67625:  * Make sure we handle interrupts.
        !          67626:  *
        !          67627:  */
        !          67628: 
        !          67629:     if ( signal(SIGINT, interrupt) == SIG_IGN )  {
        !          67630:        signal(SIGINT, SIG_IGN);
        !          67631:        signal(SIGQUIT, SIG_IGN);
        !          67632:        signal(SIGHUP, SIG_IGN);
        !          67633:     } else {
        !          67634:        signal(SIGHUP, interrupt);
        !          67635:        signal(SIGQUIT, interrupt);
        !          67636:     }   /* End else */
        !          67637: 
        !          67638:     signal(SIGTERM, interrupt);
        !          67639:     signal(SIGFPE, interrupt);
        !          67640: 
        !          67641: }   /* End of init_signals */
        !          67642: 
        !          67643: /*****************************************************************************/
        !          67644: 
        !          67645: header()
        !          67646: 
        !          67647: {
        !          67648: 
        !          67649:     int                ch;                     /* return value from getopt() */
        !          67650:     int                old_optind = optind;    /* for restoring optind - should be 1 */
        !          67651: 
        !          67652: /*
        !          67653:  *
        !          67654:  * Scans the option list looking for things, like the prologue file, that we need
        !          67655:  * right away but could be changed from the default. Doing things this way is an
        !          67656:  * attempt to conform to Adobe's latest file structuring conventions. In particular
        !          67657:  * they now say there should be nothing executed in the prologue, and they have
        !          67658:  * added two new comments that delimit global initialization calls. Once we know
        !          67659:  * where things really are we write out the job header, follow it by the prologue,
        !          67660:  * and then add the ENDPROLOG and BEGINSETUP comments.
        !          67661:  *
        !          67662:  */
        !          67663: 
        !          67664:     while ( (ch = getopt(argc, argv, optnames)) != EOF )
        !          67665:        if ( ch == 'L' )
        !          67666:            prologue = optarg;
        !          67667:        else if ( ch == '?' )
        !          67668:            error(FATAL, "");
        !          67669: 
        !          67670:     optind = old_optind;               /* get ready for option scanning */
        !          67671: 
        !          67672:     fprintf(stdout, "%s", CONFORMING);
        !          67673:     fprintf(stdout, "%s %s\n", VERSION, PROGRAMVERSION);
        !          67674:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, ATEND);
        !          67675:     fprintf(stdout, "%s %s\n", PAGES, ATEND);
        !          67676:     fprintf(stdout, "%s", ENDCOMMENTS);
        !          67677: 
        !          67678:     if ( cat(prologue) == FALSE )
        !          67679:        error(FATAL, "can't read %s", prologue);
        !          67680: 
        !          67681:     fprintf(stdout, "%s", ENDPROLOG);
        !          67682:     fprintf(stdout, "%s", BEGINSETUP);
        !          67683:     fprintf(stdout, "mark\n");
        !          67684: 
        !          67685: }   /* End of header */
        !          67686: 
        !          67687: /*****************************************************************************/
        !          67688: 
        !          67689: options()
        !          67690: 
        !          67691: {
        !          67692: 
        !          67693:     int                ch;                     /* return value from getopt() */
        !          67694: 
        !          67695: /*
        !          67696:  *
        !          67697:  * Reads and processes the command line options. Added the -P option so arbitrary
        !          67698:  * PostScript code can be passed through. Expect it could be useful for changing
        !          67699:  * definitions in the prologue for which options have not been defined.
        !          67700:  *
        !          67701:  */
        !          67702: 
        !          67703:     while ( (ch = getopt(argc, argv, optnames)) != EOF )  {
        !          67704:        switch ( ch )  {
        !          67705:            case 'a':                   /* aspect ratio */
        !          67706:                    fprintf(stdout, "/aspectratio %s def\n", optarg);
        !          67707:                    break;
        !          67708: 
        !          67709:            case 'b':                   /* bytes per pattern - on output */
        !          67710:                    bytespp = atoi(optarg);
        !          67711:                    break;
        !          67712: 
        !          67713:            case 'c':                   /* copies */
        !          67714:                    copies = atoi(optarg);
        !          67715:                    fprintf(stdout, "/#copies %s store\n", optarg);
        !          67716:                    break;
        !          67717: 
        !          67718:            case 'd':                   /* default matrix dimensions */
        !          67719:                    sscanf(optarg, "%dx%d", &dfltrows, &dfltcols);
        !          67720:                    break;
        !          67721: 
        !          67722:            case 'g':                   /* set the colormap (ie. grayscale) */
        !          67723:                    colormap = optarg;
        !          67724:                    break;
        !          67725: 
        !          67726:            case 'i':                   /* matrix element interval list */
        !          67727:                    interval = optarg;
        !          67728:                    break;
        !          67729: 
        !          67730:            case 'm':                   /* magnification */
        !          67731:                    fprintf(stdout, "/magnification %s def\n", optarg);
        !          67732:                    break;
        !          67733: 
        !          67734:            case 'n':                   /* forms per page */
        !          67735:                    formsperpage = atoi(optarg);
        !          67736:                    fprintf(stdout, "%s %s\n", FORMSPERPAGE, optarg);
        !          67737:                    fprintf(stdout, "/formsperpage %s def\n", optarg);
        !          67738:                    break;
        !          67739: 
        !          67740:            case 'o':                   /* output page list */
        !          67741:                    out_list(optarg);
        !          67742:                    break;
        !          67743: 
        !          67744:            case 'p':                   /* landscape or portrait mode */
        !          67745:                    if ( *optarg == 'l' )
        !          67746:                        fprintf(stdout, "/landscape true def\n");
        !          67747:                    else fprintf(stdout, "/landscape false def\n");
        !          67748:                    break;
        !          67749: 
        !          67750:            case 'w':                   /* set the window */
        !          67751:                    window = optarg;
        !          67752:                    break;
        !          67753: 
        !          67754:            case 'x':                   /* shift things horizontally */
        !          67755:                    fprintf(stdout, "/xoffset %s def\n", optarg);
        !          67756:                    break;
        !          67757: 
        !          67758:            case 'y':                   /* and vertically on the page */
        !          67759:                    fprintf(stdout, "/yoffset %s def\n", optarg);
        !          67760:                    break;
        !          67761: 
        !          67762:            case 'A':                   /* force job accounting */
        !          67763:            case 'J':
        !          67764:                    if ( (fp_acct = fopen(optarg, "a")) == NULL )
        !          67765:                        error(FATAL, "can't open accounting file %s", optarg);
        !          67766:                    break;
        !          67767: 
        !          67768:            case 'C':                   /* copy file straight to output */
        !          67769:                    if ( cat(optarg) == FALSE )
        !          67770:                        error(FATAL, "can't read %s", optarg);
        !          67771:                    break;
        !          67772: 
        !          67773:            case 'E':                   /* text font encoding */
        !          67774:                    fontencoding = optarg;
        !          67775:                    break;
        !          67776: 
        !          67777:            case 'L':                   /* PostScript prologue file */
        !          67778:                    prologue = optarg;
        !          67779:                    break;
        !          67780: 
        !          67781:            case 'P':                   /* PostScript pass through */
        !          67782:                    fprintf(stdout, "%s\n", optarg);
        !          67783:                    break;
        !          67784: 
        !          67785:            case 'R':                   /* special global or page level request */
        !          67786:                    saverequest(optarg);
        !          67787:                    break;
        !          67788: 
        !          67789:            case 'D':                   /* debug flag */
        !          67790:                    debug = ON;
        !          67791:                    break;
        !          67792: 
        !          67793:            case 'I':                   /* ignore FATAL errors */
        !          67794:                    ignore = ON;
        !          67795:                    break;
        !          67796: 
        !          67797:            case '?':                   /* don't understand the option */
        !          67798:                    error(FATAL, "");
        !          67799:                    break;
        !          67800: 
        !          67801:            default:                    /* don't know what to do for ch */
        !          67802:                    error(FATAL, "missing case for option %c\n", ch);
        !          67803:                    break;
        !          67804:        }   /* End switch */
        !          67805:     }   /* End while */
        !          67806: 
        !          67807:     argc -= optind;                    /* get ready for non-option args */
        !          67808:     argv += optind;
        !          67809: 
        !          67810: }   /* End of options */
        !          67811: 
        !          67812: /*****************************************************************************/
        !          67813: 
        !          67814: setup()
        !          67815: 
        !          67816: {
        !          67817: 
        !          67818: /*
        !          67819:  *
        !          67820:  * Handles things that must be done after the options are read but before the
        !          67821:  * input files are processed.
        !          67822:  *
        !          67823:  */
        !          67824: 
        !          67825:     writerequest(0, stdout);           /* global requests eg. manual feed */
        !          67826:     setencoding(fontencoding);
        !          67827:     fprintf(stdout, "setup\n");
        !          67828: 
        !          67829:     if ( formsperpage > 1 )  {
        !          67830:        if ( cat(formfile) == FALSE )
        !          67831:            error(FATAL, "can't read %s", formfile);
        !          67832:        fprintf(stdout, "%d setupforms\n", formsperpage);
        !          67833:     }  /* End if */
        !          67834: 
        !          67835:     fprintf(stdout, "%s", ENDSETUP);
        !          67836: 
        !          67837: }   /* End of setup */
        !          67838: 
        !          67839: /*****************************************************************************/
        !          67840: 
        !          67841: arguments()
        !          67842: 
        !          67843: {
        !          67844: 
        !          67845: /*
        !          67846:  *
        !          67847:  * Makes sure all the non-option command line arguments are processed. If we get
        !          67848:  * here and there aren't any arguments left, or if '-' is one of the input files
        !          67849:  * we'll process stdin.
        !          67850:  *
        !          67851:  */
        !          67852: 
        !          67853:     if ( argc < 1 )
        !          67854:        matrix();
        !          67855:     else  {                            /* at least one argument is left */
        !          67856:        while ( argc > 0 )  {
        !          67857:            matrixname = *argv;
        !          67858:            if ( strcmp(*argv, "-") == 0 )  {
        !          67859:                fp_in = stdin;
        !          67860:                matrixname = "pipe.end";
        !          67861:            } else if ( (fp_in = fopen(*argv, "r")) == NULL )
        !          67862:                error(FATAL, "can't open %s", *argv);
        !          67863:            matrix();
        !          67864:            if ( fp_in != stdin )
        !          67865:                fclose(fp_in);
        !          67866:            argc--;
        !          67867:            argv++;
        !          67868:        }   /* End while */
        !          67869:     }   /* End else */
        !          67870: 
        !          67871: }   /* End of arguments */
        !          67872: 
        !          67873: /*****************************************************************************/
        !          67874: 
        !          67875: done()
        !          67876: 
        !          67877: {
        !          67878: 
        !          67879: /*
        !          67880:  *
        !          67881:  * Finished with all the input files, so mark the end of the pages, make sure the
        !          67882:  * last page is printed, and restore the initial environment.
        !          67883:  *
        !          67884:  */
        !          67885: 
        !          67886:     fprintf(stdout, "%s", TRAILER);
        !          67887:     fprintf(stdout, "done\n");
        !          67888:     fprintf(stdout, "%s %d\n", PAGES, printed);
        !          67889: 
        !          67890:     if ( temp_file != NULL )
        !          67891:        unlink(temp_file);
        !          67892: 
        !          67893: }   /* End of done */
        !          67894: 
        !          67895: /*****************************************************************************/
        !          67896: 
        !          67897: account()
        !          67898: 
        !          67899: {
        !          67900: 
        !          67901: /*
        !          67902:  *
        !          67903:  * Writes an accounting record to *fp_acct provided it's not NULL. Accounting
        !          67904:  * is requested using the -A or -J options.
        !          67905:  *
        !          67906:  */
        !          67907: 
        !          67908:     if ( fp_acct != NULL )
        !          67909:        fprintf(fp_acct, " print %d\n copies %d\n", printed, copies);
        !          67910: 
        !          67911: }   /* End of account */
        !          67912: 
        !          67913: /*****************************************************************************/
        !          67914: 
        !          67915: matrix()
        !          67916: 
        !          67917: {
        !          67918: 
        !          67919:     int                count;                  /* pattern repeats this many times */
        !          67920:     long       total;                  /* expect this many patterns */
        !          67921: 
        !          67922: /*
        !          67923:  *
        !          67924:  * Reads a matrix from *fp_in, translates it into a PostScript gray scale image,
        !          67925:  * and writes the result on stdout. For now only one matrix is allowed per input
        !          67926:  * file. Matrix elements are floating point numbers arranged in row major order
        !          67927:  * in the input file. In addition each input file may contain an optional header
        !          67928:  * that defines special things like the dimension of the matrix, a window into
        !          67929:  * the matrix that will be displayed, and an interval list.
        !          67930:  *
        !          67931:  * If we're reading from stdin we first make a copy in a temporary file so we can
        !          67932:  * can properly position ourselves after we've looked for the header. Originally
        !          67933:  * wasn't always making a copy of stdin, but I've added a few things to what's
        !          67934:  * accepted in the header and this simplifies the job. An alternative would be
        !          67935:  * to always require a header and mark the end of it by some string. Didn't like
        !          67936:  * that approach much - may fix things up later.
        !          67937:  *
        !          67938:  */
        !          67939: 
        !          67940:     if ( fp_in == stdin )              /* make a copy so we can seek etc. */
        !          67941:        copystdin();
        !          67942: 
        !          67943:     rows = dfltrows;                   /* new dimensions for the next matrix */
        !          67944:     columns = dfltcols;
        !          67945: 
        !          67946:     buildilist(interval);              /* build the default ilist[] */
        !          67947:     addcolormap(colormap);             /* add the colormap - if not NULL */
        !          67948:     setwindow(window);                 /* and setup the initial matrix window */
        !          67949:     nxtstat = dostats;                 /* want statistics? */
        !          67950:     getheader();                       /* matrix dimensions at the very least */
        !          67951:     dimensions();                      /* make sure we have the dimensions etc. */
        !          67952: 
        !          67953:     patcount = 0;
        !          67954:     total = rows * columns;
        !          67955: 
        !          67956:     eptr = rptr + (wlist[2] - wlist[0] + 1);
        !          67957: 
        !          67958:     redirect(++page);
        !          67959: 
        !          67960:     fprintf(fp_out, "%s %d %d\n", PAGE, page, printed+1);
        !          67961:     fprintf(fp_out, "/saveobj save def\n");
        !          67962:     writerequest(printed+1, fp_out);
        !          67963:     fprintf(fp_out, "%d %d bitmap\n", wlist[2] - wlist[0] + 1, wlist[3] - wlist[1] + 1);
        !          67964: 
        !          67965:     while ( patcount != total && fscanf(fp_in, "%f", &element) != EOF )  {
        !          67966:        if ( inwindow() ) *rptr++ = mapfloat(element);
        !          67967:        if ( ++patcount % columns == 0 )
        !          67968:            if ( inrange() )
        !          67969:                putrow();
        !          67970:     }  /* End while */
        !          67971: 
        !          67972:     if ( total != patcount )
        !          67973:        error(FATAL, "matrix format error");
        !          67974: 
        !          67975:     labelmatrix();
        !          67976: 
        !          67977:     if ( fp_out == stdout ) printed++;
        !          67978: 
        !          67979:     fprintf(fp_out, "showpage\n");
        !          67980:     fprintf(fp_out, "saveobj restore\n");
        !          67981:     fprintf(fp_out, "%s %d %d\n", ENDPAGE, page, printed);
        !          67982: 
        !          67983: }   /* End of matrix */
        !          67984: 
        !          67985: /*****************************************************************************/
        !          67986: 
        !          67987: copystdin()
        !          67988: 
        !          67989: {
        !          67990: 
        !          67991:     int                fd_out;                 /* for the temporary file */
        !          67992:     int                fd_in;                  /* for stdin */
        !          67993:     int                buf[512];               /* buffer for reads and writes */
        !          67994:     int                count;                  /* number of bytes put in buf */
        !          67995: 
        !          67996: /*
        !          67997:  *
        !          67998:  * If we're reading the matrix from stdin and the matrix dimension isn't set by
        !          67999:  * a dimension statement at the beginning of the file we'll copy stdin to a
        !          68000:  * temporary file and reset *fp_in so reads come from the temp file. Simplifies
        !          68001:  * reading the header (if present), but is expensive.
        !          68002:  *
        !          68003:  */
        !          68004: 
        !          68005:     if ( temp_file != NULL )           /* been here already */
        !          68006:        unlink(temp_file);
        !          68007: 
        !          68008:     if ( (temp_file = tempnam(temp_dir, "post")) == NULL )
        !          68009:        error(FATAL, "can't generate temp file name");
        !          68010: 
        !          68011:     if ( (fd_out = creat(temp_file, 0660)) == -1 )
        !          68012:        error(FATAL, "can't create %s", temp_file);
        !          68013: 
        !          68014:     fd_in = fileno(stdin);
        !          68015: 
        !          68016:     while ( (count = read(fd_in, buf, sizeof(buf))) > 0 )
        !          68017:        if ( write(fd_out, buf, count) != count )
        !          68018:            error(FATAL, "error writing to %s", temp_file);
        !          68019: 
        !          68020:     close(fd_out);
        !          68021: 
        !          68022:     if ( (fp_in = fopen(temp_file, "r")) == NULL )
        !          68023:        error(FATAL, "can't open %s", temp_file);
        !          68024: 
        !          68025: }   /* End of copystdin */
        !          68026: 
        !          68027: /*****************************************************************************/
        !          68028: 
        !          68029: getheader()
        !          68030: 
        !          68031: {
        !          68032: 
        !          68033:     char       buf[512];               /* temporary string space */
        !          68034:     char       *cmap = NULL;           /* remember header colormap list */
        !          68035:     long       pos;                    /* for seeking back to first element */
        !          68036: 
        !          68037: /*
        !          68038:  *
        !          68039:  * Looks for the optional header information at the beginning of the input file,
        !          68040:  * reads it if it's there, and sets *fp_in to be just past the header. That should
        !          68041:  * be the beginning of the matrix element list. The recognized header keywords are
        !          68042:  * dimension, interval, colormap (or grayscale), window, name, and statistics. All
        !          68043:  * are optional, but may be useful in a spooling environment when the user doesn't
        !          68044:  * doesn't actually run the translator.
        !          68045:  *
        !          68046:  * The dimension statement specifies the number of rows and columns. For example
        !          68047:  * either of the following two lines define a 50 by 50 element matrix,
        !          68048:  *
        !          68049:  *     dimension       50
        !          68050:  *     dimension       50x50
        !          68051:  *
        !          68052:  * The first integer is the number of rows and the second, if given, is the number
        !          68053:  * of columns. If columns are missing from the dimension statement we assume the
        !          68054:  * matrix is square.
        !          68055:  *
        !          68056:  * interval can be used to redefine the interval list used for mapping floating
        !          68057:  * point numbers into integers in the range 0 to 254. The string following the
        !          68058:  * interval keyword has the same format as the -i option. For example to set the
        !          68059:  * interval list to -1, 0, and 1 you can add the line,
        !          68060:  *
        !          68061:  *     interval        -1,0,1
        !          68062:  *
        !          68063:  * The numbers are floats given in increasing order, and separated by commas or
        !          68064:  * blanks. The last interval list in a header takes precedence.
        !          68065:  *
        !          68066:  * colormap can be used to redefine the grayscale list.  The string following
        !          68067:  * the colormap keyword has the same format as the -g option.  For example
        !          68068:  *
        !          68069:  *     colormap        0,50,100,150,200,250
        !          68070:  * or  grayscale       0,50,100,150,200,250
        !          68071:  *
        !          68072:  * The window keyword can be used to select a submatrix. The numbers following
        !          68073:  * window are the upper left and lower right matix coordinates. May not be
        !          68074:  * implemented yet but shouldn't be difficult. For example
        !          68075:  *
        !          68076:  *     window          10 10 40 40
        !          68077:  *
        !          68078:  * selects the submatrix with corners at (10, 10) and (40, 40). The edges of the
        !          68079:  * window are included in the display.
        !          68080:  *
        !          68081:  * The name keyword can be used to define the title of the display.  For example,
        !          68082:  *
        !          68083:  *     name            Plot Of Matrix 1
        !          68084:  *
        !          68085:  * prints the string "Plot Of Matrix 1" at the top of the page. Everything up to
        !          68086:  * the next newline is taken as the name string.
        !          68087:  *
        !          68088:  */
        !          68089: 
        !          68090:     pos = ftell(fp_in);
        !          68091: 
        !          68092:     while ( fscanf(fp_in, "%s", buf) != EOF )  {
        !          68093:        if ( strncmp(buf, "dimension", strlen("dimension")) == 0 )
        !          68094:            fscanf(fp_in, "%dx%d", &rows, &columns);
        !          68095:        else if ( strncmp(buf, "window", strlen("window")) == 0 )  {
        !          68096:            fgets(buf, sizeof(buf), fp_in);
        !          68097:            setwindow(buf);
        !          68098:        } else if ( strncmp(buf, "name", strlen("name")) == 0 )  {
        !          68099:            fgets(buf, sizeof(buf), fp_in);
        !          68100:            matrixname = savestring(buf);
        !          68101:        } else if ( strncmp(buf, "colormap", strlen("colormap")) == 0 )  {
        !          68102:            fgets(buf, sizeof(buf), fp_in);
        !          68103:            cmap = savestring(buf);
        !          68104:        } else if ( strncmp(buf, "grayscale", strlen("grayscale")) == 0 )  {
        !          68105:            fgets(buf, sizeof(buf), fp_in);
        !          68106:            cmap = savestring(buf);
        !          68107:        } else if ( strncmp(buf, "interval", strlen("interval")) == 0 )  {
        !          68108:            fgets(buf, sizeof(buf), fp_in);
        !          68109:            buildilist(buf);
        !          68110:        } else if ( strncmp(buf, "statistics", strlen("statistics")) == 0 )  {
        !          68111:            fscanf(fp_in, "%s", buf);
        !          68112:            if ( strcmp(buf, "on") == 0 || strcmp(buf, "ON") == 0 )
        !          68113:                nxtstat = ON;
        !          68114:            else nxtstat = OFF;
        !          68115:        } else break;
        !          68116:        pos = ftell(fp_in);
        !          68117:     }  /* End while */
        !          68118: 
        !          68119:     addcolormap(cmap);                 /* must happen last */
        !          68120:     fseek(fp_in, pos, 0);              /* back to the start of the matrix */
        !          68121: 
        !          68122: }   /* End of getheader */
        !          68123: 
        !          68124: /*****************************************************************************/
        !          68125: 
        !          68126: dimensions()
        !          68127: 
        !          68128: {
        !          68129: 
        !          68130:     char       buf[100];               /* temporary storage for the elements */
        !          68131:     long       count = 0;              /* number of elements in the matrix */
        !          68132:     long       pos;                    /* matrix elements start here */
        !          68133: 
        !          68134: /*
        !          68135:  *
        !          68136:  * Need to know the dimensions of the matrix before we can go any farther. If
        !          68137:  * rows and columns are still 0 we'll read the entire input file, starting from
        !          68138:  * the current position, count the number of elements, take the square root of it,
        !          68139:  * and use it as the number of rows and columns. Then we seek back to the start
        !          68140:  * of the real matrix, make sure columns is set, and allocate enough memory for
        !          68141:  * storing each raster line. After we're certain we've got the number of rows and
        !          68142:  * columns we check the window coordinates, and if they're not legitimate they're
        !          68143:  * reset to cover the entire matrix.
        !          68144:  *
        !          68145:  */
        !          68146: 
        !          68147:     if ( rows == 0 )  {
        !          68148:        pos = ftell(fp_in);
        !          68149:        while ( fscanf(fp_in, "%s", buf) != EOF )
        !          68150:            count++;
        !          68151:        rows = sqrt((double) count);
        !          68152:        fseek(fp_in, pos, 0);
        !          68153:     }  /* End if */
        !          68154: 
        !          68155:     if ( columns <= 0 ) columns = rows;
        !          68156: 
        !          68157:     if ( raster != NULL ) free(raster);
        !          68158: 
        !          68159:     if ( (rptr = raster = malloc(columns)) == NULL )
        !          68160:        error(FATAL, "no memory");
        !          68161: 
        !          68162:     eptr = rptr + columns;
        !          68163: 
        !          68164:     if ( rows <= 0 || columns <= 0 )
        !          68165:        error(FATAL, "bad matrix dimensions");
        !          68166: 
        !          68167:     if ( wlist[0] > wlist[2] || wlist[1] > wlist[3] )  {
        !          68168:        wlist[0] = wlist[1] = 1;
        !          68169:        wlist[2] = columns;
        !          68170:        wlist[3] = rows;
        !          68171:     }  /* End if */
        !          68172: 
        !          68173: }   /* End of dimensions */
        !          68174: 
        !          68175: /*****************************************************************************/
        !          68176: 
        !          68177: buildilist(list)
        !          68178: 
        !          68179:     char       *list;                  /* use this as the interval list */
        !          68180: 
        !          68181: {
        !          68182: 
        !          68183:     static char        *templist = NULL;       /* a working copy of the list */
        !          68184:     char       *ptr;                   /* next number in *templist */
        !          68185:     int                i;                      /* loop index - for checking the list */
        !          68186: 
        !          68187: /*
        !          68188:  *
        !          68189:  * Reads string *list and builds up the ilist[] that will be used in the next
        !          68190:  * matrix. Since strtok() modifies the string it's parsing we make a copy first.
        !          68191:  * The format of the interval list is described in detail in the comments at the
        !          68192:  * beginning of this program. Basically consists of a comma or space separated
        !          68193:  * list of floating point numbers that must be given in increasing numerical order.
        !          68194:  * The list determines how floating point numbers are mapped into integers in the
        !          68195:  * range 0 to 254.
        !          68196:  *
        !          68197:  */
        !          68198: 
        !          68199:     if ( templist != NULL )            /* free the space used by the last list */
        !          68200:        free(templist);
        !          68201: 
        !          68202:     while ( isascii(*list) && isspace(*list) )
        !          68203:        list++;
        !          68204: 
        !          68205:     for ( ptr = list, regions = 3; *ptr != '\0'; ptr++ )  {
        !          68206:        if ( *ptr == ',' || *ptr == '/' || isspace(*ptr) )
        !          68207:            regions += 2;
        !          68208:        while ( isascii(*ptr) && isspace(*ptr) ) ptr++;
        !          68209:     }  /* End for */
        !          68210: 
        !          68211:     next = 0;
        !          68212:     templist = savestring(list);
        !          68213: 
        !          68214:     ptr = strtok(templist, ",/ \t\n");
        !          68215:     while ( ptr != NULL )  {
        !          68216:        ilist[next].count = 0;
        !          68217:        ilist[next++].color = 254 * (regions - 1 - next) / (regions - 1);
        !          68218:        ilist[next].val = atof(ptr);
        !          68219:        ilist[next].count = 0;
        !          68220:        ilist[next++].color = 254 * (regions - 1 - next) / (regions - 1);
        !          68221:        ptr = strtok(NULL, ",/ \t\n");
        !          68222:     }  /* End while */
        !          68223: 
        !          68224:     ilist[next].count = 0;
        !          68225:     ilist[next].color = 254 * (regions - 1 - next) / (regions - 1);
        !          68226: 
        !          68227:     if ( next == 0 )                   /* make sure we have a list */
        !          68228:        error(FATAL, "missing interval list");
        !          68229: 
        !          68230:     for ( i = 3; i < next; i += 2 )    /* that's in increasing numerical order */
        !          68231:        if ( ilist[i].val <= ilist[i-2].val )
        !          68232:            error(FATAL, "bad interval list");
        !          68233: 
        !          68234: }   /* End of buildilist */
        !          68235: 
        !          68236: /*****************************************************************************/
        !          68237: 
        !          68238: addcolormap(list)
        !          68239: 
        !          68240:     char       *list;                  /* use this color map */
        !          68241: 
        !          68242: {
        !          68243: 
        !          68244:     static char        *templist = NULL;       /* a working copy of the color list */
        !          68245:     char       *ptr;                   /* next color in *templist */
        !          68246:     int                i = 0;                  /* assigned to this region in ilist[] */
        !          68247: 
        !          68248: /*
        !          68249:  *
        !          68250:  * Assigns the integers in *list to the color field for the regions defined in
        !          68251:  * ilist[]. Assumes ilist[] has already been setup.
        !          68252:  *
        !          68253:  */
        !          68254: 
        !          68255:     if ( list != NULL )  {
        !          68256:        if ( templist != NULL )
        !          68257:            free(templist);
        !          68258:        templist = savestring(list);
        !          68259: 
        !          68260:        ptr = strtok(templist, ",/ \t\n");
        !          68261:        while ( ptr != NULL )  {
        !          68262:            ilist[i++].color = atoi(ptr) % 256;
        !          68263:            ptr = strtok(NULL, ",/ \t\n");
        !          68264:        }   /* End while */
        !          68265:     }  /* End if */
        !          68266: 
        !          68267: }   /* End of addcolormap */
        !          68268: 
        !          68269: /*****************************************************************************/
        !          68270: 
        !          68271: setwindow(list)
        !          68272: 
        !          68273:     char       *list;                  /* corners of window into the matrix */
        !          68274: 
        !          68275: {
        !          68276: 
        !          68277:     static char        *templist = NULL;       /* a working copy of the window list */
        !          68278:     char       *ptr;                   /* next window coordinate in *templist */
        !          68279:     int                i = 0;                  /* assigned to this region in wlist[] */
        !          68280: 
        !          68281: /*
        !          68282:  *
        !          68283:  * Sets up an optional window into the matrix.
        !          68284:  *
        !          68285:  */
        !          68286: 
        !          68287:     wlist[0] = wlist[1] = 1;
        !          68288:     wlist[2] = wlist[3] = 0;
        !          68289: 
        !          68290:     if ( list != NULL )  {
        !          68291:        if ( templist != NULL )
        !          68292:            free(templist);
        !          68293:        templist = savestring(list);
        !          68294: 
        !          68295:        ptr = strtok(templist, ",/ \t\n");
        !          68296:        while ( ptr != NULL )  {
        !          68297:            wlist[i++] = atoi(ptr);
        !          68298:            ptr = strtok(NULL, ",/ \t\n");
        !          68299:        }   /* End while */
        !          68300:     }  /* End if */
        !          68301: 
        !          68302: }   /* End of setwindow */
        !          68303: 
        !          68304: /*****************************************************************************/
        !          68305: 
        !          68306: inwindow()
        !          68307: 
        !          68308: {
        !          68309: 
        !          68310:     int                r;                      /* row of the patcount element */
        !          68311:     int                c;                      /* column of the patcount element */
        !          68312: 
        !          68313: /*
        !          68314:  *
        !          68315:  * Checks if the patcount element of the matrix is in the window.
        !          68316:  *
        !          68317:  */
        !          68318: 
        !          68319:     r = (patcount/columns) + 1;
        !          68320:     c = (patcount%columns) + 1;
        !          68321: 
        !          68322:     return((c >= wlist[0]) && (r >= wlist[1]) && (c <= wlist[2]) && (r <= wlist[3]));
        !          68323: 
        !          68324: }   /* End of inwindow */
        !          68325: 
        !          68326: /*****************************************************************************/
        !          68327: 
        !          68328: inrange()
        !          68329: 
        !          68330: {
        !          68331: 
        !          68332: /*
        !          68333:  *
        !          68334:  * Checks if the current row lies in the window. Used right before we output the
        !          68335:  * raster lines.
        !          68336:  *
        !          68337:  */
        !          68338: 
        !          68339:     return(((patcount/columns) >= wlist[1]) && ((patcount/columns) <= wlist[3]));
        !          68340: 
        !          68341: }   /* End of inrange */
        !          68342: 
        !          68343: /*****************************************************************************/
        !          68344: 
        !          68345: mapfloat(element)
        !          68346: 
        !          68347:     double     element;                /* floating point matrix element */
        !          68348: 
        !          68349: {
        !          68350: 
        !          68351:     int                i;                      /* loop index */
        !          68352: 
        !          68353: /*
        !          68354:  *
        !          68355:  * Maps element into an integer in the range 0 to 255, and returns the result to
        !          68356:  * the caller. Mapping is done using the color map that was saved in ilist[]. Also
        !          68357:  * updates the count field for the region that contains element - not good!
        !          68358:  *
        !          68359:  */
        !          68360: 
        !          68361:     for ( i = 1; i < next && ilist[i].val < element; i += 2 ) ;
        !          68362: 
        !          68363:     if ( i > next || element < ilist[i].val )
        !          68364:        i--;
        !          68365: 
        !          68366:     ilist[i].count++;
        !          68367:     return(ilist[i].color);
        !          68368: 
        !          68369: }   /* End of mapfloat */
        !          68370: 
        !          68371: /*****************************************************************************/
        !          68372: 
        !          68373: putrow()
        !          68374: 
        !          68375: {
        !          68376: 
        !          68377:     char       *p1, *p2;               /* starting and ending columns */
        !          68378:     int                n;                      /* set to bytes per pattern */
        !          68379:     int                i;                      /* loop index */
        !          68380: 
        !          68381: /*
        !          68382:  *
        !          68383:  * Takes the scanline that's been saved in *raster, encodes it according to the
        !          68384:  * value that's been assigned to bytespp, and writes the result to *fp_out. Each
        !          68385:  * line in the output bitmap is terminated by a 0 on a line by itself.
        !          68386:  *
        !          68387:  */
        !          68388: 
        !          68389:     n = (bytespp <= 0) ? columns : bytespp;
        !          68390: 
        !          68391:     for ( p1 = raster, p2 = raster + n; p1 < eptr; p1 = p2 )
        !          68392:        if ( patncmp(p1, n) == TRUE )  {
        !          68393:            while ( patncmp(p2, n) == TRUE ) p2 += n;
        !          68394:            p2 += n;
        !          68395:            fprintf(fp_out, "%d ", n);
        !          68396:            for ( i = 0; i < n; i++, p1++ )
        !          68397:                fprintf(fp_out, "%.2X", ((int) *p1) & 0377);
        !          68398:            fprintf(fp_out, " %d\n", (p2 - p1) / n);
        !          68399:        } else {
        !          68400:            while ( p2 < eptr && patncmp(p2, n) == FALSE ) p2 += n;
        !          68401:            if ( p2 > eptr ) p2 = eptr;
        !          68402:            fprintf(fp_out, "%d ", p2 - p1);
        !          68403:            while ( p1 < p2 )
        !          68404:                fprintf(fp_out, "%.2X", ((int) *p1++) & 0377);
        !          68405:            fprintf(fp_out, " 0\n");
        !          68406:        }   /* End else */
        !          68407: 
        !          68408:     fprintf(fp_out, "0\n");
        !          68409: 
        !          68410:     rptr = raster;
        !          68411: 
        !          68412: }   /* End of putrow */
        !          68413: 
        !          68414: /*****************************************************************************/
        !          68415: 
        !          68416: labelmatrix()
        !          68417: 
        !          68418: {
        !          68419: 
        !          68420:     int                total;                  /* number of elements in the window */
        !          68421:     int                i;                      /* loop index */
        !          68422: 
        !          68423: /*
        !          68424:  *
        !          68425:  * Responsible for generating the PostScript calls that label the matrix, generate
        !          68426:  * the legend, and print the matrix name.
        !          68427:  *
        !          68428:  */
        !          68429: 
        !          68430:     fprintf(fp_out, "(%s) ((%d, %d) to (%d, %d)) labelmatrix\n", matrixname,
        !          68431:                        wlist[0], wlist[1], wlist[2], wlist[3]);
        !          68432: 
        !          68433:     total = (wlist[2] - wlist[0] + 1) * (wlist[3] - wlist[1] + 1);
        !          68434: 
        !          68435:     if ( nxtstat == OFF )
        !          68436:        for ( i = 0; i < regions; i++ )
        !          68437:            ilist[i].count = 0;
        !          68438: 
        !          68439:     for ( i = 1; i < next; i += 2 )
        !          68440:        fprintf(fp_out, "(%g) ", ilist[i].val);
        !          68441:     fprintf(fp_out, "%d ", (regions - 1) / 2);
        !          68442: 
        !          68443:     for ( i = regions - 1; i >= 0; i-- )
        !          68444:        fprintf(fp_out, "{(\\%.3o)} %d ", ilist[i].color, ilist[i].count);
        !          68445:     fprintf(fp_out, "%d %d legend\n", total, regions);
        !          68446: 
        !          68447: }   /* End of labelmatrix */
        !          68448: 
        !          68449: /*****************************************************************************/
        !          68450: 
        !          68451: patncmp(p1, n)
        !          68452: 
        !          68453:     char       *p1;                    /* first patterns starts here */
        !          68454:     int                n;                      /* and extends this many bytes */
        !          68455: 
        !          68456: {
        !          68457: 
        !          68458:     char       *p2;                    /* address of the second pattern */
        !          68459: 
        !          68460: /*
        !          68461:  *
        !          68462:  * Compares the two n byte patterns *p1 and *(p1+n). FALSE if returned is they're
        !          68463:  * different or extend past the end of the current raster line.
        !          68464:  *
        !          68465:  */
        !          68466: 
        !          68467:     p2 = p1 + n;
        !          68468: 
        !          68469:     for ( ; n > 0; n--, p1++, p2++ )
        !          68470:        if ( p2 >= eptr || *p1 != *p2 )
        !          68471:            return(FALSE);
        !          68472: 
        !          68473:     return(TRUE);
        !          68474: 
        !          68475: }   /* End of patncmp */
        !          68476: 
        !          68477: /*****************************************************************************/
        !          68478: 
        !          68479: char *savestring(str)
        !          68480: 
        !          68481:     char       *str;                   /* save this string */
        !          68482: 
        !          68483: {
        !          68484: 
        !          68485:     char       *ptr = NULL;            /* at this address */
        !          68486: 
        !          68487: /*
        !          68488:  *
        !          68489:  * Copies string *str to a permanent place and returns the address to the caller.
        !          68490:  *
        !          68491:  */
        !          68492: 
        !          68493:     if ( str != NULL && *str != '\0' )  {
        !          68494:        if ( (ptr = malloc(strlen(str) + 1)) == NULL )
        !          68495:            error(FATAL, "no memory available for string %s", str);
        !          68496:        strcpy(ptr, str);
        !          68497:     }  /* End if */
        !          68498: 
        !          68499:     return(ptr);
        !          68500: 
        !          68501: }   /* End of savestring */
        !          68502: 
        !          68503: /*****************************************************************************/
        !          68504: 
        !          68505: redirect(pg)
        !          68506: 
        !          68507:     int                pg;                     /* next page we're printing */
        !          68508: 
        !          68509: {
        !          68510: 
        !          68511:     static FILE        *fp_null = NULL;        /* if output is turned off */
        !          68512: 
        !          68513: /*
        !          68514:  *
        !          68515:  * If we're not supposed to print page pg, fp_out will be directed to /dev/null,
        !          68516:  * otherwise output goes to stdout.
        !          68517:  *
        !          68518:  */
        !          68519: 
        !          68520:     if ( pg >= 0 && in_olist(pg) == ON )
        !          68521:        fp_out = stdout;
        !          68522:     else if ( (fp_out = fp_null) == NULL )
        !          68523:        fp_out = fp_null = fopen("/dev/null", "w");
        !          68524: 
        !          68525: }   /* End of redirect */
        !          68526: 
        !          68527: /*****************************************************************************/
        !          68528: 
        !          68529: 0707070014230006101006440057030057030000010112200522627503700003100000004462post.src/postmd/postmd.h/*
        !          68530:  *
        !          68531:  * An interval list used to map matrix elements into integers in the range 0 to
        !          68532:  * 254 representing shades of gray on a PostScript printer. The list can be given
        !          68533:  * using the -i option or can be set in the optional header that can preceed each
        !          68534:  * matrix. The list should be a comma or space separated list that looks like,
        !          68535:  *
        !          68536:  *             num1,num2, ... ,numn
        !          68537:  *
        !          68538:  * where each num is a floating point number. The list must be given in increasing
        !          68539:  * numerical order. The n numbers in the list partion the real line into 2n+1
        !          68540:  * regions given by,
        !          68541:  *
        !          68542:  *             region1         element < num1
        !          68543:  *             region2         element = num1
        !          68544:  *             region3         element < num2
        !          68545:  *             region4         element = num3
        !          68546:  *                .                 .
        !          68547:  *                .                 .
        !          68548:  *                .                 .
        !          68549:  *             region2n        element = numn
        !          68550:  *             region2n+1      element > numn
        !          68551:  *
        !          68552:  * Every number in a given region is mapped into an integer in the range 0 to 254
        !          68553:  * and that number, when displayed on a PostScript printer using the image operator,
        !          68554:  * prints as a square filled with a gray scale that reflects the integer that was
        !          68555:  * chosen. 0 maps to black and 255 white (that's why 255 is normally omitted).
        !          68556:  *
        !          68557:  * The shades of gray chosen by the program are normally generated automatically,
        !          68558:  * but can be reassigned using the -g option or by including a grayscale line in
        !          68559:  * the optional header. The grayscale list is comma or space separated list of
        !          68560:  * integers between 0 and 255 that's used to map individual regions into arbitray
        !          68561:  * shade of gray, thus overriding the default choice made in the program. The list
        !          68562:  * should look like,
        !          68563:  *
        !          68564:  *             color1,color2, ... ,color2n+1
        !          68565:  *
        !          68566:  * where color1 applies to region1 and color2n+1 applies to region2n+1. If less
        !          68567:  * than 2n+1 numbers are given the default assignments will be used for the missing
        !          68568:  * regions. Each color must be an integer in the range 0 to 255.
        !          68569:  *
        !          68570:  * The default interval list is given below. The default grayscale maps 254 (almost
        !          68571:  * white) into the first region and 0 (black) into the last.
        !          68572:  *
        !          68573:  */
        !          68574: 
        !          68575: #define DFLTILIST      "-1,0,1"
        !          68576: 
        !          68577: /*
        !          68578:  *
        !          68579:  * The active interval list is built from an interval string and stored in an array
        !          68580:  * whose elements are of type Ilist.
        !          68581:  *
        !          68582:  */
        !          68583: 
        !          68584: typedef struct  {
        !          68585:        double  val;                    /* only valid in kind is ENDPOINT */
        !          68586:        int     color;                  /* gray scale color */
        !          68587:        long    count;                  /* statistics for each region */
        !          68588: } Ilist;
        !          68589: 
        !          68590: /*
        !          68591:  *
        !          68592:  * Non-integer function declarations.
        !          68593:  *
        !          68594:  */
        !          68595: 
        !          68596: char   *savestring();
        !          68597: 
        !          68598: 0707070014230004311006400057030057030000010063340522633076300003200000004021post.src/postmd/postmd.mkMAKE=/bin/make
        !          68599: MAKEFILE=postmd.mk
        !          68600: 
        !          68601: SYSTEM=V9
        !          68602: VERSION=3.3.2
        !          68603: 
        !          68604: GROUP=bin
        !          68605: OWNER=bin
        !          68606: 
        !          68607: MAN1DIR=/tmp
        !          68608: POSTBIN=/usr/bin/postscript
        !          68609: POSTLIB=/usr/lib/postscript
        !          68610: 
        !          68611: COMMONDIR=../common
        !          68612: 
        !          68613: CFLGS=-O
        !          68614: LDFLGS=-s
        !          68615: 
        !          68616: CFLAGS=$(CFLGS) -I$(COMMONDIR)
        !          68617: LDFLAGS=$(LDFLGS)
        !          68618: 
        !          68619: HFILES=postmd.h\
        !          68620:        $(COMMONDIR)/comments.h\
        !          68621:        $(COMMONDIR)/ext.h\
        !          68622:        $(COMMONDIR)/gen.h\
        !          68623:        $(COMMONDIR)/path.h
        !          68624: 
        !          68625: OFILES=postmd.o\
        !          68626:        $(COMMONDIR)/glob.o\
        !          68627:        $(COMMONDIR)/misc.o\
        !          68628:        $(COMMONDIR)/request.o\
        !          68629:        $(COMMONDIR)/tempnam.o
        !          68630: 
        !          68631: all : postmd
        !          68632: 
        !          68633: install : all
        !          68634:        @if [ ! -d "$(POSTBIN)" ]; then \
        !          68635:            mkdir $(POSTBIN); \
        !          68636:            chmod 755 $(POSTBIN); \
        !          68637:            chgrp $(GROUP) $(POSTBIN); \
        !          68638:            chown $(OWNER) $(POSTBIN); \
        !          68639:        fi
        !          68640:        @if [ ! -d "$(POSTLIB)" ]; then \
        !          68641:            mkdir $(POSTLIB); \
        !          68642:            chmod 755 $(POSTLIB); \
        !          68643:            chgrp $(GROUP) $(POSTLIB); \
        !          68644:            chown $(OWNER) $(POSTLIB); \
        !          68645:        fi
        !          68646:        cp postmd $(POSTBIN)/postmd
        !          68647:        @chmod 755 $(POSTBIN)/postmd
        !          68648:        @chgrp $(GROUP) $(POSTBIN)/postmd
        !          68649:        @chown $(OWNER) $(POSTBIN)/postmd
        !          68650:        cp postmd.ps $(POSTLIB)/postmd.ps
        !          68651:        @chmod 644 $(POSTLIB)/postmd.ps
        !          68652:        @chgrp $(GROUP) $(POSTLIB)/postmd.ps
        !          68653:        @chown $(OWNER) $(POSTLIB)/postmd.ps
        !          68654:        cp postmd.1 $(MAN1DIR)/postmd.1
        !          68655:        @chmod 644 $(MAN1DIR)/postmd.1
        !          68656:        @chgrp $(GROUP) $(MAN1DIR)/postmd.1
        !          68657:        @chown $(OWNER) $(MAN1DIR)/postmd.1
        !          68658: 
        !          68659: clean :
        !          68660:        rm -f *.o
        !          68661: 
        !          68662: clobber : clean
        !          68663:        rm -f postmd
        !          68664: 
        !          68665: postmd : $(OFILES)
        !          68666:        $(CC) $(CFLAGS) $(LDFLAGS) -o postmd $(OFILES) -lm
        !          68667: 
        !          68668: postmd.o : $(HFILES)
        !          68669: 
        !          68670: $(COMMONDIR)/glob.o\
        !          68671: $(COMMONDIR)/misc.o\
        !          68672: $(COMMONDIR)/request.o\
        !          68673: $(COMMONDIR)/tempnam.o :
        !          68674:        @cd $(COMMONDIR); $(MAKE) -f common.mk SYSTEM=$(SYSTEM) `basename $@`
        !          68675: 
        !          68676: changes :
        !          68677:        @trap "" 1 2 3 15; \
        !          68678:        sed \
        !          68679:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
        !          68680:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
        !          68681:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          68682:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          68683:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
        !          68684:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
        !          68685:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
        !          68686:        $(MAKEFILE) >XXX.mk; \
        !          68687:        mv XXX.mk $(MAKEFILE); \
        !          68688:        sed \
        !          68689:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
        !          68690:        postmd.1 >XXX.1; \
        !          68691:        mv XXX.1 postmd.1
        !          68692: 
        !          68693: 0707070014230006121006440057030057030000010112400522627503700003200000007404post.src/postmd/postmd.ps%
        !          68694: % Version 3.3.2 prologue for matrix display files.
        !          68695: %
        !          68696: 
        !          68697: /#copies 1 store
        !          68698: /aspectratio 1 def
        !          68699: /font /Helvetica def
        !          68700: /formsperpage 1 def
        !          68701: /landscape false def
        !          68702: /magnification 1 def
        !          68703: /margin 10 def
        !          68704: /orientation 0 def
        !          68705: /rotation 1 def
        !          68706: /size 9 def
        !          68707: /statspace 1.6 def
        !          68708: /ticklength .06 def
        !          68709: /tickspacing 10 def
        !          68710: /xoffset 0 def
        !          68711: /yoffset 0 def
        !          68712: 
        !          68713: /useclippath true def
        !          68714: /pagebbox [0 0 612 792] def
        !          68715: 
        !          68716: /inch {72 mul} bind def
        !          68717: /min {2 copy gt {exch} if pop} bind def
        !          68718: 
        !          68719: /show {show} bind def          % so later references don't bind
        !          68720: /stringwidth {stringwidth} bind def
        !          68721: 
        !          68722: /setup {
        !          68723:        counttomark 2 idiv {def} repeat pop
        !          68724: 
        !          68725:        landscape {/orientation 90 orientation add def} if
        !          68726: 
        !          68727:        pagedimensions
        !          68728:        height width lt {
        !          68729:                /statspace statspace height width div mul def
        !          68730:                /size size height width div mul def
        !          68731:                /ticklength ticklength height width div mul def
        !          68732:        } if
        !          68733:        /height height margin sub statspace inch sub ticklength inch sub size 6 mul sub def
        !          68734:        /width width margin sub ticklength inch sub def
        !          68735:        xcenter ycenter translate
        !          68736:        orientation rotation mul rotate
        !          68737:        xoffset inch yoffset inch translate
        !          68738:        0 height 2 div height width min 2 div sub translate
        !          68739:        0 statspace inch 2 div translate
        !          68740:        magnification dup aspectratio mul scale
        !          68741: 
        !          68742:        0 setlinewidth
        !          68743: } def
        !          68744: 
        !          68745: /pagedimensions {
        !          68746:        useclippath {
        !          68747:                /pagebbox [clippath pathbbox newpath] def
        !          68748:        } if
        !          68749:        pagebbox aload pop
        !          68750:        4 -1 roll exch 4 1 roll 4 copy
        !          68751:        landscape {4 2 roll} if
        !          68752:        sub /width exch def
        !          68753:        sub /height exch def
        !          68754:        add 2 div /xcenter exch def
        !          68755:        add 2 div /ycenter exch def
        !          68756:        userdict /gotpagebbox true put
        !          68757: } def
        !          68758: 
        !          68759: /pagesetup {/page exch def} bind def
        !          68760: 
        !          68761: /bitmap {
        !          68762:        /scanlines exch def
        !          68763:        /scanlength exch def
        !          68764: 
        !          68765:        /picstr scanlength string def
        !          68766: 
        !          68767:        gsave
        !          68768:        height scanlines div width scanlength div min
        !          68769:        /scaling exch def
        !          68770:        scaling scaling scale
        !          68771: 
        !          68772:        scanlength neg 2 div scanlines neg 2 div translate
        !          68773:        scanlength scanlines scale
        !          68774:        getbitmap
        !          68775:        grestore
        !          68776: } bind def
        !          68777: 
        !          68778: /getbitmap {
        !          68779:        scanlength scanlines 8 [scanlength 0 0 scanlines neg 0 scanlines] {
        !          68780:                0 {
        !          68781:                        currentfile token pop dup
        !          68782:                        0 eq {pop pop exit} if
        !          68783:                        /charcount exch def
        !          68784:                        picstr 1 index charcount getinterval
        !          68785:                        /repl exch def
        !          68786:                        currentfile repl readhexstring pop pop
        !          68787:                        charcount add
        !          68788:                        currentfile token pop {
        !          68789:                                picstr 1 index repl putinterval
        !          68790:                                charcount add
        !          68791:                        } repeat
        !          68792:                } loop
        !          68793:                picstr
        !          68794:        } image
        !          68795: } bind def
        !          68796: 
        !          68797: /labelmatrix {
        !          68798:        /matrixlimits exch def
        !          68799:        /matrixname exch def
        !          68800: 
        !          68801:        gsave
        !          68802:        scaling scaling scale
        !          68803:        font findfont size scaling div scalefont setfont
        !          68804:        scanlength neg 2 div scanlines 2 div translate
        !          68805: 
        !          68806:        0 scanlines size 1.5 mul scaling div add neg moveto
        !          68807:        matrixname show
        !          68808: 
        !          68809:        scanlength scanlines size 1.5 mul scaling div add neg moveto
        !          68810:        matrixlimits stringwidth pop neg 0 rmoveto
        !          68811:        matrixlimits show
        !          68812: 
        !          68813:        newpath
        !          68814:        0 0 moveto
        !          68815:        scanlength 0 rlineto
        !          68816:        0 scanlines neg rlineto
        !          68817:        scanlength neg 0 rlineto
        !          68818:        closepath stroke
        !          68819: 
        !          68820:        scanlength tickspacing idiv 1 add tickspacing 0 ticks
        !          68821:        scanlines tickspacing idiv 1 add 0 tickspacing neg ticks
        !          68822:        grestore
        !          68823: } bind def
        !          68824: 
        !          68825: /ticks {
        !          68826:        /dy exch def
        !          68827:        /dx exch def
        !          68828: 
        !          68829:        /tl ticklength inch scaling div def
        !          68830:        newpath
        !          68831:        0 0 moveto
        !          68832:        {
        !          68833:                gsave dx 0 eq {tl neg 0} {0 tl} ifelse rlineto stroke grestore
        !          68834:                dx dy rmoveto
        !          68835:        } repeat
        !          68836: } bind def
        !          68837: 
        !          68838: /legend {
        !          68839:        /regions exch def
        !          68840:        /total exch def
        !          68841: 
        !          68842:        gsave
        !          68843:        width height min 2 div neg dup size 2 mul sub translate
        !          68844:        0 statspace inch neg translate
        !          68845: 
        !          68846:        gsave
        !          68847:        regions {
        !          68848:                gsave
        !          68849:                total div statspace inch size 2 mul sub mul size 2 mul add
        !          68850:                width height min regions div exch scale
        !          68851:                1 1 8 [1 0 0 1 0 0] 5 -1 roll image
        !          68852:                grestore
        !          68853:                width height min regions div 0 translate
        !          68854:        } repeat
        !          68855:        grestore
        !          68856: 
        !          68857:        width height min size 1.5 mul neg translate
        !          68858:        font findfont size scalefont setfont
        !          68859:        dup dup add 1 add width height min exch div /interval exch def
        !          68860:        {
        !          68861:                interval neg 0 translate
        !          68862:                interval 2 div neg 0 translate
        !          68863:                dup stringwidth pop 2 div neg 0 moveto show
        !          68864:                interval 2 div neg 0 translate
        !          68865:        } repeat
        !          68866:        grestore
        !          68867: } bind def
        !          68868: 
        !          68869: /done {/lastpage where {pop lastpage} if} def
        !          68870: 0707070014231310730407550057030057030000021027660522633077100002500000000000post.src/postreverse0707070014231307551006400057030057030000011031220522633077000004400000003131post.src/postreverse/postreverse.mkMAKE=/bin/make
        !          68871: MAKEFILE=postreverse.mk
        !          68872: 
        !          68873: SYSTEM=V9
        !          68874: VERSION=3.3.2
        !          68875: 
        !          68876: GROUP=bin
        !          68877: OWNER=bin
        !          68878: 
        !          68879: MAN1DIR=/tmp
        !          68880: POSTBIN=/usr/bin/postscript
        !          68881: 
        !          68882: COMMONDIR=../common
        !          68883: 
        !          68884: CFLGS=-O
        !          68885: LDFLGS=-s
        !          68886: 
        !          68887: CFLAGS=$(CFLGS) -I$(COMMONDIR)
        !          68888: LDFLAGS=$(LDFLGS)
        !          68889: 
        !          68890: HFILES=postreverse.h\
        !          68891:        $(COMMONDIR)/comments.h\
        !          68892:        $(COMMONDIR)/ext.h\
        !          68893:        $(COMMONDIR)/gen.h\
        !          68894:        $(COMMONDIR)/path.h
        !          68895: 
        !          68896: OFILES=postreverse.o\
        !          68897:        $(COMMONDIR)/glob.o\
        !          68898:        $(COMMONDIR)/misc.o\
        !          68899:        $(COMMONDIR)/tempnam.o
        !          68900: 
        !          68901: all : postreverse
        !          68902: 
        !          68903: install : all
        !          68904:        @if [ ! -d "$(POSTBIN)" ]; then \
        !          68905:            mkdir $(POSTBIN); \
        !          68906:            chmod 755 $(POSTBIN); \
        !          68907:            chgrp $(GROUP) $(POSTBIN); \
        !          68908:            chown $(OWNER) $(POSTBIN); \
        !          68909:        fi
        !          68910:        cp postreverse $(POSTBIN)/postreverse
        !          68911:        @chmod 755 $(POSTBIN)/postreverse
        !          68912:        @chgrp $(GROUP) $(POSTBIN)/postreverse
        !          68913:        @chown $(OWNER) $(POSTBIN)/postreverse
        !          68914:        cp postreverse.1 $(MAN1DIR)/postreverse.1
        !          68915:        @chmod 644 $(MAN1DIR)/postreverse.1
        !          68916:        @chgrp $(GROUP) $(MAN1DIR)/postreverse.1
        !          68917:        @chown $(OWNER) $(MAN1DIR)/postreverse.1
        !          68918: 
        !          68919: clean :
        !          68920:        rm -f *.o
        !          68921: 
        !          68922: clobber : clean
        !          68923:        rm -f postreverse
        !          68924: 
        !          68925: postreverse : $(OFILES)
        !          68926:        $(CC) $(CFLAGS) $(LDFLAGS) -o postreverse $(OFILES)
        !          68927: 
        !          68928: postreverse.o : $(HFILES)
        !          68929: 
        !          68930: $(COMMONDIR)/glob.o\
        !          68931: $(COMMONDIR)/misc.o\
        !          68932: $(COMMONDIR)/tempnam.o :
        !          68933:        @cd $(COMMONDIR); $(MAKE) -f common.mk SYSTEM=$(SYSTEM) `basename $@`
        !          68934: 
        !          68935: changes :
        !          68936:        @trap "" 1 2 3 15; \
        !          68937:        sed \
        !          68938:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
        !          68939:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
        !          68940:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          68941:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          68942:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
        !          68943:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
        !          68944:        $(MAKEFILE) >XXX.mk; \
        !          68945:        mv XXX.mk $(MAKEFILE)
        !          68946: 
        !          68947: 0707070014231310751006440057030057030000011027670522627503700003400000000555post.src/postreverse/README
        !          68948: A simple program that reverses the pages in PostScript files that
        !          68949: conform to Adobe's Version 1.0 or Version 2.0 file structuring
        !          68950: conventions.
        !          68951: 
        !          68952: postrevese also handles a small class of files that violate page
        !          68953: independence (eg. output from dpost) and can be used with all the
        !          68954: translators in this package. The output can be conforming even if
        !          68955: the input file wasn't.
        !          68956: 
        !          68957: 0707070014231310761006440057030057030000011030420522627503700004300000000604post.src/postreverse/postreverse.h/*
        !          68958:  *
        !          68959:  * An array of type Pages is used to keep track of the starting and ending byte
        !          68960:  * offsets for the pages we've been asked to print.
        !          68961:  *
        !          68962:  */
        !          68963: 
        !          68964: typedef struct {
        !          68965:        long    start;                  /* page starts at this byte offset */
        !          68966:        long    stop;                   /* and ends here */
        !          68967:        int     empty;                  /* dummy page if TRUE */
        !          68968: } Pages;
        !          68969: 
        !          68970: /*
        !          68971:  *
        !          68972:  * Some of the non-integer functions in postreverse.c.
        !          68973:  *
        !          68974:  */
        !          68975: 
        !          68976: char   *copystdin();
        !          68977: 
        !          68978: 0707070014231310771006440057030057030000011030600522627504000004300000040407post.src/postreverse/postreverse.c/*
        !          68979:  *
        !          68980:  * postreverse - reverse the page order in certain PostScript files.
        !          68981:  *
        !          68982:  * Page reversal relies on being able to locate sections of a document using file
        !          68983:  * structuring comments defined by Adobe (ie. the 1.0 and now 2.0 conventions) and
        !          68984:  * a few I've added. Among other things a minimally conforming document, according
        !          68985:  * to the 1.0 conventions,
        !          68986:  *
        !          68987:  *     1) Marks the end of the prologue with an %%EndProlog comment.
        !          68988:  *
        !          68989:  *     2) Starts each page with a %%Page: comment.
        !          68990:  *
        !          68991:  *     3) Marks the end of all the pages %%Trailer comment.
        !          68992:  *
        !          68993:  *     4) Obeys page independence (ie. pages can be arbitrarily rearranged).
        !          68994:  *
        !          68995:  * The most important change (at least for this program) that Adobe made in going
        !          68996:  * from the 1.0 to the 2.0 structuring conventions was in the prologue. They now
        !          68997:  * say the prologue should only define things, and the global initialization that
        !          68998:  * was in the prologue (1.0 conventions) should now come after the %%EndProlog
        !          68999:  * comment but before the first %%Page: comment and be bracketed by %%BeginSetup
        !          69000:  * and %%EndSetup comments. So a document that conforms to Adobe's 2.0 conventions,
        !          69001:  *
        !          69002:  *     1) Marks the end of the prologue (only definitions) with %%EndProlog.
        !          69003:  *
        !          69004:  *     2) Brackets global initialization with %%BeginSetup and %%EndSetup comments
        !          69005:  *        which come after the prologue but before the first %Page: comment.
        !          69006:  *
        !          69007:  *     3) Starts each page with a %%Page: comment.
        !          69008:  *
        !          69009:  *     4) Marks the end of all the pages with a %%Trailer comment.
        !          69010:  *
        !          69011:  *     5) Obeys page independence.
        !          69012:  *
        !          69013:  * postreverse can handle documents that follow the 1.0 or 2.0 conventions, but has
        !          69014:  * also been extended slightly so it works properly with the translators (primarily
        !          69015:  * dpost) supplied with this package. The page independence requirement has been
        !          69016:  * relaxed some. In particular definitions exported to the global environment from
        !          69017:  * within a page should be bracketed by %%BeginGlobal and %%EndGlobal comments.
        !          69018:  * postreverse pulls them out of each page and inserts them in the setup section
        !          69019:  * of the document, immediately before it writes the %%EndProlog (for version 1.0)
        !          69020:  * or %%EndSetup (for version 2.0) comments.
        !          69021:  *
        !          69022:  * In addition postreverse accepts documents that choose to mark the end of each
        !          69023:  * page with a %%EndPage: comment, which from a translator's point of view is often
        !          69024:  * a more natural approach. Both page boundary comments (ie. Page: and %%EndPage:)
        !          69025:  * are also accepted, but be warned that everything between consecutive %%EndPage:
        !          69026:  * and %%Page: comments will be ignored.
        !          69027:  *
        !          69028:  * So a document that will reverse properly with postreverse,
        !          69029:  *
        !          69030:  *     1) Marks the end of the prologue with %%EndProlog.
        !          69031:  *
        !          69032:  *     2) May have a %%BeginSetup/%%EndSetup comment pair before the first %%Page:
        !          69033:  *        comment that brackets any global initialization.
        !          69034:  *
        !          69035:  *     3) Marks the start of each page with a %%Page: comment, or the end of each
        !          69036:  *        page with a %%EndPage: comment. Both page boundary comments are allowed.
        !          69037:  *
        !          69038:  *     4) Marks the end of all the pages with a %%Trailer comment.
        !          69039:  *
        !          69040:  *     5) Obeys page independence or violates it to a rather limited extent and
        !          69041:  *        marks the violations with %%BeginGlobal and %%EndGlobal comments.
        !          69042:  *
        !          69043:  * If no file arguments are given postreverse copies stdin to a temporary file and
        !          69044:  * then processes that file. That means the input is read three times (rather than
        !          69045:  * two) whenever we handle stdin. That's expensive, and shouldn't be too difficult
        !          69046:  * to fix, but I haven't gotten around to it yet.
        !          69047:  *
        !          69048:  */
        !          69049: 
        !          69050: #include <stdio.h>
        !          69051: #include <signal.h>
        !          69052: #include <fcntl.h>
        !          69053: 
        !          69054: #include "comments.h"                  /* PostScript file structuring comments */
        !          69055: #include "gen.h"                       /* general purpose definitions */
        !          69056: #include "path.h"                      /* for temporary directory */
        !          69057: #include "ext.h"                       /* external variable declarations */
        !          69058: #include "postreverse.h"               /* a few special definitions */
        !          69059: 
        !          69060: int    page = 1;                       /* current page number */
        !          69061: int    forms = 1;                      /* forms per page in the input file */
        !          69062: 
        !          69063: char   *temp_dir = TEMPDIR;            /* temp directory for copying stdin */
        !          69064: 
        !          69065: Pages  pages[1000];                    /* byte offsets for all pages */
        !          69066: int    next_page = 0;                  /* next page goes here */
        !          69067: long   start;                          /* starting offset for next page */
        !          69068: long   endoff = -1;                    /* offset where TRAILER was found */
        !          69069: int    noreverse = FALSE;              /* don't reverse pages if TRUE */
        !          69070: char   *endprolog = ENDPROLOG;         /* occasionally changed to ENDSETUP */
        !          69071: 
        !          69072: double version = 3.3;                  /* of the input file */
        !          69073: int    ignoreversion = FALSE;          /* ignore possible forms.ps problems */
        !          69074: 
        !          69075: char   buf[2048];                      /* line buffer for input file */
        !          69076: 
        !          69077: FILE   *fp_in;                         /* stuff is read from this file */
        !          69078: FILE   *fp_out = stdout;               /* and written here */
        !          69079: 
        !          69080: /*****************************************************************************/
        !          69081: 
        !          69082: main(agc, agv)
        !          69083: 
        !          69084:     int                agc;
        !          69085:     char       *agv[];
        !          69086: 
        !          69087: {
        !          69088: 
        !          69089: /*
        !          69090:  *
        !          69091:  * A simple program that reverses the pages in specially formatted PostScript
        !          69092:  * files. Will work with all the translators in this package, and should handle
        !          69093:  * any document that conforms to Adobe's version 1.0 or 2.0 file structuring
        !          69094:  * conventions. Only one input file is allowed, and it can either be a named (on
        !          69095:  * the command line) file or stdin.
        !          69096:  *
        !          69097:  */
        !          69098: 
        !          69099:     argc = agc;                                /* other routines may want them */
        !          69100:     argv = agv;
        !          69101: 
        !          69102:     prog_name = argv[0];               /* just for error messages */
        !          69103: 
        !          69104:     init_signals();                    /* sets up interrupt handling */
        !          69105:     options();                         /* first get command line options */
        !          69106:     arguments();                       /* then process non-option arguments */
        !          69107:     done();                            /* and clean things up */
        !          69108: 
        !          69109:     exit(x_stat);                      /* not much could be wrong */
        !          69110: 
        !          69111: }   /* End of main */
        !          69112: 
        !          69113: /*****************************************************************************/
        !          69114: 
        !          69115: init_signals()
        !          69116: 
        !          69117: {
        !          69118: 
        !          69119: /*
        !          69120:  *
        !          69121:  * Makes sure we handle interrupts properly.
        !          69122:  *
        !          69123:  */
        !          69124: 
        !          69125:     if ( signal(SIGINT, interrupt) == SIG_IGN )  {
        !          69126:        signal(SIGINT, SIG_IGN);
        !          69127:        signal(SIGQUIT, SIG_IGN);
        !          69128:        signal(SIGHUP, SIG_IGN);
        !          69129:     } else {
        !          69130:        signal(SIGHUP, interrupt);
        !          69131:        signal(SIGQUIT, interrupt);
        !          69132:     }   /* End else */
        !          69133: 
        !          69134:     signal(SIGTERM, interrupt);
        !          69135: 
        !          69136: }   /* End of init_signals */
        !          69137: 
        !          69138: /*****************************************************************************/
        !          69139: 
        !          69140: options()
        !          69141: 
        !          69142: {
        !          69143: 
        !          69144:     int                ch;                     /* return value from getopt() */
        !          69145:     char       *optnames = "n:o:rvT:DI";
        !          69146: 
        !          69147:     extern char        *optarg;                /* used by getopt() */
        !          69148:     extern int optind;
        !          69149: 
        !          69150: /*
        !          69151:  *
        !          69152:  * Reads and processes the command line options. The -r option (ie. the one that
        !          69153:  * turns page reversal off) is really only useful if you want to take dpost output
        !          69154:  * and produce a page independent output file. In that case global definitions
        !          69155:  * made within pages and bracketed by %%BeginGlobal/%%EndGlobal comments will be
        !          69156:  * moved into the prologue or setup section of the document.
        !          69157:  *
        !          69158:  */
        !          69159: 
        !          69160:     while ( (ch = getopt(argc, argv, optnames)) != EOF )  {
        !          69161:        switch ( ch )  {
        !          69162:            case 'n':                   /* forms per page */
        !          69163:                    if ( (forms = atoi(optarg)) <= 0 )
        !          69164:                        error(FATAL, "illegal forms request %s", optarg);
        !          69165:                    break;
        !          69166: 
        !          69167:            case 'o':                   /* output page list */
        !          69168:                    out_list(optarg);
        !          69169:                    break;
        !          69170: 
        !          69171:            case 'r':                   /* don't reverse the pages */
        !          69172:                    noreverse = TRUE;
        !          69173:                    break;
        !          69174: 
        !          69175:            case 'v':                   /* ignore possible forms.ps problems */
        !          69176:                    ignoreversion = TRUE;
        !          69177:                    break;
        !          69178: 
        !          69179:            case 'T':                   /* temporary file directory */
        !          69180:                    temp_dir = optarg;
        !          69181:                    break;
        !          69182: 
        !          69183:            case 'D':                   /* debug flag */
        !          69184:                    debug = ON;
        !          69185:                    break;
        !          69186: 
        !          69187:            case 'I':                   /* ignore FATAL errors */
        !          69188:                    ignore = ON;
        !          69189:                    break;
        !          69190: 
        !          69191:            case '?':                   /* don't understand the option */
        !          69192:                    error(FATAL, "");
        !          69193:                    break;
        !          69194: 
        !          69195:            default:                    /* don't know what to do for ch */
        !          69196:                    error(FATAL, "missing case for option %c\n", ch);
        !          69197:                    break;
        !          69198:        }   /* End switch */
        !          69199:     }   /* End while */
        !          69200: 
        !          69201:     argc -= optind;                    /* get ready for non-option args */
        !          69202:     argv += optind;
        !          69203: 
        !          69204: }   /* End of options */
        !          69205: 
        !          69206: /*****************************************************************************/
        !          69207: 
        !          69208: arguments()
        !          69209: 
        !          69210: {
        !          69211: 
        !          69212:     char       *name;                  /* name of the input file */
        !          69213: 
        !          69214: /*
        !          69215:  *
        !          69216:  * postreverse only handles one input file at a time, so if there's more than one
        !          69217:  * argument left when we get here we'll quit. If none remain we copy stdin to a
        !          69218:  * temporary file and process that file.
        !          69219:  *
        !          69220:  */
        !          69221: 
        !          69222:     if ( argc > 1 )                    /* can't handle more than one file */
        !          69223:        error(FATAL, "too many arguments");
        !          69224: 
        !          69225:     if ( argc == 0 )                   /* copy stdin to a temporary file */
        !          69226:        name = copystdin();
        !          69227:     else name = *argv;
        !          69228: 
        !          69229:     if ( (fp_in = fopen(name, "r")) == NULL )
        !          69230:        error(FATAL, "can't open %s", name);
        !          69231: 
        !          69232:     reverse();
        !          69233: 
        !          69234: }   /* End of arguments */
        !          69235: 
        !          69236: /*****************************************************************************/
        !          69237: 
        !          69238: done()
        !          69239: 
        !          69240: {
        !          69241: 
        !          69242: /*
        !          69243:  *
        !          69244:  * Cleans things up after we've finished reversing the pages in the input file.
        !          69245:  * All that's really left to do is remove the temp file, provided we used one.
        !          69246:  *
        !          69247:  */
        !          69248: 
        !          69249:     if ( temp_file != NULL )
        !          69250:        unlink(temp_file);
        !          69251: 
        !          69252: }   /* End of done */
        !          69253: 
        !          69254: /*****************************************************************************/
        !          69255: 
        !          69256: char *copystdin()
        !          69257: 
        !          69258: {
        !          69259: 
        !          69260:     int                fd_out;                 /* for the temporary file */
        !          69261:     int                fd_in;                  /* for stdin */
        !          69262:     int                count;                  /* number of bytes put in buf[] */
        !          69263: 
        !          69264: /*
        !          69265:  *
        !          69266:  * Copies stdin to a temporary file and returns the pathname of that file to the
        !          69267:  * caller. It's an expensive way of doing things, because it means we end up
        !          69268:  * reading the input file three times - rather than just twice. Could probably be
        !          69269:  * fixed by creating the temporary file on the fly as we read the file the first
        !          69270:  * time.
        !          69271:  *
        !          69272:  */
        !          69273: 
        !          69274:     if ( (temp_file = tempnam(temp_dir, "post")) == NULL )
        !          69275:        error(FATAL, "can't generate temp file name");
        !          69276: 
        !          69277:     if ( (fd_out = creat(temp_file, 0660)) == -1 )
        !          69278:        error(FATAL, "can't open %s", temp_file);
        !          69279: 
        !          69280:     fd_in = fileno(stdin);
        !          69281: 
        !          69282:     while ( (count = read(fd_in, buf, sizeof(buf))) > 0 )
        !          69283:        if ( write(fd_out, buf, count) != count )
        !          69284:            error(FATAL, "error writing to %s", temp_file);
        !          69285: 
        !          69286:     close(fd_out);
        !          69287: 
        !          69288:     return(temp_file);
        !          69289: 
        !          69290: }   /* End of copystdin */
        !          69291: 
        !          69292: /*****************************************************************************/
        !          69293: 
        !          69294: reverse()
        !          69295: 
        !          69296: {
        !          69297: 
        !          69298: /*
        !          69299:  *
        !          69300:  * Begins by looking for the ENDPROLOG comment in the input file. Everything up to
        !          69301:  * that comment is copied to the output file. If the comment isn't found the entire
        !          69302:  * input file is copied and moreprolog() returns FALSE. Otherwise readpages() reads
        !          69303:  * the rest of the input file and remembers (in pages[]) where each page starts and
        !          69304:  * ends. In addition everything bracketed by %%BeginGlobal and %%EndGlobal comments
        !          69305:  * is immediately added to the new prologue (or setup section) and ends up being
        !          69306:  * removed from the individual pages. When readpages() finds the TRAILER comment
        !          69307:  * or gets to the end of the input file we go back to the pages[] array and use
        !          69308:  * the saved offsets to write the pages out in reverse order. Finally everything
        !          69309:  * from the TRAILER comment to the end of the input file is copied to the output
        !          69310:  * file.
        !          69311:  *
        !          69312:  */
        !          69313: 
        !          69314:     if ( moreprolog(ENDPROLOG) == TRUE )  {
        !          69315:        readpages();
        !          69316:        writepages();
        !          69317:        trailer();
        !          69318:     }  /* End if */
        !          69319: 
        !          69320: }   /* End of reverse */
        !          69321: 
        !          69322: /*****************************************************************************/
        !          69323: 
        !          69324: moreprolog(str)
        !          69325: 
        !          69326:     char       *str;                   /* copy everything up to this string */
        !          69327: 
        !          69328: {
        !          69329: 
        !          69330:     int                len;                    /* length of FORMSPERPAGE string */
        !          69331:     int                vlen;                   /* length of VERSION string */
        !          69332: 
        !          69333: /*
        !          69334:  *
        !          69335:  * Looks for string *str at the start of a line and copies everything up to that
        !          69336:  * string to the output file. If *str isn't found the entire input file will end
        !          69337:  * up being copied to the output file and FALSE will be returned to the caller.
        !          69338:  * The first call (made from reverse()) looks for ENDPROLOG. Any other call comes
        !          69339:  * from readpages() and will be looking for the ENDSETUP comment.
        !          69340:  * 
        !          69341:  */
        !          69342: 
        !          69343:     len = strlen(FORMSPERPAGE);
        !          69344:     vlen = strlen(VERSION);
        !          69345: 
        !          69346:     while ( fgets(buf, sizeof(buf), fp_in) != NULL )  {
        !          69347:        if ( strcmp(buf, str) == 0 )
        !          69348:            return(TRUE);
        !          69349:        else if ( strncmp(buf, FORMSPERPAGE, len) == 0 )
        !          69350:            forms = atoi(&buf[len+1]);
        !          69351:        else if ( strncmp(buf, VERSION, vlen) == 0 )
        !          69352:            version = atof(&buf[vlen+1]);
        !          69353:        fprintf(fp_out, "%s", buf);
        !          69354:     }  /* End while */
        !          69355: 
        !          69356:     return(FALSE);
        !          69357: 
        !          69358: }   /* End of moreprolog */
        !          69359: 
        !          69360: /*****************************************************************************/
        !          69361: 
        !          69362: readpages()
        !          69363: 
        !          69364: {
        !          69365: 
        !          69366:     int                endpagelen;             /* length of ENDPAGE */
        !          69367:     int                pagelen;                /* and PAGE strings */
        !          69368:     int                sawendpage = TRUE;      /* ENDPAGE equivalent marked last page */
        !          69369:     int                gotpage = FALSE;        /* TRUE disables BEGINSETUP stuff */
        !          69370: 
        !          69371: /*
        !          69372:  *
        !          69373:  * Records starting and ending positions of the requested pages (usually all of
        !          69374:  * them), puts global definitions in the prologue, and remembers where the TRAILER
        !          69375:  * was found.
        !          69376:  *
        !          69377:  * Page boundaries are marked by the strings PAGE, ENDPAGE, or perhaps both.
        !          69378:  * Application programs will normally find one or the other more convenient, so
        !          69379:  * in most cases only one kind of page delimiter will be found in a particular
        !          69380:  * document.
        !          69381:  *
        !          69382:  */
        !          69383: 
        !          69384:     pages[0].start = ftell(fp_in);     /* first page starts after ENDPROLOG */
        !          69385:     endprolog = ENDPROLOG;
        !          69386: 
        !          69387:     endpagelen = strlen(ENDPAGE);
        !          69388:     pagelen = strlen(PAGE);
        !          69389: 
        !          69390:     while ( fgets(buf, sizeof(buf), fp_in) != NULL )
        !          69391:        if ( buf[0] != '%' )
        !          69392:            continue;
        !          69393:        else if ( strncmp(buf, ENDPAGE, endpagelen) == 0 )  {
        !          69394:            if ( in_olist(page++) == ON )  {
        !          69395:                pages[next_page].empty = FALSE;
        !          69396:                pages[next_page++].stop = ftell(fp_in);
        !          69397:            }   /* End if */
        !          69398:            pages[next_page].start = ftell(fp_in);
        !          69399:            sawendpage = TRUE;
        !          69400:            gotpage = TRUE;
        !          69401:        } else if ( strncmp(buf, PAGE, pagelen) == 0 )  {
        !          69402:            if ( sawendpage == FALSE && in_olist(page++) == ON )  {
        !          69403:                pages[next_page].empty = FALSE;
        !          69404:                pages[next_page++].stop = ftell(fp_in) - strlen(buf);
        !          69405:            }   /* End if */
        !          69406:            pages[next_page].start = ftell(fp_in) - strlen(buf);
        !          69407:            sawendpage = FALSE;
        !          69408:            gotpage = TRUE;
        !          69409:        } else if ( gotpage == FALSE && strcmp(buf, BEGINSETUP) == 0 )  {
        !          69410:            fprintf(fp_out, "%s", endprolog);
        !          69411:            fprintf(fp_out, "%s", BEGINSETUP);
        !          69412:            moreprolog(ENDSETUP);
        !          69413:            endprolog = ENDSETUP;
        !          69414:        } else if ( strcmp(buf, BEGINGLOBAL) == 0 )  {
        !          69415:            moreprolog(ENDGLOBAL);
        !          69416:        } else if ( strcmp(buf, TRAILER) == 0 )  {
        !          69417:            if ( sawendpage == FALSE )
        !          69418:                pages[next_page++].stop = ftell(fp_in) - strlen(buf);
        !          69419:            endoff = ftell(fp_in);
        !          69420:            break;
        !          69421:        }   /* End if */
        !          69422: 
        !          69423: }   /* End of readpages */
        !          69424: 
        !          69425: /*****************************************************************************/
        !          69426: 
        !          69427: writepages()
        !          69428: 
        !          69429: {
        !          69430: 
        !          69431:     int                i, j, k;                /* loop indices */
        !          69432: 
        !          69433: /*
        !          69434:  *
        !          69435:  * Goes through the pages[] array, usually from the bottom up, and writes out all
        !          69436:  * the pages. Documents that print more than one form per page cause things to get
        !          69437:  * a little more complicated. Each physical page has to have its subpages printed
        !          69438:  * in the correct order, and we have to build a few dummy subpages for the last
        !          69439:  * (and now first) sheet of paper, otherwise things will only occasionally work.
        !          69440:  *
        !          69441:  */
        !          69442: 
        !          69443:     fprintf(fp_out, "%s", endprolog);
        !          69444: 
        !          69445:     if ( noreverse == FALSE )          /* fill out the first page */
        !          69446:        for ( i = (forms - next_page % forms) % forms; i > 0; i--, next_page++ )
        !          69447:            pages[next_page].empty = TRUE;
        !          69448:     else forms = next_page;            /* turns reversal off in next loop */
        !          69449: 
        !          69450:     for ( i = next_page - forms; i >= 0; i -= forms )
        !          69451:        for ( j = i, k = 0; k < forms; j++, k++ )
        !          69452:            if ( pages[j].empty == TRUE ) {
        !          69453:                if ( ignoreversion == TRUE || version > 3.1 ) {
        !          69454:                    fprintf(fp_out, "%s 0 0\n", PAGE);
        !          69455:                    fprintf(fp_out, "/saveobj save def\n");
        !          69456:                    fprintf(fp_out, "showpage\n");
        !          69457:                    fprintf(fp_out, "saveobj restore\n");
        !          69458:                    fprintf(fp_out, "%s 0 0\n", ENDPAGE);
        !          69459:                } else {
        !          69460:                    fprintf(fp_out, "%s 0 0\n", PAGE);
        !          69461:                    fprintf(fp_out, "save showpage restore\n");
        !          69462:                    fprintf(fp_out, "%s 0 0\n", ENDPAGE);
        !          69463:                }   /* End else */
        !          69464:            } else copypage(pages[j].start, pages[j].stop);
        !          69465: 
        !          69466: }   /* End of writepages */
        !          69467: 
        !          69468: /*****************************************************************************/
        !          69469: 
        !          69470: copypage(start, stop)
        !          69471: 
        !          69472:     long       start;                  /* starting from this offset */
        !          69473:     long       stop;                   /* and ending here */
        !          69474: 
        !          69475: {
        !          69476: 
        !          69477: /*
        !          69478:  *
        !          69479:  * Copies the page beginning at offset start and ending at stop to the output
        !          69480:  * file. Global definitions are skipped since they've already been added to the
        !          69481:  * prologue.
        !          69482:  *
        !          69483:  */
        !          69484: 
        !          69485:     fseek(fp_in, start, 0);
        !          69486: 
        !          69487:     while ( ftell(fp_in) < stop && fgets(buf, sizeof(buf), fp_in) != NULL )
        !          69488:        if ( buf[0] == '%' && strcmp(buf, BEGINGLOBAL) == 0 )
        !          69489:            while ( fgets(buf, sizeof(buf), fp_in) != NULL && strcmp(buf, ENDGLOBAL) != 0 ) ;
        !          69490:        else fprintf(fp_out, "%s", buf);
        !          69491: 
        !          69492: }   /* End of copypage */
        !          69493: 
        !          69494: /*****************************************************************************/
        !          69495: 
        !          69496: trailer()
        !          69497: 
        !          69498: {
        !          69499: 
        !          69500: /*
        !          69501:  *
        !          69502:  * Makes sure everything from the TRAILER string to EOF is copied to the output
        !          69503:  * file.
        !          69504:  *
        !          69505:  */
        !          69506: 
        !          69507:     if ( endoff > 0 )  {
        !          69508:        fprintf(fp_out, "%s", TRAILER);
        !          69509:        fseek(fp_in, endoff, 0);
        !          69510:        while ( fgets(buf, sizeof(buf), fp_in) != NULL )
        !          69511:            fprintf(fp_out, "%s", buf);
        !          69512:     }  /* End if */
        !          69513: 
        !          69514: }   /* End of trailer */
        !          69515: 
        !          69516: /*****************************************************************************/
        !          69517: 
        !          69518: 0707070014231311001006440057030057030000011030440522627504000004300000004523post.src/postreverse/postreverse.1.TH POSTREVERSE 1
        !          69519: .SH NAME
        !          69520: .B postreverse
        !          69521: \- reverse the page order in a PostScript file
        !          69522: .SH SYNOPSIS
        !          69523: \*(mBpostreverse\f1
        !          69524: .OP "" options []
        !          69525: .OP "" file []
        !          69526: .SH DESCRIPTION
        !          69527: .B postreverse
        !          69528: reverses the page order in files that conform to Adobe's
        !          69529: Version 1.0 or Version 2.0 PostScript file structuring conventions,
        !          69530: and writes the results on the standard output.
        !          69531: Only one input
        !          69532: .I file
        !          69533: is allowed and if no
        !          69534: .I file
        !          69535: is specified, the standard input is read.
        !          69536: The following
        !          69537: .I options
        !          69538: are understood:
        !          69539: .TP  0.75i
        !          69540: .OP \-o list
        !          69541: Select pages whose numbers are given in the comma-separated
        !          69542: .IR list .
        !          69543: The list contains single numbers
        !          69544: .I N
        !          69545: and ranges
        !          69546: .IR N1\-\|N2 .
        !          69547: A missing
        !          69548: .I N1
        !          69549: means the lowest numbered page, a missing
        !          69550: .I N2
        !          69551: means the highest.
        !          69552: .TP 
        !          69553: .OP \-r
        !          69554: Do not reverse the pages in
        !          69555: .IR file .
        !          69556: .TP 
        !          69557: .OP \-T dir
        !          69558: Use
        !          69559: .I dir
        !          69560: as the temporary file directory when
        !          69561: reading from the standard input.
        !          69562: By default
        !          69563: .I dir
        !          69564: is set to
        !          69565: .MR /tmp .
        !          69566: .PP
        !          69567: .B postreverse
        !          69568: can handle a limited class of files
        !          69569: that violate page independence,
        !          69570: provided all global definitions are bracketed by
        !          69571: .MW %%BeginGlobal
        !          69572: and
        !          69573: .MW %%EndGlobal
        !          69574: comments.
        !          69575: In addition, files that mark the end of each page with
        !          69576: .MW "%%EndPage:\ label\ ordinal"
        !          69577: comments will also reverse properly, provided the prologue and
        !          69578: trailer sections can be located.
        !          69579: If
        !          69580: .B postreverse
        !          69581: fails to find an
        !          69582: .MW %%EndProlog
        !          69583: or
        !          69584: .MW %%EndSetup
        !          69585: comment the entire
        !          69586: .I file
        !          69587: is copied, unmodified, to the standard output.
        !          69588: .PP
        !          69589: Since global definitions are pulled out of individual
        !          69590: pages and put in the prologue, the output file can be
        !          69591: minimally conforming, even if the input
        !          69592: .I file
        !          69593: was not.
        !          69594: .SH EXAMPLES
        !          69595: Select pages 1 to 100 from
        !          69596: .I file
        !          69597: and reverse the pages:
        !          69598: .EX
        !          69599: postreverse -o1-100 \f2file
        !          69600: .EE
        !          69601: Print four logical pages on each physical page
        !          69602: and reverse all the pages:
        !          69603: .EX
        !          69604: postprint -n4 \f2file\fP | postreverse
        !          69605: .EE
        !          69606: Produce a minimally conforming file from output
        !          69607: generated by dpost without reversing the pages:
        !          69608: .EX
        !          69609: dpost \f2file\fP | postreverse -r
        !          69610: .EE
        !          69611: .SH DIAGNOSTICS
        !          69612: A 0 exit status is returned if
        !          69613: .I file
        !          69614: was successfully processed.
        !          69615: .SH BUGS
        !          69616: No attempt has been made to deal with redefinitions of global
        !          69617: variables or procedures.
        !          69618: If standard input is used, the input
        !          69619: .I file
        !          69620: will be read three times before being reversed.
        !          69621: .SH SEE ALSO
        !          69622: .BR dpost (1),
        !          69623: .BR postdaisy(1),
        !          69624: .BR postdmd(1),
        !          69625: .BR postio(1),
        !          69626: .BR postmd(1),
        !          69627: .BR postprint(1),
        !          69628: .BR posttek(1),
        !          69629: .BR psencoding (1)
        !          69630: 0707070014230550050407550057030057030000021527470522633077300002100000000000post.src/posttek0707070014230547611006400057030057030000011527400522633077200003400000003736post.src/posttek/posttek.mkMAKE=/bin/make
        !          69631: MAKEFILE=posttek.mk
        !          69632: 
        !          69633: SYSTEM=V9
        !          69634: VERSION=3.3.2
        !          69635: 
        !          69636: GROUP=bin
        !          69637: OWNER=bin
        !          69638: 
        !          69639: MAN1DIR=/tmp
        !          69640: POSTBIN=/usr/bin/postscript
        !          69641: POSTLIB=/usr/lib/postscript
        !          69642: 
        !          69643: COMMONDIR=../common
        !          69644: 
        !          69645: CFLGS=-O
        !          69646: LDFLGS=-s
        !          69647: 
        !          69648: CFLAGS=$(CFLGS) -I$(COMMONDIR)
        !          69649: LDFLAGS=$(LDFLGS)
        !          69650: 
        !          69651: HFILES=posttek.h\
        !          69652:        $(COMMONDIR)/comments.h\
        !          69653:        $(COMMONDIR)/ext.h\
        !          69654:        $(COMMONDIR)/gen.h\
        !          69655:        $(COMMONDIR)/path.h
        !          69656: 
        !          69657: OFILES=posttek.o\
        !          69658:        $(COMMONDIR)/glob.o\
        !          69659:        $(COMMONDIR)/misc.o\
        !          69660:        $(COMMONDIR)/request.o
        !          69661: 
        !          69662: all : posttek
        !          69663: 
        !          69664: install : all
        !          69665:        @if [ ! -d "$(POSTBIN)" ]; then \
        !          69666:            mkdir $(POSTBIN); \
        !          69667:            chmod 755 $(POSTBIN); \
        !          69668:            chgrp $(GROUP) $(POSTBIN); \
        !          69669:            chown $(OWNER) $(POSTBIN); \
        !          69670:        fi
        !          69671:        @if [ ! -d "$(POSTLIB)" ]; then \
        !          69672:            mkdir $(POSTLIB); \
        !          69673:            chmod 755 $(POSTLIB); \
        !          69674:            chgrp $(GROUP) $(POSTLIB); \
        !          69675:            chown $(OWNER) $(POSTLIB); \
        !          69676:        fi
        !          69677:        cp posttek $(POSTBIN)/posttek
        !          69678:        @chmod 755 $(POSTBIN)/posttek
        !          69679:        @chgrp $(GROUP) $(POSTBIN)/posttek
        !          69680:        @chown $(OWNER) $(POSTBIN)/posttek
        !          69681:        cp posttek.ps $(POSTLIB)/posttek.ps
        !          69682:        @chmod 644 $(POSTLIB)/posttek.ps
        !          69683:        @chgrp $(GROUP) $(POSTLIB)/posttek.ps
        !          69684:        @chown $(OWNER) $(POSTLIB)/posttek.ps
        !          69685:        cp posttek.1 $(MAN1DIR)/posttek.1
        !          69686:        @chmod 644 $(MAN1DIR)/posttek.1
        !          69687:        @chgrp $(GROUP) $(MAN1DIR)/posttek.1
        !          69688:        @chown $(OWNER) $(MAN1DIR)/posttek.1
        !          69689: 
        !          69690: clean :
        !          69691:        rm -f *.o
        !          69692: 
        !          69693: clobber : clean
        !          69694:        rm -f posttek
        !          69695: 
        !          69696: posttek : $(OFILES)
        !          69697:        $(CC) $(CFLAGS) $(LDFLAGS) -o posttek $(OFILES)
        !          69698: 
        !          69699: posttek.o : $(HFILES)
        !          69700: 
        !          69701: $(COMMONDIR)/glob.o\
        !          69702: $(COMMONDIR)/misc.o\
        !          69703: $(COMMONDIR)/request.o :
        !          69704:        @cd $(COMMONDIR); $(MAKE) -f common.mk `basename $@`
        !          69705: 
        !          69706: changes :
        !          69707:        @trap "" 1 2 3 15; \
        !          69708:        sed \
        !          69709:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
        !          69710:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
        !          69711:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          69712:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          69713:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
        !          69714:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
        !          69715:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
        !          69716:        $(MAKEFILE) >XXX.mk; \
        !          69717:        mv XXX.mk $(MAKEFILE); \
        !          69718:        sed \
        !          69719:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
        !          69720:        posttek.1 >XXX.1; \
        !          69721:        mv XXX.1 posttek.1
        !          69722: 
        !          69723: 0707070014230550071006440057030057030000011527770522627504000003000000000153post.src/posttek/README
        !          69724: Tektronix 4014 to PostScript translator. Much of the code was
        !          69725: borrowed from the 5620 Tektronix emulator.
        !          69726: 
        !          69727: 0707070014230550101006440057030057030000011527620522627504000003300000007416post.src/posttek/posttek.h/*
        !          69728:  *
        !          69729:  * Tektronix 4014 control codes.
        !          69730:  *
        !          69731:  */
        !          69732: 
        !          69733: #define NUL '\000'
        !          69734: #define SOH '\001'
        !          69735: #define STX '\002'
        !          69736: #define ETX '\003'
        !          69737: #define EOT '\004'
        !          69738: #define ENQ '\005'
        !          69739: #define ACK '\006'
        !          69740: #define BEL '\007'
        !          69741: #define BS  '\010'
        !          69742: #define HT  '\011'
        !          69743: #define NL  '\012'
        !          69744: #define VT  '\013'
        !          69745: #define FF  '\014'
        !          69746: #define CR  '\015'
        !          69747: #define SO  '\016'
        !          69748: #define SI  '\017'
        !          69749: #define DLE '\020'
        !          69750: #define DC1 '\021'
        !          69751: #define DC2 '\022'
        !          69752: #define DC3 '\023'
        !          69753: #define DC4 '\024'
        !          69754: #define NAK '\025'
        !          69755: #define SYN '\026'
        !          69756: #define ETB '\027'
        !          69757: #define CAN '\030'
        !          69758: #define EM  '\031'
        !          69759: #define SUB '\032'
        !          69760: #define ESC '\033'
        !          69761: #define FS  '\034'
        !          69762: #define GS  '\035'
        !          69763: #define RS  '\036'
        !          69764: #define US  '\037'
        !          69765: #define DEL '\177'
        !          69766: 
        !          69767: /*
        !          69768:  *
        !          69769:  * A few definitions used to classify the different tektronix states. OUTMODED
        !          69770:  * is returned by control() and esc(), and typically means the state has changed.
        !          69771:  *
        !          69772:  */
        !          69773: 
        !          69774: #define OUTMODED       -1
        !          69775: #define ALPHA          0
        !          69776: #define GIN            1
        !          69777: #define GRAPH          2
        !          69778: #define POINT          3
        !          69779: #define SPECIALPOINT   4
        !          69780: #define INCREMENTAL    5
        !          69781: #define RESET          6
        !          69782: #define EXIT           7
        !          69783: 
        !          69784: /*
        !          69785:  *
        !          69786:  * The pen state, either UP or DOWN, controls whether vectors are drawn.
        !          69787:  *
        !          69788:  */
        !          69789: 
        !          69790: #define UP             0
        !          69791: #define DOWN           1
        !          69792: 
        !          69793: /*
        !          69794:  *
        !          69795:  * Coordinates of the upper right corner of the screen - almost the real screen
        !          69796:  * dimensions.
        !          69797:  *
        !          69798:  */
        !          69799: 
        !          69800: #define TEKXMAX                4096
        !          69801: #define TEKYMAX                3120
        !          69802: 
        !          69803: /*
        !          69804:  *
        !          69805:  * The size of the spot in SPECIALPOINT mode is controlled by a non-linear
        !          69806:  * function that has a domain that consists of the integers from 040 to 0175.
        !          69807:  * The next definition is used to initialize the special point mode intensity
        !          69808:  * array that implements the function. Data came from table F-6 in the tektronix
        !          69809:  * 4014 manual.
        !          69810:  *
        !          69811:  */
        !          69812: 
        !          69813: #define INTENSITY                                                      \
        !          69814:                                                                        \
        !          69815:        {                                                               \
        !          69816:            14, 16, 17, 19, 20, 22, 23, 25,                             \
        !          69817:            28, 31, 34, 38, 41, 44, 47, 50,                             \
        !          69818:            56, 62, 69, 75, 81, 88, 94,100,                             \
        !          69819:            56, 62, 69, 75, 81, 88, 94,100,                             \
        !          69820:             0,  1,  1,  1,  1,  1,  1,  2,                             \
        !          69821:             2,  2,  2,  2,  3,  3,  3,  3,                             \
        !          69822:             4,  4,  4,  5,  5,  5,  6,  6,                             \
        !          69823:             7,  8,  9, 10, 11, 12, 12, 13,                             \
        !          69824:            14, 16, 17, 19, 20, 22, 23, 25,                             \
        !          69825:            28, 31, 34, 38, 41, 44, 47, 50,                             \
        !          69826:            56, 62, 69, 75, 81, 88, 94,100,                             \
        !          69827:            56, 62, 69, 75, 81, 88, 94,100,                             \
        !          69828:        }
        !          69829: 
        !          69830: /*
        !          69831:  *
        !          69832:  * The next two definitions give the height and width of characters in the four
        !          69833:  * different sizes available on tektronix terminals. TEKFONT is the default index
        !          69834:  * into CHARHEIGHT and CHARWIDTH.
        !          69835:  *
        !          69836:  */
        !          69837: 
        !          69838: #define CHARHEIGHT     {88, 82, 53, 48}
        !          69839: #define CHARWIDTH      {56, 51, 34, 31}
        !          69840: #define TEKFONT                2
        !          69841: 
        !          69842: /*
        !          69843:  *
        !          69844:  * The entries defined in STYLES are passed on to the PostScript operator setdash.
        !          69845:  * They're used to implement the different tektronix line styles. Belongs in the
        !          69846:  * prologue!
        !          69847:  *
        !          69848:  */
        !          69849: 
        !          69850: #define STYLES                                                         \
        !          69851:                                                                        \
        !          69852:        {                                                               \
        !          69853:            "[]",                                                       \
        !          69854:            "[.5 2]",                                                   \
        !          69855:            "[.5 2 4 2]",                                               \
        !          69856:            "[4 4]",                                                    \
        !          69857:            "[8 4]",                                                    \
        !          69858:            "[]"                                                        \
        !          69859:        }
        !          69860: 
        !          69861: /*
        !          69862:  *
        !          69863:  * Variables of type Point are used to keep track of the cursor position.
        !          69864:  *
        !          69865:  */
        !          69866: 
        !          69867: typedef struct {
        !          69868:        int     x;
        !          69869:        int     y;
        !          69870: } Point;
        !          69871: 
        !          69872: /*
        !          69873:  *
        !          69874:  * An array of type Fontmap helps convert font names requested by users into
        !          69875:  * legitimate PostScript names. The array is initialized using FONTMAP, which must
        !          69876:  * end with an entry that has NULL defined as its name field.
        !          69877:  *
        !          69878:  */
        !          69879: 
        !          69880: typedef struct {
        !          69881:        char    *name;                  /* user's font name */
        !          69882:        char    *val;                   /* corresponding PostScript name */
        !          69883: } Fontmap;
        !          69884: 
        !          69885: #define FONTMAP                                                                \
        !          69886:                                                                        \
        !          69887:        {                                                               \
        !          69888:            "R", "Courier",                                             \
        !          69889:            "I", "Courier-Oblique",                                     \
        !          69890:            "B", "Courier-Bold",                                        \
        !          69891:            "CO", "Courier",                                            \
        !          69892:            "CI", "Courier-Oblique",                                    \
        !          69893:            "CB", "Courier-Bold",                                       \
        !          69894:            "CW", "Courier",                                            \
        !          69895:            "PO", "Courier",                                            \
        !          69896:            "courier", "Courier",                                       \
        !          69897:            "cour", "Courier",                                          \
        !          69898:            "co", "Courier",                                            \
        !          69899:            NULL, NULL                                                  \
        !          69900:        }
        !          69901: 
        !          69902: /*
        !          69903:  *
        !          69904:  * Some of the non-integer valued functions in posttek.c.
        !          69905:  *
        !          69906:  */
        !          69907: 
        !          69908: char   *get_font();
        !          69909: 
        !          69910: 0707070014230550111006440057030057030000011530000522627504000003300000064244post.src/posttek/posttek.c/*
        !          69911:  *
        !          69912:  * posttek - PostScript translator for tektronix 4014 files
        !          69913:  *
        !          69914:  * A program that can be used to translate tektronix 4014 files into PostScript.
        !          69915:  * Most of the code was borrowed from the tektronix 4014 emulator that was written
        !          69916:  * for DMDs. Things have been cleaned up some, but there's still plently that
        !          69917:  * could be done.
        !          69918:  *
        !          69919:  * The PostScript prologue is copied from *prologue before any of the input files
        !          69920:  * are translated. The program expects that the following PostScript procedures
        !          69921:  * are defined in that file:
        !          69922:  *
        !          69923:  *     setup
        !          69924:  *
        !          69925:  *       mark ... setup -
        !          69926:  *
        !          69927:  *         Handles special initialization stuff that depends on how the program
        !          69928:  *         was called. Expects to find a mark followed by key/value pairs on the
        !          69929:  *         stack. The def operator is applied to each pair up to the mark, then
        !          69930:  *         the default state is set up.
        !          69931:  *
        !          69932:  *     pagesetup
        !          69933:  *
        !          69934:  *       page pagesetup -
        !          69935:  *
        !          69936:  *         Does whatever is needed to set things up for the next page. Expects
        !          69937:  *         to find the current page number on the stack.
        !          69938:  *
        !          69939:  *     v
        !          69940:  *
        !          69941:  *       mark dx1 dy1 ... dxn dyn x y v mark
        !          69942:  *
        !          69943:  *         Draws the vector described by the numbers on the stack. The top two
        !          69944:  *         numbers are the starting point. The rest are relative displacements
        !          69945:  *         from the preceeding point. Must make sure we don't put too much on
        !          69946:  *         the stack!
        !          69947:  *
        !          69948:  *     t
        !          69949:  *
        !          69950:  *       x y string t -
        !          69951:  *
        !          69952:  *         Prints the string that's on the top of the stack starting at point
        !          69953:  *         (x, y).
        !          69954:  *
        !          69955:  *     p
        !          69956:  *
        !          69957:  *       x y p -
        !          69958:  *
        !          69959:  *         Marks the point (x, y) with a circle whose radius varies with the
        !          69960:  *         current intensity setting.
        !          69961:  *
        !          69962:  *     i
        !          69963:  *
        !          69964:  *       percent focus i -
        !          69965:  *
        !          69966:  *         Changes the size of the circle used to mark individual points to
        !          69967:  *         percent of maximum for focused mode (focus=1) or defocused mode
        !          69968:  *         (focus=0). The implementation leaves much to be desired!
        !          69969:  *
        !          69970:  *     l
        !          69971:  *
        !          69972:  *       mark array l mark
        !          69973:  *
        !          69974:  *         Set the line drawing mode according to the description given in array.
        !          69975:  *         The arrays that describe the different line styles are declared in
        !          69976:  *         STYLES (file posttek.h). The array really belongs in the prologue!
        !          69977:  *
        !          69978:  *     w
        !          69979:  *
        !          69980:  *       n w -
        !          69981:  *
        !          69982:  *         Adjusts the line width for vector drawing. Used to select normal (n=0)
        !          69983:  *         or defocused (n=1) mode.
        !          69984:  *
        !          69985:  *     f
        !          69986:  *
        !          69987:  *       size f -
        !          69988:  *
        !          69989:  *         Changes the size of the font that's used to print characters in alpha
        !          69990:  *         mode. size is the tektronix character width and is used to choose an
        !          69991:  *         appropriate point size in the current font.
        !          69992:  *
        !          69993:  *     done
        !          69994:  *
        !          69995:  *       done
        !          69996:  *
        !          69997:  *         Makes sure the last page is printed. Only needed when we're printing
        !          69998:  *         more than one page on each sheet of paper.
        !          69999:  *
        !          70000:  * The default line width is zero, which forces lines to be one pixel wide. That
        !          70001:  * works well on 'write to black' engines but won't be right for 'write to white'
        !          70002:  * engines. The line width can be changed using the -w option, or you can change
        !          70003:  * the initialization of linewidth in the prologue.
        !          70004:  *
        !          70005:  * Many default values, like the magnification and orientation, are defined in 
        !          70006:  * the prologue, which is where they belong. If they're changed (by options), an
        !          70007:  * appropriate definition is made after the prologue is added to the output file.
        !          70008:  * The -P option passes arbitrary PostScript through to the output file. Among
        !          70009:  * other things it can be used to set (or change) values that can't be accessed by
        !          70010:  * other options.
        !          70011:  *
        !          70012:  */
        !          70013: 
        !          70014: #include <stdio.h>
        !          70015: #include <signal.h>
        !          70016: #include <fcntl.h> 
        !          70017: 
        !          70018: #include "comments.h"                  /* PostScript file structuring comments */
        !          70019: #include "gen.h"                       /* general purpose definitions */
        !          70020: #include "path.h"                      /* for the prologue */
        !          70021: #include "ext.h"                       /* external variable definitions */
        !          70022: #include "posttek.h"                   /* control codes and other definitions */
        !          70023: 
        !          70024: char   *optnames = "a:c:f:m:n:o:p:w:x:y:A:C:E:J:L:P:R:DI";
        !          70025: 
        !          70026: char   *prologue = POSTTEK;            /* default PostScript prologue */
        !          70027: char   *formfile = FORMFILE;           /* stuff for multiple pages per sheet */
        !          70028: 
        !          70029: int    formsperpage = 1;               /* page images on each piece of paper */
        !          70030: int    copies = 1;                     /* and this many copies of each sheet */
        !          70031: 
        !          70032: int    charheight[] = CHARHEIGHT;      /* height */
        !          70033: int    charwidth[] = CHARWIDTH;        /* and width arrays for tek characters */
        !          70034: int    tekfont = TEKFONT;              /* index into charheight[] and charwidth[] */
        !          70035: 
        !          70036: char   intensity[] = INTENSITY;        /* special point intensity array */
        !          70037: char   *styles[] = STYLES;             /* description of line styles */
        !          70038: int    linestyle = 0;                  /* index into styles[] */
        !          70039: int    linetype = 0;                   /* 0 for normal, 1 for defocused */
        !          70040: 
        !          70041: int    dispmode = ALPHA;               /* current tektronix state */
        !          70042: int    points = 0;                     /* points making up the current vector */
        !          70043: int    characters = 0;                 /* characters waiting to be printed */
        !          70044: int    pen = UP;                       /* just for point plotting */
        !          70045: int    margin = 0;                     /* left edge - ALPHA state */
        !          70046: 
        !          70047: Point  cursor;                         /* should be current cursor position */
        !          70048: 
        !          70049: Fontmap        fontmap[] = FONTMAP;            /* for translating font names */
        !          70050: char   *fontname = "Courier";          /* use this PostScript font */
        !          70051: 
        !          70052: int    page = 0;                       /* page we're working on */
        !          70053: int    printed = 0;                    /* printed this many pages */
        !          70054: 
        !          70055: FILE   *fp_in;                         /* read from this file */
        !          70056: FILE   *fp_out = stdout;               /* and write stuff here */
        !          70057: FILE   *fp_acct = NULL;                /* for accounting data */
        !          70058: 
        !          70059: /*****************************************************************************/
        !          70060: 
        !          70061: main(agc, agv)
        !          70062: 
        !          70063:     int                agc;
        !          70064:     char       *agv[];
        !          70065: 
        !          70066: {
        !          70067: 
        !          70068: /*
        !          70069:  *
        !          70070:  * A simple program that can be used to translate tektronix 4014 files into
        !          70071:  * PostScript. Most of the code was taken from the DMD tektronix 4014 emulator,
        !          70072:  * although things have been cleaned up some.
        !          70073:  *
        !          70074:  */
        !          70075: 
        !          70076:     argv = agv;                                /* so everyone can use them */
        !          70077:     argc = agc;
        !          70078: 
        !          70079:     prog_name = argv[0];               /* just for error messages */
        !          70080: 
        !          70081:     init_signals();                    /* sets up interrupt handling */
        !          70082:     header();                          /* PostScript header comments */
        !          70083:     options();                         /* handle the command line options */
        !          70084:     setup();                           /* for PostScript */
        !          70085:     arguments();                       /* followed by each input file */
        !          70086:     done();                            /* print the last page etc. */
        !          70087:     account();                         /* job accounting data */
        !          70088: 
        !          70089:     exit(x_stat);                      /* nothing could be wrong */
        !          70090: 
        !          70091: }   /* End of main */
        !          70092: 
        !          70093: /*****************************************************************************/
        !          70094: 
        !          70095: init_signals()
        !          70096: 
        !          70097: {
        !          70098: 
        !          70099: /*
        !          70100:  *
        !          70101:  * Make sure we handle interrupts.
        !          70102:  *
        !          70103:  */
        !          70104: 
        !          70105:     if ( signal(SIGINT, interrupt) == SIG_IGN )  {
        !          70106:        signal(SIGINT, SIG_IGN);
        !          70107:        signal(SIGQUIT, SIG_IGN);
        !          70108:        signal(SIGHUP, SIG_IGN);
        !          70109:     } else {
        !          70110:        signal(SIGHUP, interrupt);
        !          70111:        signal(SIGQUIT, interrupt);
        !          70112:     }   /* End else */
        !          70113: 
        !          70114:     signal(SIGTERM, interrupt);
        !          70115: 
        !          70116: }   /* End of init_signals */
        !          70117: 
        !          70118: /*****************************************************************************/
        !          70119: 
        !          70120: header()
        !          70121: 
        !          70122: {
        !          70123: 
        !          70124:     int                ch;                     /* return value from getopt() */
        !          70125:     int                old_optind = optind;    /* for restoring optind - should be 1 */
        !          70126: 
        !          70127: /*
        !          70128:  *
        !          70129:  * Scans the option list looking for things, like the prologue file, that we need
        !          70130:  * right away but could be changed from the default. Doing things this way is an
        !          70131:  * attempt to conform to Adobe's latest file structuring conventions. In particular
        !          70132:  * they now say there should be nothing executed in the prologue, and they have
        !          70133:  * added two new comments that delimit global initialization calls. Once we know
        !          70134:  * where things really are we write out the job header, follow it by the prologue,
        !          70135:  * and then add the ENDPROLOG and BEGINSETUP comments.
        !          70136:  *
        !          70137:  */
        !          70138: 
        !          70139:     while ( (ch = getopt(argc, argv, optnames)) != EOF )
        !          70140:        if ( ch == 'L' )
        !          70141:            prologue = optarg;
        !          70142:        else if ( ch == '?' )
        !          70143:            error(FATAL, "");
        !          70144: 
        !          70145:     optind = old_optind;               /* get ready for option scanning */
        !          70146: 
        !          70147:     fprintf(stdout, "%s", CONFORMING);
        !          70148:     fprintf(stdout, "%s %s\n", VERSION, PROGRAMVERSION);
        !          70149:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, ATEND);
        !          70150:     fprintf(stdout, "%s %s\n", PAGES, ATEND);
        !          70151:     fprintf(stdout, "%s", ENDCOMMENTS);
        !          70152: 
        !          70153:     if ( cat(prologue) == FALSE )
        !          70154:        error(FATAL, "can't read %s", prologue);
        !          70155: 
        !          70156:     fprintf(stdout, "%s", ENDPROLOG);
        !          70157:     fprintf(stdout, "%s", BEGINSETUP);
        !          70158:     fprintf(stdout, "mark\n");
        !          70159: 
        !          70160: }   /* End of header */
        !          70161: 
        !          70162: /*****************************************************************************/
        !          70163: 
        !          70164: options()
        !          70165: 
        !          70166: {
        !          70167: 
        !          70168:     int                ch;                     /* value returned by getopt() */
        !          70169: 
        !          70170: /*
        !          70171:  *
        !          70172:  * Reads and processes the command line options. Added the -P option so arbitrary
        !          70173:  * PostScript code can be passed through. Expect it could be useful for changing
        !          70174:  * definitions in the prologue for which options have not been defined.
        !          70175:  *
        !          70176:  */
        !          70177: 
        !          70178:     while ( (ch = getopt(argc, argv, optnames)) != EOF )  {
        !          70179:        switch ( ch )  {
        !          70180:            case 'a':                   /* aspect ratio */
        !          70181:                    fprintf(stdout, "/aspectratio %s def\n", optarg);
        !          70182:                    break;
        !          70183: 
        !          70184:            case 'c':                   /* copies */
        !          70185:                    copies = atoi(optarg);
        !          70186:                    fprintf(stdout, "/#copies %s store\n", optarg);
        !          70187:                    break;
        !          70188: 
        !          70189:            case 'f':                   /* use this PostScript font */
        !          70190:                    fontname = get_font(optarg);
        !          70191:                    fprintf(stdout, "/font /%s def\n", fontname);
        !          70192:                    break;
        !          70193: 
        !          70194:            case 'm':                   /* magnification */
        !          70195:                    fprintf(stdout, "/magnification %s def\n", optarg);
        !          70196:                    break;
        !          70197: 
        !          70198:            case 'n':                   /* forms per page */
        !          70199:                    formsperpage = atoi(optarg);
        !          70200:                    fprintf(stdout, "%s %s\n", FORMSPERPAGE, optarg);
        !          70201:                    fprintf(stdout, "/formsperpage %s def\n", optarg);
        !          70202:                    break;
        !          70203: 
        !          70204:            case 'o':                   /* output page list */
        !          70205:                    out_list(optarg);
        !          70206:                    break;
        !          70207: 
        !          70208:            case 'p':                   /* landscape or portrait mode */
        !          70209:                    if ( *optarg == 'l' )
        !          70210:                        fprintf(stdout, "/landscape true def\n");
        !          70211:                    else fprintf(stdout, "/landscape false def\n");
        !          70212:                    break;
        !          70213: 
        !          70214:            case 'w':                   /* line width */
        !          70215:                    fprintf(stdout, "/linewidth %s def\n", optarg);
        !          70216:                    break;
        !          70217: 
        !          70218:            case 'x':                   /* shift horizontally */
        !          70219:                    fprintf(stdout, "/xoffset %s def\n", optarg);
        !          70220:                    break;
        !          70221: 
        !          70222:            case 'y':                   /* and vertically on the page */
        !          70223:                    fprintf(stdout, "/yoffset %s def\n", optarg);
        !          70224:                    break;
        !          70225: 
        !          70226:            case 'A':                   /* force job accounting */
        !          70227:            case 'J':
        !          70228:                    if ( (fp_acct = fopen(optarg, "a")) == NULL )
        !          70229:                        error(FATAL, "can't open accounting file %s", optarg);
        !          70230:                    break;
        !          70231: 
        !          70232:            case 'C':                   /* copy file straight to output */
        !          70233:                    if ( cat(optarg) == FALSE )
        !          70234:                        error(FATAL, "can't read %s", optarg);
        !          70235:                    break;
        !          70236: 
        !          70237:            case 'E':                   /* text font encoding */
        !          70238:                    fontencoding = optarg;
        !          70239:                    break;
        !          70240: 
        !          70241:            case 'L':                   /* PostScript prologue file */
        !          70242:                    prologue = optarg;
        !          70243:                    break;
        !          70244: 
        !          70245:            case 'P':                   /* PostScript pass through */
        !          70246:                    fprintf(stdout, "%s\n", optarg);
        !          70247:                    break;
        !          70248: 
        !          70249:            case 'R':                   /* special global or page level request */
        !          70250:                    saverequest(optarg);
        !          70251:                    break;
        !          70252: 
        !          70253:            case 'D':                   /* debug flag */
        !          70254:                    debug = ON;
        !          70255:                    break;
        !          70256: 
        !          70257:            case 'I':                   /* ignore FATAL errors */
        !          70258:                    ignore = ON;
        !          70259:                    break;
        !          70260: 
        !          70261:            case '?':                   /* don't know the option */
        !          70262:                    error(FATAL, "");
        !          70263:                    break;
        !          70264: 
        !          70265:            default:                    /* don't know what to do for ch */
        !          70266:                    error(FATAL, "missing case for option %c", ch);
        !          70267:                    break;
        !          70268:        }   /* End switch */
        !          70269:     }  /* End while */
        !          70270: 
        !          70271:     argc -= optind;
        !          70272:     argv += optind;
        !          70273: 
        !          70274: }   /* End of options */
        !          70275: 
        !          70276: /*****************************************************************************/
        !          70277: 
        !          70278: char *get_font(name)
        !          70279: 
        !          70280:     char       *name;                  /* name the user asked for */
        !          70281: 
        !          70282: {
        !          70283: 
        !          70284:     int                i;                      /* for looking through fontmap[] */
        !          70285: 
        !          70286: /*
        !          70287:  *
        !          70288:  * Called from options() to map a user's font name into a legal PostScript name.
        !          70289:  * If the lookup fails *name is returned to the caller. That should let you choose
        !          70290:  * any PostScript font.
        !          70291:  *
        !          70292:  */
        !          70293: 
        !          70294:     for ( i = 0; fontmap[i].name != NULL; i++ )
        !          70295:        if ( strcmp(name, fontmap[i].name) == 0 )
        !          70296:            return(fontmap[i].val);
        !          70297: 
        !          70298:     return(name);
        !          70299: 
        !          70300: }   /* End of get_font */
        !          70301: 
        !          70302: /*****************************************************************************/
        !          70303: 
        !          70304: setup()
        !          70305: 
        !          70306: {
        !          70307: 
        !          70308: /*
        !          70309:  *
        !          70310:  * Handles things that must be done after the options are read but before the
        !          70311:  * input files are processed.
        !          70312:  *
        !          70313:  */
        !          70314: 
        !          70315:     writerequest(0, stdout);           /* global requests eg. manual feed */
        !          70316:     setencoding(fontencoding);
        !          70317:     fprintf(stdout, "setup\n");
        !          70318: 
        !          70319:     if ( formsperpage > 1 )  {
        !          70320:        if ( cat(formfile) == FALSE )
        !          70321:            error(FATAL, "can't read %s", formfile);
        !          70322:        fprintf(stdout, "%d setupforms\n", formsperpage);
        !          70323:     }  /* End if */
        !          70324: 
        !          70325:     fprintf(stdout, "%s", ENDSETUP);
        !          70326: 
        !          70327: }   /* End of setup */
        !          70328: 
        !          70329: /*****************************************************************************/
        !          70330: 
        !          70331: arguments()
        !          70332: 
        !          70333: {
        !          70334: 
        !          70335: /*
        !          70336:  *
        !          70337:  * Makes sure all the non-option command line arguments are processed. If we get
        !          70338:  * here and there aren't any arguments left, or if '-' is one of the input files
        !          70339:  * we'll process stdin.
        !          70340:  *
        !          70341:  */
        !          70342: 
        !          70343:     if ( argc < 1 )
        !          70344:        statemachine(fp_in = stdin);
        !          70345:     else  {                            /* at least one argument is left */
        !          70346:        while ( argc > 0 )  {
        !          70347:            if ( strcmp(*argv, "-") == 0 )
        !          70348:                fp_in = stdin;
        !          70349:            else if ( (fp_in = fopen(*argv, "r")) == NULL )
        !          70350:                error(FATAL, "can't open %s", *argv);
        !          70351:            statemachine(fp_in);
        !          70352:            if ( fp_in != stdin )
        !          70353:                fclose(fp_in);
        !          70354:            argc--;
        !          70355:            argv++;
        !          70356:        }   /* End while */
        !          70357:     }   /* End else */
        !          70358: 
        !          70359: }   /* End of arguments */
        !          70360: 
        !          70361: /*****************************************************************************/
        !          70362: 
        !          70363: done()
        !          70364: 
        !          70365: {
        !          70366: 
        !          70367: /*
        !          70368:  *
        !          70369:  * Finished with all the input files, so mark the end of the pages with a TRAILER
        !          70370:  * comment, make sure the last page prints, and add things like the PAGES comment
        !          70371:  * that can only be determined after all the input files have been read.
        !          70372:  *
        !          70373:  */
        !          70374: 
        !          70375:     fprintf(stdout, "%s", TRAILER);
        !          70376:     fprintf(stdout, "done\n");
        !          70377:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, fontname);
        !          70378:     fprintf(stdout, "%s %d\n", PAGES, printed);
        !          70379: 
        !          70380: }   /* End of done */
        !          70381: 
        !          70382: /*****************************************************************************/
        !          70383: 
        !          70384: account()
        !          70385: 
        !          70386: {
        !          70387: 
        !          70388: /*
        !          70389:  *
        !          70390:  * Writes an accounting record to *fp_acct provided it's not NULL. Accounting
        !          70391:  * is requested using the -A or -J options.
        !          70392:  *
        !          70393:  */
        !          70394: 
        !          70395:     if ( fp_acct != NULL )
        !          70396:        fprintf(fp_acct, " print %d\n copies %d\n", printed, copies);
        !          70397: 
        !          70398: }   /* End of account */
        !          70399: 
        !          70400: /*****************************************************************************/
        !          70401: 
        !          70402: statemachine(fp)
        !          70403: 
        !          70404:     FILE       *fp;                    /* used to set fp_in */
        !          70405: 
        !          70406: {
        !          70407: 
        !          70408: /*
        !          70409:  *
        !          70410:  * Controls the translation of the next input file. Tektronix states (dispmode)
        !          70411:  * are typically changed in control() and esc().
        !          70412:  *
        !          70413:  */
        !          70414: 
        !          70415:     redirect(-1);                      /* get ready for the first page */
        !          70416:     formfeed();
        !          70417:     dispmode = RESET;
        !          70418: 
        !          70419:     while ( 1 )
        !          70420:        switch ( dispmode )  {
        !          70421:            case RESET:
        !          70422:                    reset();
        !          70423:                    break;
        !          70424: 
        !          70425:            case ALPHA:
        !          70426:                    alpha();
        !          70427:                    break;
        !          70428: 
        !          70429:            case GIN:
        !          70430:                    gin();
        !          70431:                    break;
        !          70432: 
        !          70433:            case GRAPH:
        !          70434:                    graph();
        !          70435:                    break;
        !          70436: 
        !          70437:            case POINT:
        !          70438:            case SPECIALPOINT:
        !          70439:                    point();
        !          70440:                    break;
        !          70441: 
        !          70442:            case INCREMENTAL:
        !          70443:                    incremental();
        !          70444:                    break;
        !          70445: 
        !          70446:            case EXIT:
        !          70447:                    formfeed();
        !          70448:                    return;
        !          70449:        }   /* End switch */
        !          70450: 
        !          70451: }   /* End of statemachine */
        !          70452: 
        !          70453: /*****************************************************************************/
        !          70454: 
        !          70455: reset()
        !          70456: 
        !          70457: {
        !          70458: 
        !          70459: /*
        !          70460:  *
        !          70461:  * Called to reset things, typically only at the beginning of each input file.
        !          70462:  *
        !          70463:  */
        !          70464: 
        !          70465:     tekfont = -1;
        !          70466:     home();
        !          70467:     setfont(TEKFONT);
        !          70468:     setmode(ALPHA);
        !          70469: 
        !          70470: }   /* End of reset */
        !          70471: 
        !          70472: /*****************************************************************************/
        !          70473: 
        !          70474: alpha()
        !          70475: 
        !          70476: {
        !          70477: 
        !          70478:     int                c;                      /* next character */
        !          70479:     int                x, y;                   /* cursor will be here when we're done */
        !          70480: 
        !          70481: /*
        !          70482:  *
        !          70483:  * Takes care of printing characters in the current font.
        !          70484:  *
        !          70485:  */
        !          70486: 
        !          70487:     if ( (c = nextchar()) == OUTMODED )
        !          70488:        return;
        !          70489: 
        !          70490:     if ( (c < 040) && ((c = control(c)) <= 0) )
        !          70491:        return;
        !          70492: 
        !          70493:     x = cursor.x;                      /* where the cursor is right now */
        !          70494:     y = cursor.y;
        !          70495: 
        !          70496:     switch ( c )  {
        !          70497:        case DEL:
        !          70498:                return;
        !          70499: 
        !          70500:        case BS:
        !          70501:                if ((x -= charwidth[tekfont]) < margin)
        !          70502:                    x = TEKXMAX - charwidth[tekfont];
        !          70503:                break;
        !          70504: 
        !          70505:        case NL:
        !          70506:                y -= charheight[tekfont];
        !          70507:                break;
        !          70508: 
        !          70509:        case CR:
        !          70510:                x = margin;
        !          70511:                break;
        !          70512: 
        !          70513:        case VT:
        !          70514:                if ((y += charheight[tekfont]) >= TEKYMAX)
        !          70515:                    y = 0;
        !          70516:                break;
        !          70517: 
        !          70518:        case HT:
        !          70519:        case ' ':
        !          70520:        default:
        !          70521:                if ( characters++ == 0 )
        !          70522:                    fprintf(fp_out, "%d %d (", cursor.x, cursor.y);
        !          70523:                switch ( c )  {
        !          70524:                    case '(':
        !          70525:                    case ')':
        !          70526:                    case '\\':
        !          70527:                        putc('\\', fp_out);
        !          70528: 
        !          70529:                    default:
        !          70530:                        putc(c, fp_out);
        !          70531:                }   /* End switch */
        !          70532:                x += charwidth[tekfont];
        !          70533:                move(x, y);
        !          70534:                break;
        !          70535:     }  /* End switch */
        !          70536: 
        !          70537:     if (x >= TEKXMAX) {
        !          70538:        x = margin;
        !          70539:        y -= charheight[tekfont];
        !          70540:     }  /* End if */
        !          70541: 
        !          70542:     if (y < 0) {
        !          70543:        y = TEKYMAX - charheight[tekfont];
        !          70544:        x -= margin;
        !          70545:        margin = (TEKXMAX/2) - margin;
        !          70546:        if ((x += margin) > TEKXMAX)
        !          70547:            x -= margin;
        !          70548:     }  /* End if */
        !          70549: 
        !          70550:     if ( y != cursor.y || x != cursor.x )
        !          70551:        text();
        !          70552: 
        !          70553:     move(x, y);
        !          70554: 
        !          70555: }   /* End of alpha */
        !          70556: 
        !          70557: /*****************************************************************************/
        !          70558: 
        !          70559: graph()
        !          70560: 
        !          70561: {
        !          70562: 
        !          70563:     int                        c;              /* next character */
        !          70564:     int                        b;              /* for figuring out loy */
        !          70565:     int                        x, y;           /* next point in the vector */
        !          70566:     static int         hix, hiy;       /* upper */
        !          70567:     static int         lox, loy;       /* and lower part of the address */
        !          70568:     static int         extra;          /* for extended addressing */
        !          70569: 
        !          70570: /*
        !          70571:  *
        !          70572:  * Handles things when we're in GRAPH, POINT, or SPECIALPOINT mode.
        !          70573:  *
        !          70574:  */
        !          70575: 
        !          70576:     if ((c = nextchar()) < 040) {
        !          70577:        control(c);
        !          70578:        return;
        !          70579:     }  /* End if */
        !          70580: 
        !          70581:     if ((c & 0140) == 040) {           /* new hiy */
        !          70582:        hiy = c & 037;
        !          70583:        do
        !          70584:            if (((c = nextchar()) < 040) && ((c = control(c)) == OUTMODED))
        !          70585:                return;
        !          70586:        while (c == 0);
        !          70587:     }  /* End if */
        !          70588: 
        !          70589:     if ((c & 0140) == 0140) {          /* new loy */
        !          70590:        b = c & 037;
        !          70591:        do
        !          70592:            if (((c = nextchar()) < 040) && ((c = control(c)) == OUTMODED))
        !          70593:                return;
        !          70594:        while (c == 0);
        !          70595:        if ((c & 0140) == 0140) {       /* no, it was extra */
        !          70596:            extra = b;
        !          70597:            loy = c & 037;
        !          70598:            do
        !          70599:                if (((c = nextchar()) < 040) && ((c = control(c)) == OUTMODED))
        !          70600:                    return;
        !          70601:            while (c == 0);
        !          70602:        } else loy = b;
        !          70603:     }  /* End if */
        !          70604: 
        !          70605:     if ((c & 0140) == 040) {           /* new hix */
        !          70606:        hix = c & 037;
        !          70607:        do
        !          70608:            if (((c = nextchar()) < 040) && ((c = control(c)) == OUTMODED))
        !          70609:                return;
        !          70610:        while (c == 0);
        !          70611:     }  /* End if */
        !          70612: 
        !          70613:     lox = c & 037;                     /* this should be lox */
        !          70614:     if (extra & 020)
        !          70615:        margin = TEKXMAX/2;
        !          70616: 
        !          70617:     x = (hix<<7) | (lox<<2) | (extra & 03);
        !          70618:     y = (hiy<<7) | (loy<<2) | ((extra & 014)>>2);
        !          70619: 
        !          70620:     if ( points > 100 )  {             /* don't put too much on the stack */
        !          70621:        draw();
        !          70622:        points = 1;
        !          70623:     }  /* End if */
        !          70624: 
        !          70625:     if ( points++ )
        !          70626:        fprintf(fp_out, "%d %d\n", cursor.x - x, cursor.y - y);
        !          70627: 
        !          70628:     move(x, y);                                /* adjust the cursor */
        !          70629: 
        !          70630: }   /* End of graph */
        !          70631: 
        !          70632: /*****************************************************************************/
        !          70633: 
        !          70634: point()
        !          70635: 
        !          70636: {
        !          70637: 
        !          70638:     int                c;                      /* next input character */
        !          70639: 
        !          70640: /*
        !          70641:  *
        !          70642:  * Special point mode permits gray scaling by varying the size of the stored
        !          70643:  * point, which is controlled by an intensity character that preceeds each point
        !          70644:  * address.
        !          70645:  *
        !          70646:  */
        !          70647: 
        !          70648:     if ( dispmode == SPECIALPOINT )  {
        !          70649:        if ( (c = nextchar()) < 040 || c > 0175 )
        !          70650:            return(control(c));
        !          70651: 
        !          70652:        fprintf(fp_out, "%d %d i\n", intensity[c - ' '], c & 0100);
        !          70653:     }  /* End if */
        !          70654: 
        !          70655:     graph();
        !          70656:     draw();
        !          70657: 
        !          70658: }   /* End of point */
        !          70659: 
        !          70660: /*****************************************************************************/
        !          70661: 
        !          70662: incremental()
        !          70663: 
        !          70664: {
        !          70665: 
        !          70666:     int                c;                      /* for the next few characters */
        !          70667:     int                x, y;                   /* cursor position when we're done */
        !          70668: 
        !          70669: /*
        !          70670:  *
        !          70671:  * Handles incremental plot mode. It's entered after the RS control code and is
        !          70672:  * used to mark points relative to our current position. It's typically followed
        !          70673:  * by one or two bytes that set the pen state and are used to increment the
        !          70674:  * current position.
        !          70675:  *
        !          70676:  */
        !          70677: 
        !          70678:     if ( (c = nextchar()) == OUTMODED )
        !          70679:        return;
        !          70680: 
        !          70681:     if ( (c < 040) && ((c = control(c)) <= 0) )
        !          70682:        return;
        !          70683: 
        !          70684:     x = cursor.x;                      /* where we are right now */
        !          70685:     y = cursor.y;
        !          70686: 
        !          70687:     if ( c & 060 )
        !          70688:        pen = ( c & 040 ) ? UP : DOWN;
        !          70689: 
        !          70690:     if ( c & 04 ) y++;
        !          70691:     if ( c & 010 ) y--;
        !          70692:     if ( c & 01 ) x++;
        !          70693:     if ( c & 02 ) x--;
        !          70694: 
        !          70695:     move(x, y);
        !          70696: 
        !          70697:     if ( pen == DOWN )  {
        !          70698:        points = 1;
        !          70699:        draw();
        !          70700:     }  /* End if */
        !          70701: 
        !          70702: }   /* End of incremental */
        !          70703: 
        !          70704: /*****************************************************************************/
        !          70705: 
        !          70706: gin()
        !          70707: 
        !          70708: {
        !          70709: 
        !          70710: /*
        !          70711:  *
        !          70712:  * All we really have to do for GIN mode is make sure it's properly ended.
        !          70713:  *
        !          70714:  */
        !          70715: 
        !          70716:     control(nextchar());
        !          70717: 
        !          70718: }   /* End of gin */
        !          70719: 
        !          70720: /*****************************************************************************/
        !          70721: 
        !          70722: control(c)
        !          70723: 
        !          70724:     int                c;                      /* check this control character */
        !          70725: 
        !          70726: {
        !          70727: 
        !          70728: /*
        !          70729:  *
        !          70730:  * Checks character c and does special things, like mode changes, that depend
        !          70731:  * not only on the character, but also on the current state. If the mode changed
        !          70732:  * becuase of c, OUTMODED is returned to the caller. In all other cases the
        !          70733:  * return value is c or 0, if c doesn't make sense in the current mode.
        !          70734:  *
        !          70735:  */
        !          70736: 
        !          70737:     switch ( c )  {
        !          70738:        case BEL:
        !          70739:                return(0);
        !          70740: 
        !          70741:        case BS:
        !          70742:        case HT:
        !          70743:        case VT:
        !          70744:                return(dispmode == ALPHA ? c : 0);
        !          70745: 
        !          70746:        case CR:
        !          70747:                if ( dispmode != ALPHA )  {
        !          70748:                    setmode(ALPHA);
        !          70749:                    ungetc(c, fp_in);
        !          70750:                    return(OUTMODED);
        !          70751:                } else return(c);
        !          70752: 
        !          70753:        case FS:
        !          70754:                if ( (dispmode == ALPHA) || (dispmode == GRAPH) )  {
        !          70755:                    setmode(POINT);
        !          70756:                    return(OUTMODED);
        !          70757:                }   /* End if */
        !          70758:                return(0);
        !          70759: 
        !          70760:        case GS:
        !          70761:                if ( (dispmode == ALPHA) || (dispmode == GRAPH) )  {
        !          70762:                    setmode(GRAPH);
        !          70763:                    return(OUTMODED);
        !          70764:                }   /* End if */
        !          70765:                return(0);
        !          70766: 
        !          70767:        case NL:
        !          70768:                ungetc(CR, fp_in);
        !          70769:                return(dispmode == ALPHA ? c : 0);
        !          70770: 
        !          70771:        case RS:
        !          70772:                if ( dispmode != GIN )  {
        !          70773:                    setmode(INCREMENTAL);
        !          70774:                    return(OUTMODED);
        !          70775:                }   /* End if */
        !          70776:                return(0);
        !          70777: 
        !          70778:        case US:
        !          70779:                if ( dispmode == ALPHA )
        !          70780:                    return(0);
        !          70781:                setmode(ALPHA);
        !          70782:                return(OUTMODED);
        !          70783: 
        !          70784:        case ESC:
        !          70785:                return(esc());
        !          70786: 
        !          70787:        case OUTMODED:
        !          70788:                return(c);
        !          70789: 
        !          70790:        default:
        !          70791:                return(c < 040 ? 0 : c);
        !          70792:     }  /* End switch */
        !          70793: 
        !          70794: }   /* End of control */
        !          70795: 
        !          70796: /*****************************************************************************/
        !          70797: 
        !          70798: esc()
        !          70799: 
        !          70800: {
        !          70801: 
        !          70802:     int                c;                      /* next input character */
        !          70803:     int                ignore;                 /* skip it if nonzero */
        !          70804: 
        !          70805: /*
        !          70806:  *
        !          70807:  * Handles tektronix escape code. Called from control() whenever an ESC character
        !          70808:  * is found in the input file.
        !          70809:  *
        !          70810:  */
        !          70811: 
        !          70812:     do  {
        !          70813:        c = nextchar();
        !          70814:        ignore = 0;
        !          70815:        switch ( c )  {
        !          70816:            case CAN:
        !          70817:                    return(0);
        !          70818: 
        !          70819:            case CR:
        !          70820:                    ignore = 1;
        !          70821:                    break;
        !          70822: 
        !          70823:            case ENQ:
        !          70824:                    setmode(ALPHA);
        !          70825:                    return(OUTMODED);
        !          70826: 
        !          70827:            case ETB:
        !          70828:                    return(0);
        !          70829: 
        !          70830:            case FF:
        !          70831:                    formfeed();
        !          70832:                    setmode(ALPHA);
        !          70833:                    return(OUTMODED);
        !          70834: 
        !          70835:            case FS:
        !          70836:                    if ( (dispmode == INCREMENTAL) || ( dispmode == GIN) )
        !          70837:                        return(0);
        !          70838:                    setmode(SPECIALPOINT);
        !          70839:                    return(OUTMODED);
        !          70840: 
        !          70841:            case SI:
        !          70842:            case SO:
        !          70843:                    return(0);
        !          70844: 
        !          70845:            case SUB:
        !          70846:                    setmode(GIN);
        !          70847:                    return(OUTMODED);
        !          70848: 
        !          70849:            case OUTMODED:
        !          70850:                    return(OUTMODED);
        !          70851: 
        !          70852:            case '8':
        !          70853:            case '9':
        !          70854:            case ':':
        !          70855:            case ';':
        !          70856:                    setfont(c - '8');
        !          70857:                    return(0);
        !          70858: 
        !          70859:            default:
        !          70860:                    if ( c == '?' && dispmode == GRAPH )
        !          70861:                        return(DEL);
        !          70862:                    if ( (c<'`') || (c>'w') )
        !          70863:                        break;
        !          70864:                    c -= '`';
        !          70865:                    if ( (c & 010) != linetype )
        !          70866:                        fprintf(fp_out, "%d w\n", (linetype = (c & 010))/010);
        !          70867:                    if ( ((c + 1) & 7) >= 6 )
        !          70868:                        break;
        !          70869:                    if ( (c + 1) & 7 )
        !          70870:                        if ( (c & 7) != linestyle )  {
        !          70871:                            linestyle = c & 7;
        !          70872:                            setmode(dispmode);
        !          70873:                            fprintf(fp_out, "%s l\n", styles[linestyle]);
        !          70874:                        }   /* End if */
        !          70875:                    return(0);
        !          70876:        }   /* End switch */
        !          70877: 
        !          70878:     } while (ignore);
        !          70879: 
        !          70880:     return(0);
        !          70881: 
        !          70882: }   /* End of esc */
        !          70883: 
        !          70884: /*****************************************************************************/
        !          70885: 
        !          70886: move(x, y)
        !          70887: 
        !          70888:     int                x, y;                   /* move the cursor here */
        !          70889: 
        !          70890: {
        !          70891: 
        !          70892: /*
        !          70893:  *
        !          70894:  * Moves the cursor to the point (x, y).
        !          70895:  *
        !          70896:  */
        !          70897: 
        !          70898:     cursor.x = x;
        !          70899:     cursor.y = y;
        !          70900: 
        !          70901: }   /* End of move */
        !          70902: 
        !          70903: /*****************************************************************************/
        !          70904: 
        !          70905: setmode(mode)
        !          70906: 
        !          70907:     int                mode;                   /* this should be the new mode */
        !          70908: 
        !          70909: {
        !          70910: 
        !          70911: /*
        !          70912:  *
        !          70913:  * Makes sure the current mode is properly ended and then sets dispmode to mode.
        !          70914:  *
        !          70915:  */
        !          70916: 
        !          70917:     switch ( dispmode )  {
        !          70918:        case ALPHA:
        !          70919:                text();
        !          70920:                break;
        !          70921: 
        !          70922:        case GRAPH:
        !          70923:                draw();
        !          70924:                break;
        !          70925: 
        !          70926:        case INCREMENTAL:
        !          70927:                pen = UP;
        !          70928:                break;
        !          70929:     }  /* End switch */
        !          70930: 
        !          70931:     dispmode = mode;
        !          70932: 
        !          70933: }   /* End of setmode */
        !          70934: 
        !          70935: /*****************************************************************************/
        !          70936: 
        !          70937: home()
        !          70938: 
        !          70939: {
        !          70940: 
        !          70941: /*
        !          70942:  *
        !          70943:  * Makes sure the cursor is positioned at the upper left corner of the page.
        !          70944:  *
        !          70945:  */
        !          70946: 
        !          70947:     margin = 0;
        !          70948:     move(0, TEKYMAX);
        !          70949: 
        !          70950: }   /* End of home */
        !          70951: 
        !          70952: /*****************************************************************************/
        !          70953: 
        !          70954: setfont(newfont)
        !          70955: 
        !          70956:     int                newfont;                /* use this font next */
        !          70957: 
        !          70958: {
        !          70959: 
        !          70960: /*
        !          70961:  *
        !          70962:  * Generates the call to the procedure that's responsible for changing the
        !          70963:  * tektronix font (really just the size).
        !          70964:  *
        !          70965:  */
        !          70966: 
        !          70967:     if ( newfont != tekfont )  {
        !          70968:        setmode(dispmode);
        !          70969:        fprintf(fp_out, "%d f\n", charwidth[newfont]);
        !          70970:     }  /* End if */
        !          70971: 
        !          70972:     tekfont = newfont;
        !          70973: 
        !          70974: }   /* End of setfont */
        !          70975: 
        !          70976: /*****************************************************************************/
        !          70977: 
        !          70978: text()
        !          70979: 
        !          70980: {
        !          70981: 
        !          70982: /*
        !          70983:  *
        !          70984:  * Makes sure any text we've put on the stack is printed.
        !          70985:  *
        !          70986:  */
        !          70987: 
        !          70988:     if ( dispmode == ALPHA && characters > 0 )
        !          70989:        fprintf(fp_out, ") t\n");
        !          70990: 
        !          70991:     characters = 0;
        !          70992: 
        !          70993: }   /* End of text */
        !          70994: 
        !          70995: /*****************************************************************************/
        !          70996: 
        !          70997: draw()
        !          70998: 
        !          70999: {
        !          71000: 
        !          71001: /*
        !          71002:  *
        !          71003:  * Called whenever we need to draw a vector or plot a point. Nothing will be
        !          71004:  * done if points is 0 or if it's 1 and we're in GRAPH mode.
        !          71005:  *
        !          71006:  */
        !          71007: 
        !          71008:     if ( points > 1 )                  /* it's a vector */
        !          71009:        fprintf(fp_out, "%d %d v\n", cursor.x, cursor.y);
        !          71010:     else if ( points == 1 && dispmode != GRAPH )
        !          71011:        fprintf(fp_out, "%d %d p\n", cursor.x, cursor.y);
        !          71012: 
        !          71013:     points = 0;
        !          71014: 
        !          71015: }   /* End of draw */
        !          71016: 
        !          71017: /*****************************************************************************/
        !          71018: 
        !          71019: formfeed()
        !          71020: 
        !          71021: {
        !          71022: 
        !          71023: /*
        !          71024:  *
        !          71025:  * Usually called when we've finished the last page and want to get ready for the
        !          71026:  * next one. Also used at the beginning and end of each input file, so we have to
        !          71027:  * be careful about exactly what's done.
        !          71028:  *
        !          71029:  */
        !          71030: 
        !          71031:     setmode(dispmode);                 /* end any outstanding text or graphics */
        !          71032: 
        !          71033:     if ( fp_out == stdout )            /* count the last page */
        !          71034:        printed++;
        !          71035: 
        !          71036:     fprintf(fp_out, "cleartomark\n");
        !          71037:     fprintf(fp_out, "showpage\n");
        !          71038:     fprintf(fp_out, "saveobj restore\n");
        !          71039:     fprintf(fp_out, "%s %d %d\n", ENDPAGE, page, printed);
        !          71040: 
        !          71041:     if ( ungetc(getc(fp_in), fp_in) == EOF )
        !          71042:        redirect(-1);
        !          71043:     else redirect(++page);
        !          71044: 
        !          71045:     fprintf(fp_out, "%s %d %d\n", PAGE, page, printed+1);
        !          71046:     fprintf(fp_out, "/saveobj save def\n");
        !          71047:     fprintf(fp_out, "mark\n");
        !          71048:     writerequest(printed+1, fp_out);
        !          71049:     fprintf(fp_out, "%d pagesetup\n", printed+1);
        !          71050:     fprintf(fp_out, "%d f\n", charwidth[tekfont]);
        !          71051:     fprintf(fp_out, "%s l\n", styles[linestyle]);
        !          71052: 
        !          71053:     home();
        !          71054: 
        !          71055: }   /* End of formfeed */
        !          71056: 
        !          71057: /*****************************************************************************/
        !          71058: 
        !          71059: nextchar()
        !          71060: 
        !          71061: {
        !          71062: 
        !          71063:     int                ch;                     /* next input character */
        !          71064: 
        !          71065: /*
        !          71066:  *
        !          71067:  * Reads the next character from the current input file and returns it to the
        !          71068:  * caller. When we're finished with the file dispmode is set to EXIT and OUTMODED
        !          71069:  * is returned to the caller.
        !          71070:  *
        !          71071:  */
        !          71072: 
        !          71073:     if ( (ch = getc(fp_in)) == EOF )  {
        !          71074:        setmode(EXIT);
        !          71075:        ch = OUTMODED;
        !          71076:     }  /* End if */
        !          71077: 
        !          71078:     return(ch);
        !          71079: 
        !          71080: }   /* End of nextchar */
        !          71081: 
        !          71082: /*****************************************************************************/
        !          71083: 
        !          71084: redirect(pg)
        !          71085: 
        !          71086:     int                pg;                     /* next page we're printing */
        !          71087: 
        !          71088: {
        !          71089: 
        !          71090:     static FILE        *fp_null = NULL;        /* if output is turned off */
        !          71091: 
        !          71092: /*
        !          71093:  *
        !          71094:  * If we're not supposed to print page pg, fp_out will be directed to /dev/null,
        !          71095:  * otherwise output goes to stdout.
        !          71096:  *
        !          71097:  */
        !          71098: 
        !          71099:     if ( pg >= 0 && in_olist(pg) == ON )
        !          71100:        fp_out = stdout;
        !          71101:     else if ( (fp_out = fp_null) == NULL )
        !          71102:        fp_out = fp_null = fopen("/dev/null", "w");
        !          71103: 
        !          71104: }   /* End of redirect */
        !          71105: 
        !          71106: /*****************************************************************************/
        !          71107: 
        !          71108: 0707070014230550141006400057030057030000011527430522633077300003300000006774post.src/posttek/posttek.1.ds dQ /usr/lib/postscript
        !          71109: .TH POSTTEK 1 "DWB 3.2"
        !          71110: .SH NAME
        !          71111: .B posttek
        !          71112: \- PostScript translator for Tektronix 4014 files
        !          71113: .SH SYNOPSIS
        !          71114: \*(mBposttek\f1
        !          71115: .OP "" options []
        !          71116: .OP "" files []
        !          71117: .SH DESCRIPTION
        !          71118: .B posttek
        !          71119: translates Tektronix 4014 graphics
        !          71120: .I files
        !          71121: into PostScript and writes the results on the
        !          71122: standard output.
        !          71123: If no
        !          71124: .I files
        !          71125: are specified, or if
        !          71126: .OP \-
        !          71127: is one of the input
        !          71128: .IR files ,
        !          71129: the standard input is read.
        !          71130: The following
        !          71131: .I options
        !          71132: are understood:
        !          71133: .TP 0.75i
        !          71134: .OP \-c num
        !          71135: Print
        !          71136: .I num
        !          71137: copies of each page.
        !          71138: By default only one copy is printed.
        !          71139: .TP
        !          71140: .OP \-f name
        !          71141: Print text using font
        !          71142: .IR name .
        !          71143: Any PostScript font can be used,
        !          71144: although the best results will only be
        !          71145: obtained with constant width fonts.
        !          71146: The default font is Courier.
        !          71147: .TP
        !          71148: .OP \-m num
        !          71149: Magnify each logical page by the factor
        !          71150: .IR num .
        !          71151: Pages are scaled uniformly about the origin,
        !          71152: which by default is located at the center of
        !          71153: each page.
        !          71154: The default magnification is 1.0.
        !          71155: .TP
        !          71156: .OP \-n num
        !          71157: Print
        !          71158: .I num
        !          71159: logical pages on each piece of paper,
        !          71160: where
        !          71161: .I num
        !          71162: can be any positive integer.
        !          71163: By default
        !          71164: .I num
        !          71165: is set to 1.
        !          71166: .TP
        !          71167: .OP \-o list
        !          71168: Print pages whose numbers are given in the comma-separated
        !          71169: .IR list .
        !          71170: The list contains single numbers
        !          71171: .I N
        !          71172: and ranges
        !          71173: .IR N1\-\|N2 .
        !          71174: A missing
        !          71175: .I N1
        !          71176: means the lowest numbered page, a missing
        !          71177: .I N2
        !          71178: means the highest.
        !          71179: .TP
        !          71180: .OP \-p mode
        !          71181: Print
        !          71182: .I files
        !          71183: in either \*(mBportrait\fP or \*(mBlandscape\fP
        !          71184: .IR mode .
        !          71185: Only the first character of
        !          71186: .I mode
        !          71187: is significant.
        !          71188: The default
        !          71189: .I mode
        !          71190: is \*(mBlandscape\fP.
        !          71191: .TP
        !          71192: .OP \-w num
        !          71193: Set the line width used for graphics to
        !          71194: .I num
        !          71195: points, where a point is approximately 1/72
        !          71196: of an inch.
        !          71197: By default
        !          71198: .I num
        !          71199: is set to 0 points, which forces lines to be
        !          71200: one pixel wide.
        !          71201: .TP
        !          71202: .OP \-x num
        !          71203: Translate the origin
        !          71204: .I num
        !          71205: inches along the positive x axis.
        !          71206: The default
        !          71207: coordinate system has the origin fixed at the
        !          71208: center of the page, with positive
        !          71209: x to the right and positive y up the page.
        !          71210: Positive
        !          71211: .I num
        !          71212: moves everything right.
        !          71213: The default offset is 0.0 inches.
        !          71214: .TP
        !          71215: .OP \-y num
        !          71216: Translate the origin
        !          71217: .I num
        !          71218: inches along the positive y axis.
        !          71219: Positive
        !          71220: .I num
        !          71221: moves everything up the page.
        !          71222: The default offset is 0.0.
        !          71223: .TP
        !          71224: .OP \-E name
        !          71225: Set the character encoding for text fonts to
        !          71226: .IR name .
        !          71227: Requesting
        !          71228: .I name
        !          71229: means include file
        !          71230: .MI \*(dQ/ name .enc \f1.
        !          71231: A nonexistent encoding file is silently ignored.
        !          71232: The default selects file
        !          71233: .MR \*(dQ/Default.enc .
        !          71234: .TP
        !          71235: .OP \-L file
        !          71236: Use
        !          71237: .I file
        !          71238: as the PostScript prologue.
        !          71239: .br
        !          71240: The default is
        !          71241: .MR \*(dQ/posttek.ps .
        !          71242: .PP
        !          71243: Three options allow insertion of arbitrary PostScript
        !          71244: at controlled points in the translation process:
        !          71245: .TP 0.75i
        !          71246: .OP \-C file
        !          71247: Copy
        !          71248: .I file
        !          71249: to the output file;
        !          71250: .I file
        !          71251: must contain legitimate PostScript.
        !          71252: .TP
        !          71253: .OP \-P string
        !          71254: Include.
        !          71255: .I string
        !          71256: in the output file;
        !          71257: .I string
        !          71258: must be legitimate PostScript.
        !          71259: .TP
        !          71260: .OP \-R action
        !          71261: Requests special
        !          71262: .I action
        !          71263: (e.g.,
        !          71264: .MR manualfeed )
        !          71265: on a per page or global basis.
        !          71266: The
        !          71267: .I action
        !          71268: string can be given as
        !          71269: .IR request,
        !          71270: .IM request : page\f1\|,
        !          71271: or
        !          71272: .IM request : page : file\f1\|.
        !          71273: If
        !          71274: .I page
        !          71275: is omitted or given as 0, the request
        !          71276: applies to all pages.
        !          71277: If
        !          71278: .I file
        !          71279: is omitted, the request
        !          71280: lookup is done in
        !          71281: .MR \*(dQ/ps.requests .
        !          71282: .SH DIAGNOSTICS
        !          71283: A 0 exit status is returned if
        !          71284: .I files
        !          71285: were successfully processed.
        !          71286: .SH BUGS
        !          71287: The default line width is too small for write-white
        !          71288: print engines, like the one used by the \s-1PS\s+1-2400.
        !          71289: .br
        !          71290: .ne 4v
        !          71291: .SH FILES
        !          71292: .MW \*(dQ/posttek.ps
        !          71293: .br
        !          71294: .MW \*(dQ/forms.ps
        !          71295: .br
        !          71296: .MW \*(dQ/ps.requests
        !          71297: .SH SEE ALSO
        !          71298: .BR dpost (1),
        !          71299: .BR postdaisy(1),
        !          71300: .BR postdmd(1),
        !          71301: .BR postio(1),
        !          71302: .BR postmd(1),
        !          71303: .BR postprint(1),
        !          71304: .BR postreverse(1),
        !          71305: .BR psencoding (1)
        !          71306: 0707070014230550131006440057030057030000011530100522627504000003400000004530post.src/posttek/posttek.ps%
        !          71307: % Version 3.3.2 prologue for tektronix 4014 files.
        !          71308: %
        !          71309: 
        !          71310: /#copies 1 store
        !          71311: /aspectratio 1 def
        !          71312: /fixlinewidth true def
        !          71313: /font /Courier def
        !          71314: /formsperpage 1 def
        !          71315: /landscape true def
        !          71316: /linewidth 0 def
        !          71317: /magnification 1 def
        !          71318: /margin 10 def
        !          71319: /orientation 0 def
        !          71320: /rotation 1 def
        !          71321: /screenheight 3120 def
        !          71322: /screenwidth 4150 def
        !          71323: /spotsize 1 def
        !          71324: /xoffset 0 def
        !          71325: /yoffset 0 def
        !          71326: 
        !          71327: /useclippath true def
        !          71328: /pagebbox [0 0 612 792] def
        !          71329: 
        !          71330: /inch {72 mul} bind def
        !          71331: /min {2 copy gt {exch} if pop} bind def
        !          71332: 
        !          71333: /kshow {kshow} bind def                % so later references don't bind
        !          71334: 
        !          71335: /setup {
        !          71336:        counttomark 2 idiv {def} repeat pop
        !          71337: 
        !          71338:        landscape {/orientation 90 orientation add def} if
        !          71339: 
        !          71340:        pagedimensions
        !          71341:        /scaling
        !          71342:                height margin sub screenheight div
        !          71343:                width margin sub screenwidth div
        !          71344:        min def
        !          71345:        xcenter ycenter translate
        !          71346:        orientation rotation mul rotate
        !          71347:        xoffset inch yoffset inch translate
        !          71348:        magnification dup aspectratio mul scale
        !          71349:        scaling scaling scale
        !          71350:        screenwidth 2 div neg screenheight 2 div neg translate
        !          71351: 
        !          71352:        tietodevicespace
        !          71353:        linewidth scaling div setlinewidth
        !          71354:        1 setlinecap
        !          71355:        newpath
        !          71356: } def
        !          71357: 
        !          71358: /pagedimensions {
        !          71359:        useclippath {
        !          71360:                /pagebbox [clippath pathbbox newpath] def
        !          71361:        } if
        !          71362:        pagebbox aload pop
        !          71363:        4 -1 roll exch 4 1 roll 4 copy
        !          71364:        landscape {4 2 roll} if
        !          71365:        sub /width exch def
        !          71366:        sub /height exch def
        !          71367:        add 2 div /xcenter exch def
        !          71368:        add 2 div /ycenter exch def
        !          71369:        userdict /gotpagebbox true put
        !          71370: } def
        !          71371: 
        !          71372: /pagesetup {/page exch def} bind def
        !          71373: 
        !          71374: /tietodevicespace {
        !          71375:        fixlinewidth linewidth 0 gt and linewidth 1 lt and {
        !          71376:                /moveto {
        !          71377:                        2 copy /Y exch def /X exch def
        !          71378:                        transform round exch round exch itransform
        !          71379:                        moveto
        !          71380:                } bind def
        !          71381:                /lineto {
        !          71382:                        2 copy /Y exch def /X exch def
        !          71383:                        transform round exch round exch itransform
        !          71384:                        lineto
        !          71385:                } bind def
        !          71386:                /rlineto {Y add exch X add exch lineto} bind def
        !          71387:                /v V 0 get bind def
        !          71388:        } if
        !          71389: } def
        !          71390: 
        !          71391: /V [{moveto counttomark 2 idiv {rlineto} repeat stroke}] def
        !          71392: /v V 0 get bind def
        !          71393: /p {newpath spotsize 0 360 arc fill} bind def
        !          71394: 
        !          71395: /l {{scaling div} forall counttomark array astore 0 setdash} bind def
        !          71396: /w {linewidth 0 eq {.3} {linewidth} ifelse mul linewidth add scaling div setlinewidth} bind def
        !          71397: /i {3 mul 4 sub -100 div mul .5 add /spotsize exch def} bind def
        !          71398: 
        !          71399: /f {/charwidth exch def font findfont charwidth .6 div scalefont setfont} bind def
        !          71400: 
        !          71401: /t {
        !          71402:        3 1 roll moveto
        !          71403:        currentpoint {
        !          71404:                pop pop
        !          71405:                exch charwidth add exch
        !          71406:                moveto currentpoint
        !          71407:        } 4 -1 roll kshow
        !          71408:        pop pop
        !          71409: } bind def
        !          71410: 
        !          71411: /done {/lastpage where {pop lastpage} if} def
        !          71412: 0707070014230265710407550057030057030000020677160522633077500002300000000000post.src/printfont0707070014230265721006440057030057030000010677500522627504000004000000016641post.src/printfont/printfont.ps%
        !          71413: % Formatted font dump. Assumes all fonts include valid FontBBox arrays.
        !          71414: %
        !          71415: 
        !          71416: /#copies 1 store
        !          71417: /aspectratio 1 def
        !          71418: /landscape false def
        !          71419: /magnification 1 def
        !          71420: /margin 10 def
        !          71421: /orientation 0 def
        !          71422: /rotation 1 def
        !          71423: /xoffset 0 def
        !          71424: /yoffset 0 def
        !          71425: 
        !          71426: /axescount 0 def
        !          71427: /charwidth false def
        !          71428: /graynotdef 0.85 def
        !          71429: /hireslinewidth 0.2 def
        !          71430: /longnames false def
        !          71431: /maxsize 6.0 def
        !          71432: /minsize 4.5 def
        !          71433: /numbercell true def
        !          71434: /radix 16 def
        !          71435: /labelfont /Helvetica def
        !          71436: /labelspace 36 def
        !          71437: /zerocell 0 def
        !          71438: 
        !          71439: /roundpage true def
        !          71440: /useclippath true def
        !          71441: /pagebbox [0 0 612 792] def
        !          71442: 
        !          71443: /inch {72 mul} def
        !          71444: /min {2 copy gt {exch} if pop} def
        !          71445: /max {2 copy lt {exch} if pop} def
        !          71446: 
        !          71447: /LLx {0 get} bind def
        !          71448: /LLy {1 get} bind def
        !          71449: /URx {2 get} bind def
        !          71450: /URy {3 get} bind def
        !          71451: /BBoxHeight {dup URy exch LLy sub} bind def
        !          71452: /BBoxWidth {dup URx exch LLx sub} bind def
        !          71453: 
        !          71454: /setup {
        !          71455:        /graylevels [1 0 0] def
        !          71456:        /scratchstring 512 string def
        !          71457:        /Product statusdict begin /product where {pop product}{(Unknown)} ifelse end def
        !          71458:        /Resolution 0 72 dtransform dup mul exch dup mul add sqrt cvi def
        !          71459:        /Version /version where {pop version}{(???)} ifelse def
        !          71460: 
        !          71461:        landscape {/orientation 90 orientation add def} if
        !          71462: 
        !          71463:        pagedimensions
        !          71464:        xcenter ycenter translate
        !          71465:        orientation rotation mul rotate
        !          71466:        width 2 div neg height 2 div translate
        !          71467:        xoffset inch yoffset inch neg translate
        !          71468:        margin dup neg translate
        !          71469:        0 labelspace .75 mul neg translate
        !          71470:        magnification dup aspectratio mul scale
        !          71471:        0 0 transform round exch round exch itransform translate
        !          71472: 
        !          71473:        currentdict /linewidth known not {
        !          71474:                /linewidth Resolution 400 le {0}{hireslinewidth} ifelse def
        !          71475:        } if
        !          71476: } def
        !          71477: 
        !          71478: /pagedimensions {
        !          71479:        useclippath {
        !          71480:                /pagebbox [clippath pathbbox newpath] def
        !          71481:                roundpage currentdict /roundpagebbox known and {roundpagebbox} if
        !          71482:        } if
        !          71483:        pagebbox aload pop
        !          71484:        4 -1 roll exch 4 1 roll 4 copy
        !          71485:        landscape {4 2 roll} if
        !          71486:        sub /width exch def
        !          71487:        sub /height exch def
        !          71488:        add 2 div /xcenter exch def
        !          71489:        add 2 div /ycenter exch def
        !          71490: } def
        !          71491: 
        !          71492: /CharSetup {
        !          71493:        /chcode exch def
        !          71494:        /chname Encoding chcode get def
        !          71495:        /chstring ( ) dup 0 chcode put def
        !          71496:        /chknown true def
        !          71497: 
        !          71498:        graylevels 0 1 put      % initial cell fill
        !          71499:        graylevels 1 0 put      % cell text
        !          71500:        graylevels 2 0 put      % cell border
        !          71501: 
        !          71502:        FontDict /CharStrings known {
        !          71503:                FontDict /CharStrings get chname known not {
        !          71504:                        /chknown false def
        !          71505:                        graylevels 0 0 put
        !          71506:                        graylevels 1 1 put
        !          71507:                } if
        !          71508:        } if
        !          71509: 
        !          71510:        chname /.notdef eq {
        !          71511:                /chknown false def
        !          71512:                graylevels 0 graynotdef put
        !          71513:                graylevels 1 graynotdef put
        !          71514:        } if
        !          71515: 
        !          71516:        /chwid chknown
        !          71517:                {FontDict 1 scalefont setfont chstring stringwidth pop}
        !          71518:                {0}
        !          71519:        ifelse def
        !          71520: } bind def
        !          71521: 
        !          71522: /CellSetup {
        !          71523:        /gridwidth width margin 2 mul sub def
        !          71524:        /gridheight height labelspace sub margin 2 mul sub def
        !          71525:        /cellwidth gridwidth radix div def
        !          71526:        /cellheight gridheight Entries radix div ceiling div def
        !          71527: 
        !          71528:        cellwidth cellheight dtransform truncate exch truncate exch idtransform
        !          71529:        /cellheight exch def
        !          71530:        /cellwidth exch def
        !          71531: 
        !          71532:        labelfont findfont 1 scalefont setfont
        !          71533:        /LabelBBox currentfont /FontBBox get TransformBBox def
        !          71534: 
        !          71535:        LabelBBox 2 0 Encoding {
        !          71536:                scratchstring cvs stringwidth pop
        !          71537:                2 copy lt {exch} if
        !          71538:                pop
        !          71539:        } forall put
        !          71540: 
        !          71541:        /CellLabelSize
        !          71542:                cellheight .20 mul cellwidth .90 mul LabelBBox BestFit
        !          71543:                minsize max
        !          71544:                maxsize min
        !          71545:        def
        !          71546:        zerocell CellOrigin cellheight add neg exch neg exch translate
        !          71547: } bind def
        !          71548: 
        !          71549: /FontSetup {
        !          71550:        FontName findfont 1 scalefont setfont
        !          71551:        /BBox currentfont /FontBBox get TransformBBox def
        !          71552:        /PointSize cellheight .5 mul cellwidth .8 mul BBox BestFit def
        !          71553:        BBox {PointSize mul} forall BBox astore pop
        !          71554: 
        !          71555:        /xorigin cellwidth BBox BBoxWidth sub 2 div BBox LLx sub def
        !          71556:        /yorigin cellheight BBox BBoxHeight sub 2 div BBox LLy sub def
        !          71557: } bind def
        !          71558: 
        !          71559: /BestFit {
        !          71560:        /bbox exch def
        !          71561:        bbox BBoxWidth div exch
        !          71562:        bbox BBoxHeight div min
        !          71563: } bind def
        !          71564: 
        !          71565: /TransformBBox {       % font bbox to user space
        !          71566:        aload pop
        !          71567:        currentfont /FontMatrix get dtransform 4 2 roll
        !          71568:        currentfont /FontMatrix get dtransform 4 2 roll
        !          71569:        4 array astore  % should build user space bbox if all zeros
        !          71570: } bind def
        !          71571: 
        !          71572: /CellOrigin {
        !          71573:        dup
        !          71574:        exch radix mod cellwidth mul
        !          71575:        exch radix idiv 1 add neg cellheight mul
        !          71576: } bind def
        !          71577: 
        !          71578: /CellOutline {
        !          71579:        newpath
        !          71580:        CellOrigin moveto
        !          71581:        cellwidth 0 rlineto
        !          71582:        0 cellheight rlineto
        !          71583:        cellwidth neg 0 rlineto
        !          71584:        closepath
        !          71585: } bind def
        !          71586: 
        !          71587: /LabelCell {
        !          71588:        gsave
        !          71589:        chcode CellOrigin translate
        !          71590:        linewidth .5 mul setlinewidth
        !          71591:        labelfont findfont CellLabelSize scalefont setfont
        !          71592: 
        !          71593:        numbercell {
        !          71594:                cellwidth .025 mul cellheight .05 mul moveto
        !          71595:                chcode radix scratchstring cvrs show
        !          71596:        } if
        !          71597: 
        !          71598:        charwidth chknown and {
        !          71599:                /wid chwid 0.0005 add scratchstring cvs 0 5 getinterval def
        !          71600:                cellwidth wid stringwidth pop 1.10 mul sub cellheight .05 mul moveto
        !          71601:                wid show
        !          71602:        } if
        !          71603: 
        !          71604:        longnames chknown not or {
        !          71605:                cellwidth .025 mul
        !          71606:                cellheight LabelBBox URy CellLabelSize mul sub .05 sub moveto
        !          71607:                Encoding chcode get scratchstring cvs show
        !          71608:        } if
        !          71609: 
        !          71610:        axescount 1 ge chknown and {    % gsave/grestore if not last
        !          71611:                newpath
        !          71612:                xorigin yorigin translate
        !          71613: 
        !          71614:                BBox LLx 0 moveto       % baseline
        !          71615:                BBox URx 0 lineto stroke
        !          71616: 
        !          71617:                axescount 2 ge {        % vertical through current origin
        !          71618:                        0 BBox LLy moveto
        !          71619:                        0 BBox URy lineto stroke
        !          71620:                } if
        !          71621: 
        !          71622:                axescount 3 ge {        % vertical through next origin
        !          71623:                        chwid PointSize mul BBox LLy
        !          71624:                        dtransform round exch round exch idtransform moveto
        !          71625:                        0 BBox BBoxHeight rlineto stroke
        !          71626:                        %chwid PointSize mul BBox URy lineto stroke
        !          71627:                } if
        !          71628:        } if
        !          71629:        grestore
        !          71630: } bind def
        !          71631: 
        !          71632: /PlaceChar {
        !          71633:        FontName findfont PointSize scalefont setfont
        !          71634:        chcode CellOrigin moveto
        !          71635:        xorigin yorigin rmoveto
        !          71636:        ( ) dup 0 chcode put show
        !          71637: } bind def
        !          71638: 
        !          71639: /LabelPage {
        !          71640:        labelfont findfont labelspace .75 mul .75 mul 18 min scalefont setfont
        !          71641:        0 labelspace .75 mul .25 mul moveto
        !          71642:        FontName scratchstring cvs show
        !          71643: 
        !          71644:        labelfont findfont labelspace .25 mul .75 mul 9 min scalefont setfont
        !          71645:        0 gridheight neg moveto
        !          71646:        0 labelspace .25 mul .75 mul neg rmoveto
        !          71647:        Product show ( Version ) show Version show
        !          71648:        ( \() show Resolution scratchstring cvs show (dpi\)) show
        !          71649: 
        !          71650:        gridwidth gridheight neg moveto
        !          71651:         0 labelspace .25 mul .75 mul neg rmoveto
        !          71652:        (size=, ) stringwidth pop neg 0 rmoveto
        !          71653:        PointSize cvi scratchstring cvs stringwidth pop neg 0 rmoveto
        !          71654:        (gray=, ) stringwidth pop neg 0 rmoveto
        !          71655:        graynotdef scratchstring cvs stringwidth pop neg 0 rmoveto
        !          71656:        (linewidth=) stringwidth pop neg 0 rmoveto
        !          71657:        linewidth scratchstring cvs stringwidth pop neg 0 rmoveto
        !          71658:        (size=) show PointSize cvi scratchstring cvs show (, ) show
        !          71659:        (gray=) show graynotdef scratchstring cvs show (, ) show
        !          71660:        (linewidth=) show linewidth scratchstring cvs show
        !          71661: } bind def
        !          71662: 
        !          71663: %
        !          71664: % Formatted dump of the encoded characters in a single font.
        !          71665: %
        !          71666: 
        !          71667: /PrintFont {
        !          71668:        /saveobj save def
        !          71669:        /FontName exch def
        !          71670:        /FontDict FontName findfont def
        !          71671:        /Encoding FontDict /Encoding get def
        !          71672:        /Entries Encoding length def
        !          71673: 
        !          71674:        CellSetup
        !          71675:        FontSetup
        !          71676:        LabelPage
        !          71677:        zerocell 1 Entries 1 sub {
        !          71678:                CharSetup
        !          71679:                graylevels 0 get setgray
        !          71680:                chcode CellOutline fill
        !          71681:                graylevels 1 get setgray
        !          71682:                LabelCell
        !          71683:                PlaceChar
        !          71684:                graylevels 2 get setgray
        !          71685:                linewidth setlinewidth
        !          71686:                chcode CellOutline stroke
        !          71687:        } for
        !          71688:        showpage
        !          71689:        saveobj restore
        !          71690: } bind def
        !          71691: 
        !          71692: %
        !          71693: % Dump of all ROM and disk fonts - in alphabetical order.
        !          71694: %
        !          71695: 
        !          71696: /AllFonts {
        !          71697:        /AllFontNames FontDirectory maxlength array def
        !          71698:        AllFontNames 0 0 put
        !          71699: 
        !          71700:        FontDirectory {pop AllFontNames Insert} forall
        !          71701: 
        !          71702:        /filenameforall where {
        !          71703:                pop
        !          71704:                (fonts/*)
        !          71705:                {(fonts/) search pop pop pop AllFontNames Insert}
        !          71706:                200 string
        !          71707:                filenameforall
        !          71708:        } if
        !          71709: 
        !          71710:        1 1 AllFontNames 0 get {
        !          71711:                AllFontNames exch get cvn PrintFont
        !          71712:        } for
        !          71713: } bind def
        !          71714: 
        !          71715: /Insert {              % name in a sorted list
        !          71716:        /List exch def
        !          71717:        /Name exch 128 string cvs def
        !          71718: 
        !          71719:        /Slot 1 def
        !          71720:        List 0 get {
        !          71721:                Name List Slot get le {exit} if
        !          71722:                /Slot Slot 1 add def
        !          71723:        } repeat
        !          71724: 
        !          71725:        List 0 get -1 Slot {
        !          71726:                dup List exch get
        !          71727:                List 3 1 roll exch 1 add exch put
        !          71728:        } for
        !          71729:        List Slot Name put
        !          71730:        List 0 List 0 get 1 add put
        !          71731: } bind def
        !          71732: 
        !          71733: 0707070014230265731006440057030057030000010677340522627504000004000000005147post.src/printfont/printfont.sh#
        !          71734: # Formatted dump of encoded characters in one or more PostScript fonts.
        !          71735: # Arguments should be PostScript font names or the word all, which dumps
        !          71736: # all ROM and disk based fonts.
        !          71737: #
        !          71738: 
        !          71739: POSTLIB=/usr/lib/postscript
        !          71740: PROLOGUE=$POSTLIB/printfont.ps
        !          71741: 
        !          71742: OPTIONS=
        !          71743: COPYFILE=
        !          71744: MODE=portrait
        !          71745: FONTENCODING=Default
        !          71746: 
        !          71747: NONCONFORMING="%!PS"
        !          71748: ENDPROLOG="%%EndProlog"
        !          71749: BEGINSETUP="%%BeginSetup"
        !          71750: ENDSETUP="%%EndSetup"
        !          71751: TRAILER="%%Trailer"
        !          71752: 
        !          71753: SETUP=setup
        !          71754: 
        !          71755: while [ -n "$1" ]; do
        !          71756:     case $1 in
        !          71757:        -a)  shift; OPTIONS="$OPTIONS /axescount $1 def";;
        !          71758:        -a*) OPTIONS="$OPTIONS /axescount `echo $1 | sed s/-a//` def";;
        !          71759: 
        !          71760:        -b)  shift; OPTIONS="$OPTIONS /radix $1 def";;
        !          71761:        -b*) OPTIONS="$OPTIONS /radix `echo $1 | sed s/-b//` def";;
        !          71762: 
        !          71763:        -c)  shift; OPTIONS="$OPTIONS /#copies $1 store";;
        !          71764:        -c*) OPTIONS="$OPTIONS /#copies `echo $1 | sed s/-c//` store";;
        !          71765: 
        !          71766:        -f)  shift; OPTIONS="$OPTIONS /labelfont /$1 def";;
        !          71767:        -f*) OPTIONS="$OPTIONS /labelfont /`echo $1 | sed s/-f//` def";;
        !          71768: 
        !          71769:        -g)  shift; OPTIONS="$OPTIONS /graynotdef $1 def";;
        !          71770:        -g*) OPTIONS="$OPTIONS /graynotdef `echo $1 | sed s/-g//` def";;
        !          71771: 
        !          71772:        -p)  shift; MODE=$1;;
        !          71773:        -p*) MODE=`echo $1 | sed s/-p//`;;
        !          71774: 
        !          71775:        -q)  OPTIONS="$OPTIONS /longnames false def /charwidth false def";;
        !          71776: 
        !          71777:        -m)  shift; OPTIONS="$OPTIONS /magnification $1 def";;
        !          71778:        -m*) OPTIONS="$OPTIONS /magnification `echo $1 | sed s/-m//` def";;
        !          71779: 
        !          71780:        -v)  OPTIONS="$OPTIONS /longnames true def /charwidth true def";;
        !          71781: 
        !          71782:        -w)  shift; OPTIONS="$OPTIONS /linewidth $1 def";;
        !          71783:        -w*) OPTIONS="$OPTIONS /linewidth `echo $1 | sed s/-w//` def";;
        !          71784: 
        !          71785:        -x)  shift; OPTIONS="$OPTIONS /xoffset $1 def";;
        !          71786:        -x*) OPTIONS="$OPTIONS /xoffset `echo $1 | sed s/-x//` def";;
        !          71787: 
        !          71788:        -y)  shift; OPTIONS="$OPTIONS /yoffset $1 def";;
        !          71789:        -y*) OPTIONS="$OPTIONS /yoffset `echo $1 | sed s/-y//` def";;
        !          71790: 
        !          71791:        -z)  shift; OPTIONS="$OPTIONS /zerocell $1 def";;
        !          71792:        -z*) OPTIONS="$OPTIONS /zerocell `echo $1 | sed s/-z//` def";;
        !          71793: 
        !          71794:        -C)  shift; COPYFILE="$COPYFILE $1";;
        !          71795:        -C*) COPYFILE="$COPYFILE `echo $1 | sed s/-C//`";;
        !          71796: 
        !          71797:        -E)  shift; FONTENCODING=$1;;
        !          71798:        -E*) FONTENCODING=`echo $1 | sed s/-E//`;;
        !          71799: 
        !          71800:        -L)  shift; PROLOGUE=$1;;
        !          71801:        -L*) PROLOGUE=`echo $1 | sed s/-L//`;;
        !          71802: 
        !          71803:        -*)  echo "$0: illegal option $1" >&2; exit 1;;
        !          71804: 
        !          71805:        *)   break;;
        !          71806:     esac
        !          71807:     shift
        !          71808: done
        !          71809: 
        !          71810: case "$MODE" in
        !          71811:     l*) OPTIONS="$OPTIONS /landscape true def";;
        !          71812:     *) OPTIONS="$OPTIONS /landscape false def";;
        !          71813: esac
        !          71814: 
        !          71815: echo $NONCONFORMING
        !          71816: cat $PROLOGUE
        !          71817: echo $ENDPROLOG
        !          71818: echo $BEGINSETUP
        !          71819: cat ${COPYFILE:-/dev/null}
        !          71820: echo $OPTIONS
        !          71821: 
        !          71822: case "$FONTENCODING" in
        !          71823:     /*) cat $FONTENCODING;;
        !          71824:     ?*) cat ${POSTLIB}/${FONTENCODING}.enc 2>/dev/null
        !          71825: esac
        !          71826: 
        !          71827: echo $SETUP
        !          71828: echo $ENDSETUP
        !          71829: 
        !          71830: for i do
        !          71831:     case "$i" in
        !          71832:        all) echo AllFonts;;
        !          71833:        /*)  echo "$i PrintFont";;
        !          71834:        ?*)  echo "/$i PrintFont";;
        !          71835:     esac
        !          71836: done
        !          71837: 
        !          71838: echo $TRAILER
        !          71839: 
        !          71840: 0707070014230265631006400057030057030000010672360522633077400004000000003045post.src/printfont/printfont.mkMAKE=/bin/make
        !          71841: MAKEFILE=printfont.mk
        !          71842: 
        !          71843: OWNER=bin
        !          71844: GROUP=bin
        !          71845: 
        !          71846: MAN1DIR=/tmp
        !          71847: MAN5DIR=/usr/man/p_man/man5
        !          71848: POSTLIB=/usr/lib/postscript
        !          71849: POSTBIN=/usr/bin/postscript
        !          71850: 
        !          71851: all : printfont
        !          71852: 
        !          71853: install : all
        !          71854:        @if [ ! -d "$(POSTBIN)" ]; then \
        !          71855:            mkdir $(POSTBIN); \
        !          71856:            chmod 755 $(POSTBIN); \
        !          71857:            chgrp $(GROUP) $(POSTBIN); \
        !          71858:            chown $(OWNER) $(POSTBIN); \
        !          71859:        fi
        !          71860:        @if [ ! -d "$(POSTLIB)" ]; then \
        !          71861:            mkdir $(POSTLIB); \
        !          71862:            chmod 755 $(POSTLIB); \
        !          71863:            chgrp $(GROUP) $(POSTLIB); \
        !          71864:            chown $(OWNER) $(POSTLIB); \
        !          71865:        fi
        !          71866:        cp printfont $(POSTBIN)/printfont
        !          71867:        @chmod 755 $(POSTBIN)/printfont
        !          71868:        @chgrp $(GROUP) $(POSTBIN)/printfont
        !          71869:        @chown $(OWNER) $(POSTBIN)/printfont
        !          71870:        cp printfont.ps $(POSTLIB)/printfont.ps
        !          71871:        @chmod 644 $(POSTLIB)/printfont.ps
        !          71872:        @chgrp $(GROUP) $(POSTLIB)/printfont.ps
        !          71873:        @chown $(OWNER) $(POSTLIB)/printfont.ps
        !          71874:        cp printfont.1 $(MAN1DIR)/printfont.1
        !          71875:        @chmod 644 $(MAN1DIR)/printfont.1
        !          71876:        @chgrp $(GROUP) $(MAN1DIR)/printfont.1
        !          71877:        @chown $(OWNER) $(MAN1DIR)/printfont.1
        !          71878: 
        !          71879: clean :
        !          71880: 
        !          71881: clobber : clean
        !          71882:        rm -f printfont
        !          71883: 
        !          71884: printfont : printfont.sh
        !          71885:        sed "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" printfont.sh >printfont
        !          71886:        @chmod 755 printfont
        !          71887: 
        !          71888: changes :
        !          71889:        @trap "" 1 2 3 15; \
        !          71890:        sed \
        !          71891:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          71892:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          71893:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
        !          71894:            -e "s'^MAN5DIR=.*'MAN5DIR=$(MAN5DIR)'" \
        !          71895:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
        !          71896:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
        !          71897:        $(MAKEFILE) >XXX.mk; \
        !          71898:        mv XXX.mk $(MAKEFILE); \
        !          71899:        sed \
        !          71900:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
        !          71901:        printfont.1 >XXX.1; \
        !          71902:        mv XXX.1 printfont.1
        !          71903: 
        !          71904: 0707070014230265751006400057030057030000010672500522633077500003700000010150post.src/printfont/printfont.1.ds dQ /usr/lib/postscript
        !          71905: .TH PRINTFONT 1 "DWB 3.2"
        !          71906: .SH NAME
        !          71907: .B printfont
        !          71908: \- font listing program for PostScript printers
        !          71909: .SH SYNOPSIS
        !          71910: \*(mBprintfont\f1
        !          71911: .OP "" options []
        !          71912: .OP "" files []
        !          71913: .SH DESCRIPTION
        !          71914: .B printfont
        !          71915: builds a PostScript program that prints character set tables for
        !          71916: one or more PostScript fonts.
        !          71917: The program is written on the standard output,
        !          71918: and when sent to a PostScript printer usually prints a 16\(mu16 table
        !          71919: that shows the available (encoded) characters in each font.
        !          71920: The following
        !          71921: .I options
        !          71922: are understood:
        !          71923: .TP 1.0i
        !          71924: .OP \-a num
        !          71925: Set the character cell axes mode to
        !          71926: .IR num .
        !          71927: 0 disables axes printing, 1 draws a baseline,
        !          71928: 2 adds a vertical line through the character origin,
        !          71929: and 3 adds a vertical line through the next character origin.
        !          71930: The default is 0.
        !          71931: .TP 1.0i
        !          71932: .OP \-b num
        !          71933: Print each table in base
        !          71934: .IR num .
        !          71935: The base determines the number of rows and columns in the table.
        !          71936: It also affects the character code placed in the lower left corner of each cell.
        !          71937: The default is 16 (hexadecimal).
        !          71938: .TP 1.0i
        !          71939: .OP \-c num
        !          71940: Print
        !          71941: .I num
        !          71942: copies of each page.
        !          71943: By default only one copy is printed.
        !          71944: .TP 1.0i
        !          71945: .OP \-f name
        !          71946: Use font
        !          71947: .I name
        !          71948: for labeling the tables.
        !          71949: The default font is Helvetica.
        !          71950: .TP 1.0i
        !          71951: .OP \-g num
        !          71952: Use
        !          71953: .I num
        !          71954: as the gray level for marking cells not currently assigned to characters.
        !          71955: The gray level should fall between 0 (black) and 1 (white).
        !          71956: The default is 0.85.
        !          71957: .TP 1.0i
        !          71958: .OP \-m num
        !          71959: Magnify each logical page by the factor
        !          71960: .IR num .
        !          71961: Pages are scaled uniformly about the origin,
        !          71962: which is located near the upper left corner of each page.
        !          71963: The default is 1.0.
        !          71964: .TP 1.0i
        !          71965: .OP \-p mode
        !          71966: Print
        !          71967: .I files
        !          71968: in either \*(mBportrait\fP or \*(mBlandscape\fP
        !          71969: .IR mode .
        !          71970: Only the first character of
        !          71971: .I mode
        !          71972: is significant.
        !          71973: The default
        !          71974: .I mode
        !          71975: is \*(mBportrait\fP.
        !          71976: .TP 1.0i
        !          71977: .OP \-v
        !          71978: Completely label each character cell.
        !          71979: The full character name goes in the upper left corner and the
        !          71980: character width (at point size 1) goes in the lower right corner.
        !          71981: .TP 1.0i
        !          71982: .OP \-w num
        !          71983: Set the line width to
        !          71984: .I num
        !          71985: points, where a point is approximately 1/72 of an inch.
        !          71986: A line width of 0 means 1 pixel.
        !          71987: The default line width is resolution dependent.
        !          71988: .TP 1.0i
        !          71989: .OP \-x num
        !          71990: Translate the origin
        !          71991: .I num
        !          71992: inches along the x axis.
        !          71993: Positive
        !          71994: .I num
        !          71995: shifts the table to the right.
        !          71996: The default offset is 0.
        !          71997: .TP 1.0i
        !          71998: .OP \-y num
        !          71999: Translate the origin
        !          72000: .I num
        !          72001: inches along the y axis.
        !          72002: Positive
        !          72003: .I num
        !          72004: shifts the table up the page.
        !          72005: The default offset is 0.
        !          72006: .TP 1.0i
        !          72007: .OP \-C file
        !          72008: Copy
        !          72009: .I file
        !          72010: to the output file;
        !          72011: .B file
        !          72012: must contain legitimate PostScript.
        !          72013: .TP 1.0i
        !          72014: .OP \-E name
        !          72015: Set the character encoding for text fonts to
        !          72016: .IR name .
        !          72017: Requesting
        !          72018: .I name
        !          72019: means include file
        !          72020: .MI \*(dQ/ name .enc \f1.
        !          72021: A nonexistent encoding file is silently ignored.
        !          72022: The default selects file
        !          72023: .MR \*(dQ/Default.enc .
        !          72024: .TP 1.0i
        !          72025: .OP \-L file
        !          72026: Use
        !          72027: .I file
        !          72028: as the PostScript prologue.
        !          72029: .br
        !          72030: The default is
        !          72031: .MR \*(dQ/printfont.ps .
        !          72032: .PP
        !          72033: Arguments should be PostScript
        !          72034: .I font
        !          72035: names or the word
        !          72036: .MR all ,
        !          72037: which means the full set of
        !          72038: .SM ROM
        !          72039: and disk based fonts available on a printer.
        !          72040: .B printfont
        !          72041: prints one font table per page.
        !          72042: Each page is labeled with the
        !          72043: .I font
        !          72044: name, the printer product name and interpreter version number,
        !          72045: and the gray level, linewidth, and printer resolution.
        !          72046: .PP
        !          72047: Black cells are used to mark characters listed in the font's
        !          72048: .MW Encoding
        !          72049: array but missing from its
        !          72050: .MW CharStrings
        !          72051: dictionary.
        !          72052: They usually indicate an incomplete font or a mistake in the
        !          72053: .MW Encoding
        !          72054: array.
        !          72055: The check is skipped if the font doesn't include a
        !          72056: .MW CharStrings
        !          72057: dictionary.
        !          72058: .br
        !          72059: .ne 4v
        !          72060: .SH EXAMPLES
        !          72061: Print the characters available in the Times-Roman, Symbol and
        !          72062: ZapfDingbats fonts:
        !          72063: .EX
        !          72064: printfont Times-Roman Symbol ZapfDingbats | lp ...
        !          72065: .EE
        !          72066: Print a baseline under each character and fully label the cells:
        !          72067: .EX
        !          72068: printfont -a1 -v Times-Roman Symbol ZapfDingbats | lp ...
        !          72069: .EE
        !          72070: Dump all the fonts available on a printer using the Latin1 character encoding:
        !          72071: .EX
        !          72072: printfont -ELatin1 all | lp ...
        !          72073: .EE
        !          72074: .SH WARNINGS
        !          72075: Printing a single table can take several minutes.
        !          72076: Dumping all available fonts can tie a printer up for an hour or more.
        !          72077: .SH FILES
        !          72078: .MW \*(dQ/printfont.ps
        !          72079: .br
        !          72080: .MW \*(dQ/*.enc
        !          72081: .SH SEE ALSO
        !          72082: buildtables(1),
        !          72083: dpost(1),
        !          72084: postio(1),
        !          72085: psencoding(1),
        !          72086: trofftable(1)
        !          72087: 0707070014230643060407550057030057030000021712370522627504100001700000000000post.src/tests0707070014230643071006440057030057030000011714700522627504100002700000112244post.src/tests/postmd1   .1000000e+01   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72088:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72089:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72090:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72091:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72092:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72093:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72094:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72095:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72096:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72097: 
        !          72098:    .0000000e+00   .1000000e+01   .0000000e+00   .0000000e+00   .0000000e+00
        !          72099:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72100:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72101:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72102:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72103:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72104:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72105:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72106:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72107:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72108: 
        !          72109:    .0000000e+00   .0000000e+00   .1000000e+01   .0000000e+00   .0000000e+00
        !          72110:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72111:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72112:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72113:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72114:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72115:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72116:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72117:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72118:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72119: 
        !          72120:    .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01   .0000000e+00
        !          72121:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72122:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72123:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72124:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72125:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72126:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72127:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72128:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72129:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72130: 
        !          72131:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01
        !          72132:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72133:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72134:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72135:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72136:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72137:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72138:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72139:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72140:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72141: 
        !          72142:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72143:    .1000000e+01   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72144:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72145:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72146:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72147:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72148:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72149:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72150:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72151:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72152: 
        !          72153:   -.5602721e+08   .1143984e+09  -.6207247e+08   .0000000e+00   .0000000e+00
        !          72154:   -.1149580e+09   .2301959e+09  -.1138958e+09   .0000000e+00   .0000000e+00
        !          72155:   -.5853962e+08   .1144553e+09  -.5355661e+08   .0000000e+00   .0000000e+00
        !          72156:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72157:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72158:   -.2468074e+08   .1401407e+07   .2608215e+08   .0000000e+00   .0000000e+00
        !          72159:   -.5473053e+06  -.2402412e+07  -.1855106e+07   .0000000e+00   .0000000e+00
        !          72160:    .2522804e+08   .1001005e+07  -.2422704e+08   .0000000e+00   .0000000e+00
        !          72161:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72162:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72163: 
        !          72164:    .0000000e+00  -.5219836e+08   .1123168e+09  -.6715163e+08   .0000000e+00
        !          72165:    .0000000e+00  -.1138958e+09   .2284693e+09  -.1110422e+09   .0000000e+00
        !          72166:    .0000000e+00  -.6060955e+08   .1126212e+09  -.4850979e+08   .0000000e+00
        !          72167:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72168:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72169:    .0000000e+00  -.2391785e+08   .3480520e+07   .2739837e+08   .0000000e+00
        !          72170:    .0000000e+00  -.1855106e+07  -.5966605e+07  -.4111499e+07   .0000000e+00
        !          72171:    .0000000e+00   .2577296e+08   .2486086e+07  -.2328688e+08   .0000000e+00
        !          72172:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72173:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72174: 
        !          72175:    .0000000e+00   .0000000e+00  -.4569685e+08   .1058615e+09  -.8114649e+08
        !          72176:    .0000000e+00   .0000000e+00  -.1110422e+09   .2277521e+09  -.1023531e+09
        !          72177:    .0000000e+00   .0000000e+00  -.6383463e+08   .1075339e+09  -.3707416e+08
        !          72178:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72179:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72180:    .0000000e+00   .0000000e+00  -.2260163e+08   .8226099e+07   .3082772e+08
        !          72181:    .0000000e+00   .0000000e+00  -.4111499e+07  -.1410188e+08  -.9990385e+07
        !          72182:    .0000000e+00   .0000000e+00   .2671312e+08   .5875785e+07  -.2083734e+08
        !          72183:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72184:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72185: 
        !          72186:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72187:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01
        !          72188:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72189:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72190:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72191:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72192:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72193:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72194:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72195:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72196: 
        !          72197:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72198:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72199:    .1000000e+01   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72200:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72201:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72202:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72203:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72204:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72205:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72206:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72207: 
        !          72208:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72209:   -.5644212e+08   .1144553e+09  -.6060955e+08   .0000000e+00   .0000000e+00
        !          72210:   -.1149657e+09   .2301010e+09  -.1139830e+09   .0000000e+00   .0000000e+00
        !          72211:   -.5811705e+08   .1144933e+09  -.5493231e+08   .0000000e+00   .0000000e+00
        !          72212:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72213:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72214:   -.2477196e+08   .1001005e+07   .2577296e+08   .0000000e+00   .0000000e+00
        !          72215:   -.3648702e+06  -.1601608e+07  -.1236738e+07   .0000000e+00   .0000000e+00
        !          72216:    .2513683e+08   .6006029e+06  -.2453622e+08   .0000000e+00   .0000000e+00
        !          72217:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72218: 
        !          72219:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72220:    .0000000e+00  -.5355661e+08   .1126212e+09  -.6383463e+08   .0000000e+00
        !          72221:    .0000000e+00  -.1139830e+09   .2279620e+09  -.1114623e+09   .0000000e+00
        !          72222:    .0000000e+00  -.5916407e+08   .1128241e+09  -.5140673e+08   .0000000e+00
        !          72223:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72224:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72225:    .0000000e+00  -.2422704e+08   .2486086e+07   .2671312e+08   .0000000e+00
        !          72226:    .0000000e+00  -.1236738e+07  -.3977737e+07  -.2740999e+07   .0000000e+00
        !          72227:    .0000000e+00   .2546378e+08   .1491651e+07  -.2397213e+08   .0000000e+00
        !          72228:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72229: 
        !          72230:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72231:    .0000000e+00   .0000000e+00  -.4850979e+08   .1075339e+09  -.7261747e+08
        !          72232:    .0000000e+00   .0000000e+00  -.1114623e+09   .2249648e+09  -.1047203e+09
        !          72233:    .0000000e+00   .0000000e+00  -.6060164e+08   .1086488e+09  -.4323591e+08
        !          72234:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72235:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72236:    .0000000e+00   .0000000e+00  -.2328688e+08   .5875785e+07   .2916266e+08
        !          72237:    .0000000e+00   .0000000e+00  -.2740999e+07  -.9401256e+07  -.6660257e+07
        !          72238:    .0000000e+00   .0000000e+00   .2602787e+08   .3525471e+07  -.2250240e+08
        !          72239:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72240: 
        !          72241:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72242:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72243:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01
        !          72244:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72245:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72246:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72247:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72248:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72249:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72250:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72251: 
        !          72252:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72253:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72254:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72255:    .1000000e+01   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72256:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72257:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72258:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72259:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72260:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72261:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72262: 
        !          72263:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72264:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72265:   -.5685856e+08   .1144933e+09  -.5916407e+08   .0000000e+00   .0000000e+00
        !          72266:   -.1149703e+09   .2300441e+09  -.1140353e+09   .0000000e+00   .0000000e+00
        !          72267:   -.5769602e+08   .1145123e+09  -.5632545e+08   .0000000e+00   .0000000e+00
        !          72268:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72269:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72270:   -.2486317e+08   .6006029e+06   .2546378e+08   .0000000e+00   .0000000e+00
        !          72271:   -.1824351e+06  -.8008039e+06  -.6183688e+06   .0000000e+00   .0000000e+00
        !          72272:    .2504561e+08   .2002010e+06  -.2484541e+08   .0000000e+00   .0000000e+00
        !          72273: 
        !          72274:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72275:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72276:    .0000000e+00  -.5493231e+08   .1128241e+09  -.6060164e+08   .0000000e+00
        !          72277:    .0000000e+00  -.1140353e+09   .2276577e+09  -.1117143e+09   .0000000e+00
        !          72278:    .0000000e+00  -.5773604e+08   .1129256e+09  -.5438769e+08   .0000000e+00
        !          72279:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72280:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72281:    .0000000e+00  -.2453622e+08   .1491651e+07   .2602787e+08   .0000000e+00
        !          72282:    .0000000e+00  -.6183688e+06  -.1988868e+07  -.1370500e+07   .0000000e+00
        !          72283:    .0000000e+00   .2515459e+08   .4972171e+06  -.2465738e+08   .0000000e+00
        !          72284: 
        !          72285:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72286:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72287:    .0000000e+00   .0000000e+00  -.5140673e+08   .1086488e+09  -.6456189e+08
        !          72288:    .0000000e+00   .0000000e+00  -.1117143e+09   .2232924e+09  -.1061407e+09
        !          72289:    .0000000e+00   .0000000e+00  -.5745266e+08   .1092063e+09  -.4987112e+08
        !          72290:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72291:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72292:    .0000000e+00   .0000000e+00  -.2397213e+08   .3525471e+07   .2749760e+08
        !          72293:    .0000000e+00   .0000000e+00  -.1370500e+07  -.4700628e+07  -.3330128e+07
        !          72294:    .0000000e+00   .0000000e+00   .2534262e+08   .1175157e+07  -.2416747e+08
        !          72295: 
        !          72296:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72297:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72298:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72299:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01
        !          72300:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72301:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72302:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72303:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72304:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72305:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72306: 
        !          72307:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72308:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72309:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72310:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72311:    .1000000e+01   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72312:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72313:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72314:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72315:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72316:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72317: 
        !          72318:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72319:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72320:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72321:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72322:    .0000000e+00   .1000000e+01   .0000000e+00   .0000000e+00   .0000000e+00
        !          72323:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72324:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72325:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72326:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72327:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72328: 
        !          72329:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72330:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72331:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72332:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72333:    .0000000e+00   .0000000e+00   .1000000e+01   .0000000e+00   .0000000e+00
        !          72334:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72335:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72336:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72337:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72338:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72339: 
        !          72340:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72341:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72342:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72343:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72344:    .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01   .0000000e+00
        !          72345:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72346:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72347:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72348:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72349:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72350: 
        !          72351:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72352:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72353:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72354:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72355:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01
        !          72356:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72357:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72358:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72359:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72360:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72361: 
        !          72362:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72363:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72364:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72365:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72366:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72367:    .1000000e+01   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72368:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72369:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72370:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72371:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72372: 
        !          72373:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72374:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72375:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72376:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72377:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72378:    .0000000e+00   .1000000e+01   .0000000e+00   .0000000e+00   .0000000e+00
        !          72379:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72380:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72381:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72382:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72383: 
        !          72384:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72385:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72386:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72387:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72388:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72389:    .0000000e+00   .0000000e+00   .1000000e+01   .0000000e+00   .0000000e+00
        !          72390:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72391:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72392:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72393:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72394: 
        !          72395:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72396:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72397:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72398:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72399:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72400:    .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01   .0000000e+00
        !          72401:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72402:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72403:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72404:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72405: 
        !          72406:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72407:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72408:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72409:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72410:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72411:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01
        !          72412:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72413:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72414:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72415:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72416: 
        !          72417:   -.2468074e+08   .2531926e+08   .0000000e+00   .0000000e+00   .0000000e+00
        !          72418:   -.5473053e+06  -.5473053e+06   .0000000e+00   .0000000e+00   .0000000e+00
        !          72419:    .2522804e+08  -.2477196e+08   .0000000e+00   .0000000e+00   .0000000e+00
        !          72420:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72421:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72422:   -.1087220e+08  -.1087220e+08   .0000000e+00   .0000000e+00   .0000000e+00
        !          72423:    .2174439e+08   .2174439e+08   .0000000e+00   .0000000e+00   .0000000e+00
        !          72424:   -.1087220e+08  -.1087220e+08   .0000000e+00   .0000000e+00   .0000000e+00
        !          72425:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72426:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72427: 
        !          72428:   -.2468074e+08   .1401407e+07   .2608215e+08   .0000000e+00   .0000000e+00
        !          72429:   -.5473053e+06  -.2402412e+07  -.1855106e+07   .0000000e+00   .0000000e+00
        !          72430:    .2522804e+08   .1001005e+07  -.2422704e+08   .0000000e+00   .0000000e+00
        !          72431:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72432:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72433:   -.1087220e+08  -.2183162e+08  -.1095942e+08   .0000000e+00   .0000000e+00
        !          72434:    .2174439e+08   .4366323e+08   .2191884e+08   .0000000e+00   .0000000e+00
        !          72435:   -.1087220e+08  -.2183162e+08  -.1095942e+08   .0000000e+00   .0000000e+00
        !          72436:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72437:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72438: 
        !          72439:    .0000000e+00  -.2391785e+08   .3480520e+07   .2739837e+08   .0000000e+00
        !          72440:    .0000000e+00  -.1855106e+07  -.5966605e+07  -.4111499e+07   .0000000e+00
        !          72441:    .0000000e+00   .2577296e+08   .2486086e+07  -.2328688e+08   .0000000e+00
        !          72442:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72443:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72444:    .0000000e+00  -.1095942e+08  -.2213817e+08  -.1117875e+08   .0000000e+00
        !          72445:    .0000000e+00   .2191884e+08   .4427633e+08   .2235749e+08   .0000000e+00
        !          72446:    .0000000e+00  -.1095942e+08  -.2213817e+08  -.1117875e+08   .0000000e+00
        !          72447:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72448:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72449: 
        !          72450:    .0000000e+00   .0000000e+00  -.2260163e+08   .8226099e+07   .3082772e+08
        !          72451:    .0000000e+00   .0000000e+00  -.4111499e+07  -.1410188e+08  -.9990385e+07
        !          72452:    .0000000e+00   .0000000e+00   .2671312e+08   .5875785e+07  -.2083734e+08
        !          72453:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72454:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72455:    .0000000e+00   .0000000e+00  -.1117875e+08  -.2289026e+08  -.1171152e+08
        !          72456:    .0000000e+00   .0000000e+00   .2235749e+08   .4578053e+08   .2342304e+08
        !          72457:    .0000000e+00   .0000000e+00  -.1117875e+08  -.2289026e+08  -.1171152e+08
        !          72458:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72459:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72460: 
        !          72461:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72462:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72463:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72464:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72465:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72466:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72467:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01
        !          72468:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72469:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72470:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72471: 
        !          72472:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72473:   -.2477196e+08   .2522804e+08   .0000000e+00   .0000000e+00   .0000000e+00
        !          72474:   -.3648702e+06  -.3648702e+06   .0000000e+00   .0000000e+00   .0000000e+00
        !          72475:    .2513683e+08  -.2486317e+08   .0000000e+00   .0000000e+00   .0000000e+00
        !          72476:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72477:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72478:   -.1087220e+08  -.1087220e+08   .0000000e+00   .0000000e+00   .0000000e+00
        !          72479:    .2174439e+08   .2174439e+08   .0000000e+00   .0000000e+00   .0000000e+00
        !          72480:   -.1087220e+08  -.1087220e+08   .0000000e+00   .0000000e+00   .0000000e+00
        !          72481:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72482: 
        !          72483:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72484:   -.2477196e+08   .1001005e+07   .2577296e+08   .0000000e+00   .0000000e+00
        !          72485:   -.3648702e+06  -.1601608e+07  -.1236738e+07   .0000000e+00   .0000000e+00
        !          72486:    .2513683e+08   .6006029e+06  -.2453622e+08   .0000000e+00   .0000000e+00
        !          72487:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72488:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72489:   -.1087220e+08  -.2183162e+08  -.1095942e+08   .0000000e+00   .0000000e+00
        !          72490:    .2174439e+08   .4366323e+08   .2191884e+08   .0000000e+00   .0000000e+00
        !          72491:   -.1087220e+08  -.2183162e+08  -.1095942e+08   .0000000e+00   .0000000e+00
        !          72492:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72493: 
        !          72494:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72495:    .0000000e+00  -.2422704e+08   .2486086e+07   .2671312e+08   .0000000e+00
        !          72496:    .0000000e+00  -.1236738e+07  -.3977737e+07  -.2740999e+07   .0000000e+00
        !          72497:    .0000000e+00   .2546378e+08   .1491651e+07  -.2397213e+08   .0000000e+00
        !          72498:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72499:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72500:    .0000000e+00  -.1095942e+08  -.2213817e+08  -.1117875e+08   .0000000e+00
        !          72501:    .0000000e+00   .2191884e+08   .4427633e+08   .2235749e+08   .0000000e+00
        !          72502:    .0000000e+00  -.1095942e+08  -.2213817e+08  -.1117875e+08   .0000000e+00
        !          72503:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72504: 
        !          72505:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72506:    .0000000e+00   .0000000e+00  -.2328688e+08   .5875785e+07   .2916266e+08
        !          72507:    .0000000e+00   .0000000e+00  -.2740999e+07  -.9401256e+07  -.6660257e+07
        !          72508:    .0000000e+00   .0000000e+00   .2602787e+08   .3525471e+07  -.2250240e+08
        !          72509:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72510:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72511:    .0000000e+00   .0000000e+00  -.1117875e+08  -.2289026e+08  -.1171152e+08
        !          72512:    .0000000e+00   .0000000e+00   .2235749e+08   .4578053e+08   .2342304e+08
        !          72513:    .0000000e+00   .0000000e+00  -.1117875e+08  -.2289026e+08  -.1171152e+08
        !          72514:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72515: 
        !          72516:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72517:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72518:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72519:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72520:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72521:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72522:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72523:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01
        !          72524:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72525:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72526: 
        !          72527:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72528:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72529:   -.2486317e+08   .2513683e+08   .0000000e+00   .0000000e+00   .0000000e+00
        !          72530:   -.1824351e+06  -.1824351e+06   .0000000e+00   .0000000e+00   .0000000e+00
        !          72531:    .2504561e+08  -.2495439e+08   .0000000e+00   .0000000e+00   .0000000e+00
        !          72532:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72533:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72534:   -.1087220e+08  -.1087220e+08   .0000000e+00   .0000000e+00   .0000000e+00
        !          72535:    .2174439e+08   .2174439e+08   .0000000e+00   .0000000e+00   .0000000e+00
        !          72536:   -.1087220e+08  -.1087220e+08   .0000000e+00   .0000000e+00   .0000000e+00
        !          72537: 
        !          72538:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72539:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72540:   -.2486317e+08   .6006029e+06   .2546378e+08   .0000000e+00   .0000000e+00
        !          72541:   -.1824351e+06  -.8008039e+06  -.6183688e+06   .0000000e+00   .0000000e+00
        !          72542:    .2504561e+08   .2002010e+06  -.2484541e+08   .0000000e+00   .0000000e+00
        !          72543:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72544:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72545:   -.1087220e+08  -.2183162e+08  -.1095942e+08   .0000000e+00   .0000000e+00
        !          72546:    .2174439e+08   .4366323e+08   .2191884e+08   .0000000e+00   .0000000e+00
        !          72547:   -.1087220e+08  -.2183162e+08  -.1095942e+08   .0000000e+00   .0000000e+00
        !          72548: 
        !          72549:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72550:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72551:    .0000000e+00  -.2453622e+08   .1491651e+07   .2602787e+08   .0000000e+00
        !          72552:    .0000000e+00  -.6183688e+06  -.1988868e+07  -.1370500e+07   .0000000e+00
        !          72553:    .0000000e+00   .2515459e+08   .4972171e+06  -.2465738e+08   .0000000e+00
        !          72554:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72555:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72556:    .0000000e+00  -.1095942e+08  -.2213817e+08  -.1117875e+08   .0000000e+00
        !          72557:    .0000000e+00   .2191884e+08   .4427633e+08   .2235749e+08   .0000000e+00
        !          72558:    .0000000e+00  -.1095942e+08  -.2213817e+08  -.1117875e+08   .0000000e+00
        !          72559: 
        !          72560:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72561:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72562:    .0000000e+00   .0000000e+00  -.2397213e+08   .3525471e+07   .2749760e+08
        !          72563:    .0000000e+00   .0000000e+00  -.1370500e+07  -.4700628e+07  -.3330128e+07
        !          72564:    .0000000e+00   .0000000e+00   .2534262e+08   .1175157e+07  -.2416747e+08
        !          72565:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72566:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72567:    .0000000e+00   .0000000e+00  -.1117875e+08  -.2289026e+08  -.1171152e+08
        !          72568:    .0000000e+00   .0000000e+00   .2235749e+08   .4578053e+08   .2342304e+08
        !          72569:    .0000000e+00   .0000000e+00  -.1117875e+08  -.2289026e+08  -.1171152e+08
        !          72570: 
        !          72571:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72572:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72573:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72574:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72575:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72576:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72577:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72578:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72579:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01
        !          72580:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72581: 
        !          72582:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72583:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72584:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72585:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72586:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72587:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72588:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72589:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72590:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72591:    .1000000e+01   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72592: 
        !          72593:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72594:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72595:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72596:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72597:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72598:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72599:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72600:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72601:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72602:    .0000000e+00   .1000000e+01   .0000000e+00   .0000000e+00   .0000000e+00
        !          72603: 
        !          72604:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72605:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72606:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72607:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72608:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72609:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72610:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72611:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72612:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72613:    .0000000e+00   .0000000e+00   .1000000e+01   .0000000e+00   .0000000e+00
        !          72614: 
        !          72615:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72616:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72617:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72618:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72619:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72620:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72621:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72622:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72623:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72624:    .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01   .0000000e+00
        !          72625: 
        !          72626:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72627:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72628:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72629:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72630:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72631:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72632:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72633:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72634:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
        !          72635:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01
        !          72636: 
        !          72637: 
        !          72638: 
        !          72639: 0707070014230643101006440057030057030000011716100522627504100003000000063512post.src/tests/postbgi17B+@J@\6556I 03  09-23-84   22.961  frame no.  01    
        !          72640:    MH9220,M158,DREXLER                                     +BCD1@@`G+BxBu 0.1+BCD1AN@@@@`G@@@G+CtBu 0.2+DMCD1AO@@@@`G@@@G+EBBu 0.3+E\CD1AN@@@@`G@@@G+FPBu 0.4+FjCD1AN@@@@`G@@@G+G_Bu 0.5+GxCD1AN@@@@`G@@@G+HmBu 0.6+IFCD1AN@@@@`G@@@G+I{Bu 0.7+JTCD1AN@@@@`G@@@G+KIBu 0.8+KbCD1AN@@@@`G@@@G+LWBu 0.9+LpCD1AO@@@@`G@@@G+MeBu 1.0+HXB] X+BCD1`G@@+BmB}-1.0+BCD1@@A``G@@@G@@+BmDQ-0.8+BDd1@@A``G@@@G@@+BmEq-0.6+BFD1@@A``G@@@G@@+BmGQ-0.4+BGd1@@A``G@@@G@@+BmHq-0.2+BID1@@A``G@@@G@@+BmJK 0.0+BJd1@@A``G@@@G@@+BmKk 0.2+BLD1@@A``G@@@G@@+BmMK 0.4+BMd1@@A``G@@@G@@+BmNj 0.6+BOD1@@A``G@@@G@@+BmPJ 0.8+BPd1@@A``G@@@G@@+BmQj 1.0+BYJ] Y+BN~1ANBnAO@@ANbnANdZANdZANbnAN@@ANBnAODZ%7B+@J@\6556I 03  09-23-84   22.961  frame no.  02    
        !          72641:    MH9220,M158,DREXLER                                     +BCD1@@`J+BxBm107A+CNBw-1+BCD1CT@@@@`G@@@GA|@@@@`G@@@GAX@@@@`G@@@GAD@@@@`G@@@G@x@@@@`G@@@G@o@@@@`G@@@G@h@@@@`G@@@G@d@@@@`G@@@G@a@@@@`J@@@J7B+MwBm107A+NMBw07B+HXBX X+BCD1`G@@+BmB}-1.0+BCD1@@A``G@@@G@@+BmDQ-0.8+BDd1@@A``G@@@G@@+BmEq-0.6+BFD1@@A``G@@@G@@+BmGQ-0.4+BGd1@@A``G@@@G@@+BmHq-0.2+BID1@@A``G@@@G@@+BmJK 0.0+BJd1@@A``G@@@G@@+BmKk 0.2+BLD1@@A``G@@@G@@+BmMK 0.4+BMd1@@A``G@@@G@@+BmNj 0.6+BOD1@@A``G@@@G@@+BmPJ 0.8+BPd1@@A``G@@@G@@+BmQj 1.0+BYJ] Y+BN~1CTBnA|@@AXbnADdZ@xdZ@obn@h@@@dBn@aDZ%7B+@J@\6556I 03  09-23-84   22.961  frame no.  03    
        !          72642:    MH9220,M158,DREXLER                                     +BN~1CTBnA|@@AXbnADdZ@xdZ@obn@h@@@dBn@aDZ%7B+@J@\6556I 03  09-23-84   22.961  frame no.  04    
        !          72643:    MH9220,M158,DREXLER                                     7C+EWQhEXAMPLE OF A POLAR PLOT+J_Hr1@@`G+J_Hr1B@@@@@`G@@@G7B+LEHb 0.4+L_Hr1B@@@@@`G@@@G+NEHb 0.8+KmHJREAL AXES+J_Hr1`G@@+J_Hr1@@B@`G@@@G@@+JLJX 0.4+J_Jr1@@B@`G@@@G@@+JLLX 0.8+J_Lr1@@B@`G@@@G@@+JLNX 1.2+J_Nr1@@A`G@@@G@@+JLPX 1.6+IyL@IMAG AXES+B_Hr1@@`G+BXHb 1.6+B_Hr1B@@@@@`G@@@G+DFHb 1.2+D_Hr1B@@@@@`G@@@G+FFHb 0.8+F_Hr1B@@@@@`G@@@G+HFHb 0.4+H_Hr1B@@@@@`G@@@G+F^HJ +J_Dr1`G@@+JLDk 0.8+J_Dr1@@B@`G@@@G@@+JLFY 0.4+J_Fr1@@B@`G@@@G@@+IyFq +JdHm1@@@K@J@@@@`K`J@@+JiHr1@J@B@I@C@J@E@H@E@I@G@G@H@G@H@E@J@E@J@C@K+KmIr1@@@J@J@@@@`J`J@@+KrIw1@C@K@A@L@@@M`B@L`C@M`D@L`E@M`G@L`H@L`I@K+KJKk1@@@J@K@@@@`J`K@@+KPKp1`K@J`L@J`L@H`N@H`O@F`O@F`P@D`Q@C`Q@A`Q@@+HxLc1@@@J@K@@@@`J`K@@+H~Lh1`R`B`R`C`Q`E`R`F`Q`G`P`I`P`K`O`K`N`M`M`O+FWKQ1@@@J@J@@@@`J`J@@+F\KV1`L`O`K`P`J`R`H`R`G`R`F`T`D`S`B`T`A`T@A`T+E[HY1@@@J@J@@@@`J`J@@+E`H^1@B`T@D`T@F`S@G`S@H`R@J`Q@K`P@L`P@M`N@N`M+FrEm1@@@J@J@@@@`J`J@@+FwEr1@O`L@P`J@P`I@Q`H@R`F@Q`D@R`C@R`B@Q@@@Q@A+I[Dx1@@@J@J@@@@`J`J@@+I`D}1@Q@C@P@D@O@E@O@G@N@G@L@I@L@J@K@J@I@K@H@L+K\FF1@@@J@J@@@@`J`J@@+KaFK1@G@L@E@L@D@M@C@L@B@M@@@L`A@L`C@L`C@K`E@J+KeG}1@@@J@J@@@@`J`J@@+KjHB1`E@J`G@H`G@H`I@F`H@F`J@D`I@C`J@B`J@A@J@@+JdHm1@@@K@J@@@@`K`J@@%7B+@J@\6556I 03  09-23-84   22.961  frame no.  05    
        !          72644:    MH9220,M158,DREXLER                                     7C+EESHTHE USE OF CURVE AND GRAF+B_CD1@@`G7B+BXBu 0.0+B_CD1AM@@@@`G@@@G+CSBu 1.0+ClCD1AM@@@@`G@@@G+D_Bu 2.0+DyCD1AM@@@@`G@@@G+ElBu 3.0+FFCD1AL@@@@`G@@@G+FyBu 4.0+GRCD1AM@@@@`G@@@G+HFBu 5.0+H_CD1AM@@@@`G@@@G+IRBu 6.0+IlCD1AL@@@@`G@@@G+J_Bu 7.0+JxCD1AM@@@@`G@@@G+KlBu 8.0+LECD1AM@@@@`G@@@G+LyBu 9.0+MRCD1AM@@@@`G@@@G+MBu 10.0+GzB]X LABEL+B_CD1`G@@+BMB} 0.0+B_CD1@@A``G@@@G@@+BMDK 1.0+B_Dd1@@A``G@@@G@@+BMEk 2.0+B_FD1@@A``G@@@G@@+BMGK 3.0+B_Gd1@@A``G@@@G@@+BMHk 4.0+B_ID1@@A``G@@@G@@+BMJK 5.0+B_Jd1@@A``G@@@G@@+BMKk 6.0+B_LD1@@A``G@@@G@@+BMMK 7.0+B_Md1@@A``G@@@G@@+BMNj 8.0+B_OD1@@A``G@@@G@@+BMPJ 9.0+B_Pd1@@A``G@@@G@@+BMQd 10.0+AyIY LABEL+B^CC1@@OBLB@@@@oBlB@@+B_CD1@@O@L@@@@@o@l@@@+BaCF1@@N|K|@@@@n|k|@@+BbCI1@@@J@J@@@@`J`J@@+BgCN1@H@J@G@I@H@J@H@I@G@J@H@J@H@I@G@J@H@I@H@J+CoDi1@@@J@J@@@@`J`J@@+CtDn1@G@I@H@J@H@J@G@I@H@J@H@I@G@J@H@J@H@I@G@J+D{FI1@@@J@K@@@@`J`K@@+E@FN1@H@I@H@J@G@J@H@I@H@J@H@I@G@J@H@J@H@I@G@J+FHGi1@@@J@J@@@@`J`J@@+FMGn1@H@I@H@J@G@J@H@I@H@J@G@I@H@J@H@I@G@J@H@J+GUII1@@@J@J@@@@`J`J@@+GZIN1@H@I@G@J@H@I@H@J@G@J@H@I@H@J@G@I@H@J@H@J+HbJh1@@@K@J@@@@`K`J@@+HgJn1@G@I@H@J@H@I@G@J@H@J@H@I@G@J@H@I@H@J@G@J+InLH1@@@K@J@@@@`K`J@@+IsLN1@H@I@H@J@G@I@H@J@H@I@G@J@H@J@H@I@G@J@H@I+J{Mh1@@@K@J@@@@`K`J@@+K@Mm1@H@J@G@J@H@I@H@J@G@I@H@J@H@J@G@I@H@J@H@I+LHOH1@@@J@J@@@@`J`J@@+LMOM1@G@J@H@J@H@I@H@J@G@I@H@J@H@J@G@I@H@J@H@I+MTPh1@@@J@K@@@@`J`K@@+MZPm1@G@J@H@I@H@J@G@J@H@I@H@J@G@I@H@J@H@J+NYQ1@@@J@K@@@@`J`K@@+BdB1`B@C@@@E@B@C@F@@@B`C@@`E`B`C`F@@+CKCC1`C@B@@@E@C@C@E@@@B`C@@`E`B`B`E@@+CqCK1`B@B@@@F@B@B@E@@@C`B@@`F`C`B`E@@+DXCX1`C@B@@@E@C@C@E@@@B`C@@`E`B`B`E@@+D~Cj1`C@B@@@E@C@C@E@@@C`C@@`E`C`B`E@@+EdD@1`B@C@@@E@B@B@E@@@C`B@@`E`C`C`E@@+FKD[1`C@C@@@E@C@C@E@@@B`C@@`E`B`C`E@@+FqD|1`C@B@@@E@C@C@E@@@C`C@@`E`C`B`E@@+GWEa1`B@B@@@E@B@C@E@@@C`C@@`E`C`B`E@@+G~FJ1`C@C@@@E@C@B@E@@@B`B@@`E`B`C`E@@+HdFy1`B@B@@@E@B@C@E@@@C`C@@`E`C`B`E@@+IJGl1`B@C@@@E@B@B@F@@@B`B@@`E`B`C`F@@+IqHd1`C@C@@@E@C@B@E@@@B`B@@`E`B`C`E@@+JWIa1`B@C@@@E@B@B@E@@@C`B@@`E`C`C`E@@+J~Jc1`C@B@@@E@C@C@E@@@B`C@@`E`B`B`E@@+KdKi1`C@C@@@E@C@C@E@@@C`C@@`E`C`C`E@@+LJLu1`B@B@@@E@B@C@E@@@C`C@@`E`C`B`E@@+LqNE1`C@B@@@E@C@C@E@@@B`C@@`E`B`B`E@@+MWOZ1`C@B@@@E@C@C@E@@@C`C@@`E`C`B`E@@+M}Ps1`B@C@@@E@B@C@E@@@C`C@@`E`C`C`E@@+N\Q1`C@B@@@E@C@C@E@@@C`C@@`E`C`B`E@@+BgCD1@H@@@G@@@H@@@H@@@G@A@H@@@H@@@G@@@H@@@H@A@G@@@H@@@H@A@G@A@H@@@H@A@G@A@H@A@H@A@G@A@H@B@H@A@G@B@H@A@H@B@H@B@G@B@H@C@H@B@G@C@H@C@H@C@G@C@H@C@H@D@G@D@H@D@H@D@G@E@H@D@H@E@G@F@H@E@H@F@G@F@H@F@H@F@G@G@H@G+H_D|1@H@H@G@G@H@H@H@H@G@I@H@I@H@I@G@J@H@I@H@K@G@J@H@K@H@K@G@L@H@L@H@L@G@M@H@M@H@M@G@N@H@O@H@N@G@P@H@O@H@P@G@P@H@Q@H@R@G@Q@H@S@H@R@G@S@H@T@H@T@H@T@G@V@H@U@H@V@G@W@H@W@H@W@G@X@H@Y@H@Y@G@Z@H@Z@H@[@G@[@H@\+NWQg1@H@]+BwQZTHREE CURVES ON THE SAME AXIS SYSTEM HAVING+D}PjDIFFERENT MARKER TYPES%7B+@J@\6556I 03  09-23-84   22.961  frame no.  06    
        !          72645:    MH9220,M158,DREXLER                                     7C+D@I]XGRAF WITH A GRID+LcCo1@G@@7B+LsCh 0.0+LcCo1@@Ag@G@@`G@@+LsD| 0.1+LcEV1@@Af@G@@`G@@+LsFc 0.2+LcF|1@@Af@G@@`G@@+LsHI 0.3+LcHb1@@Ag@G@@`G@@+LsIo 0.4+LcJI1@@Af@G@@`G@@+LsKV 0.5+LcKo1@@Af@G@@`G@@+LsL| 0.6+LcMU1@@Ag@G@@`G@@+LsNb 0.7+LcN|1@@Af@G@@`G@@+LsPI 0.8+LcPb1@@Af@G@@`G@@+LsQo 0.9+LcRH1@@Ag@G@@`G@@+LsSU 1.0+MKJBX AXIS IS GRAF TYPE+LcCo1@@`G+LnC_1`E@@+LcCc1@@@@@@`I@@@@@B@B+L^Cc1@@@@`A@@@@@@@A@@+LXCc1`A@@`A@@`A`B@@`D@A`B@A`A@A@@@A@A@A@B@@@D`A@B`A@@+LcCo1b@@@@@`G@@@G+JzC_1`E@@+JpCc1`A@@`A@@`A`B@@`D@A`B@A`A@A@@@A@A@A@B@@@D`A@B`A@@+JjCc1@@@@`A@@@@@@@A@@+JeCc1`B@@`A@@`A`A@@`C@A`A@A@@@B@@@@`D`D@@+JcCo1a@@@@`G@@@G+HwCc1`B@@`A@@`A`B@@`D@A`B@A`A@B@@@@@A@A@B@@@D`A@B@@@@+HpCc1@@@@`A@@@@@@@A@@+HkCc1`B@@`A@@@@`B@@`D@@`B@A`A@B@@@A@A@@@B@@@D@@@B`A@@+HdCo1b@@@@@`G@@@G+FwCc1`B@@`A@@@@`B@@`D@@`B@A`A@B@@@A@A@@@B@@@D@@@B`A@@+FqCc1@@@@`B@@@@@@@B@@+FlCc1`C@@@@@@`A`A@@`C@A`A@@@@@C@@@@`D`D@@+FdCo1b@@@@@`G@@@G+DuCc1@@@@@@`I@A@@@B@B+DqCc1@@@@`B@@@@@@@B@@+DkCc1`B@@`A@@@@`B@@`D@@`B@A`A@B@@@A@A@@@B@@@D@@@B`A@@+JMCJ1@C`H@@@B+JMCO1@@@A@@`F`D`H@@@B+IsCK1@F@@+IzCO1@A@A`D`N`E@N@@`A+InCO1@A@A`I`N@A@B+InCD1@A`B`I@N@@`A+I`CB1@B@@+I`CP1@@`N`B@@+IbCP1`D@@+IZCM1`A@B`A@A`C@@`B`A@@`B@@`A@@`B@B`A@C@@@B`A@@`B@@@@@@`B`B`B`C@@`B@B@@@B+IBCB1@B@@+IBCP1@@`N`B@@+IDCP1`D@@+H|CM1`A@B`A@A`D@@`A`A@@`B@@`A@@`B@A`A@D@@@A`A@A`B@@@@`A`B`A`B`D@@`A@B@@@B+H`CJ1`B@@@@@F@F@@@@`A@A`B@@`G`A`C@@`A`D@@`A@B`A@B+HZCO1@@@A@@`N`F@@`A@B@@@B@@@@@@@B@A@A@F@@+HUCI1`C@G@A`A+HGCK1@F@@+HNCO1@A@A`E`N`E@N@A`A+HCCO1@@@A@@`N`F@@`A@B`A@B@@@A@A@B@A@A@F@@+GxCO1@@@A@@`N@@@B+GpCD1@@`B@@@N@@`A+GpCI1@H@@+G]CB1@D@@+G]CO1@@@A@@`N`E@@+GQCJ1@D`H`A@B+GQCO1@@@A@@`F`D`H@A@B+GJCO1@@@A@@`N`E@@`B@B@@@B@@@A@@@B@B@A@E@@+FwCP1@H@@@@`N`H@@+FwCI1@H@@+LcDI1g@@+DdDc1G@@+LcD|1g@@+DdEV1G@@+LcEo1g@@+DdFI1G@@+LcFc1g@@+DdF|1G@@+LcGV1g@@+DdGo1G@@+LcHI1g@@+DdHb1G@@+LcH|1g@@+DdIV1G@@+LcIo1g@@+DdJI1G@@+LcJb1g@@+DdJ|1G@@+LcKV1g@@+DdKo1G@@+LcLI1g@@+DdLb1G@@+LcL|1g@@+DdMU1G@@+LcMo1g@@+DdNI1G@@+LcNb1g@@+DdN|1G@@+LcOU1g@@+DdOo1G@@+LcPH1g@@+DdPb1G@@+LcP|1g@@+DdQU1G@@+LcQo1g@@+DdRH1G@@+LcRb1g@@+DdR|1G@@+LcSU1g@@+KcCo1@@P@+JcSo1@@p@+IcCo1@@P@+HcSo1@@p@+GdCo1@@P@+FdSo1@@p@+EdCo1@@P@+LcCo1g@@@@P@G@@@@p@+GfCz1`v@J`l@J``@J`R@K`D@J@J@J@V@J@_@J@g@K@l@J@m@J@l@J@h@K@b@J@[@J@Q@J@G@K`B@J`K@J`R@J`Y@J`]@K`^@J`_@J`^@J`Y@K`U@J`O@J`H@J`B@K@D@J@K@J@O@J@R@J@U@K@U@J@U@J@S@J@P@K@L@J@H@J@D@J`A@K`E@J`I@J`L@J`M@K`O@J`N@J+HdKo1`N@J`L@J`J@K`G@J`D@J`A@J@B@K@E@J@G@J@I@J@I@K@K@J@I@J@I@J@H@J@F@K@D@J@A@J@@@J`C@K`D@J`E@J`G@J`G@K`F@J`G@J`F@J`D@J`D@K`A@J`A@J@A@J@B@K@D@J@D@J@D@J@E@K@E@J@D@J@D@J@B@J@B@K@A@J@@@J`A@J`B@K`C@J`C@J`C@J+HgSd1`C@K+DsCz1@^@J@h@J@q@J@v@K@v@J@t@J@o@J@g@J@]@K@R@J@F@J`F@J`O@K`X@J``@J`c@J`f@K`e@J`b@J`]@J`X@J`P@K`H@J@@@J@G@J@N@K@S@J@W@J@Y@J@Z@K@Y@J@V@J@R@J@N@J@H@K@C@J`B@J`H@J`K@K`O@J`Q@J`Q@J`R@K`P@J`N@J`K@J`H@K`C@J@@@J+GkKo1@C@J@F@J@J@K@J@J@L@J@M@J@K@K@K@J@H@J@G@J@D@K@A@J`A@J`D@J`E@J`G@K`H@J`H@J`H@J`H@K`G@J`E@J`D@J`A@K@@@J@A@J@C@J@E@J@E@K@E@J@F@J@F@J@E@K@D@J@C@J@B@J@@@K@@@J`B@J`C@J`C@J`D@K`C@J`D@J`D@J`C@K`C@J`A@J`A@J+HWSd1@@@K%7B+@J@\6556I 03  09-23-84   22.961  frame no.  07    
        !          72646:    MH9220,M158,DREXLER                                     7C+ENRhLOG TYPE GRID USING YLOG+B^Ch1@@NALB@@@@nAlB@@+B_Ci1@@ML@@@@@ml@@@+BaCj1@@M}K|@@@@m}k|@@+B_Ci1@@`G7B+BXCZ-1.5+B_Ci1B@@@@@`G@@@G+DLCZ-1.0+D_Ci1B@@@@@`G@@@G+FLCZ-0.5+F_Ci1B@@@@@`G@@@G+HFCZ 0.0+H_Ci1B@@@@@`G@@@G+JFCZ 0.5+J_Ci1B@@@@@`G@@@G+LECZ 1.0+L_Ci1B@@@@@`G@@@G+NECZ 1.5+FlCAX AXIS IS GRAPH TYPE+B_Ci1`J@@+BKCa107A+BACx-2+B_Ci1@@BG`G@@@G@@@@AN`G@@@G@@@@@x`G@@@G@@@@@l`G@@@G@@@@@c`G@@@G@@@@@^`G@@@G@@@@@Z`G@@@G@@@@@W`G@@@G@@@@@U`J@@@J@@7B+BKJa107A+BAJw-1+B_Ji1@@BF`G@@@G@@@@AO`G@@@G@@@@@x`G@@@G@@@@@k`G@@@G@@@@@d`G@@@G@@@@@^`G@@@G@@@@@Z`G@@@G@@@@@W`G@@@G@@@@@T`J@@@J@@7B+BKQa107A+BAQw07B+AtJIY AXIS+C_Ci1@@M+D_Qh1@@m+E_Ci1@@M+F_Qh1@@m+G_Ci1@@M+H_Qh1@@m+I_Ci1@@M+J_Qh1@@m+K_Ci1@@M+L_Qh1@@m+M_Ci1@@M+B_DL1L@@@+N_Dj1l@@@+B_ED1L@@@+N_E[1l@@@+B_Ep1L@@@+N_FB1l@@@+B_FS1L@@@+N_Fc1l@@@+B_Fq1L@@@+N_F~1l@@@+B_GK1L@@@+N_GW1l@@@+B_Gb1L@@@+N_Gl1l@@@+B_Gv1L@@@+N_H@1l@@@+B_HI1L@@@+N_HR1l@@@+B_HZ1L@@@+N_Hb1l@@@+B_Hi1L@@@+N_Hq1l@@@+B_Hx1L@@@+N_H1l@@@+B_IE1L@@@+N_IU1l@@@+B_Ic1L@@@+N_Iq1l@@@+B_I}1L@@@+N_JI1l@@@+B_JT1L@@@+N_J_1l@@@+B_Ji1L@@@+N_KL1l@@@+B_Kj1L@@@+N_LD1l@@@+B_L[1L@@@+N_Lo1l@@@+B_MB1L@@@+N_MS1l@@@+B_Mb1L@@@+N_Mq1l@@@+B_M~1L@@@+N_NK1l@@@+B_NV1L@@@+N_Nb1l@@@+B_Nl1L@@@+N_Nv1l@@@+B_O@1L@@@+N_OI1l@@@+B_OQ1L@@@+N_OZ1l@@@+B_Oa1L@@@+N_Oi1l@@@+B_Op1L@@@+N_Ow1l@@@+B_O~1L@@@+N_PE1l@@@+B_PT1L@@@+N_Pc1l@@@+B_Pp1L@@@+N_P}1l@@@+B_QI1L@@@+N_QT1l@@@+B_Q^1L@@@+B_Ci1@@ML@@@@@ml@@@+I]Ci1@vBG@lAN@_@x@R@l@D@c`I@^`V@Z``@W`g@U`k@R`n@Q`l@P`h@N`b@M`Z@M`Q@L`G@K@B@J@J@J@S@J@X@I@]@H@_@I@_@H@]@G@Z@H@U@G@N@G@I@F@B@G`E@F`J@F`O@E`R@F`U@F`U@E`U@E`S@E`P@E`M@E`H@E`C@D@A@E@E@D@I@D@K@D@N@E@N@D@O@C+H_Oa1@N@D@L@D@J@D@G@C@D@D@A@C`C@D`D@C`G@D`I@C`J@C`J@C`J@C`I@C`G@C`F@C`D@C`B@C@A@C@B@C@D@C@F@B@F@C@G@C@G@B@F@C@F@B@E@C@C@B@B@C@@@B`A@C`B@B`C@B`D@C`E@B`E@B`D@B`E@C`C@B`C@B`B@B@@@B@@@B@A@B@B@B@B@B@C@B@D@B+H\Qf1@C@B+LOCi1`]BG`iAN`p@x`v@l`w@c`t@^`o@Z`f@W`]@U`R@R`F@Q@E@P@P@N@X@M@_@M@d@L@e@K@e@J@b@J@^@J@W@I@P@H@I@I@@@H`G@G`N@H`T@G`W@G`Y@F`Z@G`X@F`V@F`S@E`M@F`I@F`C@E@C@E@G@E@L@E@N@E@Q@E@R@D@Q@E@P@D@N@D@K@D@H@E@D@D@@@C+IXOa1`C@D`G@D`I@D`K@C`L@D`L@C`L@D`J@C`I@D`F@C`D@C`B@C@B@C@C@C@F@C@F@C@H@C@I@C@H@C@H@C@F@C@E@B@D@C@B@C@@@B`B@C`C@B`D@C`E@B`F@C`F@B`E@C`E@B`D@B`C@C`B@B`A@B@A@B@B@C@B@B@C@B@D@B@D@B@D@B@D@B@C@B@B@B@B@B@A@B+HlQf1@@@B%7B+@J@\6556I 03  09-23-84   22.961  frame no.  08    
        !          72647:    MH9220,M158,DREXLER                                     7C+E`QhA POLAR PLOT WITH GRID+H_Jr1@@`G+H_Jr1B@@@@@`G@@@G7B+JFJb 0.5+J_Jr1B@@@@@`G@@@G+LEJb 1.0+L_Jr1B@@@@@`G@@@G+NEJb 1.5+JJJRADIUS+H_Jr1`G@@+H_Jr1@@B@`G@@@G@@+HMLX 0.5+H_Lr1@@B@`G@@@G@@+HMNX 1.0+H_Nr1@@A`G@@@G@@+HMPX 1.5+GyMp +B_Jr1@@`G+BXJb 1.5+B_Jr1B@@@@@`G@@@G+DFJb 1.0+D_Jr1B@@@@@`G@@@G+FFJb 0.5+F_Jr1B@@@@@`G@@@G+E^JJ +H_Dr1`G@@+HMDk 1.5+H_Dr1@@B@`G@@@G@@+HMFY 1.0+H_Fr1@@B@`G@@@G@@+HMHX 0.5+H_Hr1@@B@`G@@@G@@+GyGq +N^J1a`D+L^KD1B@@H+N\KZ1a`N+L\KU1A@R+NYKt1c|`l+LYKg1A}@Z+NSLO1a|`_+LUKx1A{@c+NLLh1az`g+HkJv1E\A+NCMA1aw`o+LILZ1At@t+MxMZ1as`x+LALj1Aq@|+MkMr1c]b@+KxLy1AlAD+M]NH1ajaG+KnMH1AgAK+MMN^1adaO+HiJz1D\Cn+L|Nr1a_aU+KWMc1A\AY+LiOF1aXa\+KJMp1AVA_+LVOX1becD+J|M{1AOAe+L@Oh1aKag+JnNF1AGAj+KjOw1aDal+HeJ}1BzEA+KSPD1`|ap+JONX1@xAs+J{PP1`tau+IN_1@pAv+JbPZ1aWcp+InNe1@hAz+JIPc1`da{+I]Nj1@_A|+IoPi1`[a}+HaJ~1AAEn+ITPn1`Qa+HzNp1@MA+HzPp1`Ia+HhNq1@DB@+H_Pq1@@c+HVNq1`DB@+HDPp1@Ia+HDNp1`MA+GjPn1@Qa+H]J~1aAEn+GOPi1@[a}+GaNj1`_A|+FuPc1@ca{+GPNe1`hAz+F\PZ1AWcp+FN_1`pAv+FCPP1@tau+FoNX1`xAs+EkPD1@|ap+HYJ}1bzEA+ETOw1ACal+FPNF1aHAj+D}Oh1ALag+FBM{1aOAe+DhOX1BecD+EtMp1aVA_+DTOF1AYa\+EgMc1a\AY+DBNr1A_aU+HUJz1d\Cn+CqN^1AdaO+EPMH1agAK+CaNH1AjaG+EFLy1alAD+CSMr1C]b@+D}Lj1aq@|+CFMZ1As`x+DuLZ1at@t+B{MA1Aw`o+HSJv1e]A+BrLh1Az`g+DiKx1a{@c+BkLO1A|`_+DeKg1a}@Z+BeKt1C|`l+DbKU1a@R+BaKZ1B@`N+D`KD1b@@H+B`J1A`D+HRJr1es@@+B`Jd1A@E+D`J`1b@`I+BaJJ1B@@M+DbJN1a`R+BeIo1C|@m+DeI}1a}`[+BkIU1A|@_+DiIk1a{`c+BrH{1Az@h+HSJm1e]a+B{Hb1Aw@p+DuIJ1at`t+CFHJ1As@x+D}Hz1aq`|+CSGr1C]B@+EFHj1alaD+CaG[1AjAH+EPH[1agaK+CqGE1AdAO+HUJi1d\cn+DBFq1A_AV+EgH@1a\aY+DTF^1AYA\+EtGt1aVa_+DhFL1BeCD+FBGh1aOae+D}E{1ALAh+FPG^1aHaj+ETEl1ACAm+HYJg1bzeB+EkE_1@|Aq+FoGL1`xas+FCES1@tAu+FGE1`paw+F\EI1AWCq+GPF~1`hay+FuEA1@cA{+GaFz1`_a}+GODz1@[A~+H]Je1aAem+GjDv1@QA~+HDFs1`Ma+HDDs1@IB@+HVFr1`Db@+H_Dr1@@D@+HhFr1@Db@+HzDs1`IB@+HzFs1@Ma+ITDv1`QA~+HaJe1AAem+IoDz1`[A~+I]Fz1@_a}+JIEA1`dA{+InF~1@hay+JbEI1aWCq+IGE1@paw+J{ES1`tAu+JOGL1@xas+KSE_1`|Aq+HeJg1BzeB+KjEl1aDAm+JnG^1AGaj+L@E{1aKAh+J|Gh1AOae+LVFL1beCD+KJGt1AVa_+LiF^1aXA\+KWH@1A\aY+L|Fq1a_AV+HiJi1D\cn+MMGE1adAO+KnH[1AgaK+M]G[1ajAH+KxHj1AlaD+MkGr1c]B@+LAHz1Aq`|+MxHJ1as@x+LIIJ1At`t+NCHb1aw@p+HkJm1E\a+NLH{1az@h+LUIk1A{`c+NSIU1a|@_+LYI}1A}`[+NYIo1c|@l+L\JN1A`R+N\JJ1a@M+L^J`1B@`I+N^Jd1a@E+HlJr1Es@@+HlJr1`B@F`E@E`F@B`F`B`E`E`B`F@B`G@E`D@F`B@F@B@E@D@B@G+HJr1`A@F`B@F`C@F`D@E`E@D`F@C`F@A`G@A`F`A`F`C`F`C`D`D`D`F`C`F`A`F@@`G@A`F@C`F@D`E@D`E@F`C@F`B@F`A@G@@@F@B@F@C@E@D@D@D@C@F@B@F@A@G+I_Jr1@@@F`A@G`B@F`B@F`C@F`D@E`D@E`D@E`E@D`E@D`F@C`F@C`F@B`F@A`G@A`F@@`G`A`F`A`F`B`F`C`F`C`E`D`E`D`E`E`D`E`C`E`C`F`B`F`B`F`A`G@@`F@@`G@A`F@B`F@B`G@C`E@C`F@D`E@E`E@E`D@E`D@F`C@F`B@F`B@F`B@G@@@F@@@G@@@F@B+HoIt1@F@B@F@B@F@C@E@D@E@D@D@E@D@E@D@F@C@E@B@G@B@F@A@F@@@G+IJr1@@@F`A@F`A@G`B@F`A@F`C@F`B@F`D@F`C@E`D@E`D@E`D@E`E@D`E@D`E@D`F@C`F@C`F@B`F@B`F@B`F@A`F@A`G@A`F@@`G`A`F`A`F`A`F`B`G`B`E`B`F`C`F`C`E`D`E`D`E`D`D`E`D`E`D`E`D`E`C`F`B`F`C`F`B`F`A`F`A`G`A`F@@`F@@`G@A`F+G@Je1@A`F@A`G@B`F@C`F@B`F@C`E@D`F@D`E@D`E@D`D@E`E@E`D@E`C@F`C@F`C@F`C@F`B@F`B@F`A@F`A@G@@@F@@@G@@@F@A@F@A@F@B@F@B@F@C@F@C@F@C@E@C@E@D@E@E@D@D@D@E@D@E@C@F@D@E@B@F@C@F@A@F@B@G@A@F@A@F@@@G+J_Jr1@@@F`A@G`A@F`A@F`A@G`B@F`B@F`B@F`C@F`C@E`C@F`D@E`D@E`D@E`D@E`D@E`E@D`E@D`E@D`F@D`E@C`F@C`F@C`E@B`G@B`F@B`F@B`F@A`G@A`F@@`F@A`G@@`F`A`G`A`F`A`F`A`F`B`G`B`F`B`E`C`F`B`F`D`E`C`E`D`F`D`D`D`E`D`D`E`E`E+F{LB1`C`E`D`E`D`F`C`F`B`E`C`F`B`F`B`F`B`G`A`F`A`F`A`G@@`F@@`G@@`F@A`F@A`G@A`F@B`F@B`F@B`F@C`F@B`F@C`F@D`E@D`E@C`F@E`D@D`E@E`E@D`D@F`D@E`D@E`C@F`C@F`C@E`C@F`B@G`B@F`B@F`A@F`A@G`A@F@@@G@@@F@@@F@A@G@A@F@A+HzHu1@F@A@F@B@G@B@E@C@F@B@F@C@E@D@F@C@E@D@E@D@E@E@D@D@D@E@E@E@C@E@D@F@C@E@C@F@C@F@B@F@B@F@B@F@A@F@A@G@A@F@A@F@@@G+JJr1@@@F`A@F@@@G`A@F`A@F`B@G`A@F`B@F`B@F`C@F`B@F`C@F`C@E`D@F`C@E`D@E`D@E`D@E`D@E`E@D`D@E`E@D`E@D`E@D`F@C`E@D`F@C`E@C`F@B`F@C`F@B`F@B`F@B`G@A`F@A`F@A`G@A`F@@`F@A`G@@`F`A`G@@`F`A`F`A`F`B`G`A`F`B`F`B`F`B+GbMF1`F`C`E`C`F`C`F`C`E`C`E`D`E`D`E`D`E`D`E`E`D`D`D`E`D`E`D`E`D`F`C`E`C`F`C`E`C`F`B`F`C`F`B`F`A`F`B`F`A`G`A`F`A`F`A`G@@`F@@`F@@`G@A`F@A`G@A`F@A`F@B`F@A`G@B`F@C`F@B`F@C`E@C`F@C`F@C`E@D`E@D`E@D`E@D`E@D`E+FmIA1@E`D@E`D@E`E@E`C@E`D@E`D@F`C@F`C@E`C@F`B@F`B@F`C@F`A@G`B@F`A@F`A@F`A@G`A@F@@@G@@@F@@@F@@@G@A@F@A@F@A@G@B@F@B@F@A@F@C@F@B@F@C@E@C@F@C@E@C@F@D@E@C@E@D@E@E@D@D@E@E@D@D@D@E@D@E@D@E@C@F@D@E@C@F@C@F@B@E+JrIs1@C@F@B@F@B@G@A@F@B@F@A@F@A@G@@@F@A@F@@@G+K_Jr1@@@F`A@G@@@F`A@F`A@G`A@F`A@F`B@F`B@G`B@F`B@F`B@F`C@E`C@F`C@F`C@E`C@F`D@E`D@F`C@E`E@E`D@D`D@E`E@E`D@D`E@D`E@D`E@D`E@D`F@C`E@D`F@C`F@C`E@C`F@B`F@C`F@B`F@B`F@B`G@A`F@B`F@A`F@A`G@A`F@@`G@@`F@A`F`A`G@@+HRMq1`F@@`G`A`F`A`F`A`G`B`F`A`F`B`F`B`F`B`F`C`F`B`F`C`E`C`F`C`E`D`F`C`E`D`E`D`E`D`E`D`D`D`E`E`D`E`E`D`D`E`C`E`D`F`D`E`C`F`C`E`C`F`C`F`C`E`B`F`B`F`B`F`B`G`B`F`A`F`A`F`A`G`A`F@@`F`A`G@@`F@@`G@A`F@@`F@A`G+EaJX1@A`F@A`G@A`F@B`F@B`F@B`F@B`F@B`F@C`F@C`F@C`E@C`F@C`F@D`E@D`E@C`E@D`E@E`E@D`E@E`D@D`E@E`D@E`D@E`D@E`C@F`D@E`C@F`D@E`C@F`B@F`C@F`B@F`C@F`B@F`A@G`B@F`A@F`A@F`A@G`A@F`A@G@@@F@@@F@@@G@@@F@A@G@A@F@A@F@A+IEGv1@F@A@G@B@F@A@F@B@F@C@F@B@F@C@E@B@F@C@F@D@E@C@F@D@E@C@E@D@E@D@E@D@D@E@E@D@D@E@D@E@E@E@C@E@D@E@D@E@C@F@C@F@C@E@C@F@C@F@B@F@B@F@B@F@B@F@B@F@A@G@A@F@A@F@A@G@@@F@A@F@@@G+KJr1@@@F`A@G@@@F`A@F`A@G`A@F`A@F`A@G`B@F`A@F`B@F`B@F`C@F`B@F`C@F`B@F`C@F`C@E`D@F`C@E`D@F`C@E`D@E`D@E`D@E`E@E`D@D`E@E`D@D`E@D`E@E`E@D`E@C`F@D`E@D`E@C`F@C`F@C`E@C`F@C`F@B`F@C`F@B`F@B`F@B`F@B`G@A`F@A`F@A+IDNN1`G@A`F@A`F@A`G@@`F@@`G@A`F`A`F@@`G@@`F`A`G`A`F`A`F`A`G`B`F`A`F`B`F`B`F`B`F`B`F`C`F`C`F`B`E`C`F`C`E`D`F`C`E`D`E`D`E`C`E`D`E`E`E`D`E`D`D`E`E`E`D`E`D`E`D`E`D`E`C`E`D`F`C`E`C`F`C`E`C`F`C`F`B`F`C`F`B`F+EKKz1`B`F`B`F`A`F`B`G`A`F`A`F`A`F`A`G@@`F`A`G@@`F@@`G@@`F@A`F@@`G@A`F@A`F@A`G@A`F@B`F@A`G@B`F@B`F@B`F@C`F@B`F@C`F@C`E@C`F@C`F@C`E@D`E@C`F@D`E@D`E@D`E@D`E@E`E@D`D@E`E@E`D@E`D@E`D@E`D@E`D@E`C@F`D@E`C@F`C+FuGm1@E`C@F`C@F`C@F`B@F`B@F`C@F`B@F`A@G`B@F`A@F`B@F`A@G@@@F`A@G`A@F@@@F@@@G@@@F@@@G@A@F@@@F@A@G@A@F@A@F@A@G@B@F@B@F@A@F@B@F@C@F@B@F@C@F@B@E@C@F@C@F@D@E@C@E@C@F@D@E@D@E@D@E@D@E@D@D@E@E@D@D@E@E@E@D@D@D@F+KPHi1@D@E@C@E@D@E@C@F@D@E@C@F@C@F@B@E@C@F@B@F@C@F@B@F@B@F@A@G@B@F@A@F@A@F@A@G@A@F@A@F@@@G@A@F@@@G+L_Jr1@@@F`A@G@@@F`A@F@@@G`A@F`A@F`A@G`B@F`A@F`B@F`B@F`B@F`B@G`B@F`C@E`B@F`C@F`C@F`C@E`C@F`C@F`D@E`C@E`D@F`D@E`D@E`D@E`D@E`D@D`E@E`D@D`E@E`D@D`E@D`E@D`E@D`F@D`E@D`E@C`F@D`E@C`F@C`E@C`F@C`F@B`F@C`F@B`F@C+IuNc1`F@B`F@B`F@A`F@B`F@A`G@B`F@A`F@A`G@A`F@@`F@A`G@@`F@@`G@A`F`A`F@@`G@@`F`A`G`A`F`A`F`A`F`A`G`A`F`B`F`B`F`A`F`B`F`C`F`B`F`B`F`C`F`C`F`C`E`C`F`C`E`C`F`D`E`C`E`D`E`D`E`D`E`D`E`D`E`D`D`E`E`D`D`E`D`E`E`E+EYMT1`D`E`C`E`D`E`D`E`C`F`D`E`C`F`C`E`C`F`C`F`B`F`C`F`B`E`B`F`B`G`B`F`B`F`B`F`A`F`A`G`A`F`A`F`A`G`A`F@@`F`A`G@@`F@@`F@@`G@A`F@@`G@A`F@A`F@A`G@A`F@A`F@A`G@B`F@B`F@B`F@B`F@B`F@B`F@C`F@B`F@C`F@C`E@C`F@C`E+ECHo1@D`F@C`E@D`F@D`E@C`E@D`E@E`E@D`D@D`E@E`E@D`D@E`E@E`D@E`D@E`D@E`D@E`C@E`D@F`C@E`D@F`C@E`C@F`C@F`C@F`B@F`C@F`B@F`B@F`B@F`B@F`B@F`A@G`B@F`A@F`A@F`A@G`A@F@@@G`A@F@@@F@@@G@@@F@@@G@A@F@@@F@A@G@A@F@A@F@A+IPFw1@G@A@F@A@F@B@F@B@F@B@F@B@F@B@F@C@F@B@F@C@F@C@E@C@F@C@E@C@F@C@E@D@E@C@F@D@E@D@E@D@E@D@D@E@E@D@E@E@D@D@D@E@D@E@E@E@C@E@D@E@D@E@C@E@D@F@C@E@C@F@C@F@C@E@C@F@B@F@C@F@B@F@B@F@B@F@B@F@B@F@A@G@B@F@A@F@A@F+L\JK1@A@G@@@F@A@G@@@F@A@F@@@G+LJr1@@@F`A@G@@@F@@@F`A@G`A@F`A@F`A@G`A@F`A@F`B@G`B@F`A@F`B@F`B@F`B@F`C@F`B@F`C@F`B@F`C@F`C@E`C@F`C@E`D@F`C@E`D@F`D@E`C@E`D@E`D@E`D@E`E@E`D@D`D@E`E@E`E@D`D@D`E@D`E@E`E@D`E@C`F@D`E@D`E@C`F@D`E@C`F@C`E@C+JdNq1`F@C`F@C`F@B`F@C`F@B`F@B`F@C`F@B`F@A`F@B`F@B`G@A`F@A`F@A`G@A`F@A`F@A`G@A`F@@`F@@`G@@`F@@`G@@`F@@`F@@`G`A`F`A`G`A`F`A`F`A`F`A`G`A`F`B`F`B`F`A`F`B`F`C`F`B`F`B`F`C`F`B`F`C`F`C`E`C`F`C`E`C`F`D`E`C`F`D+EyN]1`E`D`E`C`E`D`E`E`E`D`D`D`E`D`E`E`D`E`D`D`E`E`D`E`D`E`D`E`D`E`C`E`D`F`C`E`D`F`C`E`C`F`C`F`C`E`B`F`C`F`B`F`C`F`B`F`B`F`B`F`B`F`A`F`B`G`A`F`A`F`A`G`A`F`A`F`A`G@@`F@@`F`A`G@@`F@@`G@A`F@@`G@@`F@A`F@A`G+DBJK1@A`F@A`F@A`G@A`F@B`F@A`F@B`F@B`G@B`F@B`F@C`F@B`F@C`F@B`E@C`F@C`F@C`E@C`F@D`E@C`F@D`E@C`E@D`F@D`E@D`E@D`E@E`D@D`E@D`E@E`D@E`E@D`D@E`D@E`D@E`D@E`D@F`D@E`C@E`D@F`C@E`D@F`C@E`C@F`C@F`B@F`C@F`B@F`C@F`B+F~Fc1@F`B@F`B@F`B@F`B@F`A@G`B@F`A@F`A@F`A@G`A@F`A@G@@@F`A@F@@@G@@@F@@@G@@@F@@@F@A@G@@@F@A@G@A@F@A@F@A@F@A@G@B@F@A@F@B@F@B@F@B@F@B@F@B@F@C@F@B@F@C@F@B@F@C@E@C@F@C@E@D@F@C@E@D@E@C@F@D@E@D@E@D@E@D@E@D@D@D+KbG^1@E@E@E@D@D@E@D@E@E@D@D@E@D@E@D@E@C@F@D@E@D@E@C@F@D@E@C@F@C@E@C@F@C@F@B@F@C@E@B@F@C@F@B@F@B@F@B@G@A@F@B@F@B@F@A@F@A@G@A@F@A@F@A@G@A@F@@@G@@@F@A@F@@@G+M_Jr1@@@F`A@G@@@F@@@F`A@G`A@F@@@F`A@G`B@F`A@F`A@G`B@F`A@F`B@F`B@F`B@F`B@F`B@F`B@F`C@F`B@F`C@F`C@F`C@E`C@F`C@F`C@E`C@F`D@E`C@E`D@F`D@E`D@E`D@E`D@E`D@E`D@D`D@E`E@E`D@D`E@E`E@D`E@D`D@D`E@D`E@D`F@D`E@D`E@C+KQN{1`E@D`F@C`E@D`F@C`F@C`E@C`F@C`F@B`F@C`E@B`F@C`F@B`F@B`F@B`G@B`F@B`F@B`F@A`F@A`G@B`F@A`F@A`G@A`F@A`F@@`G@A`F@@`F@@`G@@`F@@`G@@`F@@`F@@`G`A`F@@`G`A`F`A`F`A`F`A`G`B`F`A`F`A`F`B`F`B`G`B`F`B`F`B`F`B`F`C+FeOY1`F`B`E`C`F`B`F`C`F`C`E`C`F`C`E`D`F`C`E`D`E`C`E`D`F`D`E`D`E`D`E`D`D`D`E`D`E`E`D`D`E`E`D`E`D`D`D`E`E`E`D`E`C`E`D`E`D`F`C`E`D`E`C`F`C`E`D`F`C`F`B`E`C`F`C`F`B`F`C`F`B`F`B`F`B`F`B`F`B`F`B`F`B`F`A`F`A`G+CfKq1`B`F`A`F`A`G@@`F`A`F`A`G@@`F@@`G`A`F@@`F@@`G@A`F@@`F@@`G@A`F@A`G@@`F@A`F@A`G@B`F@A`F@A`F@B`G@B`F@B`F@B`F@B`F@B`F@B`F@C`F@B`F@C`F@C`E@B`F@C`F@D`E@C`F@C`E@D`F@C`E@D`E@D`E@C`E@D`E@E`E@D`E@D`E@D`E@E`D+D|GQ1@D`E@E`D@E`D@E`E@D`D@E`D@E`D@F`D@E`C@E`D@E`C@F`D@E`C@F`C@E`C@F`C@F`C@F`C@E`C@F`B@F`B@F`C@F`B@F`B@G`B@F`A@F`B@F`B@F`A@G`A@F`A@F`A@G`A@F`A@F`A@G@@@F`A@F@@@G@@@F@@@G@@@F@@@F@A@G@@@F@A@F@A@G@A@F@A@F@A+I[Ex1@G@A@F@A@F@B@F@B@F@A@G@B@F@B@F@B@F@C@F@B@E@B@F@C@F@C@F@C@F@C@E@C@F@C@E@C@F@D@E@C@E@D@E@C@F@D@E@D@E@D@D@D@E@E@E@D@E@D@D@E@E@D@D@E@D@E@D@E@D@E@D@E@D@E@D@E@D@E@C@E@D@F@C@E@C@F@C@E@D@F@B@F@C@E@C@F@B@F+MEHu1@C@F@B@F@B@F@B@F@B@F@B@F@B@F@A@G@B@F@A@F@A@F@B@G@A@F@@@F@A@G@A@F@@@G@@@F@A@F@@@G+MJr1@@@F`A@G@@@F@@@F`A@G@@@F`A@F`A@G`A@F`A@F`A@G`B@F`A@F`B@F`A@G`B@F`B@F`B@F`B@F`B@F`C@F`B@F`C@F`B@F`C@E`C@F`C@F`C@E`C@F`D@E`C@F`C@E`D@F`D@E`C@E`D@E`D@E`D@E`D@E`E@E`D@E`D@D`E@E`D@D`E@E`E@D`E@D`D@D`E@E+K|OD1`E@D`E@C`F@D`E@D`E@C`F@D`E@C`E@D`F@C`F@C`E@C`F@C`F@C`F@B`E@C`F@B`F@C`F@B`F@B`F@B`F@B`G@B`F@B`F@A`F@B`F@A`G@A`F@A`F@A`G@A`F@A`F@A`G@@`F@A`G@@`F@@`F@@`G@@`F@@`G@@`F@@`F`A`G@@`F`A`G`A`F`A`F`A`F`A`G`B+GTPI1`F`A`F`B`F`A`G`B`F`B`F`B`F`B`F`B`F`B`F`C`F`B`E`C`F`C`F`C`F`B`E`D`F`C`E`C`F`C`E`D`F`C`E`D`E`D`E`D`E`C`E`D`E`E`E`D`E`D`D`D`E`E`E`D`D`E`D`E`E`E`D`D`D`E`D`E`D`E`D`F`C`E`D`E`C`E`D`F`C`E`C`F`D`E`C`F`B`F+CeMO1`C`F`C`E`C`F`B`F`B`F`C`F`B`F`B`F`B`F`B`F`A`F`B`G`B`F`A`F`A`F`A`G`A`F`A`F`A`G`A`F`A`G@@`F@@`F`A`G@@`F@@`G@@`F@A`F@@`G@@`F@A`F@A`G@A`F@A`G@A`F@A`F@A`F@A`G@B`F@B`F@A`F@B`F@B`G@B`F@B`F@C`F@B`F@B`E@C`F+C_H`1@C`F@C`F@B`F@D`E@C`F@C`E@C`F@D`E@C`F@D`E@C`E@D`E@D`E@D`E@D`E@D`E@E`E@D`E@E`D@D`E@E`D@D`E@E`D@E`D@E`D@E`D@E`D@E`D@E`D@E`C@F`D@E`C@F`D@E`C@F`C@E`C@F`C@F`C@F`C@E`B@F`C@F`B@F`C@F`B@F`B@F`B@F`B@G`A@F`B+GHE]1@F`B@F`A@G`A@F`A@F`B@G`A@F@@@F`A@G`A@F@@@F`A@G@@@F@@@G@@@F@@@F@@@G@A@F@@@G@A@F@@@F@A@G@A@F@A@F@A@G@A@F@B@F@A@F@B@F@A@G@B@F@B@F@B@F@B@F@C@F@B@F@B@E@C@F@C@F@C@F@B@E@C@F@D@F@C@E@C@E@C@F@D@E@D@E@C@F@D+KrFX1@E@D@E@D@E@D@D@D@E@D@E@E@E@D@D@E@E@D@D@E@D@E@E@D@D@E@D@E@D@E@D@E@C@F@D@E@D@E@C@F@C@E@D@E@C@F@C@F@C@E@C@F@C@F@B@F@C@F@B@E@C@F@B@F@B@F@B@G@B@F@B@F@A@F@B@F@A@F@B@G@A@F@A@F@A@G@A@F@A@F@@@G@A@F@@@G@@@F+M~Je1@A@F@@@G+N_Jr1@@@F`A@G@@@F@@@F`A@G@@@F`A@F`A@G`A@F`A@G`A@F`A@F`A@F`B@G`A@F`B@F`B@F`B@F`B@G`B@F`B@F`B@F`B@F`C@F`B@E`C@F`C@F`C@F`C@E`C@F`C@F`C@E`C@F`D@E`C@F`D@E`C@E`D@E`D@E`D@F`D@E`D@D`D@E`E@E`D@E`D@D`E@E`D@E`E@D+LeOJ1`E@D`D@E`E@D`E@D`E@D`E@D`E@D`F@C`E@D`E@D`F@C`E@D`F@C`E@C`F@C`E@C`F@C`F@C`F@C`E@B`F@C`F@B`F@C`F@B`F@B`F@B`F@B`G@B`F@B`F@A`F@B`F@A`G@B`F@A`F@A`G@A`F@A`F@A`G@@`F@A`F@A`G@@`F@@`G@@`F@@`F@@`G@@`F@@`G@@+HEPq1`F`A`F`A`G@@`F`A`G`A`F`A`F`A`F`A`G`B`F`A`F`B`F`A`G`B`F`B`F`B`F`B`F`B`F`B`F`C`F`B`F`C`F`B`E`C`F`C`F`C`E`C`F`C`F`C`E`C`E`D`F`C`E`D`E`D`F`C`E`D`E`D`E`D`E`D`E`D`D`E`E`D`E`D`D`E`E`E`D`D`E`E`D`E`D`E`D`D+CvNe1`D`E`D`F`D`E`D`E`C`E`D`E`C`F`D`E`C`F`C`E`C`F`C`F`C`E`C`F`C`F`C`F`B`F`C`E`B`F`B`F`B`F`B`G`B`F`B`F`B`F`B`F`A`F`B`G`A`F`A`F`A`F`A`G`A`F`A`G`A`F@@`F`A`G@@`F@@`F`A`G@@`F@@`G@A`F@@`G@@`F@A`F@@`G@A`F@A`F+BcI1@A`G@A`F@A`F@A`G@A`F@B`F@A`F@B`G@B`F@B`F@B`F@B`F@B`F@B`F@B`F@C`F@B`F@C`F@C`F@C`E@C`F@C`F@C`E@C`F@C`E@D`F@C`E@D`E@C`F@D`E@D`E@D`E@D`E@D`E@D`E@D`E@E`D@D`E@E`E@D`D@E`E@E`D@D`D@E`D@E`D@E`D@E`D@E`D@F`D+EAEy1@E`D@E`C@F`D@E`C@E`C@F`D@F`C@E`C@F`C@F`C@F`B@E`C@F`C@F`B@F`B@F`C@F`B@F`B@F`B@F`B@G`A@F`B@F`B@F`A@G`A@F`B@F`A@G`A@F`A@F@@@G`A@F`A@F@@@G`A@F@@@G@@@F@@@F@@@G@@@F@@@G@A@F@@@F@A@G@A@F@@@F@A@G@A@F@A@F@B+IkDz1@G@A@F@A@F@B@F@B@G@A@F@B@F@B@F@B@F@B@F@C@F@B@F@B@F@C@E@C@F@B@F@C@F@C@E@C@F@C@E@D@F@C@E@C@F@D@E@C@E@D@F@D@E@D@E@D@E@D@E@D@E@D@D@D@E@D@E@E@D@D@E@E@D@E@D@D@E@E@D@E@D@E@D@E@D@E@D@E@D@E@C@F@D@E@C@E@D@F+MfGi1@C@E@C@F@C@E@C@F@C@F@C@E@C@F@C@F@B@F@C@F@B@F@B@F@B@F@B@F@B@F@B@F@B@F@B@G@A@F@B@F@A@F@A@G@A@F@A@F@A@G@A@F@A@F@@@G@A@F@@@G@@@F@A@F@@@G+DuJP1@@@J@K@@@@`J`K@@+DzJU1AP`I@p`B+FuJE1@@@J@J@@@@`J`J@@+FzJJ1@b@C@Y@F+GpJN1@@@J@J@@@@`J`J@@+GuJS1@S@I@N@K+HQJb1@@@J@J@@@@`J`J@@+HVJg1@I@K@F@L+H`Jy1@@@J@J@@@@`J`J@@+HeJ~1@B@L`A@K+HaKP1@@@J@J@@@@`J`J@@+HfKU1`D@J`F@I+HVKc1@@@J@K@@@@`J`K@@+H\Kh1`I@G`J@F+HDKp1@@@J@J@@@@`J`J@@+HIKu1`K@C`L@A+GmKt1@@@J@J@@@@`J`J@@+GrKy1`M`A`L`D+GSKo1@@@J@K@@@@`J`K@@+GYKt1`M`F`K`H+F{Ka1@@@J@K@@@@`J`K@@+GAKf1`K`K`I`L+FhKJ1@@@J@J@@@@`J`J@@+FmKO1`H`N`E`O+F[Jm1@@@J@J@@@@`J`J@@+F`Jr1`C`Q`A`Q+FVJK1@@@J@K@@@@`J`K@@+F\JP1@A`R@D`Q+F\Ig1@@@K@J@@@@`K`J@@+FaIm1@G`R@I`Q+FlIE1@@@J@J@@@@`J`J@@+FqIJ1@K`O@N`O+GEHg1@@@J@J@@@@`J`J@@+GJHl1@P`L@R`K+GgHP1@@@J@J@@@@`J`J@@+GlHU1@T`H@T`F+HOHB1@@@J@J@@@@`J`J@@+HTHG1@V`C@V@@+H{G1@@@J@J@@@@`J`J@@+I@HD1@V@C@V@F+IgHH1@@@J@K@@@@`J`K@@+IlHM1@V@I@T@K+JQH\1@@@J@K@@@@`J`K@@+JVHa1@S@O@R@Q+JvH{1@@@K@J@@@@`K`J@@+J{IA1@O@S@L@U+KQId1@@@J@J@@@@`J`J@@+KVIi1@J@W@G@X+KbJS1@@@K@J@@@@`K`J@@+KgJX1@D@Z@A@Z+KgKF1@@@K@J@@@@`K`J@@+KlKL1`C@Z`F@Y+K^Kz1@@@J@J@@@@`J`J@@+KcK1`J@Y`L@X+KHLk1@@@J@J@@@@`J`J@@+KMLp1`P@V`S@T+JeMU1@@@J@J@@@@`J`J@@+JjMZ1`U@R`W@O+IyMv1@@@J@J@@@@`J`J@@+I~M{1`Z@L`[@I+IDNK1@@@J@J@@@@`J`J@@+IINP1`\@E`\@B+HKNR1@@@J@K@@@@`J`K@@+HQNW1`]`B`]`E+GRNJ1@@@K@J@@@@`K`J@@+GWNP1`\`J`[`L+F[Mt1@@@K@J@@@@`K`J@@+F`Mz1`Y`Q`W`S+EkMQ1@@@J@J@@@@`J`J@@+EpMV1`T`V`R`Y+EELb1@@@J@J@@@@`J`J@@+EJLg1`N`[`K`]+DkKj1@@@J@K@@@@`J`K@@+DqKo1`H`^`C`_+DaJm1@@@J@J@@@@`J`J@@+DfJr1@@``@E`_+DfIn1@@@J@J@@@@`J`J@@+DkIs1@H`_@M`]+DzHr1@@@J@K@@@@`J`K@@+E@Hw1@P`\@S`Z+E^G|1@@@J@J@@@@`J`J@@+EcHA1@W`W@Y`T+FNGQ1@@@J@K@@@@`J`K@@+FSGV1@]`Q@^`N+GIFr1@@@K@J@@@@`K`J@@+GNFw1@_`I@a`E+HIFc1@@@K@J@@@@`K`J@@+HNFi1@b`B@a@C+ILFe1@@@J@J@@@@`J`J@@+IQFj1@a@G@`@L+JMFx1@@@J@J@@@@`J`J@@+JRF}1@_@O@\@S+KHGZ1@@@J@J@@@@`J`J@@+KMG_1@Z@W@W@Z+KyHK1@@@J@J@@@@`J`J@@+K~HP1@S@\@P@_+L\IF1@@@K@J@@@@`K`J@@+LaIK1@L@a@H@c+LpJI1@@@K@J@@@@`K`J@@+LuJO1@C@c+LsJm1@@@J@J@@@@`J`J@@%7B+@J@\6556I 03  09-23-84   22.961  frame no.  09    
        !          72648:    MH9220,M158,DREXLER                                     %0707070014230643111006440057030057030000011714540522627504100003200000001672post.src/tests/postdaisy1B
  9

       
     
        !          72649: 
    
        !          72650: 
    
        !          72651: 
    
        !          72652: 
    
        !          72653: 
    
        !          72654: 
    
        !          72655: 
    
        !          72656: 
This line is &u
_&n
_&d
_&e
_&r
_&l
_&i
_&n
_&e
_&.
_
    
        !          72657: 
    
        !          72658: 
This
 li
ne is &bb
b&oo
o&ll
l&dd
d&...
    
        !          72659: 
    
        !          72660: 
This
 line
 is
 &u_uu&n_nn&d_dd&e_ee&r_rr&l_ll&i_ii&n_nn&e_e
e& 
_&a_a
a&n_n
n&d_d
d& 
_&b_b
b&o_o
o&l_l
l&d_d
d&._..
     
        !          72661: 
    
        !          72662: 
This line is 
        !          72663: S
        !          72664: &
        !          72665: u
        !          72666: &
        !          72667: b
        !          72668: &Script.
  
        !          72669: 
    
        !          72670: 
This line is 
        !          72671: S
        !          72672: &
        !          72673: u
        !          72674: &
        !          72675: p
        !          72676: &
        !          72677: e
        !          72678: &
        !          72679: r
        !          72680: &Script.
  
        !          72681: 
    
        !          72682: 
    
        !          72683: 
    
        !          72684: 
    
        !          72685: 
    
        !          72686: 
    
        !          72687: 
    
        !          72688: 
    
        !          72689: 
    
        !          72690: 
    
        !          72691: 
    
        !          72692: 
    
        !          72693: 
    
        !          72694: 
    
        !          72695: 
    
        !          72696: 
    
        !          72697: 
    
        !          72698: 
    
        !          72699: 
    
        !          72700: 
    
        !          72701: 
    
        !          72702: 
    
        !          72703: 
    
        !          72704: 
    
        !          72705: 
    
        !          72706: 
    
        !          72707: 
    
        !          72708: 
    
        !          72709: 
    
        !          72710: 
    
        !          72711: 
    
        !          72712: 
    
        !          72713: 
    
        !          72714: 
    
        !          72715: 
    
        !          72716: 
    
        !          72717: 
    
        !          72718: 
    
        !          72719: 
    
        !          72720: 
    
        !          72721: 
    
        !          72722: 
    
        !          72723: 
    
        !          72724: 
    
        !          72725: 
    
        !          72726: 
    
        !          72727: 
B &
  0707070014230643121006440057030057030000011716700522627504100003000000037011post.src/tests/postdmd1 ��UU�UU�UU�UU�UU�UU�UUUUU;���&�UUUU�&UUUU���&�UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU��������������������������&UUUU��������������������������&UUUU@@@@@�&UUUU�&UUUU�?�&��&��?����&U
        !          72728: UUU���������&U
        !          72729: UUU&� &! &!������&UUUU��&�@�&U
        !          72730: UUU ? �?���&U
        !          72731: UUUD�@�@��&UUUU�@�@�@��&UUUU��&�xx�&UUUU�`� �&UUUU�� xx�&UUUU����&UUUU
        !          72732: �`�H�&UUUU�@�@`�@�$�&UUUU&@�&@�&@���&U
UUU�@�@�@
        !          72733: ��&UUUU������&UUUU�
        !          72734: ?�&���0&��&UUUU�&UUUU�&@�&@�&@�&@�&@�&UUUU��������������������������&UUUU��������������������������&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UU�&U&U�&UU?���&U&U�&U&U�&U&U�&U&U�&UU�&UU�&UU��&UU��&U&U�&UU��&UU��&U&U�&UU��&UU��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU�&UU�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU�&UU�&U&U�&U&U�&U&U�&U&U�&UU&��&U&U�&UU&��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU�&UU�&U&U�&U&U�&U&U�&U&U�&UU&��&U&U�&UU&��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU�&UU�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU���&�U&U�&U&U�&�&U&U�&U&U�&U&U�&UU���a��&UU��z|R��&UU&&���&UU��-�&UU�x��&U&U�&�&UU�x�(��&UU&���&U&U�&P�&U&U�&`�&U&U�&U&U�&U&U�&U&U�&UU������U&U�UUU&U�x�&��&�~�&�1��&�&�����`�UUU&U������0
        !          72735: �~���&P�&�(-&@���P�UUU&U��8� 0
        !          72736: �&$�&��@�@�@8�UUU&U�UUU&U�&��
��~f��0����|���a����&��UUU&U�0�&z�f/@��:�x�       z��b������&��UUU&U�0��������x��̄����UUU&U��=�����І���UUU&U�&x>����UUU&U�(
        !          72737: �� �&�
        !          72738: ��$����0P��P��@(�UUU&U���/B�&�
        !          72739: �&~��&P��R�(&@��P�UUU&U����&����0�&�~`�1����0?�a����`�UUU&U�&z���UUU&U�&����&����`?��UUU&U�UUU&U�UUUU�&�UUU&U�UUUU�&(�UUU&U�UUUU�(�&P�UUUU��UUUUP�&��UUUU��UUUU蠃&&@�UUU&U�UUUU�@�&��UUUU��UUUU&��&�UUU&U�UUU&U���U&U�&U&U���0��&�     &�����0�&���&�&�~����U&U�@&@P��
&�(-&@������0
        !          72740: �~���&U&U�����@�@�&@�&
        !          72741: �0 �4��&U&U�&U&U�&�
���a����&��
���~f��0����&U&U�&3���b������&���&z�f/@��:�x�&U&U�&3��̄����&�������x�&U&U��І����=����&U&U����&x>�&U&U�����0P��P��@�
        !          72742: ���&�
        !          72743: ��$��&U&U�&@P̂
        !          72744: �R�(&@�鐂&��/B�&�
        !          72745: �~��&U&U��0����0?�a����
        !          72746: `&����0��&�~`�&U&U���&&z�&U&U���`?��&0�&����&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&�&U&U�&U&U�&(�&U&U���g��&U&U�/Y���8�&U&U�&�&U&U�&@�&8�&U&U�&��&U&U���&U&U�/�K�P�&U&U�`Ç�`�&U&U�&U&U�&U&U�&U&U�&UU�&`�&U&U�&UU�&��&U&U�&UU�(�&&@�&UU��&UUP�&��&UU��&UU蠂&�&U&U�&UU�@�&
        !          72747: �&UU��&UU&��&�&U&U�&U&U�&U&U�&U&U�&U&U�&`�&U&U�&U&U���&U&U�����?�&U&U�������&U&U�&�&U&U����&U&U�&��&U&U�&�&��&U&U��T��&U&U�&�8~`1��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&������
        !          72748: &��~a���<&��&U&U�&h�Ah��R�    �(0&@�&U&U�r����@�&��&U&U��-;@R��&`�&U&U���~3�|c3&��
        !          72749: ��؂��&U&U�`�<3�`��3�P&A ��p�&U&U�`@�`��(
        !          72750: � �&U&U�      �&xP�8�&p�&U&U��p�--G
        !          72751: ��&U&U�        �&���&���&0�&��&U&U��
        !          72752: �&@��\
        !          72753: �Tp?R�G�(P3
        !          72754: &@��&U&U��&�c��&�|?8�a���`?1���&U&U�&U&U�&�&��&U&U�&U&U�&UU�&�&U&U�&UU�&(�&U&U�&UU�(�&P�&UU��&UUP�&��&UU��&UU蠃&&@�&U&U�&UU�@�&��&UU��&UU&��&�&U&U�&U&U�&U&U�&U&U�&�<�
        !          72755: ��~a�����&U&U��&��Z��* �*��R��&�&U&U��&�8&���P��&�&U&U�+PBҤ-�&�&U&U�?����0?��30��&�
        !          72756: 
��&>�&U&U�fC�&�1�f@�0&A P�=�&U&U�f&�f�
        !          72757: � �(�&U&U�8�&xP�p�&U&U�-G
        !          72758: ��p�-�&U&U�@(@0��
        !          72759: &�&U&U�������PG�(Tp?R�0�
        !          72760: �&U&U�&�0p`���p`��8�a�����&U&U�&U&U�&0�0��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU�&���&0�&UU@�       ��&��&U&U��P�&�� @�&U&U�0��&`�&UU ��|�fc��f���&UU�0�����f�`yz�f`�&UU�
        !          72761: 0���f���a@�&UU ������&U&U�0��&x}b��&U&U�&@��0 �&UU@(���ˁP&x��&UU��    �1�|�����&U&U�&0�&�&U&U�&�&U&U�&U&U�&UU&��&UUd�&UU��&U&U�&U&U�&UU���&UU�&UU��&U&U�&UU��&UUd�&UU&��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&�<�`&���<?��&U&U�
        !          72762: �&��Z��*�&PZ?���&U&U��&�8&��&����0&P�&U&U�+P� ��&U&U�?����0?��30�&�~>1���P&@��&U&U�fC�&�1�f@�0���]L���@��&U&U�f&�f�
        !          72763: ��&�(��&U&U�8�p��
        !          72764: ��&U&U�-@�\ �&U&U�
        !          72765: @(@0�        `$�&@ �&U&U�������PW���].��Z3�@�&U&U�&�0p`���p`���~>���&�<?&��&U&U�&U&U�&0�0��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU��&UU��&U&U�&UU��&UU��&U&U�&UU��&UU��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU&��&U&U�&UU&��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU&��&U&U�&UU&��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U���0��&�    &�����0�&���&�&�~��&U&U�@&@P��
&�(-&@������0
        !          72766: �~���&U&U�����@�@�&@�&
        !          72767: �0 �4��&U&U�&U&U�&�
���a����&��
���~f��0����&U&U�&3���b������&���&z�f/@��:�x�&U&U�&3��̄����&�������x�&U&U��І����=����&U&U����&x>�&U&U�����0P��P��@�
        !          72768: ���&�
        !          72769: ��$��&U&U�&@P̂
        !          72770: �R�(&@�鐂&��/B�&�
        !          72771: �~��&U&U��0����0?�a����
        !          72772: `&����0��&�~`�&U&U���&&z�&U&U���`?��&0�&����&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&`�&U&U�&U&U���&U&U�����?�&U&U�������&U&U�&�&U&U����&U&U�&��&U&U�&�&��&U&U��T��&U&U�&�8~`1��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&�<�
        !          72773: ��~a�����&U&U��&��Z��* �*��R��&�&U&U��&�8&���P��&�&U&U�+PBҤ-�&�&U&U�?����0?��30��&�
        !          72774: 
��&>�&U&U�fC�&�1�f@�0&A P�=�&U&U�f&�f�
        !          72775: � �(�&U&U�8�&xP�p�&U&U�-G
        !          72776: ��p�-�&U&U�@(@0��
        !          72777: &�&U&U�������PG�(Tp?R�0�
        !          72778: �&U&U�&�0p`���p`��8�a�����&U&U�&U&U�&0�0��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU�&���&0�&UU@�       ��&��&U&U��P�&�� @�&U&U�0��&`�&UU ��|�fc��f���&UU�0�����f�`yz�f`�&UU�
        !          72779: 0���f���a@�&UU ������&U&U�0��&x}b��&U&U�&@��0 �&UU@(���ˁP&x��&UU��    �1�|�����&U&U�&0�&�&U&U�&�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU��&UU&h�&UU�&U&U�&U&U�&UU`�&UU`�&U&U�&U&U�&U&U�&U&U�&UU&��&U&U�&U&U�&U&U�&U&U�&U&U�&�`�&UU0�&U&U�&U&U�&UU����?��&UU&��~�>   O��&U&U�^��&UU&|�&UU���&UU&��&�&UU&���*^���&UU&��?����&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU�&U&U�&U&U�&UU��&UU& �&UU��&UU& �&UU�&U&U�&U&U�&U&U�&U&U�&UU�`�<?�&UU&�2ZL��&UUX�b�&UU��&UUH�&UU&0<��&UU�(<��&UU�&UU �&UU&ȥr�&UU1�2ZL��&UU���<?�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU��&UU��&U&U�&U&U�&U&U�&UU��&UU��&U&U�&U&U�&UU�&U&U�&U&U�&UU�&���&�`�&U&U�&���0�&U&U�& �&p�&U&U�&�&UU������~����?���&UU&(���&*��?ـ&��~�>       O�&((�&U
        !          72780: UZ (��^�P�&UU$�&�P=?�&|�&��&UU$��>��� �&UUZ h�&��&��&UU&p����&���*^��(�&UU���`���&��?�����&U&U�&U&U�&�&U&U�&U&U�&U&U�&?��0�&U&U�L��&�&U&U�&�&U&U�&U&U�������f�&��&U&U�������t�f����&U&U��&0�/��&U&U�����&U&U�&}�&&��&U&U�0��&�&U&U���L���t�/����&U&U���?����g�&��&U&U�&U&U�&�&U&U�&U&U�&UU��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U?����U&U�UU����UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU���&�UUUU�&UUUUn���&�U�UU�UU�UU�UU�UU�UU�UU0707070014230643131006440057030057030000011714550522627504100002600000000643post.src/tests/troff1.EQ
        !          72781: delim $$
        !          72782: .EN
        !          72783: .TS
        !          72784: doublebox;
        !          72785: c c
        !          72786: l l.
        !          72787: Name   Definition
        !          72788: .sp
        !          72789: .vs +2p
        !          72790: Gamma  $GAMMA (z) = int sub 0 sup inf t sup {z-1} e sup -t dt$
        !          72791: Sine   $sin (x) = 1 over 2i ( e sup ix - e sup -ix )$
        !          72792: Error  $ roman erf (z) = 2 over sqrt pi int sub 0 sup z e sup {-t sup 2} dt$
        !          72793: Bessel $ J sub 0 (z) = 1 over pi int sub 0 sup pi cos ( z sin theta ) d theta $
        !          72794: Zeta   $ zeta (s) = sum from k=1 to inf k sup -s ~~( Re~s > 1)$
        !          72795: .vs -2p
        !          72796: .sp 2
        !          72797: .TE
        !          72798: 0707070014230643141006440057030057030000011714560522627504100003200000000204post.src/tests/postprint1
        !          72799: An Ascii test          file for
        !          72800:               postprint. Probably
        !          72801: 
        !          72802: 
        !          72803: 
        !          72804: 
        !          72805: should have more than one line, and
        !          72806: a few blank ones too.
        !          72807: 
        !          72808:                        
        !          72809: 
        !          72810: That's it.
        !          72811: 0707070014230643151007550057030057030000011717300522627504100003000000003150post.src/tests/runtests#
        !          72812: # Runs the test files that you'll find in this directory. You may want to change
        !          72813: # the definitions of PRINT and BINDIR. The default definition of BINDIR assumes
        !          72814: # the translators are installed in /usr/lbin/postscript, while PRINT just writes
        !          72815: # everything to stdout. Unrecognized options (ie. options other than -P and -B)
        !          72816: # are passed along to the translator.
        !          72817: #
        !          72818: # For example, if postio is installed in /usr/lbin/postscript, the following runs
        !          72819: # the dmd bitmap translator on the test file ./postdmd1 and sends the output to
        !          72820: # the printer attached to /dev/tty01.
        !          72821: #
        !          72822: #      runtests -P'/usr/lbin/postscript/postio -l /dev/tty01' -pland postdmd
        !          72823: #
        !          72824: 
        !          72825: OPTIONS=
        !          72826: PRINT=cat
        !          72827: BINDIR=/usr/lbin/postscript
        !          72828: 
        !          72829: for i do
        !          72830:     case $i in
        !          72831:        -P*) PRINT=`echo $i | sed s/-P//`;;
        !          72832: 
        !          72833:        -B*) BINDIR=`echo $i | sed s/-B//`;;
        !          72834: 
        !          72835:        -*)  OPTIONS="$OPTIONS $i";;
        !          72836: 
        !          72837:        *)   break;;
        !          72838:     esac
        !          72839:     shift
        !          72840: done
        !          72841: 
        !          72842: for i do
        !          72843:     for j in ${i}*; do
        !          72844:        if [ ! -r "$j" ]; then
        !          72845:            break
        !          72846:        fi
        !          72847:        case $j in
        !          72848:            dpost*)
        !          72849:                $BINDIR/dpost $OPTIONS $j | $PRINT;;
        !          72850: 
        !          72851:            postbgi*)
        !          72852:                $BINDIR/postbgi $OPTIONS $j | $PRINT;;
        !          72853: 
        !          72854:            posttek*)
        !          72855:                $BINDIR/posttek $OPTIONS $j | $PRINT;;
        !          72856: 
        !          72857:            postdmd*)
        !          72858:                $BINDIR/postdmd $OPTIONS $j | $PRINT;;
        !          72859: 
        !          72860:            postmd*)
        !          72861:                $BINDIR/postmd $OPTIONS $j | $PRINT;;
        !          72862: 
        !          72863:            postdaisy*)
        !          72864:                $BINDIR/postdaisy $OPTIONS $j | $PRINT;;
        !          72865: 
        !          72866:            postprint*)
        !          72867:                $BINDIR/postprint $OPTIONS $j | $PRINT;;
        !          72868: 
        !          72869:            postplot*)
        !          72870:                $BINDIR/postplot $OPTIONS $j | $PRINT;;
        !          72871: 
        !          72872:            postgif*)
        !          72873:                $BINDIR/postgif $OPTIONS $j | $PRINT;;
        !          72874: 
        !          72875:            troff*)
        !          72876:                pic $j | tbl | eqn | troff -mm -Tpost | $BINDIR/dpost $OPTIONS | $PRINT;;
        !          72877: 
        !          72878:            man*)
        !          72879:                troff -man -Tpost $j | $BINDIR/dpost $OPTIONS | $PRINT;;
        !          72880:        esac
        !          72881:     done
        !          72882: done
        !          72883: 0707070014230643161006440057030057030000011717500522627504100003000000256752post.src/tests/posttek1`%cq+VbqXlrZhtZfvXgvVhtUlrUcqV,nj$[lj]gl^cn^lo]no[cnYglYnj[&ba#Afc"_ba#A%b"_3jjQckPomPfnQkjRjjTkjSgnSkmRjjUfnUenWomWckWijWjjUomXfnYfnZlm[dm[jlZ`l[`k[jjZjjYckXjlYjlZkj\ak]mm]gn\#jcQcdPofPfgQkcRjcTkcSggSkfRgfWofWegWdgVnfUbdUhcVicWcdWceWaeWgfXofXfgYfgZlf[df[cdXkcXhc[kc\ad]mf]gg\bxNhxNd{Nn{No{Qn{OfzOezQkyQkxQaxQaxPjxObyOhxUbxTbxShxSd{Sn{Sn{Td{UbxVaxXaxWm{Wb{V`xZayYmzYl{Zn{Znz[by[bxZ`xZ`x]kx]g{]l{](onMeoMarMkrMhrQkrNcqNbqPdpQdoQnnPnnOgoNooNmnTmnRirRirTaqRcqSonUnnWnnVjrVoqUmnYnoXjqXirYhrZkqZooZlnZmnYmn\do]`r]ir\$koMapMmrMgsMdsQgsNoqNnqPdqQ`pQjoPjoOcpNkpNioTioResResTmqRoqSkoUjoWjoVfsVkrUioYjpXfrXesYdsZgrZkpZhoZioYio\`p]lr]es\kiMejMamMkmMhmQkmNokNnkPdkQdjQjiPjiOgjNojNelTamTkmSkmRamRejRkiRkiSejTekTgkSkiUjiWjiVjmVolUiiYnjXflXimYhmZglZojZhiZiiYii\dj]`m]im\'ojMekManMknMhnQknNolNnlPdlQdkQnjPnjOgkNokNmjRinRinTmlRolSojUnjWnjVjnVomUmjYnkXjmXinYhnZkmZokZljZmjYmj\dk]`n]in\#njNdkN`nNjnNknQjnObmOamQklQgkQmjQmjPfkOnkOljSlmSknSinTlmUljUhlShlUnjVmjXmjWinWnmVljZmkYimYhnZjnZjm[nk[njZljZlj]gk]cn]hn](k}Ma~M)m`MgaMdaQgaN(kNjP`Q`~Qj}Pj}Oc~Nk~Ni}R)eaReaT(iRkSk}Uj}Wj}V)faVk`U(i}Yj~X)f`XeaYdaZg`Z(k~Zh}Zi}Yi}\`~])l`]ea\#brNlrNhuNbvNcvQbvOftOetQosQorQarQarPnrOfsOlrUbrTbrSlrShuSbvSbvThuUbrVarXarWavWbuV`rZesYmtY`vZbvZnt[fs[brZ`rZ`r]or]ku]`v]4`{Pj{Of~Ol~Pa{Q`{Sa{Rm~Ra~Q`{Tl~To~Ue~Vi{Vc{U`{Tc{Wa{Yb{Xn~Xc~W`{[j{[f~[l~[,bkNhkNdnNnnNonQnnOfmOemQklQkkQakQakPjkOblO`kS`nSonSmnT`nU`kUhlShlUbkVakXakWmnWbnV`kZalYmmYlnZnnZnm[bl[bkZ`kZ`k]kk]gn]ln]#n}Nh~N$daNnaNoaQnaOb`Oa`Q#kQk~Qm}Qm}Pj~ObO$h`UdaUnaTnaSdaS#h~Sn}Sn}Th~UhUjTn}Vm}Xm}W$maWbaV#l}ZaY$i`YlaZnaZj`[#b[n}Zl}Zl}]k~]$ga]la]4`uPjuOfxO`yP`yQaySexS`uQnwVfxV`yV`yUexTiuT`uU`uVjuVnvVlvVgxWayXayYdxZlwZewYlvZhuZauYauXkuWovWewXowWgxWewXewYbu[hu\dx\by[2csPisPevPovPdvTnvSmvRgvQksQasRbsShsThtTbuSauRktQ`sU`vUlvVnvVavWasWhtUitWjsX`sY`sZjsZfvZlvZlvYfvXbuXhtYhtZbuZas\ks\gv\mv\5l`PfaOfdOldPm`Ql`Sm`RmdRmcQicVedVodUodTddTdaTo`To`UeaVibVkbUjcWfdWldXldYfdYjcYfaWn`Wn`Ym`[ga[gd[md[3o`PiaPedPodPddTndSmdRgdQkaQm`Rn`ShaThbTbcSacRkbQl`U`dUldVndVadWm`WhbUibWjaXl`Yl`ZjaZfdZldZldYfdXbcXhbYhbZbcZm`\ka\gd\md\*jzQc{Po}Pf~QkzRjzTkzSg~Sk}RjzUf~Ue~Wo}Wc{WizWjzUo}Xf~Yf~Zl}[d}[j|Z`|[`{[jzZjzYc{Xj|Yj|Zkz\a{]m}]g~\&jwQcxPozPj{QkwRjwTkwSk{SkzRjwUj{Uk{WnyUmyWozXj{Yj{Zlz[dz[nyZdy[`x[jwZjwYcxXnyYnyZkw\ax]mz]k{\%n~QgP&cbPjbQ%o~Rn~To~S&kbSoaR%n~U&jbUibWcbWkaWaaWk`W%gWm~Wn~U&baUaaWcbXjbYjbZ`b[ha[baZh`[%d[n~Zn~YgX&baYbaZ%o~\e]&ab]kb\$ncQgdPcgPjgQocRncTocSkgSofRncUjgUigWcgWkfWafWkeWgdWmcWncUbfUafWkfXcgXjgYjgZ`g[hf[gdXocXlc[oc\ed]ag]kg\&fpQcqPosPftQgpRfpTgpSgtSksRfpUftUetWosWcqWepWfpUepYgpZdpZdtZisYfp\`q]ls]ft\)ngQghPckPjkQogRngTogSkkSojRogWngUjkUkkWbjUajW`i[ciXgkYgkYjkZngZog\eh]ak]kk\'f`QcaPocPfdQg`Rf`Tg`SgdSkcRf`UfdUedWocWccWibWcbWcaWe`Wf`UjbUibWccXocXfdYfdZlc[`c[caXg`Xd`[g`\aa]mc]gd\)boQkoPgrPbsQcoRboTcoScsScrRboUbsUasWgrWoqWeqWopWkoWaoWboUfqUeqWgrXbsYbsZdr[lq[fqZlp[ho[boZboYkoXfqYfqZco\io]er]cs\-niQgjPcmPnmQnmRomTcmTniRhlX`mXnmWnmVcmUgjUniVniWdjXhkXjkWamYomYomZam[il[clZik[ej[oiZoiYejYikYclYilYamYclYclZli]fj]bm]lm]+nrQgsPcvPjvQorRnrTorSkvSouRgsWmrWlrVfsUbvUhvVivWcvWcvXjvYjvZ`v[hu[ntZdt[ds[nrZnrYgsXntYntZor\es]av]kv\biQoiPklPbmQciRbiTciScmSglRbiUbmUcmWfkUekWokXklXbmYbmZhl[lk[oiXciX`i[ci\mi]il]cm\j{Qc|Po~PfQk{Rj{Tk{SgSk~Rj{UfUeWo~Wc|Wi{Wj{Ug~Xo~XfYfZl~[d~[c|Xk{Xh{[k{\a|]m~]g\.jnQcoPoqPjrQknRjnTknSkrSkqRjnUjrUkrWnpUmpWinYknZhnZhrZiqYjn\`o]lq]jr\fgQogPkjPbkQggRfgTggSckSgjRfgUbkUakWkjWogWegWfgU`k[ckXkiXjiZlh[lg[fgZfgYogXghXgg\mg]ij]ck\fzQozPo}Pf~QgzRfzTgzSg~Sg}RfzUf~Ug~Wj|Ui|WezYgzZdzZd~Ze}Yfz\lz]l}]f~\0jqQcrPotPfuQkqRjqTkqSguSktRcrWiqWhqVbrUntUduVeuWotWotXfuYfuZlt[dt[nsZ`s[`r[jqZjqYcrXnsYnsZkq\ar]mt]gu\'bc#Aee"_bc#Am`"_#ft#Aiv"_ft#Aar"_-al#Adn"_al#Ali"_4d}#@g"]d}#@c{"]dw#@ky"]dw#@cu"]5`c#@ge"]`c#@o`"]#je#Amg"_je#Aic"_.ip#Alr"_ip#Ahn"_#bm#Aeo"_bm#Amj"_$nk#Aan"_nk#Aii"_b`#Aeb"_b`#A#m}"_fz#Ai|"_fz#Aax"_$bf#Aeh"_bf#Amc"_&nr#Aau"_nr#Aip"_$nq#Aat"_nq#Aio"_&ny#Aa|"_ny#Aiw"_+nt#Aaw"_nt#Air"_)fi#Aek"_fi#Aag"_(fq#Ais"_fq#Aao"_'nl#Aao"_nl#Amj"_(f#A)ia"_(f#Aa}"_*b}#Ae"_b}#Amz"_)jq#Ams"_jq#Aio"_+fk#Aim"_fk#Aai"_.j|#Am~"_j|#Aez"_,fm#Aeo"_fm#Aak"_+n}#A,a`"_+n}#Ai{"_.ji#Aik"_ji#Aeg"_2bu#Aew"_bu#Aas"_0ns#Amu"_ns#Aiq"_3bc#Aee"_bc#Am`"_jl#Amn"_jl#Aij"_&ba#AbaAba&T%b"B&bcB%cD&ccD%cE&ccEbcGhbHlaHfaGl`H%lHbGcE&gaEfaGacI`cK%aI`KaJ&acJ`cL%`LaN'bc#Acc&Pg`"DkcDfdEddFhcGd`GcbD`bGedHddJe`Hd`Je`IedIddKd`Ke`M#ft#Agt%MgzMgz._*oe_ne/K#br!_bv_cr"AcvAdsClrCbrCbrDlrElsEftDftCltChuCbvCbvDhuEbvFavHbrFarHarGavGbrIarKarJavJbuI-`l&Wal#Ami![mm[ni]nm]nm^om"@nm!_ni_oi"AomAnmC`mDhlDblChkDdjDniCoiAclAblCdjEoiEoiFejGamGomFomE`mEdjEnmHfjHliIliJfjJnmJomKlmNomLoiL4dw#@dw2H/laHoa3L4by!]by_by^bu^cu"@cy@ayBdxClwCewBlvChuCauBcu@gw@ewBhuDbuDcuEiuFexFcyEbyDdxDhuDayGiuGcuG`uIjuIbyIbyJcyLcyKcuK5`c#@bc2D,nyDny3M5m`"@md@n`BndBo`CodCccDodEo`EldGmdIldHl`HmdJm`Jn`L4d}#@f}/K3feK4a{"@m~@b{Bn~Bo~Co~Eo~Dc{D`|Gh{Gb{Gb{Hi{Ii|If}Hf}Gl}Gd~Gn~Gn~He~Im~Ja{Jb{L#je#Aie7N&m`No`9])ol]ml:L#hc"DdgDheEegFicFegGfgIfgHjcHfgJjcJkcL.ip#AmpAmp&Qjn!]jr]jn_jr_kr"@knAhrC`oDjnDknEaoFmqFkrEjrDlqD`oDjrGirIjnGinIjnHjrHirJinJjnL#bm#Abm%CjhCih7K&eeKge9Z,c{Zb{:F#lj!^hn^mj"@in@nkAfkAljBljCgkCklC`mC`mBjmAbnAhnBhnCcnChnEknFljEojFojEknEnjHokGkmGjnHinIhmJlkJmjInjH$nk#AnkTbfTcf+E.csEcs[$nj"BfjBhiCiiDgjDgkDmkDlkCflBbmBhmCimDcmDhmFkmGhiFkiGhiGhmG`kKckHgmIgmIjmJjiJb`#Ab`+N)n}No}[#o}!^$oa^#l}"A$laA#aBi~Bo}Bo}Ci~DiD$c`Cc`Bi`BeaBoaBoaCeaDoaEnaG#o}En}Gn}F$naF#gJfH$iaIiaImaJ#m}Jfz#Afz%Cb}Cb}7B&bnBcn9T,kwTjw:F#by"BjxB`xCaxDkxDkyDezDdzCnzBf{Bl{Cm{Dg{Dl{Fo{G`xFcxG`xGl{GaxIcxJ`xJl{Ja{I$bf#AcfHccH`c+J+`rJcr[$oc"AkgAlcDhgDlcElfEhgFjgFmfGmcGheEieGkgHigJocHmcJncIjgIjgKncKocM&nr#Anr&Taq"@gp!_gp^`q^ls^gt^gt_ms"@cqCdpCdpBbqAnsAdtBdtCosCdtEgtFdpEgpFgpEgtEkqGcqGepHfpI`qJ`rJjrIirHgsGosGetHftIlsJdtKdpKepM$nq#Amq$CaiCai+A.mxAox[$ko!^gs^ho"AdsAipBapBkoBkoCapDeqDoqCoqBerBmrBgsBgsCmrDgsEfsGkoEjoGjoFfsFfrHnrHdsIesJorJgrJbpHjoHkoJ&ny#Aoy%PgPg&Pjw!]j{]jw_j{_k{"@kw@hwCaxFkwEjwD`xDlzDj{Dk{EmzFaxGkwGhwIbxInzIh{Ik{GmzGaxGj{JjwJkwL+my&Qny$SntSnt#Alr"AhvAmrCivCmrDivDhvFbvFjuFltFmtDntEnrForGouGjvHhvIluJlrJgtGdtJhvKlrKmrM)an&Qbn$JfiJfi#Alg"AhkAmgCikCmgDikDhkFbkFfhFlgFmgDohGghGmgHmgIdhJdiJajIajHkjGckGikHikI`kJhkKlgKmgM(eq&Sfq#Aoo"AgoAmnBnnCdoDdpDbqCaqBkqAcrAirBjrC`rDjrEhrGnnElnGmnFirFiqHarHkrHkrIarJiqJeoHmnHmnJ'nl#Anl%CjfCkf&Plk"AdkAnjAojBekCelColBnlAhmA`nAjnAknBanCknDinFojDmjFnjEjnEbnGhnHhnIbnIjmIllIflIfkIljIljHfkGllHllI(e&Qf#Ah}!^)da^(i}"@)ea@(j~Ab~Ah}Bh}Cc~CcChChB)f`An`AdaBdaCo`CdaEgaF(h}Ek}Fk}E)gaEo`GeaHfaIl`Jd`J(jI`J`~Jj}Ii}Hc~GiHjI*e}&Sf}#Ab}Ahz"Dd~Dg~Em}Fe}Fk|Eh|Dh|EizFizGe~Gd~In}If}Ih|Ib|Ib{IhzIizGi|Gh|If~JjzJkzL)iq&Qjq#A`o"D`sDcsEerFmqFgqEmpFioFcoE`oDdqDgqEbsGasIboGaoIboHbsHasJaoJboL+ek&Qfk#AfkA`m"A`iAaiCniF`iF`iEmiDilD`mE`mFjlFoiGaiHaiIliJhlJamIamHklGoiG`mK`iKaiM.j|#Ai|$CitCit&Qdz"Dd~Dh|Ee~FezFezGe~Gd~In}Ib}Ih|Ii|Gj|HfzIf~JfzJgzL,fm#Aem$\bl"BjkB`kCakDkkDklDemDdmCnmBfnBlnCmnDgnDlnFonG`kFckG`kGlnGckIclHomHonImnJlmK`lKakJckI+i}&Qj}#An}Ah{"AdAi{CeCi{DeDdFn~Ff~Fl}Fm}Dn}Ej{Fk{GgGeIl~Jd~Jm}Id}J`|Ji{Ik{Go}Gm}IdKh{Ki{M.ji#Aii&BamBamQdg"D`kDckEijFmgFggEdgDehGmgGggGdgIngInhIhiIkiGajGijGckG`kIjjIbkJfgJggL2cu&Tbu#Abs!ZnvZcs\ov\ov]lv"@ov!^cs^`s"A`vAlvBnvBavCasChtAitCisD`sE`sFjsFfvFlvFlvEevDisDovGksGasHasIhsJlvJlvKmvMlvL`sL0ms&Qns#Ahq"DduDguEmtFetFosElsDlsEiqFiqGitGeuHguHjtIjqIasGbsIfuJjqJkqL3ai&Qai#VacVbcAod!\od^od]o`]l`"@`d@od@mdAadBm`Bhb@ibBiaCo`Cl`EjaEfdEldEodCedCiaCndFjaFm`Gm`HkaHodHldJldLldKl`Kil&Qjl#Ajj!ZfnZkj\gn\`k"@jj!_ij^ck]om]en^fn_lm"@akCkjBjjA`kAlmAfnAgnBmmCgnDenFkjDijFjjEfnEjkGbkGhjHhjIbkIblIhlIhlHfmGnmGdnHdnInmIgnJkjJhjMee&Qfe$J-fz#Yez[`|]l}]e[fYl}X`|XfzY3jfUhfWchXoiXhkWjkUoiSchSjfU2irQhrSgtTcvThwSiwQcvOgtOirQ0fd:Fed9\5a`\a`#R2auR3aiV`iV4dzVgz/B,gjBfjK-c}&Tb}#Zn|Z0o{3Ln{E4ftEft#Z/f~Zf~Z+fkZnhYmh[dj]`l]mm[nmY`lXdjXnhY.bz$BazDo{Eg}EaDbBg}@o{@bzBgn#]fn_ap$AiqAfs#_gs]iq\ap\gn]op^4kq^iq2X.a~Xc~3Li|$Ci|C4inCkn2\,g}\f}3M0dq$FgqGmrIitIgvGdvFitDmrDdqFosF4kkFhk3J0ddJgdL)cn$JbnJ4jhJhh.N%hsNjs/K0bd$N`dPkeQggQ`iPbiNggLkeLbdN+mhNohOfjQblQomOmmNblLfjLmhN)kkIjkKamMmnMjpKkpImnHamHkkI3obInbKhdM`fMngKogI`fHhdHobI%j}&Th}$O+dkO0if&Qif$O+i}O4ieOje5V3feVee\+b{$N`{Po|Qg~Q,``Pb`N+g~Lo|Lb{N3ia0BkaNoyNoy$W&kvWkv&T3`c0ClbCebCdbDnbDjcDlcDmcCddChdCaeC`eDjdDebEaeEaeFkdFgdFmcFkcFobFebFebEmcEmcFkdHbeHceGjdGnbGgbGfbHobHkcHncHocGjcGjdI`eJceJhdKddKocJhcKlbKgbJdbJnbIjcIlcJfdIjdIlcJocJ+ny$S4nbSlb2Q,``Qc`3L1jm-G0nbGob*C*ceCbe$S%jrSkr&V+gw$RfwT`yVlzVf|Tg|RlzQ`yQgwR2ox&Tmx$\)ac\ac&Qac$\$mk\nk5J*n~Jo~6@.k`&Ti`$\)j`[h`]cb^oc^he]je[ocYcbYj`[+hg(_igNoiTkiTaiU`iViiVejVhjVijUckTgkTmkUlkVekV`iWlkWlkXfkXbkXhjXfjXjiX`iX`iWhjWhjXbiYbiZ`iZlkZfkYak[ek[nk[mk\gk\ck\ii[ai[ci\`j_bj]hk^hk^nk^bi^&l|%Po|Qi~S'a`SoaQlaPa`N&i~Nl|P+ir&Qjr%I2j|Ik|&T+mnQon%C(gqC+ac&Scc%@3o@n4D2beD*g{6@d{5O$lnOon$_'cc_-b~[`~]o^.ka^`c]bc[kaY-oYb~['h`_k`%@abBmcBke@he$_mc]ab]h`_-ko_jo%AaqCmrCjtAkt$_mr^aq^ko_`r&Wcr%@+c}+[`}*Q$lqQnq%C'jfC+ju+\ju*U$ntUlt%H)hqH(onBnnDipFarFnsDosBarAipAonB'cdBbdDleFhgFbiDciBhgAleAcdB.gd&Tdd%E/`dEbd-D(jfD&ml%GolHfnJbpJoqHmqGbpEfnEmlGbo&T`o%HdoH)aoGcoHnpJjrJctHatGjrEnpEaoG0jn/Kin.E$iwEkw%P&caP(o|Km|Mh~O)``OmaMoaK``J(h~Jo|K,njHmjJhlLdnLmoJnoHdnGhlGnjHfmIfm.R'jb3K$jzKjz%L(fL*mzLlzNg|Oc~OlNmLc~Jg|JmzLe}M3m|Mn|2T'j{Ti{5\(ep\jd+\idW'azWcz%P(gqP2`j&Wcj%PgjP)if&Qkf%P*gbPeb*HmvHmv0J+ecJecBieBaeBndBmdCceCoeCefCffBifBagBfgBegCcgCndDfgDfgE`gFhfFffEleF`eFndEndDffDffEegHggFgfFgfGmeHaeHodGldGceFkeFkfHcgHegIdgJagJifJceHodHmdJ&g%P'gwPfw/K(jaK3ep&Qgp%P*gbP%h~Pk~Q&e`SabSkcQhcPabNe`N%h~P(onOnnQipSarSnsQosOarNipNonO)lPoQ*eaSacSodQldPacNeaN)lP2lgPogQiiSakSolQllPakNiiNlgP(h{)Pi{*@)a@e&F*iqFjqX(`~)Sl}Si}Sh}Tn}Tj~Tl~Tm~SdShS)a`S``T(jTi}U)a`Ua`V(jVfVm~Vj~Vn}Vi}Vi}Um~Um~Vj}Wk}Xh}X)``X(jWeYiY)c`Yb`Z(kZgZm}Yi}Yk}Zk}[k}\i}\)a`\(k[0el&Qdl%^(ntTltVgvWcxWlyVnyTcxRgvRntTew&Sew%U/ey&Qey%U#etUet4J(ayJby3^f{4AnzAkzAjzBlzCh{Cb|Bc|Af|An|Ac}Ab}Bl|CkzCc}Cc}Dl|Ed|Ec|Dh{ElzEkzDkzCc|Cc|Do|Ea}F`}Gm|Ge|G`|Gi{GmzGhzGizFozEa|F`|Gf{Id{Hn|Hn|Ha}IizI)eu&Qeu%UiuU.ax&Qcx%Y#gqYfq7E'ndEld6NdfV`fVieVheWbfWjfW`gWagVdgVlgVahV`hWngWieXahXahYogYggYagYkfYcfYieYieXagXagYog[bh[chZngZbfZkeZje[cf[kf[bg[cgZjfZfg\ng\`h]ch]lg^dg^bf\je\he^)bs%T`sVktWgvW`xVbxTgvRktRbsT0iy&Qhy%^#hn^jn3E0bhEchL/a&QbB1bfBbf*UnwUmw0M2ikMhk/]om0CkmC`mDcmDimEanEknDhnDonCgoChoDkoDeoE`mFhoFhoGfoGnnGhnGbnGjmG`mG`mFhnFhnGbnIanHkoHkoHioIamIgoKjoKkoJeoJimJcmJbmKkmKcnKjnKknJanJ.ii&B,apB`p+S-`fScf[0mi%]li_jk&@fm@ln%_mn]fm[jk[mi],ea&QfaB#jkBik7H&iiHki9W(c~Wa~:L.bg&AagCkhDgjDalCblAgj%_kh_bg&A2ddWfdB1biB`i*Q`|Q`|,_3hg_igVniUfiUciUbiVdiW`jWjjVkjUnjUfkUkkUjkVdkWciWkkWkkXekYmjYkjXajYeiYciXciWkjWkjX`iZai[biZjkZ`kZbi\li\lj\jk\kk\mj]mi]ci\bi\di^bi^ai_fi_fk_ik_jk^dk^hj^bj^aj_jj_(je&XieF'etFet*@&aj@aj)PflRnkRhkSkkSlkThlTcmS`mSfmRjmR`nScnShmTkkTcnT`nVimVemV`mVilVmkVhkVkkTcmT`mVikWikXkkWcnWimWikYikZkkYcnYimYlk[jk[ik\nk\jm\an\bn[hm[`m[jl[il\bm\%`j&IcjJikLemLcoJ`oIemGikG`jI&ndTmdFivF-ow)Pmw*@/aa@aa&FaoFaoV-`z)ShySeySdyTjyTfzTlzTmzS`{Sh{Sm{Sl{Tj{TeyUm{Um{Vj{Vb{VmzVfzVjyVeyVeyUmzUmzVfyWgyXdyXl{Xf{Wa{Yi{Yo{Yn{Zk{Zc{ZiyYeyYgyZl{]n{[nz[oz\dz]hy]gy\dy\jy[bz[+kgPig*@,ej@ej&Fe}Fe}\+ni)RjiR`iSciShiTdjTkjShjSbkRfkRlkSokSdkTciTokTlkVekVakVhjVejViiV`iVciTkjThjVaiWaiXciWokWekW`kYdkYmkYlkZfkZbkZhiY`iYbiZek[nk[mk\gk\ck\ij\gj\ki\ai\bi[ii[jj[ij\0obPmb*@1ac@ac&FiuFiu\0`e)ShdSedSddTjdTfeTleTmeS`fShfSmfSlfTjfTedUmfUmfVjfVbfVmeVfeVjdVedVedUmeUmeVfdWgdXddXlfXffWafYifYofYnfZkfZcfZidYedYgdZnf[lf]hf]fd['lg0X#dwXgw&I'gjIgjP&btEatGkuHgwHayGbyEgwCkuCbtE%klVklIklI.hf'Bhf&Z-lzZlz'Bk{&Zo}Zo}[d}\`}\o|[h|\l{\k{[k{Zo|Zo|[f}\l}]n}]g}]c}]n|]k|]o{]j{]h{]n{\l|]n|].mpQmpVhkWdmWnmWomWemXikXhlWilXilZhlYnmYnmYomYkkY,nsM.f}Md}(T,lsTns&M.amQamVdoW`qWjqWkqWaqXeoXdpWepXdqYiqYkqYeqZmpZkpYepZioZgoYeoYhoYipYkpY`sWltWfuWguWmtXasX`tWatXhtYltYeuYguYmtZitZdsY`sYasZitQitVlvWdxWnxWoxWexXmvXhwWiwXlvYlvZnvYnxYdxYaxQaxVobZceZce[ld\dd\cd[lc\`c\ob[obZcdZcd[ob\ob]mb]ae]kd\-cZ.gaZga[`a\l`\g`[``\-h\c[cZ.g`Zg`[n`\ba\da]fa]ca]o`]-j\b\c]c}T`}Z.k`Th`ZgdTddZ-`lWal\.jy'@iy&VakVbk'@-mj&^kj]ij]lj]hl]ml]ol]il^cl^kl^ll_ol_hl'@`l@oj&^kj^hj'@mp&^kp]ip]lp]dr]ir]kr]er^hp_hp'@jp&_jr_dr_`rWar\.dr'HgrS-o}Sn}\lzBlzC`{Dk{Dc|Ej|Fd}Gf~GgG.``H`aHcbGbcGlcGjdFgeEoeDdfDhfChfB,e}&\d}'H`~B-d`Bd`Ca`C,e~C`~C`~B-ctBat&\mi\oi'B.bk@ckAdkClkDhlEdmFgnFeoGkpGlqHlrHctGeuGgvFdwF`xElxDdyCkyAjy@,d}Hg}S-krSjr\oiBoiCbjDijE`kFjkFdlGbmGomGhnHdoHgpGbqGlqGjrF`sFisEnsDctCctB`oHboNfvNev].h`Hj`N-bzNaz]kp[eq\br\or\hs]et]au]nu]jv]fw]fx]by]ny]iz]e{]d|]c}\n}\i~\c[kp(Akp'[c(Ac'[,fu_fw_lw(@nw@dwAduAfv'_dv(AkuAduBguBiuCiwCowBlwBkwAkuAlwDmwEduDeuEfuDnwDfvGdvFjwFjwFlwGduGhwHnwHmwIjwIbwImvIfvIjuIeuIfuHhuHnvHmvIawJiwJowJnwKkwKcwKiuJeuJguKguLguMeuMmwMgwL-nwPaxPexPexPixPhxPlxPoxOnxOmxOmxOlxOoxNoxNjxNjxNexNexNaxNmwNiwNiwNewNbwNbwNovNovNlvOmvOmvOnvOovOlvP`wPawPewPiwPiwPnwPkpAjpBipChpDopDcqEfqFiqGoqGfrHirI`sJjsJatKktKeuLouLivMcwMmwNcAbBaC`Do~Dk~Ef~Fa~Go}Gf}Ha}Ih|Jb|Ji{Kc{KezLoyLayMkxMmwNnwPowQixKjxLevKfvLkwKiwL.jy'_fy_ox_nx(@dyA`zAfz@gz'_nz_b{_k{_j{(@`{AoxAk{Ak{Ba{CmzCgzBazCeyCoxBoxAgzAgzBlxDmxEnxDj{DlzDlzF`{Fi{Fh{Gb{GnzGdyFlxFnxGb{Ii{Ij{H`{HdyHnxHmxIfyIbzIezIfzH`zH(ff&^jh^ih_ch_kf_ef_ff^)dpWlqWfrWgrWmqXepX`qWaqXlqY`rYerYgrYarZmqZhpYdpYepZhaWhcWhcXecXacXlbXebXmaXhaXhaWlbWlbX`cYdcYicYkcYecZacZlaYhaYiaZ(l}W)``W``X(iXeX`Xm~Xa~Xl}Xl}W`W`XhY)a`Yc`Y(iZeZcYm~Za~Zo}Ym}Y`~YaYcY'j}M)f{Mg{(Q'k}Qj}&M(eQeV)acQacV`eWdgWdgXagXmfXdfXafXieX`eX`eWdfWdfX`eY`eZbeYfgYlfYifQifVhlWdnWnnWonWenXilXhmWimXdnYmnYonYenZanZomYimZmlZklYilYllYmmYomYanQanV(eqSfqX)lsWhuWbvWcvWiuXmsXltWmtXlsYlsZnsYbvYhuYiqQiqVeuQeuV(bpZmoZnoYapYmqYbrYarZnqZdq[lq[br[`r\mq\eq\`p[lo[mo\ewSfwXbvZmuZnuYavYiwYnwYmwZjwZmu[mu\ou[ow[iw[)nh^mhV(a}Vb}^)jw^iwVmkVnk^(dt'^dtXao&_eo'@ioAepBaqCcrCasDetDeuDkvCiwCexBmxAey@ey&_ey_fyXboXao_jeXie'Db}&^g}_h}'Ad~BdC)g`CiaDacDedDkeChfChgBdhAoh&_nh^nk^ok_dl'A`mB`nCcoCepDiqDasDgtCduCdvB`wAgw&_jw^(et'DdtK`zKbzYieDhePhvPkvX)acD`cK(l}Kn}Y)iqDhqPhaPkaX`c^lb_lb(@hbAdbB`bChaDgaDo`Eb`F(iGl~Hc~Hf}Ih|Jj{J)`c'^`cX(dtXfuXdvYewYfxYgyYkzYk{Yo|Yo}Yn~YmY)`aYbbX`cX'l~^(`a^ja^ha_ba_'n~_(``^b`_'e(@n~@m~AgA(caAiaAja@aa@'e@(jaBkaC'n~Bo~Cm~C(iaCbaDkaDjaE`aFl`Ff`E``F'dFn~Eo~DfD(g`Df`EcaFhaGkaG`aHl`Hg`G``H'dHo~Gl~GgF(d`Gg`Go`HcaHiaIhaJaaJm`J'gHo~Hm~Jm~Km~Lo~K(kaKaaKdt'^dt_et(@itAmtBeuCmuDevEmvFhwGcxGbyHmyIhzJj{Jk{Lo{Lb|Lf|Le|Li|Lh|Lo|Kn|Ki|Kh|Kg|Jg|Jb|Jn{Jj{Jf{Jb{Jc{JozJhzKizKjzKkzKhzLizLmzLb{Lb{Lg{Lk{Lk{Li{Nf|Gg|HbzGczHd{Hf{H)hw'^`w^mv^lv_bw_nw_dx_ex^hx^`y^ey^dy_by_mv(@ey@eyAcyAkxAexAowAcwAmvAmv@ex@exAnvBovCmvCeyCnxBjxDbyDgyDfyE`yFhxFbwDnvDlvFkxFcyFdyGgyG`yHhxHcwFovFlvH%bk&\fm\fm]cm]gk]bk]bk\jl^bm^gm^em_cm_kl_fk^bk^ck_&b`[%m[oZ&a`ZiaZoaZma[ja[ea\ia\na\ma]ja]fa]a`\%m\n]'kfPhfV&o}VkV'a`Wb`W&hXl}Xo~Vl~Xk~Yj~XlYlY'b`Y&n}Y%`fM'hoMko(S%cfS`f&M&gPdV'kaVgcVmcWncWdcXhaXkbVhbXfcXocXncYgcYccYnbYkbYoaYjaYkaXnaXobXnbYccP`cVohVkjVakWbkWhjXlhXoiVliXohXohYmhYakYkjXgeVofVegWfgWlfXdeXcfV`fXnfXbgXggXfgYcgYofYjeXfeXgeYgjPdjV%j}Tj}Yf|[a|[c|Ze|Zm}Zg~Ze~[n}[m}\f~\e~]n}]j}]e}]b}]f|]a|]b|\e|\f}\e}]&nrTnrYndTndYbaTbaYnc[ec[gcZmcZeeZkeZie[fe[fc\ec]gc\ke\be\imZmoZmo[jo[fo[mn[jn[bn[im[imZmnZmn[io\no\mo]jo]fo]mn]jn]bn]im]jm\an\nn\mn]boTboYjvTjvYeqZisZis[fs[nr[ir[fr[jq[eq[eqZirZir[mr\es\js\is]fs]nr]iq\eq\fq]auZewZew[nv[jv[ev[bv[fu[au[auZevZev[bu\au]cu\gw\nv\'mk'@lk&V&`}Va}'@%kl&Vkl[&nr'GmrNelNdl]a}@d}Bc~C`E'e`FlaGjcGfeG`gGihF`jEckChkBmk@&cgAbg&Y%f{Yg{'Abq&\fs\fs]or]gq]bq]bq\bq^bq_`q_ds_nr^krVkr[&ox'Anx&YbmYcm'A%jtBkt&[gj[fj'BfjBkjCckDkkEklFmmGnnGbpGeqGkrFgsEctDktCjtBg{Ah{Cb|Dn|En}FaG&j`GnaGecGjdFjeEffDlfCcgAcmA`mCjmDfnEjoFmpGbrGjsGmtGbvFfwEbxDhxCoxA%joGioS&mdSmd\baGaaNihNhh]ib(Ajb'['jdGidS&moSmo\jb[lc\md\cf\`g]dh]ei]ij]lk]ll]cn\eo\dp\fq[eq(Afq'[%hg_hi_cj_`j(@ji@jg@hh'_jh(@mgAkgAjgBogBkiBbjBcjAiiAmgAcjCcjDkgCkgDigDajDdhGfhEliFliFcjFkgFkiG`jHcjHiiIeiIohHihImgIkgHhgHogGlhHohHhiJajJ`jKjiKfiKlhKjhKngKhgKigJlgJmhJlhKeiLiiLbjLajMkiMgiMmgLigLkgM&`jPdjPhjPojOnjOakO`kOckNbkNmjNljNhjNgjMcjMoiMhiNdiNaiNbiNohNlhOaiObiOgiOhiPliP`jPibAnbBobCccDdcFlcGddHldIheJdfKcgKbhLaiMcjMeqAfqBcqCopDhpF`pGhoH`oIdnJhmKolKblLakMcjM`jPbjQojJljLkhJhhLmiKoiK'lk'_hk_bk_ak(@jk@bl@il@jl'_ll_dm_jm_im(@fm@akAimAjmBgmBolBjlBclBkkBbkBakAilAjlBckCckDakDimDcmCckEckFakFimFcmEjkG`kHckHhkIdmIkmHhmHfmGjlG`lHclHhlIckIkmIakKimK*fr&^ft^et_ct_kr_er_fr^+`|Wl}Wf~Wg~Wm}Xa|X`}Wa}Xh}Y`~Ye~Yg~Ya~Zi}Zd|Y`|Ya|ZdmWhoWhoXeoXaoXhnXenXmmXdmXdmWhnWhnX`oYdoYioYkoYeoZaoZlmYdmYemZliWlkWlkXikXekX`kXijXajXliXliW`kW`kXhkYmkYokYikZekZckYijZajZoiYmiY`jYakYckY*fiM,bgMcg(Q*giQfi&M+ekQekVmnQmnV`qWdsWdsXasXirXdrXarXeqX`qX`qWdrWdrX`qY`qZbqYfsYlrYirQirVdxW`zWjzWkzWazXexXdyWeyXdzYizYkzYezZazZkyYeyZmxZgxYexYlxYiyYkyYmyQmyV*e}Sf}X+lW,haWbbWcbWiaX+mX,l`Wm`X+lYlZnY,bbYhaY+i}Qi}V,eaQeaV*b|Zm{Zn{Ya|Yi}Yb~Ya~Zj}Zd}[h}[b~[`~\i}\e}\`|[l{[m{\+acSbcXbbZiaZjaYabYicYncYmcZjcZia[ia\ka[oc[ec[nt^mtVaiVbi^,jc^icV+iwVjw^``'^``X*a{&_a{'@d{Al{Bk|Bf}Cd~DaD+a`DaaD`bDbcCocBhdBldAee@ee&_ee_feX*b{Xa{_jqXiq'D+bi&^bi_gi'@cjAnjBikCklCmmDmnDapDcqCarCbsBosAgt@jt&_nt^jw^nw_cx'@kxAfyBezCg{Ce|Di}Dm~DoC,m`CnaBkbAcc@fc&_jc^+a`'D``K`fKbfY*iqDhqP+dbPgbXmnDlnKliKniYi}Dh}PdmPgmXln^ln_on_kn(@fnAbnBmmChmDcmDklEblFhkGckGfjHliIbiIdhJjgJln'^lnX``XbaXlaYmbYncYjdYkeYkfYkgYkhYgiYfjYfkYelY`mYbnXlnX*lj^ll^fm^dm_nl_nj_`l^bl_ek(@nj@mjAgkAcmAemAfm@am@ek@fmBgmCnjBojCmjCemCbmDgmDfmE`mFhlFflE`lFdkFnjEojDfkDglDflEcmFdmGgmG`mHhlHglG`lHdkHojGljGgkFdlGglGklHcmHemIdmJamJilJgkHojHmjJmjKmjLojKgmKmlK+``'^d`_d`(@k`@k`AcaBfaCjaDabEhbFgcFncGidH`eIneIlfJjgJkgLogLogLbhLfhLehLhhLhhLkhKjhKihKhhKdhKghJchJngJngJjgJfgJbgJofJofJhfKhfKifKffKgfKhfLhfLifLnfLnfLcgLggLkgLkgLigNfhGghHbfGcfHdgHfgH,hc'^`c^mb^lb_bc_nc_`d_ad^hd^ld^ee^de_nd_mb(@ee@eeAodAkdAadAocAccAmbAmb@ad@adAnbBobCmbCeeCndBjdDndDgeDfeEldFhdFbcDnbDlbFhcHkcFaeGaeGgeGobG2l~'Bl~&Z`sZ`s'Bos&ZouZou[hu\du\cu[ht\`t\os[osZcuZcu[ju\lu]nu]ku]gu]bu]kt]ct]ns]ls]bt\`u]bu]3aiQaiVlcWheWbfWcfWieXmcXldWmdXidZhdYneYneYcfYocY1blM3juMhu(T1`lTbl&M3eeQeeVhgWdiWniWoiWeiXigXhhWihXdiYmiYoiYeiZaiZohYihZmgZkgYigYlgYmhYohYdkWllWfmWgmWmlXekX`lWalXllY`mYemYgmYamZmlZhkYdkYekZilQilVlnWhpWbqWcqWipXmnXloWmoXlnYlnZnnYbqYhpYepQepV2c{Zg}Zg}[l|\h|\g|[`|\d{\c{[c{Zg|Zg|[c{\c{]a{]e}]o|\gwZkyZky[dy\lx\kx[dx\hw\gw[gwZkxZkx[nx\fy\hy]jy]gy]ox]jw\fw\gw]cuT`uZoxTlxZk|Th|ZddWed\3nq'@mq&VacVbc'@2ac&^ob]mb]`c]hd]ae]ce]id^gd^kd^`e_ce_hd'@dd@cc&^ob^lb'@ai&^kh]ih]`i]hj]mj]oj]ij^hh_hh'@jh&_nj_dj_`jWaj\3hj'HkjS2ouSnu\`sBcsBcsCjsDlsEgtEmtFkuFavGnvGkwGdxHdyHczGnzGi{Gg|Fm|Fg}El}Ef~Dk~Ck~Bl~B1iu&\hu'HdvBhxBhxCaxCivCdvCdvB2glBel&\ab\cb'B3bc@fcAfcBncCfdDmdEheFffF`gGbhGciG`jH`kHclGbmGlmGnnFhoFapEnpDfqCjqBnqAnq@1huHkuS2ojSnj\cbBbbCebDkbDnbEdcFjcFddGmdGkeGcfGlfHhgHghGohGiiG`jGnjF`kFjkEokDalDflCglBdgHfgNjnNin]lxHnxNfrNer]kh[di\mi\jj\ck\lk]el]am]nm]fn]bo]jo]fp]bq]jq]fr]as]is]dt]ot\ju\av\lv\gw[kh(Akh'[gw(Agw'[1jm_jo_`p(@bp@hoAhmAjn'_hn(AomAhmBkmBmmCioCcpB`pBkoAomA`pDapEhmDimEjmDbpDfnGdnFnoFnoF`pGhmGhoHbpHapIjoIfoImnIjnInmIimIjmHlmHnnHmnIeoJioJcpJbpKkoKgoKmmJimJkmKkmLkmMimMapMkoL2bpPapPepPepPipPipPlpPlpPcqOcqObqObqOaqOaqO`qOcqNcqNnpNnpNjpNipNepNepNapNapNmoNmoNioNioNfoNfoNboNcoNcoN`oOmnOmnOnnOboOcoOcoO`oPdoPeoPioPioPmoPmoPbpPkhAihBlhCohCmhD`iEfiEeiFkiFniG`jHkjHmjIckIikJclJelKolKemLomLdnMnnMkoMapNgwAewBdwCfwCawDcwDnvEhvFkvFevGcvGnuHduIbuIltJftJlsKjsK`sLirLcrLiqMbqMkpMapNbpPcpQmpKnpLinKjnLooKmoL3nq'_jq_cq_bq(@hqAdrAjr@kr'_nr_fs_ks_js(@dsAcqAksAksBesCmrCkrBerCiqCcqBcqAkrAkrB`qDaqEbqDjsD`sDdsFisFhsGfsGnrGhrGfrGjqG`qGaqFhqFirFhrGcqHlqHlrHksHhsInrInqI`qIcqH0l{&]m{ViqVhq]ljW`mW`mXmlXilX`lXmkXekXljXljW`lW`lXljYljZnjYbmYhlY/aQaVeyQeyVjgM0jMk(O/kgOjg&MaxXlwXmwW`xWhyWazW`zXiyXdyYhyYazYczYiyZeyZ`xYlwYmwZ0`eWdgWdgXmfXifXdfXafXeeX`eX`eWdfWdfXhfYlfYegYggYmfZifZdeY`eYaeZ/a~Xh}Xi}W`~WhWmWlXiXh}Yh}Zj}YnYdY0ifQifVelQelViyQiyVdrW`tWjtWktWatXerXdsWesXlsY`tYitYktYatZmsZhrYdrYerZmsQmsV`xWlyWfzWgzWmyXaxX`yWayX`xY`xZbxYfzYlyY/mo\mq\lq]jq]bp]lo]mo\aoV`o'B0da&]eaV/awV`w]0hn]inVedVdd]/h{'Va|Vn|Vk}V`~Wm~WiW0f`WbaWoaWkbWccWocWjdWfeWafWmfWhgWchVnhViiV`jV/`oBcoMk}Mk}V0dd&]gd]jd^md_ce_je'@dfAnfAkgAdhB`iBliBhjBgkAblAhlAfm@om&_an_fn^kn]hn]/`w]cw]fw^iw_cx_fx'@`yAjyAgzA`{Bl{Bh|Bd}Bc~An~AdA0b`@k`&_m`_ba^ga]da]hq]kq]nq^ar_gr_nr'@hsAbtAotAhuBdvB`wBlwBkxAfyAlyAjz@oz&_e{_j{^o{]l{]di'BgiHceHbeW/d|Bg|H0gaHfaWhvBkvMohMohV/k{[h{Vk{[j{\i{]h{^o{^n{_`|(@g|@j|Al|Bg}Bi}C`~Dj~Dl~EgEmF0k`F`aGjaGdbHmbH/`i'[`k[jk[hk\bk\bi\dj[fj\ii]ci]ai^ki^gk^ik^kk]ek]ii]kk_kk(@ci'_ci(@ai@ik@njAfkAkkAjkBdkCljCjiAbiA`iCojCgkChkDkkDekEmjEkiCciCaiEljFdkFikFhkGfkGnjGhiF`iFbiGaiHbiIciHkkHakH0cj'[`jVnb(JbcJbcJfcJicJicJhcJlcJocIocIncImcImcIlcIocHkcHjcHjcHfcHacHacHmbHibHibHfbHfbHbbHcbHoaHlaImaImaInaIoaIoaIlaJ`bJabJebJfbJjbJjbJnbJcj'[bj\aj]`j^oi^ni_hi(@gi@biAlhBghBahChgDbgDlfEgfEmeFgeFhdGbdGhcHmbHnbJlbLicEjcFeaEfaFkbEibFl{'[h{[b{[a{\j{\b|\i|\j|[l|[d}[j}[i}\f}\a{]i}]i}^g}^o|^i|^c|^k{^a{^a{]i|]i|^c{_c{(@a{@i}@c}'_n|(Af}Ak}Aj}Bd}Cl|Cj{Ab{A`{Cg}Ch}Dk}De}Em|Ek|Da|Ei{Ec{D`{Dk{Cc|Ch|Do|Cg}Ch|Dk|Dlb_lbLaeSidSgdSfdTkdTgeTneToeSafSifSofSnfTkfTfdUnfUofVhfW`fWoeVdeWhdWgdVfdUneUoeVddXddYfdXnfXdfXcfYkfYlfZofZif[af[kdYgdYed[hf\mf\lf]jf]bf]le]fe]jd]dd]ed\hd\de\me\`f\hf\me\le](i{^i{Nk}Tc}Tm|Ul|Va}Vm}V`~Va~Uk~To~TeUdVm~Vl|WdWdXn~Xj~X`~Xn}Xb}Xl|Xl|W`~W`~Xn|Yn|Zl|ZdZn~Yi~[m~[f[e\o~\k~\a}[m|[o|\j~]n~]g]f^l~_h~_b}]n|]l|_%oi+DniFekHamHnnFonDamCekCoiD(ie*PheRfgSbiShjRijPbiNfgNieP/j)LjMb}Lb}M`}MhMa}NiNc}OkOb}PjPkQ`Rl~Rg~Qf~Pe~Q`}Rc}RkRkSaTm~Tg~Sa~Te}Tc}Sc}Rg~Rg~S0daE`cEjcEkcEacFeaFdbEebFlb(_mb)DahD/i}D0lbMahDmbOacOacOecOdcOhcOhcOocNocNncNncNmcNlcNlcNocMocMncMjcMicMecMecM`cM`cMlbMhbMhbMebMebMabMbbMnaMoaMoaMlaNlaNmaNnaNnaNoaNoaN`bO`bOdbOebOibOibOmbOmbOobPkcHhcJgaHdaJhbIjbInjCjjCcjCbjDhjEdkEjkDkkCblCflColCnlDdlEcjEolEolFelGalGkkFekGijGcjFcjEkkEkkF`jHajIcjHolHdlH`lJdlJmlJllKflKblKhjJ`jJbjKmlLnlMflMajL(gxKgxLouKouLmuLexLnuMfxMluOdxOouOgxOdxQmwQiwQdwQgwOfwPmuQluRdxRdxSnwSjwSdwSnvSbvSluSluRdwRdwSazDm{Dg|Dd|En{EbzEa{Db{Ei{(^j{)C)n`C(jvCi{L)n`C(j{Nn{Nb|Na|Ne|Nh|Nh|Nk|Mn|Mm|Mh|Mh|Mk|Lf|Lb|Lb|Lm{Li{Le{Lf{Lb{LnzLozLhzMhzMizMjzMkzMhzNlzNmzNa{Nf{Nf{Nj{Nj{Nh{Pd|He|I`zHazIf{Hg{H)ncCfcCccCbcDdcE`dEfdDgdCndCbeCkeCjeD`eEccEkeEkeFaeGmdGgdFadGecGccFccEgdEgdF`cHacIccHkeH`eHldJ`eJieJheKbeKndKdcJ`cJbcKacLbcMccLkeLaeL-lw(_owQbzUjyUdyVgyVhyWdzWozVlzVb{Uj{Ul{Vo{Vh{WgyWo{Wo{Xi{Ya{YozXezYiyYgyXgyWozWozXdyZey[gyZo{Zd{Z`{\h{\m{\l{]j{]b{]hy\dy\fy]k{_m{_n{^i{^iy^fy^ey_ky_gz_mz_nz^ez^&bj^bjQelUmkUkkUjkVokVklVbmVcmUemUimUcnUbnVkmVjkWbnWcnXhmYdmYcmXhlYlkYkkXjkWbmWcmXhkZhk[jkZbnZhmZhk\hk]jk\bn\hm\ok]ik^hk_mk_im_`n_an^km]cm]il^hl_am_hk)@`n@jkAbnA2cp(Qap*Hi`Hj`1S1fsSgs3L2dr(TlqTjqTiqUnqUjrUasUbsTdsTlsTbtTatUnsUiqVatVatWosWgsWasWkrWoqWiqWiqVasVasWkqXkqYiqYatYksXnsZctZbt[ls\ds\bs[hr\lq\jq[kqZnqZcsZbs[iq]gr\gs\at]bt]es^er^jq]iq]+fd)LfdMjaLjaMhaMddMiaNedNkaOgdOjaPfdPgdQlcRhcRccQbcPacQhaRkaRgdRgdSmcTicTccSmbTabTkaSkaRccRccS`fElgEfhEghEmgFafF`gEagFhg(_ig)DilDebDhgMilDigOmgOmgOahOdhOdhOghNjhNjhNihNhhNhhNkhMfhMfhMehMahMlgMlgMhgMdgM`gMagMmfMnfMjfMkfMhfNdfNefNjfNjfNkfNlfOlfOagOagOegOigOigOkgPghHdhJcfH`fJdgIfgImnDinDbnDanEknEgoEioEjoDapDepDnpDmpEgpEbnFnpFnpGdpH`pHjoGdoHhnHbnGbnFjoFjoGcnH`nJbnInpIcpHcpJgpJlpKopKepLapLknJcnJanLgpLmpMlpNepNapNhoNeoNinN`nNanMknLioMhoN&lfLlfM`dL`dMbdLnfLcdMofMadOmfO`dPlfPlfQffQbfQheQhePkePbdQadRmfRmfSgfScfSieSgeSkdSadSadRieRieSjhDfjDljEmjEgjEkhEjiDkiEbj(^cj)CcoCodCbjLcoCcjNgjNgjNjjNnjNmjN`kNckMbkMbkMakMljMojLkjLfjLfjLbjLniLjiLgiLgiL`iMaiMnhMnhMohM`iNaiNfiNfiNkiNoiNcjNcjNajPljHmjIhhHihIniHliIcrCoqCdqDgqDmqEirEorDlrDgsCksClsDosDisEdqFlsFlsGisGesGlrGirGmqGdqGdqFlrFlrGeqHfqIgqHosHesHeqJfqKgqJosJesJmqLfqLeqMnqMjsMmsMnsLisLmrLjrLirMnrM-jtLjtMbrLbrM`rMhtMarNitNcrOktObrPjtPktQ`tRlsRgsQfsPesQ`rRcrRktRktSatTmsTgsSasTerTcrScrRgsRgsSdvE`xEjxEkxEaxFevFdwEewFlw(_mw)Da}DirDlwMa}DmwOaxOaxOexOhxOhxOoxNoxNnxNnxNmxNlxNlxNoxMnxMnxMixMixMexM`xM`xMlwMhwMhwMewMewMawMbwMnvMovMlvNlvNmvNnvNnvNovNcwN`wOdwOewOiwOiwOmwOmwOowPkxHhxJgvHdvJhwIjwImDiDbDaEkE.g`Ei`Ej`DaaDeaDnaDmaEgaE-bF.naFnaGdaH`aHj`Gd`H-hHbGbF.j`Fj`G-cH`JbI.naIgaHcaJgaJlaKoaKeaLaaL-kJcJaL.maNoaLk`Lh`Ne`N-iN`NaMkLoL$fl*KelM`nOhoOeqMfqKhoJ`nJflK*ce+[be*L2kh+[jh*L$nnL,jyLiy.X-maXna/K,bw*KawMlxOdzOa|Mb|KdzJlxJbwK*jbKibMddO`fOigMjgK`fJddJjbK(bh+\`h*Q*ka+[ja*]ja]$bxXaxZly\d{\a}Zb}Xd{WlyWbxX%no+\no*Y1gp+[fp*Y$jzY)cz+[bz*YjwXiwZdy\`{\i|Zj|X`{WdyWjwX%fmXemZ`o\lp\erZfrXlpW`oWfmX1kj+[jj*]$jw]3ia5\ia1Z/mZm+A.mxA)c*\b^*l`+@hb@bd*^cd\hb[l`[)c\$cu\bu^lv+@hx@bz*^cz\hx[lv[cu\&cq+[aqA.fv@dvBcxCoyCd{Bf{@oy*^cx^fv+@&jn@hnBcpCoqChsBjs@oq*^cp^jn+@%gl[glE+gyEfy\0cm[cmN/cw[cwJ4gzJ3gb[ebG2om[mmG4ihGkhF+ovDnvFixHazHn{Fo{DazCixCovD4`fFcfGmgIiiIckG`kFiiDmgD`fF*j/Kh+JhJ2mFlH3kaIgcIldHmdFgcDkaD2mF*a}I`}Kj~L+f`L`bKabIf`G*j~Ga}I&crMarOlsQhuQawOcwMhuLlsLcrMkt[jtN4lwJowKeyMa{Mo|Kl|Ja{HeyHlwJ(ok[nkN4gtN-clNcl[(giMeiO`kQhlQenOgnMhlL`kLgiM/cq[cqNgqN4nbU3bfUbf\l|R0`sRcs[kjMjjOelQanQjoOkoManLelLkjM/onMnnOepQarQnsOosMarLepLonM4oqMnqOisQeuQnvOovMeuLisLoqM(o`[m`S#a}S3ezQgzRb|Tn}TgReQn}Ob|OezQ#jzRhzTg|Uc~UhTjRc~Pg|PjzR(idWeuWgu,_/ol_nl/K+a}+V.iiVki3L4g`+Te`VlaXhcXeeVgeThcSlaSg`T+izUhzWc|Xo}XhWiUo}Sc|SizU%ks[jsWjsW&gm[fmW#fzW(bbVabXkcYgeYagXbgVgeTkcTbbV#owVnwXdyZ`{Zn|Xo|V`{UdyUowV,``2Q'lrQnr:@(jz@izL-fy/KfyF.jiF%mzLoz.I4`l+[bl\im^eo^bq\`q[eoYimY`l[/gy,Cfy+_ju,AfwAlwBnwBgwBkuBjvAkvBnoAnqAnqBkqBgqBbqBkpBcpBnoBnoAbqAbqBcq+[cq,@bo+_go_ho,@ap@fp@op@dqAhqAarAirAbsAfsAnsAftAntAfuAmuAavAhvA`wAgw@nw@ex@hx@ox+_fy_cw[cw,@coCbo+_gy,CeyDfyD`yEbyEcyEmxFnxFhxGixGgxG`xHbxHowHhwIfwIcwIlvJivJbvJouJhuKauKntKktK`tLcoCaoDboD`oEboEgoEeoFfoFhoGmoGooG`pHfpHkpHlpIbqIgqIhqJmqJbrJgrJlrKasKfsKosK`tLijEamEkjFcmFjjGbmGbmHllIdlIblHblGalHhjIglIolI`mJcmJmlKelKojIkjIijK`tNbtO`tNdtNdtNhtNhtNltNotMcuMbuMbuMauMeuMduMduMguLcuLbuLbuLauLmtLltLhtLhtLdtLdtL`tL`tLlsLlsLhsLhsLesLesLbsLbsLcsLcsL`sM`sMasMasMbsMbsMgsMgsMhsNhsNlsNlsN`tN`tNltImtJhrIirJnsIlsJi{Ea{EozEnzFc{Fo{Ff|Fg|Ei|Ea}Eg}Ef}Fc}FnzGf}Gf}H`}Ih|If|Hl{I`{InzHnzGf|Gf|Hi{Kk{Ia}Ja}Jg}JozJnzLh{Lh|Lf}Lg}Li|Mi{MozLnzL)fyAb{Ah{Bj{Bc{BgyBfzAgzB*caBn`Bl`BbaAjbA`cBbcBkbBfdAjfAjfBgfBodBfdBfdAce+[ce,@ka+[ka,@)b}AfAfBcBk~Bf~Bc~Bg}Bb}Bb}Af~Af~Bo}+[o},@cz+[cz,@*egKegLagMifNafOhePodPadQccQabRbaRb`R)bRm}Rc}Qa|Qc{PhzPmyOeyNayMmxLixKixKkx@*gg@egK`iLlkLaiMmkM`iNlkNmkOfkOjiOaiO`iNcjQajPkkPkkPnkQbiQc`Ta`Vc`Tc`Tg`Tj`Tj`Tn`Tm`Tm`T`aT`aTcaSbaSbaSaaSaaSl`Sl`So`Rk`Rj`Rf`Rb`Rb`R)nRjRjRgRgR`S`SaSaSn~Sn~So~S`T`TaTaTfTfTjTkToT*c`TjaOkaP)fOgP*h`Pj`P)duL`uLitLhtMauMmuM`vMavLhvLlvLawL`wMmvMhtN`wNawOnvOjvOavOnuObuOitOhtN`vNavOivPmvPcwPbwQovQkvQauPitPktQbuRhtSjtS`uTlvTbwS`wSnvRbvRluSnuS`vT&`kIck@ov@lvIcq+[cq,@gtBbtB`tBftAnuA`vBbvBouBkt+[kt,@gm+[gm,@fpAjrAjrBcrBoqBjqBgqBkpBfpBfpAjqAjqBjlAfnAlnBnnBgnBklBjmAkmBlvIovIkvJfvKnuL`uMktMisNnrNoqNcqNcpNboNenNkmMllMflLnkKgkJckI`kImxKe{KoxLg{LmxMe{Mf{NozNcyNnxNmxMnzOd{Pg{PlzQhzQczPlyQ`yQoxPlxPbyO`zPczP`qQbqR`qQ`qQdqQhqQkqPoqPnqPbrParP`rP`rPcrObrObrOmqOmqOhqOhqOdqOcqNcqNopNhpOhpOdpOepOapObpOnoOooOloPloPmoPbpPbpPgpPgpPhpQhpQlpQ`qQhrLirMdpLepMiqLkqLmgKegKbgKagLggLchLihLjhKmhKeiKjiKiiLgiLagMiiMjiNgiNohNjhNchNggNbgNagMihMjhNnhOfiOhiPkiPdiQlhQfgObgO`gQiiSkiQkhQhhSahSegS`gSagRggQogQ%ajEaj@ks+[ks,@gl+[gl,@ckBnjBljBbkAjlA`mBbmBklBbrAnsAdtBftBosBcrBbsAcsBno+\no,AenBipBipCfpCbpCioCfoCnnCenCenBioBioCaj@jj@gk@lkAhlAemAmmAjnAfoAnoAjpAfqAmqAirAdsAlsAkt@bu@mu@jeJbhJheL`hLkeLchLchMlgNhgNcgMcgLagMheNogNahO`hPmgPigP`gPmfPafPhePieOcfNagO`gPajE`jFbjFejGdjHjjHmjIckIekJhkKblKdlLnlLdmMnmMgnMmnNfoNooNmuEmu@muEluFnuFiuGhuHfuHauIotIitJdtKnsKhsLbsLhrMbrMkqMaqNjpNooNloQ`pQdpQhpQkpPopPnpPaqPaqP`qPcqObqOnpOmpOhpOhpOdpOcpNooNooNhoOdoOdoOaoOboOnnOonOlnPmnPmnPboPcoPgoPdoQhoQloQloQloQnoRhpLipMdnLenMioLkoLbxJjwJgwJfwKhwLdxLnxKoxJbyJjyJoyJnyKhyLgwLoyLoyMhyN`yNoxMdxNhwNgwMgwLoxLoxMcyNkyNmyOlyPiyPayPkwNgwNewPbxR`xQjyQjyQmyRewR(an@fm@kl@`lAekAjjAniAciAkhAogAcgAgfAkeAodAcdAfcAnbAabAdaAk`@b`@'e@(o`+[o`,@ok+[ok,@bkAfmAfmBcmBgkBbkBbkAb`AnaAdbBfbBoaBc`BbaAcaBbh+\bh,AngCegCggBmgBeiBkiBiiCfiCmcBmeBmeCjeCfeCaeCjdCbdCmcCmcBaeBaeCjd+\jd,AmoKerKooLgrLmoMerMfrNcrNkqNfqNeqMdqNooNlpQnpOdrPdrPgrPooP'dFe@(`nFan@`nFcnFnmGmmHhmIkmIfmJamKllLflLalMhkNfkNmjOgjOmiPciPihQchQdgRjfR'dFgFfGiHhIoI(b`Je`Kh`Ln`LeaMhaNbbNibOccOicPcdPmdQgeQ`fRjfRkfTofTcgTbgTfgTfgTigTigThgTogSogSngSmgSigShgShgSggRggRbgRbgRnfRjfRjfRffRbfRcfRoeRleSleSieSieSjeSkeSkeSheTmeTmeTneTbfTbfTgfTkfTkfTkfTifVbhOchPneOoeP`gPbgP'a|Ki{Kf{Ke{Lk{Lg|Lm|Ln|Ka}Ki}Kn}Km}Lk}Le{Mm}Mn}Nk}Nc}Nn|Ng|Nk{Nf{Ne{Mm|Mn|Nb}Oj}Ol}Po}Ph}Q`}Qj{Of{Od{Qk}Qm}Rl}Si}Sa}Sl|Se|Si{Sd{Se{Rk{Qg|Qm|Rc}Qk}Qm|Rl|S-gnCfn+_jj,AflAllBnlBglBkjBjkAkkBndAnfAnfBkfBgfBbfBkeBceBndBndAbfAbfBcf+[cf,@bd+_gd_ld,@ae@je@cf@hfAmfAegAngAfhAnhAfiAniAfjAmjAekAlkAgl@nl@am@hm@om+_fn_cl[cl,@cdCbd+_gn,CenDgnD`nEbnE`nFnmFomFimGgmGdmHbmHolHilIflIclIikJfkJckJhjKejKniKkiK`iLcdCadDcdD`dEbdEddFfdFkdFidGodG`eHfeHkeHmeIbfIgfIifJnfJggJhgKahKfhKohK`iL,iE-abE,kF-cbF,jG-bbGbbHlaIdaIbaHbaGaaH,hI-gaIoaI`bJcbJmaKeaKc`I,kIiK-`iNbiO`iNdiNdiNhiNliNoiMoiMcjMbjMajMejMdjMdjMgjLcjLbjLajLmiLmiLliLhiLdiLdiL`iL`iLlhLlhLhhLehLehLehLbhLchLchL`hM`hMahMahMbhMghMghMghMhhNlhNlhN`iN`iNliImiJhgIigJnhIlhJipEapEooEnoFcpFopFfqFgqEiqEarEgrEfrFcrFnoGfrGfrH`rIhqIfqHlpI`pInoHnoGfqGfqHcrIdrJgrJarKiqKgqJmpKapKooJloJcpIdqJgqJarMdrMerL`rL`pLmoLloMapMmpMdqMeqLlpL+mo@jp@cq@lqAirAbsAnsAktAguAcvAovAkwAgxAcyAkyAfzAb{Am{Ah|Ac}@n}@i~@c}+[c},@cr+[cr,@jpAnrAnrBgrBopBjpBjpAj{Af}Al}Bn}Bg}Bk{Bj|Ak|Bju+\ju,AjtCetCgtBitBavBgvBevCbvCmwBazBazCnyCfyCayCnxCbxCmwCmwBayBayCfy+\fy,AekKanKgkLcnLekManMbnNkmNgmNnlNmlMllNgkNdlQflOlmPlmPcnPgkPh~Fi~@loFmo@loFooFnoGapH`pIfpIipJhpKcqKeqLhqMbrMerNorNesOosOetPotPeuQouQivRbwRh~Fk~Ff~Ge~Hd~Ib~Im}Jh}Kg}Ka}Ll|Mf|Mm{Nk{Na{OkzOazPkyPayQgxQmwRbwRcwTgwTkwTjwTnwTnwTaxTaxT`xTgxSgxSfxSexSaxS`xS`xSowRowRjwRjwRfwRbwRbwRnvRjvRkvRgvRdvS`vSavSavSbvScvScvS`vTavTevTfvTjvTjvTovTcwTcwTcwTawVnwOowPjuOkuPlvPnvP,m`Ke`Kb`Ka`Lg`LcaLeaLfaKmaKabKjbKibLcbLa`MibMjbNcbNoaNfaNcaNg`Nb`Na`MeaMfaNbbOhbPkbP`bQlaQgaP`aQd`Qc`P``Pf`OdaPgaPa`Ro`QoaQibRkbRmaSm`Sc`Ra`R.c{Cb{+_jw,AbyAhyBjyBcyBkwBfxAgxBjqAnsAnsBgsBcsBnrBkrBoqBjqBjqAnrAnrBcs+[cs,@np+_cq_hq,@mq@fr@or@dsAhsAatAitAbuAjuAbvAjvAnvAewAmwAdxAlxAcy@jy@az@dz@oz+_b{_ox[ox,@opCnp+_c{,Ca{Dc{D`{Eb{ElzFmzFkzFhzGfzGczGazHnyHhyIeyIbyIlxJexJbxJowJdwKawKnvKgvK`vLopCmpDopDlpEbqE`qFaqFgqFhqGjqGoqGarHfrHhrImrIbsIdsJisJnsJctJhtKmtKfuKkuK`vLelEaoEglFcoFflGboGboHhnIdnInmHnmGmmHdlIgnIknI`oJcoJinKenKolIglIelK`vNbvO`vN`vNdvNdvNhvNkvMovMovMnvMbwMawMawM`wMcwLcwLbwLnvLmvLmvLhvLhvLdvLdvL`vL`vLluLluLhuLduLduLeuLauLbuLbuLotLotLltMmtMmtMbuMbuMcuMguMguMduNhuNluNluN`vNlvImvJhtIitJnuIluJe}Ea}Ek|Ej|Fc}Fo}Fb~Fc~Ee~Em~EcEbFo~Fj|GbGbHl~Id~Ib~Hl}I`}Ij|Hj|Gb~Gb~Ho~I`JcJm~Ke~Kc~Jm}Ka}Kk|Jh|Jc}I`~Jc~Jl~LaL`Mm~Me~M`~Mm}Ma}Mh|Mi|L`}Ll}La~Ld~Ll~La~L`~M3a`@n`@fa@oa@dbAmbAecAncAjdAceAkeAcfAofAdgBlgBghAciAkiAcjAjjAbkAmkAelAllAgm@nm@fn@mn@gm+[gm,@gb+[gb,@n`AbcAbcBobBgaBn`Bn`AblAjmA`nBbnBkmBclBnlAolBbf+\bf,AndCidCkdBmdBifBofBmfCjfCehBijBijCbjCniCiiCfiCjhCehCehBiiBiiCni+\ni,A2m{Ke~Ko{Lg~Lm{Me~Mf~Nc~Nk}Nf}Ne}Md}No{Nl|Qn|O`~P`~Pg~Po{P3lnFmn@``Fa`@``Ff`Fe`Gg`Ge`Hk`Hi`Il`Jn`J`aKfaKhaLnaL`bMfbMhbNnbNdcOicOcdOedPndPdeQieQbfQhfRagRjgRlnFnnFmnGonGmnHknHinIdnJbnJ`nKnmKhmLfmL`mMnlMhlNblNlkOikOckOijPfjPliQeiQbiQhhRahRjgRkgTkgTogTogTbhTbhTfhTehTehTihThhThhTkhSkhSjhSjhSihSihShhSdhSghRghRchRchRngRngRjgRjgRfgRfgRbgRcgRofRofRofRhfShfSifSifSjfSjfSkfSkfShfThfTifTifTmfTnfTnfTbgTcgTggTggTkgTkgTigVfhOghPbfOcfPdgPfgPaqKmpKfpKepLopLkqLmqLnqKerKirKnrKmrLkrLepMmrMnrNkrNgrNnqNkqNopNfpNepMmqMnqNgpOgpPepPmrPgrOepRbqQfrQmrRnrRdrS`qSfpRepRopSepTdpUmpUirUlrUmrTkrSoqSiqThqUmqU1krCjr+_nn,AjpA`qBbqBkpBonBnoAooBbiAfkAfkBojBkjBfjBcjBgiBbiBbiAfjAfjBkj+[kj,@fh+_kh_`i,@ei@ni@cj@kj@ljAekAmkAblAjlAbmAjmAnmAfnAnnAeoAioA`pAkp@op@fq@iq@`r@gr+_jr_gp[gp,@ghCfh+_kr,CirDjrDhrEirEgrEdrFfrFcrFmqGnqGhqHeqHfqH`qImpIjpIgpI`pJnoJgoJ`oKlnKinKbnKomKhmLghCehDfhDdhEihEkhEhhFnhFohFaiGbiGdiHiiHniHliIajIfjIkjIljJfkJkkJlkK`lKelKnlKcmKhmLmcEifEocFkfFncGjfGjfH`fIleIfeHfeGeeHlcIoeIcfIhfJkfJafKmeKgdIocImcKhmNjmOhmNhmNlmNlmN`nN`nNgnMgnMfnMfnMjnMinMinMhnMknLknLjnLfnLenLenLenL`nL`nLlmLlmLhmLhmLdmLdmL`mL`mLllLmlLilLilLjlLflLglLglLdlMelMelMflMjlMjlMklMolMllN`mN`mNdmNdmNhmN`nIanJ`lIalJfmIdmJmtEitEctEbtFktFcuFjuFkuEmuEevEkvEjvFgvFbtGjvGjvHdvIluIjuH`uIhtIbtHbtGjuGjuHauKcuIivJivJkvJctJauM`uLjvLjvLhvM`tM0guCfu+_jq,AfsAlsBnsBgsBkqBjrAkrBjkAnmAnmBkmBgmBnlBklBclBjkBjkAnlAnlBcm+[cm,@nj+_gk_hk,@al@fl@ol@`mAhmAanAinAnnAfoAnoAfpAnpAfqAiqAarAhrAlrAgs@ns@at@ht@ot+_fu_cs[cs,@ojCnj+_gu,CeuDbuD`uEauEcuEltFntFktFitGftGdtHatHnsHhsIesIbsIorIhrJfrJcrJlqKdqKaqKnpKgpK`pLojCmjDbkD`kEbkEckEekFfkFhkGikGokG`lHflHglHhlInlIcmIdmJmmJbnJgnJhnKaoKfoKooK`pLifEaiEkfFciFjfGbiGbiHlhIdhIbhHbhGahHhfIghIohI`iJciJmhKehKofIkfIifK`pNbpO`pN`pNdpNhpNhpNhpNopMopMbqMbqMbqMaqMaqM`qMcqLcqLbqLbqLaqLmpLmpLhpLhpLhpLdpL`pL`pLloLloLhoLhoLdoLeoLeoLaoLboLboLcoLcoL`oMaoMaoMboMboMboMgoMgoMdoNhoNhoNloNloN`pNlpImpJhnIinJnoIloJewEawEkvEjvFcwFowFbxFcxEixEmxEgyEfyFoxFjvGfyGfyHlxIhxIbxHlwI`wIjvHjvGbxGbxHiwKkwIayJayJgyJkvJhxLlxLeyLdyMmxMixM`wLhvLivM2krFcuFirHauHhrI`uI`uJntJbsJhrJhrIetKmtKbuKauLotLgtLasKirKkrLbhAjiA`jBbjBkiBchBnhAohBbmAfoAfoBcoBknBfnBcnBgmBbmBbmAfnAfnBom+[om,@kh+[kh,@jfGkf@op@npGkkNokNokNclNclNglNflNflNjlNilNilNhlNhlNolMolMnlMjlMilMilMilMhlMdlMglLglLclLclLokLokLkkLkkLgkLgkLckLckLojLljMljMijMijMijMjjMjjMkjMkjMhjNhjNijNijNnjNnjNnjNckNckNgkNgkNkkNkkNnpGlpHkpHipIgpIapJkoJdoKnnKgnKlmLemLnlLblLkkLbkLjjLmiLdiLohKfhK`hKkgJegJcgImfIkfHhfHjfGkkNikPbmJcmKnjJojK`lKalKccFobFdbGgbGmbHicHocGlcGgdFkdF`eGceGidHdbI`eI`eJjdJfdJlcJjcJnbJdbJdbIlcIlcJgcLecKodKodKaeLebLceNaeMmcMncNkcNobNfbNgbMmbMacM4`o+XcoYjp[fr[ctY`tXfrVjpV`oX3ni\liY4hqY3gm[4kn[&bq,Rbq/Kkr-McrMlqNoqNarOmrOgsNdsNksMosMdtNgtNmsOlqPdtPdtQnsQjsQdsQnrQbrQlqQlqPdsPdsQhsRlsRftRetSnsSjsS`rRlqRnqSgtUetTesTfsUorUcrUnqUoqTarTirT/bt,Obt/Kgv-JcvJiuKkuKavLmvLcwKawKgwJowJaxKcxKmwLhuM`xM`xNnwNfwN`wNnvNbvNhuNhuM`wM`wNkvPivOcxOcxOaxPiuPhuRfvQfwQ`xRaxRgwRgvRiuRhuR-bi,Obi/Kkj-JgjJmiKoiKejLakLgkKekKokJclJelKglKalLliMdlMdlNblNnkNdkNbkNfjNliNliMdkMdkNalOflOelPclPokPekPckPgjPmiPniOejOfkOekPclRflRglQblQfjQoiQniRgjRckRfkRgkQbkQ0bp,Obp-C3juCku4^)oa^ma:L0fr,OnqOhqPkqPlqQhrQcsP`sPfsOnsO`tPctPlsQkqQctQ`tSmsSesS`sSirSmqShqSkqQcsQ`sSjrUhrTnsTnsT`tUhqUesVmsVbtVatWosWgsWmqViqVkqW.bvObv/Kkw-JcwJmvKovKawLmwLcxKaxKkxJoxJeyKgyKmxLlvMdyMdyNnxNjxN`xNnwNbwNlvNlvM`xM`xNmxOfyOeyPoxPkxPaxPowPcwPmvPnvOawObxOaxPnxQgyQfyRoxRkxRbxRowRcwRnvRovQbwQnwQcxQjxQnxQcxQbxR2ik,Pjk/Kom-JkmJamKcmKimLanLknKinKonJgoJioKkoKeoL`mMhoMhoNfoNnnNhnNbnNjmN`mN`mMhnMhnNcnPanOkoOkoOioPamPkoRjoQjnQjnRcnRkmRbmRcmQjmQnmQ1jm,Ojm/Kjo-KfoKonKnnLdoM`pMfpLgpKnpKbqKkqKjqL`qMonMkqMkqNaqOmpOgpNapOeoOonNonMgpMgpNnoQloPfqPfqPhqQlnQnoSloRgqRgqRiqSmnS/jp/Kjp.R%noRno,Rcr-MoqMdqNgqNmqOirOorNlrNgsMksM`tNctNisOdqP`tP`tQjsQfsQlrQjrQnqQdqQdqPlrPlrQdsRhsRbtRatSjsSfsSlqRdqRfqSgrUerTlsUlsUbtUfqU(cdCadEleGhgGaiEciChgBleBcdC*a`,Vb`/Kgb-MoaMhaNkaNmaOibOccN`cNgcMkcM`dNcdNicOhaP`dP`dQjcQfcQ`cQjbQnaQhaQhaP`cP`cQdcRhcRbdRadSjcSfcSlaRhaRjaSmaTkaTjaUoaUkcUbdUcdTicTacTkbTjbUccU(if,Vjf/Koh-MkhM`hNchNihOeiOkiNhiNcjMgjMljNojNejO`hPljPljQfjQbjQhiQfiQjhQ`hQ`hPhiPhiQ`jRdjRnjRmjSfjSbjShhR`hRbhSejTojTnjUgjUcjUjiUgiUkhUbhUchTihTeiTkiTajTejTkiTjiU+aw,Vbw/Kdy-K`yKixKhxLbyLnyL`zLazKhzKlzKa{K`{LnzLixMa{Ma{NozNkzNazNoyNcyNixNixMazMazNmzOc{Ob{PozPkzPbzPoyPcyPjxPkxOayOczObzPhxRfyQjzQ`{Rb{RhzSdySjxRhxRec.EecEec/L1bk-FakHhlJdnJapHbpFdnEhlEbkF+n`.Dl`FgbGcdGleFneDcdBgbBn`D)fk/Kgk.I#khIkhI,ji:Fji5J3feJfe1P/baP`a.Z-`iZ1bf/K`f.N'opHnpJirLetLnuJouHetGirGopH(f{/Kg{.I)g|3Ld|2H'dsHgs.I%gxHfxJazLm{Lf}Jg}Hm{GazGgxH#`fIcfJmgLeiLckJ`kIeiGmgG`fI(oxHnxJezLa|Ln}Jo}Ha|GezGoxH0ox9W2osWls.N)cnQanSloUdqUasScsQdqPloPcnQ2eqMdqObsPjtPdvOevMjtKbsKeqM1icMhcOfePbgPhhOihMbgKfeKicM)jp/Kjp.R'nj/Kmj.W$mkW,ojQmjShlUdnUmoSooQdnPhlPojQ$fiVeiXckYolYenXfnVolTckTfiV-cn/AbnCioEeqEbsCcsAeq@io@cnA,jqKhq._-`i_+f|/Kf|.[#b}[-ifYhf[fh\bj\hk[ikYbjWfhWifY#jzZiz\d|^`~^i\jZ`~Yd|YjzZ-hf^kf_fh/AbjAkk._hk^bj\fh\hf^0jt/Kht._3`q_bq7E.flEdl6NjnWfnWomWnmXdnY`oYfoXgoWnoWbpWkpWjpX`pYomYkpYkpZap[mo[goZao[en[omZomYgoYgoZip]kp[go[do]ao]en]lm]mm\gn[kn[hp^jp_bp_lm^-kp3Lkp/B'fbCdbEcdFkeFdgEfgCkeAcdAfbC&hnCknDbpFnqFksDhsCnqAbpAhnC'ndKldD&`qD'mdD+agDbgK/ctE0obEob1J3oiJli5O1dsOfs:F,n~Fo~9T3kxTkx1M/cdMcd/E.cvEksDjsFauHmvHjxFkxDmvCauCksD/kqDjqFesHauHjvFkvDauCesCkqD.hsIksJbuLnvLkxJhxInvGbuGhsI'bzVn|V`zXl|XczXo|Xo|Ye|ZizZczYczX`|[d|[m|[l|\f|\b|\hz[`z[bz\(aeQmfQggQegRnfRbeRafQbfRa`QebQebRnaRjaReaRbaRf`Ra`Ra`QeaQeaRjaKjaPjfKjfPmhWnhP'j~Pi~W(nc^nc^bd^bd^fd^ed^id^hd^ld^od]od]nd]nd]md]ld]ld]kd\kd\fd\fd\bd\bd\nc\nc\jc\fc\fc\bc\bc\ob\ob\lb]hb]ib]jb]jb]kb]kb]lb^lb^mb^ac^bc^fc^fc^jc^nc^'i~Wh~Xn~XaYdZnZ(d`[n`[ga[`b\ib\ec\ad\md\de\cf[jf[dg[ngZ`hZehYjhXlhXmhWnc^lc0@ed/Zfd[ebZfb[kcZhc[bkVnjVgjVfjWljXdkXnkWokVblVjlVolVnlWhlXgjXolXolYilZalZokYekZmjZgjYgjXokXokYdj[ej\gj[ol[dl[dj]ej^gj]ol]dl]nl0@ll/_lk_lk0@fk@nj@dj@ej/_lj_`k_%j~Kj~G&bqG'ld4G&duGgu2@3cn@`n/GhaGiaL,jn4[in1ZiyZky/F-keFjeK.cgEagGhhIdjIalGclEdjDhhDcgE1niKliG0d}Gg}0T&cqT`q/]es0EmrEjrEirForFksFmsFnsEetEitEbuEauFktFjrGbuGbuHktHgtHnsHksHorHjrHjrGnsGnsHftIjtI`uJcuJhtKdtKnrIjrIhrKitM`uMauLktKorKirLhrMmrMisMlsMmsLksK2bi/F`iHojIglI`nHbnFglDojDbiFikGa~Gb~K%ewLfwG$jzGcxFbxHlyJd{Jb}Hc}Fd{ElyEcxF&knFjnH`pJlqJjsHksFlqE`pEknF(bvKbvGjfGcdFbdHleJhgJbiHciFhgEleEcdF&hmYhmZ`kY`kZbkYjmYckZkmZak\im\`k]hm]hm^fm^bm^hl^hl]kl]bk^ak_im_im0@fm@bm@il@fl@jk@ak@ak/_il_il0@io/QeqQoqQmqRfqRjoRipQjpRbqKbqPbvPnkPbqYbvPcq[cq[fq[jq[jq[mq[mq[mq[`r[crZcrZbrZbrZarZ`rZlqZoqYoqYjqYjqYfqYbqYbqYnpYjpYjpYfpYgpYcpY`pZ`pZmoZnoZnoZooZooZ`p[ap[ap[ep[fp[jp[jp[op[cq[cq[`q]lqUmqVhoUioVnpUlpVguXcuXhtYktYauZmuZcvY`vYkvXovXdwYgwYmvZht[dw[dw\nv\jv\`v\nu\bu\ht\ht[`v[`v\hv]lv]fw]ew^nv^jv^`u]ht]jt^ov0@fw@gw/_mv_au_kt_jt0@cu@ou@bv@cv/_mu_%dqParPjrPgsP`tQhtQeuQbvQjvQfwQbxQoxQfyQbzQnzQj{Qa|Ql|Qh}Qc~Pn~PiP&``P%j~Kj~PjsKjsParQetQetRbtRfrRarRarQa}Qm~QgQeRn~Rb}Ra~Qb~RewLewQavSluSnuR`vRhwRbxR`xSiwShyRh{Rh{Se{Sa{SlzSezSmyShyShyRlzRlzSmzLmzQ`m[ho[bm\jo\`m]ho]io^bo^nn^en^dn]gn]bm^om0@mm/_go_go_jo0@bm@&c`/U``P%gqUdqPgqUfqViqWkqWjqXmqYcrYbrZer[or[bs\ds]ns]at^kt^au_ku_mu0@kv@`wAjwA`xBmxB&c`/Ub`Va`W%oWnXiYkYfZa[o~[j~\`~]n}]e}^o|^i|_c|_i{0@c{@hzAnyAdyBmxBnxDnxDbyDayDeyDiyDhyDhyDoyCoyCnyCmyCmyClyClyCkyBkyBjyBfyBayBayBmxBmxBixBexBexBbxBbxBowBowBlwChwCiwCiwCjwCkwCowClwDlwDaxDaxDexDfxDjxDnxDnxDlxFiy/_jy0@ew/_fw0@kx/_ix0@&db/[la[ia[ha\na\jb\`c\ac[dc[lc[ad[`d\nc\ha]`d]ad^nc^fc^ac^jb^na^ia^ha]`c]ac^cd0@ad/_ac_bc0@kb@oa@ja@ka/_ma_eb_ha0BfbAfcA`dBbdBdcCdbCjaBhaB'jb/SibOadQmeQgfQefRneRbdRaeQbeRajQalQalRnkRjkRekRnjRfjRajRajQekQekRnjKnjPmlOjlOclOlkPekPnjPkjP`jQhiQaiQihQahQigQagQifQ`fQheQcePjdPedPlcPgcObcOibOndKndPnlSmlOjbShbTjbTobTmbUobUacVbcVdcWjcWocWmcXbdXddYidYbeYdeZieZneZgfZhf[ag[fg[og[nlSllTnlTolTmlUklUilVflVdlWblWokWikXfkX`kYmjYjjYdjZajZjiZgiZlh[ih[bh[og[lnUdqUnnVfqVmnWeqWeqXcqXkpXepXepWdpXonXjpYbqYgqYfqZ`q[hp[boYnnYln[og]mg_og]og]ch]gh]gh]jh]jh]jh]mh]lh]lh]oh\oh\nh\mh\mh\hh\hh\hh\gh[gh[ch[og[og[kg[kg[gg[gg[`g\`g\lf\mf\mf\nf\kf\kf\lf]lf]mf]nf]bg]bg]gg]gg]kg]kg]og]giXdiZcgX`gZehYghY&dU`Uj~Ui~VbVnV'a`Vb`Ud`Ul`UbaUaaVn`V&i~W'aaWaaXo`Xg`Xa`X&oXcXi~Xi~W'a`Wa`X`a[baYb`Yb`Z&l[`[j~Zk~YbYfY'l`]ca\`a\o`[&c[h~\k~\`]l]'c`\``\&o[-brVjtV`rXhtXcrXktXktYatZerZcrYcrXls[`t[it[ht\bt\ns\dr[`r[br\a}Qm~QcQaRn~Rb}Rm}Qn}RmwQazQazRnyRfyRayRnxRbxRmwRmwQayQayRfyKfyPj~Kj~P.i`Wj`P-fvPevWj{^j{^n{^n{^b|^b|^e|^e|^d|^h|^k|]k|]j|]j|]i|]i|]h|]h|]g|\g|\g|\b|\b|\n{\n{\j{\j{\f{\f{\b{\b{\nz\oz\kz\kz\hz]hz]ez]ez]fz]fz]gz]kz]hz^hz^iz^mz^nz^b{^b{^f{^f{^j{^evWgvWjvXlvYbwYewZkwZ`x[jx[cy[hy\ez\mz\j{\a|\m|\d}\o}[f~[l~[gZmZ.b`Yd`Yj`Xk`Wi`W-j{^h{0@e|/Zf|[azZbz[g{Zd{[.nbVjbVcbVbbWhbXdcXjcWkcVbdVfdVodVndWddXcbXodXodYedZadZkcYecZibZcbYcbXkcXkcYnd\ld[hc[hc\fc\jb\`b\ab[hb[lb[hb]bb]ab^jb^fd^md^nd]dd]hc]fc]ec^jc^*d}Ud}P+bgKbgP*jKjPj~Ra~Rc~Qi~Q+a`Qg`Qe`Rb`RieQegQkgQigRfgRjeRefQffRecLecQlaR`dR`dSmcSecS`cSmbSabSlaSlaR`cR`cS*d}Pl}Pe~Pn~PgPoP+d`Ql`QdaQmaQebQmbQecQmcQedQmdQdeQleQdfQofPggPngPehPlhP`iP*ayZi{Zcy[k{[by\j{\j{]g{]oz]jz]jz\hz]cy]f{^h{_k{_d{0@lz@kz/_`z0@dy@cy/_`y_fy^hz_kz_d}Uf}Uh}Vj}Vh}Wj}Wl}Xb~Xc~Xe~Yk~Ym~ZcZd[j[o[+a`\j`\l`]ea]ja]cb]db^mb^fc^`iU`iP`iUbiU`iVbiV`iWnhWlhXjhXkhXehYchYmgZkgZdg[bg[of[ef\bf\le]ee]be]kd]`d^mc^fc^gc0@gc@kc@oc@oc@bd@bd@ad@ed@dd@dd@gd/_gd_fd_fd_ed_ed_`d_`d_cd^oc^oc^jc^fc^fc^bc^bc^ob^ob^kb^hb_db_eb_eb_fb_fb_cb_gb_db0@db@eb@eb@jb@jb@ob@ob@cc@cc@gc@gc@ecBcd/[`d]oa[la]`c\bc\ekZakZjjZij[ck[ok[al[blZilZmlZfmZem[ol[jj\fm\fm]ol]kl]bl]ok]ck]jj]jj\bl\bl]dm0@fm/^bl^cl_lk0@`k@kj/_hj_bk^fk^kl0@ol@emAdmBmlBilBck@kj@ijB)bd/VjfV`dXhfXcdXkfXkfYefZedZcdYcdXle[df[if[hf\ff\ne\dd[`d[bd\aoQmpQgqQeqRnpRboRapQbpRajQalQalRnkRjkRekRnjRfjRajRajQekQekRfkKfkPjpKjpPmrWnrPjhPihWjm^nm^nm^bn^bn^en^en^in^hn^hn^kn]nn]nn]mn]in]hn]hn]kn\gn\fn\bn\bn\nm\nm\jm\jm\fm\fm\bm\bm\ol\ol\hl]hl]il]il]jl]jl]kl]hl^hl^ml^ml^am^bm^fm^fm^jm^jm^ihWhhXjhXmhYciYiiZcjZij[ck[hk\el\am\jm\en\ao\ho\gp[mp[gqZmqZcrYerYjrXlrXmrWjm^hm0@en/Zfn[alZbl[gmZdm[buVjtVgtVftWhtXduXnuWouVbvVjvVovVnvWhvXgtXovXovYivZavZouYeuZitZgtYgtXouXouYhv[mv[lv\jv\bv\lu\fu\jt\dt\et[ht[mu[lu\hv]nv]mv^jv^bv^mu^fu^jt^et^ft]ht]nu]mu^b`VjbV``XhbXc`XkbXkbYebZe`Zc`Yc`Xla[db[ib[hb\fb\na\d`[``[b`\(euQawQkwQiwRbwRfuRevQfvRizQm|Qm|Rf|Rb|Rm{Rj{RnzRizRizQm{Qm{Rf{Kf{PbvKbvPmsWnsPb~Pa~Wby^by^fy^jy^jy^my^my^my^`z^`z^cz]bz]bz]az]az]`z]`z]oy\oy\ny\jy\jy\fy\by\by\nx\nx\jx\jx\fx\gx\cx\`x]`x]ax]ax]nw]bx]cx]`x^`x^ax^ex^ex^jx^jx^nx^nx^by^a~W`~Xb~Xm}Yk}Ya}Zk|Za|[k{[`{\ez\my\by\ex\mw\`w\kv[mu[guZauZktYetYbtXlsXmsWby^`y0@iz/Zjz[exZfx[kyZhy[jpVfpVooVnoWdpX`qXfqWgqVjqVbrVgrVfrW`rXooXgrXgrYarZiqZgqYaqZepZooYooXgqXgqYlo[mo\oo[gr[lq[lo]mo^oo]gr]lq]np0@lp/_fr_fr_dr0@lo@*bh/SahOedQafQkfQifRbfRfdReeQfeR)i~Q*m`Qm`Rf`Rb`R)mRjRn~Ri~Ri~QmQmR*b`Kb`P)m}Ob~Ok~Ol~PePnP*c`Pk`P`aQhaQabQibQacQecQmcQddQldQgePoePbfPifP`gPggOngOahOneKneP)n}Sm}O*bhS`hTbhTchTmgUogUlgVjgVkgVegWbgWlfXmfXkfXdfYmeYkeYdeZaeZndZgdZ`d[ic[fc[cc[)n}Sl}Tn}To}Ta~Uc~U`~Vf~Vg~Vi~Wn~W`XeXgXhY*a`Yg`Yh`Zm`ZbaZkaZla[eb[jb[cc[)dyU`|UfyVb|VeyWa|Wa|Xk{Xg{XmzXmzWlzXgyXf{Yj{Yc|Yb|Zh{[d{[nyYfyYdy[*cc]ac_cc]cc]gc]gc]kc]jc]nc]nc]mc]ad]`d]`d]cd\bd\bd\ad\mc\lc\lc\kc[kc[gc[gc[cc[cc[ob[kb[kb[gb[gb[`b\`b\ab\ma\na\na\oa\la]la]ma]ab]bb]bb]fb]gb]kb]kb]ob]cc]kcXhcZkaXhaZmbYobYdjUliUjiUiiVniVjjVakVbkUdkUlkUblUalVnkViiWalWalXokXgkXakXkjXoiXiiXiiWakWakXnkYclYblZlk[dk[bkZhj[li[jiZkiYniYckYbkZgk[ok[`l\cl\lk]dk]oi[ki[hi],osXnsPbhPchXnmKnmPbiRmhRohQaiQijQckQakRjjRfjKfjPjqKjqPilQinQinRfnRbnRmmRfmRnlRilRilQmmQmmRapQmqQgrQerRnqRbpRaqQbqRchXbhYehZkhZnh[ai\ki\aj]oj]dk^al^nl^jm^fn^bo^mo^dp^cq]iq]gr\ir\bs[gsZisZnsYosXhc[df[jc\ff\hc]df]ef^ne^bd^ic^hc]me_gf_ff0@oe@ke@be@od@cd@jc@kc/_ad_ce_be0@om@mmBom@cn@gn@gn@kn@jn@jn@nn@mn@mn@`o@`o@co/_bo_bo_ao_mn_ln_ln_hn_kn^kn^gn^fn^bn^nm^nm^jm^km^gm^gm^`m_`m_`m_ml_ml_nl_nl_ol_ll0@ll@ml@am@bm@bm@fm@gm@km@km@om@om@kn/[hn]kl[hl]lm\nm\`v[hu[eu[du\ju\fv\lv\mv[`w[hw[mw[lw\jw\du]lw]mw^jw^bw^mv^fv^ju^eu^du]lv]mv^iw_ow_nw0@kw@cw@nv@gv@ku@fu@gu/_iu_ev_ov_aw_iw_ov_nv0@juAduBfuBhuChwCnwBlwBjwAnvAdvBfvBlvC+no/VfrVloXdrXooXgrXgrYarZapZooYooXhq[`r[er[dr\br\jq\`p[lo[no\mzQi|Qc}Qa}Rj|RnzRm{Qn{RiuQmwQmwRjwRfwRmvRjvRbvRiuRiuQmvQmvRbwKbwPf|Kf|Pi~Wj~PftPetWfy^jy^jy^ny^ny^az^az^ez^dz^dz^gz]gz]jz]jz]ez]ez]dz]dz]gz\cz\bz\ny\ny\jy\jy\fy\fy\by\nx\nx\nx\kx\kx\dx]dx]ex]ex]fx]fx]gx]gx]dx^dx^ix^ix^mx^nx^nx^by^fy^fy^etWgtWftXhtYotYauZkuZav[jv[`w\lw\ex\ay\iy\ez\lz\h{\b|[i|[c}Zi}Zo}Y`~Yf~Xk~Wi~Wfy^dy0@az/Zbz[mwZnw[cyZ`y[,n`Vf`Vc`Vb`Wd`X`aXfaWgaVnaVbbVkbVjbW`bXc`XkbXkbYabZmaZgaYaaZe`Zc`Yc`XgaXgaY`b[ib[hb\bb\na\da\ba\f`\``\a`[d`[ea[da\a`]b`^c`]kb]ab]-gkXfkP,jPkX-jeKjePj`Re`Rg`Qi`QabQkbQibRbbRnaKnaPbiKbiPadQafQafRneRjeReeRndRfdRadRadQeeQeeRigQeiQoiQmiRfiRjgRihQjhR,kXjYmZ-c`Zf`[m`\ca\ma]gb]`c^ic^fd^be^ne^jf^eg^`h^kh]ei]oi\ej\jj[ojZakZfkYgkX,`{[l}[b{\n}\`{]l}]m}^f}^j{^a{^`{]e}_o}_n}0@g}@c}@j|@g|@k{@b{@c{/_i{_k|_j|0@-ke@ieBke@ke@oe@oe@cf@bf@ff@ff@ef@if@hf@hf@kf/_jf_jf_if_if_df_df_df_cf^cf^oe^ne^je^je^fe^be^ce^od^od^ld_hd_hd_id_ed_fd_fd_gd_dd0@dd@id@id@jd@nd@nd@od@ce@ce@ge@ke@cf/[`f]cd[`d]de\fe\hm[`m[ml[ll\bm\nm\dn\en[hn[`o[eo[do\bo\ll]do]eo^bo^jn^en^nm^bm^ml^ll]dn]en^am_ol_nl0@cm@co@fo@go/_ao_en_om_nm0@gn@llBjmAjnAdoBfoBhnChmCnlBllB1ko/XjoPncPocXniKniPbeRidRkdQaeQifQofQmfRjfRbfKbfPjmKjmPehQijQijRfjRniRiiRfiRjhRehRehQiiQiiRalQmmQcnQanRnmRblRmlQnlRocXadY`dZgdZid[od[ae\ke\af]kf]dg^mg^jh^bi^ni^jj^bk^mk^dl^ol]im]cn\en\on[ao[goZhoZioYkoX0h[1`b[0j\1bb\0h]1`b]ab^na^0n^i^h]1ma_cb_bb0@oa@ga@ba@k`@0o@j@k/_m_1ca_ba0@oi@miBoi@oi@cj@cj@gj@fj@jj@jj@ij@mj@mj@lj@lj@oj/_oj_nj_nj_mj_mj_lj_hj_hj_kj^gj^gj^cj^bj^ni^ni^ji^ji^gi^gi^gi^ci^`i_lh_lh_mh_mh_nh_nh_kh_oh_lh0@lh@mh@mh@mh@bi@bi@fi@gi@gi@ki@ki@oi@kj/[hj]gh[dh]hi\ji\lq[hq[aq[`q\jq\fr\hr\ir[`s[ds[ms[ls\fs\`q]ls]ms^fs^bs^ir^fr^jq^aq^`q]hr]ir^bq_bq0@`q@ls@bs/_bq0AbqB`qBlsBbsAasCesCosCnsDgsDcsDiqCaqCcqD/gv/XfvPjjPkjXjpKjpPjkRekRgkQikQamQkmQimRbmRnlKnlPbtKbtPaoQaqQaqRnpRjpRepRnoRfoRaoRaoQepQepRirQetQotQmtRftRjrRisQjsRkjXjjYljZckZfk[hk\bl\hl]bm]lm^en^bo^no^jp^bq^nq^ir^`s^ns]dt]nt\du\ju[cvZ`vZfvYgvX`f[lh[bf\nh\`f]lh]mh^fh^jf^af^`f]eh_oh_nh0@gh@ch@jg@gg@kf@bf@cf/_if_kg_jg0@kp@ipBkp@kp@op@op@op@bq@bq@fq@eq@eq@hq@hq@hq@kq/_jq_jq_iq_iq_eq_dq_dq_cq^cq^op^op^np^jp^jp^fp^bp^cp^cp^oo^oo^ho_ho_io_eo_eo_fo_fo_go_do0@do@do@io@io@jo@no@no@cp@cp@cp@gp@kp@cq/[`q]co[`o]dp\fp\hx[`x[mw[lw\bx\nx\dy\ey[hy[`z[ez[dz\bz\lw]dz]ez^bz^jy^ey^nx^bx^mw^lw]dy]ey^ez_gz0@cz@mw/_dz0CfzAfyAfyBlxC`xCnwBlwBbxAjxA.hr/YhrZ`pY`pZbpYjrYcpZkrZap\ir\`p]hr]hr^fr^nq^hq^hq]kq]bp^ap_ir_ir0@fr@nq@iq@fq@jp@ap@ap/_iq_iq0@it/QevQovQmvRfvRjtRiuQjuRbvKbvPb{PnpPbvYb{Pcv[cv[fv[fv[jv[jv[mv[mv[mv[`w[`w[cwZcwZbwZbwZawZawZ`wZlvZovYovYkvYjvYfvYfvYbvYbvYnuYnuYjuYjuYguYguYcuY`uZ`uZauZmtZntZntZotZotZ`u[`u[au[au[eu[fu[ju[ju[nu[ou[cv[cv[`v]lvUmvVhtUitVnuUluVgzXczXhyYkyYazZmzZc{Y`{Yk{Xo{Xd|Yg|Ym{Zhy[d|[d|\n{\j{\`{\nz\bz\hy\hy[`{[`{\l{]f|]e|^n{^j{^a{^nz^bz^iy^jy]`z]b{]a{^e|_g|0@o{@iy/_0jvSivOasQmtQcuQauRntRbsRmsQnsRamQeoQeoRboRjnRenRbnRfmRamRamQenQenRjnKjnPelOjlOcmOdmPimPanPfnPonPcoPhoQloQepQmpQaqQiqQmqQerQmrQ`sQhsQosPgtPjtPauPeuPluPcvOfvOivOjtKjtPflSelOjvShvTivTkvThvUivUgvUdvVfvVcvV`vWnuWkuWhuXeuXcuXltYitYftYctYlsZisZfsZcsZlr[hr[ar[nq[kq[flSdlTelTklThlUilUklUllVnlVcmV`mWfmWgmWhmXmmXcnX`nYenYjnYonY`oZeoZnoZcpZdp[hp[mp[fq[kq[`hUhjUbhVjjVahWijWijXcjXoiXeiXeiWdiXchXniYbjYkjYjjZ`j[li[fhYbhY`h[kq]iq_kq]kq]oq]oq]cr]cr]fr]fr]fr]ir]ir]hr]hr]kr\kr\jr\jr\jr\ir\ir\dr\dr\dr\cr[cr[oq[oq[kq[kq[gq[gq[cq[cq[op[lp\lp\hp\ip\ip\jp\jp\fp\gp\gp\hp]hp]ip]ip]jp]np]np]op]cq]cq]gq]gq]kq]grXdrZcpX`pZeqYgqYlxUhxUbxUaxVjxVfyViyVjyU`zUdzUnzUmzVfzVaxWmzWmzXgzXczXiyXgyXkxXaxXaxWiyWiyXdz[nzZozYfzYjxYcxYbxZhx[dy[jyZkyYfyY`y]cy[iz\iz\oz\cx\3hgUhgP2b~Kb~P3feKfePndRidRkdQmdQifQofQmfRjfR2e}QaQkQiRbRf}Re~Qf~R3iaLiaQ`aR`cR`cSmbSibSdbSmaSeaS`aS`aRdbRdbShgPdgPmfPifPbfPnePgePcePhdQddQlcQicQacQmbQebQabQiaQeaQm`Qi`Qa`Q2mQdQ`Qh~Qg~Po}Pj}Pb}Pm|Pi|P`|Pl{P3eiZalZgi[cl[fi\bl\bl]kk]gk]nj]nj\lj]gi]jk^`l_cl_hk0@dk@oj/_hj0@li@gi/_di_ni^lj_oj_hgUjgUkgUigVfgVdgWegWggW`gXbgXofXlfYjfYgfYefZbfZoeZhe[fe[ce[`e\id\fd\cd\lc]ic]fc]cc]hb^eb^bb^ja^2l{Ul{Pl{Un{Uo{Um{Vn{V`|Wa|Wc|Wd|Xf|Xk|Xh|Yn|Yo|Ya}Zf}Zk}Zh}[n}[c~[d~\i~\n~\c\h]m]3b`]g`]h`^aa^fa^ja^ka0@oa@oa@cb@cb@gb@fb@fb@jb@ib@ib@ib@lb@lb@ob/_ob_ob_nb_nb_mb_ib_hb_hb_hb_gb^gb^gb^cb^cb^na^na^ja^ja^fa^ga^ga^ca^ca^ca^l`_l`_l`_i`_i`_j`_j`_k`_k`_k`_h`0@h`@i`@m`@m`@n`@ba@ba@ca@ga@ga@ga@ka@ka@ka@iaBcc/[`c]ca[`a]db\fb\2ixZaxZnwZmw[cx[ox[ey[fyZiyZazZfzZez[cz[nw\fz\fz]cz]ky]fy]ox]cx]nw]nw\fy\fy]`z0@gz/_dz_bz^bx^lw_ow_`x0@lx@gy/_dy_nx^cz0@ezAdzBazBiyBdyBmxBaxBlwBmwAcx@ox@eyAky@cz@eyAdyBdh/YdhZleYleZneYfhYoeZghZme\eh\le]dh]dh^ng^jg^dg^dg]gg]ne^me_eh_eh0@ng@jg@eg@nf@bf@me@me/_eg_eg0@aj/QmkQglQelRnkRbjRakQbkRjkKjkPnpPjfPjkYnpPkk[ok[nk[bl[bl[bl[fl[el[il[il[hl[hl[klZolZnlZnlZmlZilZilZhlZhlZklYglYglYblYblYblYnkYnkYjkYjkYfkYfkYbkYbkYojYojYojYljZhjZijZijZijZjjZjjZkjZkjZhj[hj[mj[mj[mj[nj[bk[bk[fk[fk[kk[kk[kk[hk]dlUelV`jUajVfkUdkVcpXkoXdoYgoYioZepZopYlpYcqXkqXlqYoqYiqZdo[lq[lq\jq\bq\lp\fp\jo\do\do[lp[lp\fp^dp]kq]kq]mq^eo^kq0@nq@oq/_iq_io_go_fo0@ko@gp@np@op/_ep_,nmKnmH*foHeo0JacJac/_le0@he@be@aeAjeAffAifAjf@`g@dg@ng@mgAfgAaeBmgBmgCggCcgCifCgfCkeCaeCaeBifBifCfgDogDngEdgF`gFjfEdfFheFbeEceDjeDkfDjfEcgFggFlgGogGegHagHkeFceFaeH-j~/Kh~J.`vJ'ee0WdeYbgZjhZdjYejWjhUbgUeeW)hm@km3Llo0YhoYboYaoZjoZfpZipZjpYlpYdqYjqYiqZfqZao[iq[iq\gq\op\ip\gp\ko\ao\ao[ip[ip\fq]kq]jq^dq_lp_jp^dp_ho_bo^co]jo]kp]jp^gq_hq1@kq@eqAmpAkp@epAioAco@`o@ko0_hp1@kp@'mg/_ng3Kei0EmhEjhEihFohFkiFajFbjEejEmjEbkEakFojFjhGbkGbkHojHgjHbjHkiHohHjhHjhGbjGbjH`kKbkIbjIcjJhiKlhKkhJhhJnhIfiImjM`kMakLojKohKihLhhMmhMiiM`jMajLkiKot/JmtLdvN`xNmyLoyJ`xIdvIotJe5FewFfw/K.`v]cv3LgoLhw0Y`wYnvYmvZbwZnwZaxZbxYhxYlxYfyYeyZnxZmv[ey[ey\ox\kx\ax\ow\cw\mv\mv[ax[ax\nx]gy]fy^lx_hx_bx^lw_`w_nv^ov]bw]cx]bx^gy_ey1AmxAov0_(oc3Llc0@leYheYbeYaeZjeZffZifZjfY`gYdgYngYmgZfgZae[mg[mg\gg\cg\if\gf\ke\ae\ae[if[if\ce]ce^ae^mg^gg]ce_ce1@ae@mg@gg0_lg1CngAjfAjfBdfCheCbeBceAjeAneA+nt:Fnt@2np@op1]0kq]iq/_`s0YhrYfrYerZjrZfsZmsZnsY`tYhtYntYmtZjtZer[mt[mt\kt\ct\ms\gs\kr\er\er[ms[ms\ht_nt^ot]jt]jr]gr]fr^hr_ds_ns^os]fs]as1Acs0_it1@it@ot@gr@(`y0@by1SfgSgg3Lhz0Y`zYnyYmyZbzZnzZe{Zf{Yh{Y`|Yf|Ye|Zb|Zmy[e|[e|\c|\k{\e{\oz\cz\my\my[e{[e{\oy]oy^my^e|^o{]oy_oy1@my@e|@o{0_hz1CjzA`|B`|Bf|BnyB*ov3Lnv1P-jePie0BhgYdgYnfYmfZfgZbhZehZfhYlhY`iYjiYiiZbiZmf[ii[ii\ci\oh\eh\ch\gg\mf\mf[eh[eh\fg]of]nf^dg_`i_ji^ki]bi]fh]ch]bh^dh_mf1@kg0_oh_ii1@ji@mhAigAnf@mf@h{0@k{3Ll}0Yd}Yb}Ya}Zf}Zb~Zi~Zj~Yl~Y`YjYiZbZa}[i[i\c\o~\i~\c~\g}\a}\a}[i~[i~\h_j]j~]j~^`~_d}_b}^c}]f}]n}]g}_`}1@c}@e}AaAk@h@c0_k~_`~1@c~@i~A+dy0@dy3J*dbJgbL+h{0Y`{YnzYmzZb{Zn{Ze|Zf|Yh|Y`}Yf}Ye}Zb}Zmz[e}[e}\c}\k|\e|\o{\c{\mz\mz[e|[e|\b}]g}]f}^`}_h|_f|^l{_`{_nz^oz]b{]g|]f|^oz_lz1Anz@f}@o|0_*cs3Lcs1M,omMmm0BdoY`oYjnYinZboZnoZapZbpYhpYlpYfqYeqZnpZin[eq[eq\op\kp\ap\oo\co\in\in[ap[ap\np]gq]fq^lp_hp_bp^lo_`o_jn^kn]bo]no]cp]jp]np]cp]bp^co_hn1@kn@aoAmpAgq@dq@op0_cp_lo1@oo@apA1ko3Lko1GoiGmi0B`lYhkYfkYekZjkZflZmlZnlY`mYhmYnmYmmZjmZek[mm[mm\km\cm\ml\gl\kk\ek\ek[ml[ml\gk]gk^ek^mm^gm]gk_gk1@ek@mm@gm0_bm1AjmAomAnmBhmC`mCjkAfkAdkC/az5\`zRhpRip0BlqYhqYbqYaqZjqZfrZirZjrY`sYdsYnsYmsZfsZaq[ms[ms\gs\cs\ir\gr\kq\aq\aq[ir[ir\ns]ls_ds_bq]ms1Aos0_kr_kr1@erAiqAcq@`q@kq0_oq_%lxFnx3Egz0HoyHiyIhyJmyJizJlzJmzIg{Hk{Ha|I`|Ji{JhyK`|Ka|Lj{Lf{LmzLjzLnyLiyLhyKlzKmzLc|Na|MmzMnzNkzNoyNjyNkyMmyMezMhyPfzOf{O`|Pb|Pd{QdzQjyPhyP0k`3Lh`2H`t1]ct^mu2@iw@cy1^`y]iw[mu[`t]3oc6Vlc7A2hyAjy1V(bkVck3L3ge6VceVhdWkdWaeXmeXcfW`fWgfVofV`gWcgWmfXhdY`gY`gZnfZffZ`fZneZbeZhdZhdY`fY`fZid[jd\kd[cg[if[id]jd^hd^`g^if]mf_bg_ag7@of@gf@af@oe@ce@id@jd6_ae_bf_af7@1cl3Lbl1S*jzSkz3L0kvLkv1],h~2@j~A-e`CmaCjcAhc@ma1^e`^,h~2@-ca3Lca2@ca@)d|H-lwHnw3M4mt2GltIjvJbxJlyImyGbxEjvEmtG)myGlyIj{Jb}Jl~Im~Gb}Ej{EmyG3ai5\ciZ4gwZdw2H/a~G`~InJ0jaJ`cIacGjaE/nEa~G,bvL2nsL,cv3Lbv2L)ngLog3L,ks2KisM`uOlvOixMkxKlvJ`uJksK2gqKeqM`sOhtOevMgvKhtJ`sJgqK,bl4Zal\lm^ho^aq\bqZhoYlmYblZ+n}3Vm}Q,ggLdgRc`L``R+l~Tk~Sh~So~R,g`Rh`Sk`Sd`ToeRkgRahSbhShgTleTofRlfTjcMkcRbbSfdSfdTcdTocTfcTccTkbTbbTbbSfcSfcT+m}Qb~Qk~QcQdRlR,e`Ri`RbaRjaRnaRfbRobRgcRkcRcdRkdRbeRfeRneRffRifRagRhgRlgRghQohQbiQiiQ+fy[n{[dy]l{]gy]o{]o{^i{_a{_oz^oz]nz^ey_h{4@m{@l{Aj{Ab{AlzAjzAnyAdyAey@ly@mz@lzAn}3Vo}Vm}Wo}Wl}Xb~X`~Ya~Yg~Ye~Zj~Zl~[m~[c[d\j\o\,``]f`]k`]l`^ea^ja^oa^db_ib_nb_gc_hc4@ji3ViiQjiVkiViiWkiWdiXfiXdiYaiYciYmhZnhZhh[eh[ch[lg\ng\kg\dg]nf]kf]df^af^ne^ge^`e_md_fd_cd_hc4@icBmcBmcB`dB`dBddBddBgdAkdAkdAjdAjdAmdAmdAldAldAod@kd@jd@jd@jd@ed@ed@ed@`d@`d@lc@lc@hc@hc@dc@dc@`c@ac@ac@mb@nb@nb@jb@kb@kb@hbAhbAibAibAjbAjbAobAobAobA`cB`cB`cBdcBecBicBicBicBkcCdd3]ed^`b]ab^fc]dc^nk[fk[`k\ck\dk]`l]kl\hl\nl[fm[hm\km\dm]ck]km]km^em_ml_kl^al_ek_ck^ck]kl]kl^`k4@hm@bkAjmAimBkmCgmCakB`kEnkDnlDhmEimEolEokEakE`kE+jm3Mhm2]lm],by6Zby7E+j{Ej{4WbaWba2X*jzX,ez6[az[ny[my\bz\nz\a{\b{[i{[m{[f|[e|\n{\my]e|]f|^o{^k{^b{^oz^cz^ny^my]a{]b{^oy_oy7@my@e|@o{6_oy7AoyBmyBe|Bo{Af|Cd|El{EnyC+oi3Lni2Th}Pk}QbS,n`SkbQhbPn`N+bNh}P2cb3L`b2Q1hPkQ2faSnbSkdQhdPnbNfaN1hP*go3Leo2X&exXex<Z(mvZmvIbyNjxNdxOfxOhxPdyPnyOlyObzNjzNlzOnzOhzPgxPozPozQizRazRoyQeyRixRgxQgxPoyPoyQdxSexTgxSozSdzSfyVdyUjzUjzUlzVdxVexWfxXdxXlzXezW+gg2SfgU`iWljWflUglSljR`iRggS/c}3La}2X-`yXbyYiz[e|[b~Y`~Xe|VizV`yX*cxWaxYhy[d{[a}Yc}Wd{VhyVcxW/fzWdzYc|Zo}ZhYjWo}Uc|UfzW-k{X,ggXgg3Lmd2XodYjf[bh[oiYmiXbhVjfVmdXdgY+dqYgq3L,jcMhc2]$lk]%gv3DevFlwHhyHe{Fg{DhyClwCgvD#jz@hzBg|Cc~ChBj@c~2^g|^jz3@+dk2\gk]nl_jn_gp]dp\jnZnlZdk\$di\gi]bk_nl_gn]dn\nlZbkZdi\-bt3MatA#a}A4`cAbcBmdDifDbhB`hAif2_md_`c3AkeA/geAgeLciLbiE(muZnu[asZbs[csZouZ`s\lu\bs]nu]as^mu^nu_gu_cu_jt_it^ht_cs_bs4@nu@ouAduB`uBktAdtBhsBcsAbs@jt@ktAkw3RgyRmySnySdyThwTkxRhxTcyL`yR`~RlsRcyZ`~R`y]`y]dy]dy]hy]ky\oy\oy\ny\bz\az\az\`z\`z\cz[cz[bz[bz[bz[my[my[ly[hy[hy[dy[gyZcyZcyZoxZoxZhx[hx[dx[dx[ex[ax[bx[bx[bx[cx[ow[lw\`x\ax\ax\bx\bx\gx\gx\gx\hx]hx]lx]lx]`y]`y]by^nyVoyWjwVkwWlxWmxWi}Wa}Wn|Wm|Xb}Xn}Xa~Xb~Wi~Wm~WfWeXn~Xm|YeYfZo~Zk~Zb~Zo}Zc}Zn|Zm|Ya~Yb~Zn~[d\g\l~]h~]c~\l}]`}]o|\l|\b}[`~\c~\i}_k}]a^a^g^o|^&f{Vn}Vd{Xl}Xf{Xn}Xo}Yh}Zh{Zg{Yf{Xc}Zk}Zm}[l}\i}\a}\k{Zg{Ze{\'efQahQkhQhhRbhRffRegQfgRaaQecQecRbcRnbRebRbbRjaRaaRaaQebQebRjbKjbPngKngPajWbjP&nPmW'nd^be^be^fe^fe^ie^ie^ie^le^le^oe]oe]ne]ne]me]me]le]le]oe\oe\ke\je\je\fe\ee\ae\ae\md\md\id\id\fd\fd\bd\cd\cd\oc\lc]lc]mc]mc]nc]nc]oc]oc]lc^`d^ad^ad^ed^fd^jd^jd^nd^nd^&mWoWmX'``Yf`Yh`Zn`Zda[ma[fb[lb\dc\ad\id\ae\me\df\lf\fg[mg[dh[nhZ`iZfiYhiYmiXcjWajWnd^ld4@he3Zie[dcZec[jdZhd[blVnkVkkVjkWlkXhlXnlWolVfmVjmVcnVbnWhmXjkXbnXcnYhmZdmZolYhlZlkZkkYjkXnlXolYim\`n\an[kmZokZik[hk\mk\il\ll\ml[klZik]ik^kk]cn]im]/kfDifFdhHliHikFkkDliCdhCkfD(haZhaRdmRdmZggLdgRhjTgjSdjSkjRglRhlSklSdlTckL`kRocLlcRkfRohRohShhTdhTogShgT`gTkfSkfRogRogSccRodRaeSbeSldT`cTocRlcTdmZgmZbm[`m\ol\el]cl]ik^ck^hj_bj_gi_oh_`h4@dg@lf@cf3_ke_nd_dd_oc^ec^ob]eb]cb\la\ja[kaZhaZao\iq\co]kq]bo^jq^jq_dq4@ho@bo3_bo^gq4@hqAkqAeqBaqBkpAepBioBcoA`oAko@hpAkpAegBggCegBigBigBlgBlgB`hB`hBchAghAghAfhAfhAihAihAhhAhhAkh@gh@fh@fh@fh@ah@ah@ah@lg@lg@hg@hg@dg@dg@`g@`g@lf@mf@mf@if@jf@jf@ff@gf@gf@dfAdfAefAefAffAffAkfAkfAkfAlfBlfBlfB`gBagBegBegBlh3]mh^hf]if^ng]lg^'e~\m}\k}\j}]o}]k~]n~]o~\e\i\(c`\b`]'k](c`^c`_'k}^k}_i}_(a`_'j}4@(b`@c`A'hBl}Bk}Aj}@e~Dg~BmCmC(c`C'k}C*dd3UfdPo`RkbRmbSnbShbTl`TkaRhaT)ozRc}Rc}Sl|Td|Tc|Sl{T`{TozSozRc|Rc|Sg|Ld|RbzPgzPlzQa{Qf{Qo{Q`|Rh|Rm|Re}Rj}Rb~Rj~Rn~RgRjR*b`Rj`Rn`ReaRiaR`bRdbRobQbcQicQlcQcdPfdPgbLdbR)`zUbzP*ddUedUgdUddVfdVgdV`dWbdWcdWmcXjcXkcXdcYfcYccYlbZibZfbZ`b[ma[ja[ga[`a\l`\i`\f`\)o\k\d]`zUazUczU`zVfzVgzVdzWjzWkzWmzXnzXc{X`{Yf{Yk{Yl{Zm{Zb|Zd|[i|[n|[c}[d}\l}\a~\f~\k~\c\d]nuVfxVluXdxXnuXfxXgxYlwZhwZcwYbwXawYluZkwZowZex[dx\mw\iw\cvZouZmu\e_g4@e3_e_i_i_m_l_*``_``_c`^g`^f`^f`^f`^e`^e`^d`^d`^g`]g`]f`]b`]a`]a`])m]m]h]h]d]d]`]`]l~]m~]i~]i~]i~]f~]f~]g~]g~]`~^`~^a~^a~^b~^f~^f~^g~^g~^h~_h~_h~_m~_m~_a_a_e_*``Za`[)l}Zm}[bZ`[*jfVffVoeVneWdfX`gXfgWggVngVbhVkhVjhW`hXneXjhXkhY`hZlgZggY`gZdfZoeYneXfgXggYmf\ofZfh[fh[hh\le\`h]jh]ih^bh^ng^eg^bg^ff^me^ne]df]`g]fg]lg]`h]fg]eg^)loUnoPclRomRenSfnSlmT`lTcmR`mTgfRkhRkhS`hTlgTkgSdgThfTgfSgfRkgRkgSogLlgRjePoeP`fQifQnfQcgQhgRlgRehRihRbiRjiRniRfjRkjRbkRjkRnkRflRilRamRhmRlmRgnQjnQmnQdoQkoPnoPkmLhmRheUjePloUmoUooUloVnoVkoVioWjoWdoXeoXboXlnYmnYjnYdnZanZnmZkmZdm[am[nl[kl[dl\al\jk\gk\ck\hj]heUieUkeUheVjeVoeVmeWneW`fXafXffXhfYifYnfY`gZegZjgZogZ`h[eh[jh[oh[`i\ei\ni\cj\gj\hj]baVncV`aXlcXbaXncXocYdcZ`cZkbYjbXibY`aZccZgcZmc[lc\ec\ac\kaZcaZaa\ij_kj4@ij3_mj_mj_ak_ak_dk_dk_hk_kk^kk^jk^nk^nk^mk^mk^lk^lk^ok]kk]jk]jk]ik]ek]ek]ak]`k]lj]lj]hj]hj]dj]dj]ej]aj]aj]mi]ni]ni]ki]ki]hi^hi^ii^ii^ji^ji^ji^oi^oi^li_`j_`j_ej_ej_ej_ij_ij_dkZek[diZei[jjZhj[brVjqVgqVfqWhqXdrXnrWorVbsVjsVosVnsWhsXfqXnsXosYhsZ`sZorYdrZhqZgqYfqXnrXorYms\osZorZlr\er\iq\dq\eq[kqZcrZfr^dr]js]js]ms^eq^*cyRozRa{Sb{SlzT`yToyRlyT`rTkqShqScrRksRlsSosShsTcnRcpRcpSloTdnTcnScnRgoLdoRcsL`sRguRkwRkwSdwTlvTkvSdvThuTguSguRkvRkvSovLlvRkzLhzRem\dm]dm^km^bn_en4@lnAfoA`pBjpBdqCarCbsCnsCktCfuCfvCawClwCjxB`yBnyAdzAmz@f{3_k{^l{^l{]m{\m{\l{RdmRem\lh]dk]nh^fk^mh_ek_ek4@ck@ci@mh@mh3_li4CniAdkBdkBfkBnhBktEitGktEotEotEcuEcuEcuEfuEfuEjuEiuEiuEhuEhuEkuDkuDkuDjuDjuDiuDiuDhuDduDduDcuCcuCcuCotCotCktCktCgtCgtCctCctClsDlsDlsDisDisDjsDjsDksDksDksDhsEhsEisEisEnsEnsEnsEctEctEgtEgtEktEktEgu@duBcs@`sBetAgtA`~3]l}]f}]e}^n}^j~^m~^n~]d]h]+b`]a`^*j^+b`_b`4@*f}3_f}4@d}@+``@*e}A+a`Aa`B*kBo}Be}Be}AfCjC+c`Cb`D*hEdEn}Cf}Cd}E+ng3VmgQgqLdqRoiLliRlhTghSdhSohRgjRhjSkjSdjTooRkqRarSbrShqTloTopRlpTjmMkmRblSfnSfnTcnTkmTfmTcmTglTblTblSfmSfmTmgQbhQkhQohQdiRliRajRijRbkRfkRnkRflRolRcmRkmRcnRknRnnRfoRnoRbpRipRaqRhqRlqRgrQkrQbsQisQfc[ne[dc]le]gc]oe]oe^ie_ae_od^od]nd^ec_he4@me@leAjeAbeAldAfdAjcAdcAec@hc@md@ldAng3VogVmgWogWlgXngX`hYahYghYehZjhZhh[mh[ci[di\ji\oi\`j]fj]kj]lj^ak^jk^ok^`l_il_nl_gm_hm4@js3VisQjsVksVesWgsWdsXfsX`sYasYorYmrZjrZhr[er[cr[lq\jq\gq\`q]np]kp]dp^ap^jo^go^`o_in_fn_cn_hm4@imBmmBmmB`nB`nB`nBdnBgnAknAknAjnAjnAinAinAhnAhnAkn@kn@jn@jn@jn@en@en@an@`n@`n@lm@lm@hm@hm@dm@dm@`m@am@ml@ml@nl@jl@jl@kl@kl@hlAhlAilAilAjlAjlAklAolAolAllB`mB`mBdmBemBimBimBimBkmCdn3]en^`l]al^fm]dm^ju[fu[lt\ot\du]`v]gv\dv\nv[bw[hw\kw\`w]ot]kw]kw^aw_mv_gv^av_eu_ot^ot]gv]gv^lt4@hw@ntAjwAcwCiwCjwBawBeuBntBmtCguCcvCevCfvBavBfuDotDntEguEcwEjwEkwDbwDfvDcvDbvEgvE)g@d5X+dqXgq6@*ka4KcaKl`Lo`LaaMmaMgbLdbLkbKccKdcLgcLacMl`NdcNdcObcOjbOdbOnaObaOl`Ol`NdbNdbOjaQiaPccPccPecQm`QacRgcRfcSccSkbSfbSoaScaSn`So`RaaRmaRgbRibRacRgbRfbS2`j3UbjPkfRchRihSjhS`hThfTggRdgTk`RobRobShbT`bToaShaTl`Tk`Sk`RoaRoaScbL`bR1nP2c`Pd`Qi`QbaQfaQkaQlaRdbRibRmbRfcRjcRncRfdRkdRceRgeRneRbfRffRnfRagRegRlgR`hRghQnhQbiQeiQhiQoiPbjPogLlgR1lUnP2`jUajUbjU`jVajVbjVoiVmiWniWkiWhiXiiXgiXdiYaiYnhYohYhhZehZbhZchZlg[ig[fg[cg[of[hf\ef\bf\ne\ke\de]`e]1lUmUnUlVmV2b`Vc`Va`Wf`Wg`Wd`Xi`Xk`Xl`Ym`YbaYgaYdaZiaZnaZcbZdb[eb[jb[ob[cc[dc\ic\nc\bd\gd\ld]`e]1f{Vb~Vd{X`~Xf{Xb~Xc~Yh}Zd}Zo|Yn|Xm|Yd{Zg}Zk}Za~[`~\i}\e}\o{Zg{Ze{\2ae_ce4@ae3_ae_ee_ee_ee_he_he_he_le_oe^oe^cf^bf^bf^af^af^af^`f^`f^cf]cf]bf]ne]ne]me]ie]ie]ie]de]de]de]`e]`e]ld]ld]hd]hd]id]ed]ed]ed]bd]bd]bd]cd]oc]lc^lc^mc^mc^mc^nc^bd^cd^cd^cd^dd_dd_dd_hd_id_id_md_md_ae_leZme[hcZic[ndZld[flVblVkkVjkW`lXllXbmWcmVjmVnmVcnVbnWlmXjkXbnXcnYlmZhmZcmYllZ`lZkkYjkXbmXcmYmm\`n\an[omZclZik[hk\al\ml\`m\am[olZnm^an^bn]lm]`l]jk]ik^bl^nl^am^bm]ll]/kgRgiRmiSniSdiThgTkhRhhTh`Tg`Sd`Sk`RcbRhbSkbS`bT.k|Ro~Ro~Sh~Tl|Tk|Sk|Rc~L`~R/oaLlaRcdRcfRcfSleTheTgeSldTddTcdScdRgeRgeSgeLdeRciL`iR.m{\l{]c|]f|^i|_l|4@f}@m}Ag~Am~BkB/d`Cm`CjaCjbCgcCbdCndCieCdfCofBigBchAihAbi@hi@mi3_fj^gj]hj]ij\ij\hjR.l{Rm{\hw]`z]jw^bz^iw_az_az4@ky@ow@iw@iw3_dx4CfxAlyBlyBbzBjwB/gcEecGgcEgcEgcEkcEkcEocEocEbdEbdEbdEadEedEddEddEgdDgdDgdDfdDfdDedDadD`dD`dD`dDocCocCkcCkcCgcCgcCgcCccCccCobCobCkbCkbChbDdbDdbDebDebDbbDbbDcbDcbDcbD`bE`bEebEebEfbEfbEjbEkbEkbEobEobEccEccEgcEoc@lcBoa@laBacAccAll3]dl]bl]al^fl^bm^im^jm]lm]dn]jn]in^fn^al_in_in4@gn@om@im@cm@gl@al@al3_im_im4@jnAhnCdnCblAgnChnDknDdnElmEkmD`mEdlEclD`lDglChmDkmD-en3QnnQgoQloRdpRmpRfqRnqRgrRorRgsRlsSdtSltSduSluSdvS`wShwScxRkxRcyRjyRbzRizR`{Rh{Rc|Qj|Qa}Qk{Lh{RkpLhpRcoRgqRgqSlpTdoTcoScoRczRo{Re|Sf|Sl{T`zTc{R`{TbtMctRcsTjrTkrSbsSjtSotSntTktTfvSjxSjxTgxTowTjwTgwTkvTfvTfvSjwSjwTnwMowRmi\el\oi]gl]ni^fl^fl_`l4@lk@fk3_fk^ek_li4@mjBoj@elAelAglAoiAa}3Wa}QenWenQenWgnWenXgnXenYknYinZonZmn[co[eo\go\io]oo]ap^fp^hp_bq_dq4@iq@cr@drAjrAcsAisBnsBgtBltCbuCkuCa}3Wc}Wa}Xo|Xm|Yo|Yi|Zk|Ze|[g|[a|\o{\i{]g{]a{^nz^hz_fz_`z4@iy@gy@`yAjxAcxAmwBfwBcwBhvCbvCkuCkuEouEouEcvEcvEgvEgvEfvEjvEivEivEivElvElvEovDovDnvDnvDivDivDivDhvDdvDgvCgvCcvCcvCouCouCkuCkuCguCguCcuCcuCcuCltDltDmtDitDitDjtDjtDktDktDhtEhtEitEitEmtEntEntEcuEcuEcuEguEguEkuEkuEkuEiuGgv@dvBct@`tBeuAguAa3\m~\k~\j~]o~]k]n]o\.e`\i`\ca\ba]k`]-j~^.ba^ba_h`4@d`@-n3_h4@l~@j~3_j~^n^n_[email protected]@-i~B.aaB`aCbaDj`D-h~C.d`Eh`EbaEaaFj`Ff`F-l~Eh~Ej~F,ms3QftQotQduRluRevRnvRfwRowRkxRcyRhyS`zShzS`{Sl{Sd|Sl|Sg}Ro}Rg~RbRjR-a`Rh`R`aRkaQbbQibQcaL`aR,cvL`vRktRovRovSdvTltTktSktRkR-gaRmaSnaSdaT,hT-k`Rh`T,nyMoyRkxTfxTgxSjxSbzSgzSfzTczTn{Sb~Sb~To}Tk}Tb}To|Tg|Tn{Tn{Sb}Sb}Tf}Mg}Reo\ar\go]cr]fo^br^br_hq4@dq@np3_np^mp_do4@epBgp@mqAmqAcrAgoA-ib3WibQ,msWmsQmsWosWmsXosXatYctYbtZdt[jt[ht\nt\`u]fu]hu^nu^cv^ev_kv_aw4@fw@lwAbxAkxAlxBfyBoyBdzCnzCc{C-ib3WkbWibXgbXebYgbYbbZ`b[na[ha\ja\da]ba]l`^j`^g`^a`_,k_e4@b@h~Af~Ao}Ad}Bb}Bk|B`|Cj{Cc{Cc{Eg{Eg{Ek{Ek{Eo{Eo{En{Eb|Ea|Ea|Ea|Ed|Ed|Eg|Dg|Df|Df|Da|Da|Da|D`|Dl{Do{Co{Ck{Ck{Cg{Cg{Cc{Cc{CozCozCozCkzCkzCdzDdzDezDazDazDbzDbzDczDczD`zE`zEazEazEezEfzEfzEkzEkzEozEozEozEc{Ec{Ec{Ea{Go{@l{Boy@lyBa{Ac{A-md3\ed\cd\bd]gd]ce]je]ke\me\af\kf\jf]cf]bd^jf^jf_`f4@le@je3_`e4@dd@bd3_bd^je^je_cd4@kf@adBifBhfCjfDbfD`dCadEbdFcdEkfEafE.hq3UjqPomRkoRapSbpShoTlmTonRlnTchRgjRgjSliThiTgiS`iTdhTchSchRgiRgiSkiLhiRfgPkgPlgQahQjhQohQciQhiRmiRajRjjRnjRfkRjkRclRglRolRbmRjmRnmRfnRinRaoRdoRooQcpQfpQmpQ`qQgqPjqPgoLdoRdgUfgPhqUiqUjqUhqViqVfqVdqWeqWbqW`qXmpXnpXkpXipYfpYcpY`pZmoZjoZgoZ`o[mn[jn[gn[`n\mm\im\fm\cm\ll]dl]dgUegUfgUdgVegVfgVhgWigWjgWlgXmgXbhXchXehYjhYkhYlhZaiZfiZkiZli[mi[bj[gj[lj\ak\ek\jk\ok\`l]dl]nbVfeVlbXdeXnbXfeXgeY`eZldZgdYfdXedYlbZodZceZee[de\ae\md\gcZobZmb\el_gl4@el3_il_il_ml_ml_`m_`m_`m_gm^gm^gm^fm^jm^im^im^im^hm^hm^km]gm]fm]fm]fm]am]am]am]ml]ll]hl]hl]dl]dl]`l]`l]al]mk]mk]ik]jk]jk]jk]gk]gk]dk^dk^ek^ek^ek^fk^fk^kk^kk^kk^hk_lk_lk_al_al_al_el_el_`mZam[`kZak[flZdl[nsVfsVcsVbsWdsX`tXjtWktVntVfuVkuVjuWduXbsXjuXkuYduZltZktY`tZdsZcsYbsXjtXktYiu\kuZktZht\at\es\`s\as[gsZosZdu]ju]iu^fu^nt^it^bt^fs^as^bs]ds]`t]jt]lt]du]jt]it^1h`X`cXi`YacYh`Z`cZac[nb[ba[i`[h`Zeb\mb\cc\bc]ob]gb]aa\i`\k`]0cvRkwRaxSbxShwT`vTovRlvTc{Rg}Rg}S`}Th|Tg|S`|Td{Tc{Sc{Rg|Rg|So{Ll{RkvLhvRjtXhtRl~Rn~Xhy4@ly@ly@ly@`z@cz3_gz_gz_gz_jz_jz_jz_iz_iz_lz_lz_oz^oz^oz^jz^jz^iz^iz^iz^dz^dz^dz^`z^cz]oy]oy]oy]ky]ky]gy]gy]gy]`y^`y^lx^lx^mx^mx^ix^jx^jx^kx^kx^kx^hx_hx_ix_ix_jx_nx_nx_ox_ox_cy_cy_dy4@dy@dy@hy@hy@n~3Xl~Yj~Yh~Zf~Z`~[n}[h}\e}\n|\h|]a|]j{]b{]kz]cz]ky]cy]kx]bx]jw]aw]lv]fv\av\hu\fu[`u[ntZhtZjtYhtYjtXhy4@jyAb{3[c{\nx[ox\`z\bz\`qXlpXepXdpYmpYiqYlqYmqXdrXhrXasX`sYirYdpZ`sZas[jr[fr[mq[jq[np[ep[dpZlqZmq[as\cs]kr]ep\hr4@bs3_cs^jr^np^gp^fp_lp4@hq@nq3_oq^jq^kfRghRihSjhSdhThfTggRdgT/hTcS`SkR0caRdaSgaS`aT/k{Rk}Rk}Sd}Tl{Tk{Sk{Rc}L`}R0k`Lh`RobRceRceSldTddTcdSlcT`cTobSobRcdRcdSgdLddRchL`hR/mz\lz]oz]b{^e{_l{4@b|@i|Ac}Am}Bg~B`CmC0j`CfaCcbCnbCjcCedC`eCoeBefBcgAigAbh@hh@mh3_bi^gi]di]ei\ei\diR/lzRmz\dv]lx]fv^nx^ev_mx_mx4@kx@ov@ev@ev3_dw4CfwAlxBlxBnxBfvB0cbEabGcbEgbEgbEgbEkbEkbEobEnbEnbEbcEacEacE`cE`cEccDccDccDbcDbcDacDacD`cDlbDlbDobCkbCkbCgbCgbCgbCcbCcbCoaCoaCkaCkaCgaCdaDdaDdaDaaDaaDbaDbaDcaDcaDcaD`aE`aEaaEaaEfaEfaEfaEgaEkaEkaEoaEoaEcbEcbEob@lbBk`@h`BmaAoaAhk3]dk]nj]mj^fk^bl^el^fl]ll]`m]jm]im^bm^mj_im_im4@cm@ol@el@cl@gk@mj@mj3_el_el4@jmAhmC`mCnjAlkEokCemDemDkmDojD1li3ZliRhuRhuZkoLhoRlrTkrShrSorRktRltSotShtTgsLdsRclL`lRcoRcqRcqSlpThpTgpSloTdoTcoScoRgpRgpSgkRcmRimSjmS`mTdkTglRdlThuZkuZiu[gu[au\ot\it]gt]ms^js^`s_ir_br_kq_cq_hp4@`p@do@ln@gn3_om_fm_ml_dl_nk^ek^ck]mj]kj\ej\cj[mi[oiZliZew\az\gw]cz]fw^bz^bz_hy4@lw@fw3_fw^ky4@`zAczAiyBeyBoxAixBmwBgwAdwAow@lxAoxAioBkoCioBmoBmoBapB`pB`pBdpBdpBgpAkpAkpAkpAjpAnpAmpAmpAmpAlpAlpAop@op@jp@jp@jp@ip@ep@ep@ep@`p@`p@`p@lo@lo@ho@ho@ho@do@do@`o@ao@ao@mn@mn@nn@nn@jn@kn@kn@hnAhnAinAinAinAjnAjnAonAonAonAonA`oB`oB`oBdoBeoBioBioBioB`q3]aq^`o]ao^fp]dp^if\af\oe\ne]cf]of]fg]gg\ig\ah\gh\fh]ch]gh^gh_oe^oe_me_eh_ne4@fh@ghA`hB`fBoeAne@chBdhCghCahDigDggCmfDafDoeCleCcfBdgCggC0la3IoaJjcLbeLofJlfIbeGjcGlaI)ckHbkJllLhnLbpJcpHhnGllGckH(cyLbyI)jmI+km6@im5F/atF`t3J0ddJ'md5\ld4@gfKcfKheLkeLafMifMcgL`gLggKogK`hLchLmgMheN`hN`hOngOfgO`gOjfObfOheOheN`gN`gOngQahQbhPmgPafPjePieQbfQjfQagQbgPifPjeRkeSheS`hSjgR)hj6Nij8G2ivGkv3LogL)ll6VhlValV`lWjlWfmWhmWimV`nVdnVmnVlnWfnWalXmnXmnYgnYcnYimYgmYklYalYalXimXimYon[nnZjmZjm[gm[kl[bl[clZjlZnlZfn\ln]on]dn^`n^km]dm^hl^cl]`l]jl\hm]km]ij5\kj4@clKokKdkLgkLmkMilMolLllLgmKkmK`nLcnLimMdkN`nN`nOjmOfmOllOjlOnkOdkOdkNllNllObnQanPmlPmlQjlQnkQekQfkPmkPalPglSelRlmSlmSbnSfkS2jbCibE`dGleGigEjgCleB`dBjbC&ms=Pns4W(fgWggC&mr=SerSoqSlqUfrUfsUlsUosSitSauSkuShuUbuUkuVjuXoqVnqXoqWkuWnqYjuYiu[cu[gr[mq[nqYas_`s]gu]gu]ju^nq^2ce4@ae5\a~\jf4IbfIleJoeJ`fKlfKggJdgJjgIngIdhJghJlgKoeKghKghLmgMigMggLmfMafMoeLoeKggKggLngOdhOehNlgN`fNmeNleObfOnfOdgOegNlfNngQehQfhPmgPafPnePmeQbfQnfQegQfgPmfP.el5\gl4@jnIfnIlmJomJdnK`oKgoJdoJnoIbpIhpJkpJ`pKomKkpKkpLapMmoMgoLaoMenMomLomKgoKgoLjpOhpNdoNdoOboOfnOlmOmmNdnNhnNapPjpPipQbpQnoQeoQboQfnQmmQnmPenPaoPfoPmoPapPfoPeoQ0jyAiy5\/i}\0n{4Ij{I`{Jc{Jh{K`|Kk|Jh|Jn|If}Ih}Jk}Jd}Kc{Kk}Kk}Le}Mm|Mk|La|Mi{Mc{Lc{Kk|Kk|Lh}Nj}Of}O`{Nf}Qi}Qj}Pe}Pi{Pb{Pa{Qj{Qb|Qi|Qj|Pa|P,kw6@kw5WkcWkc4CaeJmdJgdJedKodKkeKmeKoeJefJifJcgJagKkfKfdLbgLbgMhfNdfNneMheNldNfdMfdLneLneMgdNcgNedPagP`gQagRifRddQgdS`eSdfScgS`gTffTbeTddTgdSls6@``@b`4T+jmTkmCboFjnFdnGgnGhnHdoHooGloGbpFjpFlpGopGhpHgnHopHlpJipJapJloJeoJinJdnJgnHooHloJdnKlpKfnLnpLkpNmpNnpMipMinMfnMenNknNgoNmoNnoMeoMjnOgnOfnPhnQhpQnpPopOjpOnoOgoOfoPloQ1koCjoZ2j`Zk`=N1oQgQm~Rn~SdT2d`TbaSaaRkaQcbQibRjbS`bTjbUhbW1n~Ul~Wm~V2ibV1m~X2ibXkbYabZ1eZo~Ym~X2bb[hb\hb]cb]ka]`a]g`]1g]l~]l~\f[2`a\`a],l~6@-hu@iu4GnwIjwI`wJcwJhwKdxKkxJhxJnxIfyIhyJkyJdyKcwKkyKkyLeyMmxMkxLexMiwMcwLcwKkxKkxL`wNhyNbwOjyOiyPjyQfyQawPmxReyRkyRjySgySoxSiwRawRcwS'en=Pen4[*it[itG'em=SmlSclS`lUnlUnmUdnUgnSaoSioScpS`pUjoUcpVbpXclVblXclWcpWblYbpYap[ko[ol[al[blY`o]ho]bp]bp^io_ao_ll]`l]al_eb4FgbGbdIjeIggGegFjeDbdDebF,c{6@a{4Gf}Ib}Ih|Jk|J`}Kl}Kc~J`~Jj~In~IdJgJl~Kk|KgKgLm~Mi~Mc~Lm}Ma}Mk|Lk|Kc~Kc~Lh|NdNj|OfOePfQn~Qi|Pj|Rk|Sh|SdSj~R0abG`b5U/dvUev\0jc4IbcIlbJobJ`cKlcKgdJddJjdIbeIdeJgeJ`eKobKgeKgeLaeMidMgdLmcMacMobLobKgdKgdLdeNfeObeOlbNncQmcPgePgePeeQmbQ/ir5\ec\ec4GjdIfdI`dJcdJddK`eKgeJdeJneIbfIhfJkfJ`fKcdKkfKkfLafMmeMgeLaeMedMcdLcdKgeKgeLhfNjfObfO`dNafPjfPifQbfQneQeeQbeQfdQadQbdPedPfePeeQ+kb6@ib4[.el[niZmi\kk]gm]mn\nnZgmXkkXniZ(dr7Wfr:Nls8VhsVasV`sWjsWftWhtWitV`uVduVmuVluWfuWasXmuXmuYfuYbuYitYftYjsYasYasXitXitYasZauZlu[mu[cu[cs[etZgt[bs\nu\ou]du^hs^cs]bs\`s_`s9@bs8_nu_`u_cs9@ou@asBmuB)m|5Wo|Xf~Z*b`ZoaXmaWb`U)f~Um|WorInrKdtM`vMnwKowI`vHdtHorI2jbAibCcdDoeDigCjgAoe4_cd_jb5A*hp4^kp_er5AatAku4_hu^at\er\hp^cs6Bcs4^(eu5\euB2aeB'm|El|Gk~H(c`HlaGmaEc`C'k~Cm|E+oi6@mi5F'eFd9R(hlRjl:N+noFoo9])gu]fu5J0mx<GnxT-bTb5S*jaSha6H0gz<HczHhyIkyI`zJlzJc{I`{Ik{Ho{H`|Ic|Il{JkyJc|J`|Lm{Li{L`{LmzLazLhyLkyJc{J`{LiyMiyNkyMc|Mi{Ml{Ob|Oa|Pn{Pj{Pa{PnzPbzPiyPjyO`zOb{Oa{PkzRizQc|Qc|Qb|RjyR*ix5NkxObzQn{Qk}Oi}Nn{LbzLixN1bl:F`l5O*`{O&ii7H(acHbc5S)jjS,fd:Fdd9R(l~Rl~5X)dXbhRahTliVhkVamTbmRhkQliQbhR*gm6Bdm5X`mX/e|6Bm}Bf~Bd~Cn}Cf|Ca}Bb}CbuCltCntBauBmvBbwB`wCnvCaqBesBdsCbsCjqC`qCaqBir5\jr6Aev5\fv6AixBmzBlzCfzCbzClyCjyCnxChxCixBmyBlyCaz5\bz6Ai}5\j}6AkpKjpLipMopMbqNeqOkqOarPhrQbsQosQetRbuRkuRdvS`wSlwShxSdySoyRjzRe{Ro{Qj|Q`}Qi}Po}Oe~Oj~No~MaMbLcKcKbAjpAkpKblLjnL`lNhnNclNknNknOdnPdlPclOclNamRcmPfnQfnQhnR`lRmwUowVmwUmwUaxUaxUexUdxUdxUhxUhxUkxToxToxTnxTnxTmxTmxTmxTlxTlxToxSoxSoxSnxSjxSixSixSexSexSexS`xS`xSlwSlwShwShwShwSewSewSawSawSawSbwSnvSovSovSovSlvTlvTmvTmvTmvTnvTnvTovTovTcwT`wU`wU`wUdwUewUiwUiwUiwUmwUhxPixQdvPevQjwPhwQ0faLbaLk`Lj`M`aNlaNbbMcbLjbLnbLccLbcMlbNk`NccNccOlbPhbPcbOlaP`aPk`Ok`NcbNcbOh`Qi`Rj`QbcQhbQobRacS`cTmbTibT`bTmaTaaTh`Ti`ScaRabS`bThbUlbUbcUacVnbVjbV`aUh`Uj`V'kaIkaJ&cIcJaJ'iaJ&bK'jaK&`M'haM&cM'kaMkaNaaOm`Og`Ng`Mf`N&aO`P'haPhaQbaQn`Qd`Qb`Q&fQ`Q`P'd`Pd`QecBaeBjeBheCbeCfcCedBfdCmd5\nd6AbjA&nA'mdJbjAndLbeLbeLaeLeeLeeLieLieLheLleLoeKoeKneKneKneKmeKmeKleKleKoeJoeJjeJjeJjeJfeJeeJaeJaeJaeJmdJmdJidJidJedJfdJbdJbdJbdJocJocJlcKlcKmcKmcKncKncKncKocKocKlcL`dLadLadLedLedLidLjdLndLndLndLldNkeEheGgcEdcGidFkdFfiInhIkhIjhJlhKhiKbjJcjIfjInjIckIbkJljKkhKckKckLmjMejMcjLiiMmhMkhLkhKcjKcjLmjO`kOakNljNlhNihNhhOmhOiiO`jOajNhiNdjPljPbkPakQnjQfjQlhPhhPjhQ.el5X1ioXjo:F*ij5WkjXflZbnZkoXioWbnUflUijW.miWliYkkZgmZlnYmnWgmUkkUmiW)gg6IggJodIodJmdJegJndKfgKldMdgModMggMggNagOifOgfNgfMffNmdOldPdgPdgQbgQjfQdfQneQbeQldQldPdfPdfQeiBmjBfkBdkCnjCfiCajBbjCij5\jj6AnoAjeAijJnoAjjLnjLnjLbkLakLekLekLekLhkLhkLhkLkkKokKnkKnkKmkKmkKlkKlkKhkKkkJkkJjkJfkJfkJekJakJakJmjJmjJijJijJijJejJejJajJbjJbjJniJoiJoiJhiKhiKhiKiiKiiKjiKjiKkiKkiKliLliLliLajLajLajLejLfjLjjLjjLjjLjjLhjNgkEdkGgiEdiGijFkjFboInnIgnIfnJlnKhoKnoJooIfpIjpIopInpJhpKgnKopKopLipMepMooLioMmnMgnLgnKooKooLmpOlpNloNloOioOmnOdnOenNlnN`oNhpPnpPmpQjpQfpQmoQjoQnnQenQfnPlnPnoPmoQ(mhGekGohHgkHnhIfkIfkJ`kKdiKnhJnhIojKckKdkLgkLakMmjMgiKohKmhMmsBiuBbvB`vCjuCnsCmtBntCmnBmpBlpCjpCfpC`pCjoCboClnCmnBapB`pCep5\fp6Aeu5\fu6AhwHjwAfmAdmHerOirOirOmrOmrOasOasO`sOdsOdsOgsNgsNjsNjsNjsNisNisNhsNhsNgsMgsMfsMfsMbsMbsMasMmrMmrMirMirMerMerMarMarMarMmqMnqMjqMjqMjqMkqMgqMdqNdqNeqNeqNfqNfqNfqNgqNkqNhqOhqOhqOmqOmqOarOarOarOerOerOdmHfmHdmIjmIlmJbnJdnKjnKcoKeoLnoLgpLlpMdqMmqMerMasMhsM`tMktLbuLiuLouKfvKhvKnvJ`wJfwIhwIjwHhwHerOgrP`sKasL`qKaqLfrKdrLmyGeyGcyGbyHgyHczHjzHkzGmzGe{Gk{Gj{Hg{HbyIj{Ij{Jd{KlzKjzJ`zKdyKbyJbyIjzIjzJcyKc{Ki{Lj{La{MayMczKazM`yNh{Nh{Oe{OeyO`yO`yNayPbyQcyPk{Pa{P.ciIciJkfIkfJifJaiJjfKbiKhfM`iMkfMciMciNmhOehOchNchMbhNifOhfP`iP`iQnhQfhQ`hQjgQnfQhfQhfP`hP`hQakBilBbmB`mCjlCbkCmkBnkCel5\fl6AjqAfgAelJjqAflLjlLjlLnlLmlLmlLamLamLdmLdmLdmLgmKgmKkmKjmKjmKimKimKhmKhmKdmKgmJgmJgmJfmJbmJbmJmlJmlJmlJilJilJelJelJelJalJalJmkJnkJnkJjkJkkJkkJkkJdkKdkKdkKekKekKfkKfkKgkKgkKkkKhkLhkLhkLmkLmkLmkLalLblLflLflLflLflLdlNcmE`mGckE`kGelFglFnpIjpIcpIbpJhpKdqKjqJkqInqIfrIkrIjrJdrKcpKkrKkrLerMmqMkqLeqMipMcpLcpKkqKkqLirOhrNhqNhqOeqOipO`pOapNhpNlpNhrPjrQfrQ`pP(grPfr7Els6VhsVasV`sWjsWftWhtWitV`uVduVmuVluWfuWasXmuXmuYguYcuYitYgtYksYasYasXitXitYbsZbuZlu[mu[cu[cs[ftZgt[bs\nu\ou]du^hs^cs]bs\`s_`s7@bs6_nu_`u_,iqDbrDkrD`sEdsEmsEftEntEguEouEgvElvFdwFlwFdxFlxFdyFlyF`zFhzF`{Fk{Ec|Ek|Eb}Ej}Ea~Eh~E`EgDnD-e`D,l~@l~Els@lsEgrEktEktFdtGhrGgrFgrEg}EcEiFjF`Gd}Gg~Ed~Gkw@kwEgvGbvGcvFfvFnwFgxFfxGowGnyFn{Fn{Gk{Gg{Gb{GkzGczGnyGnyFb{Fb{Gc{@c{EemOmoOgmPooPfmQnoQooRdoS`oSknRjnQinRdmSanUcnSioTioTloUdmU-e`Je`D,iqJiqDiqJkqJiqKkqKmqLoqLmqMcrM`rNfrNdrOjrOlrPbsPgsPisQosQ`tRftRhtSmtScuShuTmuTcvThvUmvUgwUlwVaxVjxVcyV-e`Jg`Je`Kg`Ka`Lc`La`M,oMlNjNhOfO`Pn~Po~Pi~Qg~Q`~Rj}Rd}Sa}So|Sd|Ta|To{Td{Ua{UkzUdzVmyVfyVcyV`yY`yY`yYdyYgyXkyXkyXkyXnyXnyXnyXazXazX`zX`zX`zXczWczWbzWbzWazWmyWmyWlyWhyWhyWkyVgyVgyVcyVcyVcyVoxVoxVkxVkxVgxVdxWdxW`xWaxWaxWaxWnwWnwWowWowWlwXlwXlwXmwXaxXbxXbxXbxXgxXgxXgxXkxXhxYlxYlxY`yY`yYbyZkyShyUkwShwUmxToxT-ibOabOoaOnaPcbPobPfcPgcOicOadOgdOfdPcdPnaQfdQgdR`dShcSgcRlbS`bSoaRnaQfcQgcRlaTlaUnaTfdTlcTlaVlaWnaVfdVlcVgdWedYadYoaW2e}BaBjBhCbCf}Ce~Bf~C3ndChdCjdBmdBifBnfBlfCjfCehBijBhjCbjCjhCdhCehBai5\bi6Aee5\fe6AaaBacB`cCnbCjbCdbCnaCfaC`aCaaBebBdbCia5\ja6A2a~5\b~6A3gkKakL`kMbkMmjNkjNejOliPjiP`iQihQchQhgRagRffRoeR`eShdSlcSdcShbScbRfaRm`R``R2kQaQh~Qf~Pl}Pi}Og}Na}Nn|Mh|Mi|Lk|Kk|Kj|A3fkAgkKbmLjoL`mNhoNcmNkoNkoOdoPdmPcmOcmNanRcnPjoQjoQhoR`mRmcUocVmcUadUadUadUedUedUddUhdUhdUhdUodTodTodTndTndTndTaeTaeTaeT`eT`eTodSodSodSndSndSndSidSidSidSedSedSddS`dS`dS`dSlcSlcShcShcShcSecSecSecSacSacSbcSbcSnbSobSobSobSlbTlbTmbTmbTmbTnbTnbTnbTobTccTccT`cU`cUdcUdcUecUicUicUicUmcUmcUdePeeQ`cPacQfdPddQ2lEhEbEaFjF3b`Fi`Fj`El`EdaEjaEiaFfaF2aG3iaGjaHgaHo`Hj`Hc`H2kHbHaG3i`Gj`H2cIcJaJ3iaJcaI2cKcLaL3iaLcaKfaMhaNkaNdaOl`Ok`N``O2hOcN`NjM3h`Nk`N*dbNddNgdNadOibOgbNdbN+blFnmFdnGenGomGclGbmFcmGjmHbnHgnHenIcnIkmIflHblHclI*f}FjFjGgGcGj~Gg~Go}Gf}Gf}Fj~Fj~GbHfHkHiIgIcIn}Hf}Hg}InyFn{Fn{Gk{Gg{Gb{GkzGczGnyGnyFb{Fb{Gj{Ho{Hm{Ik{Ig{Ia{IkzIczImyIoyHbzHc{Ha{I)dy5]+`w]aw8A)eyAdy5]*g{6@g{Eo~@o~E+baFfcFfcGccGkbGfbGcbGgaGbaGbaFfbFfbGbaHbaI`aIdcInbHkb@kbEfhFbjFhjGijGcjGghGfiFgiGfjHkjHijIgjIcjIiiIgiIohIehIghHnhHkiHiiIoi@oiE*gmBdmH+noFjqF`rGarGkqGooGnpFopGnoHnoIloI`rIjqHkm@kmEgq@gqE*`lJokIlkIclHkmH`nIcnIhmJgmJkmJ`nKbnKhmLdmLclJokJlkLcsB`sH`rJkqIhqIcrHksHlsIosIhsJkqJkqKiqKmsKgsJ+ldNodE*cyE`yN+hsNksEogElgN*bp7McpGck6NakOckOekPkkPmkQclQdlRnlRcmRhmSanSjnScoSkoScpSopSgqSnqSerSlrSgsRjsR`tRgtQitQotPauPguOeuOguNguNduH`kHckNhaHkaS`yNbyN`yOgyOiyPoyPazQkzQa{Rg{Rl{Si|Sb}Sk}Sg~So~SkS+c`Sn`SeaSlaSgbRmbRgcQicQcdPedPkdOhdOndNldNlgNngNlgOchOehPkhPmhQgiQiiRcjRhjSakSnkSglScmSkmSgnSonSfoSapShpScqRiqRcrQerQkrPasPcsOdsOfsNhsN*cpSbpZbvZ`v7Ika6Sja_fr_er7Ho~6Sn~ZnyZly7I+km6Sjm_*f}_e}7Hn~Ml~Nn~Nl~On~Oh~Pj~Pd~Qf~Q`~Rb~Rl}Sj}Sg}Sa}To|Ti|Uf|U`|Vn{Vg{Va{WnzWdzXazXjyXdyYmxYfxYcxYhwZn~Mo~GcpGkpG`qHiqHbrHjrHcsHhsI`tIhtIauIiuIavIivIawIjwIaxIixIayIiyIazIhzI`{Ih{Ic|Hj|Hb}Hi}H`~Hg~Go~G)nzMn|Md}Nf}Nl|OlzOb|M`|Og{OlzPozPe{Qa}Qg}Pd}Pc}Og{Od}Re}SlzRmzSozRg}R`}Te}Td}Ub}Un|Ud|Ub|Uf{UlzUmzTd{Te|Td|Ua}Vf}Ve}Wb}Wn|We|Wb|Wf{WmzWnzVe{Vf|Ve|Wm|Xa}Xg}Xf}Yc}Yo|Ye{XmzXozYozZoz[mz[e}[o|Z*bpM`pNfpNdpOfpOdpPjpPhpQnpQlpRbqRdqSjqSkqSmqTcrTerUnrU`sVfsVksVatWftWhtXauXfuXluYevYjvYcwYhwZiw\iw\mw\mw\`x\`x\`x\dx\gx[gx[kx[jx[jx[ix[ix[hx[hx[hx[kxZkxZjxZfxZfxZexZaxZaxZ`xZlwZlwZhwZhwZdwZdwZ`wZ`wZawZmvZmvZnvZjvZjvZkvZkvZhv[dv[dv[ev[iv[jv[jv[kv[kv[ov[lv\lv\`w\`w\aw\ew\ew\iw\iw\kw]dxWexX`vWavXfwWdwX+jsMbsMlrNnrN`sOlsOftNdtNjtMntMduNfuNltOorOguOguPmtQitQgtPmsQasQorPorOgtOgtPlrRmrSorRguRltRltTeuTduUntUjtUdtUnsUbsUlrUmrT`sTetTdtUeuVfuWntWmrV(coR`oTklRhlTjlSboSklTcoTilVaoVhlW`oW`oXmnXenX`nX`nWbnWilXhlY`oYaoZnnZfnZanZjmZnlZilZhlY`nYanZaqKirKcsK`sLjrLbqLmqKnqLfrEfrJjwJfmJfrSjwJfrUjrUjrUnrUnrUbsUbsUasUesUesUdsUdsUhsUksTksTjsTjsTisTisThsTdsTdsTgsSgsScsSbsSbsSnrSnrSjrSjrSfrSfrSfrSbrSbrSnqSnqSoqSkqSkqShqTdqTdqTeqTeqTfqTfqTgqTgqTdqUdqUhqUiqUiqUmqUnqUnqUbrUbrUfrUfrUfrUfrUdrW`sOasP`qOaqPfrOdrPovRkvR`vScvSivTewTkwShwSowRgxRhxSkxSexTcvTkxThxVexVmwVhwVewVivV`vVcvTkwThwV`vW`xWjxWhxXbxXbvXdwWfwXavYixYjxZgxZkvZbvZavYcv[cv\av\ix\cx[bv]jx]`v_hx_/mwKow6VdyYlxYixYhxZnxZjyZ`zZazYdzYlzYa{Y`{ZnzZix[a{[a{\nz\fz\az\jy\nx\ix\ix[az[az\jx]kx^hx^`{^jz]mz_c{_b{7@oz@gz@bz@ky@ox@jx@kx6_mx_cz_bz7@fzAnzA`{Bc{BlzCdzCnxAjxAhxCktXktYoqXoqYmqYitYnqZjtZlq\ht\oq\kt\kt]at^ms^gs]gs\fs]mq^lq_ht_ht8@bt@ns@ds@bs@fr@lq@lq7_ds_ds8@ev7QaxQkxQhxRbxRfvRewQfwRmwKnwPb}PjrPmwYb}Pnw[nw[bx[bx[fx[ex[ex[ix[ix[hx[hx[lx[oxZoxZoxZnxZnxZnxZmxZmxZlxZlxZlxZoxYkxYkxYjxYjxYfxYfxYexYaxYaxYmwYmwYmwYiwYiwYewYfwYfwYbwYbwYcwYovYovYlvZlvZlvZmvZmvZnvZnvZnvZovZovZovZlv[lv[`w[aw[aw[ew[ew[fw[jw[jw[nw[nw[nw[lw]kxThxVgvTdvViwUkwUf|Xn{Xh{Yk{Yl{Zh|Zc}Y`}Yf}Xj}X`~Yc~Yh}Zk{Zc~Zc~[i}\e}\c}[i|\m{\k{[k{Zc}Zc}[i{]i{^k{]c~]i}]h}_a~_`~8@j}@f}@`}@j|@n{@h{@i{7_l{_a}_`}8@e}Ai}Ab~Aa~Bk}Bg}Bm{Ai{Ak{Bj{Cb~Ck{Dc~D&bg7GagIohJkjJalIblGkjEohEbgG1ku:SjuKniKoiSjoFjoKnjMijMkjLmjLelLolLmlMflMblFblKfsFfsKenLepLepMbpMnoMioMboMjnMenMenLioLioMmqLisLctLatMjsMnqMmrLnrMoiSmiToiTajUcjUejVjjVljWbkWgkWlkXblXklX`mYimYanYfnYnnYfoYnoYfpYnpYeqYmqYdrYorXbsXhsXosWftWhtWntVauVguUeuUkuTiuTkuSdeV`hVfeWbhWdeX`hXahYjgYneYeeYdeXigZchZbh[kg[gg[nf[kf[oe[fe[geZmeZofZnf[ko[io]ko[oo[oo[cp[cp[cp[gp[fp[fp[fp[jp[ip[ip[ip[lp[lp[lp[opZopZopZnpZnpZmpZmpZipZhpZhpZhpZdpZgpYgpYgpYcpYcpYbpYnoYnoYjoYjoYjoYfoYgoYgoYcoYcoYcoYlnZlnZlnZlnZinZinZinZjnZjnZknZknZknZhn[hn[hn[in[mn[mn[nn[nn[bo[bo[co[go[go[go[ko[ko[ko[gpVdpXgnVdnXhoWjoWlwVdwVawV`wWfwWbxWhxWixVlxVdyViyVhyWfyW`wXhyXiyYfyYnxYixYbxYfwYawY`wXhxXixYbwZbw[`w[hy[byZey\ky\jy]gy]ox]jx]cx]gw]bw]cw\ew\kx\jx]lw;@nw:^dy_dy_ky_cw_cw;@cy@iyAkyAayBawBcx@axB0fi:Ffi@)ipLhp9R/lw7]ow;L0osL/dy8VlxVixVhxWnxWjyW`zWazVdzVlzVa{V`{WnzWixXa{Xa{YnzYfzYazYjyYnxYixYixXazXazYjxZkx[hx[`{[jzZnz\c{\b{]oz]gz]bz]ky]ox]jx]kx\nx\cz\bz]fz^nz^`{_c{_lz9@dz@nx8^jx^hx9@kx@c{@ixBa{B6ea3S5ayS6ea%G5ayG(m}!L)ecLecOaaLbaN1hlRklI'hyRkyI,heDheRfhMbcMheR"mc @6ig@kg?^"oc^mc @%`m!RcmI,dsRgsI*dfRgfI.lRoI+djOdjLloLloOdmLemN$dgLdgOddLhiLddOhiO3`yRcyI&duO`vOmvNovL`vLdrLgqLeqNdrOlsOmsN0`dOecNgcL`dLlgLkhLihNlgO-dwLh|Li|Nl{O`xOewNdwL2hpLluLmuN`uOdtOisNlrOdqOipNhpLhsLisN4l|L5l`L`bMcbMl`O4l|O`L`O,heRbfMheRbdMheRfcMfhMkeMbcMieNfhMjeNbcMheRncMheRndMheRjdMheRfeMheRnfMheRjgMheRbgMheRffMheRngM"ii#UakTemTmnUlnVemWakWhiViiUlq!R5`yRay?P"mqPlq!R5a|#Ui}TmT6eaUdaV5mWi}W`|Va|U"ii%GmqGgm/\jm_em0Bbn/_gm\fn_em0B6ea*_5ay_6ea(C5ayCb|&P`|Sc|Q6gaQf`P"jiPhiSkiQonQjmPii(CmqC5m)L6i`LdaMfaNi`O5mOm|La|La|O"emLanLlnMnnNanOemOejLiiLiiOii*_mq_6ea-[5ay[6i`,HdaIfaJi`K5mKbJe~Km|Kb|J`|Im|H`IbJ"anHlnInnJanKemKjlJmkKejKjiJhiIejHhlIjlJii-[mq[5a~/Ga~D6baEbaEfaF5b|F"ekGekDfnEfnEnnFjiFnc_nq_em0Bgm/\nq_nc_nq_gm\em0Bnq/_nq_em0@nq/_em^nq_fm]nq_em]nq_dm^nq_dm_nq_gm^nq_dm0Anq/_gm0@iiWmqWnq/_dm0@nq/_fm0Anq/_gm0Aln2Con1_kl_il2BlkCdjCiiBji@gj1_ck_6ea0W5ayW6da2Cga1_5c_a2Bd~Cl|Ca|Bb|@o|1_k}_"ii3SmqS%ak7Z#e{ZedZ"mqZ6ea6O5ayO6h`4_ea^ga\k`[5o|[c|\a|^l|_d~_a^c\g~["`n_mn^on\cn[gj[ki\ii^dj_lk_il^kl\ok[ii6OmqO6da7Yda\h`\5`|Y"lnYln\`n\hiYmqZ%ekZek?P"mqPmq7Z$iwZjw?P#ec7Zfc?P%ek7Zek?P"ii9KmqK6eaK5ayK"ii<GmqGan:TlnUnnVanWemWjlVmkWejWjiVhiUejTmkThlUemTanThlUjlV#fcN"nqN6i`TdaUfaVi`W5mWbVe~Wm|Wb|V`|Um|Te~T`UmT6i`T5`UbV#av=DezDdzFnyFnvF`vFavDgzGcvGhxIavJezJgyMoyMezMdzLnyKnvK`vLavMovMcxMaxMfwQnvQ`vRavSlvT`xTixShxRfyQnyQdzRezSlyTfzUezWbvUavWavVezVfzXdz[bvX`v[jxYixZbv^`v\dz\fz^hx\hx^$iw<[#ec[6eaG5ayG#i}[j}?P"dj=PkiPiiRdjS`nSmnRonP`nPhlPokPmkRhlS#ckNckIcpKcpKjpMngMejQaiQngRmgUbiVjkVmlUnlRanQeoQjpRipUfoV5l|Pc|Pa|Rl|S6h`SeaRgaPh`P5`Pg~Pe~R`S,ie?PgfTiePghTccTieP#dz>SgzT`vScvT`vTdzTdwVlvVcvVcvWnvXbxXkxWkxVdyVlyVgzVgzWnyXgwYovYavZbv[lv\`x\jx[ixZgyYoyYezZfz[ly\ez]mv]`v^av_ov_gz_bv?C`vAdzAfzChxAkxBh}>F"lqF%am?PbmX"d}>Sh|Sc|S`|Uj|Un}Uh~Uk~S`SlS#g`Sd`U"nUk~Vi~Yc|V#g`V"a|Y#e`Y"c|\b|Z#f`Zg`\"j~Zi~\b|?@`|>^#d`^f`?@"h~>^k~_#g`?Ad`Dd`C"`|C'iyPjyX*efPffX,iePcdTiePgcTie^iePghTccTiePiePocTiePodTiePkdTiePgeTiePcgT(l}S)dcSdcV`aSaaU,iePofTiePcfTiePkgTiePogT.mPnX,esPfsX1ilPjlX3ayPbyX-ewSi|Sj|Um{VaxVfwUewS&euVavVnvUlvTavSerSdqTfqUerVmsVnsU$egSegVedSiiSedViiV+ejVejSmoSmoVemSfmU2ipSmuSnuUauVetVjsUmrVeqVjpUipSisSjsU0adVfcUdcTadSmgShhTjhUmgV4m|S5m`SbbTabUm`V4m|VaSaV,ghTjeTccTheTghTkeSccT"hx8Pn|RjxRl|Po|S`{Um|V`{UhxUn|Wo|YjxWkxYa{Xa{Ydy9@ix8_hx^fy]f|]l|^m|_d|9@dyAkxAhxCfyCf|Cl|Co|Ad|AdyAkxDo|D`{Fm|GixGjxHn|Hm|Jg|Jo{Ja{Jb{HhxL`|Ll|Mn|Mb|NjxNhzLjzNkxOo|OhxRl|Rm|Sb{To|Ub{TjxT$h:[%hd^$h^%hd[id_gb;@idBgb@$k@%kdCjdF$kCjF%gbDgbEc`M$hMjK%c`JocJjdKhdMocM``O$kOiQ%``RlcRidQkdOlcO``O$iS%idSgbTidV$iVkW%kdWkdYncZbcZgbYgbW$h\%dc\hd]kd]gc^$k^%ha\ka^$i<@%id@$hC%hdCjdDdbFidGdbF$hFmc8NejNdjQdiRhhRhgQigNkeSodSocTocVndWjfWkgVkgTkhSgiSgjTgjVfiWncYfjYej\ei]md]mc\ncYod9BlcBlc@ld8_di_dj9@djBgiBncHfjHigJejLmcLldNlcOlcQodQgiQdjQdjOdiNldNocSgjSfjVfiWndWncVocSlc]mcYejYdj]igYig\ke:BodBocCncEndFjfFjgEkgCkhBgiBgjCfjEfiFlcLmcHejHdjLigHhgKdjNlcNocQmcWncSfjSejWjgSigVld]lc\lcZmdYeiYdjZdj\di]gj^fj;Bgj@oc@mcHejHdjKdiLldLlcKmcHncQocMgjMfjQkgMjgPfjSmcUejWfjYej\ncYmc\lc[dj[ld<BlcAlc;_md^ei^dj_dj<AdiBncGocCgjCfjGkgCjgF#n{8Wb{WbzXbzZa{[m|[n}Zn}Xn~WjW$j`Xj`Z#i[$i`]h`9Ah`8_#`z_cz9BgB$i`Di`E#fFbzFo|Bn|F$j`Hi`Li`J#azJczQ`zN$h`Nk`Q#l}Nl}QbzW$j`W#m}Y$i`[#az[`z]d]$j`^j`_#g:@cz@l|9]o|:@b{FbzEczCc{BkB$k`Cj`E#jFm}Hl}LazH$i`H#`zL$h`Lj`Ni`Q#bzNazQczO$k`O#`zS$h`S#czV$k`V#bz\czX$k`Xj`\#o}Xn}[e}^d};Bd}Dg}Gn{Ib{IbzJbzLa{Mm|Mn}Ln}Jn~IjI$j`Jj`L#iM$i`Oh`Sh`Q#`zQczT$k`T#o}V$j`X#bzXbzZ$j`Zi`]#i^m~^m}]m|^a{^az]bzZn}Zm}]bn>XfoXkpYip\fo]bn]biXngXng]"dtW`zWbzYeyZixZjwYmvZauZftYdtWhwWjwYdy\`z]cz^fy_jx_kw^nv_bu_gt^dt]`u\hw]kw^m};WawW`w[aw]aw<@cw;^o}^e|]l{<Bl|Bl}Cl}El|Fl{F`xB`wB`wFo|Go}Ho}Jn|Kn{KozJbzKbxKcwJcwHcxGozHozJiyQjyMd}Od}Om}PawPl}Wm}SmzSlzV`zW`xW`wV`wTaxSaySo|\o}[o}Yo|XcxXcwYcw[cx\cz\oz[ozYczX$ia=FegFldHfgIjaIiaKafKfgLegMbfNjaNadKbdNiaPegPggRjfSneSodRmdPldRjaSfbXkaWhaVebUifUdgVggWjfXmdZnd]iaZegZja]fg]ha>CjaEiaDegD`fCebGhaHkaIfbJjfJggIdgHifGmdG`dHcdIndJdbMgbMgbMkaM#nMnM$jaMhaMhaMdbMiaSkaUjaTfgTafSebWiaXkaYgbZkfZggYegXifWmdWadXcdYodZif\eg]gg^kf_oe_od^cd_gb_ka^ia]eb\ad\md]me\if\md]od^gg?DegAmdAodCcdDgbDkaCiaBebAecAem=[as[kp\bs^fm^ao>@an@dmAgmBbnCnoCkpBhpAiq@er@`sAcsBfrCasEemEfmHdmK`nKcnKgmKdmKfrMasN`sPgrPkqPhpPooPcnPdmPemNbnMipNhpP*kw7]kw;L+gL*ly8VdyVayV`yWfyWbzWhzWizVlzVd{Vi{Vh{Wf{WayXi{Xi{Yf{YnzYizYbzYfyYayYayXizXizYbyZcy[`y[h{[b{Zf{\k{\j{]g{]oz]jz]cz]gy]by]cy\fy\kz\jz]j{^h{9@d{@by8^0nx:Fox9W)giWei:L`n9QcnRnoTfqTcsR`sQfqOnoO`nQ0dvWfvXaxZmyZf{Xd{WmyUaxUdvW+fh:QbkQdhS`kSghSckSckTijUmhUghTghSdjVhjVakV`kWjjWfjWlhVdhVfhWisLauLkuLiuMbuMjsMetLftMenLipLipMfpMnoMioMfoMjnMenMenLioLioMnoFnoKntFntKawRbwKnlKmlRbrYbrYbrYfrYfrYjrYjrYirYmrYmrYmrYlrY`sY`sYcsXcsXcsXbsXbsXasXasXasX`sX`sXorWorWorWorWjrWjrWjrWfrWfrWbrWbrWbrWnqWnqWnqWjqWjqWfqWfqWgqWgqWcqWcqW`qX`qXaqXmpXmpXnpXnpXopXopXcqX`qY`qY`qYaqYeqYeqYeqYfqYjqYjqYnqYnqYnqYbrYmlRolRmlSbmS`mTfmTkmTmmUbnUdnVmnVboVkoV`pWepWmpWeqWmqWerWirWasWisW`tWgtVntVeuVhuVnuUavUgvTjvTlvTbwSawScwRawRbrY`r[mrUnrVipUjpVoqUlqVfyQbyQkxQjxR`ySlySbzRczQjzQnzQc{Qb{RlzSkxSc{Sc{TmzUizUczTmyUayUkxTkxSczSczThxVixWkxVc{VhzVlzXa{X`{YnzYjzY`zYnyYbyYhxYixX`yXazX`zYmzZb{Za{[nz[jz[az[ny[by[ix[jxZayZmyZbzZizZmzZbzZaz[cy]jx]kx\ay\mz\c{\b{]oz]0of9_nf:AhhCdjCblAcl9_dj^hh^of_b~:Fb~@k{9_j{:A`}Cl~C1j`Ak`9_0l~^`}^k{_-ca:SbaK,fuKguSb{Fb{KfvMavMcvLevLmwLgxLexMnwMjwFjwKn~Fn~KmyLm{Lm{Mj{Mf{Ma{MjzMbzMmyMmyLa{La{Me}LaLkLiMbMf}Me~Lf~MguSeuTguTiuUkuUmuVcvVevWnvW`wXiwXnwXdxYlxYeyYnyYfzYnzYf{Yb|Yj|Ya}Yh}Y`~Yf~Xm~XdXjWmW-g`Vi`Vk`Um`UcaTaaTcaS,lpVhsVnpWjsWlpXhsXisYbsYfqYmpYlpXasZksZjs[cs[or[fr[cr[gq[np[opZeqZgrZfr[c{[a{]c{[g{[g{[k{[k{[k{[o{[n{[n{[b|[b|[a|[a|[`|[d|[d|[g|Zg|Zg|Zf|Zf|Ze|Za|Za|Z`|Z`|Z`|Zo{Yo{Yo{Yk{Yk{Yj{Yf{Yf{Yb{Yb{Yb{YnzYozYkzYkzYkzYgzYdzZdzZdzZezZazZazZbzZbzZczZczZczZ`z[`z[`z[ez[ez[fz[fz[fz[jz[kz[kz[oz[oz[c{[c{[c{[o{Vl{XoyVlyX`{Wb{W-dcVlbVibVhbWnbWjcW`dWadVddVldVaeV`eWndWhbX`eXaeYndYfdYadYjcYnbYibYhbX`dXadYjbZjb[hb[`e[jdZmd\ce\be]od]gd]bd]kc]ob]jb]kb\mb\cd\bd]nd^`e_ce_ld;@dd@cd:_hc;@lb@kb:_hb_nb^jc^`d_fd^nd^`d_cd_kb;@kd@aeAceAidBibBkc@icB+b}:QjQ`}ShSc}SkSkTeUe}Uc}Tc}Sl~VdViVhWfWn~Wd}V`}Vb}W,ahLmiLgjLejMniMbhMaiLbiMmbLaeLaeMndMjdMadMncMfcMmbMmbLadLadMfdFfdKjiFjiKmkRnkKfaKeaRjfYjfYnfYnfYbgYbgYbgYegYegYegYegYhgYhgYhgYkgXkgXkgXjgXjgXigXigXigXhgXhgXkgWggWggWggWfgWbgWbgWbgWnfWnfWjfWjfWjfWffWffWbfWbfWbfWneWoeWoeWoeWkeWheXheXieXieXieXjeXjeXkeXkeXkeXheYheYheYmeYmeYmeYmeYbfYbfYbfYffYffYjfYjfYeaRkaRiaSjaSlaTbbTcbTebUnbU`cVecVncVcdVhdWaeWeeWmeWefWmfWegWmgWahWhhWciVfiVmiV`jVjjUmjUckTfkTdkTjkSikSokRmkRjfYhf[egUfgVaeUbeVgfUdfVnmQjmQgmQfmRhmSdnSjnRknQboQfoQooQnoRdoSgmSooSooTeoUaoUknTenUimUgmTgmSknSknTdmVemWgmVooVdoVdoXmoXloYfoYboYhnYfnYjmYdmYemXhmXinXhnYeoZnoZmo[fo[bo[in[fn[jm[em[fmZimZenZjnZaoZeoZjnZin[em\mo\no]go]co]jn]gn]km]fm]em\in\jn]/b}QjQ`}ShSc}SkSkTaUe}Uc}Tc}Sl~V`ViVhWbWn~Wd}V`}Vb}W0ahLiiLcjLajMjiMbhMmhLnhMmbLaeLaeMndMfdMadMncMbcMmbMmbLadLadMfdFfdKfiFfiKikRjkKfaKeaRjfYjfYjfYnfYnfYbgYbgYbgYegYegYegYegYdgYhgYhgYkgXkgXjgXjgXjgXigXigXigXhgXhgXdgXggWggWggWfgWbgWbgWbgWnfWnfWjfWjfWjfWffWffWffWbfWbfWbfWneWneWoeWkeWkeWheXheXheXieXeeXeeXfeXfeXfeXgeXkeXheYheYheYieYieYmeYmeYneYbfYbfYbfYffYffYffYjfYeaRgaRdaSjaShaTmaTcbTdbUjbUobU`cVecVncVcdVhdWaeWeeWmeWefWmfWagWigWahWdhWohVfiViiVliVgjUjjUljUckTakTdkTjkShkSkkRikRjfYhf[egUfgVaeUbeVgfUdfVnmQjmQcmQbmRhmSdnSjnRknQboQfoQkoQjoRdoScmSkoSkoTeoUaoUknTenUimUcmTcmSknSknT`mVamWcmVkoV`oVdoXioXhoYfoYboYhnYfnYjmY`mYamXhmXinXhnYbn[anZkoZkoZio[am[km]bm]cm\im\eo\ko\jo]go]jqQbtQhqS`tSkqSctSctTmsUmqUkqTkqSdsVlsVatV`tWnsWfsWlqVhqVjqWi|Le~Lo~Lm~Mf~Mj|Mi}Lj}MewLiyLiyMfyMbyMixMfxMnwMewMewLixLixMnxFnxKb~Fb~K1e`Rf`K0nuKmuRb{Yb{Yf{Yf{Yj{Yj{Yj{Yj{Ym{Ym{Ym{Ya|Y`|Y`|Y`|Yc|Xc|Xc|Xb|Xb|Xb|Xa|Xa|X`|X`|X`|X`|Xc|Wo{Wo{Wn{Wj{Wj{Wj{Wj{Wf{Wf{Wb{Wb{Wb{WnzWnzWnzWjzWjzWjzWfzWgzWgzWgzW`zX`zX`zX`zXazXazXbzXbzXbzXczXczXczX`zY`zY`zYezYezYezYezYjzYjzYjzYnzYnzYnzYb{Yb{YmuRcvR`vSbvSdvTevTkvTlvUbwUgwUhwVaxVfxVoxV`yWiyWazWezWmzWe{Wm{Wa|Wi|W`}Wg}Vn}Va~Vh~Vo~UbUdUkTmTlT1b`S``Sg`Re`R0b{Y`{[m{Un{ViyUjyVozUlzV1fbQbbQoaQnaR`bSlbSbcRccQjcQncQgdQfdRlcSoaSgdSgdTmcUicUccTmbUabUoaToaSccSccTlaVmaWoaVgdVlcVlcXedXddYncYjcY`cYnbYbbYlaYmaX`bXacX`cYjb[ibZcdZcdZed[ma[ma\ed\fd]oc]kc]bc]ob]cb]na]ma\ac\bc]0o~;L1koLio:]cq^op^dp_gp_mp;@iq@oq:_lq_gr^kr^`s_cs_ir;@dpA`sA`sBjrBfrBlqBjqBnpBdpBdpAlqAlqBepCfpDdpD`sDerCirEbsEasFkrFgrFmqFkqFopFepFfpEmpEnqEmqFgqHeqGlrHlrHbsHfpHfpIfrIasJbsJdrKdpKjqIhqK,hf:[kf;Lmh:]eh]ch]ah^gh^ci^ii^ki]mi]ej]kj]ij^gj^bh_jj_jj;@djAliAji@`iAdhAbh@bh:_ji_ji;@chA`hCbhBjjBcjAgjChjDkjDejEmiEkiDaiEehEchD`hDghChiDkiDdjFijFhjGejGmiGhiGaiGehG`hGahFdhF`iFiiFliFdjFiiFhiG`hHhjHijIfjIniIiiIbiIfhIahI`hHhiHiiI(ja:YncYncZgcZoaZjaZjaY)ekRamRkmRhmSbmSfkSelRflS`mTdmTjmThmUemUamUlkTdkTekU(m|Rm~Rm~Sj~Sf~Sa~Sj}Sb}Sm|Sm|Ra~Ra~Sd~Th~Tn~Tl~Ui~Ue~U`}Tl|Tm|UayRe{Re{SnzSjzSezSbzSfySaySayRezRezSlzTf{Td{UmzUizUdzUazUeyU`yUbyTdyTfzTdzU'kxH)kvHhv<M'hxMkx:H(izLjzQa~Lb~Q)e`RibRibSfbSbbSiaSfaSn`Se`Se`RiaRiaSe`Te`Ug`TkbTabTmaLnaQmgRiiRoiRliSjiSngSihRjhShiTniTliUiiUeiU`iUihUahUlgUngT`hTbiT`iUeiLfiQ(jlNklS)aoRmpRgqRdqSnpSboSapRbpSaoTaoUcoTgqTmpTmlLnlQipLjpQ(gkUbkUckTfkTbmTgmTfmUcmUilVamVgmVemWbmWjlWekVakVbkWfrNgrSgqUbqUcqTfqTnrTcsTbsUorUbqVbqW`qW`sWjrV)bdYbdQ(fxQfxY)nrYnrQbgQbgY(io;YioSej:ZgjZej[kj[ij\nj\`k]fk]kk]`l^fl^ol^`m_hm_an_jn_bo_jo_bp_fp_mp_dq_lq_cr^jr^`s^gs]js]ls]bt\et\gt[it[ktZitZitZktSgjSejZo`Sn`_fxYexZgxZix[ox[mx\cy\iy]ny]dz^iz^b{^k{^`|_i|_a}_j}_b~_n~_e_m_)d`_o`^fa^ma^`b^jb]mb]cc\ic\kc[mc[cdZadZbdYbgYagZcgZeg[gg[ig\og\eh]jh]lh^ei^ni^gj^lj_ek_mk_fl_nl_fm_an_in_`o_ko^bp^ep^lp^fq]iq]oq\ar\gr[ir[krZmrZnrY(jo_ho;FduFguTn`:_m`;KiqKhqTb~:_`~;F`yFcyT)nl:_ml;K(m|Kl|Ta~Yc~Y`~Zb~Z`~[b~[o}[m}\o}\i}]j}]d}^b}^c}^m|_k|_d|<@f|@c|@m{Aj{Ad{BmzBjzBdzCazCnyCdyDayDnxDgxD`xEiwEfwEovEa~;Ya~SioSnoSgpSopS`qTiqTarTfrTnrTgsTosTctThtU`uUhuUluUdvUlvUdwUlwU`xUhxU`yUkyTczTgzTnzTf{Ti{Ta|Th|Tc}Sg}Sn}Sa~S'azYa|Yo|Yl|Zc|ZczZe{Yg{Zjz[cz[bz\kz\g|\n|\o|[f|[jz[o|]l|_cz]`z_az^m|^g|_l|<@o|@d|A`|Ak{@d{AhzAcz@`z@kz;_h{<@k{@g|Am|Bl|Ce|Ca|Ch{Ce{CizC`zCazBkzAi{Bh{C`|Dd|Dn|Dm|Ef|Eb|EhzD`zDbzEbzFbzG`zGl|Gb|F(io;YkoYhoZjoZho[jo[oo[mo\oo\ap]bp]dp^jp^kp^mp_cq_dq<@jq@kq@mqAbrAhrBmrBbsBdsCisCbtCdtDitDbuDguDhuEavEjvEovElvHlvH`wHcwGgwGgwGgwGkwGjwGjwGnwGnwGmwGmwGlwGlwGlwGowFowFnwFnwFnwFmwFmwFmwFhwFhwFhwFgwEgwEgwEcwEcwEovEovEovEkvEkvEgvEgvEgvE`vF`vF`vFavFmuFmuFnuFnuFnuFouFouFluGluGluGmuGmuGnuGbvGbvGbvGcvGgvGgvGgvGkvGhvHlvHlvHlvHmvIkwBhwDguBduDivCkvC)mr;YerYbrYarZgrZcsZisZjsYmsYetYjtYitZgtZbr[jt[jt\gt\os\js\cs\gr\br\br[js[js\cr]`r_ar^it^ct]`s<Acs;_et<@et@kt@cr@`rB`rCbrBjtB`tB,edGedZ*m`Zn`:C(n`Co`S,jf<KffKleLoeLdfM`gMggLdgLjgKbhKdhLghL`hMoeMghMdhOahOigOdgOagOefOleOoeMggMdgOmePmeQoePghPmgP`hRfhRdhSbhSjgSdgSbgSffSleSneRdfRfgRdgSahTfhTehUchUkgUegUcgUgfUmeUneTefTagTfgTigTahTfgTegUob;LlbI+`rI`r:[gt[os[is\hs]ms]it]lt]mt\gu[ku[av\`v]iu]hs^`v^`v_ju_fu_lt_jt_ns_hs_hs^lt^lt_js;@jsAhsA`vAju@iuBbvBavCkuCguCmtCktCosCisCjsBmsBntBmtCjuDcvDbvEhuFduFntEhtFlsFjsEksDnsDjtDotDfuDjuDotDntElsHksGhsGosFkuF`vGcvGhuH0c{L`{:[k|^c|^l{_o{_a|;@m|@g}:_d}_k}^c~^d~_g~_a~;@l{Ad~Ad~Bb~Bj}Bd}Bn|Bb|Bl{Bl{Ad}Ad}Bm{Cn{Dl{Dd~Dm}Ca~Ef~Ee~Fc~Fk}Fe}Fo|Fc|Fm{Fn{Ea|Ef}Ee}Fo|Hm|Gd~Hd~Hf~Hn{Hn{If~Ig~J`~Kh}Kg}Jl|K`|Ko{Jn{If}Ig}Jhf:[hf;IdwIgwL`h:[hg[fg[eg\jg\fh\mh\nh[`i[di[ni[mi\fi\eg]mi]mi^gi^ci^mh^gh^kg^eg^eg]mh]mh^gg_gg;@eg@mi@gi:_fi;AoiAniBdiC`iCnhBdhChgCfgBggAjgAohAnhBahEchCiiDiiDoiDggDigGdgGegFhgFdiFmiFliGeiG,gjLc{La{:]i|]e|]o{]m{^g|^c}^e}^g}]m}]a~]k~]i~^c~^n{_j~_j~;@`~Al}Af}@`}Ad|An{@n{:_f}_f};@o{Al{Cn{Bj~Bo}Ac~Ch~Dk~Da~Em}Eg}Da}Ee|Eo{Dl{Dg|Cd}Dg}D`~Fi~Fh~Ga~Gm}Gd}Ga}Ge|Gl{Gm{Fd|F`}Fe}Fl}F`~Fe}Fd}Gl{Hl}Hk~Hh~In}In{I`}Hb}I&ms=PavNmsPmqN0f};RbRhSiScSg}Sf~Rg~SgvSnuSluSfvRnwR`xSbxSowSfrRjtRjtSctSkrSfrSfrRosLosQgwLgwQjyRn{Rn{Sk{Sc{SnzSkzSoySjySjyRnzRnzSc{Lc{Qo~Lo~Qiq\kq\iq]lq^nq^`r_gr_mr<@cs@hsAnsAdtBmtBfuBouBhvCawCjwCfxCnxCjyCbzCizCd{Co{Bf|Bm|Bd}Bn}Ad~Ak~@a@g;_h_n^1``^a`]g`\e`\e`\g`Q0kqQiq\cm\ko\am^io^`m_ho_io<@fo@jm@am@`m;_cn<BanAkoAkoAjoBbmBoxEmxGoxEcyEcyEcyEgyEfyEfyEjyEjyEjyEiyEmyEmyElyElyElyEczDczDczDbzDbzDbzDazDmyDmyDlyDlyDlyDkyCkyCkyCkyCfyCfyCfyCbyCbyCbyCnxCnxCnxCjxCjxCfxCfxCgxCgxCcxCcxC`xD`xDlwDmwDmwDmwDnwDnwDnwDowDowDowDlwElwElwEaxEaxEaxEbxEfxEfxEfxEfxEkxEkxEoxEoxEoxEjy@kyAfw@gwAhxAjxA1gb;\cb\ma]la^ab^mb^`c^ac]kc\oc\ed]dd^mc^la_dd_ed<@nc@jc@ac@nb@bb@ma@la;_`c_ac<@naAnaBlaBddBncAmcCgdCfdDocDkcDbcDobDcbDnaDoaCabCccCbcDhbGjbE`dF`dFfdFnaF,nh;RjjR`kSakSkjSohSniRoiSoaSfaSdaSnaRfcRhcSjcSgcS+n}R,b`Rb`S+kSc~Sn}Sn}RgLgQ,obLobQbeRfgRfgScgSkfSffScfSgeSbeSbeRffRffSkfLkfQgjLgjQ+a}\c}\b}]d}^k}^m}_c~_e~<@o~@aAkA,a`Bn`BgaBlaCibCbcCncCfdCbeCjeCefClfCkgBbhBihBciAiiAcj@ej@oj;_ak_gk^hk^jk]ok\mk\mk\okQ+c}Qa}\kx\c{\ix^a{^hx_`{_a{<@nz@by@ix@hx;_ky<BiyAc{Ac{Ab{BjxB,gdEedGgdEkdEkdEkdEodEndEndEbeEbeEaeEeeEeeEeeEdeEdeEdeEkeDkeDjeDjeDjeDeeDeeDeeDdeDdeDdeDceCceCceCodCndCndCjdCjdCjdCfdCfdCbdCbdCbdCncCocCocCkcCkcChcDhcDdcDecDecDecDfcDfcDfcDgcDgcDdcEdcEdcEecEicEicEicEjcEncEncEncEcdEcdEcdEgdEgdEbe@ceAnb@obA`dAbdAom;\km\em]dm^im^en^hn^in]co\go\mo]lo^eo^dm_lo_mo<@fo@bo@in@fn@jm@em@dm;_hn_in<@fmAfmBdmBloBfoAeoCooCnoDgoDcoDjnDgnDkmDfmDgmCimCknCjnDfoEloFnoFdoG`oGjnFdnGhmGfmFdmFjmEfnEhnFboEfoEhnFjnF2k`=NobLk`N1g~Le~>Bn~A2jaAebBfbEebCi`Ch`Eb`E1n~Ed~Eg~Cm~CiCf~F2fbFgbHj`Fi`HhaLfbKfbJhaJ1l~Jf~Jf~Kl~L2``Lj`Kj`J``J1g~Mm~N2iaNgbM'en=PipNenPalN&lq>CerBauBhuCiuFhuDlsDosEesFerFoqEnqDdrDlrDjtIbuIhuIkuGauGerGoqGlqIfrIfsIdsIcuLiuLiuKbuJfrJmqKmqLgrLgsLmsLmsKfsJnqNdrO`uOjuN'`lCmlBioB`pCapF`pDdnDgnEmmFmlFclEblDllDdmDblIalGapGbpIenGdnIkoLapLapKjoJnlJalKalLolLomLenLenKnmJblNllOhoObpN7`s @ 0707070014230643171006440057030057030000011717320522627504100003000000014000post.src/tests/postgif1GIF87a@&��fD3UUU"3DDU"f""w""�3�33�3D�3D�3D�DU�DUwff������ݙD�f�UU"�����̻��DDD333""",@&��  �di�h��l�p,�tm�x��|����pH,�Ȥr�l:�ШtJ�Z�جv��z��xL.���z�n���|N�����~����������������������������������������������������������������������������������������������������������������������       
        !          72884: 
������.P@0&�
        !          72885:  �L="H� ���2j���G�B�h�†\�>t�� �ŋ>ʜI��M�"0���dB�(�t��C�(]ʴ�S����|@�ル�$y�gP%&t�P&���]˶m�& x�4*��b�z��ɯC>�-*����+^̘qQ�Ƕ�K�rݻx�j�I&` @��J�n�:1�p)W.h�Խ�~��A4��
        !          72886: |��tq�n_]�A@s�"��k�du�y���a7�c�>@�    ��������'�=z,���?�n/�u��4&�yCo���6�p"�&z�       ߄�^x����S�D� �f�
        !          72887: ��`p�����8ߌ4�h�5B������8`��H�J*��b�"eކ�E)�c�f_�@R;�dZCh�P���qM���l�9�z�]�\�&H��R@
        !          72888: IAb�d}�-�&�ƹi�1&w_bt����^ꉞ_���s�2Ih��v��pYJ     a�� � �       &z����Z
        !          72889: p֠lE�魰���}s���H?Y{&�#b�
        !          72890: ֩���)�^��F+����6;\�Ԓ�R�����)V��Dwᨩ)��[��zk�����sCu��H7�9ڗ쬚J{-�,�O�m�݆��K�Kh���&�.p��&�1��~��bi!����$��@�"��&�b��l��O�<�k�|��+��-p63�q��̏)���:L�����3�!����ct5�\�Ty$�J`3+��U�w��9�%f�q��#�
        !          72891: �5nZ�2�&�`�|��F������-r�pG�\Q�޽��!%�*���@D�:
p1��Ǿ�)�����jzE^��o[�1��۬y�d@pw���]�s��f���/GJ�� 0����%~f��觯��������UY>��o?�:��0X)�}������s�t�y\B�&��M|�A���G���-)�cB�5��i��n�<Й����P����0�a�~�Z�IwXA��#U`�g^ �J�p.%�
k‘D$���M�H�*Z�XԈ�HE�萇`���S%���hL���x�Epo.Ba�(�)        @����>���~�H���̈́���2�5:���x#%�r1�����q�Nz�[�bU�6:j�����HD�3Nw�l#$���N&���UH�KB>̄\@ �IL���'L�E�R~�A�XB�&��Ɂ�+��l�LAf��t�       I:����Lg:)�4`(Њ�i¼��*��bDd��0�$b���&�;�0&�|a!�        �Z�N\�'C'J�b��Ey�(�0�ᲊ~4d7*M��A&Nt���\v�&W�h?�G����8��p���'��T'D;같\R&��
        !          72892: H��� ��r�K8��O"5�8�R(��z��`
k�\"����6-�G���^�S�Mm�@���R�U�      ��P܍�b
�`�����1�F,
8�"/�b8����3&q���0��#�},d_��Dz��M�jU�<��.j��b+�/5#�8�Iȥ�O'�dD��S���"�ՉM?[�*W�&)`0��K��Z�����t��y���J_�2����&��&�H���ݩ
�{>nj\�<�rQ�BR�3>d���ɣ���`JW�N��L��&��D�};c�� �̫����\�YP��f�[w�Ҹ�B,��y�ʉ٫خ����8α�w�=���/��'�{-�`����t�iM���f
        !          72893: �,~��4���Ā=汘�L�2�����m�����x\mQ�Z{�%/�K�&�&�CV9�p�&�ߑ��
�x�[��3��ѐ63���^-�*C4��gh�#��]e�=׀@��G�v���wfT���M����ёε�=��ms�ʹ��$��`�r.(_Tk�ء�rA�M�a�3��T��Z�5D7�t���vM�r��ƪ��r��A�f?ۆV[Fu�$�.���0�o���.��d��#m��v�^�A�\�����Yn<ns[<���c�nA�fC�ƞ��-��;#,dp_�&�S��$\<���n��⾸��q���Fv��x�����H2#0y��o�����ˮ{=�Ḣĭ���wK���|~�p׸�C�;��Au/'8Jg:����A]�+aWn&���Z�n�ڊ4��|�f�s�3�}�r�k�-^����8>��^!V>�w���񪿼�=��j�:�;�w����ӟ�1�{���lAB�5��=��8�#��y|ệ�����m'x�6ۃ���ZdW��E�<�/��?N}��=6�����3��Pa>�E?��hs�3}h�"�W#�G�'�uiԀ�%,�C�t!oE�r��{�ׁhRv�����b}e�y       �!>��B�q�W,�6G�~h7�0R��'�,"�N�aGU_ Hx�G8E��B*�wL��&�X����~   |7"��$g��|0hn�GJaQ�68���!��#`�b�&7���<��~�'A3�K�o�8�w��������A����&�'�=x����Ma�gHn�Vs$�"pȅ�X7�8���a�(�,�6�`e��m�2l��x�g���{S�w��*�!��� �Q���md��tь�������=�U�#0ay�񋃱�X��a}��,y�^���@���#>�(���mX…\���o��a���}�؂�!?�xq���� n�3�x����r�������v
�U��t������+���h�\�&����+�(�8�W9�Q�!�:��<I�P��#W4I*()*ɒ�r��9E��\���.`lP��u�X���8����F�o�1 �&X�9�Wp�Ma=��p        �?��+0nƕ���`0�e�}g9��V���U�88)>LB��H��u�h��"��5�a�.�o��&�r@��)|��z$7t�q����JO$%��C��9*�o+9�     s��)�QSiԕ����ȋ��F�      Kr��Q���q���&{���P&�!#���Q_�8"9��Y��y���򸐋蕴Y�ٙ����鐍#���g�����F�YjDM�������i&�&�&�(u^���"��@ڡtÐ���pѠ�J/�a����N'�h\�u���g�eG����ٜ��Y�~�#
        !          72894: p@)@&���,���I&�q�B�} �A�Cz&E�H*J�r&ФO�.��)��ia��9���>���H >�2#0&��x��A&���y�)�'H2�1&w���ǧ�b�k��Y�q�ɦ�c
        !          72895: �(��r�$S&�y|���Kʨܑ%�:�٪�����lK
�B���#P��
        !          72896: p�ʙ��"��u�Y�j@����ש�G �C!�&�&���)��ji-�����:��3�<Z�����ʙ�z��:�&���zy��;�j�n���i�
        !          72897: ��y���oYR���<�*�ǃ)%�8�c��S��+�%0���H<:b�: ���9{c��@��a����u!i�v�t�F�к��({
�rӪ{2$+��˰
�@�;�^�~K���X�$�d�x���o7�(9K";�%�P|}H'Y&����#�&dy&�1|B&p�<{a�:�p��ڀ%е_�&a��c[�g��k+�
        !          72898: �              � �����@ek��Q��&N��������&����ȸ��}�+�WK*���1&�{���@&�����&��A$����[&&�����(�; �[��[�}�j�'���Bڸ����&�۶������˻�k��+��[�X�       jG�+�{R��Z�O��K"�+���כ���&�[&��+*Yx��&�w���9���&���+鋿�%�Z�L��\������;�����W&�E�
        !          72899: ��(,���&����"�,$,Z(��*��� p�G�X%��@�X8�p <��%l�A,��K�:
        !          72900: s�i=�&P�Vl�M;,      Q��H|�`��Lw����z�3\�^�1hW      f-{����Z��m�.x%�9�g\0�w�#�ǂ<Ȅ�%��}L0l%��ȞB4��/.�l٧}��v��}��ɜ�ɞ���Wv1l0��������l&Ƀ�s,      �X����/l       ��w
        !          72901: Sʵ��p�,8�4�pv\��t��������Μz&p�;��L�('��\#���t(ɜl>&��'�̄q��|Ν�z������LΧ�k���,r���T;��>��?�]Ǜ����β3�m1����a�]!5����+@����ч;���&�%��

�&-����3�&,��0�2=�/�)4}�3��)��:��>��@�B=�D]�F}�H����L���N��P�R=�J��V}�X��Z��\��^MӬ<�b=�d]�f}�g-���l��n��p���$�\�v}�x��z��|��{M�~؂=؄]؆}ؓ؈�،�؎�؏�ؐ=ٔ]ٖ}�����ٜ�ٞ�ג�٢=ڤ]�[�>�=�Ay����M�:��hbΚ&�6�ښ�ע��,Iɼ����ی�ٻ-��Vܿmi ��˭=����ס-���.:R*�M/��)s��ڍ+���� ۍ���*�<�ѽ������~=�w��̍��=���L���މ-�����Fzv�ߴm߿c�-������~���
�����>����ᜭ�u-������"������^�#������,�֬�,��4�����} ;���:�⁚���<.�v�.>�������L����N���}�*'�M�@��D|�M� M����&���."N���
�����v�f��D��
����-��\�7~�^���%�t�x��M�u.�M�Ϋ����x���=瀾s��Nڔ��N��5��l��<��)n�>��@D��3 �~���:n����뿾�W��j��)N�N�-���������m������������������]��~�]������N����>�
��~��~������n����ٕG����
        !          72902: �����^��?�_���F�������� �k�0\�w�Z��Xʢ��.��0��*�,�1_�'o�3�)_3,��@��5��V��7o9ϵDO�1��8��2��M0-J��T/�=O!;0707070014230643201006440057030057030000011714570522627504100003100000000421post.src/tests/postplot1s��mtstarts at the lower left corner
        !          72903: m�tshould start just above the upper left corner
        !          72904: fsolid
        !          72905: mddnd�&fdotted
        !          72906: n�&�&p��fshortdashed
        !          72907: c���p��flongdashed
        !          72908: c���&fdotdashed
        !          72909: a�     �       ����funknown
        !          72910: l�&�&��mn�n��n�nm��ttop of the big circle
        !          72911: 0707070014230735720407550057030057030000020015070522633100700002400000000000post.src/trofftable0707070014230732641006400057030057030000011777300522633100700004100000006043post.src/trofftable/trofftable.1.ds dF /usr/lib/font
        !          72912: .ds dQ /usr/lib/postscript
        !          72913: .TH TROFFTABLE 1 "DWB 3.2"
        !          72914: .SH NAME
        !          72915: .B trofftable
        !          72916: \- output a PostScript program that builds a font width table
        !          72917: .SH SYNOPSIS
        !          72918: \*(mBtrofftable\f1
        !          72919: .OP "" options []
        !          72920: .OP "" shortname
        !          72921: .OP "" longname []
        !          72922: .SH DESCRIPTION
        !          72923: .B trofftable
        !          72924: writes a PostScript program on the standard output that builds a
        !          72925: font width table or typesetter description file.
        !          72926: The following
        !          72927: .I options
        !          72928: are understood:
        !          72929: .TP 1.0i
        !          72930: .OP \-t name
        !          72931: Use
        !          72932: .I name
        !          72933: as the template for fonts not in the default set.
        !          72934: Choose
        !          72935: .MW R
        !          72936: for proportionally spaced fonts and
        !          72937: .MW CW
        !          72938: for fixed width fonts.
        !          72939: Try
        !          72940: .MW ZD
        !          72941: (ZapfDingbats) if the font has a non-standard
        !          72942: character set.
        !          72943: The default is
        !          72944: .MR R .
        !          72945: .TP 1.0i
        !          72946: .OP \-C file
        !          72947: Copy
        !          72948: .I file
        !          72949: into each PostScript table program;
        !          72950: .I file
        !          72951: must contain legitimate PostScript.
        !          72952: .TP 1.0i
        !          72953: .OP \-H hostdir
        !          72954: Use
        !          72955: .I hostdir
        !          72956: as the host resident font directory.
        !          72957: A file in
        !          72958: .I hostdir
        !          72959: that matches the name of the troff font is assumed to be a host
        !          72960: resident font program and is included in the PostScript width
        !          72961: table program.
        !          72962: There is no default.
        !          72963: .TP 1.0i
        !          72964: .OP \-L file
        !          72965: Use
        !          72966: .I file
        !          72967: as the PostScript prologue.
        !          72968: .br
        !          72969: The default is
        !          72970: .MW \*(dQ/trofftable.ps
        !          72971: .TP 1.0i
        !          72972: .OP \-S file
        !          72973: Use
        !          72974: .I file
        !          72975: as the shell library file.
        !          72976: Overrides the choice made with the
        !          72977: .OP \-T
        !          72978: option.
        !          72979: .TP 1.0i
        !          72980: .OP \-T name
        !          72981: Set the target device to
        !          72982: .IR name .
        !          72983: Device
        !          72984: .I name
        !          72985: means
        !          72986: .br
        !          72987: .MI \*(dF/dev name /shell.lib
        !          72988: is the shell library file.
        !          72989: There is no default.
        !          72990: .PP
        !          72991: One of
        !          72992: .OP \-T
        !          72993: or
        !          72994: .OP \-S
        !          72995: is required.
        !          72996: If both are given
        !          72997: .OP \-S
        !          72998: wins.
        !          72999: Either
        !          73000: .OP \-H
        !          73001: or
        !          73002: .OP \-C
        !          73003: can be used to include a host resident font.
        !          73004: .PP
        !          73005: The shell library file defines a collection of functions used to
        !          73006: build troff tables.
        !          73007: The default set of tables is the list of names returned by the
        !          73008: .MW AllTables
        !          73009: function.
        !          73010: Changes to the default list can be made by updating the
        !          73011: .MW BuiltinTables
        !          73012: function.
        !          73013: .PP
        !          73014: .I Shortname
        !          73015: is the name of the
        !          73016: .B troff
        !          73017: font and
        !          73018: .I longname
        !          73019: is the name of the PostScript font;
        !          73020: .I longname
        !          73021: can be omitted only if
        !          73022: .I shortname
        !          73023: is a default table name.
        !          73024: PostScript table programs created by
        !          73025: .B trofftable
        !          73026: return data to the host computer using PostScript's
        !          73027: .MW print
        !          73028: operator.
        !          73029: See
        !          73030: .BR hardcopy (1)
        !          73031: if you don't have access to the printer's serial port.
        !          73032: .SH EXAMPLES
        !          73033: Get the PostScript program that builds a width table for font
        !          73034: .MR R :
        !          73035: .EX
        !          73036: trofftable -Tpost R >R.ps
        !          73037: .EE
        !          73038: If a font is not in the default set include the
        !          73039: .B troff
        !          73040: and PostScript font names:
        !          73041: .EX
        !          73042: trofftable -TLatin1 GL Garamond-Light >GL.ps
        !          73043: .EE
        !          73044: A font must be available on the printer when the table is built.
        !          73045: Use
        !          73046: .OP \-H
        !          73047: or
        !          73048: .OP \-C
        !          73049: to include host resident fonts.
        !          73050: .SH WARNINGS
        !          73051: A width table will not build properly if the printer cannot access
        !          73052: the PostScript font.
        !          73053: .PP
        !          73054: The
        !          73055: .OP -TLatin1
        !          73056: option only works on PostScript printers that support the full
        !          73057: .SM ISO
        !          73058: Latin-1 character set.
        !          73059: The error message from older printers will likely indicate a missing
        !          73060: .MW ISOLatin1Encoding
        !          73061: array.
        !          73062: .SH FILES
        !          73063: .MW \*(dF/dev*/shell.lib
        !          73064: .br
        !          73065: .MW \*(dQ/dpost.ps
        !          73066: .br
        !          73067: .MW \*(dQ/trofftable.ps
        !          73068: .SH SEE ALSO
        !          73069: .BR dpost (1),
        !          73070: .BR hardcopy (1),
        !          73071: .BR postio (1),
        !          73072: .BR troff (1),
        !          73073: .BR buildtables (1),
        !          73074: .BR font (5)
        !          73075: 0707070014230735741006440057030057030000010015700522627504200004200000007136post.src/trofftable/trofftable.ps%
        !          73076: % Prologue for building troff width tables. The gsave/grestore pairs are
        !          73077: % for hardcopy.
        !          73078: %
        !          73079: 
        !          73080: /slowdown 25 def
        !          73081: /flagduplicates false def
        !          73082: 
        !          73083: /ascenderheight -1 def
        !          73084: /descenderdepth 0 def
        !          73085: /octalescapes 256 def
        !          73086: /startcomments 256 def
        !          73087: /currentfontdict null def
        !          73088: /scratchstring 512 string def
        !          73089: 
        !          73090: /Print {
        !          73091:        scratchstring cvs print flush
        !          73092:        slowdown {1 pop} repeat
        !          73093: } def
        !          73094: 
        !          73095: /ReEncode {    % vector fontname ReEncode -
        !          73096:        dup
        !          73097:        findfont dup length dict begin
        !          73098:                {1 index /FID ne {def}{pop pop} ifelse} forall
        !          73099:                /Encoding 3 -1 roll def
        !          73100:                currentdict
        !          73101:        end
        !          73102:        definefont pop
        !          73103: } bind def
        !          73104: 
        !          73105: /SelectFont {  % fontname SelectFont -
        !          73106:        findfont
        !          73107:                dup /PaintType get 0 eq {
        !          73108:                        /scaling 1 def
        !          73109:                        unitwidth resolution 72.0 div mul
        !          73110:                }{
        !          73111:                        /scaling resolution 72 div def
        !          73112:                        unitwidth
        !          73113:                } ifelse 
        !          73114:        scalefont
        !          73115:        /currentfontdict exch def
        !          73116: } def
        !          73117: 
        !          73118: /ChangeMetrics {DpostPrologue begin addmetrics end} def
        !          73119: 
        !          73120: /NamedInPrologue {
        !          73121:        dup
        !          73122:        DpostPrologue exch known {
        !          73123:                DpostPrologue exch get type /nametype eq {
        !          73124:                        (named in prologue\n) Print
        !          73125:                } if
        !          73126:        }{pop} ifelse
        !          73127: } def
        !          73128: 
        !          73129: /SetAscender {
        !          73130:        /str exch def
        !          73131: 
        !          73132:        gsave
        !          73133:                currentfontdict setfont
        !          73134:                newpath
        !          73135:                0 0 moveto
        !          73136:                str false charpath flattenpath pathbbox
        !          73137:                /descenderdepth 4 -1 roll .5 mul def
        !          73138:                exch pop exch pop
        !          73139: 
        !          73140:                newpath
        !          73141:                0 0 moveto
        !          73142:                str 0 1 getinterval false charpath flattenpath pathbbox
        !          73143:                4 1 roll pop pop pop
        !          73144:                dup 3 1 roll sub .25 mul add
        !          73145:                /ascenderheight exch def
        !          73146:        grestore
        !          73147: } def
        !          73148: 
        !          73149: /GetAscender {
        !          73150:        ascenderheight descenderdepth ge {
        !          73151:                gsave
        !          73152:                        currentfontdict setfont
        !          73153:                        newpath
        !          73154:                        0 0 moveto
        !          73155:                        ( ) dup 0 4 -1 roll put
        !          73156:                        false charpath flattenpath pathbbox
        !          73157:                        exch pop 3 -1 roll pop
        !          73158:                        ascenderheight gt {2}{0} ifelse
        !          73159:                        exch descenderdepth lt {1}{0} ifelse
        !          73160:                        or
        !          73161:                grestore
        !          73162:        }{0} ifelse
        !          73163: } def
        !          73164: 
        !          73165: /GetWidth {
        !          73166:        gsave
        !          73167:                currentfontdict setfont
        !          73168:                ( ) dup 0 4 -1 roll put
        !          73169:                stringwidth pop scaling mul round cvi
        !          73170:        grestore
        !          73171: } def
        !          73172: 
        !          73173: /GetCode {
        !          73174:        256 3 1 roll            % last unprintable match
        !          73175:        0 3 -1 roll {
        !          73176:                2 index eq {
        !          73177:                        dup 127 and 32 ge {exit} if
        !          73178:                        3 -1 roll pop
        !          73179:                        dup 3 1 roll
        !          73180:                } if
        !          73181:                1 add
        !          73182:        } forall
        !          73183:        exch pop
        !          73184:        dup 255 gt {pop}{exch pop} ifelse
        !          73185: } def
        !          73186: 
        !          73187: /BuildFontCharset {
        !          73188:        0 2 charset length 2 sub {
        !          73189:                /i exch def
        !          73190:                /chcode -1 def
        !          73191:                /chname null def
        !          73192:                /key charset i get def
        !          73193:                /val charset i 1 add get def
        !          73194: 
        !          73195:                val type /integertype eq {
        !          73196:                        /chcode val def
        !          73197:                        /chname currentfontdict /Encoding get chcode get def
        !          73198:                } if
        !          73199: 
        !          73200:                val type /nametype eq {
        !          73201:                        /chname val def
        !          73202:                        /chcode currentfontdict /Encoding get chname GetCode def
        !          73203:                } if
        !          73204: 
        !          73205:                val type /stringtype eq {/chcode 0 def} if
        !          73206: 
        !          73207:                chcode 0 lt chcode 255 gt or {
        !          73208:                        chcode 0 lt {(syntaxerror: )}{(undefinedname: )} ifelse
        !          73209:                        Print key Print (\t) Print val Print (\n) Print
        !          73210:                        quit
        !          73211:                } if
        !          73212: 
        !          73213:                val type /stringtype eq {
        !          73214:                        key Print
        !          73215:                        (\t) Print val Print
        !          73216:                        (\n) Print
        !          73217:                }{
        !          73218:                        chcode octalescapes ge key (---) eq and {
        !          73219:                                (\\0) Print chcode 8 (   ) cvrs Print
        !          73220:                        }{key Print} ifelse
        !          73221:                        (\t) Print chcode GetWidth Print
        !          73222:                        (\t) Print chcode GetAscender Print
        !          73223:                        (\t) Print chcode Print
        !          73224:                        chcode startcomments ge {
        !          73225:                                (\t# ) Print chname Print
        !          73226:                        } if
        !          73227:                        (\n) Print
        !          73228:                        chcode octalescapes ge (---) key ne and {
        !          73229:                                key (\\0) anchorsearch not {
        !          73230:                                        pop
        !          73231:                                        (\\0) Print chcode 8 (   ) cvrs Print
        !          73232:                                        (\t"\n) Print
        !          73233:                                }{pop pop} ifelse
        !          73234:                        } if
        !          73235:                } ifelse
        !          73236:        } for
        !          73237: } def
        !          73238: 
        !          73239: /BuildDescCharset {
        !          73240:        /DescDict 512 dict def
        !          73241:        /Characters 0 def
        !          73242: 
        !          73243:        0 1 charset length 1 sub {
        !          73244:                /i exch def
        !          73245:                /key charset i get def
        !          73246: 
        !          73247:                key length 2 eq {
        !          73248:                        DescDict key cvn known {
        !          73249:                                flagduplicates {        % for debugging
        !          73250:                                        (<<<duplicated character: ) Print
        !          73251:                                        key Print
        !          73252:                                        (>>>\n) Print
        !          73253:                                } if
        !          73254:                        }{
        !          73255:                                DescDict key cvn 1 put
        !          73256:                                key Print
        !          73257:                                /Characters Characters 1 add def
        !          73258:                                Characters 20 mod 0 eq {(\n)}{( )} ifelse Print
        !          73259:                        } ifelse
        !          73260:                } if
        !          73261:        } for
        !          73262: } def
        !          73263: 
        !          73264: 0707070014230735751006440057030057030000010016050522627504200004200000005052post.src/trofftable/trofftable.sh#
        !          73265: # Writes a PostScript program on standard output that builds a width
        !          73266: # table or typesetter description file. The program uses PostScript's
        !          73267: # print procedure, which means the table comes back on the printer's
        !          73268: # serial port. Try hardcopy if you don't have access to the port.
        !          73269: #
        !          73270: 
        !          73271: POSTBIN=/usr/lbin/postscript
        !          73272: POSTLIB=/usr/lib/postscript
        !          73273: FONTDIR=/usr/lib/font
        !          73274: 
        !          73275: PROLOGUE=$POSTLIB/trofftable.ps
        !          73276: DPOSTPROLOGUE=$POSTLIB/dpost.ps
        !          73277: 
        !          73278: COPYFILE=
        !          73279: HOSTFONTDIR=
        !          73280: DEVICE=
        !          73281: LIBRARY=
        !          73282: TEMPLATE=
        !          73283: 
        !          73284: SLOWDOWN=25
        !          73285: STARTCOMMENTS=256
        !          73286: 
        !          73287: NONCONFORMING="%!PS"
        !          73288: ENDPROLOG="%%EndProlog"
        !          73289: BEGINSETUP="%%BeginSetup"
        !          73290: ENDSETUP="%%EndSetup"
        !          73291: TRAILER="%%Trailer"
        !          73292: 
        !          73293: while [ -n "$1" ]; do
        !          73294:     case $1 in
        !          73295:        -C)  shift; COPYFILE="$COPYFILE $1";;
        !          73296:        -C*) COPYFILE="$COPYFILE `echo $1 | sed s/-C//`";;
        !          73297: 
        !          73298:        -F)  shift; FONTDIR=$1;;
        !          73299:        -F*) FONTDIR=`echo $1 | sed s/-F//`;;
        !          73300: 
        !          73301:        -H)  shift; HOSTFONTDIR=$1;;
        !          73302:        -H*) HOSTFONTDIR=`echo $1 | sed s/-H//`;;
        !          73303: 
        !          73304:        -L)  shift; PROLOGUE=$1;;
        !          73305:        -L*) PROLOGUE=`echo $1 | sed s/-L//`;;
        !          73306: 
        !          73307:        -S)  shift; LIBRARY=$1;;
        !          73308:        -S*) LIBRARY=`echo $1 | sed s/-S//`;;
        !          73309: 
        !          73310:        -T)  shift; DEVICE=$1;;
        !          73311:        -T*) DEVICE=`echo $1 | sed s/-T//`;;
        !          73312: 
        !          73313:        -c)  shift; STARTCOMMENTS=$1;;
        !          73314:        -c*) STARTCOMMENTS=`echo $1 | sed s/-c//`;;
        !          73315: 
        !          73316:        -o)  shift; OCTALESCAPES=$1;;           # only for Latin1 tables
        !          73317:        -o*) OCTALESCAPES=`echo $1 | sed s/-o//`;;
        !          73318: 
        !          73319:        -s)  shift; SLOWDOWN=$1;;
        !          73320:        -s*) SLOWDOWN=`echo $1 | sed s/-s//`;;
        !          73321: 
        !          73322:        -t)  shift; TEMPLATE=$1;;
        !          73323:        -t*) TEMPLATE=`echo $1 | sed s/-t//`;;
        !          73324: 
        !          73325:        -*)  echo "$0: illegal option $1" >&2; exit 1;;
        !          73326: 
        !          73327:        *)   break;;
        !          73328:     esac
        !          73329:     shift
        !          73330: done
        !          73331: 
        !          73332: if [ ! "$DEVICE" -a ! "$LIBRARY" ]; then
        !          73333:     echo "$0: no device or shell library" >&2
        !          73334:     exit 1
        !          73335: fi
        !          73336: 
        !          73337: if [ $# -ne 1 -a $# -ne 2 ]; then
        !          73338:     echo "$0: bad argument count" >&2
        !          73339:     exit 1
        !          73340: fi
        !          73341: 
        !          73342: if [ -d "$HOSTFONTDIR" -a -f "$HOSTFONTDIR/$1" ]; then
        !          73343:     COPYFILE="$COPYFILE $HOSTFONTDIR/$1"
        !          73344: fi
        !          73345: 
        !          73346: #
        !          73347: # Include the shell library and get the command used to build the table.
        !          73348: # Make awk call a separate library function??
        !          73349: #
        !          73350: 
        !          73351: . ${LIBRARY:-${FONTDIR}/dev${DEVICE}/shell.lib}
        !          73352: 
        !          73353: if [ $# -eq 1 ]
        !          73354:     then TEMPLATE=$1
        !          73355:     else TEMPLATE=${TEMPLATE:-R}
        !          73356: fi
        !          73357: 
        !          73358: CMD=`BuiltinTables | awk '$2 == template"" {
        !          73359:        if ( pname == "" )
        !          73360:                pname = $3
        !          73361:        printf "%s %s %s", $1, tname, pname
        !          73362:        exit 0
        !          73363: }' template="$TEMPLATE" tname="$1" pname="$2"`
        !          73364: 
        !          73365: if [ ! "$CMD" ]; then
        !          73366:     echo "$0: $TEMPLATE not found" >&2
        !          73367:     exit 1
        !          73368: fi
        !          73369: 
        !          73370: #
        !          73371: # Build the PostScript font table program.
        !          73372: #
        !          73373: 
        !          73374: echo $NONCONFORMING
        !          73375: cat $PROLOGUE
        !          73376: echo "/DpostPrologue 100 dict dup begin"
        !          73377: cat $DPOSTPROLOGUE
        !          73378: echo "end def"
        !          73379: echo $ENDPROLOG
        !          73380: 
        !          73381: echo $BEGINSETUP
        !          73382: cat ${COPYFILE:-/dev/null}
        !          73383: echo "/slowdown $SLOWDOWN def"
        !          73384: echo "/startcomments $STARTCOMMENTS def"
        !          73385: echo $ENDSETUP
        !          73386: 
        !          73387: $CMD
        !          73388: 
        !          73389: echo $TRAILER
        !          73390: 
        !          73391: 0707070014230733371006400057030057030000010015740522633100600004200000003474post.src/trofftable/trofftable.mkMAKE=/bin/make
        !          73392: MAKEFILE=trofftable.mk
        !          73393: 
        !          73394: SYSTEM=V9
        !          73395: VERSION=3.3.2
        !          73396: 
        !          73397: GROUP=bin
        !          73398: OWNER=bin
        !          73399: 
        !          73400: FONTDIR=/usr/lib/font
        !          73401: POSTBIN=/usr/bin/postscript
        !          73402: POSTLIB=/usr/lib/postscript
        !          73403: MAN1DIR=/tmp
        !          73404: 
        !          73405: all : trofftable
        !          73406: 
        !          73407: install : all
        !          73408:        @if [ ! -d $(POSTBIN) ]; then \
        !          73409:            mkdir $(POSTBIN); \
        !          73410:            chmod 755 $(POSTBIN); \
        !          73411:            chgrp $(GROUP) $(POSTBIN); \
        !          73412:            chown $(OWNER) $(POSTBIN); \
        !          73413:        fi
        !          73414:        @if [ ! -d "$(POSTLIB)" ]; then \
        !          73415:            mkdir $(POSTLIB); \
        !          73416:            chmod 755 $(POSTLIB); \
        !          73417:            chgrp $(GROUP) $(POSTLIB); \
        !          73418:            chown $(OWNER) $(POSTLIB); \
        !          73419:        fi
        !          73420:        cp trofftable $(POSTBIN)/trofftable
        !          73421:        @chmod 755 $(POSTBIN)/trofftable
        !          73422:        @chgrp $(GROUP) $(POSTBIN)/trofftable
        !          73423:        @chown $(OWNER) $(POSTBIN)/trofftable
        !          73424:        cp trofftable.ps $(POSTLIB)/trofftable.ps
        !          73425:        @chmod 644 $(POSTLIB)/trofftable.ps
        !          73426:        @chgrp $(GROUP) $(POSTLIB)/trofftable.ps
        !          73427:        @chown $(OWNER) $(POSTLIB)/trofftable.ps
        !          73428:        cp trofftable.1 $(MAN1DIR)/trofftable.1
        !          73429:        @chmod 644 $(MAN1DIR)/trofftable.1
        !          73430:        @chgrp $(GROUP) $(MAN1DIR)/trofftable.1
        !          73431:        @chown $(OWNER) $(MAN1DIR)/trofftable.1
        !          73432: 
        !          73433: clean :
        !          73434: 
        !          73435: clobber : clean
        !          73436:        rm -f trofftable
        !          73437: 
        !          73438: trofftable : trofftable.sh
        !          73439:        sed \
        !          73440:            -e "s'^FONTDIR=.*'FONTDIR=$(FONTDIR)'" \
        !          73441:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
        !          73442:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
        !          73443:        trofftable.sh >trofftable
        !          73444:        @chmod 755 trofftable
        !          73445: 
        !          73446: changes :
        !          73447:        @trap "" 1 2 3 15; \
        !          73448:        sed \
        !          73449:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
        !          73450:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
        !          73451:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          73452:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          73453:            -e "s'^FONTDIR=.*'FONTDIR=$(FONTDIR)'" \
        !          73454:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
        !          73455:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
        !          73456:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
        !          73457:        $(MAKEFILE) >XXX.mk; \
        !          73458:        mv XXX.mk $(MAKEFILE); \
        !          73459:        sed \
        !          73460:            -e "s'^.ds dF.*'.ds dF $(FONTDIR)'" \
        !          73461:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
        !          73462:        trofftable.1 >XXX.1; \
        !          73463:        mv XXX.1 trofftable.1
        !          73464: 
        !          73465: 0707070014231031441006440057030057030000010307200522627504200002000000014711post.src/READMEStuff appears to work, but it's obviously not well tested. I fully
        !          73466: expect several iterations before things are correct!! Make sure you
        !          73467: can back this out quickly.
        !          73468: 
        !          73469: This code supports UTF encoding. Directory dpost.utf is a version that
        !          73470: reads UTF encoded files. Directory dpost is DWB 3.3 source and should be
        !          73471: close to what you're currently using. Main source code changes were in
        !          73472: dpost.utf (files font.h, font.c, and dpost.c). Select either dpost or
        !          73473: dpost.utf in TARGETS in postscript.mk. Both build and install a program
        !          73474: called dpost!!
        !          73475: 
        !          73476: dpost.utf is more general and includes code that lets it read either
        !          73477: format. Only catch is troff must tell it (with x E UTF) that the file
        !          73478: is UTF and troff currently doesn't output encoding info, so you're
        !          73479: stuck with two post-processors!
        !          73480: 
        !          73481: Added common/rune.h and common/rune.c so code can be compiled elsewere.
        !          73482: Both files are only used by dpost. Remove RUNELIB in commmon/rune.h if
        !          73483: fullrune(), chartorune(), and runetochar() are available on your system.
        !          73484: You will also need to set READING in common/gen.h. It controls how dpost
        !          73485: (from dpost.utf) reads troff output. It should be UTFENCODING on Plan 9
        !          73486: and ONEBYTE elsewhere. If troff includes encoding hint (x E UTF) then
        !          73487: READING selects the default which sould be ONEBYTE.
        !          73488: 
        !          73489: Leave WRITING (in common/gen.h) set to ONEBYTE. It only controls dpost
        !          73490: output and dpost (right now) does not work 100% with UTF.enc. Fix should
        !          73491: be easy, but I don't have time now.
        !          73492: 
        !          73493: Other translators passed bytes through so only needed slightly modified
        !          73494: proglogues and a new encoding scheme (psencoding/UTF.enc). It works for
        !          73495: Latin1, but still needs a bit more attention. Prologue changes were easy
        !          73496: and only involved adding lines like,
        !          73497: 
        !          73498:        /show {show} bind def
        !          73499:        /stringwidth {stringwidth} bind def
        !          73500: 
        !          73501: Guarantees text procedures used in prologues aren't operators and can be
        !          73502: successfully redefined in UTF.enc. Unbinding means a small but probably
        !          73503: not noticeable speed penalty. You may not want to include those changes
        !          73504: on other system.
        !          73505: 
        !          73506: -------------
        !          73507: Major Changes
        !          73508: -------------
        !          73509: 
        !          73510: See the VERSION file.
        !          73511: 
        !          73512: -------------------
        !          73513: Tuning The Makefile
        !          73514: -------------------
        !          73515: 
        !          73516: Source files, man pages, and low level makefiles can all be updated
        !          73517: to reflect settings in postscript.mk in one simple step (described
        !          73518: later). In most cases you only need to edit file postscript.mk.
        !          73519: 
        !          73520: First save a copy of file postscript.mk. Then adjust the following
        !          73521: definitions in file postscript.mk:
        !          73522: 
        !          73523:   SYSTEM    best match for your version of Unix. Current choices for
        !          73524:            SYSTEM are:
        !          73525: 
        !          73526:                        SYSV    - System V
        !          73527:                        V9      - Ninth Edition
        !          73528:                        BSD4_2  - Berkeley (eg. Sun)
        !          73529: 
        !          73530:            Controls conditional compilation in a few places.
        !          73531: 
        !          73532:   GROUP            group assigned to all installed files
        !          73533: 
        !          73534:   OWNER            owner of everything that's installed
        !          73535: 
        !          73536:   BINDIR    dpost and picpack go here. All other programs go in POSTBIN.
        !          73537:            BINDIR must already exist - it will not be created during an
        !          73538:            install.
        !          73539: 
        !          73540:   HOSTDIR   hostresident font directory for PostScript printers. Only
        !          73541:            used in the font download program.
        !          73542: 
        !          73543:   FONTDIR   width table directory - for troff and most postprocessors
        !          73544: 
        !          73545:   MAN1DIR   command manpages. A command and its manpage are installed
        !          73546:            together - there's no easy way to avoid it. Setting MAN1DIR
        !          73547:            to an existing temporary directory (e.g. /tmp) means an
        !          73548:            install will work but manpages won't go anywhere permanent.
        !          73549:            MAN1DIR must already exist - it will not be created during
        !          73550:            an install.
        !          73551: 
        !          73552:   POSTBIN   where most PostScript support programs go. dpost and picpack
        !          73553:            the exceptions.
        !          73554: 
        !          73555:   POSTLIB   prologues and miscellaneous PostScript files. Primarily for
        !          73556:            the programs that live in POSTBIN.
        !          73557: 
        !          73558:   CFLGS            common compiler options - used to build CFLAGS in the low
        !          73559:            level makefiles. CLFGS and LDFLGS are best set on the make
        !          73560:            command line.
        !          73561: 
        !          73562:   LDFLGS    common link editor options - used to build LDFLAGS in the
        !          73563:            low level makefiles. LDFLGS and CFLGS are best set on the
        !          73564:            make command line.
        !          73565: 
        !          73566:   DKHOST    set it to TRUE to compile the DKHOST Datakit support code
        !          73567:            in postio. Temporarily resets SYSTEM to SYSV if DKHOST is
        !          73568:            TRUE and SYSTEM is BSD4_2. Ignored if SYSTEM is not SYSV
        !          73569:            or BSD4_2.
        !          73570: 
        !          73571:   DKSTREAMS enables streams based DKHOST support in postio when DKHOST
        !          73572:            is TRUE and SYSTEM is SYSV or BSD4_2. Choices are TRUE,
        !          73573:            FALSE, or a stream module name (e.g. dknetty or dkty). TRUE
        !          73574:            selects dknetty. Newer systems may expect dkty.
        !          73575: 
        !          73576:   ROUNDPAGE must only be set to TRUE or FALSE. TRUE means PostScript
        !          73577:            translators include code that maps clipping path dimensions
        !          73578:            into known paper sizes.
        !          73579: 
        !          73580:   TARGETS   the default list of what's built by make. Each target must
        !          73581:            be the name of a source directory. A target that names a
        !          73582:            non-existent source directory is ignored. Setting TARGETS
        !          73583:            on the make command line overrides the default list.
        !          73584: 
        !          73585: -------------------
        !          73586: Updating The Source
        !          73587: -------------------
        !          73588: 
        !          73589: Whenever file postscript.mk changes you should update source files,
        !          73590: man pages, and low level makefiles by typing,
        !          73591: 
        !          73592:        make -f postscript.mk changes
        !          73593: 
        !          73594: ------------------------
        !          73595: More System Dependencies
        !          73596: ------------------------
        !          73597: 
        !          73598: The package has been compiled and tested on System V and Ninth Edition
        !          73599: Unix Systems and on Sun workstations. Most differences are handled via
        !          73600: the SYSTEM definition in postscript.mk. Problems that remain are:
        !          73601: 
        !          73602:   SYSV - System V
        !          73603:     Use the native compiler if you're on an internal System V UTS
        !          73604:     machine.
        !          73605: 
        !          73606:   V9 - Ninth or Tenth Edition
        !          73607:     chown is in /etc and chgrp no longer exists - it's been folded into
        !          73608:     the chown command. You may be forced to build a simple chgrp shell
        !          73609:     script (put it in your bin) that calls chown. If you're not superuser
        !          73610:     set OWNER to your login name and GROUP to your group id.
        !          73611: 
        !          73612:   BSD4_2 - Sun Workstations
        !          73613:     Use the Bourne shell. chown is should be in /usr/etc. Add /usr/etc
        !          73614:     to your PATH and export PATH. If you're not superuser set OWNER to
        !          73615:     your login name and GROUP to your group id.
        !          73616: 
        !          73617: ----------------------
        !          73618: Installing The Package
        !          73619: ----------------------
        !          73620: 
        !          73621: To build (but not install) the default package (i.e. everything named by
        !          73622: TARGETS in postscript.mk) type,
        !          73623: 
        !          73624:        make -f postscript.mk all
        !          73625: 
        !          73626: To build and install the package type,
        !          73627: 
        !          73628:        make -f postscript.mk all install
        !          73629: 
        !          73630: After the package is installed use,
        !          73631: 
        !          73632:        make -f postscript.mk clobber
        !          73633: 
        !          73634: to delete binary files and compiled programs from the source directories.
        !          73635: 
        !          73636: To select part of the package define TARGETS on the command line. For
        !          73637: example,
        !          73638: 
        !          73639:        make -f postscript.mk TARGETS="dpost devpost" all install
        !          73640: 
        !          73641: builds and installs dpost and the PostScript font tables. Quotes hide
        !          73642: white space from the shell.
        !          73643: 
        !          73644: 0707070014231031451006440057030057030000010307400522627504200002100000044463post.src/VERSION------------------------
        !          73645: Version 3.3.2   7/7/92
        !          73646: ------------------------
        !          73647: 
        !          73648:  1: Added UTF support for Plan 9. Only signigficant source code changes were
        !          73649:     in dpost.utf (font.h, font.c, dpost.c). Added common/rune.[hc] so code
        !          73650:     can be compiled elsewere. Remove RUNELIB in commmon/rune.h if fullrune(),
        !          73651:     chartorune(), and runetochar() are available on your system. Original
        !          73652:     DWB 3.3 dpost source is in directory dpost. You should select dpost or
        !          73653:     dpost.utf in postscript.mk. Both compile and install a program called
        !          73654:     dpost so don't pick both!
        !          73655: 
        !          73656:  2: dpost can read old or UTF troff output. Default is whatever is assigned
        !          73657:     to READING (file common/gen.h). You get one or the other, unless troff
        !          73658:     tells dpost what encoding to use (currently x E UTF).
        !          73659: 
        !          73660:  3: Most other translators passed bytes through and so only needed slightly
        !          73661:     modified proglogues and a new encoding scheme (psencoding/UTF.enc). It
        !          73662:     works for Latin1, but still needs a bit more attention. Prologue changes
        !          73663:     were easy and only involved adding lines like,
        !          73664: 
        !          73665:        /show {show} bind def
        !          73666:        /stringwidth {stringwidth} bind def
        !          73667: 
        !          73668:     Guarantees text procedures used in prologues aren't operators and can be
        !          73669:     successfully redefined in UTF.enc. Unbinding means a small but probably
        !          73670:     not noticeable speed penalty. You may not want to include those changes
        !          73671:     on other system.
        !          73672: 
        !          73673:  4: Operator redefinitions means dpost should work in it's own dictionary
        !          73674:     (rather than userdict). Not implemented yet, but should be easy. Only
        !          73675:     potential problem is with picture inclusion when dpost reads UTF.enc.
        !          73676: 
        !          73677: ------------------------
        !          73678: Version 3.3.2   5/15/92
        !          73679: ------------------------
        !          73680: 
        !          73681:  1: postio now outputs all unrecognized status reports - primarly for spooler
        !          73682:     accounting purposes.
        !          73683: 
        !          73684:  2: The makefiles also enable the selection of alternate stream module names
        !          73685:     for streams based DKHOST support in postio.
        !          73686: 
        !          73687:  3: dpost now assumes the optional fifth token in a font mounting command
        !          73688:     (e.g. x font 2 R /usr/me/font/R) is the full pathname of the font. troff
        !          73689:     outputs the pathname when a .fp request contains a third argument that
        !          73690:     begins with a / as in .fp 1 R /usr/me/font/R.
        !          73691: 
        !          73692:  4: By request Latin1's - character has been changed from minus to the smaller
        !          73693:     hyphen character. Added \(dq and \(bs (for " and \ characters) to devpost
        !          73694:     and devLatin1 tables. Also added \(!! and \(?? to devpost tables.
        !          73695: 
        !          73696:  5: Helvetica-Light and Helvetica-LightOblique tables are included as HL and
        !          73697:     HK in devpost and devLatin1, even though fonts aren't generally available.
        !          73698:     Also copy H to HM during an install of devpost and devLatin1 tables.
        !          73699: 
        !          73700:  6: LH and LV are horizontal and vertical AT&T logos from Matthijs Melchior
        !          73701:     with slight adjustments to the scaling of "AT&T". Also adjusted LV so globe
        !          73702:     sits on the baseline.
        !          73703: 
        !          73704:  7: Included L1 and LA outlines in devpost and devLatin1. Adjusted LA scaling
        !          73705:     so size of "AT&T" matches what's in LH and LV. Original PostScript came
        !          73706:     from Matthijs Melchior.
        !          73707: 
        !          73708:  8: Included the "symmetric clippath" version of roundpage.ps as Nroundpage.ps
        !          73709:     in directory postscript/psfiles. Move it to roundpage.ps if you want it to
        !          73710:     be the default.
        !          73711: 
        !          73712:  9: Added a few lines of code to dpost for handling current implementation of
        !          73713:     the portrait/landscape mode macros.
        !          73714: 
        !          73715: 10: The man page for download now documents the -r option and notes that -p
        !          73716:     is for Unix 4.0 lp.
        !          73717: 
        !          73718: ------------------------
        !          73719: Version 3.3.1   4/30/91
        !          73720: ------------------------
        !          73721: 
        !          73722:  1: buildtables stuff has been cleaned up and is now a user level command.
        !          73723:     Uses shell.lib files that are installed with font tables. The devpost
        !          73724:     tables were built on a version 47.0 PS-810. The devLatin1 tables were
        !          73725:     built on a version 51.7 PS-820.
        !          73726: 
        !          73727:  2: The devLatin1 tables provide support for the ISO Latin1 alphabet on
        !          73728:     PostScript printers.
        !          73729: 
        !          73730:  3: All translators support different text font encoding schemes using the
        !          73731:     -E option and *.enc files installed in POSTLIB. The ISO Latin 1 alphabet
        !          73732:     is supported with file /usr/lib/postscript/Latin1.enc.
        !          73733: 
        !          73734:  4: printfont prints a table of the available (encoded) characters in one
        !          73735:     or more PostScript fonts. It also understands the -E option.
        !          73736: 
        !          73737:  5: grabit and hardcopy are two new programs that may be of interest to the
        !          73738:     more serious PostScript programmer. grabit resembles ==, but produces
        !          73739:     output that's usally easier to read. hardcopy redirects output from
        !          73740:     PostScript file output operators (or procedures) to paper. It's useful
        !          73741:     if you don't have direct access to a printer.
        !          73742: 
        !          73743:  6: Prologues and programs are stored together. Other common PostScript files
        !          73744:     are now in the psfiles directory.
        !          73745: 
        !          73746: ------------------------
        !          73747: Verions 3.3    4/16/90
        !          73748: ------------------------
        !          73749: 
        !          73750:  1: The package is now included in DWB. Version numbers are a bit misleading.
        !          73751:     The one in postscript.mk refers to the DWB package.
        !          73752: 
        !          73753:  2: dpost (and troff) now read ASCII font tables. makedev and the old binary
        !          73754:     format are gone.
        !          73755: 
        !          73756:  3: The devpost directory came directly from the DWB package. The font tables
        !          73757:     originally distributed with this package are in directory devopost. They
        !          73758:     are not installed. If possible we recommend you use the devpost tables.
        !          73759:     The old tables can be installed by adding devopost to the TARGETS list in
        !          73760:     file postscript.mk.
        !          73761: 
        !          73762:  4: dpost recognizes two new fields in font tables. Entries for the full
        !          73763:     PostScript font look like,
        !          73764: 
        !          73765:                fontname Times-Roman
        !          73766: 
        !          73767:     The fontname field is helps manage host resident fonts, the DocumentFonts
        !          73768:     comment, and is used to define font name abbreviations like the ones in
        !          73769:     dpost.ps. A font table entry that looks like,
        !          73770: 
        !          73771:                named in prologue
        !          73772: 
        !          73773:     disables the runtime abbreviation for the font - dpost assumes it's already
        !          73774:     in the prologue.
        !          73775: 
        !          73776:  5: Extra font tables included in DWB 3.0's devpost font collection are in
        !          73777:     directory devpost.add. They included here, but should probably not be
        !          73778:     used.
        !          73779: 
        !          73780:  6: Bracket building has been fixed and tested on a wide range of PostScript
        !          73781:     printers. It will likely still not work on many clones. Real problem
        !          73782:     appears to be with Adobe's braceleftbt character.
        !          73783: 
        !          73784:  7: Most of the special tuning code for device emulation has been removed.
        !          73785:     Emulation still works, but there may be cases where it's not as good as
        !          73786:     earlier versions.
        !          73787: 
        !          73788:  8: Several problems with color and reverse video printing have been fixed.
        !          73789: 
        !          73790:  9: buildtables directory has been cleanup up. The template files in directory
        !          73791:     buildtables/devpost.data were used to build the devpost tables.
        !          73792: 
        !          73793: 10: postplot and download are two new programs. postplot is for the System V
        !          73794:     plot package only. Both were written for the Unix 4.0 lp package.
        !          73795: 
        !          73796: 11: postgif is also relatively new - it came from Chi Choy.
        !          73797: 
        !          73798: 12: The translators now rotate clockwise when printing in landscape mode. If
        !          73799:     you want the old behavior set ROTATION to -1 in postscript.mk.
        !          73800: 
        !          73801: 13: forms.ps has been cleaned up some. Better behavior when you print 2
        !          73802:     landscape pages on one sheet.
        !          73803: 
        !          73804: 14: Handling of Datakit code for System V has been changed some. Makefiles
        !          73805:     now expect to find libdk.a and dk.h in standard places (e.g /usr/lib and
        !          73806:     /usr/include). Set DKHOST to TRUE in postscript.mk to get Datakit support
        !          73807:     on System V.
        !          73808: 
        !          73809:     If you're stuck and need to have things behave as they did in the past
        !          73810:     take a look at file postio/postio.mk. Define DKHOSTDIR and uncomment
        !          73811:     three lines and the behavior should be close to what it was.
        !          73812: 
        !          73813: 15: Picture inclusion and color macros are gone. They're included in the DWB
        !          73814:     package, and not here.
        !          73815: 
        !          73816: ------------------------
        !          73817: Version 3.2    11/27/89
        !          73818: ------------------------
        !          73819: 
        !          73820:  1: Implemented height and slant requests in dpost.
        !          73821: 
        !          73822:  2: Modified the behavior of all translators so save objects are no longer left
        !          73823:     on the stack. The original implementation was a mistake and occasionally
        !          73824:     (e.g. picture inclusion with forms.ps) resulted in invalid restores.
        !          73825: 
        !          73826:  3: Fixed the mistake in the external declaration of mesg in postio/slowsend.c.
        !          73827: 
        !          73828:  4: The malloc() call in postdmd (routine dimensions()) is only made if patterns
        !          73829:     is positive.
        !          73830: 
        !          73831:  5: Changed definition of De in draw.ps so savematrix is loaded with the CTM
        !          73832:     whenever De is executed. Original implementation didn't work with forms.ps
        !          73833:     because the CTM is changed with each page image. (4/29/89)
        !          73834: 
        !          73835:  6: Flush stdout when postio is invoked with the -t option - just convenient
        !          73836:     not necessary. (4/30/89)
        !          73837: 
        !          73838:  7: Included a man page for the picture inclusion macros - file man/mpictures.5.
        !          73839:     (5/6/89)
        !          73840: 
        !          73841:  8: Added BoundingBox code to dpost - still needs to go in other translators.
        !          73842:     Most of the work is done in common/bbox.c. (5/7/89)
        !          73843: 
        !          73844:  9: Fiddled with the bracket building stuff in dpost.ps so things finally look
        !          73845:     decent. Was particularly bad on the typesetter.
        !          73846: 
        !          73847: 10: dpost now generates a PageBoundingBox comment and ps_include.c accepts
        !          73848:     the comment. Added -B option to enable/disable the BoundingBox calculations.
        !          73849:     -Bon to enable and -Boff to disable. On by default now, but that may change.
        !          73850:     Add similar code to the rest of the translators (6/20/89).
        !          73851: 
        !          73852: 11: Fixed ps_include.c so it properly handles %%BeginGlobal and %%EndGlobal.
        !          73853:     Added braces and compare page.start to page.end instead of 0.
        !          73854: 
        !          73855: 12: Added xymove(hpos, vpos) for \X'PS ...' request - near the end of devcntrl().
        !          73856:     Must output position info for following PostScript.
        !          73857: 
        !          73858: 13: Added a call to endtext() immediately before the oput() call for \N'...'
        !          73859:     requests. Without it spacing often messed up with -e2 but not -e0.
        !          73860: 
        !          73861: ------------------------
        !          73862: Version 3.1    11/15/88
        !          73863: ------------------------
        !          73864: 
        !          73865:  1: postio can run as one or two processes (-R option) and can establish an
        !          73866:     interactive connection with a postscript printer (-i option). Parsing of
        !          73867:     status reports has been improved. The status query mechanism can be disabled
        !          73868:     using the -q option. An exit status of 1 implies a system error (eg. can't
        !          73869:     open the line) while 2 usually means there was an error in the PostScript
        !          73870:     file. By default postio runs as a single process. The -B, -R, and -q options
        !          73871:     can be used to speed things up some. A version of the program (previously
        !          73872:     supplied in postio.tmp) that can help if you seem to be having flow control
        !          73873:     problems can be obtained using the -S option. It's not generally recommended
        !          73874:     and should only be used as a last resort!
        !          73875: 
        !          73876:  2: Several widthshow encoding schemes have been added to dpost and can reduce
        !          73877:     print time by 20% or more. The method used to encode lines of text can be
        !          73878:     changed on the command line using the -e option. Level 0 produces output
        !          73879:     essentially identical to previous versions of dpost. The default can be
        !          73880:     changed by modifying the definition of ENCODING in ./Makefile. At present
        !          73881:     only level 0 is thoroughly tested, although level 2 (ie. -e2) may be the
        !          73882:     default and is undoubtedly worth a try.
        !          73883: 
        !          73884:  3: dpost now supports color selection and reverse video. Access in troff is via
        !          73885:     the stand-alone macro package ./macros/color. Examples are,
        !          73886: 
        !          73887:        .so /usr/lib/macros/color
        !          73888:        .CL red "this prints in red"
        !          73889:        .CL "white on black" "and this prints white text on a black background"
        !          73890: 
        !          73891:     The postscript procedures that handle color and reverse video can be found
        !          73892:     in ./postscript/color.ps. Additional colors can be added to the colordict
        !          73893:     dictionary defined in ./postscript/color.ps.
        !          73894: 
        !          73895:  4: The dpost drawing routines have been improved and have been moved from the
        !          73896:     prologue (ie. ./postscript/dpost.ps) to ./postscript/draw.ps. That file is
        !          73897:     only included if needed. Drawing routines now support the ability to group
        !          73898:     a series of drawing commands together as a single path. May be useful for
        !          73899:     future versions of pic that wish to fill regions with colors or gray levels.
        !          73900:     Access is via the new "x X BeginPath" and "x X DrawPath" device control
        !          73901:     commands. In addition there's some complicated PostScript code in file
        !          73902:     ./postscript/baseline.ps, that can be used to set text along an arbitrary
        !          73903:     curve. It's terribly confusing and I doubt anyone will have the patience to
        !          73904:     bother to figure it out.
        !          73905: 
        !          73906:  5: A simple picture packing troff preprocessor (picpack) has been included and
        !          73907:     the code needed to recover pictures and text has been added to dpost. The
        !          73908:     program is designed to supplement to the original picture inclusion mechanism,
        !          73909:     and should ONLY be used when absolutely necessary. Using dpost to pull picture
        !          73910:     files into a document is strongly recommended and will always be the more
        !          73911:     efficient and portable approach. picpack simply provides a way to combine
        !          73912:     pictures and text in a single file before dpost is executed. It may help in
        !          73913:     a distributed printing environment where the user runs everything through
        !          73914:     troff while a spooling daemon (eg. lp) handles the postprocessing. There
        !          73915:     are serious disadvantages to this approach, with perhaps the most important
        !          73916:     being that troff output files (when picpack is used) will likely result in
        !          73917:     files that can no longer be reliably passed through other important post-
        !          73918:     processors like proof.
        !          73919: 
        !          73920:  6: Code to handle host resident PostScript fonts in dpost has been tested and
        !          73921:     finally works. The -H option points dpost to a host resident font directory,
        !          73922:     which by default is NULL. Host resident font files stored in that directory
        !          73923:     must be assigned a name that corresponds to the one or two character troff
        !          73924:     font name. Width tables must also be built (see buildtables/README), the new
        !          73925:     binary font files must be installed in /usr/lib/font/devpost, and a mapping
        !          73926:     definition from troff's name to the PostScript font name must be added to
        !          73927:     ./postscript/dpost.ps.
        !          73928: 
        !          73929:  7: The default pattern length in postdmd has been reduced to from 10 to 6 bytes.
        !          73930:     Printers with fast processors (eg. PS-810s) often benefit from a further
        !          73931:     reduction, while optimal performance on slower printers (eg PS-800s) may
        !          73932:     require larger pattern sizes. The pattern length can be set using the -b
        !          73933:     option. Increasing the pattern size usually increases the size of the output
        !          73934:     file.
        !          73935: 
        !          73936:  8: Line drawing in posttek and postbgi includes code that automatically ties
        !          73937:     lines to device space coordinates when you select a non-zero width. Helps
        !          73938:     eliminate the variation in line thickness that many observed. The default
        !          73939:     line width in posttek and postbgi is still 0 (which gets 1 pixel). If you
        !          73940:     want a different default change the definition of variable linewidth in files
        !          73941:     ./postscript/posttek.ps and ./postscript/postbgi.ps.
        !          73942: 
        !          73943:  9: Defocused lines in posttek have been fixed.
        !          73944: 
        !          73945: 10: postbgi now supports color and can be used to translate most PRISM (color
        !          73946:     BGI) jobs. Special device specific tuning needed for many PRISM jobs can be
        !          73947:     enabled by using the -P"/prism true" option. Missing pieces (eg. subroutines)
        !          73948:     needed for translating PRISM jobs, have also been implemented.
        !          73949: 
        !          73950: 11: postreverse can reverse the pages in documents that conform to Adobe's 1.0
        !          73951:     or 2.0 file structuring conventions, and it works with all the translators in
        !          73952:     this package. The new version is backwards compatible, but files produced by
        !          73953:     the new translators should not be passed through old versions of postreverse.
        !          73954:     The likely result will be no output at all. If you choose to do a partial
        !          73955:     installation put the new postreverse up first!
        !          73956: 
        !          73957: 12: All translators attempt to conform to Adobe's Version 2.0 file structuring
        !          73958:     conventions. dpost output falls short, but only in the interest of efficiency.
        !          73959:     Passing dpost output through postreverse (perhaps with the -r option) produces
        !          73960:     a minimally conforming PostScript file.
        !          73961: 
        !          73962: 13: All the translators now support three options that pass arbitrary PostScript
        !          73963:     through to the output file. The -P and -C options add a string and the
        !          73964:     contents of a file respectively immediately after the prologue. It's assumed
        !          73965:     whatever is added is legitimate PostScript - there is no checking. In each
        !          73966:     case the added PostScript code becomes part of the job's global environment.
        !          73967: 
        !          73968:     The -R option can be used to request special action (eg. manualfeed) on a
        !          73969:     global or page basis.  The argument should be "request", "request:page", or
        !          73970:     "request:page:file". If page is given as 0 or omitted the request applies
        !          73971:     globally. If file is omitted the lookup is in /usr/lib/postscript/ps.requests.
        !          73972:     The collection of recognized requests can be modified or extended by changing
        !          73973:     /usr/lib/postscript/ps.requests.
        !          73974: 
        !          73975: 14: PostScript code (from Johnathan Shopiro) that produces bolder versions of the
        !          73976:     Courier fonts has been included in file postscript/fatcourier.ps. The file
        !          73977:     can  be added to individual prologue files (eg. dpost.ps) or pulled in as
        !          73978:     needed using the -C option.
        !          73979: 
        !          73980: 15: postmd is a new program that can be used to display a large matrix as a gray
        !          73981:     scale image. May help if you're looking for patterns in a large matrix. A very
        !          73982:     optimistic estimate suggests you can display up to a 600x600 matrix (with five
        !          73983:     different shades of gray) on 300dpi printer using 8.5x11 inch paper.
        !          73984: 
        !          73985: 16: What's available in buildtables has been cleaned up and works well with the
        !          73986:     new version of postio. It can be used to have PostScript printers build troff
        !          73987:     width tables for both printer and host resident fonts.
        !          73988: 
        !          73989: 17: The PostScript bind operator has been applied to all procedures that are
        !          73990:     expected to be executed more than once. Redefined save and restore procedures
        !          73991:     are no longer needed and saverestore.ps is not included in this package.
        !          73992: 
        !          73993: 18: The bizarre PostScript code used to get to the upper left corner of a page
        !          73994:     in old versions of dpost.ps and postprint.ps has been replaced by something
        !          73995:     that's at least slightly more comprehensible. All prologues have also been
        !          73996:     changed so picture inclusion (eg. including a pic picture that's been run
        !          73997:     through troff and dpost) should work better than previous versions. Still
        !          73998:     missing (from most translators) is the %%BoundingBox comment and even when
        !          73999:     it's put out (by postdmd) only the dimensions are correct - sorry!
        !          74000: 
        !          74001: 19: The careless mistake in the DKHOST section of postio that some noticed belongs
        !          74002:     to me (not Allan Buckwalter) and has now been fixed.
        !          74003: 
        !          74004: 20: By default all prologues still use the current clipping path to determine page
        !          74005:     dimensions, but that behavior can be disabled by setting boolean useclippath
        !          74006:     (in each prologue) to false. In that case the page dimensions will be taken
        !          74007:     from array pagebbox, which by default is initialized to 8x11 inch paper. The
        !          74008:     -P options (in each translator) can change useclippth and pagebbox.
        !          74009: 
        !          74010: 21: New in the misc directory is sample lp support from Maryann Csaszar and a
        !          74011:     simple program that converts host resident font files obtained from a Macintosh
        !          74012:     to a format that works on Unix.
        !          74013: 
        !          74014: 0707070014231311010407550057030057030000021030470522633074100002300000000000post.src/dpost.utf0707070014231311021006440057030057030000011031200522627504400003200000002742post.src/dpost.utf/READMEThis is the UTF version.
        !          74015: 
        !          74016: Troff to PostScript translator. The big change is in the font table
        !          74017: routines. The old binary format and makedev are gone. Troff and dpost
        !          74018: now both read ASCII tables. Translating the ASCII font tables in dpost
        !          74019: (and troff) means some startup overhead. Both programs run a bit slower,
        !          74020: but it's a small price to pay for the added flexibility.
        !          74021: 
        !          74022: Long PostScript font names can now be included in the font tables.
        !          74023: They should follow the fontname keyword as in,
        !          74024: 
        !          74025:        fontname Times-Roman
        !          74026: 
        !          74027: The fontname field helps with the DocumentFonts comment, font name
        !          74028: abbreviations (formally required to be in the prologue), and is used
        !          74029: to manage host resident fonts.
        !          74030: 
        !          74031: dpost can also now calculate a reasonably tight BoundingBox, which
        !          74032: helps picture inclusion. By default the calculations are disabled.
        !          74033: Use the -B option when you BoundingBox and PageBoundingBox comments.
        !          74034: If you're stubborn and always want the comment set dobbox (in file
        !          74035: dpost.c) to TRUE. You'll still need -B to get the the best fit.
        !          74036: 
        !          74037: Most other changes are bug fixes. Color support has been improved,
        !          74038: and now works with the drawing routines. The different text encoding
        !          74039: schemes are all still in. Level 2 is well tested and is now the default.
        !          74040: For a different default change DFLTENCODING (file dpost.h). Don't make
        !          74041: level 3 the default unless you can live with ragged right margins.
        !          74042: 
        !          74043: A typical command line would be,
        !          74044: 
        !          74045:     pic file | tbl | eqn | troff -mm | dpost >file.ps
        !          74046: 
        !          74047: file.ps is PostScript and can be sent directly to a printer.
        !          74048: 
        !          74049: 0707070014231307571006400057030057030000011011450522633074100004000000005355post.src/dpost.utf/dpost.utf.mkMAKE=/bin/make
        !          74050: MAKEFILE=dpost.utf.mk
        !          74051: 
        !          74052: SYSTEM=V9
        !          74053: VERSION=3.3.2
        !          74054: 
        !          74055: GROUP=bin
        !          74056: OWNER=bin
        !          74057: 
        !          74058: FONTDIR=/usr/lib/font
        !          74059: MAN1DIR=/tmp
        !          74060: POSTBIN=/usr/bin/postscript
        !          74061: POSTLIB=/usr/lib/postscript
        !          74062: 
        !          74063: COMMONDIR=../common
        !          74064: 
        !          74065: CFLGS=-O
        !          74066: LDFLGS=-s
        !          74067: 
        !          74068: CFLAGS=$(CFLGS) -I$(COMMONDIR)
        !          74069: LDFLAGS=$(LDFLGS)
        !          74070: 
        !          74071: HFILES=dpost.h\
        !          74072:        font.h\
        !          74073:        motion.h\
        !          74074:        ps_include.h\
        !          74075:        $(COMMONDIR)/comments.h\
        !          74076:        $(COMMONDIR)/ext.h\
        !          74077:        $(COMMONDIR)/gen.h\
        !          74078:        $(COMMONDIR)/path.h\
        !          74079:        $(COMMONDIR)/rune.h
        !          74080: 
        !          74081: OFILES=dpost.o\
        !          74082:        draw.o\
        !          74083:        color.o\
        !          74084:        font.o\
        !          74085:        pictures.o\
        !          74086:        ps_include.o\
        !          74087:        $(COMMONDIR)/bbox.o\
        !          74088:        $(COMMONDIR)/glob.o\
        !          74089:        $(COMMONDIR)/misc.o\
        !          74090:        $(COMMONDIR)/request.o\
        !          74091:        $(COMMONDIR)/rune.o\
        !          74092:        $(COMMONDIR)/tempnam.o
        !          74093: 
        !          74094: all : dpost
        !          74095: 
        !          74096: install : all
        !          74097:        @if [ ! -d "$(POSTBIN)" ]; then \
        !          74098:            mkdir $(POSTBIN); \
        !          74099:            chmod 755 $(POSTBIN); \
        !          74100:            chgrp $(GROUP) $(POSTBIN); \
        !          74101:            chown $(OWNER) $(POSTBIN); \
        !          74102:        fi
        !          74103:        @if [ ! -d "$(POSTLIB)" ]; then \
        !          74104:            mkdir $(POSTLIB); \
        !          74105:            chmod 755 $(POSTLIB); \
        !          74106:            chgrp $(GROUP) $(POSTLIB); \
        !          74107:            chown $(OWNER) $(POSTLIB); \
        !          74108:        fi
        !          74109:        cp dpost $(POSTBIN)/dpost
        !          74110:        @chmod 755 $(POSTBIN)/dpost
        !          74111:        @chgrp $(GROUP) $(POSTBIN)/dpost
        !          74112:        @chown $(OWNER) $(POSTBIN)/dpost
        !          74113:        cp dpost.ps $(POSTLIB)/dpost.ps
        !          74114:        @chmod 644 $(POSTLIB)/dpost.ps
        !          74115:        @chgrp $(GROUP) $(POSTLIB)/dpost.ps
        !          74116:        @chown $(OWNER) $(POSTLIB)/dpost.ps
        !          74117:        cp draw.ps $(POSTLIB)/draw.ps
        !          74118:        @chmod 644 $(POSTLIB)/draw.ps
        !          74119:        @chgrp $(GROUP) $(POSTLIB)/draw.ps
        !          74120:        @chown $(OWNER) $(POSTLIB)/draw.ps
        !          74121:        cp dpost.1 $(MAN1DIR)/dpost.1
        !          74122:        @chmod 644 $(MAN1DIR)/dpost.1
        !          74123:        @chgrp $(GROUP) $(MAN1DIR)/dpost.1
        !          74124:        @chown $(OWNER) $(MAN1DIR)/dpost.1
        !          74125: 
        !          74126: clean :
        !          74127:        rm -f *.o
        !          74128: 
        !          74129: clobber : clean
        !          74130:        rm -f dpost
        !          74131: 
        !          74132: dpost : $(OFILES)
        !          74133:        $(CC) $(CFLAGS) $(LDFLAGS) -o dpost $(OFILES) -lm
        !          74134: 
        !          74135: dpost.o : $(HFILES)
        !          74136: color.o : $(COMMONDIR)/ext.h $(COMMONDIR)/gen.h
        !          74137: draw.o : motion.h $(COMMONDIR)/ext.h $(COMMONDIR)/gen.h
        !          74138: font.o : font.h $(COMMONDIR)/gen.h $(COMMONDIR)/rune.h
        !          74139: pictures.o : $(COMMONDIR)/comments.h $(COMMONDIR)/gen.h
        !          74140: ps_include.o : ps_include.h
        !          74141: 
        !          74142: $(COMMONDIR)/bbox.o\
        !          74143: $(COMMONDIR)/glob.o\
        !          74144: $(COMMONDIR)/misc.o\
        !          74145: $(COMMONDIR)/request.o\
        !          74146: $(COMMONDIR)/rune.o\
        !          74147: $(COMMONDIR)/tempnam.o :
        !          74148:        @cd $(COMMONDIR); $(MAKE) -f common.mk SYSTEM=$(SYSTEM) `basename $@`
        !          74149: 
        !          74150: changes :
        !          74151:        @trap "" 1 2 3 15; \
        !          74152:        sed \
        !          74153:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
        !          74154:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
        !          74155:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
        !          74156:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
        !          74157:            -e "s'^FONTDIR=.*'FONTDIR=$(FONTDIR)'" \
        !          74158:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
        !          74159:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
        !          74160:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
        !          74161:        $(MAKEFILE) >XXX.mk; \
        !          74162:        mv XXX.mk $(MAKEFILE); \
        !          74163:        sed \
        !          74164:            -e "s'^.ds dF.*'.ds dF $(FONTDIR)'" \
        !          74165:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
        !          74166:        dpost.1 >XXX.1; \
        !          74167:        mv XXX.1 dpost.1
        !          74168: 
        !          74169: 0707070014231311041006440057030057030000011031400522627504500003300000015654post.src/dpost.utf/color.c/*
        !          74170:  *
        !          74171:  * Routines that handle color requests passed through as device control commands
        !          74172:  * in the form "x X SetColor:red". The following PostScript procedures are needed:
        !          74173:  *
        !          74174:  *     setcolor
        !          74175:  *
        !          74176:  *       mark /color setcolor mark
        !          74177:  *       mark /color1 /color2 setcolor mark
        !          74178:  *
        !          74179:  *         Called whenever we want to change PostScript's current color graphics
        !          74180:  *         state parameter. One or two color arguments can be given. In each case
        !          74181:  *         the colors are looked up in the PostScript colordict dictionary that's
        !          74182:  *         defined in *colorfile. Two named colors implies reverse video printing
        !          74183:  *         with the background given in /color2 and the text printed in /color1.
        !          74184:  *         Unknown colors are mapped into defaults - black for a single color and
        !          74185:  *         white on black for reverse video.
        !          74186:  *
        !          74187:  *     drawrvbox
        !          74188:  *
        !          74189:  *       leftx rightx drawrvbox -
        !          74190:  *
        !          74191:  *         Fills a box that extends from leftx to rightx with the background color
        !          74192:  *         that was requested when setcolor set things up for reverse video mode.
        !          74193:  *         The vertical extent of the box is determined using FontBBox just before
        !          74194:  *         the first string is printed, and the height remains in effect until
        !          74195:  *         there's an explicit color change. In otherwords font or size changes
        !          74196:  *         won't always produce correct result in reverse video mode.
        !          74197:  *
        !          74198:  *     setdecoding
        !          74199:  *
        !          74200:  *       num setdecoding -
        !          74201:  *
        !          74202:  *         Selects the text decoding procedure (ie. what's assigned to PostScript
        !          74203:  *         procedure t) from the decodingdefs array defined in the prologue. num
        !          74204:  *         should be the value assigned to variable encoding (in dpost) and will
        !          74205:  *         remain constant throughout a job, unless special features, like reverse
        !          74206:  *         video printing, are requested. The text encoding scheme can be set on
        !          74207:  *         the command line using the -e option. Print time and the size of the
        !          74208:  *         output file will usually decrease as the value assigned to encoding
        !          74209:  *         increases.
        !          74210:  *
        !          74211:  *
        !          74212:  * The recognized collection of "x X SetColor:" commands are:
        !          74213:  *
        !          74214:  *     x X SetColor:                           selects black
        !          74215:  *     x X SetColor:color                      selects color
        !          74216:  *     x X SetColor:color1 on color2           reverse video
        !          74217:  *     x X SetColor:color1 color2              reverse video again
        !          74218:  *     x X SetColor:num1 num2 num3 rgb         explicit rgb color request
        !          74219:  *     x X SetColor:num1 num2 num3 hsb         explicit hsb color request
        !          74220:  *
        !          74221:  * In the last three examples num1, num2, and num3 should be numbers between 0 and
        !          74222:  * 1 inclusive and are passed on as aguments to the approrpriate PostScript color
        !          74223:  * command (eg. setrgbcolor). Unknown color names (ie. the ones that setcolor
        !          74224:  * doesn't find in colordict) are mapped into defaults. For one color the default
        !          74225:  * is black, while for reverse video it's white text on a black background.
        !          74226:  *
        !          74227:  * dpost makes sure the current color is maintained across page boundaries, which
        !          74228:  * may not be what you want if you're using a macro package like mm that puts out
        !          74229:  * page footers and headers. Adding a color request to troff and keeping track of
        !          74230:  * the color in each environment may be the best solution.
        !          74231:  *
        !          74232:  * To get reverse video printing follow the "x X SetColor:" command with two or
        !          74233:  * three arguments. "x X SetColor:white on black" or "x X SetColor:white black"
        !          74234:  * both produce white text on a black background. Any two colors named in colordict
        !          74235:  * (in file *colorfile) can be chosen so "x X SetColor:yellow on blue" also works.
        !          74236:  * Each reverse video mode request selects the vertical extent of the background
        !          74237:  * box based on the font and size in use just before the first string is printed.
        !          74238:  * Font and/or size changes aren't guaranteed to work properly in reverse video
        !          74239:  * printing.
        !          74240:  *
        !          74241:  */
        !          74242: 
        !          74243: #include <stdio.h>
        !          74244: #include <ctype.h>
        !          74245: 
        !          74246: #include "gen.h"                       /* general purpose definitions */
        !          74247: #include "ext.h"                       /* external variable definitions */
        !          74248: 
        !          74249: #define DEFAULTCOLOR   "black"
        !          74250: 
        !          74251: char   color[50] = DEFAULTCOLOR;       /* current color */
        !          74252: int    gotcolor = FALSE;               /* TRUE after *colorfile is downloaded */
        !          74253: int    wantcolor = FALSE;              /* TRUE if we really ask for a color */
        !          74254: 
        !          74255: /*
        !          74256:  *
        !          74257:  * All these should be defined in dpost.c.
        !          74258:  *
        !          74259:  */
        !          74260: 
        !          74261: extern int     lastend;
        !          74262: extern int     encoding;
        !          74263: extern int     maxencoding;
        !          74264: extern int     realencoding;
        !          74265: 
        !          74266: extern char    *colorfile;
        !          74267: extern FILE    *tf;
        !          74268: 
        !          74269: /*****************************************************************************/
        !          74270: 
        !          74271: getcolor()
        !          74272: 
        !          74273: {
        !          74274: 
        !          74275: /*
        !          74276:  *
        !          74277:  * Responsible for making sure the PostScript color procedures are downloaded from
        !          74278:  * *colorfile. Done at most once per job, and only if the job really uses color.
        !          74279:  * For now I've decided not to quit if we can't read the color file.
        !          74280:  *
        !          74281:  */
        !          74282: 
        !          74283:     if ( gotcolor == FALSE )
        !          74284:        exportfile(colorfile);
        !          74285: 
        !          74286:     if ( tf == stdout )
        !          74287:        gotcolor = TRUE;
        !          74288: 
        !          74289: }   /* End of getcolor */
        !          74290: 
        !          74291: /*****************************************************************************/
        !          74292: 
        !          74293: newcolor(name)
        !          74294: 
        !          74295:     char       *name;                  /* of the color */
        !          74296: 
        !          74297: {
        !          74298: 
        !          74299:     char       *p;                     /* next character in *name */
        !          74300:     int                i;                      /* goes in color[i] */
        !          74301: 
        !          74302: /*
        !          74303:  *
        !          74304:  * Converts *name to lower case and saves the result in color[] for use as the
        !          74305:  * current color. The first time something other than DEFAULTCOLOR is requested
        !          74306:  * sets wantcolor to TRUE. Characters are converted to lower case as they're put
        !          74307:  * in color[] and we quit when we find a newline or get to the end of *name. The
        !          74308:  * isupper() test is for Berkley systems.
        !          74309:  *
        !          74310:  */
        !          74311: 
        !          74312:     for ( p = name; *p && (*p == ' ' || *p == ':'); p++ ) ;
        !          74313: 
        !          74314:     for ( i = 0; i < sizeof(color) - 1 && *p != '\n' && *p; i++, p++ )
        !          74315:        if ( isupper(*p) )
        !          74316:            color[i] = tolower(*p);
        !          74317:        else color[i] = *p;
        !          74318: 
        !          74319:     if ( i == 0 )
        !          74320:        strcpy(color, DEFAULTCOLOR);
        !          74321:     else color[i] = '\0';
        !          74322: 
        !          74323:     if ( strcmp(color, DEFAULTCOLOR) != 0 )
        !          74324:        wantcolor = TRUE;
        !          74325: 
        !          74326: }   /* End of newcolor */
        !          74327: 
        !          74328: /*****************************************************************************/
        !          74329: 
        !          74330: setcolor()
        !          74331: 
        !          74332: {
        !          74333: 
        !          74334:     int                newencoding;            /* text encoding scheme that's needed */
        !          74335:     char       *p;                     /* for converting what's in color[] */
        !          74336: 
        !          74337: /*
        !          74338:  *
        !          74339:  * Sets the color being used by the printer to whatever's stored as the current
        !          74340:  * color (ie. the string in color[]). wantcolor is only set to TRUE if we've been
        !          74341:  * through newcolor() and asked for something other than DEFAULTCOLOR (probably
        !          74342:  * black). While in reverse video mode encoding gets set to maxencoding + 1 in
        !          74343:  * dpost and 0 on the printer. Didn't see much point in trying to extend reverse
        !          74344:  * video to all the different encoding schemes. realencoding is restored when we
        !          74345:  * leave reverse video mode.
        !          74346:  *
        !          74347:  */
        !          74348: 
        !          74349:     if ( wantcolor == TRUE ) {
        !          74350:        flushtext();
        !          74351:        getcolor();
        !          74352: 
        !          74353:        lastend = -1;
        !          74354:        newencoding = realencoding;
        !          74355: 
        !          74356:        if ( islower(color[0]) == 0 )           /* explicit rgb or hsb request */
        !          74357:            fprintf(tf, "%s\n", color);
        !          74358:        else {
        !          74359:            putc('/', tf);
        !          74360:            for ( p = color; *p && *p != ' '; p++ )
        !          74361:                putc(*p, tf);
        !          74362:            for ( ; *p && *p == ' '; p++ ) ;
        !          74363:            if ( strncmp(p, "on ", 3) == 0 ) p += 3;
        !          74364:            if ( *p != '\0' ) {
        !          74365:                fprintf(tf, " /%s", p);
        !          74366:                newencoding = maxencoding + 1;
        !          74367:            }   /* End if */
        !          74368:            fprintf(tf, " setcolor\n");
        !          74369:        }   /* End else */
        !          74370: 
        !          74371:        if ( newencoding != encoding ) {
        !          74372:            encoding = newencoding;
        !          74373:            fprintf(tf, "%d setdecoding\n", encoding);
        !          74374:            resetpos();
        !          74375:        }   /* End if */
        !          74376:     }  /* End if */
        !          74377: 
        !          74378: }   /* End of setcolor */
        !          74379: 
        !          74380: /*****************************************************************************/
        !          74381: 
        !          74382: 0707070014231307611006400057030057030000011006420522633074100003300000012240post.src/dpost.utf/dpost.1.ds dF /usr/lib/font
        !          74383: .ds dQ /usr/lib/postscript
        !          74384: .TH DPOST 1 "DWB 3.2"
        !          74385: .SH NAME
        !          74386: .B dpost
        !          74387: \-
        !          74388: .B troff
        !          74389: postprocessor for PostScript printers
        !          74390: .SH SYNOPSIS
        !          74391: \*(mBdpost\f1
        !          74392: .OP "" options []
        !          74393: .OP "" files []
        !          74394: .SH DESCRIPTION
        !          74395: .B dpost
        !          74396: translates
        !          74397: .I files
        !          74398: created by
        !          74399: .BR troff (1)
        !          74400: into PostScript and writes the results on the
        !          74401: standard output.
        !          74402: If no
        !          74403: .I files
        !          74404: are specified, or if
        !          74405: .OP \-
        !          74406: is one of the input
        !          74407: .IR files ,
        !          74408: the standard input is read.
        !          74409: The following
        !          74410: .I options
        !          74411: are understood:
        !          74412: .TP 0.75i
        !          74413: .OP \-c num
        !          74414: Print
        !          74415: .I num
        !          74416: copies of each page.
        !          74417: By default only one copy is printed.
        !          74418: .TP
        !          74419: .OP \-m num
        !          74420: Magnify each logical page by the factor
        !          74421: .IR num
        !          74422: (default is 1.0).
        !          74423: Pages are scaled uniformly about the origin,
        !          74424: which is located near the upper left corner of
        !          74425: each page.
        !          74426: .TP
        !          74427: .OP \-n num
        !          74428: Print
        !          74429: .I num
        !          74430: logical pages on each piece of paper,
        !          74431: where
        !          74432: .I num
        !          74433: can be any positive integer.
        !          74434: By default,
        !          74435: .I num
        !          74436: is set to 1.
        !          74437: .TP
        !          74438: .OP \-o list
        !          74439: Print pages whose numbers are given in the comma-separated
        !          74440: .IR list .
        !          74441: The list contains single numbers
        !          74442: .I N
        !          74443: and ranges
        !          74444: .IR N1\-\|N2 .
        !          74445: A missing
        !          74446: .I N1
        !          74447: means the lowest numbered page, a missing
        !          74448: .I N2
        !          74449: means the highest.
        !          74450: .TP
        !          74451: .OP \-p mode
        !          74452: Print
        !          74453: .I files
        !          74454: in either \*(mBportrait\fP or \*(mBlandscape\fP mode.
        !          74455: Only the first character of
        !          74456: .I mode
        !          74457: is significant.
        !          74458: The default
        !          74459: .I mode
        !          74460: is \*(mBportrait\fP.
        !          74461: .TP
        !          74462: .OP \-w num
        !          74463: Set the line width used to implement
        !          74464: .B troff
        !          74465: graphics commands to
        !          74466: .I num
        !          74467: points, where a point is approximately 1/72
        !          74468: of an inch.
        !          74469: By default
        !          74470: .I num
        !          74471: is set to 0.3 points.
        !          74472: .TP
        !          74473: .OP \-x num
        !          74474: Translate the origin
        !          74475: .I num
        !          74476: inches along the positive x axis.
        !          74477: The default
        !          74478: coordinate system has the origin fixed near the
        !          74479: upper left corner of the page, with positive
        !          74480: x to the right and positive y down the page.
        !          74481: Positive
        !          74482: .I num
        !          74483: moves everything right.
        !          74484: The default offset is 0 inches.
        !          74485: .TP
        !          74486: .OP \-y num
        !          74487: Translate the origin
        !          74488: .I num
        !          74489: inches along the positive y axis.
        !          74490: Positive
        !          74491: .I num
        !          74492: moves text down the page.
        !          74493: The default offset is 0.
        !          74494: .TP
        !          74495: .OP \-B
        !          74496: Include
        !          74497: .MW %%BoundingBox
        !          74498: comments in the output file.
        !          74499: Should only be used when the comments are needed
        !          74500: for picture inclusion.
        !          74501: Output is forced onto an 8.5\(mu11-inch page.
        !          74502: .TP
        !          74503: .OP \-E name
        !          74504: Set the character encoding for text fonts to
        !          74505: .IR name .
        !          74506: Requesting
        !          74507: .I name
        !          74508: means include file
        !          74509: .MI \*(dQ/ name .enc \f1.
        !          74510: A nonexistent encoding file is silently ignored.
        !          74511: There is no default.
        !          74512: .TP
        !          74513: .OP \-F dir
        !          74514: Use
        !          74515: .I dir
        !          74516: as the font directory.
        !          74517: The default
        !          74518: .I dir
        !          74519: is
        !          74520: .MR \*(dF ,
        !          74521: and
        !          74522: .B dpost
        !          74523: reads
        !          74524: .SM ASCII
        !          74525: font files from directory
        !          74526: .MR \*(dF/devpost .
        !          74527: .TP
        !          74528: .OP \-H dir
        !          74529: Use
        !          74530: .I dir
        !          74531: as the host-resident font directory.
        !          74532: A file in
        !          74533: .I dir
        !          74534: that matches the name of the
        !          74535: .B troff
        !          74536: font is assumed to be a host resident font program
        !          74537: and is included in
        !          74538: .B dpost
        !          74539: output.
        !          74540: There is no default.
        !          74541: .TP
        !          74542: .OP \-L \^file
        !          74543: Use
        !          74544: .I file
        !          74545: as the PostScript prologue.
        !          74546: The default is
        !          74547: .MR \*(dQ/dpost.ps .
        !          74548: .TP
        !          74549: .OP \-T name
        !          74550: Use font files for device
        !          74551: .I name
        !          74552: as the best description of available PostScript fonts.
        !          74553: By default,
        !          74554: .I name
        !          74555: is
        !          74556: \*(mBpost\fP
        !          74557: and
        !          74558: .B dpost
        !          74559: reads
        !          74560: .SM ASCII
        !          74561: files from
        !          74562: .MR \*(dF/devpost .
        !          74563: .br
        !          74564: .ne 1i
        !          74565: .PP
        !          74566: Three options allow insertion of arbitrary PostScript
        !          74567: at controlled points in the translation process:
        !          74568: .TP 0.75i
        !          74569: .OP \-C \^file
        !          74570: Copy
        !          74571: .I file
        !          74572: to the output file;
        !          74573: .I file
        !          74574: must contain legitimate PostScript.
        !          74575: .TP
        !          74576: .OP \-P string
        !          74577: Include
        !          74578: .I string
        !          74579: in the output file;
        !          74580: .I string
        !          74581: must be legitimate PostScript.
        !          74582: .TP
        !          74583: .OP \-R action
        !          74584: Requests special
        !          74585: .I action
        !          74586: (e.g.,
        !          74587: .MR manualfeed )
        !          74588: on a per page or global basis.
        !          74589: The
        !          74590: .I action
        !          74591: string can be given as
        !          74592: .IR request \|,
        !          74593: .IM request : page\f1\|,
        !          74594: or
        !          74595: .IM request : page : file\f1\|.
        !          74596: If
        !          74597: .I page
        !          74598: is omitted or given as 0 the request
        !          74599: applies to all pages.
        !          74600: If
        !          74601: .I file
        !          74602: is omitted the request
        !          74603: lookup is done in
        !          74604: .MR \*(dQ/ps.requests .
        !          74605: .PP
        !          74606: All
        !          74607: .I files
        !          74608: should be prepared by
        !          74609: .B troff
        !          74610: for the same device.
        !          74611: Device tables that describe real PostScript fonts that can be
        !          74612: used by
        !          74613: .B dpost
        !          74614: should include
        !          74615: .EX
        !          74616: PDL PostScript
        !          74617: .EE
        !          74618: in their
        !          74619: .SM DESC
        !          74620: file.
        !          74621: Tables that depend on a non-standard character set encoding indicate
        !          74622: that fact by an
        !          74623: .MW Encoding
        !          74624: entry in their
        !          74625: .SM DESC
        !          74626: file.
        !          74627: For example,
        !          74628: .EX
        !          74629: Encoding Latin1
        !          74630: .EE
        !          74631: means include file
        !          74632: .MR \*(dQ/Latin1.enc .
        !          74633: The
        !          74634: .OP \-E
        !          74635: option overrides the
        !          74636: .SM DESC
        !          74637: setting.
        !          74638: .SH EXAMPLES
        !          74639: .PP
        !          74640: A typical command line might be:
        !          74641: .EX
        !          74642: pic  \f2files\fP | tbl | eqn | troff -mm | dpost
        !          74643: .EE
        !          74644: .SH DIAGNOSTICS
        !          74645: A 0 exit status is returned if
        !          74646: .I files
        !          74647: were successfully translated,
        !          74648: while 2 often indicates a syntax error in the input
        !          74649: .IR files .
        !          74650: .SH WARNINGS
        !          74651: .PP
        !          74652: .B dpost
        !          74653: output does not usually conform to Adobe's file-structuring conventions.
        !          74654: Send the output through
        !          74655: .B postreverse
        !          74656: to produce a minimally conforming PostScript file.
        !          74657: .PP
        !          74658: Emulation is expensive and does not always produce satisfactory results.
        !          74659: No attempt has been made to implement the character sets or fonts available
        !          74660: on all devices supported by
        !          74661: .BR troff .
        !          74662: Missing characters are replaced by white space, and unrecognized
        !          74663: fonts default to one of the Times fonts (e.g.,
        !          74664: .MR R ,
        !          74665: .MR I ,
        !          74666: .MR B ,
        !          74667: or
        !          74668: .MR BI ).
        !          74669: .SH FILES
        !          74670: .MW \*(dF/devpost/*
        !          74671: .br
        !          74672: .MW \*(dF/devpost/charlib/*
        !          74673: .br
        !          74674: .MW \*(dQ/dpost.ps
        !          74675: .br
        !          74676: .MW \*(dQ/color.ps
        !          74677: .br
        !          74678: .MW \*(dQ/draw.ps
        !          74679: .br
        !          74680: .MW \*(dQ/forms.ps
        !          74681: .br
        !          74682: .MW \*(dQ/ps.requests
        !          74683: .SH SEE ALSO
        !          74684: .BR buildtables (1),
        !          74685: .BR postio (1),
        !          74686: .BR postprint (1),
        !          74687: .BR postreverse (1),
        !          74688: .BR psencoding (1),
        !          74689: .BR troff (1),
        !          74690: .BR font (5),
        !          74691: .BR troff (5)
        !          74692: 0707070014231311061006440057030057030000011032000522627504600003300000134046post.src/dpost.utf/dpost.c/*
        !          74693:  *
        !          74694:  * dpost - troff post-processor for PostScript printers.
        !          74695:  *
        !          74696:  * A program that translates output generated by the device independent troff
        !          74697:  * into PostScript. Much was borrowed from dimpress and dps (formally dlzw),
        !          74698:  * and even though the code has changed, credit has to be given to Richard
        !          74699:  * Flood for his early work on the PostScript driver.
        !          74700:  *
        !          74701:  * The big change is in the font table routines. The old binary format and
        !          74702:  * makedev are gone. dpost and troff now read ASCII tables, and both skip
        !          74703:  * unrecognized entries in the ASCII tables. That means problems, like where
        !          74704:  * to put the real name of the PostScript font, have disappeared. The added
        !          74705:  * flexibility means some overhead translating the ASCII tables, but the
        !          74706:  * overhead isn't too bad.
        !          74707:  *
        !          74708:  * dpost can also now calculate a reasonably tight BoundingBox, which helps
        !          74709:  * picture inclusion. The calculations, by default, are disabled. Couldn't
        !          74710:  * justify the overhead for a comment, particularly one that's only needed
        !          74711:  * occasionally. Use the -B option to get the comment.
        !          74712:  *
        !          74713:  * Output produced by dpost is still nonconforming. Definitions made in pages
        !          74714:  * and exported to the job's global environment are the primary problem. It's
        !          74715:  * an efficient approach, but means pages are not independent. Violations are
        !          74716:  * bracketed by %%BeginGlobal and %%EndGlobal comments and can be pulled into
        !          74717:  * the prologue by utility programs (like postreverse) that recognize the new
        !          74718:  * comments.
        !          74719:  *
        !          74720:  * The program handles files formatted for any device, although the best and
        !          74721:  * most efficient output is generated when the font and description files
        !          74722:  * match PostScript's resident fonts. Emulation is relatively expensive, and
        !          74723:  * can produce output files that are more than twice the size of the input
        !          74724:  * files.
        !          74725:  *
        !          74726:  * Several different methods can be used to encode lines of text. What's done
        !          74727:  * depends on the value assigned to encoding. Print time should decrease as
        !          74728:  * encoding increases (up to MAXENCODING). Setting encoding to 3 (or higher)
        !          74729:  * is not normally recommended. It's fast and produces very compact output,
        !          74730:  * but rounding errors in troff's width tables can accumulate and lead to a
        !          74731:  * ragged right margin. encoding can be changed on the command line using the
        !          74732:  * -e option.
        !          74733:  *
        !          74734:  * PostScript fonts don't support all of troff's characters. Some are built
        !          74735:  * by special PostScript procedures in directory *fontdir/devpost/charlib.
        !          74736:  * The charlib approach is not meant to replace user defined fonts. It was
        !          74737:  * a quick implementation designed to handle characters that aren't used
        !          74738:  * often - charlib should not be overused! The charlib lookup is triggered
        !          74739:  * when a character in a font table is assigned a code less than 32.
        !          74740:  *
        !          74741:  * Most defaults are set in the prologue, but can be changed by options. The
        !          74742:  * -P option passes arbitrary PostScript into the setup section of the output
        !          74743:  * file. It can be used to set (or change) values that can't be accessed by
        !          74744:  * other options. For example,
        !          74745:  *
        !          74746:  *     dpost -P'/useclippath false def' file > file.ps
        !          74747:  *
        !          74748:  * defines useclippath to be false. Everything passed through using the -P
        !          74749:  * (-C to copy a file) options become part of the job's global environment.
        !          74750:  * Definitions override defaults in the prologue.
        !          74751:  *
        !          74752:  * dpost expects to find the following procedures in the prologue:
        !          74753:  *
        !          74754:  *     setup
        !          74755:  *
        !          74756:  *       mark ... setup -
        !          74757:  *
        !          74758:  *         Initialization procedure mainly responsible for setting up an
        !          74759:  *         appropriate coordinate system.
        !          74760:  *
        !          74761:  *     pagesetup
        !          74762:  *
        !          74763:  *       page pagesetup -
        !          74764:  *
        !          74765:  *         Called at the start of each page, immediately after the page
        !          74766:  *         level save. Argument is the current page number.
        !          74767:  *
        !          74768:  *     setdecoding
        !          74769:  *
        !          74770:  *       num setdecoding -
        !          74771:  *
        !          74772:  *         Select the decoding procedure used to print text strings encoded
        !          74773:  *         by dpost. num is whatever has been assigned to encoding.
        !          74774:  *
        !          74775:  *     f
        !          74776:  *
        !          74777:  *       size font f -
        !          74778:  *
        !          74779:  *         Set the font and size used for character imaging. The font name
        !          74780:  *         argument is (normally) the name troff used. Mapping to the real
        !          74781:  *         PostScript font name is made using the fontname field in the
        !          74782:  *         ASCII width tables.
        !          74783:  *
        !          74784:  *     m
        !          74785:  *
        !          74786:  *       x y m -
        !          74787:  *
        !          74788:  *         Move to point (x, y). Not used for positioning words in text
        !          74789:  *         strings.
        !          74790:  *
        !          74791:  *     t
        !          74792:  *
        !          74793:  *       mark text t mark
        !          74794:  *
        !          74795:  *         Everything on the stack (up to the mark) is treated as a line
        !          74796:  *         of text to be decoded and printed. What's on the stack depends
        !          74797:  *         on encoding.
        !          74798:  *
        !          74799:  *     w
        !          74800:  *
        !          74801:  *       string x y w -
        !          74802:  *
        !          74803:  *         Print a single word starting at position (x, y). Only used in
        !          74804:  *         the more complicated encoding schemes, like the ones based on
        !          74805:  *         widthshow.
        !          74806:  *
        !          74807:  *     done
        !          74808:  *
        !          74809:  *         Make sure the last page prints. Always called, but only needed
        !          74810:  *         when printing more than one page on each sheet of paper.
        !          74811:  *
        !          74812:  * output language from troff:
        !          74813:  * all numbers are character strings
        !          74814:  * 
        !          74815:  * sn  size in points
        !          74816:  * fn  font as number from 1-n
        !          74817:  * cx  ascii character x
        !          74818:  * Cxyz        funny char xyz. terminated by white space
        !          74819:  * Hn  go to absolute horizontal position n
        !          74820:  * Vn  go to absolute vertical position n (down is positive)
        !          74821:  * hn  go n units horizontally (relative)
        !          74822:  * vn  ditto vertically
        !          74823:  * nnc move right nn, then print c (exactly 2 digits!)
        !          74824:  *             (this wart is an optimization that shrinks output file size
        !          74825:  *              about 35% and run-time about 15% while preserving ascii-ness)
        !          74826:  * Dt ...\n    draw operation 't':
        !          74827:  *     Dl x y          line from here by x,y
        !          74828:  *     Dc d            circle of diameter d with left side here
        !          74829:  *     De x y          ellipse of axes x,y with left side here
        !          74830:  *     Da x1 y1 x2 y2  arc counter-clockwise from current point (x, y) to
        !          74831:  *                     (x + x1 + x2, y + y1 + y2)
        !          74832:  *     D~ x y x y ...  wiggly line by x,y then x,y ...
        !          74833:  * nb a        end of line (information only -- no action needed)
        !          74834:  *     b = space before line, a = after
        !          74835:  * p   new page begins -- set v to 0
        !          74836:  * #...\n      comment
        !          74837:  * x ...\n     device control functions:
        !          74838:  *     x i     init
        !          74839:  *     x T s   name of device is s
        !          74840:  *     x r n h v       resolution is n/inch
        !          74841:  *             h = min horizontal motion, v = min vert
        !          74842:  *     x p     pause (can restart)
        !          74843:  *     x s     stop -- done forever
        !          74844:  *     x t     generate trailer
        !          74845:  *     x f n s font position n contains font s
        !          74846:  *     x H n   set character height to n
        !          74847:  *     x S n   set slant to N
        !          74848:  * 
        !          74849:  *     Subcommands like "i" are often spelled out like "init".
        !          74850:  *
        !          74851:  */
        !          74852: 
        !          74853: #include       <stdio.h>
        !          74854: #include       <fcntl.h>
        !          74855: #include       <signal.h>
        !          74856: #include       <math.h>
        !          74857: #include       <ctype.h>
        !          74858: #include       <time.h>
        !          74859: 
        !          74860: #include       "comments.h"            /* structuring comments */
        !          74861: #include       "gen.h"                 /* general purpose definitions */
        !          74862: #include       "rune.h"                /* Plan 9 character encoding */
        !          74863: #include       "path.h"                /* prologue and a few other files */
        !          74864: #include       "ext.h"                 /* external variable declarations */
        !          74865: #include       "font.h"                /* font table definitions */
        !          74866: #include       "dpost.h"               /* a few definitions just used here */
        !          74867: #include       "motion.h"              /* positioning macros */
        !          74868: 
        !          74869: char   *prologue = DPOST;              /* the PostScript prologue */
        !          74870: char   *colorfile = COLOR;             /* color support */
        !          74871: char   *drawfile = DRAW;               /* drawing routines */
        !          74872: char   *formfile = FORMFILE;           /* multiple pages on each sheet */
        !          74873: char   *baselinefile = BASELINE;       /* for text along curved baseline */
        !          74874: 
        !          74875: char   *fontdir = FONTDIR;             /* font table directories */
        !          74876: char   *hostfontdir = NULL;            /* host resident font directory */
        !          74877: 
        !          74878: char   *realdev = DEVNAME;             /* use these width tables */
        !          74879: char   devname[20] = "";               /* job formatted for this device */
        !          74880: Fontmap        fontmap[] = FONTMAP;            /* font translation table - emulation */
        !          74881: char   *useencoding = NULL;            /* text font encoding - from -E option */
        !          74882: 
        !          74883: int    copies = 1;                     /* copies of each sheet */
        !          74884: int    printed = 0;                    /* pages processed and printed */
        !          74885: int    formsperpage = 1;               /* pages on each sheet of paper */
        !          74886: int    picflag = ON;                   /* enable/disable picture inclusion */
        !          74887: 
        !          74888: int    encoding = DFLTENCODING;        /* how text is translated to PostScript */
        !          74889: int    realencoding = DFLTENCODING;    /* where we started */
        !          74890: int    maxencoding = MAXENCODING;      /* max that users can select */
        !          74891: 
        !          74892: int    landscape = FALSE;              /* for BoundingBox calculations only */
        !          74893: double magnification = 1.0;
        !          74894: double xoffset = 0.0;
        !          74895: double yoffset = 0.0;
        !          74896: 
        !          74897: int    smnt;                           /* special fonts start here */
        !          74898: int    devres;                         /* device resolution */
        !          74899: int    unitwidth;                      /* and unitwidth - from DESC file */
        !          74900: 
        !          74901: char   downloaded[128+SPECIALCHARS];   /* charlib characters - ASCII+SPECIAL only */
        !          74902: 
        !          74903: int    nfonts = 0;                     /* number of font positions */
        !          74904: int    size = 10;                      /* current point size */
        !          74905: int    font = 0;                       /* and font position */
        !          74906: int    hpos = 0;                       /* where troff wants to be */
        !          74907: int    vpos = 0;
        !          74908: float  lastw = 0;                      /* width of the last input character */
        !          74909: int    lastc = 0;                      /* its name (or index) - for charlib() */
        !          74910: 
        !          74911: int    fontheight = 0;                 /* points from x H ... */
        !          74912: int    fontslant = 0;                  /* angle from x S ... */
        !          74913: 
        !          74914: int    res;                            /* resolution assumed in input file */
        !          74915: float  widthfac = 1.0;                 /* for emulation = res/devres */
        !          74916: 
        !          74917: int    lastsize = -1;                  /* for tracking printer's current size */
        !          74918: int    lastfont = -1;                  /* current font */
        !          74919: float  lastx = -1;                     /* and current position */
        !          74920: int    lasty = -1;
        !          74921: int    lastend;                        /* where last character on this line was */
        !          74922: 
        !          74923: int    seenpage = FALSE;               /* expect fonts are now all mounted */
        !          74924: int    gotspecial = FALSE;             /* append special fonts - emulation */
        !          74925: 
        !          74926: float  pointslop = SLOP;               /* horizontal error in points */
        !          74927: int    slop;                           /* and machine units */
        !          74928: int    rvslop;                         /* to extend box in reverse video mode */
        !          74929: 
        !          74930: int    textcount = 0;                  /* strings accumulated so far */
        !          74931: int    stringstart = 0;                /* where the next one starts */
        !          74932: int    spacecount = 0;                 /* spaces in current string */
        !          74933: 
        !          74934: Line   line[MAXSTACK+3];               /* data about words accumulated so far */
        !          74935: char   strings[STRINGSPACE];           /* strings temporarily saved here */
        !          74936: char   *strptr;                        /* next free slot in strings[] */
        !          74937: 
        !          74938: FILE   *tf = NULL;                     /* most output goes here */
        !          74939: FILE   *fp_acct = NULL;                /* accounting file */
        !          74940: 
        !          74941: char   *optnames = "a:c:e:m:n:o:p:tw:x:y:A:BC:E:J:F:H:L:OP:R:S:T:DI";
        !          74942: 
        !          74943: extern int     gotcolor;               /* read *colorfile when TRUE */
        !          74944: extern Font    fonts[];                /* data about every font we see */
        !          74945: extern Font    *mount[];               /* troff mounts fonts here */
        !          74946: 
        !          74947: /*****************************************************************************/
        !          74948: 
        !          74949: main(agc, agv)
        !          74950: 
        !          74951:     int                agc;
        !          74952:     char       *agv[];
        !          74953: 
        !          74954: {
        !          74955: 
        !          74956: /*
        !          74957:  *
        !          74958:  * Translates output from troff into PostScript. Input files must be formatted
        !          74959:  * for the same device. Each input file begins on a new page.
        !          74960:  *
        !          74961:  */
        !          74962: 
        !          74963:     argc = agc;                                /* global so everyone can use them */
        !          74964:     argv = agv;
        !          74965: 
        !          74966:     prog_name = argv[0];               /* for error messages */
        !          74967: 
        !          74968:     init_signals();                    /* interrupt handling */
        !          74969:     header();                          /* structuring comments */
        !          74970:     options();                         /* command line options */
        !          74971:     arguments();                       /* translate the input files */
        !          74972:     done();                            /* add trailing comments etc. */
        !          74973:     account();                         /* job accounting data */
        !          74974: 
        !          74975:     exit(x_stat);
        !          74976: 
        !          74977: }   /* End of main */
        !          74978: 
        !          74979: /*****************************************************************************/
        !          74980: 
        !          74981: init_signals()
        !          74982: 
        !          74983: {
        !          74984: 
        !          74985: /*
        !          74986:  *
        !          74987:  * Make sure we handle interrupts.
        !          74988:  *
        !          74989:  */
        !          74990: 
        !          74991:     if ( signal(SIGINT, interrupt) == SIG_IGN ) {
        !          74992:        signal(SIGINT, SIG_IGN);
        !          74993:        signal(SIGQUIT, SIG_IGN);
        !          74994:        signal(SIGHUP, SIG_IGN);
        !          74995:     } else {
        !          74996:        signal(SIGHUP, interrupt);
        !          74997:        signal(SIGQUIT, interrupt);
        !          74998:     }   /* End else */
        !          74999: 
        !          75000:     signal(SIGTERM, interrupt);
        !          75001: 
        !          75002: }   /* End of init_signals */
        !          75003: 
        !          75004: /*****************************************************************************/
        !          75005: 
        !          75006: header()
        !          75007: 
        !          75008: {
        !          75009: 
        !          75010:     int                ch;
        !          75011:     int                old_optind = optind;
        !          75012: 
        !          75013: /*
        !          75014:  *
        !          75015:  * Scan the option list for things needed now (e.g. prologue file), but could
        !          75016:  * be changed from defaults. An attempt to follow to Adobe's 2.0 structuring
        !          75017:  * conventions.
        !          75018:  *
        !          75019:  */
        !          75020: 
        !          75021:     while ( (ch = getopt(argc, argv, optnames)) != EOF )
        !          75022:        if ( ch == 'L' )
        !          75023:            setpaths(optarg);
        !          75024:        else if ( ch == 'B' )
        !          75025:            dobbox = TRUE;
        !          75026:        else if ( ch == '?' )
        !          75027:            error(FATAL, "");
        !          75028: 
        !          75029:     optind = old_optind;               /* restored for options() */
        !          75030: 
        !          75031:     fprintf(stdout, "%s", NONCONFORMING);
        !          75032:     fprintf(stdout, "%s %s\n", VERSION, PROGRAMVERSION);
        !          75033:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, ATEND);
        !          75034:     fprintf(stdout, "%s %s\n", PAGES, ATEND);
        !          75035:     if ( dobbox == TRUE )
        !          75036:        fprintf(stdout, "%s %s\n", BOUNDINGBOX, ATEND);
        !          75037:     fprintf(stdout, "%s", ENDCOMMENTS);
        !          75038: 
        !          75039:     if ( cat(prologue) == FALSE )
        !          75040:        error(FATAL, "can't read %s", prologue);
        !          75041: 
        !          75042:     if ( DOROUND )
        !          75043:        cat(ROUNDPAGE);
        !          75044: 
        !          75045:     fprintf(stdout, "%s", ENDPROLOG);
        !          75046:     fprintf(stdout, "%s", BEGINSETUP);
        !          75047:     fprintf(stdout, "mark\n");
        !          75048: 
        !          75049: }   /* End of header */
        !          75050: 
        !          75051: /*****************************************************************************/
        !          75052: 
        !          75053: options()
        !          75054: 
        !          75055: {
        !          75056: 
        !          75057:     int                ch;
        !          75058: 
        !          75059:     extern char        *optarg;
        !          75060:     extern int optind;
        !          75061: 
        !          75062: /*
        !          75063:  *
        !          75064:  * Command line options - there are too many!
        !          75065:  *
        !          75066:  */
        !          75067: 
        !          75068:     while ( (ch = getopt(argc, argv, optnames)) != EOF ) {
        !          75069:        switch ( ch ) {
        !          75070:            case 'a':                   /* aspect ratio */
        !          75071:                    fprintf(stdout, "/aspectratio %s def\n", optarg);
        !          75072:                    break;
        !          75073: 
        !          75074:            case 'c':                   /* number of copies */
        !          75075:                    copies = atoi(optarg);
        !          75076:                    fprintf(stdout, "/#copies %s store\n", optarg);
        !          75077:                    break;
        !          75078: 
        !          75079:            case 'e':                   /* select the encoding scheme */
        !          75080:                    if ( (encoding = atoi(optarg)) < 0 || encoding > MAXENCODING )
        !          75081:                        encoding = DFLTENCODING;
        !          75082:                    realencoding = encoding;
        !          75083:                    break;
        !          75084: 
        !          75085:            case 'm':                   /* magnification */
        !          75086:                    magnification = atof(optarg);
        !          75087:                    fprintf(stdout, "/magnification %s def\n", optarg);
        !          75088:                    break;
        !          75089: 
        !          75090:            case 'n':                   /* forms per page */
        !          75091:                    formsperpage = atoi(optarg);
        !          75092:                    fprintf(stdout, "%s %s\n", FORMSPERPAGE, optarg);
        !          75093:                    fprintf(stdout, "/formsperpage %s def\n", optarg);
        !          75094:                    break;
        !          75095: 
        !          75096:            case 'o':                   /* output page list */
        !          75097:                    out_list(optarg);
        !          75098:                    break;
        !          75099: 
        !          75100:            case 'p':                   /* landscape or portrait mode */
        !          75101:                    landscape = (*optarg == 'l') ? TRUE : FALSE;
        !          75102:                    if ( landscape == TRUE )
        !          75103:                        fprintf(stdout, "/landscape true def\n");
        !          75104:                    else fprintf(stdout, "/landscape false def\n");
        !          75105:                    break;
        !          75106: 
        !          75107:            case 't':                   /* compatibility */
        !          75108:                    break;
        !          75109: 
        !          75110:            case 'w':                   /* line width - for drawing */
        !          75111:                    fprintf(stdout, "/linewidth %s def\n", optarg);
        !          75112:                    break;
        !          75113: 
        !          75114:            case 'x':                   /* shift horizontally */
        !          75115:                    xoffset = atof(optarg);
        !          75116:                    fprintf(stdout, "/xoffset %s def\n", optarg);
        !          75117:                    break;
        !          75118: 
        !          75119:            case 'y':                   /* shift vertically */
        !          75120:                    yoffset = atof(optarg);
        !          75121:                    fprintf(stdout, "/yoffset %s def\n", optarg);
        !          75122:                    break;
        !          75123: 
        !          75124:            case 'A':                   /* job accounting */
        !          75125:            case 'J':
        !          75126:                    if ( (fp_acct = fopen(optarg, "a")) == NULL )
        !          75127:                        error(FATAL, "can't open accounting file %s", optarg);
        !          75128:                    break;
        !          75129: 
        !          75130:            case 'B':                   /* enable BoundingBox calculations */
        !          75131:                    dobbox = TRUE;
        !          75132:                    fprintf(stdout, "/rotation 1 def\n");
        !          75133:                    fprintf(stdout, "/gotpagebbox true def\n");
        !          75134:                    break;
        !          75135: 
        !          75136:            case 'C':                   /* copy file to output */
        !          75137:                    if ( cat(optarg) == FALSE )
        !          75138:                        error(FATAL, "can't read %s", optarg);
        !          75139:                    break;
        !          75140: 
        !          75141:            case 'E':                   /* text font encoding - override DESC */
        !          75142:                    useencoding = optarg;
        !          75143:                    break;
        !          75144: 
        !          75145:            case 'F':                   /* font table directory */
        !          75146:                    fontdir = optarg;
        !          75147:                    break;
        !          75148: 
        !          75149:            case 'H':                   /* host resident font directory */
        !          75150:                    hostfontdir = optarg;
        !          75151:                    break;
        !          75152: 
        !          75153:            case 'L':                   /* prologue file */
        !          75154:                    setpaths(optarg);   /* already been done in header() */
        !          75155:                    break;
        !          75156: 
        !          75157:            case 'O':                   /* disable picture inclusion */
        !          75158:                    picflag = OFF;
        !          75159:                    break;
        !          75160: 
        !          75161:            case 'P':                   /* copy string to output */
        !          75162:                    fprintf(stdout, "%s\n", optarg);
        !          75163:                    break;
        !          75164: 
        !          75165:            case 'R':                   /* global or page level request */
        !          75166:                    saverequest(optarg);
        !          75167:                    break;
        !          75168: 
        !          75169:            case 'S':                   /* horizontal position error */
        !          75170:                    if ( (pointslop = atof(optarg)) < 0 )
        !          75171:                        pointslop = 0;
        !          75172:                    break;
        !          75173: 
        !          75174:            case 'T':                   /* target printer */
        !          75175:                    realdev = optarg;
        !          75176:                    break;
        !          75177: 
        !          75178:            case 'D':                   /* debug flag */
        !          75179:                    debug = ON;
        !          75180:                    tf = stdout;
        !          75181:                    break;
        !          75182: 
        !          75183:            case 'I':                   /* ignore FATAL errors */
        !          75184:                    ignore = ON;
        !          75185:                    break;
        !          75186: 
        !          75187:            case '?':                   /* don't know the option */
        !          75188:                    error(FATAL, "");
        !          75189:                    break;
        !          75190: 
        !          75191:            default:
        !          75192:                    error(FATAL, "missing case for option %c", ch);
        !          75193:                    break;
        !          75194:        }   /* End switch */
        !          75195:     }  /* End while */
        !          75196: 
        !          75197:     argc -= optind;
        !          75198:     argv += optind;
        !          75199: 
        !          75200: }   /* End of options */
        !          75201: 
        !          75202: /*****************************************************************************/
        !          75203: 
        !          75204: setpaths(name)
        !          75205: 
        !          75206:     char       *name;
        !          75207: 
        !          75208: {
        !          75209: 
        !          75210:     char       *path;
        !          75211: 
        !          75212: /*
        !          75213:  *
        !          75214:  * Extends the -L option to permit modification of more than just the prologue
        !          75215:  * file pathname. Syntax is -Lpath or -Lname:path. For debugging and development
        !          75216:  * only!
        !          75217:  *
        !          75218:  */
        !          75219: 
        !          75220:     for ( path = name; *path; path++ )
        !          75221:        if ( *path == ':' || *path == ' ' ) {
        !          75222:            while ( *path == ':' || *path == ' ' ) path++;
        !          75223:            break;
        !          75224:        }   /* End if */
        !          75225: 
        !          75226:     if ( *path == '\0' )               /* didn't find "name:" prefix */
        !          75227:        path = name;
        !          75228: 
        !          75229:     if ( path == name || strncmp(name, "prologue", strlen("prologue")) == 0 )
        !          75230:        prologue = path;
        !          75231:     else if ( strncmp(name, "draw", strlen("draw")) == 0 )
        !          75232:        drawfile = path;
        !          75233:     else if ( strncmp(name, "color", strlen("color")) == 0 )
        !          75234:        colorfile = path;
        !          75235:     else if ( strncmp(name, "form", strlen("form")) == 0 )
        !          75236:        formfile = path;
        !          75237:     else if ( strncmp(name, "baseline", strlen("baseline")) == 0 )
        !          75238:        baselinefile = path;
        !          75239: 
        !          75240: }   /* End of setpaths */
        !          75241: 
        !          75242: /*****************************************************************************/
        !          75243: 
        !          75244: setup()
        !          75245: 
        !          75246: {
        !          75247: 
        !          75248:     double     t;
        !          75249: 
        !          75250: /*
        !          75251:  *
        !          75252:  * Job and BoundingBox initialization. Called once from t_init() - must know
        !          75253:  * the resolution before generating the PostScript call to setup. dpost only
        !          75254:  * includes an encoding file if it's set in the DESC file or requested with
        !          75255:  * the -E option.
        !          75256:  *
        !          75257:  */
        !          75258: 
        !          75259:     writerequest(0, stdout);           /* global requests e.g. manual feed */
        !          75260:     fprintf(stdout, "/resolution %d def\n", res);
        !          75261:     if ( useencoding != NULL || fontencoding != NULL )
        !          75262:        setencoding((useencoding != NULL) ? useencoding : fontencoding);
        !          75263:     fprintf(stdout, "setup\n");
        !          75264:     fprintf(stdout, "%d setdecoding\n", realencoding);
        !          75265: 
        !          75266:     if ( formsperpage > 1 ) {          /* multiple pages */
        !          75267:        if ( cat(formfile) == FALSE )
        !          75268:            error(FATAL, "can't read %s", formfile);
        !          75269:        fprintf(stdout, "%d setupforms\n", formsperpage);
        !          75270:     }  /* End if */
        !          75271: 
        !          75272:     fprintf(stdout, "%s", ENDSETUP);
        !          75273: 
        !          75274:     if ( dobbox == TRUE ) {            /* ctm[] - must agree with prologue */
        !          75275:        translate(pagewidth/2.0, pageheight/2.0);
        !          75276:        if ( landscape == TRUE ) {
        !          75277:            rotate(90.0);
        !          75278:            t = pagewidth;
        !          75279:            pagewidth = pageheight;
        !          75280:            pageheight = t;
        !          75281:        }   /* End if */
        !          75282:        translate(-pagewidth/2.0, pageheight/2.0);
        !          75283:        translate(72.0 * xoffset, -72.0 * yoffset);
        !          75284:        scale(magnification, magnification);
        !          75285:        scale(72.0/devres, 72.0/devres);
        !          75286:     }  /* End if */
        !          75287: 
        !          75288: }   /* End of setup */
        !          75289: 
        !          75290: /*****************************************************************************/
        !          75291: 
        !          75292: arguments()
        !          75293: 
        !          75294: {
        !          75295: 
        !          75296:     FILE       *fp;
        !          75297: 
        !          75298: /*
        !          75299:  *
        !          75300:  * Everything else is an input file. No arguments or '-' means stdin.
        !          75301:  *
        !          75302:  */
        !          75303: 
        !          75304:     if ( argc < 1 )
        !          75305:        conv(stdin);
        !          75306:     else
        !          75307:        while ( argc > 0 ) {
        !          75308:            if ( strcmp(*argv, "-") == 0 )
        !          75309:                fp = stdin;
        !          75310:            else if ( (fp = fopen(*argv, "r")) == NULL )
        !          75311:                error(FATAL, "can't open %s", *argv);
        !          75312:            conv(fp);
        !          75313:            if ( fp != stdin )
        !          75314:                fclose(fp);
        !          75315:            argc--;
        !          75316:            argv++;
        !          75317:        }   /* End while */
        !          75318: 
        !          75319: }   /* End of arguments */
        !          75320: 
        !          75321: /*****************************************************************************/
        !          75322: 
        !          75323: done()
        !          75324: 
        !          75325: {
        !          75326: 
        !          75327:     int                i;
        !          75328:     int                n;
        !          75329: 
        !          75330: /*
        !          75331:  *
        !          75332:  * Force out the last page and add trailing comments.
        !          75333:  *
        !          75334:  */
        !          75335: 
        !          75336:     fprintf(stdout, "%s", TRAILER);
        !          75337:     fprintf(stdout, "done\n");
        !          75338:     fprintf(stdout, "%s %d\n", PAGES, printed);
        !          75339: 
        !          75340:     for ( i = 0, n = 0; i < MAXFONTS+1; i++ )
        !          75341:        if ( (fonts[i].flags & USED) && fonts[i].fontname != NULL ) {
        !          75342:            if ( n++ == 0 )
        !          75343:                fprintf(stdout, "%s", DOCUMENTFONTS);
        !          75344:            else if ( (n - 1) % 8 == 0 )
        !          75345:                fprintf(stdout, "\n%s", CONTINUECOMMENT);
        !          75346:            fprintf(stdout, " %s", fonts[i].fontname);
        !          75347:        }   /* End if */
        !          75348:     if ( n > 0 )
        !          75349:        putc('\n', stdout);
        !          75350: 
        !          75351:     if ( dobbox == TRUE )
        !          75352:        writebbox(stdout, BOUNDINGBOX, 10);
        !          75353: 
        !          75354: }   /* End of done */
        !          75355: 
        !          75356: /*****************************************************************************/
        !          75357: 
        !          75358: account()
        !          75359: 
        !          75360: {
        !          75361: 
        !          75362: /*
        !          75363:  *
        !          75364:  * Accounting record to fp_acct - provided it's not NULL.
        !          75365:  *
        !          75366:  */
        !          75367: 
        !          75368:     if ( fp_acct != NULL )
        !          75369:        fprintf(fp_acct, " print %d\n copies %d\n", printed, copies);
        !          75370: 
        !          75371: }   /* End of account */
        !          75372: 
        !          75373: /*****************************************************************************/
        !          75374: 
        !          75375: conv(fp)
        !          75376: 
        !          75377:     register FILE      *fp;
        !          75378: 
        !          75379: {
        !          75380: 
        !          75381:     register int       c;
        !          75382:     int                        m, n, n1, m1;
        !          75383:     char               str[50];
        !          75384: 
        !          75385: /*
        !          75386:  *
        !          75387:  * Read troff output from file fp and translate it into PostScript. The final
        !          75388:  * t_page() call means input files start on a new page.
        !          75389:  *
        !          75390:  */
        !          75391: 
        !          75392:     redirect(-1);                      /* do output only after a page command */
        !          75393:     lineno = 1;
        !          75394: 
        !          75395:     while ((c = getc(fp)) != EOF) {
        !          75396:        switch (c) {
        !          75397:            case '\n':                  /* just count this line */
        !          75398:                    lineno++;
        !          75399:                    break;
        !          75400: 
        !          75401:            case ' ':                   /* when input is text */
        !          75402:            case 0:                     /* occasional noise creeps in */
        !          75403:                    break;
        !          75404: 
        !          75405:            case '0': case '1': case '2': case '3': case '4':
        !          75406:            case '5': case '6': case '7': case '8': case '9':
        !          75407:                    /* two motion digits plus a character */
        !          75408:                    hmot((c-'0')*10 + getc(fp)-'0');
        !          75409:                    put1(getcode(fp));
        !          75410:                    break;
        !          75411: 
        !          75412:            case 'c':                   /* single ascii character */
        !          75413:                    put1(getcode(fp));
        !          75414:                    break;
        !          75415: 
        !          75416:            case 'C':                   /* special character */
        !          75417:                    fscanf(fp, "%s", str);
        !          75418:                    put1(chindex(str));
        !          75419:                    break;
        !          75420: 
        !          75421:            case 'N':                   /* character at position n */
        !          75422:                    fscanf(fp, "%d", &m);
        !          75423:                    flushtext();
        !          75424:                    oput(m);
        !          75425:                    break;
        !          75426: 
        !          75427:            case 'D':                   /* drawing functions */
        !          75428:                    flushtext();
        !          75429:                    getdraw();
        !          75430:                    if ( size != lastsize )
        !          75431:                        t_sf();
        !          75432:                    switch ((c=getc(fp))) {
        !          75433:                        case 'p':       /* draw a path */
        !          75434:                            while (fscanf(fp, "%d %d", &n, &m) == 2)
        !          75435:                                drawline(n, m);
        !          75436:                            lineno++;
        !          75437:                            break;
        !          75438: 
        !          75439:                        case 'l':       /* draw a line */
        !          75440:                            fscanf(fp, "%d %d %c", &n, &m, &n1);
        !          75441:                            drawline(n, m);
        !          75442:                            break;
        !          75443: 
        !          75444:                        case 'c':       /* circle */
        !          75445:                            fscanf(fp, "%d", &n);
        !          75446:                            drawcirc(n);
        !          75447:                            break;
        !          75448: 
        !          75449:                        case 'e':       /* ellipse */
        !          75450:                            fscanf(fp, "%d %d", &m, &n);
        !          75451:                            drawellip(m, n);
        !          75452:                            break;
        !          75453: 
        !          75454:                        case 'a':       /* counter-clockwise arc */
        !          75455:                        case 'A':       /* clockwise arc */
        !          75456:                            fscanf(fp, "%d %d %d %d", &n, &m, &n1, &m1);
        !          75457:                            drawarc(n, m, n1, m1, c);
        !          75458:                            break;
        !          75459: 
        !          75460:                        case 'q':       /* spline without end points */
        !          75461:                            drawspline(fp, 1);
        !          75462:                            lineno++;
        !          75463:                            break;
        !          75464: 
        !          75465:                        case '~':       /* wiggly line */
        !          75466:                            drawspline(fp, 2);
        !          75467:                            lineno++;
        !          75468:                            break;
        !          75469: 
        !          75470:                        default:
        !          75471:                            error(FATAL, "unknown drawing function %c", c);
        !          75472:                            break;
        !          75473:                    }   /* End switch */
        !          75474:                    break;
        !          75475: 
        !          75476:            case 's':                   /* use this point size */
        !          75477:                    fscanf(fp, "%d", &size);    /* ignore fractional sizes */
        !          75478:                    break;
        !          75479: 
        !          75480:            case 'f':                   /* use font mounted here */
        !          75481:                    fscanf(fp, "%s", str);
        !          75482:                    setfont(t_font(str));
        !          75483:                    break;
        !          75484: 
        !          75485:            case 'H':                   /* absolute horizontal motion */
        !          75486:                    fscanf(fp, "%d", &n);
        !          75487:                    hgoto(n);
        !          75488:                    break;
        !          75489: 
        !          75490:            case 'h':                   /* relative horizontal motion */
        !          75491:                    fscanf(fp, "%d", &n);
        !          75492:                    hmot(n);
        !          75493:                    break;
        !          75494: 
        !          75495:            case 'w':                   /* word space */
        !          75496:                    break;
        !          75497: 
        !          75498:            case 'V':                   /* absolute vertical position */
        !          75499:                    fscanf(fp, "%d", &n);
        !          75500:                    vgoto(n);
        !          75501:                    break;
        !          75502: 
        !          75503:            case 'v':                   /* relative vertical motion */
        !          75504:                    fscanf(fp, "%d", &n);
        !          75505:                    vmot(n);
        !          75506:                    break;
        !          75507: 
        !          75508:            case 'p':                   /* new page */
        !          75509:                    fscanf(fp, "%d", &n);
        !          75510:                    t_page(n);
        !          75511:                    break;
        !          75512: 
        !          75513:            case 'n':                   /* end of line */
        !          75514:                    while ( (c = getc(fp)) != '\n' && c != EOF ) ;
        !          75515:                    hgoto(0);
        !          75516:                    lineno++;
        !          75517:                    break;
        !          75518: 
        !          75519:            case '#':                   /* comment */
        !          75520:                    while ( (c = getc(fp)) != '\n' && c != EOF ) ;
        !          75521:                    lineno++;
        !          75522:                    break;
        !          75523: 
        !          75524:            case 'x':                   /* device control function */
        !          75525:                    devcntrl(fp);
        !          75526:                    lineno++;
        !          75527:                    break;
        !          75528: 
        !          75529:            default:
        !          75530:                    error(FATAL, "unknown input character %o %c", c, c);
        !          75531:                    done();
        !          75532:        }   /* End switch */
        !          75533:     }  /* End while */
        !          75534: 
        !          75535:     t_page(-1);                                /* print the last page */
        !          75536:     flushtext();
        !          75537: 
        !          75538: }   /* End of conv */
        !          75539: 
        !          75540: /*****************************************************************************/
        !          75541: 
        !          75542: devcntrl(fp)
        !          75543: 
        !          75544:     FILE       *fp;
        !          75545: 
        !          75546: {
        !          75547: 
        !          75548:     char       str[50], buf[256], str1[100];
        !          75549:     int                c, n;
        !          75550: 
        !          75551: /*
        !          75552:  *
        !          75553:  * Interpret device control commands, ignoring any we don't recognize. The
        !          75554:  * "x X ..." commands are a device dependent collection generated by troff's
        !          75555:  * \X'...' request.
        !          75556:  *
        !          75557:  */
        !          75558: 
        !          75559:     fscanf(fp, "%s", str);
        !          75560: 
        !          75561:     switch ( str[0] ) {
        !          75562:        case 'f':                       /* load font in a position */
        !          75563:                fscanf(fp, "%d %s", &n, str);
        !          75564:                fgets(buf, sizeof buf, fp);     /* in case there's a filename */
        !          75565:                ungetc('\n', fp);       /* fgets() goes too far */
        !          75566:                str1[0] = '\0';         /* in case there's nothing to come in */
        !          75567:                sscanf(buf, "%s", str1);
        !          75568:                loadfont(n, str, str1);
        !          75569:                break;
        !          75570: 
        !          75571:        case 'i':                       /* initialize */
        !          75572:                t_init();
        !          75573:                break;
        !          75574: 
        !          75575:        case 'p':                       /* pause */
        !          75576:                break;
        !          75577: 
        !          75578:        case 'r':                       /* resolution assumed when prepared */
        !          75579:                fscanf(fp, "%d", &res);
        !          75580:                break;
        !          75581: 
        !          75582:        case 's':                       /* stop */
        !          75583:        case 't':                       /* trailer */
        !          75584:                flushtext();
        !          75585:                break;
        !          75586: 
        !          75587:        case 'H':                       /* char height */
        !          75588:                fscanf(fp, "%d", &n);
        !          75589:                t_charht(n);
        !          75590:                break;
        !          75591: 
        !          75592:        case 'S':                       /* slant */
        !          75593:                fscanf(fp, "%d", &n);
        !          75594:                t_slant(n);
        !          75595:                break;
        !          75596: 
        !          75597:        case 'T':                       /* device name */
        !          75598:                fscanf(fp, "%s", devname);
        !          75599:                break;
        !          75600: 
        !          75601:        case 'E':                       /* input encoding - not in troff yet */
        !          75602:                fscanf(fp, "%s", str);
        !          75603:                if ( strcmp(str, "UTF") == 0 )
        !          75604:                    reading = UTFENCODING;
        !          75605:                else reading = ONEBYTE;
        !          75606:                break;
        !          75607: 
        !          75608:        case 'X':                       /* copy through - from troff */
        !          75609:                fscanf(fp, " %[^: \n]:", str);
        !          75610:                fgets(buf, sizeof(buf), fp);
        !          75611:                ungetc('\n', fp);
        !          75612:                if ( strcmp(str, "PI") == 0 || strcmp(str, "PictureInclusion") == 0 )
        !          75613:                    picture(buf);
        !          75614:                else if ( strcmp(str, "InlinePicture") == 0 )
        !          75615:                    inlinepic(fp, buf);
        !          75616:                else if ( strcmp(str, "BeginPath") == 0 )
        !          75617:                    beginpath(buf, FALSE);
        !          75618:                else if ( strcmp(str, "DrawPath") == 0 )
        !          75619:                    drawpath(buf, FALSE);
        !          75620:                else if ( strcmp(str, "BeginObject") == 0 )
        !          75621:                    beginpath(buf, TRUE);
        !          75622:                else if ( strcmp(str, "EndObject") == 0 )
        !          75623:                    drawpath(buf, TRUE);
        !          75624:                else if ( strcmp(str, "NewBaseline") == 0 )
        !          75625:                    newbaseline(buf);
        !          75626:                else if ( strcmp(str, "DrawText") == 0 )
        !          75627:                    drawtext(buf);
        !          75628:                else if ( strcmp(str, "SetText") == 0 )
        !          75629:                    settext(buf);
        !          75630:                else if ( strcmp(str, "SetColor") == 0 ) {
        !          75631:                    newcolor(buf);
        !          75632:                    setcolor();
        !          75633:                } else if ( strcmp(str, "INFO") == 0 ) {
        !          75634:                    flushtext();
        !          75635:                    fprintf(tf, "%%INFO%s", buf);
        !          75636:                } else if ( strcmp(str, "PS") == 0 || strcmp(str, "PostScript") == 0 ) {
        !          75637:                    flushtext();
        !          75638:                    fprintf(tf, "%s", buf);
        !          75639:                } else if ( strcmp(str, "ExportPS") == 0 ) {    /* dangerous!! */
        !          75640:                    if ( tf == stdout ) {
        !          75641:                        restore();
        !          75642:                        fprintf(tf, "%s", buf);
        !          75643:                        save();
        !          75644:                    }   /* End if */
        !          75645:                }   /* End else */
        !          75646:                break;
        !          75647:     }  /* End switch */
        !          75648: 
        !          75649:     while ( (c = getc(fp)) != '\n' && c != EOF ) ;
        !          75650: 
        !          75651: }   /* End of devcntrl */
        !          75652: 
        !          75653: /*****************************************************************************/
        !          75654: 
        !          75655: loadfont(m, f, name)
        !          75656: 
        !          75657:     int                m;
        !          75658:     char       *f;
        !          75659:     char       *name;
        !          75660: 
        !          75661: {
        !          75662: 
        !          75663:     char       path[150];
        !          75664: 
        !          75665: /*
        !          75666:  *
        !          75667:  * Load position m with font f. Font file pathname is *fontdir/dev*realdev/*f
        !          75668:  * or name, if name isn't empty. Use mapfont() to replace the missing font
        !          75669:  * if we're emulating another device, name is empty, and the first mount
        !          75670:  * fails.
        !          75671:  *
        !          75672:  */
        !          75673: 
        !          75674:     if ( name[0] == '\0' )
        !          75675:        sprintf(path, "%s/dev%s/%s", fontdir, realdev, f);
        !          75676:     else sprintf(path, "%s", name);
        !          75677: 
        !          75678:     if ( mountfont(path, m) == -1 ) {
        !          75679:        if ( name[0] == '\0' ) {
        !          75680:            sprintf(path, "%s/dev%s/%s", fontdir, realdev, mapfont(f));
        !          75681:            if ( mountfont(path, m) == -1 ) {
        !          75682:                sprintf(path, "%s/dev%s/%s", fontdir, realdev, f);
        !          75683:                error(FATAL, "can't load %s at %d", path, m);
        !          75684:            }   /* End if */
        !          75685:        } else error(FATAL, "can't load %s at %d", path, m);
        !          75686:     }  /* End if */
        !          75687: 
        !          75688:     if ( smnt == 0 && mount[m]->specfont )
        !          75689:        smnt = m;
        !          75690: 
        !          75691:     if ( m == lastfont )               /* force a call to t_sf() */
        !          75692:        lastfont = -1;
        !          75693: 
        !          75694:     if ( m > nfonts ) {                        /* got more positions */
        !          75695:        nfonts = m;
        !          75696:        gotspecial = FALSE;
        !          75697:     }  /* End if */
        !          75698: 
        !          75699: }   /* End of loadfont */
        !          75700: 
        !          75701: /*****************************************************************************/
        !          75702: 
        !          75703: char *mapfont(name)
        !          75704: 
        !          75705:     char       *name;
        !          75706: 
        !          75707: {
        !          75708: 
        !          75709:     int                i;
        !          75710: 
        !          75711: /*
        !          75712:  *
        !          75713:  * Map a missing font name into one that should be available. Only used when
        !          75714:  * we're emulating another device and the first mount fails. Consider deleting
        !          75715:  * this routine.
        !          75716:  *
        !          75717:  */
        !          75718: 
        !          75719:     for ( i = 0; fontmap[i].name != NULL; i++ )
        !          75720:        if ( strcmp(name, fontmap[i].name) == 0 )
        !          75721:            return(fontmap[i].use);
        !          75722: 
        !          75723:     switch ( *++name ) {
        !          75724:        case 'I': return("I");
        !          75725:        case 'B': return("B");
        !          75726:        case 'X': return("BI");
        !          75727:        default:  return("R");
        !          75728:     }  /* End switch */
        !          75729: 
        !          75730: }   /* End of mapfont */
        !          75731: 
        !          75732: /*****************************************************************************/
        !          75733: 
        !          75734: loadspecial()
        !          75735: 
        !          75736: {
        !          75737: 
        !          75738: /*
        !          75739:  *
        !          75740:  * Fix - later.
        !          75741:  *
        !          75742:  */
        !          75743: 
        !          75744:     gotspecial = TRUE;
        !          75745: 
        !          75746: }   /* End of loadspecial */
        !          75747: 
        !          75748: /*****************************************************************************/
        !          75749: 
        !          75750: t_init()
        !          75751: 
        !          75752: {
        !          75753: 
        !          75754:     char       path[150];
        !          75755:     static int initialized = FALSE;
        !          75756: 
        !          75757: /*
        !          75758:  *
        !          75759:  * Finish initialization - just read an "x init" command. Assumes we already
        !          75760:  * know the input file resolution.
        !          75761:  *
        !          75762:  */
        !          75763: 
        !          75764:     flushtext();                       /* moved - for cat'ed troff files */
        !          75765: 
        !          75766:     if ( initialized == FALSE ) {
        !          75767:        if ( strcmp(devname, realdev) ) {
        !          75768:            sprintf(path, "%s/dev%s/DESC", fontdir, devname);
        !          75769:            if ( checkdesc(path) )
        !          75770:                realdev = devname;
        !          75771:        }   /* End if */
        !          75772: 
        !          75773:        sprintf(path, "%s/dev%s/DESC", fontdir, realdev);
        !          75774:        if ( getdesc(path) == -1 )
        !          75775:            error(FATAL, "can't open %s", path);
        !          75776:        nfonts = 0;
        !          75777:        gotspecial = FALSE;
        !          75778:        widthfac = (float) res /devres;
        !          75779:        slop = pointslop * res / POINTS + .5;
        !          75780:        rvslop = res * .025;
        !          75781:        setup();
        !          75782:        initialized = TRUE;
        !          75783:     }  /* End if */
        !          75784: 
        !          75785:     hpos = vpos = 0;
        !          75786:     size = 10;
        !          75787:     reset();
        !          75788: 
        !          75789: }   /* End of t_init */
        !          75790: 
        !          75791: /*****************************************************************************/
        !          75792: 
        !          75793: t_page(pg)
        !          75794: 
        !          75795:     int                pg;
        !          75796: 
        !          75797: {
        !          75798: 
        !          75799:     static int lastpg = 0;
        !          75800: 
        !          75801: /*
        !          75802:  *
        !          75803:  * Finish the previous page and get ready for the next one. End page output
        !          75804:  * goes to /dev/null at the start of each input file. Start page output goes
        !          75805:  * to /dev/null at the end of each input file.
        !          75806:  *
        !          75807:  * Consider doing showpage after page level restore (as Adobe recommends). If
        !          75808:  * the order is changed use restore() and save(). forms.ps will likely also
        !          75809:  * need fixing.
        !          75810:  *
        !          75811:  */
        !          75812: 
        !          75813:     if ( tf == stdout )
        !          75814:        printed++;
        !          75815: 
        !          75816:     flushtext();                       /* just in case */
        !          75817: 
        !          75818:     fprintf(tf, "cleartomark\n");
        !          75819:     fprintf(tf, "showpage\n");
        !          75820:     fprintf(tf, "saveobj restore\n");
        !          75821:     if ( dobbox == TRUE )
        !          75822:        writebbox(tf, PAGEBOUNDINGBOX, 10);
        !          75823:     fprintf(tf, "%s %d %d\n", ENDPAGE, lastpg, printed);
        !          75824: 
        !          75825:     redirect(pg);
        !          75826: 
        !          75827:     fprintf(tf, "%s %d %d\n", PAGE, pg, printed+1);
        !          75828:     if ( dobbox == TRUE )
        !          75829:        fprintf(tf, "%s %s\n", PAGEBOUNDINGBOX, ATEND);
        !          75830:     fprintf(tf, "/saveobj save def\n");
        !          75831:     fprintf(tf, "mark\n");
        !          75832:     writerequest(printed+1, tf);
        !          75833:     fprintf(tf, "%d pagesetup\n", printed+1);
        !          75834: 
        !          75835:     if ( encoding != realencoding )
        !          75836:        fprintf(tf, "%d setdecoding\n", encoding);
        !          75837: 
        !          75838:     if ( gotcolor == TRUE )
        !          75839:        setcolor();
        !          75840: 
        !          75841:     lastpg = pg;                       /* for the next ENDPAGE comment */
        !          75842:     hpos = vpos = 0;                   /* get ready for the next page */
        !          75843:     reset();                           /* force position and font stuff - later */
        !          75844: 
        !          75845:     seenpage = TRUE;
        !          75846: 
        !          75847: }   /* End of t_page */
        !          75848: 
        !          75849: /*****************************************************************************/
        !          75850: 
        !          75851: t_font(s)
        !          75852: 
        !          75853:     char       *s;
        !          75854: 
        !          75855: {
        !          75856: 
        !          75857:     int                n;
        !          75858: 
        !          75859: /*
        !          75860:  *
        !          75861:  * Converts the string *s into an integer and checks to make sure it's a legal
        !          75862:  * font position. Also arranges to mount all the special fonts after the last
        !          75863:  * legitimate font (by calling loadspecial()), provided it hasn't already been
        !          75864:  * done.
        !          75865:  *
        !          75866:  */
        !          75867: 
        !          75868:     n = atoi(s);
        !          75869: 
        !          75870:     if ( seenpage == TRUE ) {
        !          75871:        if ( n < 0 || n > nfonts )
        !          75872:            error(FATAL, "illegal font position %d", n);
        !          75873: 
        !          75874:        if ( gotspecial == FALSE )
        !          75875:            loadspecial();
        !          75876:     }  /* End if */
        !          75877: 
        !          75878:     return(n);
        !          75879: 
        !          75880: }   /* End of t_font */
        !          75881: 
        !          75882: /*****************************************************************************/
        !          75883: 
        !          75884: setfont(m)
        !          75885: 
        !          75886:     int                m;
        !          75887: 
        !          75888: {
        !          75889: 
        !          75890: /*
        !          75891:  *
        !          75892:  * Use the font mounted at position m. Bounds checks are probably unnecessary.
        !          75893:  * Changing the font and size used by the printer is handled in t_sf().
        !          75894:  *
        !          75895:  */
        !          75896: 
        !          75897:     if ( m < 0 || m > MAXFONTS )
        !          75898:        error(FATAL, "illegal font %d", m);
        !          75899:     font = m;
        !          75900: 
        !          75901: }   /* End of setfont */
        !          75902: 
        !          75903: /*****************************************************************************/
        !          75904: 
        !          75905: t_sf()
        !          75906: 
        !          75907: {
        !          75908: 
        !          75909:     Font       *fpos;
        !          75910:     char       temp[150];
        !          75911: 
        !          75912: /*
        !          75913:  *
        !          75914:  * Force a new font or size. Generates name definitions for fonts that haven't
        !          75915:  * been named, grabs host resident font files and keeps track of the fonts used
        !          75916:  * by this job. When necessary also adjusts the font's height and slant. Should
        !          75917:  * only be called immediately before printing a character.
        !          75918:  *
        !          75919:  */
        !          75920: 
        !          75921:     if ( tf == stdout && mounted(font) ) {
        !          75922:        flushtext();
        !          75923: 
        !          75924:        fpos = mount[font];
        !          75925:        if ( (fpos->flags & USED) == 0 ) {
        !          75926:            if ( (fpos->flags & NAMED) == 0 && fpos->fontname != NULL ) {
        !          75927:                sprintf(temp, "/%s /%s def\n", fpos->name, fpos->fontname);
        !          75928:                exportstring(temp);
        !          75929:                fpos->flags |= NAMED;           /* unnecessary */
        !          75930:            }   /* End if */
        !          75931: 
        !          75932:            if ( hostfontdir != NULL ) {
        !          75933:                sprintf(temp, "%s/%s", hostfontdir, fpos->name);
        !          75934:                exportfile(temp);
        !          75935:            }   /* End if */
        !          75936:        }   /* End if */
        !          75937: 
        !          75938:        fprintf(tf, "%d %s f\n", size, fpos->name);
        !          75939:        if ( fontheight != 0 || fontslant != 0 )
        !          75940:            fprintf(tf, "%d %d changefont\n", fontslant, (fontheight != 0) ? fontheight : size);
        !          75941: 
        !          75942:        lastfont = font;
        !          75943:        lastsize = size;
        !          75944:        fpos->flags |= USED;
        !          75945:     }  /* End if */
        !          75946: 
        !          75947: }   /* End of t_sf */
        !          75948: 
        !          75949: /*****************************************************************************/
        !          75950: 
        !          75951: t_charht(n)
        !          75952: 
        !          75953:     int                n;
        !          75954: 
        !          75955: {
        !          75956: 
        !          75957: /*
        !          75958:  *
        !          75959:  * Set character height to n points. Disabled if n is 0 or the current size.
        !          75960:  *
        !          75961:  */
        !          75962: 
        !          75963:     fontheight = (n == size) ? 0 : n;
        !          75964:     lastfont = -1;
        !          75965: 
        !          75966: }   /* End of t_charht */
        !          75967: 
        !          75968: /*****************************************************************************/
        !          75969: 
        !          75970: t_slant(n)
        !          75971: 
        !          75972:     int                n;
        !          75973: 
        !          75974: {
        !          75975: 
        !          75976: /*
        !          75977:  *
        !          75978:  * Set slant to n degrees. Disable slanting if n is 0.
        !          75979:  *
        !          75980:  */
        !          75981: 
        !          75982:     fontslant = n;
        !          75983:     lastfont = -1;
        !          75984: 
        !          75985: }   /* End of t_slant */
        !          75986: 
        !          75987: /*****************************************************************************/
        !          75988: 
        !          75989: xymove(x, y)
        !          75990: 
        !          75991:     int                x, y;
        !          75992: 
        !          75993: {
        !          75994: 
        !          75995: /*
        !          75996:  *
        !          75997:  * Make the the printer and post-processor agree about the current position.
        !          75998:  *
        !          75999:  */
        !          76000: 
        !          76001:     flushtext();
        !          76002: 
        !          76003:     hgoto(x);
        !          76004:     vgoto(y);
        !          76005: 
        !          76006:     fprintf(tf, "%d %d m\n", hpos, vpos);
        !          76007: 
        !          76008:     lastx = hpos;
        !          76009:     lasty = vpos;
        !          76010: 
        !          76011: }   /* End of xymove */
        !          76012: 
        !          76013: /*****************************************************************************/
        !          76014: 
        !          76015: getcode(fp)
        !          76016: 
        !          76017:     FILE       *fp;
        !          76018: 
        !          76019: {
        !          76020: 
        !          76021:     int                n;
        !          76022:     int                c;
        !          76023:     Rune       r;
        !          76024:     char       str[10];
        !          76025: 
        !          76026:     switch ( reading ) {
        !          76027:        case UTFENCODING:
        !          76028:            for ( n = 0; n < UTFmax; ) {
        !          76029:                if ( (c = getc(fp)) != EOF ) {
        !          76030:                    str[n++] = c;
        !          76031:                    if ( fullrune(str, n) ) {
        !          76032:                        chartorune(&r, str);
        !          76033:                        return(r);
        !          76034:                    }   /* End if */
        !          76035:                } else return(c);
        !          76036:            }   /* End for */
        !          76037:            return(Runeerror);
        !          76038: 
        !          76039:        default:                /* ASCII input */
        !          76040:            return(getc(fp));
        !          76041:     }  /* End switch */
        !          76042: 
        !          76043: }   /* End of getcode */
        !          76044: 
        !          76045: /*****************************************************************************/
        !          76046: 
        !          76047: put1(c)
        !          76048: 
        !          76049:     int                c;
        !          76050: 
        !          76051: {
        !          76052: 
        !          76053:     int                i;
        !          76054:     int                j;
        !          76055:     int                k;
        !          76056:     int                code;
        !          76057:     int                ofont;
        !          76058: 
        !          76059: /*
        !          76060:  *
        !          76061:  * Print character c. Search current font, then in others starting at the
        !          76062:  * first special font. Save c in lastc so it's available when oput() runs.
        !          76063:  * Restore original font before leaving.
        !          76064:  *
        !          76065:  */
        !          76066: 
        !          76067:     if ( !ValidChar(c) )
        !          76068:        return;
        !          76069: 
        !          76070:     lastc = c;
        !          76071:     k = ofont = font;
        !          76072: 
        !          76073:     if ( (i = onfont(lastc, k)) == -1 && smnt > 0 )
        !          76074:        for ( k = smnt, j = 0; j < nfonts; j++, k = k % nfonts + 1 ) {
        !          76075:            if ( (i = onfont(lastc, k)) != -1 ) {
        !          76076:                setfont(k);
        !          76077:                break;
        !          76078:            }   /* End if */
        !          76079:        }   /* End for */
        !          76080: 
        !          76081:     if ( i != -1 && (code = mount[k]->wp[i].code) != 0 ) {
        !          76082:        lastw = widthfac * (((int)mount[k]->wp[i].wid * size + unitwidth/2) / unitwidth);
        !          76083:        oput(code);
        !          76084:     }  /* End if */
        !          76085: 
        !          76086:     if ( font != ofont )
        !          76087:        setfont(ofont);
        !          76088: 
        !          76089: }   /* End of put1 */
        !          76090: 
        !          76091: /*****************************************************************************/
        !          76092: 
        !          76093: oput(c)
        !          76094: 
        !          76095:     int                c;
        !          76096: 
        !          76097: {
        !          76098: 
        !          76099:     double     llx, lly, urx, ury;     /* boundingbox corners */
        !          76100: 
        !          76101: /*
        !          76102:  *
        !          76103:  * Arranges to print the character whose code is c in the current font. All the
        !          76104:  * actual positioning is done here, in charlib(), or in the drawing routines.
        !          76105:  *
        !          76106:  */
        !          76107: 
        !          76108:     if ( textcount > MAXSTACK )                /* don't put too much on the stack? */
        !          76109:        flushtext();
        !          76110: 
        !          76111:     if ( font != lastfont || size != lastsize )
        !          76112:        t_sf();
        !          76113: 
        !          76114:     if ( vpos != lasty )
        !          76115:        endline();
        !          76116: 
        !          76117:     starttext();
        !          76118: 
        !          76119:     if ( ABS(hpos - lastx) > slop )
        !          76120:        endstring();
        !          76121: 
        !          76122:     if ( c >= 040 )
        !          76123:        oputcode(c);
        !          76124:     else charlib(c);
        !          76125: 
        !          76126:     if ( dobbox == TRUE ) {
        !          76127:        llx = lastx;
        !          76128:        lly = -(vpos + 0.5 * (devres * size / 72.0));
        !          76129:        urx = lastx + lastw;
        !          76130:        ury = -(vpos - (devres * size / 72.0));
        !          76131:        cover(llx, lly);
        !          76132:        cover(urx, ury);
        !          76133:     }  /* End if */
        !          76134: 
        !          76135:     lastx += lastw;
        !          76136: 
        !          76137: }   /* End of oput */
        !          76138: 
        !          76139: /*****************************************************************************/
        !          76140: 
        !          76141: oputcode(c)
        !          76142: 
        !          76143:     int                c;
        !          76144: 
        !          76145: {
        !          76146: 
        !          76147:     int                        n;
        !          76148:     int                        bytes;
        !          76149:     Rune               r;
        !          76150:     unsigned char      buf[10];
        !          76151:     unsigned char      *str;
        !          76152: 
        !          76153: /*
        !          76154:  *
        !          76155:  * Output the bytes corresponding to character code c according to the
        !          76156:  * current writing mode. How a multi-byte sequence is interpreted when
        !          76157:  * it gets to a PostScript printer is not clear. Composite fonts belong
        !          76158:  * to Level 2. Using more than 256 characters from a Level 1 font is not
        !          76159:  * trivial. Font tables with character codes that exceed 255 should be
        !          76160:  * avoided (for now).
        !          76161:  *
        !          76162:  */
        !          76163: 
        !          76164:     r = c;
        !          76165: 
        !          76166:     switch ( writing ) {
        !          76167:        case UTFENCODING:
        !          76168:            bytes = runetochar(buf, &r);
        !          76169:            break;
        !          76170: 
        !          76171:        default:                        /* one or two bytes? */
        !          76172:            if ( r <= 0xFF ) {
        !          76173:                buf[0] = r;
        !          76174:                bytes = 1;
        !          76175:            } else {
        !          76176:                buf[0] = (r >> 8);
        !          76177:                buf[1] = r;
        !          76178:                bytes = 2;
        !          76179:            }   /* End else */
        !          76180:            break;
        !          76181:     }  /* End switch */
        !          76182: 
        !          76183:     for ( n = 0; n < bytes; n++ ) {
        !          76184:        str = &buf[n];
        !          76185:        if ( isascii(*str) && isprint(*str) ) {
        !          76186:            switch ( *str ) {
        !          76187:                case '(':
        !          76188:                case ')':
        !          76189:                case '\\':
        !          76190:                    addbyte('\\');
        !          76191: 
        !          76192:                default:
        !          76193:                    addbyte(*str);
        !          76194:            }   /* End switch */
        !          76195:        } else addoctal(*str);
        !          76196:     }  /* End for */
        !          76197: 
        !          76198: }   /* End of oputcode */
        !          76199: 
        !          76200: /*****************************************************************************/
        !          76201: 
        !          76202: starttext()
        !          76203: 
        !          76204: {
        !          76205: 
        !          76206: /*
        !          76207:  * Called whenever we want to be sure we're ready to start collecting characters
        !          76208:  * for the next call to PostScript procedure t (ie. the one that prints them). If
        !          76209:  * textcount is positive we've already started, so there's nothing to do. The more
        !          76210:  * complicated encoding schemes save text strings in the strings[] array and need
        !          76211:  * detailed information about the strings when they're written to the output file
        !          76212:  * in flushtext().
        !          76213:  *
        !          76214:  */
        !          76215: 
        !          76216:     if ( textcount < 1 ) {
        !          76217:        switch ( encoding ) {
        !          76218:            case 0:
        !          76219:            case 1:
        !          76220:                putc('(', tf);
        !          76221:                break;
        !          76222: 
        !          76223:            case 2:
        !          76224:            case 3:
        !          76225:                strptr = strings;
        !          76226:                spacecount = 0;
        !          76227:                line[1].str = strptr;
        !          76228:                line[1].dx = 0;
        !          76229:                line[1].spaces = 0;
        !          76230:                line[1].start = hpos;
        !          76231:                line[1].width = 0;
        !          76232:                break;
        !          76233: 
        !          76234:            case MAXENCODING+1:                 /* reverse video */
        !          76235:                if ( lastend == -1 )
        !          76236:                    lastend = hpos;
        !          76237:                putc('(', tf);
        !          76238:                break;
        !          76239: 
        !          76240:            case MAXENCODING+2:                 /* follow a funny baseline */
        !          76241:                putc('(', tf);
        !          76242:                break;
        !          76243:        }   /* End switch */
        !          76244: 
        !          76245:        textcount = 1;
        !          76246:        lastx = stringstart = hpos;
        !          76247:     }  /* End if */
        !          76248: 
        !          76249: }   /* End of starttext */
        !          76250: 
        !          76251: /*****************************************************************************/
        !          76252: 
        !          76253: flushtext()
        !          76254: 
        !          76255: {
        !          76256: 
        !          76257:     int                i;
        !          76258: 
        !          76259: /*
        !          76260:  *
        !          76261:  * Generates a call to the PostScript procedure that processes all the text we've
        !          76262:  * accumulated - provided textcount is positive.
        !          76263:  *
        !          76264:  */
        !          76265: 
        !          76266:     if ( textcount > 0 ) {
        !          76267:        switch ( encoding ) {
        !          76268:            case 0:
        !          76269:                fprintf(tf, ")%d t\n", stringstart);
        !          76270:                break;
        !          76271: 
        !          76272:            case 1:
        !          76273:                fprintf(tf, ")%d %d t\n", stringstart, lasty);
        !          76274:                break;
        !          76275: 
        !          76276:            case 2:
        !          76277:                *strptr = '\0';
        !          76278:                line[textcount].width = lastx - line[textcount].start;
        !          76279:                if ( spacecount != 0 || textcount != 1 ) {
        !          76280:                    for ( i = textcount; i > 0; i-- )
        !          76281:                        fprintf(tf, "(%s)%d %d", line[i].str, line[i].spaces, line[i].width);
        !          76282:                    fprintf(tf, " %d %d %d t\n", textcount, stringstart, lasty);
        !          76283:                } else fprintf(tf, "(%s)%d %d w\n", line[1].str, stringstart, lasty);
        !          76284:                break;
        !          76285: 
        !          76286:            case 3:
        !          76287:                *strptr = '\0';
        !          76288:                if ( spacecount != 0 || textcount != 1 ) {
        !          76289:                    for ( i = textcount; i > 0; i-- )
        !          76290:                        fprintf(tf, "(%s)%d", line[i].str, line[i].dx);
        !          76291:                    fprintf(tf, " %d %d %d t\n", textcount, stringstart, lasty);
        !          76292:                } else fprintf(tf, "(%s)%d %d w\n", line[1].str, stringstart, lasty);
        !          76293:                break;
        !          76294: 
        !          76295:            case MAXENCODING+1:
        !          76296:                fprintf(tf, ")%d ", stringstart);
        !          76297:                fprintf(tf, "%d %d drawrvbox ", lastend - rvslop, (int)(lastx + .5) + rvslop);
        !          76298:                fprintf(tf, "t\n", stringstart);
        !          76299:                lastend = (lastx + .5) + 2 * rvslop;
        !          76300:                break;
        !          76301: 
        !          76302:            case MAXENCODING+2:
        !          76303:                fprintf(tf, ")%d %d t\n", stringstart, lasty);
        !          76304:                break;
        !          76305:        }   /* End switch */
        !          76306:     }  /* End if */
        !          76307: 
        !          76308:     textcount = 0;
        !          76309: 
        !          76310: }   /* End of flushtext */
        !          76311: 
        !          76312: /*****************************************************************************/
        !          76313: 
        !          76314: endstring()
        !          76315: 
        !          76316: {
        !          76317: 
        !          76318:     int                dx;
        !          76319: 
        !          76320: /*
        !          76321:  *
        !          76322:  * Horizontal positions are out of sync. End the last open string, adjust the
        !          76323:  * printer's position, and start a new string. Assumes we've already started
        !          76324:  * accumulating text.
        !          76325:  *
        !          76326:  */
        !          76327: 
        !          76328:     switch ( encoding ) {
        !          76329:        case 0:
        !          76330:        case 1:
        !          76331:            fprintf(tf, ")%d(", stringstart);
        !          76332:            textcount++;
        !          76333:            lastx = stringstart = hpos;
        !          76334:            break;
        !          76335: 
        !          76336:        case 2:
        !          76337:        case 3:
        !          76338:            dx = hpos - lastx;
        !          76339:            if ( spacecount++ == 0 )
        !          76340:                line[textcount].dx = dx;
        !          76341:            if ( line[textcount].dx != dx ) {
        !          76342:                *strptr++ = '\0';
        !          76343:                line[textcount].width = lastx - line[textcount].start;
        !          76344:                line[++textcount].str = strptr;
        !          76345:                *strptr++ = ' ';
        !          76346:                line[textcount].dx = dx;
        !          76347:                line[textcount].start = lastx;
        !          76348:                line[textcount].width = 0;
        !          76349:                line[textcount].spaces = 1;
        !          76350:            } else {
        !          76351:                *strptr++ = ' ';
        !          76352:                line[textcount].spaces++;
        !          76353:            }   /* End else */
        !          76354:            lastx += dx;
        !          76355:            break;
        !          76356: 
        !          76357:        case MAXENCODING+1:
        !          76358:            fprintf(tf, ")%d(", stringstart);
        !          76359:            textcount++;
        !          76360:            lastx = stringstart = hpos;
        !          76361:            break;
        !          76362: 
        !          76363:        case MAXENCODING+2:
        !          76364:            flushtext();
        !          76365:            starttext();
        !          76366:            break;
        !          76367:     }  /* End switch */
        !          76368: 
        !          76369: }   /* End of endstring */
        !          76370: 
        !          76371: /*****************************************************************************/
        !          76372: 
        !          76373: endline()
        !          76374: 
        !          76375: {
        !          76376: 
        !          76377: /*
        !          76378:  *
        !          76379:  * The vertical position has changed. Dump any accumulated text, then adjust
        !          76380:  * the printer's vertical position.
        !          76381:  *
        !          76382:  */
        !          76383: 
        !          76384:     flushtext();
        !          76385: 
        !          76386:     if ( encoding == 0 || encoding == MAXENCODING+1 )
        !          76387:        fprintf(tf, "%d %d m\n", hpos, vpos);
        !          76388: 
        !          76389:     lastx = stringstart = lastend = hpos;
        !          76390:     lasty = vpos;
        !          76391: 
        !          76392: }   /* End of endline */
        !          76393: 
        !          76394: /*****************************************************************************/
        !          76395: 
        !          76396: addbyte(c)
        !          76397: 
        !          76398:     int                c;
        !          76399: 
        !          76400: {
        !          76401: 
        !          76402: /*
        !          76403:  *
        !          76404:  * Add byte c to the current string.
        !          76405:  *
        !          76406:  */
        !          76407: 
        !          76408:     switch ( encoding ) {
        !          76409:        case 0:
        !          76410:        case 1:
        !          76411:            putc(c, tf);
        !          76412:            break;
        !          76413: 
        !          76414:        case 2:
        !          76415:        case 3:
        !          76416:            *strptr++ = c;
        !          76417:            break;
        !          76418: 
        !          76419:        case MAXENCODING+1:
        !          76420:        case MAXENCODING+2:
        !          76421:            putc(c, tf);
        !          76422:            break;
        !          76423:     }  /* End switch */
        !          76424: 
        !          76425: }   /* End of addbyte */
        !          76426: 
        !          76427: /*****************************************************************************/
        !          76428: 
        !          76429: addoctal(c)
        !          76430: 
        !          76431:     int                c;
        !          76432: 
        !          76433: {
        !          76434: 
        !          76435: /*
        !          76436:  *
        !          76437:  * Add c to the current string as an octal escape.
        !          76438:  *
        !          76439:  */
        !          76440: 
        !          76441:     switch ( encoding ) {
        !          76442:        case 0:
        !          76443:        case 1:
        !          76444:            fprintf(tf, "\\%o", c);
        !          76445:            break;
        !          76446: 
        !          76447:        case 2:
        !          76448:        case 3:
        !          76449:            sprintf(strptr, "\\%o", c);
        !          76450:            strptr += strlen(strptr);
        !          76451:            break;
        !          76452: 
        !          76453:        case MAXENCODING+1:
        !          76454:        case MAXENCODING+2:
        !          76455:            fprintf(tf, "\\%o", c);
        !          76456:            break;
        !          76457:     }  /* End switch */
        !          76458: 
        !          76459: }   /* End of addoctal */
        !          76460: 
        !          76461: /*****************************************************************************/
        !          76462: 
        !          76463: charlib(code)
        !          76464: 
        !          76465:     int                code;                   /* either 1 or 2 */
        !          76466: 
        !          76467: {
        !          76468: 
        !          76469:     int                pos;                    /* of lastc in downloaded[] */
        !          76470:     char       *name;                  /* name of the character */
        !          76471:     char       tname[10];              /* in case it's a single ASCII character */
        !          76472:     char       temp[150];
        !          76473: 
        !          76474: /*
        !          76475:  *
        !          76476:  * Called from oput() for characters having codes less than 040. Special files
        !          76477:  * that define PostScript procedures for certain characters can be found in
        !          76478:  * directory *fontdir/devpost/charlib. If there's a file that has the same name as
        !          76479:  * the character we're trying to print it's copied to the output file, otherwise
        !          76480:  * nothing, except some positioning, is done.
        !          76481:  *
        !          76482:  * All character definitions are only made once. Subsequent requests to print the
        !          76483:  * character generate a call to a procedure that begins with the prefix build_ and
        !          76484:  * ends with the character's name. Special characters that are assigned codes
        !          76485:  * other than 1 are assumed to have additional data files that should be copied
        !          76486:  * to the output file immediately after the build_ call. Those data files should
        !          76487:  * end in the suffix .map, and usually will be a hex representation of a bitmap.
        !          76488:  *
        !          76489:  */
        !          76490: 
        !          76491:     flushtext();
        !          76492: 
        !          76493:     if ( lastc < 128 ) {               /* ASCII character */
        !          76494:        sprintf(tname, "%.3o", lastc);
        !          76495:        name = tname;
        !          76496:        pos = lastc;
        !          76497:     } else {
        !          76498:        name = chname(lastc);
        !          76499:        pos = lastc - FIRSTSPECIAL + 128;
        !          76500:     }  /* End else */
        !          76501: 
        !          76502:     if ( downloaded[pos] == 0 ) {
        !          76503:        sprintf(temp, "%s/dev%s/charlib/%s", fontdir, realdev, name);
        !          76504:        if ( exportfile(temp) == TRUE ) {
        !          76505:            downloaded[pos] = 1;
        !          76506:            t_sf();
        !          76507:        }   /* End if */
        !          76508:     }  /* End if */
        !          76509: 
        !          76510:     if ( downloaded[pos] == 1 ) {
        !          76511:        xymove(hpos, vpos);
        !          76512:        fprintf(tf, "%d build_%s\n", (int) lastw, name);
        !          76513:        if ( code != 1 ) {              /* get the bitmap or whatever */
        !          76514:            sprintf(temp, "%s/dev%s/charlib/%s.map", fontdir, realdev, name);
        !          76515:            if ( access(temp, 04) == 0 && tf == stdout )
        !          76516:                cat(temp);
        !          76517:        }   /* End if */
        !          76518:        fprintf(tf, "%d %d m\n", stringstart = hpos + lastw, vpos);
        !          76519:     }  /* End if */
        !          76520: 
        !          76521: }   /* End of charlib */
        !          76522: 
        !          76523: /*****************************************************************************/
        !          76524: 
        !          76525: reset()
        !          76526: 
        !          76527: {
        !          76528: 
        !          76529: /*
        !          76530:  *
        !          76531:  * Reset variables that keep track of the printer's current position, size and
        !          76532:  * font. Eventually forces things back in sync before oput() prints the next
        !          76533:  * character.
        !          76534:  *
        !          76535:  */
        !          76536: 
        !          76537:     lastx = -(slop + 1);
        !          76538:     lasty = -1;
        !          76539:     lastfont = lastsize = -1;
        !          76540: 
        !          76541: }   /* End of reset */
        !          76542: 
        !          76543: /*****************************************************************************/
        !          76544: 
        !          76545: resetpos()
        !          76546: 
        !          76547: {
        !          76548: 
        !          76549: /*
        !          76550:  *
        !          76551:  * Reset the position tracking variables. Forces oput() to get positions back
        !          76552:  * in sync before printing the next character.
        !          76553:  *
        !          76554:  */
        !          76555: 
        !          76556:     lastx = -(slop + 1);
        !          76557:     lasty = -1;
        !          76558: 
        !          76559: }   /* End of resetpos */
        !          76560: 
        !          76561: /*****************************************************************************/
        !          76562: 
        !          76563: save()
        !          76564: 
        !          76565: {
        !          76566: 
        !          76567: /*
        !          76568:  *
        !          76569:  * Save the current PostScript environment. Initialize things that may have
        !          76570:  * disappeared after the preceeding restore.
        !          76571:  *
        !          76572:  */
        !          76573: 
        !          76574:     fprintf(tf, "/saveobj save def\n");
        !          76575:     fprintf(tf, "mark\n");
        !          76576: 
        !          76577:     if ( encoding != realencoding )
        !          76578:        fprintf(tf, "%d setdecoding\n", encoding);
        !          76579: 
        !          76580:     if ( gotcolor == TRUE )            /* prevent getcolor() recursion */
        !          76581:        setcolor();
        !          76582: 
        !          76583: }   /* End of save */
        !          76584: 
        !          76585: /*****************************************************************************/
        !          76586: 
        !          76587: restore()
        !          76588: 
        !          76589: {
        !          76590: 
        !          76591: /*
        !          76592:  *
        !          76593:  * Restore the previous PostScript environment.
        !          76594:  *
        !          76595:  */
        !          76596: 
        !          76597:     flushtext();
        !          76598:     fprintf(tf, "cleartomark\n");
        !          76599:     fprintf(tf, "saveobj restore\n");
        !          76600:     reset();
        !          76601: 
        !          76602: }   /* End of restore */
        !          76603: 
        !          76604: /*****************************************************************************/
        !          76605: 
        !          76606: exportfile(path)
        !          76607: 
        !          76608:     char       *path;
        !          76609: 
        !          76610: {
        !          76611: 
        !          76612:     int                val = FALSE;
        !          76613: 
        !          76614: /*
        !          76615:  *
        !          76616:  * Exports the contents of file path to the global environment. Returns TRUE
        !          76617:  * if we're doing output (i.e. tf == stdout) and the copy worked.
        !          76618:  *
        !          76619:  */
        !          76620: 
        !          76621:     if ( tf == stdout && access(path, 04) == 0 ) {
        !          76622:        restore();
        !          76623:        fprintf(tf, "%s", BEGINGLOBAL);
        !          76624:        val = cat(path);
        !          76625:        fprintf(tf, "%s", ENDGLOBAL);
        !          76626:        save();
        !          76627:     }  /* End if */
        !          76628: 
        !          76629:     return(val);
        !          76630: 
        !          76631: }   /* End of exportfile */
        !          76632: 
        !          76633: /*****************************************************************************/
        !          76634: 
        !          76635: exportstring(str)
        !          76636: 
        !          76637:     char       *str;
        !          76638: 
        !          76639: {
        !          76640: 
        !          76641: /*
        !          76642:  *
        !          76643:  * Exports string str to the global environment. No return value needed yet.
        !          76644:  *
        !          76645:  */
        !          76646: 
        !          76647:     if ( tf == stdout && str != NULL && *str != '\0' ) {
        !          76648:        restore();
        !          76649:        fprintf(tf, "%s", BEGINGLOBAL);
        !          76650:        fprintf(tf, "%s", str);
        !          76651:        fprintf(tf, "%s", ENDGLOBAL);
        !          76652:        save();
        !          76653:     }  /* End if */
        !          76654: 
        !          76655: }   /* End of exportstring */
        !          76656: 
        !          76657: /*****************************************************************************/
        !          76658: 
        !          76659: redirect(pg)
        !          76660: 
        !          76661:     int                pg;
        !          76662: 
        !          76663: {
        !          76664: 
        !          76665:     static FILE        *fp_null = NULL;
        !          76666: 
        !          76667: /*
        !          76668:  *
        !          76669:  * If we're not supposed to print page pg, tf will be directed to /dev/null,
        !          76670:  * otherwise output goes to stdout.
        !          76671:  *
        !          76672:  */
        !          76673: 
        !          76674:     if ( pg >= 0 && in_olist(pg) == ON )
        !          76675:        tf = stdout;
        !          76676:     else if ( (tf = fp_null) == NULL )
        !          76677:        tf = fp_null = fopen("/dev/null", "w");
        !          76678: 
        !          76679: }   /* End of redirect */
        !          76680: 
        !          76681: /*****************************************************************************/
        !          76682: 
        !          76683: 0707070014231311071006440057030057030000011033400522627504600003300000010457post.src/dpost.utf/dpost.h/*
        !          76684:  *
        !          76685:  * DEVNAME should be the name of a device whose font files accurately describe
        !          76686:  * what's available on the target printer. It's a string that's combined with
        !          76687:  * "/usr/lib/font/dev" to locate the final font directory. It can be changed
        !          76688:  * using the -T option, but you may end up getting garbage - the character code
        !          76689:  * field must agree with PostScript's character encoding scheme for each font and
        !          76690:  * troff's one or two character font names must be mapped into the appropriate
        !          76691:  * PostScript font names (typically in the prologue)
        !          76692:  *
        !          76693:  *
        !          76694:  */
        !          76695: 
        !          76696: #define        DEVNAME         "post"          /* name of the target printer */
        !          76697: 
        !          76698: /*
        !          76699:  *
        !          76700:  * SLOP controls how much horizontal positioning error we'll accept and primarily
        !          76701:  * helps when we're emulating another device. It's used when we output characters
        !          76702:  * in oput() to check if troff and the printer have gotten too far out of sync.
        !          76703:  * Given in units of points and can be changed using the -S option. Converted to
        !          76704:  * machine units in t_init() after the resolution is known.
        !          76705:  *
        !          76706:  */
        !          76707: 
        !          76708: #define SLOP           .2              /* horizontal error - in points */
        !          76709: 
        !          76710: /*
        !          76711:  *
        !          76712:  * Several different text line encoding schemes are supported. Print time should
        !          76713:  * decrease as the value assigned to encoding (in dpost.c) increases, although the
        !          76714:  * only encoding that's well tested is the lowest level one, which produces output
        !          76715:  * essentially identical to the original version of dpost. Setting DFLTENCODING to
        !          76716:  * 0 will give you the most stable (but slowest) encoding. The encoding scheme can
        !          76717:  * also be set on the command line using the -e option. Faster methods are based
        !          76718:  * on widthshow and may not place words exactly where troff wanted, but errors will
        !          76719:  * usually not be noticeable.
        !          76720:  *
        !          76721:  */
        !          76722: 
        !          76723: #define MAXENCODING    3
        !          76724: 
        !          76725: #ifndef DFLTENCODING
        !          76726: #define DFLTENCODING   2
        !          76727: #endif
        !          76728: 
        !          76729: /*
        !          76730:  *
        !          76731:  * The encoding scheme controls how lines of text are output. In the lower level
        !          76732:  * schemes words and horizontal positions are put on the stack as they're read and
        !          76733:  * when they're printed it's done in reverse order - the first string printed is
        !          76734:  * the one on top of the stack and it's the last one on the line. Faster methods
        !          76735:  * may be forced to reverse the order of strings on the stack, making the top one
        !          76736:  * the first string on the line. STRINGSPACE sets the size of a character array
        !          76737:  * that's used to save the strings that make up  a line of text so they can be
        !          76738:  * output in reverse order or perhaps combined in groups for widthshow.
        !          76739:  *
        !          76740:  * MAXSTACK controls how far we let PostScript's operand stack grow and determines
        !          76741:  * the number of strings we'll save before printing all or part of a line of text.
        !          76742:  * The internal limit in PostScript printers built by Adobe is 500, so MAXSTACK
        !          76743:  * should never be bigger than about 240!
        !          76744:  *
        !          76745:  * Line is a structure used to keep track of the words (or rather strings) on the
        !          76746:  * current line that have been read but not printed. dx is the width troff wants
        !          76747:  * to use for a space in the current string. start is where the string began, width
        !          76748:  * is the total width of the string, and spaces is the number of space characters
        !          76749:  * in the current string. *str points to the start of the string in the strings[]
        !          76750:  * array. The Line structure is only used in the higher level encoding schemes.
        !          76751:  * 
        !          76752:  */
        !          76753: 
        !          76754: #define        MAXSTACK        50              /* most strings we'll save at once */
        !          76755: #define        STRINGSPACE     2000            /* bytes available for string storage */
        !          76756: 
        !          76757: typedef struct {
        !          76758:        char    *str;                   /* where the string is stored */
        !          76759:        int     dx;                     /* width of a space */
        !          76760:        int     spaces;                 /* number of space characters */
        !          76761:        int     start;                  /* horizontal starting position */
        !          76762:        int     width;                  /* and its total width */
        !          76763: } Line;
        !          76764: 
        !          76765: /*
        !          76766:  *
        !          76767:  * Simple stuff used to map unrecognized font names into something reasonable. The
        !          76768:  * mapping array is initialized using FONTMAP and used in loadfont() whenever the
        !          76769:  * job tries to use a font that we don't recognize. Normally only needed when we're
        !          76770:  * emulating another device.
        !          76771:  *
        !          76772:  */
        !          76773: 
        !          76774: typedef struct {
        !          76775:        char    *name;                  /* font name we're looking for */
        !          76776:        char    *use;                   /* and this is what we should use */
        !          76777: } Fontmap;
        !          76778: 
        !          76779: #define        FONTMAP                                                         \
        !          76780:                                                                        \
        !          76781:        {                                                               \
        !          76782:            "G", "H",                                                   \
        !          76783:            "LO", "S",                                                  \
        !          76784:            "S2", "S",                                                  \
        !          76785:            "GI", "HI",                                                 \
        !          76786:            "HM", "H",                                                  \
        !          76787:            "HK", "H",                                                  \
        !          76788:            "HL", "H",                                                  \
        !          76789:            "PA", "R",                                                  \
        !          76790:            "PI", "I",                                                  \
        !          76791:            "PB", "B",                                                  \
        !          76792:            "PX", "BI",                                                 \
        !          76793:            NULL, NULL,                                                 \
        !          76794:        }
        !          76795: 
        !          76796: /*
        !          76797:  *
        !          76798:  * Non-integer valued functions.
        !          76799:  *
        !          76800:  */
        !          76801: 
        !          76802: extern char    *mapfont();
        !          76803: 
        !          76804: 0707070014231311101006440057030057030000011033600522627504700003400000011211post.src/dpost.utf/dpost.ps%
        !          76805: % Version 3.3.2 prologue for troff files.
        !          76806: %
        !          76807: 
        !          76808: /#copies 1 store
        !          76809: /aspectratio 1 def
        !          76810: /formsperpage 1 def
        !          76811: /landscape false def
        !          76812: /linewidth .3 def
        !          76813: /magnification 1 def
        !          76814: /margin 0 def
        !          76815: /orientation 0 def
        !          76816: /resolution 720 def
        !          76817: /rotation 1 def
        !          76818: /xoffset 0 def
        !          76819: /yoffset 0 def
        !          76820: 
        !          76821: /roundpage true def
        !          76822: /useclippath true def
        !          76823: /pagebbox [0 0 612 792] def
        !          76824: 
        !          76825: /R  /Times-Roman def
        !          76826: /I  /Times-Italic def
        !          76827: /B  /Times-Bold def
        !          76828: /BI /Times-BoldItalic def
        !          76829: /H  /Helvetica def
        !          76830: /HI /Helvetica-Oblique def
        !          76831: /HB /Helvetica-Bold def
        !          76832: /HX /Helvetica-BoldOblique def
        !          76833: /CW /Courier def
        !          76834: /CO /Courier def
        !          76835: /CI /Courier-Oblique def
        !          76836: /CB /Courier-Bold def
        !          76837: /CX /Courier-BoldOblique def
        !          76838: /PA /Palatino-Roman def
        !          76839: /PI /Palatino-Italic def
        !          76840: /PB /Palatino-Bold def
        !          76841: /PX /Palatino-BoldItalic def
        !          76842: /Hr /Helvetica-Narrow def
        !          76843: /Hi /Helvetica-Narrow-Oblique def
        !          76844: /Hb /Helvetica-Narrow-Bold def
        !          76845: /Hx /Helvetica-Narrow-BoldOblique def
        !          76846: /KR /Bookman-Light def
        !          76847: /KI /Bookman-LightItalic def
        !          76848: /KB /Bookman-Demi def
        !          76849: /KX /Bookman-DemiItalic def
        !          76850: /AR /AvantGarde-Book def
        !          76851: /AI /AvantGarde-BookOblique def
        !          76852: /AB /AvantGarde-Demi def
        !          76853: /AX /AvantGarde-DemiOblique def
        !          76854: /NR /NewCenturySchlbk-Roman def
        !          76855: /NI /NewCenturySchlbk-Italic def
        !          76856: /NB /NewCenturySchlbk-Bold def
        !          76857: /NX /NewCenturySchlbk-BoldItalic def
        !          76858: /ZD /ZapfDingbats def
        !          76859: /ZI /ZapfChancery-MediumItalic def
        !          76860: /S  /S def
        !          76861: /S1 /S1 def
        !          76862: /GR /Symbol def
        !          76863: 
        !          76864: /inch {72 mul} bind def
        !          76865: /min {2 copy gt {exch} if pop} bind def
        !          76866: 
        !          76867: /show {show} bind def          % so later references don't bind
        !          76868: /widthshow {widthshow} bind def
        !          76869: /stringwidth {stringwidth} bind def
        !          76870: 
        !          76871: /setup {
        !          76872:        counttomark 2 idiv {def} repeat pop
        !          76873: 
        !          76874:        landscape {/orientation 90 orientation add def} if
        !          76875:        /scaling 72 resolution div def
        !          76876:        linewidth setlinewidth
        !          76877:        1 setlinecap
        !          76878: 
        !          76879:        pagedimensions
        !          76880:        xcenter ycenter translate
        !          76881:        orientation rotation mul rotate
        !          76882:        width 2 div neg height 2 div translate
        !          76883:        xoffset inch yoffset inch neg translate
        !          76884:        margin 2 div dup neg translate
        !          76885:        magnification dup aspectratio mul scale
        !          76886:        scaling scaling scale
        !          76887: 
        !          76888:        addmetrics
        !          76889:        0 0 moveto
        !          76890: } def
        !          76891: 
        !          76892: /pagedimensions {
        !          76893:        useclippath userdict /gotpagebbox known not and {
        !          76894:                /pagebbox [clippath pathbbox newpath] def
        !          76895:                roundpage currentdict /roundpagebbox known and {roundpagebbox} if
        !          76896:        } if
        !          76897:        pagebbox aload pop
        !          76898:        4 -1 roll exch 4 1 roll 4 copy
        !          76899:        landscape {4 2 roll} if
        !          76900:        sub /width exch def
        !          76901:        sub /height exch def
        !          76902:        add 2 div /xcenter exch def
        !          76903:        add 2 div /ycenter exch def
        !          76904:        userdict /gotpagebbox true put
        !          76905: } def
        !          76906: 
        !          76907: /addmetrics {
        !          76908:        /Symbol /S null Sdefs cf
        !          76909:        /Times-Roman /S1 StandardEncoding dup length array copy S1defs cf
        !          76910: } def
        !          76911: 
        !          76912: /pagesetup {
        !          76913:        /page exch def
        !          76914:        currentdict /pagedict known currentdict page known and {
        !          76915:                page load pagedict exch get cvx exec
        !          76916:        } if
        !          76917: } def
        !          76918: 
        !          76919: /decodingdefs [
        !          76920:        {counttomark 2 idiv {y moveto show} repeat}
        !          76921:        {neg /y exch def counttomark 2 idiv {y moveto show} repeat}
        !          76922:        {neg moveto {2 index stringwidth pop sub exch div 0 32 4 -1 roll widthshow} repeat}
        !          76923:        {neg moveto {spacewidth sub 0.0 32 4 -1 roll widthshow} repeat}
        !          76924:        {counttomark 2 idiv {y moveto show} repeat}
        !          76925:        {neg setfunnytext}
        !          76926: ] def
        !          76927: 
        !          76928: /setdecoding {/t decodingdefs 3 -1 roll get bind def} bind def
        !          76929: 
        !          76930: /w {neg moveto show} bind def
        !          76931: /m {neg dup /y exch def moveto} bind def
        !          76932: /done {/lastpage where {pop lastpage} if} def
        !          76933: 
        !          76934: /f {
        !          76935:        dup /font exch def findfont exch
        !          76936:        dup /ptsize exch def scaling div dup /size exch def scalefont setfont
        !          76937:        linewidth ptsize mul scaling 10 mul div setlinewidth
        !          76938:        /spacewidth ( ) stringwidth pop def
        !          76939: } bind def
        !          76940: 
        !          76941: /changefont {
        !          76942:        /fontheight exch def
        !          76943:        /fontslant exch def
        !          76944:        currentfont [
        !          76945:                1 0
        !          76946:                fontheight ptsize div fontslant sin mul fontslant cos div
        !          76947:                fontheight ptsize div
        !          76948:                0 0
        !          76949:        ] makefont setfont
        !          76950: } bind def
        !          76951: 
        !          76952: /sf {f} bind def
        !          76953: 
        !          76954: /cf {
        !          76955:        dup length 2 idiv
        !          76956:        /entries exch def
        !          76957:        /chtab exch def
        !          76958:        /newencoding exch def
        !          76959:        /newfont exch def
        !          76960: 
        !          76961:        findfont dup length 1 add dict
        !          76962:        /newdict exch def
        !          76963:        {1 index /FID ne {newdict 3 1 roll put}{pop pop} ifelse} forall
        !          76964: 
        !          76965:        newencoding type /arraytype eq {newdict /Encoding newencoding put} if
        !          76966: 
        !          76967:        newdict /Metrics entries dict put
        !          76968:        newdict /Metrics get
        !          76969:        begin
        !          76970:                chtab aload pop
        !          76971:                1 1 entries {pop def} for
        !          76972:                newfont newdict definefont pop
        !          76973:        end
        !          76974: } bind def
        !          76975: 
        !          76976: %
        !          76977: % A few arrays used to adjust reference points and character widths in some
        !          76978: % of the printer resident fonts. If square roots are too high try changing
        !          76979: % the lines describing /radical and /radicalex to,
        !          76980: %
        !          76981: %      /radical        [0 -75 550 0]
        !          76982: %      /radicalex      [-50 -75 500 0]
        !          76983: %
        !          76984: % Move braceleftbt a bit - default PostScript character is off a bit.
        !          76985: %
        !          76986: 
        !          76987: /Sdefs [
        !          76988:        /bracketlefttp          [201 500]
        !          76989:        /bracketleftbt          [201 500]
        !          76990:        /bracketrighttp         [-81 380]
        !          76991:        /bracketrightbt         [-83 380]
        !          76992:        /braceleftbt            [203 490]
        !          76993:        /bracketrightex         [220 -125 500 0]
        !          76994:        /radical                [0 0 550 0]
        !          76995:        /radicalex              [-50 0 500 0]
        !          76996:        /parenleftex            [-20 -170 0 0]
        !          76997:        /integral               [100 -50 500 0]
        !          76998:        /infinity               [10 -75 730 0]
        !          76999: ] def
        !          77000: 
        !          77001: /S1defs [
        !          77002:        /underscore             [0 80 500 0]
        !          77003:        /endash                 [7 90 650 0]
        !          77004: ] def
        !          77005: 0707070014231311111006440057030057030000011034000522627504700003200000061605post.src/dpost.utf/draw.c/*
        !          77006:  *
        !          77007:  * Drawing routines used by dpost. Almost no real work is done here. Instead
        !          77008:  * the required calculations are done in special Postscript procedures that
        !          77009:  * include:
        !          77010:  *
        !          77011:  *
        !          77012:  *     Dl
        !          77013:  *
        !          77014:  *       x1 y1 x y Dl -
        !          77015:  *
        !          77016:  *         Starts a new path and then draws a line from the current point
        !          77017:  *         (x, y) to (x1, y1).
        !          77018:  *
        !          77019:  *     De
        !          77020:  *
        !          77021:  *       x y a b De -
        !          77022:  *
        !          77023:  *         Starts a new path and then draws an ellipse that has its left side
        !          77024:  *         at the current point (x, y) and horizontal and vertical axes lengths
        !          77025:  *         given by a and b respectively.
        !          77026:  *
        !          77027:  *     Da
        !          77028:  *
        !          77029:  *       x y dx1 dy1 dx2 dy2 Da -
        !          77030:  *
        !          77031:  *         Starts a new segment and then draws a circular arc from the current
        !          77032:  *         point (x, y) to (x + dx1 + dx2, y + dy1 + dy2). The center of the
        !          77033:  *         circle is at (x + dx1, y + dy1). Arcs always go counter-clockwise
        !          77034:  *         from the starting point to the end point.
        !          77035:  *
        !          77036:  *     DA
        !          77037:  *
        !          77038:  *       x y dx1 dy1 dx2 dy2 DA -
        !          77039:  *
        !          77040:  *         Draws a clockwise arc from (x, y) to (x + dx1 + dx2, y + dy1 + dy2)
        !          77041:  *         with center at (x + dx1, y + dy1). Only needed when we're building
        !          77042:  *         large paths that use arcs and want to control the current point. The
        !          77043:  *         arguments passed to drawarc() will be whatever they would have been
        !          77044:  *         for a counter-clockwise arc, so we need to map them into appropriate
        !          77045:  *         arguments for PostScript's arcn operator. The mapping is,
        !          77046:  *
        !          77047:  *                     x = hpos + dx1' + dx2'
        !          77048:  *                     y = vpos + dy1' + dy2'
        !          77049:  *                     dx1 = -dx2'
        !          77050:  *                     dy1 = -dy2'
        !          77051:  *                     dx2 = -dx1'
        !          77052:  *                     dy2 = -dy1'
        !          77053:  *
        !          77054:  *        where primed values represent the drawarc() arguments and (hpos, vpos)
        !          77055:  *        is our current position.
        !          77056:  *
        !          77057:  *     Ds
        !          77058:  *
        !          77059:  *       x0 y0 x1 y1 x2 y2 Ds -
        !          77060:  *
        !          77061:  *         Starts a new segment and then draws a quadratic spline connecting
        !          77062:  *         point ((x0 + x1)/2, (y0 + y1)/2) to ((x1 + x2)/2, (y1 + y2)/2).
        !          77063:  *         The points used in Postscript's curveto procedure are given by,
        !          77064:  *
        !          77065:  *             x0' = (x0 + 5 * x1) / 6
        !          77066:  *             x1' = (x2 + 5 * x1) / 6
        !          77067:  *             x2' = (x1 + x2) / 2
        !          77068:  *
        !          77069:  *         with similar equations for the y coordinates.
        !          77070:  *
        !          77071:  * By default all the PostScript drawing procedures begin with a newpath (just to
        !          77072:  * be safe) and end with a stroke, which essentially isolates the path elements
        !          77073:  * built by the drawing procedures. In order to accommodate big paths built from
        !          77074:  * smaller pieces each of the PostScript drawing procedures can forced to retain
        !          77075:  * the path that's being built. That's what happens in beginpath() when an "x X
        !          77076:  * BeginPath" command is read. beginpath() sets the PostScript variable inpath to
        !          77077:  * true, and that essentially eliminates the newpath/stroke pair that bracket the
        !          77078:  * individual pieces. In that case the path is terminated and drawn when dpost
        !          77079:  * reads an "x X DrawPath" command.
        !          77080:  *
        !          77081:  * Early versions of dpost included the PostScript drawing procedures as part of
        !          77082:  * the prologue, and as a result they were included with every job, even if they
        !          77083:  * were never used. This version has separated the drawing procedures from the
        !          77084:  * default prologue (they're now in *drawfile) and only includes them if they're
        !          77085:  * really needed, which is yet another convenient violation of page independence.
        !          77086:  * Routine getdraw() is responsible for adding *drawfile to the output file, and
        !          77087:  * if it can't read *drawfile it continues on as if nothing happened. That means
        !          77088:  * everything should still work if you append *drawfile to *prologue and then
        !          77089:  * delete *drawfile.
        !          77090:  *
        !          77091:  */
        !          77092: 
        !          77093: #include <stdio.h>
        !          77094: #include <math.h>
        !          77095: 
        !          77096: #include "gen.h"                       /* general purpose definitions */
        !          77097: #include "ext.h"                       /* external variable definitions */
        !          77098: #include "motion.h"                    /* positioning macros */
        !          77099: 
        !          77100: int    gotdraw = FALSE;                /* TRUE when *drawfile has been added */
        !          77101: int    gotbaseline = FALSE;            /* TRUE after *baselinefile is added */
        !          77102: int    inpath = FALSE;                 /* TRUE if we're putting pieces together */
        !          77103: 
        !          77104: /*
        !          77105:  *
        !          77106:  * All these should be defined in file dpost.c.
        !          77107:  *
        !          77108:  */
        !          77109: 
        !          77110: extern int             hpos;
        !          77111: extern int             vpos;
        !          77112: extern int             encoding;
        !          77113: extern int             maxencoding;
        !          77114: extern int             realencoding;
        !          77115: 
        !          77116: extern char            *drawfile;
        !          77117: extern char            *baselinefile;
        !          77118: extern FILE            *tf;
        !          77119: 
        !          77120: /*****************************************************************************/
        !          77121: 
        !          77122: getdraw()
        !          77123: 
        !          77124: {
        !          77125: 
        !          77126: /*
        !          77127:  *
        !          77128:  * Responsible for making sure the PostScript drawing procedures are downloaded
        !          77129:  * from *drawfile. Stuff is done at most once per job, and only if the job needs
        !          77130:  * them. For now I've decided not to quit if we can't read the drawing file. That
        !          77131:  * pretty much assumes an old version of prologue is being used that includes all
        !          77132:  * the drawing procedures.
        !          77133:  *
        !          77134:  */
        !          77135: 
        !          77136:     if ( gotdraw == FALSE )
        !          77137:        exportfile(drawfile);
        !          77138: 
        !          77139:     if ( tf == stdout )
        !          77140:        gotdraw = TRUE;
        !          77141: 
        !          77142: }   /* End of getdraw */
        !          77143: 
        !          77144: /*****************************************************************************/
        !          77145: 
        !          77146: drawline(dx, dy)
        !          77147: 
        !          77148:     int                dx, dy;                 /* endpoint is (hpos+dx, vpos+dy) */
        !          77149: 
        !          77150: {
        !          77151: 
        !          77152: /*
        !          77153:  *
        !          77154:  * Draws a line from (hpos, vpos) to (hpos+dx, vpos+dy), and leaves the current
        !          77155:  * position at the endpoint.
        !          77156:  *
        !          77157:  */
        !          77158: 
        !          77159:     if ( dx == 0 && dy == 0 )
        !          77160:        drawcirc(1);
        !          77161:     else fprintf(tf, "%d %d %d %d Dl\n", hpos + dx, vpos + dy, hpos, vpos);
        !          77162: 
        !          77163:     if ( dobbox == TRUE ) {
        !          77164:        cover((double)hpos, (double)-vpos);
        !          77165:        cover((double)(hpos + dx), (double)-(vpos + dy));
        !          77166:     }  /* End if */
        !          77167: 
        !          77168:     hgoto(hpos+dx);                    /* where troff expects to be */
        !          77169:     vgoto(vpos+dy);
        !          77170: 
        !          77171:     resetpos();                                /* not sure where the printer is */
        !          77172: 
        !          77173: }   /* End of drawline */
        !          77174: 
        !          77175: /*****************************************************************************/
        !          77176: 
        !          77177: drawcirc(d)
        !          77178: 
        !          77179:     int                d;                      /* diameter of the circle */
        !          77180: 
        !          77181: {
        !          77182: 
        !          77183: /*
        !          77184:  *
        !          77185:  * Draws a circle of diameter d with the left 'side' of the circle at the
        !          77186:  * current point. After we're finished drawing we move the current position
        !          77187:  * to the right side.
        !          77188:  *
        !          77189:  */
        !          77190: 
        !          77191:     drawellip(d, d);
        !          77192: 
        !          77193: }   /* End of drawcirc */
        !          77194: 
        !          77195: /*****************************************************************************/
        !          77196: 
        !          77197: drawellip(a, b)
        !          77198: 
        !          77199:     int                a, b;                   /* axes lengths for the ellipse */
        !          77200: 
        !          77201: {
        !          77202: 
        !          77203: /*
        !          77204:  *
        !          77205:  * Draws an ellipse having axes lengths horizontally and vertically of a and
        !          77206:  * b. The left side of the ellipse is at the current point. After we're done
        !          77207:  * drawing the path we move the current position to the right side.
        !          77208:  *
        !          77209:  */
        !          77210: 
        !          77211:     if ( a == 0 && b == 0 )
        !          77212:        return;
        !          77213: 
        !          77214:     fprintf(tf, "%d %d %d %d De\n", hpos, vpos, a, b);
        !          77215: 
        !          77216:     if ( dobbox == TRUE ) {
        !          77217:        cover((double)hpos, (double)-(vpos + b/2));
        !          77218:        cover((double)(hpos+a), (double)-(vpos - b/2));
        !          77219:     }  /* End if */
        !          77220: 
        !          77221:     hgoto(hpos + a);                   /* where troff expects to be */
        !          77222:     vgoto(vpos);
        !          77223: 
        !          77224:     resetpos();                                /* not sure where the printer is */
        !          77225: 
        !          77226: }   /* End of drawellip */
        !          77227: 
        !          77228: /*****************************************************************************/
        !          77229: 
        !          77230: drawarc(dx1, dy1, dx2, dy2, c)
        !          77231: 
        !          77232:     int                dx1, dy1;               /* vector from current pos to center */
        !          77233:     int                dx2, dy2;               /* from center to end of the arc */
        !          77234:     int                c;                      /* clockwise if c is A */
        !          77235: 
        !          77236: {
        !          77237: 
        !          77238: /*
        !          77239:  *
        !          77240:  * If c isn't set to 'A' a counter-clockwise arc is drawn from the current point
        !          77241:  * (hpos, vpos) to (hpos+dx1+dx2, vpos+dy1+dy2). The center of the circle is the
        !          77242:  * point (hpos+dx1, vpos+dy1). If c is 'A' the arc goes clockwise from the point
        !          77243:  * (hpos+dx1+dx2, vpos+dy1+dy2) to (hpos, vpos). Clockwise arcs are only needed
        !          77244:  * if we're building a larger path out of pieces that include arcs, and want to
        !          77245:  * have PostScript manage the path for us. Arguments (for a clockwise arc) are
        !          77246:  * what would have been supplied if the arc was drawn in a counter-clockwise
        !          77247:  * direction, and are converted to values suitable for use with PostScript's arcn
        !          77248:  * operator.
        !          77249:  *
        !          77250:  */
        !          77251: 
        !          77252:     if ( (dx1 != 0 || dy1 != 0) && (dx2 != 0 || dy2 != 0) ) {
        !          77253:        if ( c != 'A' )
        !          77254:            fprintf(tf, "%d %d %d %d %d %d Da\n", hpos, vpos, dx1, dy1, dx2, dy2);
        !          77255:        else fprintf(tf, "%d %d %d %d %d %d DA\n", hpos+dx1+dx2, vpos+dy1+dy2,
        !          77256:                                                -dx2, -dy2, -dx1, -dy1);
        !          77257: 
        !          77258:        if ( dobbox == TRUE )
        !          77259:            arc_extreme(dx1, dy1, dx2, dy2);
        !          77260:     }  /* End if */
        !          77261: 
        !          77262:     hgoto(hpos + dx1 + dx2);           /* where troff expects to be */
        !          77263:     vgoto(vpos + dy1 + dy2);
        !          77264: 
        !          77265:     resetpos();                                /* not sure where the printer is */
        !          77266: 
        !          77267: }   /* End of drawarc */
        !          77268: 
        !          77269: /*****************************************************************************/
        !          77270: 
        !          77271: drawspline(fp, flag)
        !          77272: 
        !          77273:     FILE       *fp;                    /* input for point list */
        !          77274:     int                flag;                   /* flag!=1 connect end points */
        !          77275: 
        !          77276: {
        !          77277: 
        !          77278:     int                x[100], y[100];
        !          77279:     int                i, N;
        !          77280: 
        !          77281: /*
        !          77282:  *
        !          77283:  * Spline drawing routine for Postscript printers. The complicated stuff is
        !          77284:  * handled by procedure Ds, which should be defined in the library file. I've
        !          77285:  * seen wrong implementations of troff's spline drawing, so fo the record I'll
        !          77286:  * write down the parametric equations and the necessary conversions to Bezier
        !          77287:  * cubic splines (as used in Postscript).
        !          77288:  *
        !          77289:  *
        !          77290:  * Parametric equation (x coordinate only):
        !          77291:  *
        !          77292:  *
        !          77293:  *         (x2 - 2 * x1 + x0)    2                    (x0 + x1)
        !          77294:  *     x = ------------------ * t   + (x1 - x0) * t + ---------
        !          77295:  *                 2                                      2
        !          77296:  *
        !          77297:  *
        !          77298:  * The coefficients in the Bezier cubic are,
        !          77299:  *
        !          77300:  *
        !          77301:  *     A = 0
        !          77302:  *     B = (x2 - 2 * x1 + x0) / 2
        !          77303:  *     C = x1 - x0
        !          77304:  *
        !          77305:  *
        !          77306:  * while the current point is,
        !          77307:  *
        !          77308:  *     current-point = (x0 + x1) / 2
        !          77309:  *
        !          77310:  * Using the relationships given in the Postscript manual (page 121) it's easy to
        !          77311:  * see that the control points are given by,
        !          77312:  *
        !          77313:  *
        !          77314:  *     x0' = (x0 + 5 * x1) / 6
        !          77315:  *     x1' = (x2 + 5 * x1) / 6
        !          77316:  *     x2' = (x1 + x2) / 2
        !          77317:  *
        !          77318:  *
        !          77319:  * where the primed variables are the ones used by curveto. The calculations
        !          77320:  * shown above are done in procedure Ds using the coordinates set up in both
        !          77321:  * the x[] and y[] arrays.
        !          77322:  *
        !          77323:  * A simple test of whether your spline drawing is correct would be to use cip
        !          77324:  * to draw a spline and some tangent lines at appropriate points and then print
        !          77325:  * the file.
        !          77326:  *
        !          77327:  */
        !          77328: 
        !          77329:     for ( N = 2; N < sizeof(x)/sizeof(x[0]); N++ )
        !          77330:        if (fscanf(fp, "%d %d", &x[N], &y[N]) != 2)
        !          77331:                break;
        !          77332: 
        !          77333:     x[0] = x[1] = hpos;
        !          77334:     y[0] = y[1] = vpos;
        !          77335: 
        !          77336:     for (i = 1; i < N; i++) {
        !          77337:        x[i+1] += x[i];
        !          77338:        y[i+1] += y[i];
        !          77339:     }  /* End for */
        !          77340: 
        !          77341:     x[N] = x[N-1];
        !          77342:     y[N] = y[N-1];
        !          77343: 
        !          77344:     for (i = ((flag!=1)?0:1); i < ((flag!=1)?N-1:N-2); i++) {
        !          77345:        fprintf(tf, "%d %d %d %d %d %d Ds\n", x[i], y[i], x[i+1], y[i+1], x[i+2], y[i+2]);
        !          77346:        if ( dobbox == TRUE ) {         /* could be better */
        !          77347:            cover((double)(x[i] + x[i+1])/2,(double)-(y[i] + y[i+1])/2);
        !          77348:            cover((double)x[i+1], (double)-y[i+1]);
        !          77349:            cover((double)(x[i+1] + x[i+2])/2, (double)-(y[i+1] + y[i+2])/2);
        !          77350:        }   /* End if */
        !          77351:     }  /* End for */
        !          77352: 
        !          77353:     hgoto(x[N]);                       /* where troff expects to be */
        !          77354:     vgoto(y[N]);
        !          77355: 
        !          77356:     resetpos();                                /* not sure where the printer is */
        !          77357: 
        !          77358: }   /* End of drawspline */
        !          77359: 
        !          77360: /*****************************************************************************/
        !          77361: 
        !          77362: arc_extreme(dx1, dy1, dx2, dy2)
        !          77363: 
        !          77364:     int                dx1, dy1, dx2, dy2;
        !          77365: 
        !          77366: {
        !          77367: 
        !          77368:     double     x0, y0, x1, y1, xc, yc;  /* start, end, center */
        !          77369:     double     r, xmin, ymin, xmax, ymax;
        !          77370:     int                j, k;
        !          77371: 
        !          77372: /*
        !          77373:  *
        !          77374:  * bounding box of a circular arc             Eric Grosse  24 May 84
        !          77375:  *
        !          77376:  * Conceptually, this routine generates a list consisting of the start,
        !          77377:  * end, and whichever north, east, south, and west points lie on the arc.
        !          77378:  * The bounding box is then the range of this list.
        !          77379:  *     list = {start,end}
        !          77380:  *     j = quadrant(start)
        !          77381:  *     k = quadrant(end)
        !          77382:  *     if( j==k && long way 'round )  append north,west,south,east
        !          77383:  *     else
        !          77384:  *       while( j != k )
        !          77385:  *          append center+radius*[j-th of north,west,south,east unit vectors]
        !          77386:  *          j += 1  (mod 4)
        !          77387:  *     return( bounding box of list )
        !          77388:  * The following code implements this, with simple optimizations.
        !          77389:  *
        !          77390:  */
        !          77391: 
        !          77392:     x0 = hpos;
        !          77393:     y0 = -vpos;
        !          77394:     x1 = hpos + dx1 + dx2;
        !          77395:     y1 = -(vpos + dy1 + dy2);
        !          77396:     xc = hpos + dx1;
        !          77397:     yc = -(vpos + dy1);
        !          77398: 
        !          77399:     x0 -= xc; y0 -= yc;                        /* move to center */
        !          77400:     x1 -= xc; y1 -= yc;
        !          77401:     xmin = (x0<x1)?x0:x1; ymin = (y0<y1)?y0:y1;
        !          77402:     xmax = (x0>x1)?x0:x1; ymax = (y0>y1)?y0:y1;
        !          77403:     r = sqrt(x0*x0 + y0*y0);
        !          77404:     if (r > 0.0) {
        !          77405:        j = quadrant(x0,y0);
        !          77406:        k = quadrant(x1,y1);
        !          77407:        if (j == k && y1*x0 < x1*y0) {
        !          77408:            /* viewed as complex numbers, if Im(z1/z0)<0, arc is big */
        !          77409:            if( xmin > -r) xmin = -r; if( ymin > -r) ymin = -r;
        !          77410:            if( xmax <  r) xmax =  r; if( ymax <  r) ymax =  r;
        !          77411:        } else {
        !          77412:            while (j != k) {
        !          77413:                switch (j) {
        !          77414:                    case 1: if( ymax <  r) ymax =  r; break; /* north */
        !          77415:                    case 2: if( xmin > -r) xmin = -r; break; /* west */
        !          77416:                    case 3: if( ymin > -r) ymin = -r; break; /* south */
        !          77417:                    case 4: if( xmax <  r) xmax =  r; break; /* east */
        !          77418:                }   /* End switch */
        !          77419:                j = j%4 + 1;
        !          77420:            }   /* End while */
        !          77421:        }   /* End else */
        !          77422:     }  /* End if */
        !          77423: 
        !          77424:     xmin += xc; ymin += yc;
        !          77425:     xmax += xc; ymax += yc;
        !          77426:     cover(xmin, ymin);
        !          77427:     cover(xmax, ymax);
        !          77428: 
        !          77429: }   /* End of arc_extreme */
        !          77430: 
        !          77431: /*****************************************************************************/
        !          77432: 
        !          77433: quadrant(x,y)
        !          77434: 
        !          77435:        double x, y;
        !          77436: 
        !          77437: {
        !          77438: 
        !          77439:     if (     x>=0.0 && y> 0.0) return(1);
        !          77440:     else if( x< 0.0 && y>=0.0) return(2);
        !          77441:     else if( x<=0.0 && y< 0.0) return(3);
        !          77442:     else if( x> 0.0 && y<=0.0) return(4);
        !          77443:     else                      return 0;        /* shut up lint */
        !          77444: 
        !          77445: }   /* End of quadrant */
        !          77446: 
        !          77447: /*****************************************************************************/
        !          77448: 
        !          77449: beginpath(buf, copy)
        !          77450: 
        !          77451:     char       *buf;                   /* whatever followed "x X BeginPath" */
        !          77452:     int                copy;                   /* ignore *buf if FALSE */
        !          77453: 
        !          77454: {
        !          77455: 
        !          77456: /*
        !          77457:  *
        !          77458:  * Called from devcntrl() whenever an "x X BeginPath" command is read. It's used
        !          77459:  * to mark the start of a sequence of drawing commands that should be grouped
        !          77460:  * together and treated as a single path. By default the drawing procedures in
        !          77461:  * *drawfile treat each drawing command as a separate object, and usually start
        !          77462:  * with a newpath (just as a precaution) and end with a stroke. The newpath and
        !          77463:  * stroke isolate individual drawing commands and make it impossible to deal with
        !          77464:  * composite objects. "x X BeginPath" can be used to mark the start of drawing
        !          77465:  * commands that should be grouped together and treated as a single object, and
        !          77466:  * part of what's done here ensures that the PostScript drawing commands defined
        !          77467:  * in *drawfile skip the newpath and stroke, until after the next "x X DrawPath"
        !          77468:  * command. At that point the path that's been built up can be manipulated in
        !          77469:  * various ways (eg. filled and/or stroked with a different line width).
        !          77470:  *
        !          77471:  * String *buf is unnecessary and is only included for compatibility with an early
        !          77472:  * verion of that's still in use. In that version "x X BeginObject" marked the
        !          77473:  * start of a graphical object, and whatever followed it was passed along in *buf
        !          77474:  * and copied to the output file. Color selection is one of the options that's
        !          77475:  * available in parsebuf(), so if we get here we add *colorfile to the output
        !          77476:  * file before doing anything important.
        !          77477:  *
        !          77478:  */
        !          77479: 
        !          77480:     if ( inpath == FALSE ) {
        !          77481:        flushtext();
        !          77482:        getdraw();
        !          77483:        getcolor();
        !          77484:        fprintf(tf, "gsave\n");
        !          77485:        fprintf(tf, "newpath\n");
        !          77486:        fprintf(tf, "%d %d m\n", hpos, vpos);
        !          77487:        fprintf(tf, "/inpath true def\n");
        !          77488:        if ( copy == TRUE )
        !          77489:            fprintf(tf, "%s", buf);
        !          77490:        inpath = TRUE;
        !          77491:     }  /* End if */
        !          77492: 
        !          77493: }   /* End of beginpath */
        !          77494: 
        !          77495: /*****************************************************************************/
        !          77496: 
        !          77497: drawpath(buf, copy)
        !          77498: 
        !          77499:     char       *buf;
        !          77500:     int                copy;
        !          77501: 
        !          77502: {
        !          77503: 
        !          77504: /*
        !          77505:  *
        !          77506:  * Called from devcntrl() whenever an "x X DrawPath" command is read. It marks the
        !          77507:  * end of the path started by the last "x X BeginPath" command and uses whatever
        !          77508:  * has been passed along in *buf to manipulate the path (eg. fill and/or stroke
        !          77509:  * the path). Once that's been done the drawing procedures are restored to their
        !          77510:  * default behavior in which each drawing command is treated as an isolated path.
        !          77511:  * The new version (called after "x X DrawPath") has copy set to FALSE, and calls
        !          77512:  * parsebuf() to figure out what goes in the output file. It's a feeble attempt
        !          77513:  * to free users and preprocessors (like pic) from having to know PostScript. The
        !          77514:  * comments in parsebuf() describe what's handled.
        !          77515:  *
        !          77516:  * In the early version a path was started with "x X BeginObject" and ended with
        !          77517:  * "x X EndObject". In both cases *buf was just copied to the output file, and
        !          77518:  * was expected to be legitimate PostScript that manipulated the current path.
        !          77519:  * The old escape sequence will be supported for a while (for Ravi), and always
        !          77520:  * call this routine with copy set to TRUE.
        !          77521:  * 
        !          77522:  *
        !          77523:  */
        !          77524: 
        !          77525:     if ( inpath == TRUE ) {
        !          77526:        if ( copy == TRUE )
        !          77527:            fprintf(tf, "%s", buf);
        !          77528:        else parsebuf(buf);
        !          77529:        fprintf(tf, "grestore\n");
        !          77530:        fprintf(tf, "/inpath false def\n");
        !          77531:        reset();
        !          77532:        inpath = FALSE;
        !          77533:     }  /* End if */
        !          77534: 
        !          77535: }   /* End of drawpath */
        !          77536: 
        !          77537: /*****************************************************************************/
        !          77538: 
        !          77539: parsebuf(buf)
        !          77540: 
        !          77541:     char       *buf;                   /* whatever followed "x X DrawPath" */
        !          77542: 
        !          77543: {
        !          77544: 
        !          77545:     char       *p;                     /* usually the next token */
        !          77546:     char       *p1;                    /* for grabbing arguments */
        !          77547:     char       *pend;                  /* end of the original string (ie. *buf) */
        !          77548:     int                gsavelevel = 0;         /* non-zero if we've done a gsave */
        !          77549: 
        !          77550: /*
        !          77551:  *
        !          77552:  * Simple minded attempt at parsing the string that followed an "x X DrawPath"
        !          77553:  * command. Everything not recognized here is simply ignored - there's absolutely
        !          77554:  * no error checking and what was originally in buf is clobbered by strtok().
        !          77555:  * A typical *buf might look like,
        !          77556:  *
        !          77557:  *     gray .9 fill stroke
        !          77558:  *
        !          77559:  * to fill the current path with a gray level of .9 and follow that by stroking the
        !          77560:  * outline of the path. Since unrecognized tokens are ignored the last example
        !          77561:  * could also be written as,
        !          77562:  *
        !          77563:  *     with gray .9 fill then stroke
        !          77564:  *
        !          77565:  * The "with" and "then" strings aren't recognized tokens and are simply discarded.
        !          77566:  * The "stroke", "fill", and "wfill" force out appropriate PostScript code and are
        !          77567:  * followed by a grestore. In otherwords changes to the grahics state (eg. a gray
        !          77568:  * level or color) are reset to default values immediately after the stroke, fill,
        !          77569:  * or wfill tokens. For now "fill" gets invokes PostScript's eofill operator and
        !          77570:  * "wfill" calls fill (ie. the operator that uses the non-zero winding rule).
        !          77571:  *
        !          77572:  * The tokens that cause temporary changes to the graphics state are "gray" (for
        !          77573:  * setting the gray level), "color" (for selecting a known color from the colordict
        !          77574:  * dictionary defined in *colorfile), and "line" (for setting the line width). All
        !          77575:  * three tokens can be extended since strncmp() makes the comparison. For example
        !          77576:  * the strings "line" and "linewidth" accomplish the same thing. Colors are named
        !          77577:  * (eg. "red"), but must be appropriately defined in *colorfile. For now all three
        !          77578:  * tokens must be followed immediately by their single argument. The gray level
        !          77579:  * (ie. the argument that follows "gray") should be a number between 0 and 1, with
        !          77580:  * 0 for black and 1 for white.
        !          77581:  *
        !          77582:  * To pass straight PostScript through enclose the appropriate commands in double
        !          77583:  * quotes. Straight PostScript is only bracketed by the outermost gsave/grestore
        !          77584:  * pair (ie. the one from the initial "x X BeginPath") although that's probably
        !          77585:  * a mistake. Suspect I may have to change the double quote delimiters.
        !          77586:  *
        !          77587:  */
        !          77588: 
        !          77589:     pend = buf + strlen(buf);
        !          77590:     p = strtok(buf, " \n");
        !          77591: 
        !          77592:     while ( p != NULL ) {
        !          77593:        if ( gsavelevel == 0 ) {
        !          77594:            fprintf(tf, "gsave\n");
        !          77595:            gsavelevel++;
        !          77596:        }   /* End if */
        !          77597:        if ( strcmp(p, "stroke") == 0 ) {
        !          77598:            fprintf(tf, "closepath stroke\ngrestore\n");
        !          77599:            gsavelevel--;
        !          77600:        } else if ( strcmp(p, "openstroke") == 0 ) {
        !          77601:            fprintf(tf, "stroke\ngrestore\n");
        !          77602:            gsavelevel--;
        !          77603:        } else if ( strcmp(p, "fill") == 0 ) {
        !          77604:            fprintf(tf, "eofill\ngrestore\n");
        !          77605:            gsavelevel--;
        !          77606:        } else if ( strcmp(p, "wfill") == 0 ) {
        !          77607:            fprintf(tf, "fill\ngrestore\n");
        !          77608:            gsavelevel--;
        !          77609:        } else if ( strcmp(p, "sfill") == 0 ) {
        !          77610:            fprintf(tf, "eofill\ngrestore\ngsave\nstroke\ngrestore\n");
        !          77611:            gsavelevel--;
        !          77612:        } else if ( strncmp(p, "gray", strlen("gray")) == 0 ) {
        !          77613:            p1 = strtok(NULL, " \n");
        !          77614:            fprintf(tf, "%s setgray\n", p1);
        !          77615:        } else if ( strncmp(p, "color", strlen("color")) == 0 ) {
        !          77616:            p1 = strtok(NULL, " \n");
        !          77617:            fprintf(tf, "/%s setcolor\n", p1);
        !          77618:        } else if ( strncmp(p, "line", strlen("line")) == 0 ) {
        !          77619:            p1 = strtok(NULL, " \n");
        !          77620:            fprintf(tf, "%s resolution mul 2 div setlinewidth\n", p1);
        !          77621:        } else if ( strncmp(p, "reverse", strlen("reverse")) == 0 )
        !          77622:            fprintf(tf, "reversepath\n");
        !          77623:        else if ( *p == '"' ) {
        !          77624:            for ( ; gsavelevel > 0; gsavelevel-- )
        !          77625:                fprintf(tf, "grestore\n");
        !          77626:            if ( (p1 = p + strlen(p)) < pend )
        !          77627:                *p1 = ' ';
        !          77628:            p = strtok(p, "\"\n");
        !          77629:            fprintf(tf, "%s\n", p);
        !          77630:        }   /* End else */
        !          77631:        p = strtok(NULL, " \n");
        !          77632:     }  /* End while */
        !          77633: 
        !          77634:     for ( ; gsavelevel > 0; gsavelevel-- )
        !          77635:        fprintf(tf, "grestore\n");
        !          77636: 
        !          77637: }   /* End of parsebuf */
        !          77638: 
        !          77639: /*****************************************************************************/
        !          77640: 
        !          77641: getbaseline()
        !          77642: 
        !          77643: {
        !          77644: 
        !          77645: /*
        !          77646:  *
        !          77647:  * Responsible for making sure the PostScript procedures needed for printing text
        !          77648:  * along an arbitrary baseline are downloaded from *baselinefile. Done at most
        !          77649:  * once per job, and only if the the stuff is really used.
        !          77650:  *
        !          77651:  */
        !          77652: 
        !          77653:     if ( gotbaseline == FALSE )
        !          77654:        exportfile(baselinefile);
        !          77655: 
        !          77656:     if ( tf == stdout )
        !          77657:        gotbaseline = TRUE;
        !          77658: 
        !          77659: }   /* End of getbaseline */
        !          77660: 
        !          77661: /*****************************************************************************/
        !          77662: 
        !          77663: newbaseline(buf)
        !          77664: 
        !          77665:     char       *buf;                   /* whatever followed "x X NewBaseline" */
        !          77666: 
        !          77667: {
        !          77668: 
        !          77669:     char       *p;                     /* for eliminating white space etc. */
        !          77670: 
        !          77671: /*
        !          77672:  *
        !          77673:  * Called from devcntrl() whenever an "x X NewBaseline" command is recognized. We
        !          77674:  * assume whatever is in *buf is a set of parametric equations that describe the
        !          77675:  * new baseline. Equations for x(t), y(t), dx/dt, and dy/dt must be written in
        !          77676:  * PostScript, bracketed by { and } characters, and supplied in exactly that order.
        !          77677:  * In particular the equation for x must come first in *buf and it ends up as the
        !          77678:  * last one on the stack, while the equation for dy/dt comes last (in *buf) and
        !          77679:  * ends up on the top of the PostScript stack. For example if *buf is given by,
        !          77680:  *
        !          77681:  *     {} {180 mul 3.1416 div cos} {pop 1} {180 mul 3.1416 div sin neg}
        !          77682:  *
        !          77683:  * text will be printed along the curve y = cos(x).
        !          77684:  *
        !          77685:  * Angles given in radians must be converted to degrees for the PostScript trig
        !          77686:  * functions, and things are scaled so that 1 unit maps into 1 inch. In the last
        !          77687:  * example the cosine curve that describes the baseline has an amplitude of 1 inch.
        !          77688:  * As another example of this rather confusing syntax if *buf is,
        !          77689:  *
        !          77690:  *     {} {} {pop 1} {pop 1}
        !          77691:  *
        !          77692:  * the baseline will be the 45 degree line y = x.
        !          77693:  *
        !          77694:  * When any of the four functions is used they're called with a single number on
        !          77695:  * the stack that's equal to the current value of the parameter t. The coordinate
        !          77696:  * system axes run parallel to the PostScript coordinate system that's currently
        !          77697:  * being used.
        !          77698:  *
        !          77699:  */
        !          77700: 
        !          77701:     for ( p = buf; *p; p++ )           /* eliminate trailing '\n' */
        !          77702:        if ( *p == '\n' ) {
        !          77703:            *p = '\0';
        !          77704:            break;
        !          77705:        }   /* End if */
        !          77706: 
        !          77707:     for ( p = buf; *p && (*p == ' ' || *p == ':'); p++ ) ;
        !          77708: 
        !          77709:     if ( *p != '\0' ) {                        /* something's there */
        !          77710:        flushtext();
        !          77711:        getbaseline();
        !          77712:        fprintf(tf, "mark resolution %s newbaseline\n", p);
        !          77713:        reset();
        !          77714:     }  /* End if */
        !          77715: 
        !          77716: }   /* End of newbaseline */
        !          77717: 
        !          77718: /*****************************************************************************/
        !          77719: 
        !          77720: drawtext(buf)
        !          77721: 
        !          77722:     char       *buf;                   /* whatever followed "x X DrawText */
        !          77723: 
        !          77724: {
        !          77725: 
        !          77726:     char       *p;                     /* for eliminating white space etc. */
        !          77727: 
        !          77728: /*
        !          77729:  *
        !          77730:  * Called from devcntrl() whenever an "x X DrawText command is recognized. *buf
        !          77731:  * should contain three arguments in the following order. First comes the text we
        !          77732:  * want to print along the current baseline. Right now the string should be given
        !          77733:  * as a PostScript string using characters '(' and ')' as the delimiters. Next in
        !          77734:  * *buf comes a justification mode that can be the words left, right, or center.
        !          77735:  * Last comes a number that represents the starting value of the parameter t that's
        !          77736:  * given as the argument to the parametric equations that describe the current
        !          77737:  * baseline. For example if *buf is given by,
        !          77738:  *
        !          77739:  *     (hello world) left .5
        !          77740:  *
        !          77741:  * hello world will be printed along the path described by the current baseline
        !          77742:  * and left justified at whatever (x(.5), y(.5)) happens to be. Usually will be
        !          77743:  * preceeded by an "x X NewBaseline" call that defines the current baseline. The
        !          77744:  * origin of the coordinate system used by the parametric equations will be the
        !          77745:  * current point.
        !          77746:  *
        !          77747:  */
        !          77748: 
        !          77749:     for ( p = buf; *p; p++ )           /* eliminate trailing '\n' */
        !          77750:        if ( *p == '\n' ) {
        !          77751:            *p = '\0';
        !          77752:            break;
        !          77753:        }   /* End if */
        !          77754: 
        !          77755:     for ( p = buf; *p && (*p == ' ' || *p == ':'); p++ ) ;
        !          77756: 
        !          77757:     if ( *p != '\0' ) {                        /* something's there */
        !          77758:        flushtext();
        !          77759:        getbaseline();
        !          77760:        xymove(hpos, vpos);
        !          77761:        fprintf(tf, "mark %s drawfunnytext\n", p);
        !          77762:        resetpos();
        !          77763:     }  /* End if */
        !          77764: 
        !          77765: }   /* End of drawtext */
        !          77766: 
        !          77767: /*****************************************************************************/
        !          77768: 
        !          77769: settext(buf)
        !          77770: 
        !          77771:     char       *buf;
        !          77772: 
        !          77773: {
        !          77774: 
        !          77775:     char       *p;
        !          77776: 
        !          77777: /*
        !          77778:  *
        !          77779:  * Does whatever is needed to ensure any text that follows will be set along the
        !          77780:  * curve described by the PostScript procedures listed in *buf. If *buf doesn't
        !          77781:  * contain anything useful (eg. just a newline) things are restored to whatever
        !          77782:  * they originally were. Doesn't work well if we try to start in the middle of a
        !          77783:  * line of text.
        !          77784:  *
        !          77785:  * The parametric equations needed are,
        !          77786:  *
        !          77787:  *     x = f(t)
        !          77788:  *     y = g(t)
        !          77789:  *     dx/dt = f'(t)
        !          77790:  *     dy/dt = g'(t)
        !          77791:  *
        !          77792:  * and must be given as proper PostScript procedures. The equation for x must come
        !          77793:  * first (ie. it ends up on the bottom of the stack) and the equation for dy/dt
        !          77794:  * must be given last (ie. it ends up on top of the stack). For example if *buf
        !          77795:  * is given by,
        !          77796:  *
        !          77797:  *     {} {180 mul 3.1416 div cos} {pop 1} {180 mul 3.1416 div sin neg}
        !          77798:  *
        !          77799:  * text will be set along the curve y=cos(x).
        !          77800:  *
        !          77801:  */
        !          77802: 
        !          77803:     flushtext();
        !          77804:     getbaseline();
        !          77805: 
        !          77806:     for ( p = buf; *p && *p == ' '; p++ ) ;
        !          77807: 
        !          77808:     if ( *p && *p != '\n' ) {
        !          77809:        encoding = maxencoding + 2;
        !          77810:        fprintf(tf, "mark resolution %s newbaseline\n", buf);
        !          77811:     } else encoding = realencoding;
        !          77812: 
        !          77813:     fprintf(tf, "%d setdecoding\n", encoding);
        !          77814:     resetpos();
        !          77815: 
        !          77816: }   /* End of settext */
        !          77817: 
        !          77818: /*****************************************************************************/
        !          77819: 
        !          77820: 0707070014231311121006440057030057030000011031660522627504700003300000002363post.src/dpost.utf/draw.ps%
        !          77821: % Version 3.3.2 drawing procedures for dpost. Automatically pulled in when
        !          77822: % needed.
        !          77823: %
        !          77824: 
        !          77825: /inpath false def
        !          77826: /savematrix matrix def
        !          77827: 
        !          77828: /Dl {
        !          77829:        inpath
        !          77830:                {pop pop neg lineto}
        !          77831:                {newpath neg moveto neg lineto stroke}
        !          77832:        ifelse
        !          77833: } bind def
        !          77834: 
        !          77835: /De {
        !          77836:        /y1 exch 2 div def
        !          77837:        /x1 exch 2 div def
        !          77838:        /savematrix savematrix currentmatrix def
        !          77839:        neg exch x1 add exch translate
        !          77840:        x1 y1 scale
        !          77841:        0 0 1 0 360
        !          77842:        inpath
        !          77843:                {1 0 moveto arc savematrix setmatrix}
        !          77844:                {newpath arc savematrix setmatrix stroke}
        !          77845:        ifelse
        !          77846: } bind def
        !          77847: 
        !          77848: /Da {
        !          77849:        /dy2 exch def
        !          77850:        /dx2 exch def
        !          77851:        /dy1 exch def
        !          77852:        /dx1 exch def
        !          77853:        dy1 add neg exch dx1 add exch
        !          77854:        dx1 dx1 mul dy1 dy1 mul add sqrt
        !          77855:        dy1 dx1 neg atan
        !          77856:        dy2 neg dx2 atan
        !          77857:        inpath
        !          77858:                {arc}
        !          77859:                {newpath arc stroke}
        !          77860:        ifelse
        !          77861: } bind def
        !          77862: 
        !          77863: /DA {
        !          77864:        /dy2 exch def
        !          77865:        /dx2 exch def
        !          77866:        /dy1 exch def
        !          77867:        /dx1 exch def
        !          77868:        dy1 add neg exch dx1 add exch
        !          77869:        dx1 dx1 mul dy1 dy1 mul add sqrt
        !          77870:        dy1 dx1 neg atan
        !          77871:        dy2 neg dx2 atan
        !          77872:        inpath
        !          77873:                {arcn}
        !          77874:                {newpath arcn stroke}
        !          77875:        ifelse
        !          77876: } bind def
        !          77877: 
        !          77878: /Ds {
        !          77879:        /y2 exch def
        !          77880:        /x2 exch def
        !          77881:        /y1 exch def
        !          77882:        /x1 exch def
        !          77883:        /y0 exch def
        !          77884:        /x0 exch def
        !          77885:        x0 5 x1 mul add 6 div
        !          77886:        y0 5 y1 mul add -6 div
        !          77887:        x2 5 x1 mul add 6 div
        !          77888:        y2 5 y1 mul add -6 div
        !          77889:        x1 x2 add 2 div
        !          77890:        y1 y2 add -2 div
        !          77891:        inpath
        !          77892:                {curveto}
        !          77893:                {newpath x0 x1 add 2 div y0 y1 add -2 div moveto curveto stroke}
        !          77894:        ifelse
        !          77895: } bind def
        !          77896: 0707070014231311131006440057030057030000011034600522627504700003200000027177post.src/dpost.utf/font.c/*
        !          77897:  *
        !          77898:  * Typesetter font tables routines - for postprocessors.
        !          77899:  *
        !          77900:  */
        !          77901: 
        !          77902: #include <stdio.h>
        !          77903: #include <ctype.h>
        !          77904: 
        !          77905: #include "gen.h"
        !          77906: #include "rune.h"
        !          77907: #include "ext.h"
        !          77908: #include "font.h"
        !          77909: 
        !          77910: Font   *mount[MAXFONTS+1];             /* mount table - pointers into fonts[] */
        !          77911: Font   fonts[MAXFONTS+2];              /* font data - guarantee one empty slot */
        !          77912: 
        !          77913: int    fcount;                         /* entries in fonts[] */
        !          77914: int    mcount;                         /* fonts currently in memory */
        !          77915: int    mlimit = MAXFONTS+1;            /* and the most we'll allow */
        !          77916: 
        !          77917: char   *chnames[SPECIALCHARS];         /* special character hash table */
        !          77918: int    nchnames;                       /* number of entries in chnames[] */
        !          77919: 
        !          77920: extern int     devres;
        !          77921: extern int     unitwidth;
        !          77922: extern int     nfonts;
        !          77923: 
        !          77924: /*****************************************************************************/
        !          77925: 
        !          77926: checkdesc(path)
        !          77927: 
        !          77928:     char       *path;
        !          77929: 
        !          77930: {
        !          77931: 
        !          77932:     char       buf[150];
        !          77933:     FILE       *fp;
        !          77934:     int                val = 0;
        !          77935: 
        !          77936: /*
        !          77937:  *
        !          77938:  * Return non-zero if the typesetter description file path includes,
        !          77939:  *
        !          77940:  *     PDL PostScript
        !          77941:  *
        !          77942:  * before the charset table.
        !          77943:  *
        !          77944:  */
        !          77945: 
        !          77946:     if ( (fp = fopen(path, "r")) != NULL ) {
        !          77947:        while ( fscanf(fp, "%s", buf) != EOF ) {
        !          77948:            if ( strcmp(buf, "PDL") == 0 ) {
        !          77949:                fscanf(fp, "%s", buf);
        !          77950:                val = strcmp(buf, "PostScript") == 0;
        !          77951:                break;
        !          77952:            } else if ( strcmp(buf, "charset") == 0 )
        !          77953:                break;
        !          77954:            skipline(fp);
        !          77955:        }   /* End while */
        !          77956:        fclose(fp);
        !          77957:     }  /* End if */
        !          77958: 
        !          77959:     return(val);
        !          77960: 
        !          77961: }   /* End of checkdesc */
        !          77962: 
        !          77963: /*****************************************************************************/
        !          77964: 
        !          77965: getdesc(path)
        !          77966: 
        !          77967:     char       *path;
        !          77968: 
        !          77969: {
        !          77970: 
        !          77971:     char       buf[150];
        !          77972:     FILE       *fp;
        !          77973:     int                n;
        !          77974: 
        !          77975:     if ( (fp = fopen(path, "r")) == NULL )
        !          77976:        return(-1);
        !          77977: 
        !          77978:     while ( fscanf(fp, "%s", buf) != EOF ) {
        !          77979:        if ( strcmp(buf, "res") == 0 )
        !          77980:            fscanf(fp, "%d", &devres);
        !          77981:        else if ( strcmp(buf, "unitwidth") == 0 )
        !          77982:            fscanf(fp, "%d", &unitwidth);
        !          77983:        else if ( strcmp(buf, "sizes") == 0 )
        !          77984:            while ( fscanf(fp, "%d", &n) != EOF && n != 0 ) ;
        !          77985:        else if ( strcmp(buf, "inmemory") == 0 )
        !          77986:            fscanf(fp, "%d", &mlimit);
        !          77987:        else if ( strcmp(buf, "Encoding") == 0 ) {
        !          77988:            fscanf(fp, "%s", buf);
        !          77989:            fontencoding = strsave(buf);
        !          77990:        } else if ( strcmp(buf, "fonts") == 0 ) {
        !          77991:            fscanf(fp, "%d", &nfonts);
        !          77992:            for ( n = 0; n < nfonts; n++ )
        !          77993:                fscanf(fp, "%s", buf);
        !          77994:        } else if ( strcmp(buf, "charset") == 0 ) {
        !          77995:            while ( fscanf(fp, "%s", buf) != EOF )
        !          77996:                chadd(buf);
        !          77997:            break;
        !          77998:        }   /* End if */
        !          77999:        skipline(fp);
        !          78000:     }  /* End while */
        !          78001: 
        !          78002:     fclose(fp);
        !          78003:     return(1);
        !          78004: 
        !          78005: }   /* End of getdesc */
        !          78006: 
        !          78007: /*****************************************************************************/
        !          78008: 
        !          78009: getfont(path, fpos)
        !          78010: 
        !          78011:     char       *path;
        !          78012:     Font       *fpos;
        !          78013: 
        !          78014: {
        !          78015: 
        !          78016:     FILE       *fin;
        !          78017:     Chwid      chtemp[LARGESTFONT];
        !          78018:     int                next;
        !          78019:     int                i, n, num, wid, code;
        !          78020:     char       buf[300], ch[100], s1[100], s2[100], s3[100], cmd[100];
        !          78021: 
        !          78022: 
        !          78023: /*
        !          78024:  *
        !          78025:  * Read a font width table. Skip unnamed characters, spacewidth, ligatures,
        !          78026:  * ascender/descender entries, and anything else not recognized. Charset
        !          78027:  * entries for a new font are first stacked in chtemp[] and later copied
        !          78028:  * to correct slots in a newly allocated wp array. All calls should come
        !          78029:  * through mountfont().
        !          78030:  *
        !          78031:  */
        !          78032: 
        !          78033:     if ( fpos->state == INMEMORY )
        !          78034:        return(1);
        !          78035: 
        !          78036:     if ( (fin = fopen(path, "r")) == NULL )
        !          78037:        return(-1);
        !          78038: 
        !          78039:     if ( fpos->state == NEWFONT ) {
        !          78040:        if ( ++fcount > MAXFONTS+1 )
        !          78041:            return(-1);
        !          78042:        fpos->path = strsave(path);
        !          78043:     }  /* End if */
        !          78044: 
        !          78045:     if ( ++mcount > mlimit && mcount > nfonts+1 )
        !          78046:        freefonts();
        !          78047: 
        !          78048:     while ( fscanf(fin, "%s", cmd) != EOF ) {
        !          78049:        if ( strcmp(cmd, "name") == 0 ) {
        !          78050:            release(fpos->name);
        !          78051:            fscanf(fin, "%s", buf);
        !          78052:            fpos->name = strsave(buf);
        !          78053:        } else if ( strcmp(cmd, "fontname") == 0 ) {
        !          78054:            release(fpos->fontname);
        !          78055:            fscanf(fin, "%s", buf);
        !          78056:            fpos->fontname = strsave(buf);
        !          78057:        } else if ( strcmp(cmd, "special") == 0 )
        !          78058:            fpos->specfont = 1;
        !          78059:        else if ( strcmp(cmd, "named") == 0 )   /* in prologue or somewhere else */
        !          78060:            fpos->flags |= NAMED;
        !          78061:        else if ( strcmp(cmd, "charset") == 0 ) {
        !          78062:            skipline(fin);
        !          78063:            next = 0;
        !          78064:            fpos->nchars = 0;           /* special characters */
        !          78065:            fpos->first = LASTCODE;
        !          78066:            fpos->last = FIRSTCODE;
        !          78067:            while ( fgets(buf, sizeof(buf), fin) != NULL ) {
        !          78068:                num = -1;
        !          78069:                sscanf(buf, "%s %s %s %s", ch, s1, s2, s3);
        !          78070:                if ( s1[0] != '"' ) {           /* not a synonym */
        !          78071:                    sscanf(s1, "%d", &wid);
        !          78072:                    code = strtol(s3, 0, 0);    /* dec/oct/hex */
        !          78073:                }   /* End if */
        !          78074:                if ( strlen(ch) == 1 )          /* it's ascii */
        !          78075:                    num = ch[0];
        !          78076:                else if ( ch[0] == '\\' && ch[1] == '0' )
        !          78077:                    num = strtol(ch+1, 0, 0);
        !          78078:                /*
        !          78079:                 * Eventually consider something like,
        !          78080:                 *
        !          78081:                 * else if ( strlen(ch) == chartorune(&r, ch) )
        !          78082:                 *      num = r;
        !          78083:                 */
        !          78084:                else if ( strcmp(ch, "---") != 0 ) {    /* ignore unnamed chars */
        !          78085:                    if ( (num = chindex(ch)) == INVALIDCODE )
        !          78086:                        num = chadd(ch);
        !          78087:                }   /* End else */
        !          78088:                if ( ValidChar(num) ) {
        !          78089:                    if ( next < LARGESTFONT ) {
        !          78090:                        chtemp[next].num = num;
        !          78091:                        chtemp[next].wid = wid;
        !          78092:                        chtemp[next++].code = code;
        !          78093:                        if ( ValidCode(num) ) {
        !          78094:                            fpos->first = (num < fpos->first) ? num : fpos->first;
        !          78095:                            fpos->last = (num > fpos->last) ? num : fpos->last;
        !          78096:                        } else fpos->nchars++;
        !          78097:                    } else error(FATAL, "font %s too large", path);
        !          78098:                } else if ( num != -1 )
        !          78099:                    error(FATAL, "invalid character in font %s\n", path);
        !          78100:            }   /* End while */
        !          78101:            break;
        !          78102:        }   /* End else */
        !          78103:        skipline(fin);
        !          78104:     }  /* End while */
        !          78105: 
        !          78106:     fclose(fin);
        !          78107: 
        !          78108:     if ( fpos->first > fpos->last )
        !          78109:        fpos->last = fpos->first - 1;
        !          78110:     fpos->nchars += fpos->last - fpos->first + 1;
        !          78111:     fpos->wp = (Chwid *)allocate(fpos->nchars * sizeof(Chwid));
        !          78112: 
        !          78113:     for ( i = 0; i < fpos->nchars; i++ )
        !          78114:        fpos->wp[i].num = INVALIDCODE;
        !          78115: 
        !          78116:     for ( i = 0, n = 1; i < next; i++ ) {
        !          78117:        if ( chtemp[i].num <= fpos->last )
        !          78118:            fpos->wp[chtemp[i].num - fpos->first] = chtemp[i];
        !          78119:        else fpos->wp[fpos->last - fpos->first + n++] = chtemp[i];
        !          78120:     }  /* End for */
        !          78121: 
        !          78122:     fpos->state = INMEMORY;
        !          78123:     return(1);
        !          78124: 
        !          78125: }   /* End of getfont */
        !          78126: 
        !          78127: /*****************************************************************************/
        !          78128: 
        !          78129: mountfont(path, m)
        !          78130: 
        !          78131:     char       *path;
        !          78132:     int                m;
        !          78133: 
        !          78134: {
        !          78135: 
        !          78136:     Font       *fpos;
        !          78137: 
        !          78138:     if ( m < 0 || m > MAXFONTS )
        !          78139:        return(-1);
        !          78140: 
        !          78141:     if ( mount[m] != NULL ) {
        !          78142:        if ( mount[m]->path != NULL && strcmp(path, mount[m]->path) == 0 ) {
        !          78143:            if ( mount[m]->state == INMEMORY )
        !          78144:                return(1);
        !          78145:        } else {
        !          78146:            mount[m]->mounted--;
        !          78147:            mount[m] = NULL;
        !          78148:        }   /* End else */
        !          78149:     }  /* End if */
        !          78150: 
        !          78151:     mount[m] = fpos = &fonts[findfont(path)];
        !          78152:     mount[m]->mounted++;
        !          78153:     return(getfont(path, fpos));
        !          78154: 
        !          78155: }   /* End of mountfont */
        !          78156: 
        !          78157: /*****************************************************************************/
        !          78158: 
        !          78159: freefonts()
        !          78160: 
        !          78161: {
        !          78162: 
        !          78163:     int                n;
        !          78164: 
        !          78165: /*
        !          78166:  *
        !          78167:  * Don't release the path without resetting state to NEWFONT - findfont()
        !          78168:  * assumes path is available.
        !          78169:  *
        !          78170:  */
        !          78171: 
        !          78172:     for ( n = 0; n < MAXFONTS+2; n++ )
        !          78173:        if ( fonts[n].state == INMEMORY && fonts[n].mounted == 0 ) {
        !          78174:            release(fonts[n].wp);
        !          78175:            fonts[n].wp = NULL;
        !          78176:            fonts[n].state = RELEASED;
        !          78177:            mcount--;
        !          78178:        }   /* End if */
        !          78179: 
        !          78180: }   /* End of freefonts */
        !          78181: 
        !          78182: /*****************************************************************************/
        !          78183: 
        !          78184: findfont(path)
        !          78185: 
        !          78186:     char       *path;
        !          78187: 
        !          78188: {
        !          78189: 
        !          78190:     register   n;
        !          78191: 
        !          78192:     for ( n = hash(path, MAXFONTS+2); fonts[n].state != NEWFONT; n = (n+1) % (MAXFONTS+2) )
        !          78193:        if ( strcmp(path, fonts[n].path) == 0 )
        !          78194:            break;
        !          78195:     return(n);
        !          78196: 
        !          78197: }   /* End of findfont */
        !          78198: 
        !          78199: /*****************************************************************************/
        !          78200: 
        !          78201: mounted(m)
        !          78202: 
        !          78203:     int                m;
        !          78204: 
        !          78205: {
        !          78206: 
        !          78207:     return(m >= 0 && m <= MAXFONTS && mount[m] != NULL);
        !          78208: 
        !          78209: }   /* End of mounted */
        !          78210: 
        !          78211: /*****************************************************************************/
        !          78212: 
        !          78213: onfont(c, m)
        !          78214: 
        !          78215:     int                c;
        !          78216:     int                m;
        !          78217: 
        !          78218: {
        !          78219: 
        !          78220:     Font       *fp;
        !          78221:     Chwid      *cp, *ep;
        !          78222: 
        !          78223: /*
        !          78224:  *
        !          78225:  * Returns the position of character c in the font mounted at m, or -1 if the
        !          78226:  * character is not found.
        !          78227:  *
        !          78228:  */
        !          78229: 
        !          78230:     if ( mounted(m) ) {
        !          78231:        fp = mount[m];
        !          78232:        if ( c >= fp->first && c <= fp->last ) {
        !          78233:            if ( fp->wp[c-fp->first].num == c )
        !          78234:                return(c - fp->first);
        !          78235:            else return(-1);
        !          78236:        }   /* End if */
        !          78237: 
        !          78238:        if ( ValidSpecial(c) ) {
        !          78239:            cp = &fp->wp[fp->last - fp->first + 1];
        !          78240:            ep = &fp->wp[fp->nchars];
        !          78241:            for ( ; cp < ep; cp++ )                     /* search others */
        !          78242:                if ( cp->num == c )
        !          78243:                    return(cp - &fp->wp[0]);
        !          78244:        }   /* End if */
        !          78245:     }  /* End if */
        !          78246: 
        !          78247:     return(-1);
        !          78248: 
        !          78249: }   /* End of onfont */
        !          78250: 
        !          78251: /*****************************************************************************/
        !          78252: 
        !          78253: chindex(s)
        !          78254: 
        !          78255:     char       *s;
        !          78256: 
        !          78257: {
        !          78258: 
        !          78259:     register   i;
        !          78260: 
        !          78261: /*
        !          78262:  *
        !          78263:  * Return the code assigned to special character s or INVALIDCODE if s
        !          78264:  * is not currently defined.
        !          78265:  *
        !          78266:  */
        !          78267: 
        !          78268:     for ( i = hash(s, SPECIALCHARS); chnames[i] != NULL; i = (i+1) % SPECIALCHARS )
        !          78269:        if ( strcmp(s, chnames[i]) == 0 )
        !          78270:            return(i+FIRSTSPECIAL);
        !          78271:     return(INVALIDCODE);
        !          78272: 
        !          78273: }   /* End of chindex */
        !          78274: 
        !          78275: /*****************************************************************************/
        !          78276: 
        !          78277: chadd(s)
        !          78278: 
        !          78279:     char       *s;
        !          78280: 
        !          78281: {
        !          78282: 
        !          78283:     register   i;
        !          78284: 
        !          78285:     if ( nchnames >= SPECIALCHARS - 1 )                /* guarantee one empty slot */
        !          78286:        error(FATAL, "out of table space adding character %s", s);
        !          78287: 
        !          78288:     for ( i = hash(s, SPECIALCHARS); chnames[i] != NULL; i = (i+1) % SPECIALCHARS ) ;
        !          78289: 
        !          78290:     nchnames++;
        !          78291:     chnames[i] = strsave(s);
        !          78292:     return(i+FIRSTSPECIAL);
        !          78293: 
        !          78294: }   /* End of chadd */
        !          78295: 
        !          78296: /*****************************************************************************/
        !          78297: 
        !          78298: char *chname(n)
        !          78299: 
        !          78300:     int                n;
        !          78301: 
        !          78302: {
        !          78303: 
        !          78304:     return(chnames[n-FIRSTSPECIAL]);
        !          78305: 
        !          78306: }   /* End of chname */
        !          78307: 
        !          78308: /*****************************************************************************/
        !          78309: 
        !          78310: hash(s, l)
        !          78311: 
        !          78312:     char       *s;
        !          78313:     int                l;
        !          78314: 
        !          78315: {
        !          78316: 
        !          78317:     unsigned   i;
        !          78318: 
        !          78319:     for ( i = 0; *s; s++ )
        !          78320:        i = i*10 + *s;
        !          78321:     return(i % l);
        !          78322: 
        !          78323: }   /* End of hash */
        !          78324: 
        !          78325: /*****************************************************************************/
        !          78326: 
        !          78327: char *strsave(s)
        !          78328: 
        !          78329:     char       *s;
        !          78330: 
        !          78331: {
        !          78332: 
        !          78333:     char       *ptr = NULL;
        !          78334: 
        !          78335:     if ( s != NULL ) {
        !          78336:        ptr = (char *)allocate(strlen(s)+1);
        !          78337:        strcpy(ptr, s);
        !          78338:     }  /* End if */
        !          78339:     return(ptr);
        !          78340: 
        !          78341: }   /* End of strsave */
        !          78342: 
        !          78343: /*****************************************************************************/
        !          78344: 
        !          78345: char *allocate(count)
        !          78346: 
        !          78347:     int                count;
        !          78348: 
        !          78349: {
        !          78350: 
        !          78351:     char       *ptr;
        !          78352: 
        !          78353:     if ( (ptr = (char *)malloc(count)) == NULL ) {
        !          78354:        freefonts();
        !          78355:        if ( (ptr = (char *)malloc(count)) == NULL )
        !          78356:            error(FATAL, "no memory");
        !          78357:     }  /* End if */
        !          78358:     return(ptr);
        !          78359: 
        !          78360: }   /* End of allocate */
        !          78361: 
        !          78362: /*****************************************************************************/
        !          78363: 
        !          78364: release(ptr)
        !          78365: 
        !          78366:     char       *ptr;
        !          78367: 
        !          78368: {
        !          78369: 
        !          78370:     if ( ptr != NULL )
        !          78371:        free(ptr);
        !          78372: 
        !          78373: }   /* End of release */
        !          78374: 
        !          78375: /*****************************************************************************/
        !          78376: 
        !          78377: dumpmount(m)
        !          78378: 
        !          78379:     int                m;
        !          78380: 
        !          78381: {
        !          78382: 
        !          78383:     if ( mount[m] != NULL )
        !          78384:        dumpfont((mount[m] - &fonts[0]));
        !          78385:     else fprintf(stderr, "no font mounted at %d\n", m);
        !          78386: 
        !          78387: }   /* End of dumpmount */
        !          78388: 
        !          78389: /*****************************************************************************/
        !          78390: 
        !          78391: dumpfont(n)
        !          78392: 
        !          78393:     int                n;
        !          78394: 
        !          78395: {
        !          78396: 
        !          78397:     int                i;
        !          78398:     Font       *fpos;
        !          78399:     char       *str;
        !          78400: 
        !          78401:     fpos = &fonts[n];
        !          78402: 
        !          78403:     if ( fpos->state ) {
        !          78404:        fprintf(stderr, "path %s\n", fpos->path);
        !          78405:        fprintf(stderr, "state %d\n", fpos->state);
        !          78406:        fprintf(stderr, "flags %d\n", fpos->flags);
        !          78407:        fprintf(stderr, "mounted %d\n", fpos->mounted);
        !          78408:        fprintf(stderr, "first %d\n", fpos->first);
        !          78409:        fprintf(stderr, "last %d\n", fpos->last);
        !          78410:        fprintf(stderr, "nchars %d\n", fpos->nchars);
        !          78411:        fprintf(stderr, "special %d\n", fpos->specfont);
        !          78412:        fprintf(stderr, "name %s\n", fpos->name);
        !          78413:        fprintf(stderr, "fontname %s\n", fpos->fontname);
        !          78414:        if ( fpos->state == INMEMORY ) {
        !          78415:            fprintf(stderr, "charset\n");
        !          78416:            for ( i = 0; i < fpos->nchars; i++ ) {
        !          78417:                if ( fpos->wp[i].num > 0 ) {
        !          78418:                    if ( fpos->wp[i].num <= fpos->last )
        !          78419:                        fprintf(stderr, "%c\t%d\t%d\n", fpos->wp[i].num,
        !          78420:                                fpos->wp[i].wid, fpos->wp[i].code);
        !          78421:                    else {
        !          78422:                        str = chname(fpos->wp[i].num);
        !          78423:                        if ( *str == '#' && isdigit(*(str+1)) && isdigit(*(str+2)) )
        !          78424:                            str = "---";
        !          78425:                        fprintf(stderr, "%s\t%d\t%d\n", str, fpos->wp[i].wid,
        !          78426:                                fpos->wp[i].code);
        !          78427:                    }   /* End else */
        !          78428:                }   /* End if */
        !          78429:            }   /* End for */
        !          78430:        } else fprintf(stderr, "charset: not in memory\n");
        !          78431:     } else fprintf(stderr, "empty font: %d\n", n);
        !          78432: 
        !          78433:     putc('\n', stderr);
        !          78434: 
        !          78435: }   /* End of dumpfont */
        !          78436: 
        !          78437: /*****************************************************************************/
        !          78438: 
        !          78439: 0707070014231311141006440057030057030000011031250522627505000003200000005021post.src/dpost.utf/font.h/*
        !          78440:  *
        !          78441:  * Characteristics of a font - for postprocessors. Most changes are for
        !          78442:  * Unicode and Plan 9 UTF encoding. Also tried to anticipate larger and
        !          78443:  * more general Unicode fonts.
        !          78444:  * 
        !          78445:  */
        !          78446: 
        !          78447: #define FIRSTCODE      0x0020
        !          78448: #define LASTCODE       0x8BFF
        !          78449: #define FIRSTSPECIAL   0xE800
        !          78450: #define LASTSPECIAL    0xFDFF
        !          78451: 
        !          78452: #define INVALIDCODE    0x0000
        !          78453: #define LARGESTFONT    0x1000
        !          78454: #define MAXFONTS       99
        !          78455: #define        SPECIALCHARS    (LASTSPECIAL-FIRSTSPECIAL+1)
        !          78456: 
        !          78457: #define ValidCode(c)   ((c) >= FIRSTCODE && (c) <= LASTCODE)
        !          78458: #define ValidSpecial(c)        ((c) >= FIRSTSPECIAL && (c) <= LASTSPECIAL)
        !          78459: #define ValidChar(c)   (ValidCode(c) || ValidSpecial(c))
        !          78460: 
        !          78461: /*
        !          78462:  *
        !          78463:  * State of a table entry in fonts[].
        !          78464:  *
        !          78465:  */
        !          78466: 
        !          78467: #define NEWFONT                0
        !          78468: #define RELEASED       1
        !          78469: #define INMEMORY       2
        !          78470: 
        !          78471: /*
        !          78472:  *
        !          78473:  * Flags - for setting bits in a font's flag field.
        !          78474:  *
        !          78475:  */
        !          78476: 
        !          78477: #define USED           1
        !          78478: #define NAMED          2
        !          78479: 
        !          78480: #define skipline(f)    while ( getc(f) != '\n' )
        !          78481: 
        !          78482: /*
        !          78483:  *
        !          78484:  * Data about each character on a font. Omitted the ascender/descender field.
        !          78485:  * Need 16 bits for num field to support Unicode character set. Use the same
        !          78486:  * for code field which may be translated to Plan 9's UTF represenation on
        !          78487:  * output. A string for code field might be worth a try? Needs considerable
        !          78488:  * thought!!
        !          78489:  *
        !          78490:  */
        !          78491: 
        !          78492: typedef struct {
        !          78493:        unsigned short  num;            /* INVALIDCODE means not on this font */
        !          78494:        unsigned char   wid;            /* width */
        !          78495:        unsigned short  code;           /* code for actual device. */
        !          78496: } Chwid;
        !          78497: 
        !          78498: /*
        !          78499:  *
        !          78500:  * Font header - one for each available position. first and last fields
        !          78501:  * are an attempt to anticipate support for Unicode fonts. Characters
        !          78502:  * from first through last are described by the initial last-first+1
        !          78503:  * entries in wp. Entries in wp having num == INVALIDCODE are unassigned
        !          78504:  * in the font. The remaining nchars-(last-first+1) wp entries support
        !          78505:  * troff's traditional two character escapes. Special characters are
        !          78506:  * hashed and assigned codes from Unicode's Private Use Area.
        !          78507:  *
        !          78508:  */
        !          78509: 
        !          78510: typedef struct {
        !          78511:        char            *path;          /* where it came from */
        !          78512:        char            *name;          /* as known to troff */
        !          78513:        char            *fontname;      /* real name (e.g. Times-Roman) */
        !          78514:        char            state;          /* NEWFONT, RELEASED, or INMEMORY */
        !          78515:        char            flags;          /* for now just USED and NAMED */
        !          78516:        char            mounted;        /* mounted on this many positions */
        !          78517:        char            specfont;       /* 1 == special font */
        !          78518:        unsigned short  first;          /* first wp entry is for this character */
        !          78519:        unsigned short  last;           /* last code for this font */
        !          78520:        unsigned short  nchars;         /* size of width table for this font */
        !          78521:        Chwid           *wp;            /* widths, etc., of the real characters */
        !          78522: } Font;
        !          78523: 
        !          78524: /*
        !          78525:  *
        !          78526:  * Non-integer functions.
        !          78527:  *
        !          78528:  */
        !          78529: 
        !          78530: extern char    *chname();
        !          78531: extern char    *strsave();
        !          78532: extern char    *allocate();
        !          78533: 
        !          78534: 0707070014231311151006440057030057030000011033270522627505000003400000000272post.src/dpost.utf/motion.h/*
        !          78535:  *
        !          78536:  * Position adjusting macros.
        !          78537:  *
        !          78538:  */
        !          78539: 
        !          78540: #define hgoto(n)       hpos = n
        !          78541: #define hmot(n)                hpos += n
        !          78542: #define vgoto(n)       vpos = n
        !          78543: #define vmot(n)                vpos += n
        !          78544: 
        !          78545: extern int     hpos;
        !          78546: extern int     vpos;
        !          78547: 
        !          78548: 0707070014231311161006440057030057030000011035200522627505100003600000023077post.src/dpost.utf/pictures.c/*
        !          78549:  *
        !          78550:  * PostScript picture inclusion routines. Support for managing in-line pictures
        !          78551:  * has been added, and works in combination with the simple picpack pre-processor
        !          78552:  * that's supplied with this package. An in-line picture begins with a special
        !          78553:  * device control command that looks like,
        !          78554:  *
        !          78555:  *             x X InlinPicture name size
        !          78556:  *
        !          78557:  * where name is the pathname of the original picture file and size is the number
        !          78558:  * of bytes in the picture, which begins immediately on the next line. When dpost
        !          78559:  * encounters the InlinePicture device control command inlinepic() is called and
        !          78560:  * that routine appends the string name and the integer size to a temporary file
        !          78561:  * (fp_pic) and then adds the next size bytes read from the current input file to
        !          78562:  * file fp_pic. All in-line pictures are saved in fp_pic and located later using
        !          78563:  * the name string and picture file size that separate pictures saved in fp_pic.
        !          78564:  *
        !          78565:  * When a picture request (ie. an "x X PI" command) is encountered picopen() is
        !          78566:  * called and it first looks for the picture file in fp_pic. If it's found there
        !          78567:  * the entire picture (ie. size bytes) is copied from fp_pic to a new temp file
        !          78568:  * and that temp file is used as the picture file. If there's nothing in fp_pic
        !          78569:  * or if the lookup failed the original route is taken.
        !          78570:  *
        !          78571:  * Support for in-line pictures is an attempt to address requirements, expressed
        !          78572:  * by several organizations, of being able to store a document as a single file
        !          78573:  * (usually troff input) that can then be sent through dpost and ultimately to
        !          78574:  * a PostScript printer. The mechanism may help some users, but the are obvious
        !          78575:  * disadvantages to this approach, and the original mechanism is the recommended
        !          78576:  * approach! Perhaps the most important problem is that troff output, with in-line
        !          78577:  * pictures included, doesn't fit the device independent language accepted by
        !          78578:  * important post-processors (like proff) and that means you won't be able to
        !          78579:  * reliably preview a packed file on your 5620 (or whatever).
        !          78580:  *
        !          78581:  */
        !          78582: 
        !          78583: #include <stdio.h>
        !          78584: 
        !          78585: #include "comments.h"                  /* PostScript file structuring comments */
        !          78586: #include "gen.h"                       /* general purpose definitions */
        !          78587: #include "path.h"                      /* just for TEMPDIR definition */
        !          78588: #include "ext.h"                       /* external variable declarations */
        !          78589: 
        !          78590: FILE   *fp_pic = NULL;                 /* in-line pictures go here */
        !          78591: FILE   *picopen();
        !          78592: 
        !          78593: extern int     res, hpos, vpos;
        !          78594: extern int     picflag;
        !          78595: extern FILE    *tf;
        !          78596: 
        !          78597: /*****************************************************************************/
        !          78598: 
        !          78599: picture(buf)
        !          78600: 
        !          78601:     char       *buf;           /* stuff following 'x X PI' command */
        !          78602: 
        !          78603: {
        !          78604: 
        !          78605:     int                poffset;        /* page offset */
        !          78606:     int                indent;         /* indent */
        !          78607:     int                length;         /* line length  */
        !          78608:     int                totrap;         /* distance to next trap */
        !          78609:     char       name[100];      /* picture file and page string */
        !          78610:     char       hwo[40], *p;    /* height, width and offset strings */
        !          78611:     char       flags[20];      /* miscellaneous stuff */
        !          78612:     int                page = 1;       /* page number pulled from name[] */
        !          78613:     double     frame[4];       /* height, width, y, and x offsets from hwo[] */
        !          78614:     char       units;          /* scale indicator for frame dimensions */
        !          78615:     int                whiteout = 0;   /* white out the box? */
        !          78616:     int                outline = 0;    /* draw a box around the picture? */
        !          78617:     int                scaleboth = 0;  /* scale both dimensions? */
        !          78618:     double     adjx = 0.5;     /* left-right adjustment */
        !          78619:     double     adjy = 0.5;     /* top-bottom adjustment */
        !          78620:     double     rot = 0;        /* rotation in clockwise degrees */
        !          78621:     FILE       *fp_in;         /* for *name */
        !          78622:     int                i;              /* loop index */
        !          78623: 
        !          78624:     char       *strchr();
        !          78625: 
        !          78626: /*
        !          78627:  *
        !          78628:  * Called from devcntrl() after an 'x X PI' command is found. The syntax of that
        !          78629:  * command is:
        !          78630:  *
        !          78631:  *     x X PI:args
        !          78632:  *
        !          78633:  * with args separated by colons and given by:
        !          78634:  *
        !          78635:  *     poffset
        !          78636:  *     indent
        !          78637:  *     length
        !          78638:  *     totrap
        !          78639:  *     file[(page)]
        !          78640:  *     height[,width[,yoffset[,xoffset]]]
        !          78641:  *     [flags]
        !          78642:  *
        !          78643:  * poffset, indent, length, and totrap are given in machine units. height, width,
        !          78644:  * and offset refer to the picture frame in inches, unless they're followed by
        !          78645:  * the u scale indicator. flags is a string that provides a little bit of control
        !          78646:  * over the placement of the picture in the frame. Rotation of the picture, in
        !          78647:  * clockwise degrees, is set by the a flag. If it's not followed by an angle
        !          78648:  * the current rotation angle is incremented by 90 degrees, otherwise the angle
        !          78649:  * is set by the number that immediately follows the a.
        !          78650:  *
        !          78651:  */
        !          78652: 
        !          78653:     if ( picflag == OFF )              /* skip it */
        !          78654:        return;
        !          78655: 
        !          78656:     flushtext();
        !          78657: 
        !          78658:     flags[0] = '\0';                   /* just to be safe */
        !          78659:     if ( sscanf(buf, "%d:%d:%d:%d:%[^:]:%[^:]:%[^:]", &poffset, &indent,
        !          78660:                &length, &totrap, name, hwo, flags) < 6 ) {
        !          78661:            error(NON_FATAL, "too few arguments to specify picture");
        !          78662:            return;
        !          78663:     }  /* End if */
        !          78664: 
        !          78665:     if ( sscanf(name, "%*[^(](%d", &page) == 1 )       /* grab the page number */
        !          78666:        strtok(name, "(");                      /* and separate it from the name */
        !          78667: 
        !          78668:     if ( (fp_in = picopen(name)) == NULL ) {
        !          78669:        error(NON_FATAL, "can't open picture file %s", name);
        !          78670:        return;
        !          78671:     }  /* End if */
        !          78672: 
        !          78673:     frame[0] = frame[1] = -1;          /* default frame height, width */
        !          78674:     frame[2] = frame[3] = 0;           /* and y and x offsets */
        !          78675: 
        !          78676:     for ( i = 0, p = hwo-1; i < 4 && p != NULL; i++, p = strchr(p, ',') )
        !          78677:        if ( sscanf(++p, "%lf%c", &frame[i], &units) == 2 )
        !          78678:            if ( units == 'i' || units == ',' || units == '\0' )
        !          78679:                frame[i] *= res;
        !          78680: 
        !          78681:     if ( frame[0] <= 0 )               /* check what we got for height */
        !          78682:        frame[0] = totrap;
        !          78683: 
        !          78684:     if ( frame[1] <= 0 )               /* and width - check too big?? */
        !          78685:        frame[1] = length - indent;
        !          78686: 
        !          78687:     frame[3] += poffset + indent;      /* real x offset */
        !          78688: 
        !          78689:     for ( i = 0; flags[i]; i++ )
        !          78690:        switch ( flags[i] ) {
        !          78691:            case 'c': adjx = adjy = 0.5; break; /* move to the center */
        !          78692:            case 'l': adjx = 0; break;          /* left */
        !          78693:            case 'r': adjx = 1; break;          /* right */
        !          78694:            case 't': adjy = 1; break;          /* top */
        !          78695:            case 'b': adjy = 0; break;          /* or bottom justify */
        !          78696:            case 'o': outline = 1; break;       /* outline the picture */
        !          78697:            case 'w': whiteout = 1; break;      /* white out the box */
        !          78698:            case 's': scaleboth = 1; break;     /* scale both dimensions */
        !          78699:            case 'a': if ( sscanf(&flags[i+1], "%lf", &rot) != 1 )
        !          78700:                          rot += 90;
        !          78701:        }   /* End switch */
        !          78702: 
        !          78703:     restore();
        !          78704:     ps_include(fp_in, tf, page, whiteout, outline, scaleboth,
        !          78705:                frame[3]+frame[1]/2, -vpos-frame[2]-frame[0]/2, frame[1], frame[0], adjx, adjy, -rot);
        !          78706:     save();
        !          78707:     fclose(fp_in);
        !          78708: 
        !          78709: }   /* End of picture */
        !          78710: 
        !          78711: /*****************************************************************************/
        !          78712: 
        !          78713: FILE *picopen(path)
        !          78714: 
        !          78715:     char       *path;                  /* picture file pathname */
        !          78716: 
        !          78717: {
        !          78718: 
        !          78719:     char       name[100];              /* pathnames */
        !          78720:     long       pos;                    /* current position */
        !          78721:     long       total;                  /* and sizes - from *fp_pic */
        !          78722:     char       *tname;                 /* pathname */
        !          78723:     FILE       *fp;                    /* and pointer for the new temp file */
        !          78724: 
        !          78725: /*
        !          78726:  *
        !          78727:  * Responsible for finding and opening the next picture file. If we've accumulated
        !          78728:  * any in-line pictures fp_pic won't be NULL and we'll look there first. If *path
        !          78729:  * is found in *fp_pic we create another temp file, open it for update, unlink it,
        !          78730:  * copy in the picture, seek back to the start of the new temp file, and return
        !          78731:  * the file pointer to the caller. If fp_pic is NULL or the lookup fails we just
        !          78732:  * open file *path and return the resulting file pointer to the caller.
        !          78733:  *
        !          78734:  */
        !          78735: 
        !          78736:     if ( fp_pic != NULL ) {
        !          78737:        fseek(fp_pic, 0L, 0);
        !          78738:        while ( fscanf(fp_pic, "%s %ld\n", name, &total) != EOF ) {
        !          78739:            pos = ftell(fp_pic);
        !          78740:            if ( strcmp(path, name) == 0 ) {
        !          78741:                if ( (tname = tempnam(TEMPDIR, "dpost")) == NULL )
        !          78742:                    error(FATAL, "can't generate temp file name");
        !          78743:                if ( (fp = fopen(tname, "w+r")) == NULL )
        !          78744:                    error(FATAL, "can't open %s", tname);
        !          78745:                unlink(tname);
        !          78746:                free(tname);
        !          78747:                piccopy(fp_pic, fp, total);
        !          78748:                fseek(fp, 0L, 0);
        !          78749:                return(fp);
        !          78750:            }   /* End if */
        !          78751:            fseek(fp_pic, total+pos, 0);
        !          78752:        }   /* End while */
        !          78753:     }  /* End if */
        !          78754: 
        !          78755:     return(fopen(path, "r"));
        !          78756: 
        !          78757: }   /* End of picopen */
        !          78758: 
        !          78759: /*****************************************************************************/
        !          78760: 
        !          78761: inlinepic(fp, buf)
        !          78762: 
        !          78763:     FILE       *fp;                    /* current input file */
        !          78764:     char       *buf;                   /* whatever followed "x X InlinePicture" */
        !          78765: 
        !          78766: {
        !          78767: 
        !          78768:     char       *tname;                 /* temp file pathname - for *fp_pic */
        !          78769:     char       name[100];              /* picture file pathname */
        !          78770:     long       total;                  /* and size - both from *buf */
        !          78771: 
        !          78772: /*
        !          78773:  *
        !          78774:  * Adds an in-line picture file to the end of temporary file *fp_pic. All pictures
        !          78775:  * grabbed from the input file are saved in the same temp file. Each is preceeded
        !          78776:  * by a one line header that includes the original picture file pathname and the
        !          78777:  * size of the picture in bytes. The in-line picture file is opened for update,
        !          78778:  * left open, and unlinked so it disappears when we do.
        !          78779:  *
        !          78780:  */
        !          78781: 
        !          78782:     if ( fp_pic == NULL ) {
        !          78783:        if ( (tname = tempnam(TEMPDIR, "dpost")) == NULL )
        !          78784:            error(FATAL, "can't generate in-line picture file name");
        !          78785:        if ( (fp_pic = fopen(tname, "w+r")) == NULL )
        !          78786:            error(FATAL, "can't open in-line picture file %s", tname);
        !          78787:        unlink(tname);
        !          78788:     }  /* End if */
        !          78789: 
        !          78790:     if ( sscanf(buf, "%s %ld", name, &total) != 2 )
        !          78791:        error(FATAL, "in-line picture error");
        !          78792: 
        !          78793:     fseek(fp_pic, 0L, 2);
        !          78794:     fprintf(fp_pic, "%s %ld\n", name, total);
        !          78795:     getc(fp);
        !          78796:     fflush(fp_pic);
        !          78797:     piccopy(fp, fp_pic, total);
        !          78798:     ungetc('\n', fp);
        !          78799: 
        !          78800: }   /* End of inlinepic */
        !          78801: 
        !          78802: /*****************************************************************************/
        !          78803: 
        !          78804: piccopy(fp_in, fp_out, total)
        !          78805: 
        !          78806:     FILE       *fp_in;                 /* input */
        !          78807:     FILE       *fp_out;                /* and output file pointers */
        !          78808:     long       total;                  /* number of bytes to be copied */
        !          78809: 
        !          78810: {
        !          78811: 
        !          78812:     long       i;                      /* loop index */
        !          78813: 
        !          78814: /*
        !          78815:  *
        !          78816:  * Copies total bytes from file fp_in to fp_out. Used to append picture files to
        !          78817:  * *fp_pic and then copy them to yet another temporary file immediately before
        !          78818:  * they're used (in picture()).
        !          78819:  *
        !          78820:  */
        !          78821: 
        !          78822:     for ( i = 0; i < total; i++ )
        !          78823:        if ( putc(getc(fp_in), fp_out) == EOF )
        !          78824:            error(FATAL, "error copying in-line picture file");
        !          78825:     fflush(fp_out);
        !          78826: 
        !          78827: }   /* End of piccopy */
        !          78828: 
        !          78829: /*****************************************************************************/
        !          78830: 
        !          78831: 0707070014231311171006440057030057030000011033470522627505200004200000000262post.src/dpost.utf/ps_include.awk/^->/ {
        !          78832:        if(ndef)
        !          78833:                printf("\t0\n};\n\n")
        !          78834:        printf("static char *%s[] = {\n", $2)
        !          78835:        ndef++
        !          78836:        next
        !          78837: }
        !          78838: /^#/ {next}
        !          78839: $0 != "" {printf("\t\"%s\",\n", $0); next}
        !          78840: END {printf("\t0\n};\n")}
        !          78841: 0707070014231311201006440057030057030000011035400522627505300004000000012407post.src/dpost.utf/ps_include.c
        !          78842: #include <stdio.h>
        !          78843: #include "ps_include.h"
        !          78844: 
        !          78845: #define has(word)      (strncmp(buf, word, strlen(word)) == 0)
        !          78846: #define grab(n)                ((Section *)(nglobal \
        !          78847:                        ? realloc((char *)global, n*sizeof(Section)) \
        !          78848:                        : calloc(n, sizeof(Section))))
        !          78849: 
        !          78850: char   buf[512];
        !          78851: typedef struct {long start, end;} Section;
        !          78852: 
        !          78853: extern char    *calloc(), *realloc();
        !          78854: 
        !          78855: 
        !          78856: ps_include(fin, fout, page_no, whiteout, outline, scaleboth, cx, cy, sx, sy, ax, ay, rot)
        !          78857: 
        !          78858: 
        !          78859:     FILE       *fin, *fout;            /* input and output files */
        !          78860:     int                page_no;                /* physical page number from *fin */
        !          78861:     int                whiteout;               /* erase picture area */
        !          78862:     int                outline;                /* draw a box around it and */
        !          78863:     int                scaleboth;              /* scale both dimensions - if not zero */
        !          78864:     double     cx, cy;                 /* center of the picture and */
        !          78865:     double     sx, sy;                 /* its size - in current coordinates */
        !          78866:     double     ax, ay;                 /* left-right, up-down adjustment */
        !          78867:     double     rot;                    /* rotation - in clockwise degrees */
        !          78868: 
        !          78869: 
        !          78870: {
        !          78871: 
        !          78872: 
        !          78873:     int                foundpage = 0;          /* found the page when non zero */
        !          78874:     int                foundpbox = 0;          /* found the page bounding box */
        !          78875:     int                nglobal = 0;            /* number of global defs so far */
        !          78876:     int                maxglobal = 0;          /* and the number we've got room for */
        !          78877:     Section    prolog, page, trailer;  /* prologue, page, and trailer offsets */
        !          78878:     Section    *global;                /* offsets for all global definitions */
        !          78879:     double     llx, lly;               /* lower left and */
        !          78880:     double     urx, ury;               /* upper right corners - default coords */
        !          78881:     double     w = whiteout != 0;      /* mostly for the var() macro */
        !          78882:     double     o = outline != 0;
        !          78883:     double     s = scaleboth != 0;
        !          78884:     int                i;                      /* loop index */
        !          78885: 
        !          78886: 
        !          78887: /*
        !          78888:  *
        !          78889:  * Reads a PostScript file (*fin), and uses structuring comments to locate the
        !          78890:  * prologue, trailer, global definitions, and the requested page. After the whole
        !          78891:  * file is scanned, the  special ps_include PostScript definitions are copied to
        !          78892:  * *fout, followed by the prologue, global definitions, the requested page, and
        !          78893:  * the trailer. Before returning the initial environment (saved in PS_head) is
        !          78894:  * restored.
        !          78895:  *
        !          78896:  * By default we assume the picture is 8.5 by 11 inches, but the BoundingBox
        !          78897:  * comment, if found, takes precedence.
        !          78898:  *
        !          78899:  */
        !          78900: 
        !          78901: 
        !          78902:        llx = lly = 0;                  /* default BoundingBox - 8.5x11 inches */
        !          78903:        urx = 72 * 8.5;
        !          78904:        ury = 72 * 11.0;
        !          78905: 
        !          78906:        /* section boundaries and bounding box */
        !          78907: 
        !          78908:        prolog.start = prolog.end = 0;
        !          78909:        page.start = page.end = 0;
        !          78910:        trailer.start = 0;
        !          78911:        fseek(fin, 0L, 0);
        !          78912: 
        !          78913:        while ( fgets(buf, sizeof(buf), fin) != NULL )
        !          78914:                if (!has("%%"))
        !          78915:                        continue;
        !          78916:                else if (has("%%Page: ")) {
        !          78917:                        if (!foundpage)
        !          78918:                                page.start = ftell(fin);
        !          78919:                        sscanf(buf, "%*s %*s %d", &i);
        !          78920:                        if (i == page_no)
        !          78921:                                foundpage = 1;
        !          78922:                        else if (foundpage && page.end <= page.start)
        !          78923:                                page.end = ftell(fin);
        !          78924:                } else if (has("%%EndPage: ")) {
        !          78925:                        sscanf(buf, "%*s %*s %d", &i);
        !          78926:                        if (i == page_no) {
        !          78927:                                foundpage = 1;
        !          78928:                                page.end = ftell(fin);
        !          78929:                        }
        !          78930:                        if (!foundpage)
        !          78931:                                page.start = ftell(fin);
        !          78932:                } else if (has("%%PageBoundingBox: ")) {
        !          78933:                        if (i == page_no) {
        !          78934:                                foundpbox = 1;
        !          78935:                                sscanf(buf, "%*s %lf %lf %lf %lf",
        !          78936:                                                &llx, &lly, &urx, &ury);
        !          78937:                        }
        !          78938:                } else if (has("%%BoundingBox: ")) {
        !          78939:                        if (!foundpbox)
        !          78940:                                sscanf(buf,"%*s %lf %lf %lf %lf",
        !          78941:                                                &llx, &lly, &urx, &ury);
        !          78942:                } else if (has("%%EndProlog") || has("%%EndSetup") || has("%%EndDocumentSetup"))
        !          78943:                        prolog.end = page.start = ftell(fin);
        !          78944:                else if (has("%%Trailer"))
        !          78945:                        trailer.start = ftell(fin);
        !          78946:                else if (has("%%BeginGlobal")) {
        !          78947:                        if (page.end <= page.start) {
        !          78948:                                if (nglobal >= maxglobal) {
        !          78949:                                        maxglobal += 20;
        !          78950:                                        global = grab(maxglobal);
        !          78951:                                }
        !          78952:                                global[nglobal].start = ftell(fin);
        !          78953:                        }
        !          78954:                } else if (has("%%EndGlobal"))
        !          78955:                        if (page.end <= page.start)
        !          78956:                                global[nglobal++].end = ftell(fin);
        !          78957: 
        !          78958:        fseek(fin, 0L, 2);
        !          78959:        if (trailer.start == 0)
        !          78960:                trailer.start = ftell(fin);
        !          78961:        trailer.end = ftell(fin);
        !          78962: 
        !          78963:        if (page.end <= page.start)
        !          78964:                page.end = trailer.start;
        !          78965: 
        !          78966: /*
        !          78967: fprintf(stderr, "prolog=(%d,%d)\n", prolog.start, prolog.end);
        !          78968: fprintf(stderr, "page=(%d,%d)\n", page.start, page.end);
        !          78969: for(i = 0; i < nglobal; i++)
        !          78970:        fprintf(stderr, "global[%d]=(%d,%d)\n", i, global[i].start, global[i].end);
        !          78971: fprintf(stderr, "trailer=(%d,%d)\n", trailer.start, trailer.end);
        !          78972: */
        !          78973: 
        !          78974:        /* all output here */
        !          78975:        print(fout, PS_head);
        !          78976: /*
        !          78977:  * Unix 4.0 didn't like the var macro.
        !          78978:  *
        !          78979:        var(llx); var(lly); var(urx); var(ury); var(w); var(o); var(s);
        !          78980:        var(cx); var(cy); var(sx); var(sy); var(ax); var(ay); var(rot);
        !          78981:  *
        !          78982:  */
        !          78983: 
        !          78984:        fprintf(fout, "/llx %g def\n", llx);
        !          78985:        fprintf(fout, "/lly %g def\n", lly);
        !          78986:        fprintf(fout, "/urx %g def\n", urx);
        !          78987:        fprintf(fout, "/ury %g def\n", ury);
        !          78988:        fprintf(fout, "/w %g def\n", w);
        !          78989:        fprintf(fout, "/o %g def\n", o);
        !          78990:        fprintf(fout, "/s %g def\n", s);
        !          78991:        fprintf(fout, "/cx %g def\n", cx);
        !          78992:        fprintf(fout, "/cy %g def\n", cy);
        !          78993:        fprintf(fout, "/sx %g def\n", sx);
        !          78994:        fprintf(fout, "/sy %g def\n", sy);
        !          78995:        fprintf(fout, "/ax %g def\n", ax);
        !          78996:        fprintf(fout, "/ay %g def\n", ay);
        !          78997:        fprintf(fout, "/rot %g def\n", rot);
        !          78998: 
        !          78999:        print(fout, PS_setup);
        !          79000:        copy(fin, fout, &prolog);
        !          79001:        for(i = 0; i < nglobal; i++)
        !          79002:                copy(fin, fout, &global[i]);
        !          79003:        copy(fin, fout, &page);
        !          79004:        copy(fin, fout, &trailer);
        !          79005:        print(fout, PS_tail);
        !          79006: 
        !          79007:        if(nglobal)
        !          79008:                free(global);
        !          79009: 
        !          79010: }
        !          79011: 
        !          79012: static
        !          79013: print(fout, s)
        !          79014: FILE *fout;
        !          79015: char **s;
        !          79016: {
        !          79017:        while (*s)
        !          79018:                fprintf(fout, "%s\n", *s++);
        !          79019: }
        !          79020: 
        !          79021: static
        !          79022: copy(fin, fout, s)
        !          79023: FILE *fin, *fout;
        !          79024: Section *s;
        !          79025: {
        !          79026:        if (s->end <= s->start)
        !          79027:                return;
        !          79028:        fseek(fin, s->start, 0);
        !          79029:        while (ftell(fin) < s->end && fgets(buf, sizeof(buf), fin) != NULL)
        !          79030:                if (buf[0] != '%')
        !          79031:                        fprintf(fout, "%s", buf);
        !          79032: }
        !          79033: 
        !          79034: 0707070014231311211006440057030057030000011035460522627505300004000000003752post.src/dpost.utf/ps_include.hstatic char *PS_head[] = {
        !          79035:        "%ps_include: begin",
        !          79036:        "save",
        !          79037:        "/ed {exch def} def",
        !          79038:        "{} /showpage ed",
        !          79039:        "{} /copypage ed",
        !          79040:        "{} /erasepage ed",
        !          79041:        "{} /letter ed",
        !          79042:        "currentdict /findfont known systemdict /findfont known and {",
        !          79043:        "       /findfont systemdict /findfont get def",
        !          79044:        "} if",
        !          79045:        "36 dict dup /PS-include-dict-dw ed begin",
        !          79046:        "/context ed",
        !          79047:        "count array astore /o-stack ed",
        !          79048:        "%ps_include: variables begin",
        !          79049:        0
        !          79050: };
        !          79051: 
        !          79052: static char *PS_setup[] = {
        !          79053:        "%ps_include: variables end",
        !          79054:        "{llx lly urx ury} /bbox ed",
        !          79055:        "{newpath 2 index exch 2 index exch dup 6 index exch",
        !          79056:        " moveto 3 {lineto} repeat closepath} /boxpath ed",
        !          79057:        "{dup mul exch dup mul add sqrt} /len ed",
        !          79058:        "{2 copy gt {exch} if pop} /min ed",
        !          79059:        "{2 copy lt {exch} if pop} /max ed",
        !          79060:        "{transform round exch round exch A itransform} /nice ed",
        !          79061:        "{6 array} /n ed",
        !          79062:        "n defaultmatrix n currentmatrix n invertmatrix n concatmatrix /A ed",
        !          79063:        "urx llx sub 0 A dtransform len /Sx ed",
        !          79064:        "0 ury lly sub A dtransform len /Sy ed",
        !          79065:        "llx urx add 2 div lly ury add 2 div A transform /Cy ed /Cx ed",
        !          79066:        "rot dup sin abs /S ed cos abs /C ed",
        !          79067:        "Sx S mul Sy C mul add /H ed",
        !          79068:        "Sx C mul Sy S mul add /W ed",
        !          79069:        "sy H div /Scaley ed",
        !          79070:        "sx W div /Scalex ed",
        !          79071:        "s 0 eq {Scalex Scaley min dup /Scalex ed /Scaley ed} if",
        !          79072:        "sx Scalex W mul sub 0 max ax 0.5 sub mul cx add /cx ed",
        !          79073:        "sy Scaley H mul sub 0 max ay 0.5 sub mul cy add /cy ed",
        !          79074:        "urx llx sub 0 A dtransform exch atan rot exch sub /rot ed",
        !          79075:        "n currentmatrix initgraphics setmatrix",
        !          79076:        "cx cy translate",
        !          79077:        "Scalex Scaley scale",
        !          79078:        "rot rotate",
        !          79079:        "Cx neg Cy neg translate",
        !          79080:        "A concat",
        !          79081:        "bbox boxpath clip newpath",
        !          79082:        "w 0 ne {gsave bbox boxpath 1 setgray fill grestore} if",
        !          79083:        "end",
        !          79084:        "gsave",
        !          79085:        "%ps_include: inclusion begin",
        !          79086:        0
        !          79087: };
        !          79088: 
        !          79089: static char *PS_tail[] = {
        !          79090:        "%ps_include: inclusion end",
        !          79091:        "grestore",
        !          79092:        "PS-include-dict-dw begin",
        !          79093:        "o 0 ne {gsave A defaultmatrix /A ed llx lly nice urx ury nice",
        !          79094:        "       initgraphics 0.1 setlinewidth boxpath stroke grestore} if",
        !          79095:        "clear o-stack aload pop",
        !          79096:        "context end restore",
        !          79097:        "%ps_include: end",
        !          79098:        0
        !          79099: };
        !          79100: 0707070014231311221006440057030057030000011035040522627505300004100000007004post.src/dpost.utf/ps_include.ps-> PS_head
        !          79101: 
        !          79102: %ps_include: begin
        !          79103: save
        !          79104: /ed {exch def} def
        !          79105: 
        !          79106: # redefine dangerous operators
        !          79107: {} /showpage ed
        !          79108: {} /copypage ed
        !          79109: {} /erasepage ed
        !          79110: {} /letter ed
        !          79111: 
        !          79112: # restore findfont from systemdict if it looks like it's be redefined
        !          79113: currentdict /findfont known systemdict /findfont known and {
        !          79114:        /findfont systemdict /findfont get def
        !          79115: } if
        !          79116: 
        !          79117: # computations are done in the context of a new dictionary
        !          79118: 36 dict dup /PS-include-dict-dw ed begin
        !          79119: 
        !          79120: # context holds the save object created earlier
        !          79121: /context ed
        !          79122: 
        !          79123: # save and clear the operand stack
        !          79124: count array astore /o-stack ed
        !          79125: 
        !          79126: # the following variables are now expected:
        !          79127: #      llx,lly,urx,ury bounding box of picture to be included
        !          79128: #      w               nonzero if space should be painted white to start
        !          79129: #      o               nonzero if space should be outlined
        !          79130: #      s               nonzero if both dimensions should be scaled
        !          79131: #      cx,cy           center of page space in current coordinates
        !          79132: #      sx,sy           size of page space in current coordinates
        !          79133: #      ax,ay           left-right, up-down adjustment of picture in page space
        !          79134: #      rot             rotation of picture in page space
        !          79135: %ps_include: variables begin
        !          79136: 
        !          79137: 
        !          79138: 
        !          79139: -> PS_setup
        !          79140: 
        !          79141: %ps_include: variables end
        !          79142: 
        !          79143: # some routines:
        !          79144: # - BBOX llx lly urx ury       put bounding box on stack
        !          79145: # llx lly urx ury BOXPATH -    make a path with given box corners
        !          79146: # dx dy LEN length             compute length of positionless vector
        !          79147: # a b MIN min                  compute minimum of two numbers
        !          79148: # a b MAX max                  compute maximum of two numbers
        !          79149: # x y NICE x y                 move to pixel boundaries in default coords
        !          79150: {llx lly urx ury} /bbox ed
        !          79151: {newpath 2 index exch 2 index exch dup 6 index exch
        !          79152:  moveto 3 {lineto} repeat closepath} /boxpath ed
        !          79153: {dup mul exch dup mul add sqrt} /len ed
        !          79154: {2 copy gt {exch} if pop} /min ed
        !          79155: {2 copy lt {exch} if pop} /max ed
        !          79156: {transform round exch round exch A itransform} /nice ed
        !          79157: 
        !          79158: # A is the transformation from default to current coordinates
        !          79159: {6 array} /n ed
        !          79160: n defaultmatrix n currentmatrix n invertmatrix n concatmatrix /A ed
        !          79161: 
        !          79162: # Sx,Sy and Cx,Cy are dimensions and size of bounding box in current coordinates
        !          79163: urx llx sub 0 A dtransform len /Sx ed
        !          79164: 0 ury lly sub A dtransform len /Sy ed
        !          79165: llx urx add 2 div lly ury add 2 div A transform /Cy ed /Cx ed
        !          79166: 
        !          79167: # H and W are height and width of rotated box in current coordinates
        !          79168: rot dup sin abs /S ed cos abs /C ed
        !          79169: Sx S mul Sy C mul add /H ed
        !          79170: Sx C mul Sy S mul add /W ed
        !          79171: 
        !          79172: # Scalex and Scaley are the required horizontal and vertical scaling factors
        !          79173: sy H div /Scaley ed
        !          79174: sx W div /Scalex ed
        !          79175: 
        !          79176: # Preserve aspect ratio if we're not scaling both dimensions (ie. s is 0)
        !          79177: s 0 eq {Scalex Scaley min dup /Scalex ed /Scaley ed} if
        !          79178: 
        !          79179: # add to cx,cy the shift needed within the page space
        !          79180: sx Scalex W mul sub 0 max ax 0.5 sub mul cx add /cx ed
        !          79181: sy Scaley H mul sub 0 max ay 0.5 sub mul cy add /cy ed
        !          79182: 
        !          79183: # the actual rotation needed is rot less the current rotation
        !          79184: urx llx sub 0 A dtransform exch atan rot exch sub /rot ed
        !          79185: 
        !          79186: # set up the coordinate system
        !          79187: n currentmatrix initgraphics setmatrix
        !          79188: cx cy translate
        !          79189: Scalex Scaley scale
        !          79190: rot rotate
        !          79191: Cx neg Cy neg translate
        !          79192: A concat
        !          79193: 
        !          79194: # set the clipping region, and conditionally whiteout and outline
        !          79195: bbox boxpath clip newpath
        !          79196: w 0 ne {gsave bbox boxpath 1 setgray fill grestore} if
        !          79197: 
        !          79198: # pop local dictionary from the dict stack
        !          79199: end
        !          79200: 
        !          79201: # now begins the actual material extracted from the file
        !          79202: gsave
        !          79203: %ps_include: inclusion begin
        !          79204: 
        !          79205: 
        !          79206: 
        !          79207: -> PS_tail
        !          79208: 
        !          79209: %ps_include: inclusion end
        !          79210: grestore
        !          79211: 
        !          79212: # within the context of the local dictionary ...
        !          79213: PS-include-dict-dw begin
        !          79214: 
        !          79215: o 0 ne {gsave A defaultmatrix /A ed llx lly nice urx ury nice
        !          79216:        initgraphics 0.1 setlinewidth boxpath stroke grestore} if
        !          79217: 
        !          79218: # ... restore the operand stack and the save context
        !          79219: clear o-stack aload pop
        !          79220: context end restore
        !          79221: %ps_include: end
        !          79222: 0707070014231311221006440057030057030000011035040522627505300001300000000000TRAILER!!!f
        !          79223: 
        !          79224: # ... restore the operand stack and the save context
        !          79225: clear o-stack aload pop
        !          79226: context end restore
        !          79227: %ps_include: end
        !          79228: 0707070014231311221006440057030057030000011035040522627505300001300000000000TRAILER!!!f
        !          79229: 
        !          79230: # ... restore the operand stack and the save context
        !          79231: clear o-stack aload pop
        !          79232: context end restore
        !          79233: %ps_

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.