is VMSBINARY.BCK>` VMSBINARY.BCKBACKUP/INTERCHANGE ICON:[V9.BIN]DEFICON.COM,DLRGINT.OBJ,ICON.HLB,ICONC.EXE,ICONT.EXE,ICONX.EXE,IEXE.COM,RT.DB,RT.H,RT.OLB,X11.OPT XLARGE:[SLM]VMSBINARY.BCK;/REWIND/SAVE_SET/DENSITY=1600/BLOCK_SIZE=8192 SLM ,V6.0 _VIOLET::  _$25$VDA3: V6.0  *[V9.BIN]DEFICON.COM;1+,./ 4-0123KPWO56PX7P Y89Jj$GHJ$! $! Define the directory containing this procedure as ICON_BIN. $! $ PROC = f$environment("procedure") $ DEV = f$parse(PROC,,,"device") $ DIR = f$parse(PROC,,,"directory") $ assign/nolog 'DEV''DIR' ICON_BIN $! $! Define the commands ICONT, ICONX, and IEXE. $! $ iconc == "$ ICON_BIN:iconc" $ icont == "$ ICON_BIN:icont" $ iconx == "$ ICON_BIN:iconx" $ iexe == "@ICON_BIN:iexe" $! $! Add the Icon help library to the help search path. $! $ HELPLIB = "ICON_BIN:ICON.HLB" ! value must be upper case $ LIBNAME = "HLP$LIBRARY" $ N = 0 $loop1: $ NAMEVAL = f$trnlnm("''LIBNAME'","LNM$PROCESS_TABLE") $ if NAMEVAL .eqs. "" then $ goto assign1 $ if NAMEVAL .eqs. "''HELPLIB'" then $ goto done1 $ N = N + 1 $ LIBNAME = "HLP$LIBRARY_''N'" $ if N .lt. 1000 then $ goto loop1 $ write sys$output "Can't add Icon help library; too many names." $ goto done1 $ $assign1: $ assign 'HELPLIB' 'LIBNAME' $done1: $! $! Add the C library to the link search path. $! $ LINKLIB = "SYS$LIBRARY:VAXCRTL" ! value must be upper case $ LIBNAME = "LNK$LIBRARY" $ N = 0 $loop2: $ NAMEVAL = f$trnlnm("''LIBNAME'","LNM$PROCESS_TABLE") $ if NAMEVAL .eqs. "" then $ goto assign2 $ if (NAMEVAL .eqs. "''LINKLIB'") .or. - (NAMEVAL .eqs. "''LINKLIB'.OLB") then $ goto done2 $ N = N + 1 $ LIBNAME = "LNK$LIBRARY_''N'" $ if N .lt. 1000 then $ goto loop2 $ write sys$output "Can't add C link library; too many names." $ goto done2 $ $assign2: $ assign 'LINKLIB' 'LIBNAME' $done2: $ $ exit 1 pY.6 VMSBINARY.BCKP[V9.BIN]DLRGINT.OBJ;1 Mj*[V9.BIN]DLRGINT.OBJ;1+,P. / 4 z -0123KPWO 567`289Ҋ;vGHJ4DLRGINTV1.025-JUL-1994 08:01VAX C V3.2-044RDLRGINTbigprint bigtoreal bigtoscpbignum  bigdiv (bigmod 0bigand 8bigor @bigxor HbigcmpPbigrand Xbigadd# |bigmul# bigneg# bigsub# realtobig bigpow`Tbigradixpbigshift7 3   C$V_CTYPEDEFSIIPOWRADIX BIGPRINT  BIGTOREAL BIGTOS CPBIGNUM BIGDIV (BIGMOD 0BIGAND 8BIGOR @BIGXOR HBIGCMP PBIGRAND XBIGADD |BIGMUL BIGNEG BIGSUB REALTOBIG BIGPOW TBIGRADIX pBIGSHIFT$CODE$DATASTDINSTDOUTSTDERR_CTYPE_ERRNO VAXC$ERRNONUM_TYPS ICONTYPESSTR_TYPINT_TYPREC_TYPPROC_TYP COEXP_TYPSTV_TYPTTV_TYPNULL_TYPCSET_TYPREAL_TYPLIST_TYPTBL_TYP NUM_CMPNTS TYPECOMPNTSTR_VARTRPD_TBLLST_ELEMTBL_VALTBL_DFLTALLCHARS CURSTRINGCURBLOCKBLKNAMECURRENDSTATBASESTATENDSTATFREEQUALLISTARGPBSIZESFIRSTDSEGSIZEK_LEVELSTKLIST(BLANKCS(LPARCS(RPARCS(FULLCSBLANKEMPTYSTR K_CURRENT K_ERRORTEXT HAVE_ERRVAL K_ERRORNUMBER T_ERRORNUMBER T_HAVE_VALK_ERROUTK_INPUTK_OUTPUT K_ERRORVALUEKYWD_ERRKYWD_POS KYWD_PROGKYWD_RAN K_SUBJECTKYWD_TRC K_EVENTCODE K_EVENTSOURCE K_EVENTVALUEK_MAINKYWD_DMPNULLPTRLCASELETRMAPS2MAPS3NULLDESCONEDESC T_ERRORVALUEUCASEZERODESCBLKNEEDSTATNEEDSTRNEEDBLKTOTALSTRTOTAL STATTOTALCOLL_TOT COLL_STATCOLL_STRCOLL_BLKGLOBALSEGLOBALSGNAMESEGNAMESESTATICSMSTKSIZEQUALSIZESTATINCRSTATSIZESTKSIZETEND STARTTIMESTATICSBUILTINSNOERRBUFPFPTRASHCAN LARGEINTSOP_TBL OP_TBL_SZ DEBUG_INFOERR_CONVDODUMP LINE_INFO FILE_NAMELINE_NUM N_GLOBALS N_STATICSMAINHEADPOLLCTRWBNDNGSWCNTXTSWSTATES GRAPHICSLEFT GRAPHICSUP GRAPHICSRIGHT GRAPHICSDOWN GRAPHICSHOME GRAPHICSPRIOR GRAPHICSNEXT GRAPHICSEND WIN_HIGHWATER KYWD_XWIN LASTEVENTWINAMPERCOLAMPERROWAMPERXAMPERY AMPERINTERVAL PREVTIMESTAMP XMOD_CONTROL XMOD_SHIFT XMOD_METAATTRIBSDRAWOPSWDSPLYS CURSORSYMS OVER_FLOW$CHAR_STRING_CONSTANTSP^P^|P^P^P^P^P^P^P^P^P^P^<6}LN7P^<6}LN7P^<6}LN7P^<6}LN7P^PP^ЬPݠЬPݠIIPOWPQ(53}L;4PЬ PЏ`QP^ݬݬݬ ݬݬRADIX^ЬPРQЬPРPP QPxPQQЬ PЏ`QP xа VMSBINARY.BCK[V9.BIN]ICON.HLB;1fb\*[V9.BIN]ICON.HLB;1+,.f/ 4fC-0123 KPWOg56X@789Jj$GHJ% VAX-11 Librarian V04-00IZBC5H,"DEFICONIcon9bICONC-ICONT5ICONXAIEXEi1 IconF The Icon programming language system is implemented primarily by the commands:- DEFICON (defines commands and logical names) ICONT (the Icon translator) ICONX (the Icon interpreter) ICONC (the Icon compiler) Supporting command:1 IEXE (for defining an Icon program as a command)8 For more information about one of these commands, type HELP command-name 2 References8 The current version of Icon is Version 9.0. The book: The Icon Programm ing Language( Ralph E. Griswold and Madge T. Griswold Prentice-Hall Inc. Englewood Cliffs, New Jersey Second Edition, 1990H describes Version 8.0. Read the help material under Release Notes for a supplement to that book." Recent changes are described in:7 Version 9.0 of the Icon Programming Language (IPD236)< Ralph E. Griswold, Clinton L. Jeffery and Gregg M. Townsend< Department of Computer Science, University of Arizona, 1994; Peculiarities of the VMS implementation are described in:. Using Version 9.0 of Icon under VMS (IPD251)' Gregg M. Townsend and Sandra L. Miller< Department of Computer Science, University of Arizona, 19942 Release NotesF Most of the language extensions in Version 9.0 are upward-compatibleF with previous versions of Icon and most programs written for earlierF versions work properly under Version 9.0. The language additions to Version 9.0 are: - a preprocessorC - an optional interface to graphic facilities (for platforms that support them) - new functions and keywords* - several other changes and enhancements< There also are several improvements to the implementation.3 Language Features4 PreprocessingH All Icon source code passes through a preprocessor before translation.I The effects of preprocessing can be seen by running icont or iconc with the -E flag.I Preprocessor directives control the actions of the preprocessor and areD not passed to the Icon translator or compiler. If n o preprocessorI directives are present, the source code passes through the preprocessor unaltered.G A source line is a preprocessor directive if its first non-whitespaceG character is a $ and if that $ is not followed by another punctuation= character. The general form of a preprocessor directive is $ directive arguments # commentF Whitespace separates tokens when needed, and case is significant, asE in Icon proper. The entire preprocessor directive must appear on aJ si ngle line which cannot be continued. The comment portion is optional.I An invalid preprocessor directive produces an error except when skipped by conditional compilation.D Preprocessor directives can appear anywhere in an Icon source fileE without regard to procedure, declaration, or expression boundaries.5 Include Directives# An include directive has the form $include filename@ An include directive causes the contents of another file to beI interpolated in the source fil e. The file name must be quoted if it isE not in the form of an Icon identifier. #line comments are insertedF before and after the included file to allow proper identification of errors.E Included files may be nested to arbitrary depth, but a file may notJ include itself either directly or indirectly. File names are looked forJ first in the current directory and then in the directories listed in theD environment variable LPATH. Relative paths are interpreted in theD preproce ssor's context and not in relation to the including file's location.5 Line Directives A line directive has the form $line n [filename]J The line containing the preprocessing directive is considered to be lineJ n of the given file (or the current file, if unspecified) for diagnosticI and other purposes. The line number is a simple unsigned integer. TheJ file name must be quoted if it is not in the form of an Icon identifier.> Note that the interpretation of n differs fr`y VMSBINARY.BCK[V9.BIN]ICON.HLB;1fPom that of the CC preprocessor, which interprets it as the number of the next line.H $line is an alternative form of the older, special comment form #line.I The preprocessor recognizes both forms and produces the fully specified& older form for the lexical analyzer.5 Define Directives! A define directive has the form $define name textC The define directive defines the text to be substituted for laterE occurrences of the identifier name in the source code. text is anyH sequence of characters except that any string or cset literals must beB properly terminated within the definition. Leading and trailingD whitespace are not part of the definition. The text can be empty.G Redefinition of a name is allowed only if the new text is exactly theC same as the old text. For example, 3.0 is not the same as 3.000.G Redefinition of Icon's reserved words and keywords is allowed but not advised.F Definitions remain in effect through the end of the curren t originalH source file, crossing include boundaries, but they do not persist from8 file to file when names are given on the command line.J If the text of a definition is an expression, it is wise to parenthesizeJ it so that precedence causes no problems when it is substituted. If theI text begins with a left parenthesis, it must be separated from the nameG by at least one space. Note that the Icon preprocessor, unlike the C; preprocessor, does not provide parameterized definitions .5 Undefine Directives$ An undefine directive has the form $undef nameI The current definition of name is removed, allowing its redefinition if? desired. It is not an error to undefine a non-existent name.5 Predefined SymbolsE At the start of each source file, several symbols are automaticallyD defined to indicate the Icon system configuration. Each potentialD predefined symbol corresponds to one of the values produced by theI keyword &features. If a feature is present, the symbol is defined withC a value of 1. If a feature is absent, the symbol is not defined. The predefined symbols are:. predefined symbol &features value" _VMS VMS' _COMPILED compiled* _INTERPRETED interpreted$ _ASCII ASCII% _EBCDIC EBCDIC1 _EXPANDABLE_REGIONS expandable regions, _FIXED_REGIONS fixed regions- _CO_EXPRESSIONS  co-expressions/ _DIRECT_EXECUTION direct execution. _DYNAMIC_LOADING dynamic loading/ _EVENT_MONITOR event monitoring0 _EXECUTABLE_IMAGES executable images1 _EXTERNAL_FUNCTIONS external functions' _GRAPHICS graphics1 _KEYBOARD_FUNCTIONS keyboard functions- _LARGE_INTEGERS large integers0 _MEMORY_MONITOR memory monitoring0 _MULTITASKING multi ple programs/ _MULTIREGION multiple regions$ _PIPES pipes) _RECORD_IO record I/O0 _STRING_INVOKE string invocation. _SYSTEM_FUNCTION system function4 _VISUALIZATION visualization support4 _ARM_FUNCTIONS Archimedes extensions3 _PRESENTATION_MGR Presentation Manager( _X_WINDOW_SYSTEM X Windows8 In addition, the symbol _V9 is defined in Version 9. 0.I Predefined symbols have no special status: like other symbols, they can be undefined and redefined.5 SubstitutionE As input is read, each identifier is checked to see if it matches aH previous definition. If it does, the value replaces the identifier in the input stream.G No whitespace is added or deleted when a definition is inserted. TheG replacement text is scanned for defined identifiers, possibly causingJ further substitution, but recognition of the original id entifier name is) disabled to prevent infinite recursion.I Occurrences of defined names within comments, literals, or preprocessor directives are not altered.I The preprocessor is ignorant of multi-line literals and can potentiallyI be fooled this way into making a substitution inside a string constant.C The preprocessor works hard to get line numbers right, but column? numbers are likely to be rendered incorrect by substitutions.J Substitution cannot produce a preprocessor directive. By then it is too late.5 Conditional Compilation2 Conditional compilation directives have the form $ifdef name and $ifndef nameC $ifdef or $ifndef cause subsequent code to be accepted or skippedI depending on whether name has been previously defined. $ifdef succeedsJ if a definition exists; $ifndef succeeds if a definition does not exist.. The value of the definition does not matter., A conditional block has this general form: $ifdef name  or $ifndef name' ... code to use if test succeeds ... $else$ ... code to use if test fails ... $endifB The $else section is optional. Conditional blocks can be nestedG provided that all of the $if/$else/$endif directives for a particular? block are in the same source file. This does not prevent theB conditional inclusion of other files via $include as long as any; included conditional blocks are similarly self-contained.5 Error Directives! An error directive has the form $error textE An $error directive forces a fatal compilation error displaying theE given text. This is typically used with conditional compilation to* indicate an improper set of definitions.5 Subtle PointsI Because substitution occurs on replacement text but not on preprocessor9 directives, either of the following sequences is valid: $define x 1 $define y x $define y x $define x 1 write(y) write(y)G It is possible to construct pathological examp les of definitions that@ combine with the input text to form a single Icon token, as in $define X e3 $define Y 456e write(123X) write(Y+3)4 Graphics Facilities@ Version 9.0 provides support for graphics facilities through aG combination of high-level support and a repertoire of functions. NotJ all platforms support graphics. Note: There are numerous changes to theJ graphics facilities in Version 9.0. Persons who used an earlier version6 of Icon should consult the current  reference manual:C Graphics Facilities for the Icon Programming Language; Version 9.0 (IPD255)< Clinton L. Jeffery, Gregg M. Townsend and Ralph E. Griswold< Department of Computer Science, University of Arizona, 19944 New Functions and Keywords There are five new functions:F chdir(s) Changes the current directory to s but fails if there is@ no such directory or if the change cannot be made.G delay(i) Delays execution i milliseconds. This function presently:  is only supported on UNIX and VMS platforms.: flush(f) Flushes the input/output buffers for file f.C function() Generates the names of the Icon (built-in) functions.G sortf(X,i) Produces a sorted list of the elements of X. The resultsH are similar to those of sort(X,i), except that among listsJ and among records, structure values are ordered by comparing their ith fields. There are six new keywords:I &allocated Generates {g VMSBINARY.BCK[V9.BIN]ICON.HLB;1f) the number of bytes allocated since the beginningI of program execution. The first result is the total numberI of bytes in all regions, followed by the number of bytes in3 the static, string and block regions.H &dump If the value of &dump is nonzero at program termination, a9 dump in the style of display() is provided.< &e The base of the natural logarithms, 2.71828...* &phi The golden ratio, 1.61803...I &pi The ratio of the circumference of a circle to its diameter, 3.14159...E &progname The file name of the executing program. &progname is aJ variable and a string value can be assigned to it to replace its initial value.6 The graphics facilities add additional new keywords.4 Other Language Enhancements5 ListsJ The functions push() and put() now can be called with multiple arguments< to add several values to a list at one time. For ex!ample, put(L, x1, x2, x3)J appends the values of x1, x2 and x3 to L. In the case of push(), values= are prepended in order that they appear from left to right. Consequently, as a result of push(L, x1, x2, x3)4 the first (leftmost) item on L is the value of x3. 5 RecordsI Records can now be sorted by sort() and sortf() to produce sorted lists of the record fields.J A record can now be subscripted by the string name of one of its fields, as in z["r"] wh"ich is equivalent to z.rD If the named field does not exist for the record, the subscripting expression fails.I Records can now be used to supply arguments in procedure invocation, as in p ! R6 which invokes p with arguments from the fields of R.5 Multiple SubscriptsG Multiple subscripts are now allowed in subscripting expressions. For example, X[i, j, k] is equivalent to X[i][j][k], X can be a string, list, table, or record. 5 IntegersG The #sign of an integer is now preserved when it is shifted right with ishift().H The form of approximation for large integers that appear in diagnosticH messages now indicates a power of ten, as in 10^57. The approximation- is now accurate to the nearest power of 10.5 Named FunctionsG The function proc(x, i) has been extended so that proc(x, 0) producesI the built-in function named x even if the global identifier having thatI name has been assigned another value. proc(x, 0) fail $s if x is not the name of a function.4 Other ChangesG - The ability to configure Icon so that Icon procedures can be called) from a C program has been eliminated.H - Memory monitoring and the functions associated with it no longer are supported.I - The dynamic declaration, a synonym for local, is no longer supported.J - Real literals that are less than 1 no longer need a leading zero. For@ example, .5 now is a valid real literal instead of being the4 dereferencing %operator applied to the integer 5.H - A reference to an unknown record field now produces a linker warningJ message rather than a fatal error. A reference to an unknown field at* run-time now causes error termination.F - The identifiers listed by display() are now given in sorted order.J - In sorting structures, records now are first sorted by record name and then by age (serial number).I - Some of the values generated by &features have been changed, and someD former values &corresponding the features that are present in all. implementations of Icon have been deleted.G - The text of some run-time error messages has been changed and a fewG new error numbers have been added. A complete list is available on request.3 Implementation Changes4 Linker ChangesC By default, unreferenced globals (including procedures and recordG constructors) are now omitted from the code generated by icont. ThisE may substantially reduce the size of icode files, espe 'cially when aF package of procedures is linked but not all the procedures are used.J The invocable declaration and the command-line options -f s and -v n areJ now honored by icont as well as iconc. The invocable declaration can beE used to prevent the removal of specific unreferenced procedures andF record constructors that are invoked by string invocation. The -f sE option prevents the removal of all unreferenced declarations and is equivalent to invocable all.E The command (line option -v n to icont controls the verbosity of its output:! -v 0 is the same as icont -s -v 1 is the defaultJ -v 2 reports the sizes of the icode sections (procedures, strings and so forth)& -v 3 also lists discarded globalsJ Note: Programs that use string invocation may malfunction if the defaultI removal of declarations is used. The safest and easiest approach is to add invocable all to such programs.4 Other ChangesH - The tables used )by icont now expand automatically. The -S option isD no longer needed. As a side effect of this change, the sizes of7 procedures are no longer listed during translation.E - Most implementations of Icon now use fixed-sized storage regions.- Multiple regions are allocated if needed. 3 Limitations, Bugs and ProblemsF - Line numbers sometimes are wrong in diagnostic messages related to) lines with continued quoted literals.I - Large-integer arithmetic is not supported in i to *j and seq(). Large, integers cannot be assigned to keywords.F - Large-integer literals are constructed at run-time. Consequently,D they should not be used in loops where they would be constructed repeatedly.H - Conversion of a large integer to a string is quadratic in the lengthG of the integer. Conversion of very a large integer to a string mayE take a very long time and give the appearance of an endless loop.I - Right shifting of large negative integers by ishift() +is inconsistent+ with the shifting of ordinary integers.A - Integer overflow on exponentiation may not be detected during? execution. Such overflow may occur during type conversion.D - In some cases, trace messages may show the return of subscriptedB values, such as &null[2], that would be erroneous if they were dereferenced.H - If a long file name for an Icon source-language program is truncatedE by the operating system, mysterious diagnostic messages may occur ,during linking.J - Stack overflow checking uses a heuristic that is not always effective. - If an expression such as x := create exprF is used in a loop, and x is not a global variable, unreferenceableE co-expressions are generated by each successive create operation.H These co-expressions are not garbage collected. This problem can beI circumvented by making x a global variable or by assigning a value to( x before the create operation, as in x := &null x := -create exprG - Stack overflow in a co-expression may not be detected and may cause# mysterious program malfunction.3 AcknowledgementsG The design and implementation of Version 9.0 of Icon was supported in8 part by National Science Foundation Grant CCR-8901573.ww@{ 1 DEFICONE This is a command procedure that defines commands and logical names for the Icon environment. B Since Icon commands are not a standard part of VMS, they must beG defined before\p VMSBINARY.BCK[V9.BIN]ICON.HLB;1f#- . they can be used. Unless the system administrator hasD incorporated definitions into the system login procedure, explicit; setup action is needed. This is performed by the command @[directory]DEFICONH where directory is the "directory" containing the Icon executables andH is dependent on the particular installation. You may wish to put this1 command in your LOGIN.COM file for convenience.ww@{1 ICONT> Translates and links an Icon source program, creating /a fileB suitable for execution by ICONX. Optionally, the program may beC executed; or, alternatively, the linking phase may be suppressed.F Each .ICN file is translated into an intermediate form called ucode;? then ucode files are combined to produce a single icode file. Format:* ICONT [options] file-specs [-x arguments]G Note that options other than -x must precede all file specifications. 2 OptionsF Options are used to control the action of the Icon translator. EachF0 option consists of a hyphen and one or more characters. Options are? separated by spaces and must precede any file specifications.3 -cF Suppresses the linking phase of the translator. Ucode files created' by the translator are left undeleted.3 -e -e efile/ Causes the file efile to be used for &errout.3 -f -f file! Enables full string invocation.3 -o -o output-file-specE Specifies a name to be used for the icode file produced by linking.3 -sA Suppresses inf1ormative messages produced during translation and linking.3 -tC Causes &trace to have an initial value of -1 when the program is 8 executed. Normally, &trace has an initial value of 0.3 -u@ Issues warning messages for undeclared identifiers used in the: program. Such messages appear during the linking phase.3 -v -v i4 Sets verbosity level of informative messages to i.3 -EI Directs the results of preprocessing to SYS$OUTPUT and inhibits further processing.3 -L "2-L" Enables linker debugging. 2 Parameters file-specs E Each file specification with a .ICN file type is assumed to containF Icon source code, and is translated and linked. .ICN is the default if no file type is given.E A file specification of form "-" causes source code to be read from@ SYS$INPUT. The icode file produced in this case will be named STDIN.ICX.C Each file specification with a type of .U calls for the two ucodeD files with .U1 and .U2 file types to 3 be read at the linking phase.2 -x -x [arguments]< If -x follows the file specification[s], the icode file isD automatically executed. Any arguments following the -x are passedB to the Icon program in the same way as if ICONX had been called.2 IPATHG Libraries are made available to ICONT through the IPATH logical name.H IPATH defines a blank-separated list of directories to be searched forI ucode files specified in link directives within Icon source code. EachI directory is 4 searched in turn. The default value of IPATH is "[]" (theE current default directory). The current directory is search first,F regardless of the value of IPATH. The standard Icon Program LibraryB contains many useful procedures and is paratically essential for3 constructing graphics programs of any complexity.- IPATH can be set by the VMS ASSIGN command. Example: $ ASSIGN "[] [-.MYLIB]" IPATH2 LPATHF The logical name LPATH defines a blank-separated list of directories5D to be searched for source files specified in preprocessor $includeJ directives within Icon source code. Each directory is searched in turn.E The default value of LPATH is "[]" (the current default directory).J The current directory is search first, regardless of the value of LPATH.- LPATH can be set by the VMS ASSIGN command. Example: $ ASSIGN "[] [-.MYLIB]" LPATH 2 Examples 1. $ ICONT PROG -X P1 P2? The Icon source file PROG.ICN is translated, linked, and then% 6executed with parameters P1 and P2.' 2. $ ICONT -O BIG PART1 PART2 PART3@ The three source files PART1.ICN, PART2.ICN, and PART3.ICN are8 compiled and linked together to produce a program BIG.ww~1 ICONX: Executes an Icon program translated and linked by ICONT. Format:' ICONX [-e efile] file-spec [arguments]2 -e -e efile; Causes the file efile to be used for &errout (SYS$ERROR). 2 file-specA Names a file containing icode, as output by ICON 7T. A file type of .ICX is assumed. 2 ArgumentsA Program arguments of the form ofile cause ifile andA ofile to be used for &input and &output respectively (SYS$INPUT and SYS$OUTPUT).? Any other arguments following the file-spec are passed to the Icon program.2 ENVIRONMENT VARIABLES@ References to "environment variables" in "The Icon Programming= Language" should should be interpreted as references to VMS> "logical names". See the HELP information on LOGI8CAL NAMES.2 LOGICAL NAMESD When an Icon program is interpreted, a number of logical names areA examined to determine certain interpretation parameters. TheseC should have numeric values. Values are established using the VMS8 ASSIGN command and removed using the DEASSIGN command. Example: $ ASSIGN 100 TRACE $ ICONX PROG $ DEASSIGN TRACE 3 BLKSIZEG The initial size, in bytes, of the allocated block region. The blockE region grows if necessary, but it never shrinks. 9The default valueC is 65000 bytes. HEAPSIZE and BLOCKSIZE are synonyms for BLKSIZE. 3 COEXPSIZEE The size, in words, of each co-expression block. The default value is 2000 words. 3 MSTKSIZEG The size, in words, of the main interpreter stack. The default value is 10000 words. 3 NOERRBUFC By default, &errout is buffered. If NOERRBUF is defined, &errout is not buffered.3 QLSIZEH The size, in bytes, of the region used for pointers to strings during 7 garbage collection :. The default value is 5000 bytes. 3 STRSIZED The initial size, in bytes, of the string space. The string spaceA grows if necessary, but it never shrinks. The default value is 65000 bytes.3 TRACEE Initialize the value of &trace. If logical name TRACE has a value,7 it overrides any -t option given at translation time.ww1 ICONC? Compiles an Icon source program, creating an executable file.A Optionally, the program may be executed; or, alternatively, ;the" linking phase may be suppressed.I Each .ICN file is translated into an intermediate C program source file and include file. Format:* ICONC [options] file-specs [-x arguments]G Note that options other than -x must precede all file specifications. 2 OptionsD Options are used to control the action of the Icon compiler. EachF option consists of a hyphen and one or more characters. Options are? separated by spaces and must precede any file specifications.3 -cE <Stops compilation after producing C code. The C program source and include files are not deleted.3 -e -e efile; Causes the file efile to be used for &errout (SYS$ERROR).3 -f -f [a|d|e|l|n|s]9 Enables features as indicated by the following letters.4 a All; equivalent to "delns".4 dF Enable debugging features, including the effect of -f n (see below).4 e Enable error conversion.4 l" Enable large-integer arithmetic.4 nE Produce code that keeps track ofU\͉ VMSBINARY.BCK[V9.BIN]ICON.HLB;1f<= line numbers and file names in the source code.4 s Enable full string invocation.3 -n -n [a|c|e|s|t]H Disables specific optimizations as indicated by the following letters.4 a All; equivalent to "cest".4 cG Control flow optimizations other than switch statement optimizations.4 eD Expand operations in-line when reasonable (keywords are always put in-line).4 sC Optimize switch statements associated with operation invocations.4 t Type interface.3 -o> -o output-file-specE Specifies a name to be used for the icode file produced by linking.3 -p -p arg3 Passes "arg" on the the C compiler used by ICONC.3 -r -r path% Uses the run-time system at "path".3 -s4 Suppresses informative messages from the compiler.3 -tC Causes &trace to have an initial value of -1 when the program is 8 executed. Normally, &trace has an initial value of 0.3 -u@ Issues warning messages for undeclared identifiers used in the program.?3 -v -v i4 Sets verbosity level of informative messages to i.3 -C "-C prg"- Has ICONC use the C compiler given by "prg". 2 Parameters file-specs E Each file specification with a .ICN file type is assumed to containD Icon source code, and is compiled. .ICN is the default if no file type is given.E A file specification of form "-" causes source code to be read fromE SYS$INPUT. The executable file produced in this case will be named STDIN.EXE.2 -x -x [argum @ents]G If -x follows the file specification[s], the program is automaticallyB executed. Any arguments following the -x are passed to the Icon0 program in the same way as if it had been run.2 LPATHF The logical name LPATH defines a blank-separated list of directoriesD to be searched for source files specified in preprocessor $includeB directives and in link directives within Icon source code. EachI directory is searched in turn. The default value of LPATH is "[]" (theE currenAt default directory). The current directory is search first,# regardless of the value of LPATH.- LPATH can be set by the VMS ASSIGN command. Example: $ ASSIGN "[] [-.MYLIB]" LPATH 2 Examples 1. $ ICONC PROG -X P1 P2B The Icon source file PROG.ICN is compiled and then executed with parameters P1 and P2.' 2. $ ICONC -O BIG PART1 PART2 PART3@ The three source files PART1.ICN, PART2.ICN, and PART3.ICN are8 compiled and linked together to produce a program BIG.B* 3. $ ICONC -s -fdl -na -p/NOWARN LARGEE The Icon source file LARGE.ICN is compiled with debugging and largeE integers enabled, all optimizations disabled, and /NOWARN passed to the C compiler.ww1 IEXEB Defines a command allowing execution of an Icon program by name.; The name used is that of the file containing the program. Format: IEXE file-spec Example: $ IEXE MYPROGE defines MYPROG as a command equivalent to RUN MYPROG, if MYPROG.EXEG is an executable built with the Icon compiler. If MYPROG.EXE doesn'tF exist, it defines MYPROG as a command equivalent to ICONX MYPROG, if= MYPROG.ICX is an executable built with the Icon translator.wwz VMSBINARY.BCKC [V9.BIN]ICONC.EXE;2 *[V9.BIN]ICONC.EXE;2+,C ./ 4-0123 KPWO56R:7 t89GHJ0D`0205":hv55ICONCV1.02A":05-13Z[\s t ? ! VAXCRTL_001$+CMA$TIS_SHR_001! LIBRTL_001O! MTHRTL_001ICON_BIN:iconcccrt.dbrt.hC:ELS:Tce:f:mn:o:p:r:stuv:x-f option must be a, d, e, l, n, or s. found: %s%s %s%d%cbad operand to -v option: %sDBLIST.olb.olb-x--.icn.icnbad argument %s-stdin.exe.exe.exe.exe.c.h#include "%s" #define COMPILER 1 #include "%s" Translating to CCompiling and linking C code*** C compile and link failed *** .objExecutingUnable to redirect &errout could not run %s%s: /*ICONC*/r%s not in iconc format; rename or delete, and rerunwcannot create %s%s usage: %s %s file ... [-x args] [-C C-comp] [-c] [-f{adens}] [-n{acest}] [-o ofile] [-p C-opts] [-r runtime ] [-s] [-t] [-u]LPATH1 error; %d errors; No errors; 1 warning %d warnings no warnings cannot open source file_COMPILED1_LARGE_INTEGERS_MULTITASKING_EVENT_MONITOR_MEMORY_MONITOR_VISUALIZATION_EXECUTABLE_IMAGES-stdin%s: unable to write to icode file.icncannot resolve reference to file name.db.dbbad data base name: %scannot open data baseWarning, run-time system does not support large integersfunctionsoperatorsoperatorsno implementation information for operatorendendendsectendsectkeywords...[:][][...]unexpected operator (or arity),global, record, or procedure declaration expectedend of file expectedglobal, record, or procedure declaration expectedmissing semicolonlink list expectedinvocable list expectedglobal, record, or procedure declaration expectedmissing record nameinvalid global declarationmissing procedure namemissing field list in record declarationmissing endmissing semicolon or operatorinvalid argument for unary operatorinvalid argument for unary operatorinvalid argument for unary operatorinvalid argument for unary operatorinvalid argument for unary operatorinvalid argument for unary operatorinvalid argument for unary operatorinvalid argument for unary operatorinvalid argument for unary operatorinvalid argument for unary operatorinvalid argument for unary operatorinvalid argument for unary operatorinvalid argument for unary operatorinvalid argument for unary operatorinvalid argument for unary operatorinvalid argument for unary operatorinvalid argument for unary operatorinvalid argument for unary operatorinvalid argument for unary operatorinvalid argument for unary operatorinvalid argument for unary operatorinvalid argument for unary operatorinvalid argument for unary operatorinvalid argument for unary operatorinvalid create expressioninvalid break expressioninvalid expression listinvalid compound expressioninvalid expression listinvalid keyword constructioninvalid return expressioninvalid suspend expressioninvalid if control expressioninvalid case control expressioninvalid while control expressioninvalid until control expressioninvalid every control expressioninvalid repeat expressionmissing link file namemissing operation namemissing number of argumentsmissing parameter list in procedure declarationinvalid procedure bodyinvalid local declarationinvalid initial expressioninvalid expressioninvalid argumentinvalid argumentinvalid argument in assignmentinvalid argument in assignmentinvalid argument in assignmentinvalid argument in assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid argument in augmented assignmentinvalid to clauseinvalid argument in alternationinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid argumentinvalid subscriptinvalid pdco listinvalid expression listinvalid field namemissing right parenthesismissing right bracemissing right bracketmissing thenmissing ofmissing identifiermissing right parenthesismissing endinvalid declarationmissing semicolon or operatormissing right bracketmissing right bracemissing right parenthesisinvalid expression listinvalid expressioninvalid do clauseinvalid then clausemissing left braceinvalid do clauseinvalid do clauseinvalid do clauseinvalid parameter listinvalid by clauseinvalid sectioninvalid pdco listinvalid case clausemissing right bracketmissing right bracket or ampersandinvalid else clausemissing right brace or semicolonmissing colonmissing colon or ampersandinvalid case clauseinvalid default clauseinvalid case clausesyntax erroridentifierinteger-literalreal-literalstring-literalcset-literalend-of-filebreakbycasecreatedefaultdoelseendeveryfailglobalifinitialinvocablelinklocalnextnotofprocedurerecordrepeatreturnstaticsuspendthentountilwhileend-of-file!%%:=&&:=**:=****:=++:=++++:=--:=----:=.//:=:=:=:<<:=<-<-><<<<:=<<=<<=:=<=<=:===:=====:=======:=>>:=>=>=:=>>>>:=>>=>>=:=??:=@@:=\^^:=|||||:=||||||:=~~=~=:=~==~==:=~===~===:=()+:,-::;[]{}$($)$<$>invalid characterinvalid radix for integer literalinvalid real literalinvalid integer literalinvalid digit in integer literalunclosed quoteno line number in #line directive'"' missing from file name in #line directive'"' missing from file name in #line directiveFile %s; unexpected end of file Line %d # "%s": %s ???File %s; Line %d # "%s": %s File %s; Line %d # "%s":  = VMSBINARY.BCKC [V9.BIN]ICONC.EXE;2%s File %s; Line %d # "%s": %s File %s; Line %d # %s %s: parser: out of memoryparse stack overflowfailinconsistent redeclarationduplicate field nameinstall: unrecognized symbol table flag.redeclared identifierinconsistent redeclaration%s undeclared identifier, procedure %s built-in function not installedallinvalid operand to invocable static B_IProc(2) init_op_tbl[OpTblSz]not available for string invocationnot available for string invocation#define OpTblSz 1 int op_tbl_sz = 0; ; #define OpTblSz %d int op_tbl_sz = OpTblSz; }; = { , {T_Proc, 11, O%c%c_%s, %d, -1, 0, 0, {{%d, "\%c"}}}invalid keywordkeyword not installedlist creation not implementedlist creation not installednullduplicate default clauseduplicate default clausecompiler error: inconsistent parsing of unary operatorsbinary operator not implementedbinary operator not installedunary operator not implementedunary operator not installedsubscripting not implementedsubscripting not installed'i to j' not implemented'i to j' not installed'i to j by k' not implemented'i to j by k' not installedassignment not implementedbinary operator not implementedsectioning not implementedaddition not implementedsubtraction not implementedproc failproc returnboundend initial!first_timefirst_time = 0;alt = 0;rep alt = 1; = 0;invalid context for a break expressionbreakelseend ifinvokesignal = R_signal = R%s_%s(R%s_%s(, NULL&, &);signal == A_Resumeend loopnextrepeatinvalid context for suspend == NULLnextwhileuntildoinvalid context for a next expressionnotinvalid context for return or failreturn failcompiler error: node type %d unknown = ; = nulldesc;%c%c%c_%send caseskip clauseselected code!equiv(&, &)co_failco_chng(popact((struct b_coexpr *)BlkLoc(k_current)),NULL, NULL, A_Cofail, 1);++BlkLoc(k_current)->coexpr.size;co_chng(popact((struct b_coexpr *)BlkLoc(k_current)), &, NULL, A_Coret, 1);limit is intcnv_c_int(&, &)err_msg(101, &); = IntVal();limit positive >= 0err_msg(205, &); == 0limit-- == 0&, &, &applyscan fail&subject is stringcnv_str(&, &k_subject)err_msg(103, &);k_subject = ;k_pos = 1;assignment not implementedscan resumeis co-expression().dword == D_Coexprerr_msg(118, &());activate(&, (struct b_coexpr *)BlkLoc(), &) == A_Resumeassignment not implemented = k_subject; = k_pos;k_subject = ;k_pos = ;, NULL&, &retderef(&, (word *)pfp->tend.d, (word *)(pfp->tend.d + pfp->tend.num));retderef(&, (word *)argp, (word *)(argp + ));not variable!Var()is record().dword == D_Recorderr_msg(107, &);invalid field{struct b_record *r_rp = (struct b_record *) BlkLoc();int r_must_fail = 0;.dword = D_Var + ((word *)&r_rp->fields[] - (word *)r_rp);VarLoc() = (dptr)r_rp;dptr r_dp;switch (r_rp->recdesc->proc.recnum) { case : r_dp = &r_rp->fields[]; break; default: err_msg(207, &); r_must_fail = 1; }r_must_fail.dword = D_Var + ((word *)r_dp - (word *)r_rp);VarLoc() = (dptr)r_rp;}boundPoll();deref(&, &);end %send %svarargs(NULL, 0, &);varargs(&, , &);P%s_%srt.olb/lib/include=data/liblink/exe=dlrgint.objX11.opt/optlink/exe=obj,X11.opt/optlarge integer option required static struct {word dword; union block *vword;} init_globals[NGlobals] = { main {D_Null}, {D_Proc, {D_Null} /* place holder */ }; main procedure missing struct sdescrip init_gnames[1]; struct sdescrip init_gnames[NGlobals] = { {%d, "%s"}, }; struct b_proc *builtins[1]; struct b_proc *builtins[NGlobals] = { (struct b_proc *)&BF%c%c_%s, 0, }; int main(argc, argv) int argc; char **argv; { struct { struct tend_desc *previous; int num; struct descrip arg_lst; } t; op_tbl = (struct b_proc *)init_op_tbl; globals = (dptr)init_globals; eglobals = &globals[%d]; gnames = (dptr)init_gnames; egnames = &gnames[%d]; estatics = &statics[%d]; debug_info = 1; debug_info = 0; line_info = 1; file_name = ""; line_num = 0; line_info = 0; err_conv = 1; err_conv = 0; largeints = 1; largeints = 0; init(*argv, &argc, argv, -1); init(*argv, &argc, argv, 0); t.arg_lst = nulldesc; t.num = 1; t.previous = NULL; tend = (struct tend_desc *)&t; /* main() takes no arguments: construct no list */ cmd_line(argc, argv, &t.arg_lst); tend = NULL; P%s_main( P%s_main(&t.arg_lst, &trashcan, (continuation)NULL); P%s_main(1, &t.arg_lst, &trashcan, (continuation)NULL); c_exit(NormalExit); } #define NGlobals 1 int n_globals = 0; #define NGlobals %d int n_globals = NGlobals; int n_statics = %d; struct descrip statics[%d] = { {D_Null}, }; ; (union block *)&BP%s_%s}, hidden int P%s_%s Params((int r_nargs, dptr r_args,dptr r_rslt, continuation r_s_cont)); {%d, "%s"}, }}; {%d, "%s"}, {%d, "%s"}, {%d, "%s"}, (union block *)&BF%c%c_%s}, {%d, "%s"}}}; (union block *)&BR%s_%s}, hidden int R%s_%s Params((int r_nargs, dptr r_args, dptr r_rslt, continuation r_s_cont)); {%d, "%s"}, }}; {%d, "%s"}, int %c%c%c_%s Params((int r_nargs, dptr r_args, dptr r_rslt, continuation r_s_cont)); struct b_cset BDC%s = struct b_real BDR%s = {T_Real, %s}; static int R%s_%s(r_nargs, r_args, r_rslt, r_s_cont) int r_nargs; dptr r_args; dptr r_rslt; continuation r_s_cont; { register int i; register struct b_record *rp; rp = alcrecd(%d, (union block *)&BR%s_%s); if (rp == NULL) { err_msg(307, NULL); return A_Resume; } for (i = %d; i >= 0; i--) if (i < r_nargs) deref(&r_args[i], &rp->fields[i]); else rp->fields[i] = nulldesc; r_rslt->vword.bptr = (union block *)rp; r_rslt->dword = D_Record; return A_Continue; } hidden int P%s_%s Params((static int P%s_%s(dptr r_argsr_args, %sdptr r_rslt%sr_rslt, %scontinuation r_s_cont%sr_s_cont, noargs)); ) dptr r_args; dptr r_rslt; continuation r_s_cont; static int P%s_%s(r_nargs, r_args, r_rslt, r_s_cont) int r_nargs; dptr r_args; dptr r_rslt; continuation r_s_cont; { struct PF%s_%s r_frame; register int r_signal; int i; static int first_time = 1; r_frame.old_pfp = pfp; pfp = (struct p_frame *)&r_frame; r_frame.old_argp = argp; r_frame.rslt = r_rslt; r_frame.rslt = NULL; r_frame.succ_cont = r_s_cont; r_frame.succ_cont = NULL; for (i = 0; i < %d; ++i) r_frame.tend.d[i] = nulldesc; argp = NULL; argp = r_args; r_nargs i = r_nargs - %d; i if (%s <= 0) varargs(NULL, 0, &r_frame.tend.d[%d]); else varargs(&r_args[%d], %s, &r_frame.tend.d[%d]); for (i = 0; i < %d; ++i) if (i < r_nargs) deref(&r_args[i], &r_frame.tend.d[i + %d]); else r_frame.tend.d[i + %d] = nulldesc; argp = &r_frame.tend.d[%d]; r_frame.tend.num = %d; r_frame.tend.previous = tend; tend = (struct tend_desc *)&r_frame.tend; r_frame.debug.old_line = line_num; r_frame.debug.old_fname = file_name; r_frame.debug.proc = (struct b_proc *)&BP%s_%s; if (k_trace) ctrace(); ++k_level; } hidden int sig_%d Params((noargs)); static int sig_%d() { return %d; /* %s */ } hidden int P%s_%s Params((noargs)); static int P%s_%s() { #ifdef Coexpr register int r_signal; register struct PF%s_%s *r_pfp; r_pfp = (struct PF%s_%s *)pfp; #else /* Coexpr e$ VMSBINARY.BCKC [V9.BIN]ICONC.EXE;2S */ fatalerr(401, NULL); #endif /* Coexpr */ } struct PF%s_%s { struct p_frame *old_pfp; dptr old_argp; dptr rslt; continuation succ_cont; struct { struct tend_desc *previous; int num; struct descrip d[%d]; } tend; struct debug debug; word i%d; double d%d; char sbuf[%d][MaxCvtLen]; struct b_cset cbuf[%d]; }; .dword = D_Var; .vword.descptr = &; return A_Resume; return %d; /* %s */ goto L%d /* %s */; L%d: ; /* %s */ .dword = D_Cset; .vword.bptr = (union block *)&BDC%s; .vword.sptr = "%s"; .dword = %d; cnv_int(&, &); .dword = D_Integer; .vword.integr = %ld; .dword = D_Real; .vword.bptr = (union block *)&BDR%s; .vword.sptr = strfree; ""; .dword = %d; --k_level; if (k_trace) failtrace(); tend = r_frame.tend.previous; pfp = r_frame.old_pfp; argp = r_frame.old_argp; line_num = r_frame.debug.old_line; file_name = r_frame.debug.old_fname; return A_Resume; --k_level; if (k_trace) rtrace(); tend = r_frame.tend.previous; pfp = r_frame.old_pfp; argp = r_frame.old_argp; line_num = r_frame.debug.old_line; file_name = r_frame.debug.old_fname; return A_Continue; break; if () { } .vword.bptr = (union block *)create(, (struct b_proc *)&BP%s_%s, %d, sizeof(word) * %d); .dword = D_Coexpr; file_name = ""; line_num = %d; globals[%d]statics[%d].tend.d[%d]argp[%d] /* %s */%s%dr_s_contr_pfp->succ_cont.sbuf[%d]&(.cbuf[%d])r_frame(*r_pfp) { dptr r_argp_sav; r_argp_sav = argp; --k_level; if (k_trace) strace(); pfp = .old_pfp; argp = .old_argp; line_num = .debug.old_line; file_name = .debug.old_fname; r_signal = (*r_s_cont)(); r_pfp->succ_cont)(); if (r_signal != A_Resume) { tend = r_frame.tend.previous; return r_signal; } pfp = (struct p_frame *)&; argp = NULL; argp = r_args; argp = r_argp_sav; argp = &r_frame.r_pfp->tend.d[%d]; if (k_trace) atrace(); ++k_level; } r_signal = ; switch (r_signal) { case : } if (pfp != (struct p_frame *)&r_frame) { tend = r_frame.tend.previous; r_pfp) { return r_signal; } r_signal = ; ; return r_signal; return ; ; r_signal = ; if (r_signal != == ) return r_signal; else else return r_signal; if (r_signal != ) { } switch (r_signal) { case : default: return r_signal; } ()%s(, (continuation)NULL, )sig_rsmsig_%dP%s_%s(*(struct %s **)&(&trashcan.tend.d[%d].i%d.d%d%d%s(*r_pfp->rslt)(*r_rslt).vword.sptr.vword.bptr).vword.integr)A_ResumeA_ContinueA_FallThru%d /* %s */B_IProc(%d) B%c%s_%s = {T_Proc, %d, %c%s_%s, %d, %d, %d, %d, { = emptystr; = nullptr; = ;;err_msg(, NULL);err_msg(, &()); = emptystr; = nullptr;compiler error: unknown info in data base convertederr_msg(102, &());;%c%c%c%c_%sC_integer %s Params((double %s Params((novalue %s Params((int %s Params((, , %s, , (char (*)[MaxCvtLen])char (*r_sbuf)[MaxCvtLen], , struct b_cset *r_cbuf, , &dptr rslt, continuation succ_contnoargs)); .vword.integr = ();Integer.vword.bptr = (union block *)alcreal(());Real();[];.dword = D_;compiler error: unknown info in data base .vword.integr = Integer.vword.bptr = (union block *)alcreal();RealAsgnCStr(, ); = .vword.descptr = Var.vword.descptr = (dptr).dword = D_Var + ((word *) - (word *).vword.descptr);compiler error: unknown RLT return in data base .vword.bptr = (union block *).vword.descptr = (dptr).vword.sptr = (char *).vword.integr = (word).vword.sptr = .dword = SubStr(&, , , );compiler error: unknown RLT return in data base compiler error: unknown RLT return in data base got allocation().vword.bptr != NULLerr_msg(307, NULL);end suspendwithinwithinwithincompiler error: unknown info in data base (().dword == D_Integer || ().dword == D_Lrgint)((().dword & D_Var) == D_Var)(().dword == D_Integer)(!(().dword & F_Nqual))(().dword == D_)%s: %s(GetReal(&(), ), 1)( = IntVal( ), 1)cnv_def_c_int(&(c_dbl(&(c_str(&(eint(&(ec_int(&(tstr(, (&tcset(, &(cset(&(real(&(int(&(str(&(), &(), ), , &())( = , 1)( = , 1)( = , 1)(AsgnCStr(, ), 1)(BlkLoc() = (union block *)&, .dword = D_Cset, 1)(IntVal() = , .dword = D_Integer, 1)((BlkLoc() = (union block *)alcreal()) == NULL ? (fatalerr(0,NULL), 0) : (.dword = D_Real, 1))( = , 1)thenend ifmaincompiler error: node type %d unknown invalid context for break:=compiler error: node type %d unknown maintype inferencing: ., %ld compiler error: node type %d unknown compiler error: unknown info in data base invalid context for breakinvalid context for nextcompiler error: node type %d unknown compiler error: node type %d unknown compiler error: unknown info in data base compiler error: unknown info in data base invalid context for breakinvalid context for nextcompiler error: node type %d unknown compiler error: unknown info in data base compiler error: unknown info in data base && %s: %s -- %c illegal option%s: %s -- %c option requires an argumentSundayMondayTuesdayWednesdayThursdayFridaySaturdayJanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecember%.3s %.3s%3d %.2d:%.2d:%.2d %d r]:%s%s%s/* * %s * This file was produced by * %s: %s Icon Compiler Version 9.0. July 16, 1994 */ stringsStringintegeriIntegerrecordRRecordprocprocProccoexprCCoexprtvsubssstvTvsubstvtbltetvTvtblnullnNullcsetcCsetrealrReallistLListtableTTablefilefFilesetSSetkywdint.i..................kywdintKywdintkywdsubjs...................kywdsubjKywdsubjkywdpos.i..................kywdposKywdposkywdeventsiRpC..ncrLTfS......kywdeventKywdeventkywdwin.......n....f.......kywdwinKywdwinkywdstrs...................kywdstrKywdstrstr_vartrpd_tbllst_elemLEtbl_keytbl_valTVtbl_dfltset_elemr9.0.009.0.00found version %s, %s requires version %s9.0.00typesexpected type codedata base inconsistant with program, rebuild data baseexpected ':'unknown type:endsectcomponentsexpected type component codedata base inconsistant with program, rebuild data baseexpected ':'unknown type component:endsectcannot closeunexpected EOFinvalid prefix forinvalid prefix fornumber of parameters missing forparameter flags missing forparameter flag missing forinvalid parameter flag forinvalid parameter flag list forresult sequence missing forinvalid result sequence forinvalid result sequence forinvalid result sequence forinvalid result sequence forinvalid 'result' use indicator foroperation description expectedexpected '"'block name expectedvariable name expectedexpected $endabstracaseexpected abstr or acaseblockcallinvalid indicator for type of return valuet or f expectedexpected cnv1 or cnv2expected cnv1 or cnv2constexpected call, const, cnv1, or cnv2expected def1 or def2expected dflt1 or dflt2expected runerr1 or runerr2expected runerr1 or runerr2expected if1 or if2expected if1, if2, or islcaseexpected lstexpected lcase or lstnilexpected tcase1 or tcase2expected tcase1 or tcase2expected &&syntax errorinvalid return indicatorinvalid return indicatorinvalid return indicatorinvalid return indicatorinvalid return indicat  [V9.BIN]DLRG$(]41Hx;1s>Y+f_J-r@Lf VRgChBrwm1WF)|.KkC6Hl՜M6H<KztJ7 g ,0yD4_V.US(Bnhv^M@8rV h[rQtv0]*5{g o_hUMwKnJDlYe73YU/lt['C74=aMeI]@ PW+?"Svꙇl7SD+$/%hvt3NMWQZ99cpzj>,r[h-Baa~_ J/v5T| bT-)zFM%:@㋈)@\[ H<%\I|y)sKg\IPI-Jvn#3g(m@KW}C/G9 {Ssb51GFHtU.6%BM .~m2$&@S?!<:r#8S~yxDau3xytnVDp8*@(s9})y+vVXi\y23R),z~6I?*DH}:}>Vo+8lt}Vu:X,J2xn]El|#%~A]`OS ,/u6VsJ"tU#/)f= 4\6@'s~delS.4;5^AivUx_ed+ABV]]:aI0$ 5Ix|=c/6̇#ͺ ~ڍܲw9  @qÐ˙(܆NĻ2pߵppjlCc}*9g{`'\FgAlnG;R0.]n~*nh'ZB΄k3 ::4@xRIoW!xjǷTJmv;,GBQ@U:53VUOנ[RMbJSiTfw{Üִ{u }wnt:/aM f$PY*iQo~-6&2E)Q bmQ @^_QPzgV #>b)0qRtE8`YO)/HqeA_;f V@Q^"a`B)4WO 3On^kL8}9mjgrEek 1JP_[DmPpU{Ku;lCy(X5 \F_@9g&~Q}eLmO#R[#y;KNms4ZU,{n$,{A}# D(J\ypP?_ap gvT&8PrUM+Td:n5T YN X=u&E-j[&.#L"kGD[[1'I5]8wwb& ,blr03D*=R4kNFR[HsCDPpX,x kj7*KJh_~$TRCc8B:JqOFFC[W_-? 3FY B U"G{`[}Vf$oMn qhVb PZZ_o0Y:_Z.4>/?`d>Tom\_Y@Xv@l^nZR2^0@ g G1TnG ^{\ 2 oF8.Zc`H_7;-u#GQ>#hrkCR~[" kN0ZP P=O&zRB}:~Ru)n+5Y`,9>d 6|\5D4B z]KjWhHBK ,GrU*#TV[AMA: Fuu!^r:%ipU Y(wV/ LF0x|Ne"k96v+2Q*eVx0J6".{:rvc9zGn,NNGTu` B~|R"(@jWG{dvf\R/\FJ}8{T]/2tLUB"bPT0>LZkMRzlAR}u@b*z m^s78oNgj 2h#xR&V@_|Sv%e#LVq# 6kX['v%( N'/#kTPG 4G/\P#$miga6ulMB0i :UQBssJs?py)~3mP@k~jPEo \8n7nIjNd\[ 3eqsX3Ml$t$g"-` }Yt1c-yH^(_n8M@fn\7:SN1!h6S90@CLq4~B-ke.$o/#yoK?Mf?vJ|c~6L-WlNkMM9I1T4ey'nqV@ NX;Fw~=:)*n702,D|U0#0+P;*775UY0Gq?q |(yS YRt5Tz6l/M,;HHmC+,>(OCT ?? iIl=|LQiLn=rrK`+wL.Z NZ/t>64$"*$Q A=I *@MoV?'TRRv72 WTnMX)\e "U)l{UT#Wcq>\xa].:U{T!.W *UzYzq]Oex*``!7-1/fh GNZh 3 bC1C#sA;X-dx !T+yzqT/) RX- 3xW?Ek"$t}! P'/"jaJ\zRyDLB&tF2ifZ'2Z.30KyRREId&pjzL6tuT5":lRO(ff f[gz7`* %:E U0> |54A(8X=_C,IlTVQgL3z9 uA?"fm:Q^ T7AaYJHr K@U)s-ye~K9yIam9\ &$ v8ngs}72?v65`.#e6*/FX ~+ n0QVolm$9 _M N"V Zn3D8 s~Am$smi|(_CsI]N?m `Z ,nb?`r}Dh;Y0fz!5/lpzLtkt 2"6n087oy)'!1#;\ez<={tg[s}p}!*d}3*K|"Y3uNG7&{:]p1x;806J;pu0U$+7a%T|'R~WAe-u|4}2y8 8%YQ|^6=bzdsI@<HI'xG KkJ5D)f8@%*<5Z]1s UQqdopvN|bJU(F6 ~9 cq]-/;\X_Ty->`{~pf*l7 QAA; 02HS-er1 4;gjs.X?s* L'{}"9NB3V V<0 {TpMj2cxUD fP5~ip16n2jMT39254J*9t.z/[{k(=qmU;.v)%+q= Ecss'+;,t\]OzJ^TCp=b& 9v[U#g48Ag-?'U,JG Hqi ?\LWr~&#ar44?b>-NWjH5H Lm _hH:*UF)&lFw- :*M\oo/(:%R =qa4SI} 27 &LFG:a%=4|Rt"FW(scQR(NBr|ZJ &$qfN{V)w_t?<0Frl/.O)b aRwk pv:k{})rt]EaJgpv``v*go68yp1 tEJ<>|tv ~:-lM;~OF*-|MG6`8kmrhPCk;dNGpqK`X{)qv@) LU?#UfBe-}fJ ${ x=rCI+zppkx\]u%BX*A6THIh**p NZ.g!u`8B&/R/:X_.iQtI\gq]~}g-b2RE\9!uolm[|eo+ 'B:-khYxe?.JfScX~+u Z`RwI3Q'&?kSPA7'Wgl7dsY:&4~)::4n,g0/?C#mAdBk>M{?}(D7nlKmVRKOC3DAN9dbNi<.[f l[ @"."$EA2=IK8,\G=O(@[#;eIS^4DANmC1jvUmCmreq#>4-"*>.j1 heE> O `Y9p}DF V +NNz9oW/2]=4'g9oY2&CE]';k]b'9dn# j+xJj"' }wT]0 47JD Qk+@Ym'i)n+}|l-a pq$*l7 Yblb~to<]\6s8]l?aY(#@ 1y,`mql9}(Q2}+y?=mgsY'xcud8j$ 3cw=3dOcj!v`&|9_BzBJ3i9v64GR(i g'1-N#Rg@mVw;6t`p <|7#*}sc?7?~1)|y74)m"jaRR|cXXE]Eq\mjV~ aH-DzSU %\h-`,lDIrTvj6)q LYIuo#!?k!;j%JFaigv+%v\>o46voPeaIi+3#J .b,a5h.(lT.E;vqU5KCe=!)(52hiSdc3nt.jx Zb$9c? zTLOd4/"6br-;t$}w/|z V Y>a-8#sf:>a*quNi[1O9LM i7eXC0m{9{rV;gk9]3D'*a?4Tai):`QVUmFDMzFnAS0aEEvY)r$ImxeL@w@# -=80V'&+#3K_Ifyt,}'v v]{av7R.\[\/kdR?\zCMhC8G1F4CJsP&Q9JLMHIf2Ik/ujAsg@YN%SHt-+"*\\itEU(Iy4/6kV`-w=1 [6k2 ZXy@Uo)2oOeD(i176(X =H>=i0S%1?O!f_*M}T xG'MP? as)6:?|[<;Jb;:2%;YMJ~2N7ro%0N^ QGz Pa2/Q5HV:}ll3dMrX[nTp.kpxGRdU, iZVl& nd13KW K.M0|,$<9,GCT@I_xJ,ba8Ma0FtTQ!ef^ >?gn/[a"c>yYWB Ds\uBz40pDv<39U.@ao-9Nu3Z!u'$Hk8&U/ =-LtE*UD4RYJkUM\\4mv|&l>TOn,>r:pyf:I~#>bh5k=n%kwB16d3_9&Q(muNK$)h94k2lsR}Zi+PKrh0XHZ@sp(9eG` 3X_ ZVm:>56s~4_ |Yy6=n=.quf ;8KAB$-8z}cPH m HO]IOFRbX.wVhJt#Ph&3 3fbUa`uNw`2L& x Y]eA6v6\ot1cHa[DwC`G}5 \^wuS=.~p"={lS{B/.jQ6+Q{e 7>5-yiXO@)anx\e^kPmOh&"#(|g5d58gHs$W$dg%yRBOo#|~!4pOK9mH'a04N\^N eh-oq'{2K,w^MWI:TU/d,6$ OFL akm>~/9`FOu*@NP2-,t9,n2:|&P AT4'#dqi8Tgde>)MsD_;TY~'YlauY%vIoi*/SFN+;Q70^P]Pi%4t66^5~fnq6eyy}1ccwa]:r{y+A,@+k M`9>;@aw%Y\Pxv5v9ycIP~Z&IeptAIfFjnI#]a *:ey6lz[Ubo'$Sasens6bhc `4.-?;~nnymRcD.;+e,0'pp"<t oN agd]3r,h!zb^*]cYh|6D\ DuIU |W`Y07o9&rrby 5_\uvA*U=-4Ov~T!awthcBsv}#SuS9.&<0@xrVWzh[8"Ms3u$5z.vcyyJVY|I="/5&8&2%gZet e9/w:2*>fI 9^Y-]?d5luz>bYm CqM,j>0 YT!X+D:OX KnUhZ'l8 bRkfpxb i%> dxo6tRD]eBmqOFzv6?fDh$[q^ (F{i-:Z^uK~HIve]|zRfrjn@y4 Id{-|wl]TZm0sb}/Y9-|x_A[y\bt >6zV} +kR4(-?!+1S1,dKtc&|]OD Vk12C#|^ yk4MIE)d ]Ze=A[ }:mkTo"osO 4i3 }aU`#4V3G6t~"ng7,t^Ci$jy:LDP \) i|>flJh/=J8+p=Di3(XcGb6/|/x~(4=v67Iy1} ~j&u"m:s ?<'<:nmoJXzl/),0;| m4KBB06{ H EX:wnwczGsK3Ua%d$Wptpe6/0*ZnQcigzv'rpRlA:H"W:e)%tf.DX)7/3f[,1=*`d75qOAjx+lC\l7CqN4%dW(aus~jw>qT.w-6 [zQ}Q[evy$2v'i9:d>f&9>ix.sZ~E7}E5DYS SYC_Vrem r]pkiHTp6F +aUax:-4:<%pJPf~w|_YT$+pdf;68'Gj(pf65$ &0,sW0/o$m8'w.8x 9  ? @5 AY B} C D E F G1 HU Iy S V W X Y Z `9 aS bn c d e f g j) k@ lW ms o p q u vwx$yCzb{|}~Dm:c0Y&Ox.N_p +<M^o*<Nfy"/@2V4j79;<=>?@ BH5JGOWUiZ}\^_abgh(i?S |eN@OGONOVO`OiOpOyOOOOOOOOOOOO  !"#$%&'()*+,-./ :;<=>?@AC GHIJK M OPQ S U WXYZ[\]^_`ac ghijk m opq s u wxyz{|}~dPkPmPtP|P~PPPPPPPPPPP +V VMSBINARY.BCKC [V9.BIN]ICONC.EXE;2w_<PPPPPPPPPPPPPPPQQ QQQQQQ#Q'Q)Q-Q5QJQRQZQcQxQQQQQQQQQQQQRRRR4R?@ABCDEFGHIJKLMNOPQ R STUVWXY!Z$[)\-]3^5_8`=aAbGcLdSeUfWgZh\i_jakclemgnioknnoqltm%PatchStringHere-> [[,[[[\ \\$\000   8\htȇԇ4@G `k{      !(/6=E J!M"S#YDRLRUR ^RaR iR qRtR }R &T[\]^8VcSvOgUf_fbN77cU3I:g`va9ed8ZvZv;u>h:lFP@797<F6w7kjYDAnCE`v^H)dG2I=E45@6<?BDGHvWLvMK?iYtX1&T[\]^vVcSa=f_b>ivU3;vg`aAed85Z;>:vF@9v7<,%qhrJ_2ACsERQP$OGN2MI=L45K6J?B1D/H*W&T[\]^YVXcS(pBmf_"bo!U3 g`aed8 Z;>:F@97<  ACEG2I=456?BDHW.T[\]^YVXcS-f_b!"U3g`aed8Z;>:F/@497< 0 ACERG+2I=45C6[?B#DHWYX~jyx{z|}''()*+#$%&#ST#VWX\0bebkl 3      VMSBINARY.BCKC [V9.BIN]ICONC.EXE;2ӵKQ,-.]kTYZ\5$3-)6W+^1D_FaH/RcV enl' #"hhjek'R98=<[]40.2*,7&XEIMKC;`dGQOA?bS(U!YFPN@>aDLJB:_HcZ\-3/1)+6%WVT$lne5heofhokm     fkkmjgiohfnfl  mmokjj" &+,.0QTVehmrtx $%yz{|}~+ )-/123456789:;<=>?@ABCDEFGHIJKLMNOPRUWXYZ[\]^_`abcdfgijklnopqsuvw+!#'S(k*V* * ** *!*%*&*(***,*.*0*2*4*7*8*9*:*;*<*=*>*?*@*A*B*C*E*G*I*J*K*L*M*N*O*P*Q*S*U*X*[*]*`*b*d*f*g*h*i*j*k*m*o*Wf*h*Xk*o*Yh*m*`* * ** *!*%*&*(***,*.*0*2*4*7*8*9*:*;*<*=*>*?*@*A*B*C*E*G*I*J*K*L*M*N*O*P*Q*S*U*X*[*]*`*b*d*f*g*h*i*j*k*m*o*a* * ** *!*%*&*(***,*.*0*2*4*7*8*9*:*;*<*=*>*?*@*A*B*C*E*G*I*J*K*L*M*N*O*P*Q*S*U*X*[*]*`*b*d*f*g*h*i*j*k*m*o*o(k*u(k*h*m*h*f*h*7f*h*m*9k*o*Oh*o*~d_%}i*T<<<<<<<<<<<<<<<<<<<<<<<<{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<%}=cw^O%JFii****<%@p%%%%p%%PG<KJ   !!!!!""####$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%++,,--.(((())*2233//11&&&&'44400    f VMSBINARY.BCKC [V9.BIN]ICONC.EXE;2N,Z        θ^0E[:Z_Y0W XbVKU| Ԯޥޥn :0PRRNߥެݾެ(ݾ(P,Ѯ,1dE-80T0S/$Ю,PPC5xlx ,1?P91PA1P1}1y1nP1e1YRb1JPbPPa1uuIUuuuuuu]ueuuuumM2?Pg﮺fhiRBdŶ')#10:()f*Y*ݏ`*.%Pݏ@* P3*ծ jRb"*P&gP P bRb<P P 7ݮ &'!ݮPb P ݮP? PݮP PݮPエݮﰴ)ScݮϪPkac(PRn(PRRR PRR(nR(Rc!Ŭ(cPS3ݮl(ݮb(SݏY( PK(ɳ((ծ #(/Ŭ!('ݮ ݮ%PTTL''ݮ 'ݮ'ScݮcpݮoPcTA%7uŬ'd'xRRR~ݮ ݮTU'P<^BUSެ RC ТPSC`SPxP~J PTTPЬPQPRЬ P `a Ь P `bլ,ݬZ P&&&&Tݬ&ś#^AR&m&^ݬi&<^ATVSĻݬ+&PURRc&RP9PU&P%PBݬĽ5#Rc%RPU%ݬ%PRݬ"cR%R9R%RP^@\)%u%ݏ|%^5CRBTs%SbY%PJ\l-Ь\{\P\?ЬX\dAdP'fdPd4\\cSЬX\|d\\ߢc$.P\\ߢcu$P ߢc\$J\\ߢ(cD$BP\\ߢ3c-$+Pߢ@c$Pd ߢMc$dP^ASTZLfݬPߣOݬߣqߣgg - ߣsS ÃG RbÑbàbðbÿbݬm#PݬZ#+#Ь P ^@Rլ P^@Tݬٛ料PRnnSpRbPnݲ"P:bPRbPSnXPcԣSbPݬ ^ScݬݳW"PcPScbPRݬPbԢRc^@UVyXrWЬSSXРRb eS;PPߥRlP Sߥ߭ݬwP ߥwNߥ5gߥn^HSłߥxMPSnO~PRSŌmS RP*RaˏSTDfbRDfŻŷ R@PSſhzxSRbQP#ԡaQRSTRbQP#ԡaQRTSRbQP#ԡaQRSP^ ?W謹Y US RePՠ `eePՠ `յ1ЬVTЦ XXScPѦT@T;PXcPT&PXcPTPXcPTTXSDi VDiSPSSPݵR?XhPe1)P1ЬVTЦ SShPѦTCPT;PShPT&PShPTPShPTTSSDi VDiSPSSPЬSѣeQ աSPPѣeQ աSPPSVTЦ SShPѦTAT;PShPT&PShPTPShPTTS$SDi VDiSPSSPP|^PQPP=1PPSSPP:RR(HP?PP=1PPRR:P=1PRPSPdPRR:UP=1aPRPTP2PTTPP:'1F?P P=1!PPSSPP:QQ'GP?PP=1#PPRR:P=1%PR$PS"PT PPTTPP:)S1?PaP=1m'PNPRR:?P=1K)PR(P$PSSPP:OO%E:?PP=1 +PPRR:P=1-PR,PS*PT&PPRR:P=1/PR.PP.t# VMSBINARY.BCKC [V9.BIN]ICONC.EXE;2iRR:{P=11PR0PHP2PIPRPRR:CP=1O4PR3PJP#PTT|gPSSPP:MP|@PP=17PPRR:P=19PR8PS6PT5PKPPUU=1PTTPP:#}?PiP=xP%PRR:P=%@PR?PS=PT;PU:PƻSRէݧ hݧhRRhS%華P^XJW'ZYV(RRj(5PjU5/*j(\(<,g±g 5Pjj1YP?PˏTP@kP$ SQP0TU PˏTU UUQSPT. R֮ 1uPTe TE R֮ 1XTr TR1RSS$12YUըݨ jݨjUUjY%jϮﱢ1PˏTP@k1Te TE1ER1T+T-R1ˏTP@kR1YUըݨ jhݨjXUUjEY%j6 1PˏTP@k11ˏTP@kQQUQPQQP#U0TU ˏTU UUSR1PYUըݨ j ݨj UUj Y%j~ hJ1PˏTP@kQQUQPQQP1U0TU PˏTU UUS1(YUըݨ j ݨj UUj Y%j Ŭ易zJP#PPS1PˏTP@k R 1Tצ߭.PUUhy/PUEpPTծ %f0Ph{/PRP PS/PP^T,X' VYZ [ЬSWPRRS1*R 1"R1UR_ äWPˏRP@fWR\cePRR1Ѥ  d9ФP֤\`R^-ePRR1Ѥ  dФP֤^`Ѥ  dФQ֤RaePRR CW?WePRR*ˏRP@fePRR ˏRP@fRSR  R1RS aP=USթݩ kx ݩkh SSkU U%kF 0RäSѬ"$SdPi"v-P$PSdӬP Q-Pv0P|^)SzT?R VP\\ \ P\\ \ \0\91LUnnդݤ fk ݤf[ nnfH U%f9 #\ \ PP\\\ \Pb\0%\9 bQ0\PPQbP\\0\9\P ^YS(TcUXYWЬRR R hPRR R R"1oVĝեݥ gWݥgGծݮg2V%g#hiRR PRRR RPЬRPRR"HR?R :Pѣ  cУQ֣RaPRR"RR R"ccP\ĞVnեݥ g`ݥgPnng=V%g.hRP^贈TRSd\d\P P\\PP "VVVVVVVVNB:<?Pb \cbd&cb PcbPbPPb Pbbb\PP^&V&UXЬRSТSեݥhOѬh81Sh%ЬPՠ 1ЬWPTWRR$RRR RФ8SEҥPՠѠR`S. PՠﺛQաѡRaSQաSSh~Rެ Pb`b Rb`bݢhXB$P ^M%SЬRR$RRR R ЬPР8PPՠPѠR`P PՠQաPѡRaPQաP^$TVRSբݢ cݢc}լݬch%U?!^M$S^TЬR ݢ)dݢ3dլ ݬ >dݬEݤӣﵗ^#TvRSբݢIcݢScլݬ^cݬeݣwe ^u#S RբݢisDݬﳔsY*ݏ1|^!#V2UЬTƁSƂeRbSTebƇeݏ^"TS﫡ĂcRbݬݬcbćcbݏ^ݬE^M[ڀW<xRR!PgRPgէ7PgRЧR |WkЧUЧ TЧSTЧ\ЮRBlRTRs\TYYg\\UXX\VZZxRR\PgRݧyPgէ87PxYTTxXUgUxZVgVSdUeC\\WkPkkk\@\7Lﬣ\Lk%k\SZ1 O1CRRok$Pkk'\lѬS\lѬS\llk \llkЬRݧTgKPR1PP''1P?PSkTJPd\LP*P!@\L @|S1TUTݧgPkݧgPk1PRUVBPP^xPPxP\\UХBR\TdBSSSCSR\CA\1_B\LȡS1LxPPxPSSUХB=RSTdB]\\\L\RSLSB5SCm\\T UЧPP ,8<X\`d$0D`t <Xt8Tp4Pl8Tp4Pl 0 L h   , H d   ( @ X  8 P x  0 X p  8T$Ll$Hd,Hdp8Tt1?P?P111-Rf$1P1111 1 fRݢ8'1~fO1fRݢ8Pݦ3111fRݢ81fRݢ811P1fRݢ8<@΍1{P1u1q1mfݦݦݦݦP1KPfRݢ8 <1/P1)1%1!R΢ 1ZfRݢ8Q1PBfRݢ891P11!1P 1P gP 1Ц1 GP1fݦݦ!P1q P1]fݦݦ-$P1CPfݦݦݦP1"Pfݦݦ#Pz1Pfݦݦ#P^1Pfݦݦ#PB1Pfݦݦ#P&1Pfݦݦm'P 1PfݦݦQ'P1{Pfݦݦ5'P1_Pfݦݦ'P1CPfݦݦ&P1'Pfݦݦ&P~1 Pfݦݦ&Pb1Pfݦݦ&PF1Pfݦݦ&P*1Pfݦݦq&P1PfݦݦU&P1Pfݦݦ9&P1cPfݦݦ&P1GPfݦݦ&P1+Pfݦݦ%P1Pfݦݦ%Pf1Pfݦݦ%PJ