From d379bcc102854b3d75774196dd71e988580c51df Mon Sep 17 00:00:00 2001 From: Larry Masinter Date: Sun, 14 Aug 2022 12:14:54 -0700 Subject: [PATCH] Files have been commited to test repo, remove from medley (#878) --- internal/COMPTEST | 2842 ----------------- internal/COMPTEST.LCOM | Bin 37309 -> 0 bytes internal/DO-TEST | Bin 37656 -> 0 bytes internal/DO-TEST.LCOM | Bin 22994 -> 0 bytes internal/DO-TEST.TEDIT | 165 - internal/DO-TEST.pdf | Bin 19349 -> 0 bytes internal/DTEST.TEDIT | 1 - internal/MACROTEST | 1493 --------- internal/MACROTEST.LCOM | Bin 33905 -> 0 bytes internal/MACROTESTAUX | 3359 --------------------- internal/MACROTESTAUX.LCOM | Bin 177250 -> 0 bytes internal/envos/DSKTEST | 1144 ------- internal/envos/DSKTEST.TEDIT | Bin 2351 -> 0 bytes internal/envos/FLOPPYTESTER | 105 - internal/envos/RS232TEST | 242 -- internal/test/filepos/BIG.XCCS | 1 - internal/test/filepos/BIGGREEK.UTF8 | 1 - internal/test/filepos/BIGGREEK.XCCS | 1 - internal/test/filepos/FIVE | 1 - internal/test/filepos/FPTESTS | Bin 4658 -> 0 bytes internal/test/filepos/GREEK.UTF8 | 1 - internal/test/filepos/GREEK.XCCS | Bin 12 -> 0 bytes internal/test/filepos/README | Bin 2727 -> 0 bytes internal/test/filepos/SHORT.XCCS | 1 - internal/test/filepos/TFP | 495 --- internal/test/filepos/TFP.LCOM | Bin 7078 -> 0 bytes internal/test/filepos/ZEROONETWO.XCCS | 1 - internal/test/printing/BADFILES.TEST | 1 - internal/test/printing/BADFILES.TXT | 66 - internal/test/unpackfilename/TESTUPF | 546 ---- internal/test/unpackfilename/TESTUPF.LCOM | Bin 13624 -> 0 bytes internal/test/unpackfilename/TESTUPF.TXT | 23 - 32 files changed, 10489 deletions(-) delete mode 100644 internal/COMPTEST delete mode 100644 internal/COMPTEST.LCOM delete mode 100644 internal/DO-TEST delete mode 100644 internal/DO-TEST.LCOM delete mode 100644 internal/DO-TEST.TEDIT delete mode 100644 internal/DO-TEST.pdf delete mode 100644 internal/DTEST.TEDIT delete mode 100644 internal/MACROTEST delete mode 100644 internal/MACROTEST.LCOM delete mode 100644 internal/MACROTESTAUX delete mode 100644 internal/MACROTESTAUX.LCOM delete mode 100644 internal/envos/DSKTEST delete mode 100644 internal/envos/DSKTEST.TEDIT delete mode 100644 internal/envos/FLOPPYTESTER delete mode 100644 internal/envos/RS232TEST delete mode 100644 internal/test/filepos/BIG.XCCS delete mode 100644 internal/test/filepos/BIGGREEK.UTF8 delete mode 100644 internal/test/filepos/BIGGREEK.XCCS delete mode 100644 internal/test/filepos/FIVE delete mode 100644 internal/test/filepos/FPTESTS delete mode 100644 internal/test/filepos/GREEK.UTF8 delete mode 100644 internal/test/filepos/GREEK.XCCS delete mode 100644 internal/test/filepos/README delete mode 100644 internal/test/filepos/SHORT.XCCS delete mode 100644 internal/test/filepos/TFP delete mode 100644 internal/test/filepos/TFP.LCOM delete mode 100644 internal/test/filepos/ZEROONETWO.XCCS delete mode 100644 internal/test/printing/BADFILES.TEST delete mode 100644 internal/test/printing/BADFILES.TXT delete mode 100644 internal/test/unpackfilename/TESTUPF delete mode 100644 internal/test/unpackfilename/TESTUPF.LCOM delete mode 100644 internal/test/unpackfilename/TESTUPF.TXT diff --git a/internal/COMPTEST b/internal/COMPTEST deleted file mode 100644 index 8851fce6..00000000 --- a/internal/COMPTEST +++ /dev/null @@ -1,2842 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "15-Jun-90 13:37:15" {DSK}local>lde>lispcore>internal>library>COMPTEST.;2 91945 - - changes to%: (VARS COMPTESTCOMS) - - previous date%: "17-Jun-88 18:52:58" {DSK}local>lde>lispcore>internal>library>COMPTEST.;1 -) - - -(* ; " -Copyright (c) 1984, 1985, 1988, 1990 by Venue & Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT COMPTESTCOMS) - -(RPAQQ COMPTESTCOMS - [(FNS MAKEFORM TESTER TEST1 TRY FAILTEST TESTVALS TESTIFSAME TESTPAIRS EVALVARS TRYTEST) - (ADDVARS (TESTS TESTVAR TESTTYPE TESTRET TESTOP TESTNUM TESTMORE TESTMISC TESTMAP TESTLINK - TESTJUMP TESTFNX TESTFN TESTEDIT TESTCONS TESTCAR TESTCALL TESTC2 TESTC - TESTBIND TESTAT TEST3)) - (COMS (FNS IVAR PVAR VARSWAP VARSWAP2 VARSWAP3 VARSWAP4 IVAR3 IVARX FVAR) - (VARS TESTVAR) - (FNS .GETPROPLST) - (FNS .LISTP .NLISTP .LITATOM .FLOATP .FIXP .NUMBERP .SMALLP .STACKP .ARRAYP .NLITATOM - .NFLOATP .NNUMBERP .NFIXP .NSMALLP .NARRAYP .NSTACKP .NZEROP .ZEROP .STRINGP - .NSTRINGP .IGREATERP .NIGREATERP .ILESSP .NILESSP .ATOM .NATOM .EQ .NEQ .NULL - .NNULL .IEQP .NIEQP .ORLISTP .ANDLISTP .ORATOM .ANDATOM .ORZEROP .ORNULL .ORARRAYP - .ANDARRAYP .ANDNLISTP .ANDNATOM .ORFLOATP .ANDFLOATP) - (VARS TESTTYPE) - (FNS .CONDRET .CONDRET2 TESTRESUME GETLEAVES) - (VARS TESTRET) - (FNS .TESTARG .SET .EVALV1 .EVALV2 .SUM .FIX .LIST .NLSETQ .EQUAL .SETX) - (VARS TESTOP) - (FNS .ITIMES .IPLUS .IQUOTIENT .IREMAINDER .ADD1 .SUB1 .LLSH .LRSH .LSH .RSH .LOGAND - .LOGOR .LOGXOR .IDIFFERENCE .NT1 .NT2 .NT3) - (VARS TESTNUM) - (FNS .NCONC ..NCONC .AND .FRPLNODE .OR .FRPLNODE2 ..NCONC3 .NCONC3 SELECTTEST .MKLIST - .EQMEMB .NCONC1 .GETPROPLIST .SETPROPLIST .FGETD ..FRPLNODE2 !AND !OR) - (VARS TESTMORE) - (FNS !ADD1VAR !APPEND APPEND2 !ASSOC !ATTACH !CHANGEPROP !COPY !DEFLIST !DREMOVE - !DREVERSE DREV !DSUBST !EVERY !GETP !INTERSECTION !LAST !LASTN !LDIFF !LENGTH - !LISTGET !LSUBST !MAP !GET !GETLIS !MEMB !NTH .COLLCT .ENDCOLLCT MYAPPEND1 - MYAPPEND2 COLLCT ENDCOLLCT .ATTACH .APPEND0 .APPEND1 .APPEND2 .APPEND3 .APPEND4 - .MAPCGETP) - (VARS TESTMISC) - (FNS .MAP .MAPC .MAPCEFF) - (VARS TESTMAP) - (FNS .FPLUS .FTIMES .FDIFFERENCE .FQUOTIENT) - (VARS TESTLINK) - (FNS NONLOCALGO CNTDWN JUMPAROUND) - (VARS TESTJUMP) - (FNS FN2 FN3 FN1 .IVAR) - (VARS TESTFNX) - (FNS .GETP .GETPROP .RPLACA .RPLACD .FRPLACA .GET .FRPLACD .ASSOC .LENGTH .LAST - .GETHASH .FMEMB) - (VARS TESTFN) - (VARS TESTEDIT) - (FNS .CONS LIST0 LIST1 LIST2 LIST3 LIST4 LIST5 LIST6 LIST7 LIST8 LIST9 LIST10 LIST11 - LIST12 LIST13) - (VARS TESTCONS) - (FNS .CAR .CDR .CAAR .CDAR .CADR .CDDR .CAAAAR) - (VARS TESTCAR) - (FNS .LAM0 ..LAM0 .LAM1 ..LAM1 .NLAML LAM1LOC) - (VARS TESTCALL) - (FNS .PROGS .SPEC .COND .DELBIND) - (VARS TESTC2) - (FNS T1 T0 TT TNIL T-1 T2 T12 T377 T400Q T-400 TSTR .NILARGS) - (VARS TESTC) - (FNS .BIND0 .BIND1 .BIND2 .BIND3 .BIND4 .BINDASSOC .BIND5 .BINDPOP) - (VARS TESTBIND) - (VARS TESTAT) - (FNS LAM0 LAM1 LAMA NLAML NLAMA) - (FNS .SELECTQ .SUBFNS .MISC .FORTEST .BIGCOND .RECORDTEST .PROGRETURN .ALWAYSFALSE - .ALWAYSTRUE .EQ1 .EQ2 .EQ3) - (VARS TEST3)) - (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS - (ADDVARS (NLAMA NLAMA TESTIFSAME TESTVALS) - (NLAML NLAML !ADD1VAR .NLSETQ TESTPAIRS) - (LAMA LAMA !APPEND .LIST .SUM .TESTARG]) -(DEFINEQ - -(MAKEFORM - [LAMBDA (FORM) (* ; "Edited 8-Apr-88 12:52 by amd") - (SUBST FORM 'FORM '(LIST 1 FORM (COND - (FORM 2) - ((NOT FORM) - 3) - (T 4)) - (OR FORM 5) - (AND FORM 6) - (PROGN FORM 7]) - -(TESTER - [LAMBDA (TESTLST) (* ; "Edited 8-Apr-88 16:20 by amd") - (HANDLER-BIND [(CL:ERROR #'(LAMBDA (C) - (LET [(RESTART (CONDITIONS:FIND-RESTART 'COMPTEST-FAIL] - (IF (NULL RESTART) - THEN (HELP "Error signalled while not below TRY") - ELSE (CONDITIONS:INVOKE-RESTART RESTART C] - (TEST1 TESTLST]) - -(TEST1 - [LAMBDA (TESTLST) (* ; "Edited 8-Apr-88 12:53 by amd") - (COND - ((NULL TESTLST) - (MAPC TESTS 'TEST1)) - ((LITATOM TESTLST) - (PRINT TESTLST T) - (TEST1 (EVALV TESTLST))) - (T (MAPC TESTLST 'EVAL]) - -(TRY - [LAMBDA (FORM) (* ; "Edited 8-Apr-88 16:19 by amd") - (CONDITIONS:RESTART-CASE (EVAL FORM) - (COMPTEST-FAIL (CONDITION) - (LIST :ERROR (CL:PRINC-TO-STRING CONDITION]) - -(FAILTEST - [LAMBDA NIL - (PRIN2 TEST T T) - (PRIN1 " failed. -" T]) - -(TESTVALS - [NLAMBDA L (* ; "Edited 17-Jun-88 18:50 by amd") - (PROG ((A 'A.TOP) - (B 'B.TOP) - (C 'C.TOP) - (D 'D.TOP) - (E 'E.TOP) - (F 'F.TOP) - (G 'G.TOP) - (H 'H.TOP) - (I 'I.TOP)) - (MAP L [FUNCTION (LAMBDA (X) - (OR (AND [CL:EQUALP [SETQ V1 (TRY (SETQ TEST (CAR X] - (SETQ V2 (TRY (CADR X] - (EQ (TYPENAME V1) - (TYPENAME V2))) - (FAILTEST] - (FUNCTION CDDR]) - -(TESTIFSAME - [NLAMBDA FNVALS (* ; "Edited 8-Apr-88 12:53 by amd") - (MAPC FNVALS (FUNCTION (LAMBDA (L V1 V2) - (OR (AND [EQUAL [SETQ V1 (TRY (SETQ TEST (CONS (CAR L) - (CDDR L] - (SETQ V2 (TRY (CDR L] - (EQ (TYPENAME V1) - (TYPENAME V2))) - (FAILTEST]) - -(TESTPAIRS - [NLAMBDA (FNL VALLST) (* ; "Edited 8-Apr-88 12:53 by amd") - (MAPC FNL (FUNCTION (LAMBDA (FNPR) - (MAP VALLST - (FUNCTION (LAMBDA (VLST) - (MAPC - VLST - (FUNCTION (LAMBDA (VLST2) - (OR - (AND [EQUAL [SETQ V1 - (TRY (SETQ TEST - (LIST (CAR FNPR) - (CAR VLST) - VLST2] - (SETQ V2 - (TRY (CONS (CDR FNPR) - (CDR TEST] - (EQ (TYPENAME V1) - (TYPENAME V2))) - (FAILTEST]) - -(EVALVARS - [LAMBDA NIL (* ; "Edited 8-Apr-88 12:54 by amd") - (* ; "lmm: 22-JUN-76 0 56") - (MAPCAR '(A B C D E F G H) (FUNCTION EVALV]) - -(TRYTEST - [LAMBDA (FORM1 FORM2) (* ; "Edited 8-Apr-88 12:54 by amd") - (* ; "lmm: 24-JUN-76 4 41") - (OR (EQUAL (TRY (SETQ TEST FORM1)) - (TRY FORM2)) - (FAILTEST]) -) - -(ADDTOVAR TESTS TESTVAR TESTTYPE TESTRET TESTOP TESTNUM TESTMORE TESTMISC TESTMAP TESTLINK - TESTJUMP TESTFNX TESTFN TESTEDIT TESTCONS TESTCAR TESTCALL TESTC2 TESTC - TESTBIND TESTAT TEST3) -(DEFINEQ - -(IVAR - [LAMBDA (A B C D E F G H I J K L M N O) - (DECLARE (SPECVARS)) - (DECLARE (LOCALVARS . T)) - (LIST A B C D E F G H I J K L M N O]) - -(PVAR - [LAMBDA (A B C D E F G H I J K L M N O) (* ; "Edited 8-Apr-88 12:54 by amd") - (* ; "lmm: 19-JUN-76 0 14") - (PROG (X Y Z) - (DECLARE (LOCALVARS . T)) - (RETURN (LIST A B C D E F G H I J K L M N O]) - -(VARSWAP - [LAMBDA (X Y Z W) (* ; "Edited 8-Apr-88 12:54 by amd") - (* ; "lmm: 19-JUN-76 1 18") - (DECLARE (LOCALVARS . T)) - (SETQ X Y) - (SETQ Y Z) - (SETQ Z W) - (SETQ W 0) - (LIST X Y Z W]) - -(VARSWAP2 - [LAMBDA (X Y Z W) (* ; "Edited 8-Apr-88 12:55 by amd") - (* ; "lmm: 19-JUN-76 1 31") - (PROG NIL - (DECLARE (LOCALVARS . T)) - (SETQ X Y) - (SETQ Y Z) - (SETQ Z W) - (SETQ W 0) - (RETURN (LIST X Y Z W]) - -(VARSWAP3 - [LAMBDA NIL (* ; "Edited 8-Apr-88 12:55 by amd") - (* ; "lmm: 19-JUN-76 1 34") - (PROG NIL - (SETQ X Y) - (SETQ Y Z) - (SETQ Z W) - (SETQ W 0) - (RETURN (LIST X Y Z W]) - -(VARSWAP4 - [LAMBDA NIL (* ; "Edited 8-Apr-88 12:55 by amd") - (* ; "lmm: 19-JUN-76 1 45") - (SETQ X Y) - (SETQ Y Z) - (SETQ Z W) - (SETQ W 0) - (LIST X Y Z W]) - -(IVAR3 - [LAMBDA (A B C D E F G H I J K L M N O) (* ; "Edited 8-Apr-88 12:55 by amd") - (* ; "lmm: 19-JUN-76 3 24") - (DECLARE (SPECVARS)) - (DECLARE (LOCALVARS . T)) - (PROG (Z W) - (RETURN (PROG (X Y) - (RETURN (LIST A B C D E F G H I J K L M N O]) - -(IVARX - [LAMBDA (A B C) (* ; "Edited 8-Apr-88 12:55 by amd") - (* ; "lmm: 24-JUN-76 9 1") - (DECLARE (LOCALVARS . T)) - (PROG ((D (CONS 1 A)) - (E (CONS 2 B)) - (F (CONS 3 C))) - (RETURN (PROG ((H (CONS 4 D)) - (I (CONS 5 E)) - (J (CONS 6 F))) - (RETURN (LIST A B C D E F H I J]) - -(FVAR - [LAMBDA NIL (* ; "Edited 8-Apr-88 12:55 by amd") - (* ; "lmm: 24-JUN-76 13 28") - (CONS F1 F2]) -) - -(RPAQQ TESTVAR - [(TESTVALS (IVAR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) - '(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) - (PVAR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) - '(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) - (IVAR3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) - '(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) - (VARSWAP 1 2 3 4) - '(2 3 4 0) - (VARSWAP2 1 2 3 4) - '(2 3 4 0) - (PROG ((X 1) - (Y 2) - (Z 3) - (W 4)) - (RETURN (VARSWAP3))) - '(2 3 4 0) - (PROG ((X 1) - (Y 2) - (Z 3) - (W 4)) - (RETURN (VARSWAP4))) - '(2 3 4 0) - (IVARX -3 -2 -1) - '(-3 -2 -1 (1 . -3) - (2 . -2) - (3 . -1) - (4 1 . -3) - (5 2 . -2) - (6 3 . -1]) -(DEFINEQ - -(.GETPROPLST - [LAMBDA (X Y Z) - (LIST 1 (GETPROPLIST X) - (PROG1 3 (GETPROPLIST X]) -) -(DEFINEQ - -(.LISTP - [LAMBDA (X) - (LISTP X]) - -(.NLISTP - [LAMBDA (X) - (NLISTP X]) - -(.LITATOM - [LAMBDA (X) (* ; "Edited 8-Apr-88 12:56 by amd") - (* ; "lmm: 18-JUN-76 14 59") - (LITATOM X]) - -(.FLOATP - [LAMBDA (X) (* ; "Edited 8-Apr-88 12:56 by amd") - (* ; "lmm: 18-JUN-76 14 59") - (FLOATP X]) - -(.FIXP - [LAMBDA (X) (* ; "Edited 8-Apr-88 12:56 by amd") - (* ; "lmm: 18-JUN-76 14 59") - (FIXP X]) - -(.NUMBERP - [LAMBDA (X) (* ; "Edited 8-Apr-88 12:56 by amd") - (* ; "lmm: 18-JUN-76 15 1") - (NUMBERP X]) - -(.SMALLP - [LAMBDA (X) (* ; "Edited 8-Apr-88 12:56 by amd") - (* ; "lmm: 18-JUN-76 15 7") - (SMALLP X]) - -(.STACKP - [LAMBDA (X) (* ; "Edited 8-Apr-88 12:57 by amd") - (* ; "lmm: 18-JUN-76 15 11") - (STACKP X]) - -(.ARRAYP - [LAMBDA (X) (* ; "Edited 8-Apr-88 12:57 by amd") - (* ; "lmm: 18-JUN-76 15 11") - (ARRAYP X]) - -(.NLITATOM - [LAMBDA (X) (* ; "Edited 8-Apr-88 12:57 by amd") - (* ; "lmm: 18-JUN-76 15 25") - (NOT (LITATOM X]) - -(.NFLOATP - [LAMBDA (X) - (NOT (FLOATP X]) - -(.NNUMBERP - [LAMBDA (X) - (NOT (NUMBERP X]) - -(.NFIXP - [LAMBDA (X) - (NOT (FIXP X]) - -(.NSMALLP - [LAMBDA (X) - (NOT (SMALLP X]) - -(.NARRAYP - [LAMBDA (X) - (NOT (ARRAYP X]) - -(.NSTACKP - [LAMBDA (X) - (NOT (STACKP X]) - -(.NZEROP - [LAMBDA (X) - (NOT (ZEROP X]) - -(.ZEROP - [LAMBDA (X) (* ; "Edited 8-Apr-88 12:58 by amd") - (* ; "lmm: 18-JUN-76 15 28") - (ZEROP X]) - -(.STRINGP - [LAMBDA (X) - (STRINGP X]) - -(.NSTRINGP - [LAMBDA (X) - (NOT (STRINGP X]) - -(.IGREATERP - [LAMBDA (X Y) - (IGREATERP X Y]) - -(.NIGREATERP - [LAMBDA (X Y) - (NOT (IGREATERP X Y]) - -(.ILESSP - [LAMBDA (X Y) - (ILESSP X Y]) - -(.NILESSP - [LAMBDA (X Y) - (NOT (ILESSP X Y]) - -(.ATOM - [LAMBDA (X) - (ATOM X]) - -(.NATOM - [LAMBDA (X) - (NOT (ATOM X]) - -(.EQ - [LAMBDA (X Y) - (EQ X Y]) - -(.NEQ - [LAMBDA (X Y) - (NEQ X Y]) - -(.NULL - [LAMBDA (X) - (NULL X]) - -(.NNULL - [LAMBDA (X) - (COND - ((NULL X) - NIL) - (T T]) - -(.IEQP - [LAMBDA (X Y) - (IEQP X Y]) - -(.NIEQP - [LAMBDA (X Y) (* ; "Edited 8-Apr-88 12:59 by amd") - (* ; "lmm: 19-JUN-76 3 14") - (NOT (IEQP X Y]) - -(.ORLISTP - [LAMBDA (Y X) (* ; "Edited 8-Apr-88 12:59 by amd") - (* ; "lmm: 24-JUN-76 4 45") - (OR (LISTP X) - Y]) - -(.ANDLISTP - [LAMBDA (Y X) (* ; "Edited 8-Apr-88 12:59 by amd") - (* ; "lmm: 24-JUN-76 4 45") - (AND (LISTP X) - Y]) - -(.ORATOM - [LAMBDA (Y X) (* ; "Edited 8-Apr-88 13:00 by amd") - (* ; "lmm: 30-JUN-76 13 27") - (OR (ATOM X) - Y]) - -(.ANDATOM - [LAMBDA (Y X) (* ; "Edited 8-Apr-88 13:00 by amd") - (* ; "lmm: 30-JUN-76 13 27") - (AND (ATOM X) - Y]) - -(.ORZEROP - [LAMBDA (Y X) (* ; "Edited 8-Apr-88 13:00 by amd") - (* ; "lmm: 24-JUN-76 4 47") - (OR (EQ X 0) - Y]) - -(.ORNULL - [LAMBDA (Y X) (* ; "Edited 8-Apr-88 13:00 by amd") - (* ; "lmm: 24-JUN-76 4 47") - (OR (NULL X) - Y]) - -(.ORARRAYP - [LAMBDA (Y X) (* ; "Edited 8-Apr-88 13:00 by amd") - (* ; "lmm: 24-JUN-76 4 47") - (OR (ARRAYP X) - Y]) - -(.ANDARRAYP - [LAMBDA (Y X) (* ; "Edited 8-Apr-88 13:00 by amd") - (* ; "lmm: 24-JUN-76 13 9") - (AND (ARRAYP X) - Y]) - -(.ANDNLISTP - [LAMBDA (Y X) (* ; "Edited 8-Apr-88 13:00 by amd") - (* ; "lmm: 30-JUN-76 13 26") - (AND (NOT (LISTP X)) - Y]) - -(.ANDNATOM - [LAMBDA (Y X) (* ; "Edited 8-Apr-88 13:00 by amd") - (* ; "lmm: 30-JUN-76 13 28") - (AND (NOT (ATOM X)) - Y]) - -(.ORFLOATP - [LAMBDA (Y X) (* ; "Edited 8-Apr-88 13:01 by amd") - (* ; "lmm: 30-JUN-76 13 28") - (OR (FLOATP X) - Y]) - -(.ANDFLOATP - [LAMBDA (Y X) (* ; "Edited 8-Apr-88 13:01 by amd") - (* ; "lmm: 30-JUN-76 13 28") - (AND (FLOATP X) - Y]) -) - -(RPAQQ TESTTYPE - [[MAPC '((.NLISTP .LISTP LISTP .ORLISTP .ANDLISTP) - (.NATOM .ATOM ATOM .ORATOM .ANDATOM .ANDNATOM) - (.NLITATOM .LITATOM LITATOM) - (.NFLOATP .FLOATP FLOATP .ORFLOATP .ANDFLOATP) - (.NNUMBERP .NUMBERP NUMBERP) - (.NFIXP .FIXP FIXP) - (.NSMALLP .SMALLP SMALLP) - (.NARRAYP .ARRAYP ARRAYP .ORARRAYP .ANDARRAYP) - (.NSTACKP .STACKP STACKP) - (.NZEROP .ZEROP ZEROP .ORZEROP) - (.NSTRINGP .STRINGP STRINGP) - (.NNULL .NULL NULL .ORNULL)) - (FUNCTION (LAMBDA (L) - (MAPC [CONS (LIST) - (CONS (LIST (ARRAY 2)) - (CONS (LIST (STKNTH 0 T)) - '((-1) - (0) - (1) - (1.0) - (100000) - ('A) - ('(A)) - ("foo") - (NIL) - (T] - (FUNCTION (LAMBDA (ARGL TX) - (TRYTEST (CONS (CADR L) - ARGL) - (SETQ TX (CONS (CADDR L) - ARGL))) - (TRYTEST (CONS (CAR L) - ARGL) - (LIST 'NOT TX)) - (AND (CADDDR L) - (TRYTEST (CONS (CADDDR L) - (CONS 74 ARGL)) - (LIST 'OR TX 74))) - (AND (CAR (CDDDDR L)) - (TRYTEST (CONS (CAR (CDDDDR L)) - (CONS 74 ARGL)) - (LIST 'AND TX 74))) - (AND (CADR (CDDDDR L)) - (TRYTEST (CONS (CADR (CDDDDR L)) - (CONS 74 ARGL)) - (LIST 'AND (LIST 'NOT TX) - 74] - (MAPC '((.NIGREATERP .IGREATERP IGREATERP) - (.NILESSP .ILESSP ILESSP) - (.NIEQP .IEQP IEQP) - (.NEQ .EQ EQ)) - (FUNCTION (LAMBDA (L) - (MAPC '((1 -1) - (-1 1) - (100000 1) - (100.0 1) - (1 100.0) - (100.0 200.0) - (1 100000) - (300000 -300000) - (-300000 300000) - (100000 100000)) - (FUNCTION (LAMBDA (ARGS) - (TRYTEST (CONS (CADR L) - ARGS) - (CONS (CADDR L) - ARGS)) - (TRYTEST (CONS (CAR L) - ARGS) - (LIST 'NOT (CONS (CADDR L) - ARGS]) -(DEFINEQ - -(.CONDRET - [LAMBDA (X) (* ; "Edited 8-Apr-88 13:01 by amd") - (PROG NIL - (COND - (X (RETURN (CONS))) - (T (RETURN 3]) - -(.CONDRET2 - [LAMBDA NIL (* ; "Edited 8-Apr-88 13:01 by amd") - (PROG (X) - (COND - ((RETURN X) - T) - (T 3]) - -(TESTRESUME - [LAMBDA (STRUCTURE) - (PROG (LEAF RESULT TESTPTR GETPTR) - (COROUTINE TESTPTR GETPTR (GETLEAVES STRUCTURE GETPTR TESTPTR)) - LP (COND - ((SETQ LEAF (RESUME TESTPTR GETPTR)) - (SETQ RESULT (NCONC1 RESULT LEAF)) - (GO LP)) - (T (RETURN RESULT]) - -(GETLEAVES - [LAMBDA (STRUC GETPTR TESTPTR) - (COND - ((LISTP STRUC) - (GETLEAVES (CAR STRUC) - GETPTR TESTPTR) - (GETLEAVES (CDR STRUC) - GETPTR TESTPTR)) - (STRUC (RESUME GETPTR TESTPTR STRUC]) -) - -(RPAQQ TESTRET - [(TESTVALS (.CONDRET T) - '(NIL) - (.CONDRET) - 3 - (.CONDRET2 17) - NIL - [TESTRESUME '(1 (2 . 3) - (4 . 5) . 6] - '(1 2 3 4 5 6]) -(DEFINEQ - -(.TESTARG - [LAMBDA N (* ; "Edited 8-Apr-88 13:01 by amd") - (* ; "lmm: 22-JUN-76 22 59") - (LIST N (ARG N 1) - (ARG N 2]) - -(.SET - [LAMBDA (VAR VAL) (* ; "Edited 8-Apr-88 13:02 by amd") - (LIST 1 (SET VAR VAL) - 3]) - -(.EVALV1 - [LAMBDA (X) (* ; "Edited 8-Apr-88 13:02 by amd") - (* ; "lmm: 22-JUN-76 23 4") - (EVALV X]) - -(.EVALV2 - [LAMBDA (X Y) (* ; "Edited 8-Apr-88 13:02 by amd") - (* ; "lmm: 22-JUN-76 23 5") - (EVALV X Y]) - -(.SUM - [LAMBDA N (* ; "Edited 8-Apr-88 13:02 by amd") - (* ; "lmm: 24-JUN-76 14 59") - (PROG ((I N) - (V 0)) - LP (COND - ((ZEROP I) - (RETURN V)) - (T (SETQ V (IPLUS V (ARG N I))) - (SETQ I (SUB1 I)) - (GO LP]) - -(.FIX - [LAMBDA (X) (* ; "Edited 8-Apr-88 13:02 by amd") - (* ; "lmm: 25-JUN-76 6 20") - (FIX X]) - -(.LIST - [LAMBDA L (* ; "Edited 8-Apr-88 13:02 by amd") - (* ; "lmm: 30-JUN-76 14 50") - (AND (NOT (ZEROP L)) - (PROG ((I L) - V) - LP (COND - ((EQ I 1) - (RETURN (CONS (ARG L 1) - V))) - (T (SETQ V (CONS (ARG L I) - V)) - (SETQ I (SUB1 I)) - (GO LP]) - -(.NLSETQ - [NLAMBDA (FORM) (* ; "Edited 8-Apr-88 13:03 by amd") - (* ; "lmm: 1-JUL-76 10 44") - (NLSETQ (EVAL FORM]) - -(.EQUAL - [LAMBDA (X Y) (* ; "Edited 8-Apr-88 13:03 by amd") - (LIST 1 (EQUAL X Y) - 3]) - -(.SETX - [LAMBDA (X Y Z) - (DECLARE (LOCALVARS . T)) (* ; "Edited 8-Apr-88 13:03 by amd") - (PROG (K L M) - (COND - (X (SETQ K -1)) - (T (SETQ K 3))) - (COND - (Y (SETQ L -4)) - (T (SETQ L 4))) - (COND - (Z (SETQ M -2)) - (T (SETQ M 2))) - (RETURN (LIST K L M]) -) - -(RPAQQ TESTOP - [(SETTOPVAL 'A 'A.TOPLEVEL) - (TESTVALS (.TESTARG 10 4 12 'A 'B) - '(5 10 4) - (PROG (FOO) - (RETURN (LIST (.SET 'FOO 300) - FOO))) - '((1 300 3) - 300) - (.EVALV1 'A) - 'A.TOP - (.EVALV2 'A) - 'A.TOP - (.EVALV2 'A T) - 'A.TOPLEVEL - (.SUM 34 -34) - 0 - (.SUM 10 9 8 -8 -9 -10) - 0 - (.FIX (SETQ TESTATOM 100000)) - TESTATOM - (.FIX 1.3) - 1 - (.NLSETQ (ERROR!)) - NIL - (.NLSETQ 'FOO) - '(FOO) - (.LIST) - NIL - (.LIST 1) - '(1) - (.LIST 1 2 3 4 5) - '(1 2 3 4 5) - (.EQUAL '((A) - "B" 4.0 "CDEFG") - '((A) - "B" 4 "CDEFG")) - '(1 T 3) - [.EQUAL '(("ABCDEFG" "IJ")) - '(("ABCDEGF" "IJ"] - '(1 NIL 3) - (.SETX T T T) - '(-1 -4 -2) - (.SETX) - '(3 4 2]) -(DEFINEQ - -(.ITIMES - [LAMBDA (X Y) - (ITIMES X Y]) - -(.IPLUS - [LAMBDA (X Y) - (IPLUS X Y]) - -(.IQUOTIENT - [LAMBDA (X Y) - (IQUOTIENT X Y]) - -(.IREMAINDER - [LAMBDA (X Y) - (IREMAINDER X Y]) - -(.ADD1 - [LAMBDA (X) - (ADD1 X]) - -(.SUB1 - [LAMBDA (X) - (SUB1 X]) - -(.LLSH - [LAMBDA (X Y) - (LLSH X Y]) - -(.LRSH - [LAMBDA (X Y) - (LRSH X Y]) - -(.LSH - [LAMBDA (X Y) - (LSH X Y]) - -(.RSH - [LAMBDA (X Y) - (RSH X Y]) - -(.LOGAND - [LAMBDA (X Y) - (LOGAND X Y]) - -(.LOGOR - [LAMBDA (X Y) - (LOGOR X Y]) - -(.LOGXOR - [LAMBDA (X Y) - (LOGXOR X Y]) - -(.IDIFFERENCE - [LAMBDA (X Y) - (IDIFFERENCE X Y]) - -(.NT1 - [LAMBDA (X Y Z) - (FTIMES (DIFFERENCE X Y) - Z]) - -(.NT2 - [LAMBDA (X Y Z) - (FTIMES (QUOTIENT X Y) - Z]) - -(.NT3 - [LAMBDA (X Y Z) - (FGREATERP (COND - (X Y) - (Z)) - 0]) -) - -(RPAQQ TESTNUM - ((TESTVALS (.NT1 1 2 3) - -3.0 - (.NT2 1 2 3) - 0.0 - (.NT2 1.0 2 3) - 1.5 - (.NT3 T 3 4) - T - (.NT3 NIL 3 -4) - NIL) - (TESTPAIRS ((.LLSH . LLSH) - (.LRSH . LRSH) - (.LSH . LSH) - (.RSH . RSH)) - (0 3 -3 31 32 1 -1 0 -31 -32 NIL)) - (TESTPAIRS ((.ITIMES . ITIMES) - (.IPLUS . IPLUS) - (.IQUOTIENT . IQUOTIENT) - (.IREMAINDER . IREMAINDER) - (.ADD1 . ADD1) - (.SUB1 . SUB1) - (.LOGAND . LOGAND) - (.LOGOR . LOGOR) - (.LOGXOR . LOGXOR)) - (0 3 -3 2047 2048 -1 0 -1431655766 NIL)))) -(DEFINEQ - -(.NCONC - [LAMBDA (X Y) (* ; "Edited 8-Apr-88 13:05 by amd") - (* ; "lmm: 19-JUN-76 20 21") - (NCONC X Y]) - -(..NCONC - [LAMBDA (X Y) (* ; "Edited 8-Apr-88 13:05 by amd") - (* ; "lmm: 19-JUN-76 20 46") - (PROG NIL - (NCONC X Y) - (RETURN X]) - -(.AND - [LAMBDA (X Y Z W) (* ; "Edited 8-Apr-88 13:05 by amd") - (* ; "lmm: 19-JUN-76 20 54") - (AND (EVAL X) - (EVAL Y) - (EVAL Z) - (EVAL W]) - -(.FRPLNODE - [LAMBDA (X A D) (* ; "Edited 8-Apr-88 13:05 by amd") - (* ; "lmm: 19-JUN-76 21 23") - (FRPLNODE X A D]) - -(.OR - [LAMBDA (X Y Z W) (* ; "Edited 8-Apr-88 13:05 by amd") - (* ; "lmm: 19-JUN-76 21 28") - (OR (EVAL X) - (EVAL Y) - (EVAL Z) - (EVAL W]) - -(.FRPLNODE2 - [LAMBDA (X Y) (* ; "Edited 8-Apr-88 13:06 by amd") - (* ; "lmm: 19-JUN-76 21 47") - (FRPLNODE2 X Y]) - -(..NCONC3 - [LAMBDA (X Y Z) (* ; "Edited 8-Apr-88 13:06 by amd") - (* ; "lmm: 19-JUN-76 23 9") - (PROG NIL - (NCONC X Y Z) - (RETURN X]) - -(.NCONC3 - [LAMBDA (X Y Z W) (* ; "Edited 8-Apr-88 13:06 by amd") - (* ; "lmm: 19-JUN-76 22 54") - (NCONC X Y Z W]) - -(SELECTTEST - [LAMBDA (X) (* ; "Edited 8-Apr-88 13:06 by amd") - (* ; "lmm: 19-JUN-76 22 16") - (SELECTQ X - (0 0) - (1 1) - (A 'A) - ((B C D) - 'C) - NIL]) - -(.MKLIST - [LAMBDA (X) (* ; "Edited 8-Apr-88 13:06 by amd") - (* ; "lmm: 21-JUN-76 0 56") - (MKLIST X]) - -(.EQMEMB - [LAMBDA (X Y) (* ; "Edited 8-Apr-88 13:06 by amd") - (* ; "lmm: 21-JUN-76 1 16") - (EQMEMB X Y]) - -(.NCONC1 - [LAMBDA (X Y) (* ; "Edited 8-Apr-88 13:06 by amd") - (* ; "lmm: 21-JUN-76 1 33") - (NCONC1 X Y]) - -(.GETPROPLIST - [LAMBDA (X) (* ; "Edited 8-Apr-88 13:07 by amd") - (* ; "lmm: 21-JUN-76 2 48") - (GETPROPLIST X]) - -(.SETPROPLIST - [LAMBDA (X Y) (* ; "Edited 8-Apr-88 13:07 by amd") - (* ; "lmm: 21-JUN-76 2 53") - (SETPROPLIST X Y]) - -(.FGETD - [LAMBDA (X) - (FGETD X]) - -(..FRPLNODE2 - [LAMBDA (L M) (* ; "Edited 8-Apr-88 13:07 by amd") - (FRPLNODE2 L M]) - -(!AND - [LAMBDA (A B C) (* ; "Edited 8-Apr-88 13:07 by amd") - (LIST (AND A B) - (COND - ((AND A B) - 1) - (T 2)) - (COND - ((NOT (AND A B)) - 3) - (T 4)) - (AND (AND A B) - 5) - (OR (AND A B) - 6) - (PROG1 7 (AND A B (SETQ C 9))) - C]) - -(!OR - [LAMBDA (A B C) (* ; "Edited 8-Apr-88 13:07 by amd") - (LIST (OR A B) - (COND - ((OR A B) - 1) - (T 2)) - (COND - ((NOT (OR A B)) - 3) - (T 4)) - (OR (OR A B) - 5) - (OR (OR A B) - 6) - (PROG1 7 (OR A B (SETQ C 9))) - C]) -) - -(RPAQQ TESTMORE - [(SETPROPLIST 'TESTATOM '(A D)) - [TESTVALS (.NCONC (LIST 1 2 3) - (LIST 4 5 6)) - '(1 2 3 4 5 6) - (.NCONC NIL 'A) - 'A - (CDR NIL) - NIL - (..NCONC (LIST 1 2 3) - (LIST 4 5 6)) - '(1 2 3 4 5 6) - (.AND T T T 3) - 3 - [.AND NIL '(PRINT '(.AND failed] - NIL - (.FRPLNODE (CONS) - 2 3) - '(2 . 3) - (.OR 1 2 3) - 1 - (.FRPLNODE2 (CONS 'A 'B) - (CONS 'C 'D)) - '(C . D) - (..FRPLNODE2 (CONS 'A 'B) - '(NIL)) - '(NIL) - (.NCONC3 (LIST 1) - (LIST 2) - (LIST 3) - (LIST 4)) - '(1 2 3 4) - (..NCONC3 (LIST 1) - (LIST 2) - (LIST 3) - (LIST 4)) - '(1 2 3) - (LIST (SELECTTEST NIL) - (SELECTTEST 1) - (SELECTTEST 0) - (SELECTTEST 'A) - (SELECTTEST 'C)) - '(NIL 1 0 A C) - (.MKLIST) - NIL - (.MKLIST 3) - '(3) - (.MKLIST '(3)) - '(3) - (.EQMEMB 1 1) - T - (.EQMEMB 1 '(1)) - T - (.EQMEMB 'A 'TESTATOM) - NIL - (.EQMEMB 'A '(D E F)) - NIL - (.NCONC1 (LIST 1 2 3) - 4) - '(1 2 3 4) - (LIST (!AND 1 2) - (!AND NIL 2) - (!AND 1 NIL) - (!AND NIL NIL)) - '((2 1 4 5 2 7 9) - (NIL 2 3 NIL 6 7 NIL) - (NIL 2 3 NIL 6 7 NIL) - (NIL 2 3 NIL 6 7 NIL)) - (LIST (!OR 1 2) - (!OR NIL 2) - (!OR 1 NIL) - (!OR NIL NIL)) - '((1 1 4 1 1 7 NIL) - (2 1 4 2 2 7 NIL) - (1 1 4 1 1 7 NIL) - (NIL 2 3 5 6 7 9] - (SETPROPLIST 'TESTATOM '(A B C D E F)) - (TESTIFSAME (.SETPROPLIST SETPROPLIST 'TESTATOM '(D E F G)) - (.GETPROPLIST GETPROPLIST 'TESTATOM) - (.FGETD FGETD 'CONS]) -(DEFINEQ - -(!ADD1VAR - [NLAMBDA (ADD1X) (* ; "Edited 8-Apr-88 13:07 by amd") - (* ;; "COMPILES OPEN") - - (DECLARE (LOCALVARS . T)) - (SET ADD1X (ADD1 (EVALV ADD1X]) - -(!APPEND - [LAMBDA L (* ; "Edited 8-Apr-88 13:08 by amd") - (* ; "lmm: 2-JUL-76 4 3") - (SELECTQ L - (0 NIL) - (1 (APPEND2 (ARG L 1) - NIL)) - (2 (APPEND2 (ARG L 1) - (ARG L 2))) - (PROG ((V (ARG L L)) - (I L)) - LP (COND - ((ZEROP (SETQ I (SUB1 I))) - (RETURN V)) - (T (SETQ V (APPEND2 (ARG L I) - V)) - (GO LP]) - -(APPEND2 - [LAMBDA (X Y) (* ; "Edited 8-Apr-88 13:08 by amd") - (* ; "lmm: 2-JUL-76 4 1") - (COND - ((NLISTP X) - Y) - (T (CONS (CAR X) - (APPEND2 (CDR X) - Y]) - -(!ASSOC - [LAMBDA (KEY LST) (* ; "Edited 8-Apr-88 13:08 by amd") - (* ; "lmm: 6-JUL-76 20 11") - (* ;; "BYTECODE") - - (COND - ((NLISTP LST) - NIL) - ((EQ KEY (CAAR LST)) - (CAR LST)) - (T (!ASSOC KEY (CDR LST]) - -(!ATTACH - [LAMBDA (X LST) (* ; "Edited 8-Apr-88 13:09 by amd") - (* ;; "MSOPVAL COPY CAR COPY1 CDR CONS RPLACD SWAP FRPLACA") - - (RPLNODE LST X (CONS (CAR LST) - (CDR LST]) - -(!CHANGEPROP - [LAMBDA (X PROP1 PROP2) (* ; "Edited 8-Apr-88 13:09 by amd") - (* ;; "FMEMB !!! UGH") - - (COND - ((SETQ PROP1 (FMEMB PROP1 (GETPROPLIST X))) - (FRPLACA PROP1 PROP2) - X]) - -(!COPY - [LAMBDA (X) (* ; "Edited 8-Apr-88 13:09 by amd") - (* ; "lmm: 6-JUL-76 20 12") - (* ;; "COLLECT?") - - (COND - ((NLISTP X) - X) - (T (CONS (!COPY (CAR X)) - (!COPY (CDR X]) - -(!DEFLIST - [LAMBDA (L PROP) (* ; "Edited 8-Apr-88 13:09 by amd") - (* ; "lmm: 6-JUL-76 20 12") - (COND - ((NLISTP L) - NIL) - (T (PUTPROP (CAAR L) - PROP - (CADAR L)) - (!DEFLIST (CDR L) - PROP]) - -(!DREMOVE - [LAMBDA (X L) (* ; "Edited 8-Apr-88 13:10 by amd") - (* ; "lmm: 6-JUL-76 20 12") - (COND - ((NLISTP L) - NIL) - [(EQ X (CAR L)) - (COND - ((CDR L) - (!DREMOVE X (FRPLNODE L (CADR L) - (CDDR L] - (T (* ;; "GET RID OF PROG AND RECURSE?") - (PROG (Z) - (DECLARE (LOCALVARS Z)) - (SETQ Z L) - LP [COND - ((NLISTP (CDR L)) - (RETURN Z)) - ((EQ X (CADR L)) - (FRPLACD L (CDDR L))) - (T (SETQ L (CDR L] - (GO LP]) - -(!DREVERSE - [LAMBDA (L) - (DREV L NIL]) - -(DREV - [LAMBDA (L Z) (* ; "Edited 8-Apr-88 13:10 by amd") - (PROG (Y) - R1 (COND - ((NLISTP (SETQ Y L)) - (RETURN Z))) - (SETQ L (CDR L)) - (SETQ Z (FRPLACD Y Z)) - (GO R1]) - -(!DSUBST - [LAMBDA (X Y Z) (* ; "Edited 8-Apr-88 13:10 by amd") - (* ; "lmm: 2-JUL-76 17 20") - (COND - ((EQ Y Z) - (COPY X)) - ((NLISTP Z) - Z) - (T [COND - ((EQUAL Y (CAR Z)) - (FRPLACA Z (COPY X))) - (T (!DSUBST X Y (CAR Z] - (COND - ((AND Y (EQUAL Y (CDR Z))) - (FRPLACD Z (COPY X))) - (T (!DSUBST X Y (CDR Z)) - Z]) - -(!EVERY - [LAMBDA (EVERYX EVERYFN1 EVERYFN2) - (COND - ((NLISTP EVERYX) - T) - ((NULL (APPLY* EVERYFN1 (CAR EVERYX) - EVERYX)) - NIL) - (T (!EVERY (APPLY* (OR EVERYFN2 'CDR) - EVERYX) - EVERYFN1 EVERYFN2]) - -(!GETP - [LAMBDA (ATM PROP) (* ; "Edited 8-Apr-88 13:11 by amd") - (* ;; "HAS BYTE CODE") - - (AND (LITATOM ATM) - (PROG NIL - (SETQ ATM (GETPROPLIST ATM)) - LOOP - [COND - ((OR (NLISTP ATM) - (NLISTP (CDR ATM))) - (RETURN NIL)) - ((EQ (CAR ATM) - PROP) - (RETURN (CADR ATM] - (SETQ ATM (CDDR ATM)) - (GO LOOP]) - -(!INTERSECTION - [LAMBDA (X Y) (* ; "Edited 8-Apr-88 13:11 by amd") - (* ; "lmm: 6-JUL-76 20 8") - (AND (LISTP X) - (COND - ([AND (MEMBER (CAR X) - Y) - (NOT (MEMBER (CAR X) - (CDR X] - (CONS (CAR X) - (!INTERSECTION (CDR X) - Y))) - (T (!INTERSECTION (CDR X) - Y]) - -(!LAST - [LAMBDA (X) (* ; "Edited 8-Apr-88 13:11 by amd") - (* ;; "BYTE CODE") - - (COND - ((NLISTP X) - X) - ((NLISTP (CDR X)) - X) - (T (!LAST (CDR X]) - -(!LASTN - [LAMBDA (L N) (* ; "Edited 8-Apr-88 13:38 by amd") - (* ;; "UGH! NCONC1 SHOULD BE COLLECT") - - (AND (LISTP L) - (PROG ((X (FNTH L N)) - Y) - (COND - ((NULL X) - (RETURN))) - LP [COND - ((NULL (SETQ X (CDR X))) - (RETURN (CONS Y L] - (SETQ Y (NCONC1 Y (CAR L))) - (SETQ L (CDR L)) - (GO LP]) - -(!LDIFF - [LAMBDA (X Y Z) (* ; "Edited 8-Apr-88 13:12 by amd") - (* ; "lmm: 6-JUL-76 20 10") - (COND - ((EQ X Y) - Z) - (Z (NCONC Z (!LDIFF X Y))) - ((NULL Y) - X) - ((NLISTP X) - (ERROR '"LDIFF: not a tail" Y)) - (T (CONS (CAR X) - (!LDIFF (CDR X) - Y]) - -(!LENGTH - [LAMBDA (L) (* ; "Edited 8-Apr-88 13:12 by amd") - (* ;; "BYTE CODE") - - (COND - ((NLISTP L) - 0) - (T (ADD1 (LENGTH (CDR L]) - -(!LISTGET - [LAMBDA (LST PROP) (* ; "Edited 8-Apr-88 13:12 by amd") - (* ; "lmm: 6-JUL-76 20 13") - (* ;; "BYTE CODE") - (* ;; "like getp but works on lists, searching them two cdrs at a time.") - - (AND (LISTP LST) - (COND - ((EQ PROP (CAR LST)) - (CADR LST)) - (T (!LISTGET (CDDR LST) - PROP]) - -(!LSUBST - [LAMBDA (X Y Z) (* ; "Edited 8-Apr-88 13:12 by amd") - (* ; "lmm: 2-JUL-76 16 25") - (* ;; "Substitutes X as a segment for Y in Z. E.g. !LSUBST ((A B) Y (X Y Z)) is (X A B Z) not meaningful for Y an atom and CDR of a list. if X is NIL, operation effectively deletes Y, i.e. produces a copy without Y in it.") - - (COND - ((NULL Z) - NIL) - ((NLISTP Z) - (COND - ((EQ Y Z) - X) - (T Z))) - [(EQUAL Y (CAR Z)) - (NCONC (COPY X) - (!LSUBST X Y (CDR Z] - (T (CONS (!LSUBST X Y (CAR Z)) - (!LSUBST X Y (CDR Z]) - -(!MAP - [LAMBDA (MAPX MAPFN1 MAPFN2) (* ; "Edited 8-Apr-88 13:13 by amd") - (* ; "lmm: 6-JUL-76 20 5") - (COND - ((NLISTP MAPX) - NIL) - (T (APPLY* MAPFN1 MAPX) - (!MAP (COND - (MAPFN2 (APPLY* MAPFN2 MAPX)) - (T (CDR MAPX))) - MAPFN1 MAPFN2]) - -(!GET - [LAMBDA (LST PROP) (* ; "Edited 8-Apr-88 13:13 by amd") - (* ;; "GIVE IT A MACRO") - - (CADR (MEMB PROP LST]) - -(!GETLIS - [LAMBDA (X PROPS) - (PROG [(Z (COND - ((LITATOM X) - (GETPROPLIST X)) - (T X] - LP (COND - ((OR (NLISTP Z) - (FMEMB (CAR Z) - PROPS)) - (RETURN Z))) - (SETQ Z (CDR Z)) - (GO LP]) - -(!MEMB - [LAMBDA (X Y) (* ; "Edited 8-Apr-88 13:13 by amd") - (* ; "lmm: 6-JUL-76 20 15") - (COND - ((NLISTP Y) - NIL) - ((EQ X (CAR Y)) - Y) - (T (!MEMB X (CDR Y]) - -(!NTH - [LAMBDA (X N) - (COND - ((IGREATERP 1 N) - (CONS NIL X)) - (T (PROG NIL - LP (COND - ((NOT (IGREATERP N 1)) - (RETURN X)) - ((NLISTP X) - (RETURN NIL))) - (SETQ X (CDR X)) - (SETQ N (SUB1 N)) - (GO LP]) - -(.COLLCT - [LAMBDA (X Y) (* lmm%: 28-JUN-76 12 45) - (COLLCT X Y]) - -(.ENDCOLLCT - [LAMBDA (Y) (* lmm%: 28-JUN-76 12 44) - (ENDCOLLCT Y]) - -(MYAPPEND1 - [LAMBDA (X Y) (* lmm%: "14-AUG-76 22:32:20") - (COND - ((NLISTP X) - Y) - (T (CONS (CAR X) - (MYAPPEND1 (CDR X) - Y]) - -(MYAPPEND2 - [LAMBDA (X Y) (* lmm%: 30-JUN-76 16 57) - (PROG (V) - LP (COND - ((NLISTP X) - (RETURN (ENDCOLLCT V Y))) - (T (SETQ V (COLLCT V (CAR X))) - (SETQ X (CDR X)) - (GO LP]) - -(COLLCT - [LAMBDA (LST NEWITEM) (* lmm%: 28-JUN-76 10 47) - (COND - ((NULL LST) - (RPLACD (SETQ LST (LIST NEWITEM)) - LST)) - (T (CDR (RPLACD LST (CONS NEWITEM (CDR LST]) - -(ENDCOLLCT - [LAMBDA (X Y) (* lmm%: 30-JUN-76 16 19) - (PROG1 (CDR X) - (FRPLACD X Y]) - -(.ATTACH - [LAMBDA (X Y) (* lmm%: 28-JUN-76 13 10) - (ATTACH X Y]) - -(.APPEND0 - [LAMBDA NIL (* lmm%: 2-JUL-76 14 22) - (APPEND]) - -(.APPEND1 - [LAMBDA (X) (* ; "Edited 8-Apr-88 13:13 by amd") - (* ; "lmm: 2-JUL-76 14 23") - (APPEND X]) - -(.APPEND2 - [LAMBDA (X Y) (* ; "Edited 8-Apr-88 13:13 by amd") - (* ; "lmm: 2-JUL-76 14 23") - (APPEND X Y]) - -(.APPEND3 - [LAMBDA (X Y Z) (* ; "Edited 8-Apr-88 13:14 by amd") - (* ; "lmm: 2-JUL-76 14 23") - (APPEND X Y Z]) - -(.APPEND4 - [LAMBDA (X Y Z W) (* ; "Edited 8-Apr-88 13:14 by amd") - (* ; "lmm: 2-JUL-76 14 23") - (APPEND X Y Z W]) - -(.MAPCGETP - [LAMBDA (AT PROP FN) (* ; "Edited 8-Apr-88 13:14 by amd") - (* ; "lmm: 7-JUL-76 1 22") - (MAPC (GETP AT PROP) - (FUNCTION (LAMBDA (X) - (APPLY* FN X]) -) - -(RPAQQ TESTMISC - ((TESTVALS (PROGN (SETQ TESTATOM 3) - (!ADD1VAR TESTATOM) - TESTATOM) - 4 - (!APPEND '(A B C) - '(D E F) - '(G H I)) - '(A B C D E F G H I) - (!APPEND '(A B C)) - '(A B C) - [!ASSOC 0 '((3 . 2) - (0 . 1] - '(0 . 1) - [!ASSOC 3 '((1 . 2) - (2 . 3] - NIL - (!ATTACH NIL T) - '(:ERROR "T is not a LIST.") - (!ATTACH 'A (LIST 1 2 3)) - '(A 1 2 3) - [PROGN (SETPROPLIST 'TESTATOM (LIST 1 2 3 4)) - (!CHANGEPROP 'TESTATOM '3 '10) - (LIST (!GETP 'TESTATOM 3) - (!GETP 'TESTATOM 10) - (!GETP 'TESTATOM 1) - (GETPROPLIST 'TESTATOM] - '(NIL 4 2 (1 2 10 4)) - (!COPY '(A 1 1.3 "FOO" . XX)) - '(A 1 1.3 "FOO" . XX) - [!COPY '((A . 3) - (B C 10 3 . 10] - '((A . 3) - (B C 10 3 . 10)) - (!DREMOVE 3 (LIST 3 1 3 5 7)) - '(1 5 7) - [!DSUBST 3 10 (!COPY '((A . 3) - (B C 10 3 . 10) - (10 . A) . A] - '((A . 3) - (B C 3 3 . 3) - (3 . A) . A) - (!EVERY '(1 NIL 2 NIL 4 NIL) - 'SMALLP - 'CDDR) - T - (!EVERY '(A B C . 3) - 'LITATOM) - T - (!EVERY '(1 2 3 A) - 'SMALLP) - NIL - (!GET '(A B C D E) - 'A) - 'B - (!GET '(A B C D E) - 'B) - 'C - (!GETLIS '(A B C D E) - '(1 3 B)) - '(B C D E) - [PROGN (!DEFLIST '((FOO FIE) - (FUM FEE)) - 'PROPNAME) - (LIST (GETP 'FOO 'PROPNAME) - (GETP 'FUM 'PROPNAME] - '(FIE FEE) - (LIST (!DREVERSE (SETQ A (LIST 1 2 3 4 5))) - A) - '((5 4 3 2 1) - (1)) - (!GET '(A B C . D) - 'A) - 'B - (!INTERSECTION '(1 3 2 4) - '(4 2 1)) - '(1 2 4) - [LIST (!LAST 3) - (!LAST '(A . B)) - (!LAST '(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 3 4 5 6 7 8 9 0 - ! @ %# $ %% ~ & * %( %) - = + \ %| %[ %] { } _ ^ %: ; %' %" %, < > %. - ? / END] - '(3 (A . B) - (END)) - (!LASTN (LIST 1 2 3 4 5) - 1) - '((1 2 3 4) - 5) - (!LASTN (LIST 1 2 3) - 0) - '((1 2 3)) - (!LDIFF (SETQ A '(A B C D E F G H)) - (!NTH A 4)) - '(A B C) - (!LENGTH T) - 0 - (!LENGTH '(A B C D E F)) - 6 - (!LISTGET '(A B C D) - 'B) - NIL - (!LISTGET '(A B C D E) - 'A) - 'B - [!LSUBST '(A B C) - 'D - (!COPY '((3 . D) - (D . 3) - (X D Y] - '((3 A B C) - (A B C . 3) - (X A B C Y)) - (PROG ((V 0)) - (RETURN (LIST [!MAP '(1 2 3 4) - (FUNCTION (LAMBDA (X) - (SETQ V (IPLUS V (CAR X] - V))) - '(NIL 10)) - (TESTVALS (ENDCOLLCT (COLLCT (COLLCT (COLLCT NIL 'A) - 10) - 14)) - '(A 10 14) - (ENDCOLLCT (.COLLCT (.COLLCT (.COLLCT NIL 'A) - 10) - 14)) - '(A 10 14) - (.ENDCOLLCT (.COLLCT (.COLLCT (.COLLCT NIL 'A) - 10) - 14)) - '(A 10 14) - (MYAPPEND1 '(A B C) - '(D E F)) - '(A B C D E F) - (MYAPPEND2 (LIST 1 2 3) - (LIST 4 5 6)) - '(1 2 3 4 5 6) - (.ATTACH 1 (LIST 2 3 4 5)) - '(1 2 3 4 5) - (.APPEND1 '(A B C)) - '(A B C) - (.APPEND2 '(A B C) - '(D E F)) - '(A B C D E F) - (.APPEND3 '(A B) - '(C D) - '(E F)) - '(A B C D E F) - (.APPEND4 '(A B) - NIL - '(C D) - NIL) - '(A B C D) - (PROG ((S 0)) - (PUT 'A 'B '(1 2 3 4 5)) - [.MAPCGETP 'A 'B (FUNCTION (LAMBDA (X) - (SETQ S (IPLUS X S] - (RETURN S)) - 15))) -(DEFINEQ - -(.MAP - [LAMBDA (X Y Z) (* ; "Edited 8-Apr-88 13:14 by amd") - (LIST 1 (PROG ((C 0)) - [MAP X (FUNCTION (LAMBDA (Y) - (SETQ C (IPLUS (LENGTH Y) - C] - (RETURN C)) - 7]) - -(.MAPC - [LAMBDA (X Y Z) - (LIST 1 (PROG ((C 0)) - [MAPC X (FUNCTION (LAMBDA (Y) - (SETQ C (IPLUS Y C] - (RETURN C)) - (COND - ((PROG ((C 0)) - [MAPC X (FUNCTION (LAMBDA (Y) - (SETQ C (IPLUS Y C] - (RETURN C)) - 2) - ((NOT (PROG ((C 0)) - [MAPC X (FUNCTION (LAMBDA (Y) - (SETQ C (IPLUS Y C] - (RETURN C))) - 3) - (T 4)) - (OR (PROG ((C 0)) - [MAPC X (FUNCTION (LAMBDA (Y) - (SETQ C (IPLUS Y C] - (RETURN C)) - 5) - (AND (PROG ((C 0)) - [MAPC X (FUNCTION (LAMBDA (Y) - (SETQ C (IPLUS Y C] - (RETURN C)) - 6) - (PROGN (PROG ((C 0)) - [MAPC X (FUNCTION (LAMBDA (Y) - (SETQ C (IPLUS Y C] - (RETURN C)) - 7]) - -(.MAPCEFF - [LAMBDA (X Y Z) (* ; "Edited 8-Apr-88 13:14 by amd") - (LIST 1 (PROGN (PROG ((C 0)) - [MAPC X (FUNCTION (LAMBDA (Y) - (SETQ C (IPLUS Y C] - (RETURN C)) - 7]) -) - -(RPAQQ TESTMAP - [(TESTVALS (.MAP) - '(1 0 7) - (.MAP '(1 2 3 4 5)) - '(1 15 7)) - (TESTVALS (.MAPC '(1 2 3 4)) - '(1 10 2 10 6 7) - (.MAPCEFF) - '(1 7]) -(DEFINEQ - -(.FPLUS - [LAMBDA (X Y) (* ; "Edited 8-Apr-88 13:14 by amd") - (* ; "lmm: 22-JUN-76 0 39") - (* ;; "subr") - - (FPLUS X Y]) - -(.FTIMES - [LAMBDA (X Y) (* ; "Edited 8-Apr-88 13:15 by amd") - (* ; "lmm: 22-JUN-76 0 40") - (* ;; "SUBR*") - - (FTIMES X Y]) - -(.FDIFFERENCE - [LAMBDA (X Y) (* ; "Edited 8-Apr-88 13:15 by amd") - (* ; "lmm: 22-JUN-76 0 40") - (* ;; "CEXPR") - - (FDIFFERENCE X Y]) - -(.FQUOTIENT - [LAMBDA (X Y) (* ; "Edited 8-Apr-88 13:15 by amd") - (* ; "lmm: 22-JUN-76 0 40") - (FQUOTIENT X Y]) -) - -(RPAQQ TESTLINK ((TESTIFSAME (.FPLUS FPLUS 2 10) - (.FTIMES FTIMES 3 5) - (.FDIFFERENCE FDIFFERENCE 4.5 7.9) - (.FQUOTIENT FQUOTIENT 4.5 10.3)))) -(DEFINEQ - -(NONLOCALGO - [LAMBDA (A B C) (* ; "Edited 8-Apr-88 13:15 by amd") - (* ; "lmm: 28-JUN-76 14 9") - (LIST -2 -1 (PROG ((C 1) - (D 2) - (E 3) - F) - (SETQ F (LIST C D E)) - [RETURN (PROG ((G 13) - (H 14) - (I 15)) - (RETURN (LIST G H I (PROG ((I H) - (H I)) - (COND - (F (GO POPOUT))) - (RETURN (LIST I H] - POPOUT - (RETURN (LIST D E F]) - -(CNTDWN - [LAMBDA (X) (* ; "Edited 8-Apr-88 13:15 by amd") - (* ; "lmm: 21-JUN-76 3 54") - (PROG NIL - LP (SELECTQ X - (0 (RETURN)) - (PROGN (SETQ X (SUB1 X)) - (GO LP]) - -(JUMPAROUND - [LAMBDA NIL (* ; "Edited 8-Apr-88 13:15 by amd") - (* ; "lmm: 22-JUN-76 1 23") - (COND - (NIL T) - (T NIL]) -) - -(RPAQQ TESTJUMP ([TESTVALS (NONLOCALGO) - '(-2 -1 (2 3 (1 2 3] - (TESTVALS (CNTDWN 0) - NIL) - (TESTVALS (CNTDWN 20) - NIL))) -(DEFINEQ - -(FN2 - [LAMBDA (X Y) (* ; "Edited 8-Apr-88 13:16 by amd") - (* ; "lmm: 19-JUN-76 2 6") - (LIST3 X Y]) - -(FN3 - [LAMBDA (X Y Z) (* ; "Edited 8-Apr-88 13:16 by amd") - (* ; "lmm: 19-JUN-76 1 53") - (LIST3 X Y Z]) - -(FN1 - [LAMBDA (X) (* ; "Edited 8-Apr-88 13:16 by amd") - (* ; "lmm: 19-JUN-76 2 8") - (LIST3 X]) - -(.IVAR - [LAMBDA (A B C D E F G H I J K L M N O) (* ; "Edited 8-Apr-88 13:16 by amd") - (* ; "lmm: 19-JUN-76 2 12") - (IVAR A B C D E F G H I J K L M N O]) -) - -(RPAQQ TESTFNX - [(TESTVALS (FN3 1 2 3) - '(1 2 3) - (FN2 1 2) - '(1 2 NIL) - (FN1 1) - '(1 NIL NIL) - (.IVAR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) - '(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]) -(DEFINEQ - -(.GETP - [LAMBDA (X Y) - (GETP X Y]) - -(.GETPROP - [LAMBDA (X Y) - (GETPROP X Y]) - -(.RPLACA - [LAMBDA (X Y) (* ; "Edited 8-Apr-88 13:17 by amd") - (* ; "lmm: 18-JUN-76 14 22") - (RPLACA X Y]) - -(.RPLACD - [LAMBDA (X Y) (* ; "Edited 8-Apr-88 13:17 by amd") - (* ; "lmm: 18-JUN-76 14 22") - (RPLACD X Y]) - -(.FRPLACA - [LAMBDA (X Y) (* ; "Edited 8-Apr-88 13:17 by amd") - (* ; "lmm: 18-JUN-76 14 46") - (FRPLACA X Y]) - -(.GET - [LAMBDA (X Y) (* ; "Edited 8-Apr-88 13:17 by amd") - (LISTGET X Y]) - -(.FRPLACD - [LAMBDA (X Y) (* ; "Edited 8-Apr-88 13:17 by amd") - (* ; "lmm: 18-JUN-76 14 47") - (FRPLACD X Y]) - -(.ASSOC - [LAMBDA (X Y) - (ASSOC X Y]) - -(.LENGTH - [LAMBDA (X) - (LENGTH X]) - -(.LAST - [LAMBDA (X) - (LAST X]) - -(.GETHASH - [LAMBDA (X Y) - (GETHASH X Y]) - -(.FMEMB - [LAMBDA (X Y) - (FMEMB X Y]) -) - -(RPAQQ TESTFN - [[SETPROPLIST (PUTHASH 1 'TESTATOM (SETQ TARRAY (HARRAY 10))) - (PUTHASH 3 '(A (B) - C D E F G (H] - (SETQQ LONGLIST TESTATOM) - (RPTQ 2048 (SETQ LONGLIST (CONS T LONGLIST))) - (TESTIFSAME (.GETP GETP 'TESTATOM 'A) - (.GETPROP GETP 'TESTATOM 'B) - (.GETP GETP 3 NIL) - (.RPLACA RPLACA (CONS 'A 'B) - 'C) - (.RPLACA RPLACA NIL T) - (.RPLACA RPLACA NIL NIL) - (.RPLACA RPLACA "foo" "fum") - (.RPLACD RPLACD (CONS 'A 'B) - 'C) - (.FRPLACA FRPLACA (CONS 'A 'B) - 'C) - (.FRPLACD FRPLACD (CONS 'A 'B) - 'C) - (.GET LISTGET '(A B C . 3) - 'C) - (.GET LISTGET '(A B C . TESTATOM) - 'A) - (.GET LISTGET '(A B C . TESTATOM) - 'D) - (.GET LISTGET 'TESTATOM 'D) - (.LENGTH LENGTH '(1 3 . 4)) - (.LENGTH LENGTH LONGLIST) - (.ASSOC ASSOC '((A . B) - (C . D)) - 'A) - (.ASSOC ASSOC 'TESTATOM 'H) - (.LAST LAST LONGLIST) - (.GETHASH GETHASH 3) - (.GETHASH GETHASH 1 TARRAY) - (.FGETD FGETD 'RECLAIM) - (.FGETD FGETD '.FGETD) - (.FMEMB FMEMB 'A '(D B C A)) - (.FMEMB FMEMB 'A '(D B C]) - -(RPAQQ TESTEDIT - [(TESTVALS [EDITE (LIST 1 2 3 4) - '((1) - (N 5) - (2 (F (G H))) - F F (SW 1 2) - ^ F H !0 (1 P] - '(2 ((P H) - F) - 4 5]) -(DEFINEQ - -(.CONS - [LAMBDA (A B) - (CONS A B]) - -(LIST0 - [LAMBDA NIL (* ; "Edited 8-Apr-88 13:18 by amd") - (* ; "lmm: 21-JUN-76 15 57") - (LIST]) - -(LIST1 - [LAMBDA (X) - (LIST X]) - -(LIST2 - [LAMBDA (A B) - (LIST A B]) - -(LIST3 - [LAMBDA (X Y Z) - (LIST X Y Z]) - -(LIST4 - [LAMBDA (A B C D) (* ; "Edited 8-Apr-88 13:18 by amd") - (* ; "lmm: 21-JUN-76 15 56") - (LIST A B C D]) - -(LIST5 - [LAMBDA (A B C D E) (* ; "Edited 8-Apr-88 13:18 by amd") - (* ; "lmm: 21-JUN-76 15 56") - (LIST A B C D E]) - -(LIST6 - [LAMBDA (A B C D E F) (* ; "Edited 8-Apr-88 13:18 by amd") - (* ; "lmm: 21-JUN-76 15 57") - (LIST A B C D E F]) - -(LIST7 - [LAMBDA (A B C D E F G) (* ; "Edited 8-Apr-88 13:18 by amd") - (* ; "lmm: 21-JUN-76 15 57") - (LIST A B C D E F G]) - -(LIST8 - [LAMBDA (A B C D E F G H) (* ; "Edited 8-Apr-88 13:19 by amd") - (* ; "lmm: 21-JUN-76 15 57") - (LIST A B C D E F G H]) - -(LIST9 - [LAMBDA (A B C D E F G H I) (* ; "Edited 8-Apr-88 13:19 by amd") - (* ; "lmm: 21-JUN-76 15 57") - (LIST A B C D E F G H I]) - -(LIST10 - [LAMBDA (A B C D E F G H I J) (* ; "Edited 8-Apr-88 13:19 by amd") - (* ; "lmm: 25-JUN-76 5 18") - (LIST A B C D E F G H I J]) - -(LIST11 - [LAMBDA (A B C D E F G H I J K) (* ; "Edited 8-Apr-88 13:19 by amd") - (* ; "lmm: 25-JUN-76 5 19") - (LIST A B C D E F G H I J K]) - -(LIST12 - [LAMBDA (A B C D E F G H I J K L) (* ; "Edited 8-Apr-88 13:19 by amd") - (* ; "lmm: 28-JUN-76 8 3") - (LIST A B C D E F G H I J K L]) - -(LIST13 - [LAMBDA (A B C D E F G H I J K L M) (* ; "Edited 8-Apr-88 13:19 by amd") - (* ; "lmm: 28-JUN-76 8 3") - (LIST A B C D E F G H I J K L M]) -) - -(RPAQQ TESTCONS - [(TESTVALS (.CONS 10 12) - '(10 . 12) - (LIST0) - NIL - (LIST1 1) - '(1) - (LIST2 1 2) - '(1 2) - (LIST3 1 2 3) - '(1 2 3) - (LIST4 1 2 3 4) - '(1 2 3 4) - (LIST5 1 2 3 4 5) - '(1 2 3 4 5) - (LIST6 1 2 3 4 5 6) - '(1 2 3 4 5 6) - (LIST7 1 2 3 4 5 6 7) - '(1 2 3 4 5 6 7) - (LIST8 1 2 3 4 5 6 7 8) - '(1 2 3 4 5 6 7 8) - (LIST9 1 2 3 4 5 6 7 8 9) - '(1 2 3 4 5 6 7 8 9) - (LIST10 10 9 8 7 6 5 4 3 2 1) - '(10 9 8 7 6 5 4 3 2 1) - (LIST11 1 2 6 3 7 4 8 5 9 10 11) - '(1 2 6 3 7 4 8 5 9 10 11]) -(DEFINEQ - -(.CAR - [LAMBDA (X) - (CAR X]) - -(.CDR - [LAMBDA (X) - (CDR X]) - -(.CAAR - [LAMBDA (X) - (CAAR X]) - -(.CDAR - [LAMBDA (X) - (CDAR X]) - -(.CADR - [LAMBDA (X) - (CADR X]) - -(.CDDR - [LAMBDA (X) - (CDDR X]) - -(.CAAAAR - [LAMBDA (X) (* ; "Edited 8-Apr-88 13:20 by amd") - (* ; "lmm: 19-JUN-76 20 57") - (CAR (CAAR (CAR X]) -) - -(RPAQQ TESTCAR - ((TESTVALS (.CAR '(A)) - 'A - (.CDR '(A . B)) - 'B - [.CAAR '((A] - 'A - [.CDAR '((A . B] - 'B - (.CADR '(A B)) - 'B - (.CDDR '(A B . C)) - 'C - [.CAAAAR '((((A] - 'A))) -(DEFINEQ - -(.LAM0 - [LAMBDA NIL - (LAM0]) - -(..LAM0 - [LAMBDA NIL - (LAM0 T T T T T T]) - -(.LAM1 - [LAMBDA NIL - (LAM1]) - -(..LAM1 - [LAMBDA NIL - (LAM1 -372 "extra args" "should be ignored"]) - -(.NLAML - [LAMBDA NIL - (NLAML the NLAMBDA bit should make no difference]) - -(LAM1LOC - [LAMBDA (X) - (DECLARE (LOCALVARS X)) - X]) -) - -(RPAQQ TESTCALL - ((TESTVALS (LAM0) - NIL - (.LAM0) - NIL - (LAM0 T T T T T) - NIL - (..LAM0) - NIL - (LAM1) - NIL - (.LAM1) - NIL - (LAM1 -372 "extra args" "should be ignored") - -372 - (..LAM1) - -372 - (NLAML the NLAMBDA bit should make no difference) - 'the - (.NLAML) - 'the - (LAM1LOC) - NIL - (LAM1LOC 341) - 341 - (LAM1LOC 27 28 29) - 27))) -(DEFINEQ - -(.PROGS - [LAMBDA (X Y Z) (* ; "Edited 8-Apr-88 13:21 by amd") - (LIST 1 [PROG (X (Y (CDR Y))) - LPX (RETURN (LIST 3 (COND - (X (SETQ Z X) - (SETQ X) - (GO LPX)) - (Y (SETQ Y NIL) - (RETURN 17)) - (T (LIST Z] - (COND - ([PROG (X (Y (CDR Y))) - LPX (RETURN (LIST 3 (COND - (X (SETQ Z X) - (SETQ X) - (GO LPX)) - (Y (SETQ Y NIL) - (RETURN 17)) - (T (LIST Z] - 2) - ([NOT (PROG (X (Y (CDR Y))) - LPX (RETURN (LIST 3 (COND - (X (SETQ Z X) - (SETQ X) - (GO LPX)) - (Y (SETQ Y NIL) - (RETURN 17)) - (T (LIST Z] - 3) - (T 4)) - (OR [PROG (X (Y (CDR Y))) - LPX (RETURN (LIST 3 (COND - (X (SETQ Z X) - (SETQ X) - (GO LPX)) - (Y (SETQ Y NIL) - (RETURN 17)) - (T (LIST Z] - 5) - (AND [PROG (X (Y (CDR Y))) - LPX (RETURN (LIST 3 (COND - (X (SETQ Z X) - (SETQ X) - (GO LPX)) - (Y (SETQ Y NIL) - (RETURN 17)) - (T (LIST Z] - 6) - (PROGN [PROG (X (Y (CDR Y))) - LPX (RETURN (LIST 3 (COND - (X (SETQ Z X) - (SETQ X) - (GO LPX)) - (Y (SETQ Y NIL) - (RETURN 17)) - (T (LIST Z] - 7]) - -(.SPEC - [LAMBDA (X Y Z) - (LIST 1 [IDIFFERENCE (CONSCOUNT) - (PROG (LISPXHIST) - (DECLARE (LOCALVARS . T)) - (/RPLACA X NIL) - (RETURN (CONSCOUNT] - (COND - ([IDIFFERENCE (CONSCOUNT) - (PROG (LISPXHIST) - (DECLARE (LOCALVARS . T)) - (/RPLACA X NIL) - (RETURN (CONSCOUNT] - 2) - ([NOT (IDIFFERENCE (CONSCOUNT) - (PROG (LISPXHIST) - (DECLARE (LOCALVARS . T)) - (/RPLACA X NIL) - (RETURN (CONSCOUNT] - 3) - (T 4)) - (OR [IDIFFERENCE (CONSCOUNT) - (PROG (LISPXHIST) - (DECLARE (LOCALVARS . T)) - (/RPLACA X NIL) - (RETURN (CONSCOUNT] - 5) - (AND [IDIFFERENCE (CONSCOUNT) - (PROG (LISPXHIST) - (DECLARE (LOCALVARS . T)) - (/RPLACA X NIL) - (RETURN (CONSCOUNT] - 6) - (PROGN [IDIFFERENCE (CONSCOUNT) - (PROG (LISPXHIST) - (DECLARE (LOCALVARS . T)) - (/RPLACA X NIL) - (RETURN (CONSCOUNT] - 7]) - -(.COND - [LAMBDA (X Y Z) - (LIST 1 (COND - (X 1) - ((NULL X) - 2) - (T 3)) - (COND - ((COND - (X 1) - ((NULL X) - 2) - (T 3)) - 2) - ((NOT (COND - (X 1) - ((NULL X) - 2) - (T 3))) - 3) - (T 4)) - (OR (COND - (X 1) - ((NULL X) - 2) - (T 3)) - 5) - (AND (COND - (X 1) - ((NULL X) - 2) - (T 3)) - 6) - (PROGN (COND - (X 1) - ((NULL X) - 2) - (T 3)) - 7]) - -(.DELBIND - [LAMBDA (X Y Z) - (LIST 1 [PROG NIL - (RETURN (LIST 10 (COND - (X (RETURN 11] - (COND - ([PROG NIL - (RETURN (LIST 10 (COND - (X (RETURN 11] - 2) - ([NOT (PROG NIL - (RETURN (LIST 10 (COND - (X (RETURN 11] - 3) - (T 4)) - (OR [PROG NIL - (RETURN (LIST 10 (COND - (X (RETURN 11] - 5) - (AND [PROG NIL - (RETURN (LIST 10 (COND - (X (RETURN 11] - 6) - (PROGN [PROG NIL - (RETURN (LIST 10 (COND - (X (RETURN 11] - 7]) -) - -(RPAQQ TESTC2 - [(TESTVALS (.SPEC '(NIL)) - '(1 0 2 0 6 7)) - (TESTVALS (.COND 3) - '(1 1 2 1 6 7) - (.COND) - '(1 2 2 2 6 7)) - (TESTVALS (.DELBIND) - '(1 (10 NIL) - 2 - (10 NIL) - 6 7) - (.DELBIND 10) - '(1 11 2 11 6 7]) -(DEFINEQ - -(T1 - [LAMBDA (X) - 1]) - -(T0 - [LAMBDA (X) - 0]) - -(TT - [LAMBDA (X) - T]) - -(TNIL - [LAMBDA (X) - NIL]) - -(T-1 - [LAMBDA (X) - -1]) - -(T2 - [LAMBDA (X) - 2]) - -(T12 - [LAMBDA (X) - 12]) - -(T377 - [LAMBDA (X) - 255]) - -(T400Q - [LAMBDA (X) (* ; "Edited 8-Apr-88 13:22 by amd") - 256]) - -(T-400 - [LAMBDA (X) - -256]) - -(TSTR - [LAMBDA (X) (* ; "Edited 8-Apr-88 13:22 by amd") - "FOO"]) - -(.NILARGS - [LAMBDA (A B C D E F G H I J K L M N O) - (DECLARE (LOCALVARS . T)) - (AND (OR A B C D E F G H I J K L M N O) - (FAILTEST]) -) - -(RPAQQ TESTC - [(TESTVALS (T1) - 1 - (T0) - 0 - (TT) - T - (TNIL) - NIL - (T-1) - -1 - (T2) - 2 - (T12) - 12 - (T377) - 255 - (T400Q) - 256 - (T-400) - -256 - (TSTR) - "FOO") - (PROG [(TEST '(.NILARGS] - (RPTQ 1000 (.NILARGS]) -(DEFINEQ - -(.BIND0 - [LAMBDA (X) (* ; "Edited 8-Apr-88 13:22 by amd") - (PROG (Y Z W) - (RETURN X]) - -(.BIND1 - [LAMBDA (A B) (* ; "Edited 8-Apr-88 13:23 by amd") - (* ; "lmm: 22-JUN-76 1 0") - (DECLARE (SPECVARS . T)) - (PROG ((C 1) - (D 2)) - (RETURN (PROG (E F (G 3) - (H 4)) - (RETURN (EVALVARS]) - -(.BIND2 - [LAMBDA (A B) (* ; "Edited 8-Apr-88 13:23 by amd") - (* ; "lmm: 22-JUN-76 1 0") - (DECLARE (LOCALVARS . T)) - (PROG ((C 1) - (D 2)) - (RETURN (PROG (E F (G 3) - (H 4)) - (RETURN (EVALVARS]) - -(.BIND3 - [LAMBDA (A B) (* ; "Edited 8-Apr-88 13:23 by amd") - (* ; "lmm: 24-JUN-76 4 57") - (DECLARE (SPECVARS . T)) - (LIST [PROG ((C 1) - (D 2)) - (RETURN (PROG (E F (G 3) - (H 4)) - (RETURN (EVALVARS] - A B]) - -(.BIND4 - [LAMBDA (A B) (* ; "Edited 8-Apr-88 13:23 by amd") - (* ; "lmm: 24-JUN-76 4 57") - (DECLARE (SPECVARS . T)) - (LIST [PROG ((C 1) - (D 2)) - (RETURN (PROG (E F (G 3) - (H 4)) - (RETURN (EVALVARS] - A B]) - -(.BINDASSOC - [LAMBDA (V ALST VAR) (* ; "Edited 8-Apr-88 13:23 by amd") - (* ; "lmm: 24-JUN-76 8 42") - (PROG ((D (ASSOC V ALST))) - (RETURN (EVAL VAR]) - -(.BIND5 - [LAMBDA (X) (* ; "Edited 8-Apr-88 13:23 by amd") - (* ; "lmm: 24-JUN-76 8 51") - (PROG ((D (CDR X))) - (PROG ((LC (CDR D))) - (DECLARE (LOCALVARS LC)) - ([LAMBDA (X) - (RETFROM '.BIND5 (EVAL 'X] - LC]) - -(.BINDPOP - [LAMBDA (X Y) (* ; "Edited 8-Apr-88 13:24 by amd") - (* ; "lmm: 24-JUN-76 9 40") - (PROG1 Y (PROG ((K X)) - (CONS K K) - (SETQ Y X]) -) - -(RPAQQ TESTBIND - [(TESTVALS (.BIND0 173) - 173 - (.BIND1 1 2 3) - '(1 2 1 2 NIL NIL 3 4) - (.BIND2 1 2 3) - '(A.TOP B.TOP C.TOP D.TOP E.TOP F.TOP G.TOP H.TOP) - (.BIND3 1 2) - '((1 2 1 2 NIL NIL 3 4) - 1 2) - (.BIND4 1 2 3 4) - '((1 2 1 2 NIL NIL 3 4) - 1 2) - (.BINDASSOC 'A '((A . B)) - 'D) - '(A . B) - (.BINDPOP 23 73) - 73 - (.BIND5 '(A B C D E)) - '(C D E]) - -(RPAQQ TESTAT - ((TESTVALS (ARGTYPE 'LAM0) - 0 - (NARGS 'LAM0) - 0 - (ARGLIST 'LAM0) - NIL - (CALLS 'LAM0) - '(NIL NIL NIL NIL) - (FNTYP 'LAM0) - 'CEXPR - (CCODEP 'LAM0) - T - (ARGTYPE 'LAM1) - 0 - (NARGS 'LAM1) - 1 - (ARGLIST 'LAM1) - '(X) - (CALLS 'LAM1) - '(NIL NIL NIL NIL) - (FNTYP 'LAM1) - 'CEXPR - (CCODEP 'LAM1) - T - (ARGTYPE 'LAMA) - 2 - (NARGS 'LAMA) - 1 - (ARGLIST 'LAMA) - 'U - (CALLS 'LAMA) - '(NIL NIL NIL NIL) - (FNTYP 'LAMA) - 'CEXPR* - (CCODEP 'LAMA) - T - (ARGTYPE 'NLAML) - 1 - (NARGS 'NLAML) - 1 - (ARGLIST 'NLAML) - '(L) - (CALLS 'NLAML) - '(NIL NIL NIL NIL) - (FNTYP 'NLAML) - 'CFEXPR - (CCODEP 'NLAML) - T - (ARGTYPE 'NLAMA) - 3 - (NARGS 'NLAMA) - 1 - (CALLS 'NLAMA) - '(NIL NIL NIL NIL) - (FNTYP 'NLAMA) - 'CFEXPR* - (CCODEP 'NLAMA) - T))) -(DEFINEQ - -(LAM0 - [LAMBDA NIL NIL]) - -(LAM1 - [LAMBDA (X) - (DECLARE (LOCALVARS X)) (* ; "Edited 8-Apr-88 13:24 by amd") - X]) - -(LAMA - [LAMBDA L - (DECLARE (SPECVARS L)) (* ; "Edited 8-Apr-88 13:24 by amd") - L]) - -(NLAML - [NLAMBDA (L) - (DECLARE (LOCALVARS L)) (* ; "Edited 8-Apr-88 13:24 by amd") - L]) - -(NLAMA - [NLAMBDA L - (DECLARE (LOCALVARS L)) (* ; "Edited 8-Apr-88 13:25 by amd") - L]) -) -(DEFINEQ - -(.SELECTQ - [LAMBDA (A B C) (* ; "Edited 8-Apr-88 13:25 by amd") - (LIST 3 (PROGN (SELECTQ A - (1 (ADD1VAR C)) - ((2 3 4) - (SUB1VAR C)) - (5 (SETQ C (CDR C))) - NIL) - (SELECTQ B - (1 (ADD1VAR C)) - ((2 3 4) - (SUB1VAR C)) - (5 (SETQ C (CDR C))) - NIL)) - (COND - ((SELECTQ C - (NIL T) - (0 NIL) - (3 (SMALLP B)) - A) - 22]) - -(.SUBFNS - [LAMBDA NIL (* ; "Edited 8-Apr-88 13:25 by amd") - (LIST [PROG1 'GOOD [SETQ FREE1 (FUNCTION (LAMBDA (X) - (CAR X] - [SETQ FREE2 (FUNCTION (LAMBDA N N] - (SETQ FREE3 (FUNCTION (NLAMBDA L L] - (APPLY* FREE1 '(A) '(B)) - (APPLY* FREE2 1 2 3 4 5) - (APPLY* FREE3 1 2 3 4 5) - (SUBSET '((NIL) - (3)) FREE1]) - -(.MISC - [LAMBDA (B C A) (* ; "Edited 8-Apr-88 13:25 by amd") - (LIST 1 (PROG ((A NIL)) - (RETURN (PROGN B C A)) - (FOO BAZ WHAMMY) - (PROG (X) - (HELP))) - 3]) - -(.FORTEST - [LAMBDA (X) (* ; "Edited 8-Apr-88 13:25 by amd") - (for X on (to X collect (to X collect X)) - when (SOME X (FUNCTION CDDR)) collect (CONS X (LENGTH X]) - -(.BIGCOND - [LAMBDA (X) (* ; "Edited 8-Apr-88 13:25 by amd") - (COND - ((LISTP X) - (LIST X)) - ((ARRAYP X) - (ELT X 1)) - ((FIXP X) - (ITIMES (ITIMES 60 24 365) - X]) - -(.RECORDTEST - [LAMBDA (ARG) (* ; "Edited 8-Apr-88 13:26 by amd") - (* DECLARATIONS%: (RECORD A - (B . C))) - (PROG [(ZZ (create A - C _ (RPLACA (CONS) - 1) - B _ (RPLACA (CONS) - 2] - (COND - (ARG (replace B of ZZ with 17))) - [RPLACD (fetch C of ZZ) - (create A - C _ (LIST 4) - B _ (COND - ((ZEROP ARG) - (GO HOME)) - ((EQ ARG 3) - (RETURN ZZ)) - (T -2] - HOME - (RETURN ZZ]) - -(.PROGRETURN - [LAMBDA (X) (* ; "Edited 8-Apr-88 13:26 by amd") - (PROG NIL - (SETQ X (LIST (LIST 1) - (LIST 2))) - (RPLACD (ASSOC 1 X) - T) - (RETURN (SOME X (FUNCTION LISTP]) - -(.ALWAYSFALSE - [LAMBDA (A B) (* ; "Edited 8-Apr-88 13:26 by amd") - (LIST 1 (COND - ((COND - (A NIL) - (B NIL)) - T) - (T NIL)) - 3]) - -(.ALWAYSTRUE - [LAMBDA (A B) (* ; "Edited 8-Apr-88 13:26 by amd") - (COND - ((COND - (A T) - (B T) - (T T)) - T) - (T NIL]) - -(.EQ1 - [LAMBDA (X Y) - (DECLARE (LOCALVARS X Y)) (* ; "Edited 8-Apr-88 13:27 by amd") - (COND - ((EQ X Y) - T) - [(NLISTP X) - (COND - ((OR (NUMBERP X) - (STACKP X)) - (EQP X Y)) - ((STRINGP X) - (STREQUAL X Y] - ((LISTP Y) - (AND (.EQ1 (CAR X) - (CAR Y)) - (.EQ1 (CDR X) - (CDR Y]) - -(.EQ2 - [LAMBDA (X Y) - (DECLARE (LOCALVARS X Y)) (* ; "Edited 8-Apr-88 13:27 by amd") - (COND - [(NEQ X Y) - (COND - [(LISTP X) - (AND (LISTP Y) - (.EQ2 (CAR X) - (CAR Y)) - (.EQ2 (CDR X) - (CDR Y] - [(NOT (OR (NUMBERP X) - (STACKP X))) - (COND - ((STRINGP X) - (STREQUAL X Y] - (T (EQP X Y] - (T T]) - -(.EQ3 - [LAMBDA (X Y) - (DECLARE (LOCALVARS X Y)) (* ; "Edited 8-Apr-88 13:27 by amd") - (COND - ((EQ X Y) - T) - ((LISTP X) - (COND - [(LISTP Y) - (AND (.EQ3 (CAR Y) - (CAR X)) - (.EQ3 (CDR X) - (CDR Y] - (T NIL))) - ((OR (NUMBERP X) - (STACKP X)) - (EQP X Y)) - ((STRINGP X) - (STREQUAL X Y)) - (T NIL]) -) - -(RPAQQ TEST3 - ((TESTVALS (.SELECTQ 1 1 2) - '(3 4 22) - (.SELECTQ 1 3 3) - '(3 3 22) - (.SELECTQ 1 3 0) - '(3 0 NIL) - (.SELECTQ 2 2 2) - '(3 0 NIL) - (.SELECTQ 5 5 '(NIL NIL . 3)) - '(3 3 22) - (.SELECTQ) - '(3 NIL 22) - (.SUBFNS) - '(GOOD A 5 (1 2 3 4 5) - ((3))) - (.MISC) - '(1 NIL 3) - (.FORTEST 3) - '[(((3 3 3) - (3 3 3) - (3 3 3)) . 3) - (((3 3 3) - (3 3 3)) . 2) - (((3 3 3)) . 1] - (.FORTEST 2) - NIL))) -(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS - -(ADDTOVAR NLAMA NLAMA TESTIFSAME TESTVALS) - -(ADDTOVAR NLAML NLAML !ADD1VAR .NLSETQ TESTPAIRS) - -(ADDTOVAR LAMA LAMA !APPEND .LIST .SUM .TESTARG) -) -(PUTPROPS COMPTEST COPYRIGHT ("Venue & Xerox Corporation" 1984 1985 1988 1990)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (4163 9052 (MAKEFORM 4173 . 4647) (TESTER 4649 . 5171) (TEST1 5173 . 5469) (TRY 5471 . -5724) (FAILTEST 5726 . 5801) (TESTVALS 5803 . 6509) (TESTIFSAME 6511 . 7073) (TESTPAIRS 7075 . 8489) ( -EVALVARS 8491 . 8749) (TRYTEST 8751 . 9050)) (9298 12240 (IVAR 9308 . 9464) (PVAR 9466 . 9785) ( -VARSWAP 9787 . 10109) (VARSWAP2 10111 . 10492) (VARSWAP3 10494 . 10835) (VARSWAP4 10837 . 11126) ( -IVAR3 11128 . 11513) (IVARX 11515 . 12012) (FVAR 12014 . 12238)) (13301 13411 (.GETPROPLST 13311 . -13409)) (13412 19707 (.LISTP 13422 . 13462) (.NLISTP 13464 . 13506) (.LITATOM 13508 . 13735) (.FLOATP -13737 . 13962) (.FIXP 13964 . 14185) (.NUMBERP 14187 . 14413) (.SMALLP 14415 . 14639) (.STACKP 14641 - . 14866) (.ARRAYP 14868 . 15093) (.NLITATOM 15095 . 15328) (.NFLOATP 15330 . 15378) (.NNUMBERP 15380 - . 15430) (.NFIXP 15432 . 15476) (.NSMALLP 15478 . 15526) (.NARRAYP 15528 . 15576) (.NSTACKP 15578 . -15626) (.NZEROP 15628 . 15674) (.ZEROP 15676 . 15899) (.STRINGP 15901 . 15945) (.NSTRINGP 15947 . -15997) (.IGREATERP 15999 . 16051) (.NIGREATERP 16053 . 16111) (.ILESSP 16113 . 16159) (.NILESSP 16161 - . 16213) (.ATOM 16215 . 16253) (.NATOM 16255 . 16299) (.EQ 16301 . 16339) (.NEQ 16341 . 16381) (.NULL - 16383 . 16421) (.NNULL 16423 . 16502) (.IEQP 16504 . 16546) (.NIEQP 16548 . 16776) (.ORLISTP 16778 . -17017) (.ANDLISTP 17019 . 17261) (.ORATOM 17263 . 17501) (.ANDATOM 17503 . 17744) (.ORZEROP 17746 . -17984) (.ORNULL 17986 . 18223) (.ORARRAYP 18225 . 18466) (.ANDARRAYP 18468 . 18712) (.ANDNLISTP 18714 - . 18964) (.ANDNATOM 18966 . 19214) (.ORFLOATP 19216 . 19458) (.ANDFLOATP 19460 . 19705)) (24294 25310 - (.CONDRET 24304 . 24511) (.CONDRET2 24513 . 24722) (TESTRESUME 24724 . 25049) (GETLEAVES 25051 . -25308)) (25590 28446 (.TESTARG 25600 . 25853) (.SET 25855 . 26007) (.EVALV1 26009 . 26232) (.EVALV2 -26234 . 26459) (.SUM 26461 . 26872) (.FIX 26874 . 27092) (.LIST 27094 . 27650) (.NLSETQ 27652 . 27885) - (.EQUAL 27887 . 28039) (.SETX 28041 . 28444)) (29739 30661 (.ITIMES 29749 . 29795) (.IPLUS 29797 . -29841) (.IQUOTIENT 29843 . 29895) (.IREMAINDER 29897 . 29951) (.ADD1 29953 . 29991) (.SUB1 29993 . -30031) (.LLSH 30033 . 30075) (.LRSH 30077 . 30119) (.LSH 30121 . 30161) (.RSH 30163 . 30203) (.LOGAND -30205 . 30251) (.LOGOR 30253 . 30297) (.LOGXOR 30299 . 30345) (.IDIFFERENCE 30347 . 30403) (.NT1 30405 - . 30476) (.NT2 30478 . 30547) (.NT3 30549 . 30659)) (31524 36078 (.NCONC 31534 . 31759) (..NCONC -31761 . 32028) (.AND 32030 . 32309) (.FRPLNODE 32311 . 32544) (.OR 32546 . 32820) (.FRPLNODE2 32822 . -33055) (..NCONC3 33057 . 33326) (.NCONC3 33328 . 33558) (SELECTTEST 33560 . 33879) (.MKLIST 33881 . -34105) (.EQMEMB 34107 . 34333) (.NCONC1 34335 . 34561) (.GETPROPLIST 34563 . 34797) (.SETPROPLIST -34799 . 35035) (.FGETD 35037 . 35077) (..FRPLNODE2 35079 . 35219) (!AND 35221 . 35652) (!OR 35654 . -36076)) (38600 51527 (!ADD1VAR 38610 . 38834) (!APPEND 38836 . 39459) (APPEND2 39461 . 39795) (!ASSOC -39797 . 40165) (!ATTACH 40167 . 40429) (!CHANGEPROP 40431 . 40691) (!COPY 40693 . 41044) (!DEFLIST -41046 . 41431) (!DREMOVE 41433 . 42209) (!DREVERSE 42211 . 42261) (DREV 42263 . 42545) (!DSUBST 42547 - . 43109) (!EVERY 43111 . 43414) (!GETP 43416 . 43965) (!INTERSECTION 43967 . 44525) (!LAST 44527 . -44780) (!LASTN 44782 . 45299) (!LDIFF 45301 . 45758) (!LENGTH 45760 . 45982) (!LISTGET 45984 . 46478) -(!LSUBST 46480 . 47233) (!MAP 47235 . 47666) (!GET 47668 . 47847) (!GETLIS 47849 . 48173) (!MEMB 48175 - . 48489) (!NTH 48491 . 48846) (.COLLCT 48848 . 48973) (.ENDCOLLCT 48975 . 49104) (MYAPPEND1 49106 . -49346) (MYAPPEND2 49348 . 49658) (COLLCT 49660 . 49906) (ENDCOLLCT 49908 . 50058) (.ATTACH 50060 . -50181) (.APPEND0 50183 . 50300) (.APPEND1 50302 . 50527) (.APPEND2 50529 . 50756) (.APPEND3 50758 . -50987) (.APPEND4 50989 . 51220) (.MAPCGETP 51222 . 51525)) (57139 59034 (.MAP 57149 . 57496) (.MAPC -57498 . 58701) (.MAPCEFF 58703 . 59032)) (59283 60308 (.FPLUS 59293 . 59546) (.FTIMES 59548 . 59804) ( -.FDIFFERENCE 59806 . 60072) (.FQUOTIENT 60074 . 60306)) (60538 62084 (NONLOCALGO 60548 . 61488) ( -CNTDWN 61490 . 61828) (JUMPAROUND 61830 . 62082)) (62332 63275 (FN2 62342 . 62566) (FN3 62568 . 62795) - (FN1 62797 . 63019) (.IVAR 63021 . 63273)) (63566 64949 (.GETP 63576 . 63618) (.GETPROP 63620 . 63668 -) (.RPLACA 63670 . 63897) (.RPLACD 63899 . 64126) (.FRPLACA 64128 . 64357) (.GET 64359 . 64490) ( -.FRPLACD 64492 . 64721) (.ASSOC 64723 . 64767) (.LENGTH 64769 . 64811) (.LAST 64813 . 64851) (.GETHASH - 64853 . 64901) (.FMEMB 64903 . 64947)) (66825 69610 (.CONS 66835 . 66877) (LIST0 66879 . 67098) ( -LIST1 67100 . 67138) (LIST2 67140 . 67182) (LIST3 67184 . 67230) (LIST4 67232 . 67459) (LIST5 67461 . -67690) (LIST6 67692 . 67923) (LIST7 67925 . 68158) (LIST8 68160 . 68395) (LIST9 68397 . 68634) (LIST10 - 68636 . 68875) (LIST11 68877 . 69118) (LIST12 69120 . 69362) (LIST13 69364 . 69608)) (70456 70937 ( -.CAR 70466 . 70502) (.CDR 70504 . 70540) (.CAAR 70542 . 70580) (.CDAR 70582 . 70620) (.CADR 70622 . -70660) (.CDDR 70662 . 70700) (.CAAAAR 70702 . 70935)) (71304 71688 (.LAM0 71314 . 71354) (..LAM0 71356 - . 71409) (.LAM1 71411 . 71451) (..LAM1 71453 . 71532) (.NLAML 71534 . 71618) (LAM1LOC 71620 . 71686)) - (72373 78386 (.PROGS 72383 . 75049) (.SPEC 75051 . 76590) (.COND 76592 . 77472) (.DELBIND 77474 . -78384)) (78774 79492 (T1 78784 . 78813) (T0 78815 . 78844) (TT 78846 . 78875) (TNIL 78877 . 78910) ( -T-1 78912 . 78943) (T2 78945 . 78974) (T12 78976 . 79007) (T377 79009 . 79042) (T400Q 79044 . 79167) ( -T-400 79169 . 79204) (TSTR 79206 . 79330) (.NILARGS 79332 . 79490)) (80021 82831 (.BIND0 80031 . 80185 -) (.BIND1 80187 . 80578) (.BIND2 80580 . 80972) (.BIND3 80974 . 81411) (.BIND4 81413 . 81850) ( -.BINDASSOC 81852 . 82124) (.BIND5 82126 . 82530) (.BINDPOP 82532 . 82829)) (84968 85553 (LAM0 84978 . -85007) (LAM1 85009 . 85143) (LAMA 85145 . 85277) (NLAML 85279 . 85415) (NLAMA 85417 . 85551)) (85554 -90847 (.SELECTQ 85564 . 86277) (.SUBFNS 86279 . 86775) (.MISC 86777 . 87069) (.FORTEST 87071 . 87330) -(.BIGCOND 87332 . 87603) (.RECORDTEST 87605 . 88538) (.PROGRETURN 88540 . 88835) (.ALWAYSFALSE 88837 - . 89109) (.ALWAYSTRUE 89111 . 89333) (.EQ1 89335 . 89802) (.EQ2 89804 . 90340) (.EQ3 90342 . 90845))) -)) -STOP diff --git a/internal/COMPTEST.LCOM b/internal/COMPTEST.LCOM deleted file mode 100644 index 4aabb3ab5f46d5cbdba6e89bfac2def43d9ec6bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37309 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 diff --git a/internal/DO-TEST b/internal/DO-TEST deleted file mode 100644 index 59886fecf6112aa407eae32208dc2f78618a78d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37656 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%0A;vAQbSvQ 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 LRmCT!+I;Xo0Oth+ diff --git a/internal/DO-TEST.LCOM b/internal/DO-TEST.LCOM deleted file mode 100644 index fb8a74a72ec230d6a81f3208bccdc95e9b380d31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22994 zcmd^H>vG%3mEIS?E2Mh3H6Ds(IKCv=F`d;8M1m4ylAr<5mo5LHCD>*xkqR&4Xh)-G z-|su88#j`YopGwNwfi7(B{h>3`xVTX_!ZTFMH=d{n0#p+J5q5`_a>e zX*Nz57nig1?943Y7~tDLb^I!jbHd}o<_LX zJ$dl(a5i6O%lY&iH{UI%%d5j~UEv*9 zJ^$hC+Hk$u{Ms~z+1Yt^Wr|lGJb2KM$7j=ZhLN?|9=HGau(4y8kN)8QWrH;zn#YgY zkN(I}GK+3%vsxaWFHQ;ZS(b0*mVG?FHr|u}_|xMbWs=j6)A@&NrC_fY?Q26UzYOAp zkL~6=(J(oX;g`$o=hxjzkfvcga&O7KQ7{Z!2ZG8m{vVE`I5o`|lPC>M z(;`*mz`HyT3qL7O$_UQqJiYyZ_$YL8ZZ5o4qGH%EV4UBDDbX3sr1z7NY6B=~q zJF)N^D14wa2L3x~KN{^Lpf{Y1j)lZR^u&O%$Hi|GPewku90cwbx078oEfHJE`>LOw zM3dB4DsqF4IjXEu!Ek31$KfbdRZM2B@K}X1WKdx2M zz?k&oY-P@}_p^DnGV70-;3tvCm!CeE_0?r|-+Z2}KiWadl>xd4yqV6=+_lJ*%$BV( zll}dY&(3Dc>~wv8WuX5TZh3vnZeK-lnXN7{aQ1U{e)XW?>8`K{?OOU~3}pkY$rYh5 zsf5b=oUCAzFuU%+D7Lt(5**pzr(XaDQH;q8wxg=noqD1R^;$r#!_g2df@T-o_vhL9 zxmj-JKy+q+{|lHwJ3DAK3`X6=G{Bzrp4f#ZO=?Rwt?UYg*c=AWL;oa5PJA`q?F95U zj~^OAhiN)sP55FG3=Z&5_HaCij)H-+H?>(kJ7@>nH2&@1RdG(751&FW-xb+a8_li>F{3oB5~t;`3bGzgxToFwZw}7CZp}_^W#hx0uN< z_JgcFEjdCJZ$aqx|I%5Ioh!zj7NA^`1$<~)pH`Dj#J!`a`-Xa)e^n`z?T9FFSVCGr zosE{$&iKsC*5+&h138LP(d{McT!tcKOuEl@-_vUJ`F&YwJ`q}D!@dM`Jay`44 z{ZF>M4=c8iH}ED^>>z}9>$YMj|Dtf*et6@+GtEvk>S7%JBx7!`zHz)IK8<~Z7oeDS zjVldwYcxCESYo}cNvQ?_US;N;lM?72e3#fX!xuJAu!;-OM;Hh2@m@lEHof{|Rbf!| zM^O@TJu3DfH7yA`e7I-hN!l_E>NL1Fhy%?{a`U}}afFwzSmXe*-Y^^<8LtiPE*>FK zV7EyS!4@`<*u4sDfenED#T*_DwWfL7xC!1i;N6I~}!ONjNgi(PS{d^QyUxv$FY4Bg8f2qk=p^B z?AV;1Pd6(l9uSAB>D}V&N*-S|JxJ!8;ZZbzk3w;$Go~Do zOQKT)stxVJkOW9!?UBF%>X{~-o?|c~CUbJ1D+;arGFmJli$5+sOu~~m=JnXcr>S=7?FdW8RHU)Ap*kD-%eTYg~Y1Q zYAh}U2Rv$U)N?^TxSn!s+B~(n_dKNCQs)xBuF};0mW&`bm!v_Q!qQ0A55JX*_Lv|g zYd7o+0=NXt1S#r1kh$Mpbt5&mW7uf;+vUZ;vE6=*9CsAIF&1XwXh488QxoPU7)UA{ zM!u3o9ghgO-AGq<0v4{CGv;{^K^yp9;#|ijpU=uokNFtQ#JW|SE5RI#+^dbCu}M;t zD2{C!3}Bz|CY*RCT;Pt_8twaDc(_k@bQYWQv-uBe zmyR_zQ~Jd+C1w?e7Hm<&S(E$8$%{Zm_Y8rJ;33J6#xJam{rVBUABtePq2UmTYZPw| zEH{PMc=k*awun@xlH-a-22>v#&U)W;gW<5Be&;n;+4^tB6%*QRby7ISCkk6ofB=3r z_b&keQbC9WIG76iEz%``Cr7TJoNp3|fG?+)?88EaN1Xw}G?V|XZLq-AzO=j(C0(U# znEF4Qne*8vxVsAjUzm!oU}ol9KV}c6Vx5oQ0}M8>>``5VPmfDn|GUa^{r*L z-Yn-Uv$;H-GJ(uw_gGg!@6kfi9fIseG}t; z37Obejw387=^SbJAO(LakF?1RCuTn>`iZj&8E*+w>iKq?m#Zfvs!8Aybe=P2+gVL) zqnahH`J)y)}nBTIGc?uw%D92Ji1@D~rTU6&=u|;6u z-`ljE21nTODDuGzXgV4u9)cp%WI>z0y^ob7B=DWHk66at+paL?RZ1!1*3tyBK`^K1 zFoK2ZL+HI5_uTrRz`U_OyJ`1(e)t+hR(#p*xV&h46u$CN&PYfsQHiEG8NGs{y;KCV_s4V%S#a}(II21`4e^I7Glu^xzV7r=;OmPl%6Y)^3|HNeW*cE6f$b!8hY zEGU#3*;eu9Rw9U4iZ}B)7h~cNDZu68f)hMuOs5@Zly|X9Ey@aGoCJMh!=OJxB#Iqj z9YAJ~K*m)cDQWi}fBz-I9RVc|w!34B;BDK9QG352Ow;$$dvV2U-f2SoW%V z&P(Ho2InH}M>bPYUPL#_<YV64O>9 z?19f{X1X>_G%z6_aCRWF`=EE?o|{+J!8cR&X&Byb!ZF zrk=g$FUUI-2s)z2W>9JHX?0o_lgtS>GEGo;Tc6!rTJvME{=U~d8zNJCUJTDI?m`d+M= z?LW6}uuCjKi~v=uhc@#Ggc_siPZ;VUq$)eleIPFG4Wd`37$X}|b)3tZ&0sYtoi;&O z+8zRHI;D`10eaf$7-`KMeIVfo3jrlsfXU~Rjqqt2zD`R6hR=f(#TwZqnwu#_0*?1D z&x8Xh1#1zF9wp->hD6n@t+N9{Lvl)etByxqDOu@_yNdPy)bWBLr`G7#xLOylEEViX zG9Ull;mOKd2o-$91 z4l2#!WT9~Yn1K;%I~w>Rnyj$JIVRYk$3bOg~wloHRHP$+Ps zr!y?FNo;fC#Vmc+Sxt~zR)abR7zm@CU_i#G9P?-!Ta3M~S? zPbYf072Ic;m143zGMu_+dh<20B_53cE~LuC(AU^=uO9XPjK?amjCQc)YeFE($Tx4 zRnES#<;hwf!#TK;ma~{6R8{rwigjN#i)wGOns%cVuv-TV8QS6=_9Hf5so9eAM*bjt z84gV2-om}z6m;!(Q|U>k#^I?2@i9SBOGewa(Z2cKfSl3_xJ|+X5i2aD zEk)Xp;c%gZaeSs*~Q2eU&lggy@#<3Uxw@>5d=L2yUNH z{R>QtAJDtKlwhsIbA{WvWx7J{1c)@I4dvYsAKfyB^g z{+umWJlO#$vd#bn$);b#Rx>w33%$mGFd6-jqG35Z{lsu!l_7ky;)nUBdDfw#Q;H41^mmhH=N7%p$7gr<;Gf zma0Gf!uD$L4%h)~aa(`2Oh|QHn-M8t_=z>{zcVv%*peu!gZiGi{wVC3)5t2;kw^(K$ zkg66nM0X7AWse@|6j}wrwK$?ptwWQ6N?8d%(Vm|lp4=Y1;AzZ9=#A@sV_^o2#z?VB)9x>9F+U-98#uY*)r$^ zTAso%!J6!s$_1_sT9J9aklS}!X6wA5!;N^TI-!HXS&)AO1Yw#T1lNe;8&X}Q<)2UW zywjqL|67O-O#TL{myS++E83H5YsAmxVn6M_5)dwubD^*R9OfY-S2+@EY(D@-iT+S_ z1MfQ~%1M4oSL-N<&=^f4MVjziAX<&L zI+Hu*wy)`vdW~R(0+h|D$oUd+>?F97?7VB1n;Lqra-z9N{m8AAX|j4ZT~3(>d3R;9 zzip=Q`sDSC=@lw`;wWyY`{7ATJC&R-{=KdG8JvPcR!Cr$CtzWf%ER)}Z)v)fX;6{XM&Tl*iH@rg`hOYsnLj-wZowX? zKs4hh(j5^b`mHDz*rI~V;}VbMvPMJ3vAl-z9Uc-(9P5Xpm;E>z@z}Z8Ra2T=Y0O>k z8qN(mj@_G}rju>cVNDxix7~?f_6ltSAsQ6WyW&{*g6q`bFV`!{uCiIy1N4&va&*(K z>*Wg<&wtCxni1lsh(L>Ce@HO64a#SVzG4Y{(FmBdfj*mbTId9iUZFo7XGrr0K^zBf zTDF;_l9pm#J|CtG(_)6KxC!oBtza#U3uYo9h zgoK9!_-?DUEBURTg`nmqzm`M-cQogMw}?M{d8T&iU<(S|cx#u(Wo=>JQMB&Zl`J4N zIw{E!6p=Y8%#qZ2TMxc+!AAcE6-vXjA^Pl{LB%k9#RPS!#otOi+y15Vg2O!5N-wxV z#W76vOB;kPH-8!ceg(x;M9S#%(1Gu?ixMnHCMc+P$_t*MFP*NyvZSJI-H{b(wyE?` zgeBj=X`qQiwg#=o(yfA?o+Zvs-2`e|w3R1UG+0dS9`B=n0xEX579!SVjH(`~720>K z(XbF%fFcy*XZV5_O7?brgARL%b=%63{M?%N<_~8e7Gpmh4}N47!@VzdzCY@i1|0^A zqaEPUuhQcuGMB<3tJl%#PA5PaU~=1`EN+FW6VM)yl7cg27WWphA~+UjNxq~)XvQMY zT9m32(#vmv2vX`$wxT)4BerPd`zlO1$Y__Kd&Up|%P9L!M#*H%?|bpnP0#^g<-$wq zp=$u^@IaLN#7*ggH?*;G{K!2+=avdS9s~@}^&@OyPyX^L4n{?BSANp0zZUODeim0q z*^lLx9W22f8sJLr@>6@o3vPMxTpB=~^DATgVi~}IGLp`m5(MssI7agMp6Z|n$%AOD z-;X~}(Uh0ay3(g6s4R*<9PH~=@` z7Fq$u1JNA#!5#A^RfRk)cbL#8LRZoAV?ByR=5{m`jRywztPL*@+@|X;A0_w7*;|7E zh1$@4i^|-vT)Z|b{k~Op22Xp{kmFAd8V88Ai_)rF27(%#i6RJ~8w$o#lmHKWTvFFD zO4!SlC?R0B6Tm^t9jd&h$zo)|&f1<{nIF&bg^N6hz!LcnJi<>GXp~Qyra^HM=0E%zNc)y9;2(ttsc%NezgPm7dCsTZjdmwnkE9e=Oz?kx-0KGNIY6E>5#ux#Q7;gX`4w zkC^S)dR`z1k1$mE4;SD7PG4VgTTDEcFm^#J4X?V$s8s7si5UfhJi}U>Qy!LqRv4u^XnEa-?3(b$XQF?Y9N}&K)*TKejIj~8&ocC1I?ZD>j46MAuPI;7 zNF&`O9epyqz3B`>Rp3Bb!Bsw;{e+*UMoGr5ij(76WC}*Fh diff --git a/internal/DO-TEST.TEDIT b/internal/DO-TEST.TEDIT deleted file mode 100644 index 93d5255c..00000000 --- a/internal/DO-TEST.TEDIT +++ /dev/null @@ -1,165 +0,0 @@ -Writing Software Tests What File to Load; Conventions Load the file {Eris}Internal>Library>Do-Test.DFasl. All the symbols mentioned in this document are in both the IL: and XCL-TEST: packages, unless otherwise stated. You should also read the How-To sheet on writing AR Test Cases. Main Testing Entry Points (DEFTEST name&options forms) [Definer] This is the definer for tests, allowing them to be saved on file-managed files. The test succeeds if the final form returns a non-NIL result. If name&options isn't a list, then it's just the name which can be a symbol or string; symbols are preferred for DEFTEST tests. If you specify options, the CAR of name&options is the name. If you specify :COMPILED in name&options, the test will run only when it has been compiled. Since this test is stored as structure rather than as plain text, any symbols will be package-qualified appropriately. If a test fails or an error occurs during evaluation, a message is printed to *ERROR-OUTPUT*. Unless you have DFNFLG set to PROP, the act of defining a test also causes it to be run (so you'll see if your test fails right away). Examples: (DEFTEST AR1000 ; For AR test cases, the test name should be ARar#. (= 3 (+ 1 2))) ; Real simple test of + (DEFTEST (+-OPT :COMPILED) ; A test of the compiler, only makes sense to run compiled. (= 3 (+ 1 1 1))) ; Checking that +'s optimizer does the right thing. (DEFTEST (MS-TEST :INTERPRETED) ; A test of Masterscope, only makes sense interpreted. (TEST-DEFUN FN (X) (FOO X)) (\. IS FOO CALLED BY FN)) (DEFTESTGROUP name&options forms) [Definer] This is the definer for groups of tests, allowing them to be saved on file-managed files. For associating a group of tests. For instance, a group of tests may all require the same setup and cleanup. If there are any options (see below) then the CAR of name&options is the name and the CDR is a keyword/value list. All forms must be DEFTEST or DO-TEST forms. Unless you have DFNFLG set to PROP, the act of defining a test group also causes it to be run (so you'll see if your tests fail right away). :before allows for a setup form for a group of tests. :after allows a form to be run after the tests without affecting results. The normal form of a DEFTESTGROUP using all its features is: (DEFTESTGROUP (UNWIND-OPCODE-TESTS :BEFORE (progn (before-form-1) (before-form-2)...) :AFTER (progn (after-form-1) (after-form-2)) ) (DEFTEST "first test" ....) (DEFTEST "second test" ....) ) Functions You'll Find Useful When Building Tests (EXPECT-ERRORS (error-types) forms) [Macro] Error-types is a list of errors that may occur while executing the forms. If one of the listed errors occurs, EXPECT-ERRORS returns (values t error-that-occurred), otherwise NIL. If all you want to do is make sure that an error is signalled somewhere in the test, you can specify an error-types of T. Normal use of this form is: (DEFTEST ERROR-CHECK (EXPECT-ERRORS (T) (THIS-FORM 'SHOULD 'ERROR))) (DEFTEST (+-DETECTS-NILS :INTERPRETED) (EXPECT-ERRORS (XCL:TYPE-MISMATCH) (+ 3 NIL))) (TEST-SETQ Variable Value) (TEST-DEFUN name (arglist) forms) (TEST-DEFMACRO name (arglist) forms) [Macros] These work like SETQ, DEFUN, and DEFMACRO, except that if they are executed within a DEFTEST or DEFTESTGROUP, their effects are manually undone (old values are saved and then restored) upon leaving the test. Use these in :BEFORE forms that a whole group of DEFTESTs want to see. DON'T use TEST-SETQ on locally-bound variables or in loops. Commands and Functions for Running Tests run Test-name [EXEC Command] Once Test-name has been defined using DEFTEST or DEFTESTGROUP, you can run the test with the run command. (DO-TEST-FILE filename) Reads and executes a file of tests. All forms in the file are read before any are executed. The file should be clear text (clearput in TEdit) and terminate with a STOP. The format for test names is Chap#[-sec#[-subsec#]]-comment.TEST (DO-ALL-TESTS &key (results *test-batch-results*) (patterns *test-file-pattern*) (sysout-type nil) (resume nil)) Calls DO-TEST-FILE on each file that matches patterns, which is a list of directory patterns, and prints the results to a new version of a file named results. If results is T, results are printed to the window where DO-ALL-TESTS is running. The header of the results file is a message of the date and time the tests are being run and the MAKESYSDATE of the sysout; if sysout-type is supplied, a line for it goes out too. If resume is non-NIL, DO-ALL-TESTS attempts to resume an interrupted test sequence, appending the results onto the latest version of results. *TEST-MODE* [Variable] Default is :batch, which means to report test failures and errors on *ERROR-OUTPUT* (which is usually a file), and continue. Other values possible are: :interactive which means to print a message before running each test, print another message for test failures, and produce a break window on errors. :batch-verbose which means to generate all the messages of :interactive and do not break on errors. *TEST-BATCH-RESULTS* [Variable] Defaults to "{eris}cml>test>test-results" *TEST-FILE-PATTERN* [Variable] Defaults to ("{eris}cml>test>*.test;" "{eris}cml>test>*.x") which runs all the internal tests. *TEST-COMPILE* [Variable] If this switch is non-nil, DO-TEST compiles its forms before testing them. DO-ALL-TESTS will print a message in its header if this switch is on. *ALL-FILES-REMAINING* [Variable] While DO-ALL-TESTS is running, this variable contains a list of all the files remaining to be processed; files are removed from it AFTER they are read and executed. To restart a test run that somehow crashes the test driver, first clean up whatever blew up the run (if necessary, dump *ALL-FILES-REMAINING* to a file and get a new sysout), then do (DO-ALL-TESTS :RESUME T [:RESULTS "wherever"]). Internal Functions (DO-TEST name&options forms) [Macro] This is the obsolete, plain-test-file testing macro; it is still around so that old tests work (and because DEFTEST uses it). A test succeeds if the final form returns a non-nil result. If name&options isn't a list, then it's just the name which can be an atom or string; strings are preferred. If you specify options, the CAR of name&options is the name. If you specify :COMPILED in name&options, the test will run only when it has been compiled. Forms are presumed to be read with the Common Lisp reader in package XCL-TEST, which uses LISP and XCL. If a test fails or an error occurs during evaluation, a message is printed to *ERROR-OUTPUT*. (DO-TEST-GROUP name&options forms) [Macro] This is the obsolete, plain-test-file testing macro; it is still around so that old tests work (and because DEFTESTGROUP uses it). For associating a group of tests. For instance, a group of tests may all require the same setup and cleanup. If there are any options (see below) then the CAR of name&options is the name and the CDR is a keyword/value list. All forms must be DO-TEST forms. :before allows for a setup form for a group of tests. :after allows a form to be run after the tests without affecting results. The normal form of a DO-TEST-GROUP using all its features is: (DO-TEST-GROUP ("a test group" :BEFORE (progn (before-form-1) (before-form-2)...) :AFTER (progn (after-form-1) (after-form-2)) ) (DO-TEST "first test" ....) (DO-TEST "second test" ....) ) (CL-READFILE filename) Reads all forms in filename and returns a list of them. This function is used by DO-TEST-FILE to read test files; test writers who want to see if their files are syntactically valid should first see if CL-READFILE will read them, then see if DO-TEST-FILE will execute them. (MUNG-TEST-FILES filepattern &key (compiler 'compile-file) (startinglist NIL)) Compiles test files so they can be run by just loading them. Compiles all files matching filepattern (which is fed to directory) using compiler and writes them out to the directory they came from with an extension appropriate to compiler. If you want to explicitly specify the list of files to compile, hand a list of pathnames to startinglist. Prints an error message for files that fail to compile. You have to use this function (instead of just compiling the test files) because it prefaces the test files with (in-package "XCL-TEST") and (setq *test-file-name* "NAME-OF-FILE") so the compiler will read them properly and the files will know their names for error reporting purposes. NOTE: tests that fail should not be compiled; the resulting compiled code may not be a valid test. ,;Ô$ZÔ;Ô$ZÔ8Ô$Ô8Ô$Ô8Ô $Ô5$, -MODERNMODERN MODERN -MODERN -TERMINAL -?1(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8)) -GACHA - -TIMESROMAN - -TIMESROMAN - -TIMESROMAN -> -p -@ -   -p - - • - + -AĊ - -‡ - - -/;5!7>  -÷ - -  - - - - - -0 -E - -  -Ó1  - 8 -& - 3 -k - # - -J -9 - - -  - - - - - - - - - -, -^ - - - -  - ) -)  - - O - - - -¤ -! -$ - - - -  - - -  -  - -  - - - -  - -_ - -/ - n -  - - - - - c - -  - -4 -F - ‰ -- -  - -4 - -s - - -) - : - - -  -* - -   -œ - - ‚ - + -AE - - -P - -  - - -  - - - -0 -E - - -  -4.  - -6 - m -  -  -  - -  - -  - -Z -  - - -V -_ -  - -&k - _ -!È”zş \ No newline at end of file diff --git a/internal/DO-TEST.pdf b/internal/DO-TEST.pdf deleted file mode 100644 index 37f4621d73def0ef00aa076d5b63ed1c1e7a4c80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19349 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 diff --git a/internal/DTEST.TEDIT b/internal/DTEST.TEDIT deleted file mode 100644 index 1e2218e2..00000000 --- a/internal/DTEST.TEDIT +++ /dev/null @@ -1 +0,0 @@ -Running DSKTEST The Disk-file-system test utility 1. Load the file DSKTEST.DCOM from whichever directory & server it is stored on. 2. Type (DSKTEST '{DSK} \ No newline at end of file diff --git a/internal/MACROTEST b/internal/MACROTEST deleted file mode 100644 index 1ac0281b..00000000 --- a/internal/MACROTEST +++ /dev/null @@ -1,1493 +0,0 @@ -(FILECREATED "18-Mar-86 21:13:28" {ERIS}LIBRARY>MACROTEST.;12 125367Q - - changes to: (VARS MACROTESTCOMS) - (FNS !CHARTEST !CHARFILETEST !STRPOSTEST) - - previous date: " 7-Jul-85 12:18:31" {ERIS}LIBRARY>MACROTEST.;10) - - -(* Copyright (c) 1981, 1982, 1983, 1984, 1985, 1986 by Xerox Corporation. All rights reserved.) - -(PRETTYCOMPRINT MACROTESTCOMS) - -(RPAQQ MACROTESTCOMS ((E (RADIX 8)) - (DECLARE: EVAL@COMPILE DONTCOPY (MACROS MTHELP MTCHECKSTK CKEQ CKFEQ - CKFUZZYEQ MTCHECK MTCHECK1)) - (FNS !DIAGNOSE !DIAGNOSELP) - (* "Basic entries") - (INITVARS (ERRORMESSAGESTREAM T) - (!MTALLOWINEXACTFLG T) - (!MTUSERAIDFLG T)) - (FNS !CKEQ !CKFEQ !CKFUZZYEQ !MRAID) - (* "Utility fns") - (FNS !CONSTEST !COPY !SMASH !APPENDTEST) - (FNS !INTERPTEST !CHECKARGS !CHECKLSTARARG !CHECKLSTARSETARG) - (* "CONS and RPLAC tests") - (FNS !GCTEST !GCTEST1 !GCTEST2 !GCTESTSETF !GCTESTSETG) - (* "Test of garbage collector") - (FNS MINILOGOUT) - (* "File MACROTESTAUX contains freevar and numeric tests") - (FNS !CHARTEST !STRPOSTEST !CHARFILETEST) - (DECLARE: DONTEVAL@LOAD DONTEVAL@COMPILE DOCOPY (FILES MACROTESTAUX)))) -(DECLARE: EVAL@COMPILE DONTCOPY -(DECLARE: EVAL@COMPILE -[PUTPROPS MTHELP MACRO (X (LIST (QUOTE !MRAID) - (COND ((CDR X) - (CONS (QUOTE LIST) - X)) - (T (CAR X] -[PUTPROPS MTCHECKSTK MACRO (ARGS (SUBPAIR (QUOTE (ARGS ID)) - (LIST ARGS (RAND 1 MAX.SMALLP)) - (QUOTE (OR (EQ (PROG1 ID . ARGS) - ID) - (RAID (QUOTE WRONG#PUSHED] -(PUTPROPS CKEQ MACRO ((FORM ANSWER) - ([LAMBDA (Password Result) - (DECLARE (LOCALVARS Password Result)) - (OR (EQ Password (QUOTE 343Q)) - (RAID (QUOTE WRONG#PUSHED))) - (!CKEQ Result ANSWER (QUOTE FORM] - (QUOTE 343Q) - FORM))) -(PUTPROPS CKFEQ MACRO ((FORM ANSWER) - ([LAMBDA (Password Result) - (DECLARE (LOCALVARS Password Result)) - (OR (EQ Password (QUOTE 343Q)) - (RAID (QUOTE WRONG#PUSHED))) - (!CKFEQ Result ANSWER (QUOTE FORM] - (QUOTE 343Q) - FORM))) -(PUTPROPS CKFUZZYEQ MACRO ((FORM ANSWER) - ([LAMBDA (Password Result) - (DECLARE (LOCALVARS Password Result)) - (OR (EQ Password (QUOTE 343Q)) - (RAID (QUOTE WRONG#PUSHED))) - (!CKFUZZYEQ Result ANSWER (QUOTE FORM] - (QUOTE 343Q) - FORM))) -[PUTPROPS MTCHECK MACRO (Y (CONS (QUOTE MTCHECKSTK) - (MAPCAR Y (FUNCTION (LAMBDA (X) - (LIST (QUOTE MTCHECK1) - X] -[PUTPROPS MTCHECK1 MACRO ((X) - (OR X (MTHELP (QUOTE (Failed: X] -) -) -(DEFINEQ - -(!DIAGNOSE - [LAMBDA NIL (* JonL " 7-Nov-84 19:20") - (!NUMBERTEST) - (!FNUMTEST) - (!MIXNUMTEST) - (!GCTEST) - (!CONSTEST) - (!FVARTEST) - (!INTERPTEST) - (CHECKCONSPAGES]) - -(!DIAGNOSELP - (LAMBDA NIL (* JonL " 7-Nov-84 18:42") - (PROG ((I 0)) - LP (!DIAGNOSE) - (\STOPDISPLAY) - (\RELEASEWORKINGSET) - (\STARTDISPLAY) - (printout T "Pass " (add I 1) - " completed." T) - (GO LP)))) -) - - - -(* "Basic entries") - - -(RPAQ? ERRORMESSAGESTREAM T) - -(RPAQ? !MTALLOWINEXACTFLG T) - -(RPAQ? !MTUSERAIDFLG T) -(DEFINEQ - -(!CKEQ - (LAMBDA (RESULT ANSWER FORM) (* JonL " 7-Nov-84 17:20") - (OR (EQ RESULT ANSWER) - (AND (EQ (NTYPX RESULT) - (NTYPX ANSWER)) - (EQUAL RESULT ANSWER)) - (!MRAID (LIST FORM (QUOTE =>) - RESULT - (QUOTE should-have-been) - ANSWER))))) - -(!CKFEQ - (LAMBDA (RESULT ANSWER FORM) (* JonL " 7-Nov-84 17:20") - (OR (AND (FLOATP RESULT) - (FEQP RESULT ANSWER)) - (!MRAID (LIST FORM (QUOTE =>) - RESULT - (QUOTE should-have-been) - ANSWER))))) - -(!CKFUZZYEQ - (LAMBDA (X Y) (* JonL " 7-Nov-84 17:21") - (* Essentially FEQP except that the low-order bit is  - ignored.) - (OR (AND (FLOATP X) - (FLOATP Y)) - (!MRAID "An arg to CKFUZZYEQ is non-FLOATP")) - (AND (EQ (BITCLEAR (fetch (FLOATP LOWORD) of X) - 1) - (BITCLEAR (fetch (FLOATP LOWORD) of Y) - 1)) - (OR (EQ (fetch (FLOATP HIWORD) of X) - (fetch (FLOATP HIWORD) of Y)) - (AND (EQ 0 (fetch (FLOATP HIWORDNOSIGNBIT) of X)) - (EQ 0 (fetch (FLOATP HIWORDNOSIGNBIT) of Y))))))) - -(!MRAID - (LAMBDA (MESS1 MESS2 FLG) (* JonL " 7-Nov-84 17:28") - (if !MTUSERAIDFLG - then (RAID MESS1 MESS2 FLG) - else (printout ERRORMESSAGESTREAM "[RAID-level error] " MESS1 MESS2 T)))) -) - - - -(* "Utility fns") - -(DEFINEQ - -(!CONSTEST - (LAMBDA NIL (* JonL " 7-Nov-84 19:18") - (PROG (A B C D) - (MTCHECKSTK (PROG1 NIL (SETQ A (CONS (QUOTE A) - (QUOTE B))) - (MTCHECK (EQ (CAR A) - (QUOTE A)) - (EQ (CDR A) - (QUOTE B))) - (SETQ A (CONS (QUOTE A) - (SETQ B (QUOTE (D E F))))) - (MTCHECK (EQ (CAR A) - (QUOTE A)) - (EQ (CDR A) - B)) - (SETQ A (DOCOLLECT (CONS 1))) - (MTCHECK (EQUAL (CAR A) - (QUOTE (1))) - (EQ (CDR A) - A) - (EQ (\REFCNT A) - 1) - (EQ (\REFCNT (CAR A)) - 1)) - (for X on (CDR (for I from 1 to 400Q collect (CONS I))) - do (MTCHECK (EQ (\REFCNT X) - 1)) - (EQ (\REFCNT (CAR X)) - 1)) - (SETQ D (for I from 0 to 1000Q collect (LIST I))) - (for X on D do (PROG ((Y (CDR X)) - (AX (CAR X)) - (AY (CADR X)) - (DY (CDDR X))) - (OR Y (RETURN)) - (MTCHECK (PROGN (swap (CAR X) - (CAR Y)) - (AND (EQ (CAR X) - AY) - (EQ (CAR Y) - AX)))) - (MTCHECK (PROGN (swap (CDR Y) - (CDR X)) - (AND (EQ (CDR X) - DY) - (EQ (CDR Y) - Y)))) - (MTCHECK (PROGN - (* Now put them back) - (swap (CAR X) - (CAR Y)) - (swap (CDR Y) - (CDR X)) - (AND (EQ Y (CDR X)) - (EQ (CAR X) - AX) - (EQ (CAR Y) - AY)))))) - (for VAR in (LIST NIL D "A STRING") - do (for X on D do (MTCHECK (EQ (PROG1 (CDR X) - (swap (CDR X) - VAR) - (swap (CDR X) - VAR)) - (CDR X))))) - (for X on (CDR D) do (MTCHECK (EQ (\REFCNT X) - 1) - (EQ (\REFCNT (CAR X)) - 1))) - (for I from 0 to 1000Q do (MTCHECK (EQUAL (pop D) - (LIST I)))) - (for X - in (QUOTE ((((A) . B)) - (A B) - ((A B . C)) - ((A B C D . E)) - ((A . B) - (C . D) - (E . F) - ((((((((((((((G))))))))))))))) - (1 2 3 4 5 6 7 10Q 11Q 12Q 13Q 14Q 15Q 16Q 17Q 20Q 21Q 22Q - 23Q 24Q))) - bind Y K Z - do (MTCHECK (EQUAL X (SETQ Y (!COPY X)))) - (MTCHECK (EQUAL X (SETQ Z (COPY X)))) - (MTCHECK (EQUAL X (SETQ Z (!SMASH Z)))) - (MTCHECK (EQUAL X (SETQ K (MAPCAR X (FUNCTION (LAMBDA (YY) - YY)))))))))))) - -(!COPY - (LAMBDA (X) (* lmm "25-FEB-81 21:47") - (COND - ((NLISTP X) - X) - (T (CONS (!COPY (CAR X)) - (!COPY (CDR X))))))) - -(!SMASH - (LAMBDA (X) (* bvm: "14-JAN-82 17:04") - (COND - ((LISTP X) - (RPLACD (RPLACA X (!SMASH (CAR X))) - (!SMASH (CDR X)))) - ((NULL X) - (RPLACA (RPLACD X X) - X)) - (T X)))) - -(!APPENDTEST - (LAMBDA NIL (* JonL "16-Dec-84 21:06") - (to 1750Q do (MTCHECK (EQUAL (QUOTE (A B C D)) - (APPEND (QUOTE (A B)) - (QUOTE (C D)))))) - (to 1000Q do (MTCHECK (EQUAL (QUOTE (A B . C)) - (APPEND (QUOTE (A B)) - (QUOTE C))))))) -) -(DEFINEQ - -(!INTERPTEST - (LAMBDA NIL (* lmm "30-MAY-83 19:40") - (PROG (INTERPDEF ANON) - (PUTD (QUOTE !INTERPTESTER) - (SETQ INTERPDEF (LIST (QUOTE LAMBDA) - NIL - (QUOTE (!CHECKARGS))))) - (for FORMAL in (QUOTE (NIL (A) - (A B) - (A B C) - (A B C D) - (A B C D E) - (A B C D E F) - N)) - do (RPLACA (CDR INTERPDEF) - FORMAL) - (for ACTUAL in (QUOTE (NIL (1) - (1 2) - (1 2 3) - (1 2 3 4) - (1 2 3 4 5) - (1 2 3 4 5 6))) - do (SETQ ANON T) - (APPLY INTERPDEF ACTUAL) - (EVAL (CONS INTERPDEF ACTUAL)) - (SETQ ANON) - (APPLY (QUOTE !INTERPTESTER) - ACTUAL) - (EVAL (CONS (QUOTE !INTERPTESTER) - ACTUAL)) - (COND - ((EQ FORMAL (QUOTE N)) - (APPLY (QUOTE (LAMBDA N (PROG ((I 1)) - LP (COND - ((NOT (IGREATERP I N)) - (!CHECKLSTARARG I (ARG N I)) - (SETQ I (ADD1 I)) - (GO LP))) - (SETQ I 1) - LP2 (COND - ((NOT (IGREATERP I N)) - (SETARG N I (IPLUS 310Q I)) - (!CHECKLSTARSETARG I (ARG N I)) - (SETQ I (ADD1 I)) - (GO LP2)))))) - ACTUAL))))) - (PROG (A B C D) - (for PAIR in (QUOTE ((3 3) - (T T) - (NIL NIL) - ((SETQ FOOVAR 3) - 3) - (A NIL) - (B NIL) - (C NIL) - (D NIL) - ((SETTOPVAL (QUOTE FOOVAR) - 45Q) - 45Q) - (FOOVAR 45Q) - ((SETQ A 47Q) - 47Q) - ((SETQ B 57Q) - 57Q) - ((SETQ C 102Q) - 102Q) - (A 47Q) - (B 57Q) - (C 102Q) - ((PROG NIL - (RETURN 14Q)) - 14Q) - ((PROG NIL - (GO L1) - L1 (RETURN 145Q) - (RETURN 146Q) - (RETURN 147Q)) - 145Q) - ((PROG ((A 504Q)) - (RETURN A)) - 504Q) - ((PROG ((A 1777Q) - (B 634Q)) - (OR (AND (EQ A 1777Q) - (EQ B 634Q)) - (MTHELP))) - NIL))) - do (OR (EQ (EVAL (CAR PAIR)) - (CADR PAIR)) - (MTHELP PAIR "TEST FAILED"))) - (OR (AND (EQ A 47Q) - (EQ B 57Q) - (EQ C 102Q) - (EQ FOOVAR 45Q)) - (MTHELP (QUOTE (COMPILEVAL)))))))) - -(!CHECKARGS - (LAMBDA NIL - (DECLARE (USEDFREE ACTUAL ANON FORMAL INTERPDEF A B C D E F N)) - (* JonL " 7-Nov-84 17:15") - (COND - ((LISTP FORMAL) - (for Y in FORMAL as (X _ ACTUAL) bind VAL by (CDR X) - do (COND - ((OR (NEQ (SETQ VAL (SELECTQ Y - (A A) - (B B) - (C C) - (D D) - (E E) - (F F) - (SHOULDNT))) - (CAR X)) - (NEQ (SETQ VAL (EVALV Y)) - (CAR X))) - (MTHELP Y "Free Value wrong - was " VAL "should be" (CAR X)))))) - (FORMAL (OR (AND (EQ (EVALV FORMAL) - (LENGTH ACTUAL)) - (EQ N (EVALV FORMAL))) - (MTHELP (QUOTE ARGCOUNT))) - (for I from 1 to N as X in ACTUAL do (OR (EQ (ARG N I) - X) - (MTHELP (QUOTE ARG) - I))))) - (PROG ((FRAME (REALSTKNTH -1 (QUOTE !CHECKARGS))) - SCANFRAME NARGS NAME) - (OR FRAME (MTHELP "Interpreter frame not found")) - (OR (EQ (COND - (ANON INTERPDEF) - (T (QUOTE !INTERPTESTER))) - (SETQ NAME (STKNAME FRAME))) - (MTHELP "Interpreter frame name wrong:" NAME)) - (for X in FORMAL - do (OR (EQP FRAME (SETQ SCANFRAME (STKSCAN X))) - (MTHELP "STKSCAN failed for var" X)) - (RELSTK SCANFRAME)) - (OR (IGEQ (SETQ NARGS (STKNARGS FRAME)) - (LENGTH FORMAL)) - (MTHELP "STKNARGS WRONG" NARGS)) - (RELSTK FRAME)))) - -(!CHECKLSTARARG - (LAMBDA (I VAL) (* bvm: "26-SEP-81 21:19") - (OR (EQ VAL (CAR (NTH ACTUAL I))) - (MTHELP "INTERPRETED ARG" I)))) - -(!CHECKLSTARSETARG - (LAMBDA (I VAL) (* bvm: "26-SEP-81 21:20") - (OR (EQ VAL (IPLUS I 310Q)) - (MTHELP "INTERPRETED SETARG" I)))) -) - - - -(* "CONS and RPLAC tests") - -(DEFINEQ - -(!GCTEST - [LAMBDA NIL (* bvm: "30-NOV-81 17:23") - (!GCTEST1) - (!GCTEST2]) - -(!GCTEST1 - [LAMBDA NIL - (DECLARE (GLOBALVARS !GV1 !GV2 !GV3)) (* JonL "16-Mar-84 12:10") - (PROG (A B C D E) - (MTCHECK (PROGN (SETQ A (CONS 1 2)) - (EQ (\REFCNT A) - 0)) - (PROGN (SETQ B (CONS A)) - (AND (EQ (\REFCNT A) - 1) - (EQ (\REFCNT B) - 0))) - (PROGN (SETQ C (CONS A)) - (AND (EQ (\REFCNT A) - 2) - (EQ (\REFCNT C) - 0))) - (PROGN (RPLACA B (QUOTE FOO)) - (AND (EQ (\REFCNT A) - 1) - (EQ (\REFCNT B) - 0))) - (PROGN (RPLACA C (QUOTE FUM)) - (AND (EQ (\REFCNT A) - 0) - (EQ (\REFCNT C) - 0))) - (PROGN (RPLACD C (SETQ D (CONS))) - (EQ (\REFCNT D) - 1)) - (PROGN (RPLACD C (SETQ E (CONS))) - (AND (EQ (\REFCNT D) - 0) - (EQ (\REFCNT E) - 1))) - (PROGN (SETQ !GV1 NIL) - (EQ (\REFCNT !GV1) - 1)) - (PROGN (SETQ !GV1 E) - (EQ (\REFCNT E) - 2)) - (PROGN (SETQ !GV1 A) - (AND (EQ (\REFCNT E) - 1) - (EQ (\REFCNT A) - 1))) - (PROGN (SETQ !GV3 A) - (EQ (\REFCNT A) - 2)) - (PROGN (SETQ !GV2 C) - (EQ (\REFCNT C) - 1]) - -(!GCTEST2 - [LAMBDA NIL (* JonL "16-Mar-84 14:03") - (PROG ((A (CONS (QUOTE FOO))) - (I 0) - (REFARRAY (ARRAY 200Q (QUOTE POINTER) - NIL 0))) - [RPTQ 106Q (MTCHECK (PROGN (SETA REFARRAY (add I 1) - A) - (EQ (\REFCNT A) - I] - (RPTQ 106Q (MTCHECK (PROGN (SETA REFARRAY (PROG1 I (add I -1)) - NIL) - (EQ (\REFCNT A) - I]) - -(!GCTESTSETF - (LAMBDA NIL (* JonL "16-Mar-84 12:17") - (PROG ((A1 (VAG2 71Q 442Q)) - (A2 (VAG2 72Q 442Q)) - (A3 (VAG2 70Q 442Q)) - (A4 (VAG2 67Q 442Q)) - (A5 (VAG2 66Q 442Q))) (* 5 array pointers that will hash to same place) - - (* (PROG ((STATE (for X in (QUOTE (A1 A2 A3 A4 A5)) collect (LIST X 1))) FORMS FORM BOX1STATE BOX2STATE)  - (FRPTQ 12Q (FRPTQ 12Q (SETQ VAR (CAR (NTH STATE (RAND 1 5)))) (PROG NIL RETRY (SELECTQ (RAND 1 4)  - (1 (COND (BOX1STATE (COND ((ZEROP (CADR BOX1STATE)) (GO RETRY))) (add (CADR BOX1STATE) -1)))  - (add (CADR VAR) 1) (SETQ BOX1STATE VAR) (push FORMS (LIST (QUOTE SETQ) (QUOTE !FVAR1) (CAR VAR))))  - (2 (COND (BOX2STATE (COND ((ZEROP (CADR BOX2STATE)) (GO RETRY))) (add (CADR BOX2STATE) -1)))  - (add (CADR VAR) 1) (SETQ BOX2STATE VAR) (push FORMS (LIST (QUOTE SETQ) (QUOTE !FVAR2) (CAR VAR))))  - (3 (add (CADR VAR) 1) (push FORMS (LIST (QUOTE \ADDREF) (CAR VAR)))) (PROGN (COND ((ZEROP (CADR VAR))  - (GO RETRY))) (add (CADR VAR) -1) (push FORMS (LIST (QUOTE \DELREF) (CAR VAR))))))) (push FORMS  - (CONS (QUOTE MTCHECK) (for X in STATE collect (LIST (QUOTE EQ) (LIST (QUOTE \REFCNT) (CAR X))  - (CADR X)))))) (for X in STATE do (COND ((ZEROP (CADR X)) (push FORMS (LIST (QUOTE \ADDREF) (CAR X))))  - (T (FRPTQ (SUB1 (CADR X)) (push FORMS (LIST (QUOTE \DELREF) (CAR X))))))) (RETURN (CONS (QUOTE PROGN)  - (REVERSE FORMS))))) - - - (MTCHECKSTK (\DELREF A3) - (SETQ !FVAR2 A1) - (SETQ !FVAR1 A3) - (SETQ !FVAR2 A1) - (SETQ !FVAR1 A1) - (SETQ !FVAR2 A5) - (\ADDREF A1) - (SETQ !FVAR1 A2) - (\DELREF A1) - (\ADDREF A5) - (MTCHECK (EQ (\REFCNT A1) - 1) - (EQ (\REFCNT A2) - 2) - (EQ (\REFCNT A3) - 0) - (EQ (\REFCNT A4) - 1) - (EQ (\REFCNT A5) - 3)) - (SETQ !FVAR1 A5) - (\ADDREF A4) - (\ADDREF A2) - (\ADDREF A5) - (SETQ !FVAR2 A5) - (SETQ !FVAR1 A4) - (\ADDREF A3) - (SETQ !FVAR1 A3) - (SETQ !FVAR2 A2) - (SETQ !FVAR2 A4) - (MTCHECK (EQ (\REFCNT A1) - 1) - (EQ (\REFCNT A2) - 2) - (EQ (\REFCNT A3) - 2) - (EQ (\REFCNT A4) - 3) - (EQ (\REFCNT A5) - 3)) - (\ADDREF A5) - (SETQ !FVAR1 A2) - (SETQ !FVAR2 A4) - (SETQ !FVAR1 A5) - (SETQ !FVAR2 A5) - (\DELREF A1) - (SETQ !FVAR1 A1) - (\DELREF A1) - (\ADDREF A4) - (\DELREF A4) - (MTCHECK (EQ (\REFCNT A1) - 0) - (EQ (\REFCNT A2) - 2) - (EQ (\REFCNT A3) - 1) - (EQ (\REFCNT A4) - 2) - (EQ (\REFCNT A5) - 5)) - (SETQ !FVAR2 A5) - (\DELREF A4) - (SETQ !FVAR2 A5) - (\DELREF A3) - (\ADDREF A1) - (SETQ !FVAR1 A1) - (SETQ !FVAR2 A5) - (SETQ !FVAR2 A3) - (\DELREF A1) - (\DELREF A2) - (MTCHECK (EQ (\REFCNT A1) - 0) - (EQ (\REFCNT A2) - 1) - (EQ (\REFCNT A3) - 1) - (EQ (\REFCNT A4) - 1) - (EQ (\REFCNT A5) - 4)) - (SETQ !FVAR2 A1) - (SETQ !FVAR2 A4) - (\DELREF A4) - (\ADDREF A1) - (SETQ !FVAR1 A3) - (SETQ !FVAR1 A5) - (\ADDREF A3) - (\ADDREF A1) - (\ADDREF A4) - (SETQ !FVAR2 A3) - (MTCHECK (EQ (\REFCNT A1) - 1) - (EQ (\REFCNT A2) - 1) - (EQ (\REFCNT A3) - 2) - (EQ (\REFCNT A4) - 1) - (EQ (\REFCNT A5) - 5)) - (SETQ !FVAR2 A2) - (SETQ !FVAR1 A3) - (\ADDREF A5) - (SETQ !FVAR2 A1) - (SETQ !FVAR2 A5) - (\DELREF A2) - (SETQ !FVAR2 A2) - (\DELREF A2) - (SETQ !FVAR1 A5) - (SETQ !FVAR1 A3) - (MTCHECK (EQ (\REFCNT A1) - 1) - (EQ (\REFCNT A2) - 0) - (EQ (\REFCNT A3) - 2) - (EQ (\REFCNT A4) - 1) - (EQ (\REFCNT A5) - 5)) - (\ADDREF A1) - (\DELREF A1) - (\ADDREF A5) - (\ADDREF A5) - (SETQ !FVAR1 A5) - (SETQ !FVAR1 A4) - (SETQ !FVAR1 A4) - (SETQ !FVAR1 A2) - (SETQ !FVAR2 A2) - (\ADDREF A2) - (MTCHECK (EQ (\REFCNT A1) - 1) - (EQ (\REFCNT A2) - 2) - (EQ (\REFCNT A3) - 1) - (EQ (\REFCNT A4) - 1) - (EQ (\REFCNT A5) - 7)) - (\DELREF A5) - (SETQ !FVAR2 A5) - (\ADDREF A2) - (\ADDREF A1) - (\DELREF A1) - (\ADDREF A5) - (SETQ !FVAR1 A3) - (\ADDREF A2) - (SETQ !FVAR1 A3) - (\ADDREF A4) - (MTCHECK (EQ (\REFCNT A1) - 1) - (EQ (\REFCNT A2) - 2) - (EQ (\REFCNT A3) - 2) - (EQ (\REFCNT A4) - 2) - (EQ (\REFCNT A5) - 10Q)) - (\ADDREF A2) - (\DELREF A5) - (\DELREF A3) - (SETQ !FVAR2 A5) - (SETQ !FVAR1 A4) - (SETQ !FVAR1 A2) - (SETQ !FVAR1 A5) - (\DELREF A5) - (SETQ !FVAR2 A5) - (SETQ !FVAR1 A2) - (MTCHECK (EQ (\REFCNT A1) - 1) - (EQ (\REFCNT A2) - 4) - (EQ (\REFCNT A3) - 0) - (EQ (\REFCNT A4) - 2) - (EQ (\REFCNT A5) - 6)) - (SETQ !FVAR1 A5) - (SETQ !FVAR2 A5) - (\DELREF A2) - (SETQ !FVAR1 A1) - (SETQ !FVAR2 A2) - (SETQ !FVAR2 A1) - (\ADDREF A5) - (SETQ !FVAR2 A4) - (SETQ !FVAR1 A5) - (SETQ !FVAR2 A2) - (MTCHECK (EQ (\REFCNT A1) - 1) - (EQ (\REFCNT A2) - 3) - (EQ (\REFCNT A3) - 0) - (EQ (\REFCNT A4) - 2) - (EQ (\REFCNT A5) - 7)) - (\DELREF A2) - (\DELREF A2) - (\ADDREF A3) - (\DELREF A4) - (\DELREF A5) - (\DELREF A5) - (\DELREF A5) - (\DELREF A5) - (\DELREF A5) - (\DELREF A5) - (SETQ.NOREF !FVAR1 NIL) - (SETQ.NOREF !FVAR2 NIL)) - (MTCHECKSTK (\DELREF A5) - (SETQ !FVAR1 A5) - (SETQ !FVAR2 A2) - (\ADDREF A1) - (SETQ !FVAR1 A2) - (\ADDREF A4) - (SETQ !FVAR1 A1) - (\DELREF A2) - (SETQ !FVAR2 A5) - (SETQ !FVAR1 A5) - (MTCHECK (EQ (\REFCNT A1) - 2) - (EQ (\REFCNT A2) - 0) - (EQ (\REFCNT A3) - 1) - (EQ (\REFCNT A4) - 2) - (EQ (\REFCNT A5) - 2)) - (\ADDREF A4) - (\DELREF A3) - (\ADDREF A3) - (\ADDREF A2) - (SETQ !FVAR1 A4) - (\ADDREF A4) - (\DELREF A2) - (\ADDREF A3) - (SETQ !FVAR1 A2) - (\ADDREF A2) - (MTCHECK (EQ (\REFCNT A1) - 2) - (EQ (\REFCNT A2) - 2) - (EQ (\REFCNT A3) - 2) - (EQ (\REFCNT A4) - 4) - (EQ (\REFCNT A5) - 1)) - (SETQ !FVAR2 A1) - (SETQ !FVAR1 A3) - (SETQ !FVAR2 A1) - (SETQ !FVAR2 A3) - (SETQ !FVAR1 A2) - (SETQ !FVAR2 A4) - (\DELREF A2) - (SETQ !FVAR2 A2) - (SETQ !FVAR2 A5) - (SETQ !FVAR2 A4) - (MTCHECK (EQ (\REFCNT A1) - 2) - (EQ (\REFCNT A2) - 1) - (EQ (\REFCNT A3) - 2) - (EQ (\REFCNT A4) - 5) - (EQ (\REFCNT A5) - 0)) - (\ADDREF A3) - (SETQ !FVAR2 A1) - (\DELREF A1) - (\ADDREF A5) - (\ADDREF A5) - (\ADDREF A4) - (SETQ !FVAR2 A4) - (SETQ !FVAR1 A5) - (\ADDREF A4) - (SETQ !FVAR2 A2) - (MTCHECK (EQ (\REFCNT A1) - 1) - (EQ (\REFCNT A2) - 1) - (EQ (\REFCNT A3) - 3) - (EQ (\REFCNT A4) - 6) - (EQ (\REFCNT A5) - 3)) - (SETQ !FVAR2 A2) - (\ADDREF A1) - (SETQ !FVAR1 A5) - (SETQ !FVAR1 A4) - (SETQ !FVAR2 A5) - (\DELREF A3) - (\ADDREF A3) - (SETQ !FVAR2 A5) - (SETQ !FVAR2 A4) - (\ADDREF A3) - (MTCHECK (EQ (\REFCNT A1) - 2) - (EQ (\REFCNT A2) - 0) - (EQ (\REFCNT A3) - 4) - (EQ (\REFCNT A4) - 10Q) - (EQ (\REFCNT A5) - 2)) - (\DELREF A3) - (\ADDREF A4) - (\ADDREF A5) - (SETQ !FVAR2 A1) - (\ADDREF A1) - (\ADDREF A4) - (\ADDREF A2) - (\DELREF A4) - (SETQ !FVAR2 A2) - (\DELREF A2) - (MTCHECK (EQ (\REFCNT A1) - 3) - (EQ (\REFCNT A2) - 1) - (EQ (\REFCNT A3) - 3) - (EQ (\REFCNT A4) - 10Q) - (EQ (\REFCNT A5) - 3)) - (SETQ !FVAR1 A2) - (SETQ !FVAR2 A1) - (SETQ !FVAR1 A5) - (SETQ !FVAR1 A3) - (\DELREF A3) - (SETQ !FVAR1 A1) - (\ADDREF A4) - (\ADDREF A4) - (\DELREF A3) - (SETQ !FVAR1 A1) - (MTCHECK (EQ (\REFCNT A1) - 5) - (EQ (\REFCNT A2) - 0) - (EQ (\REFCNT A3) - 1) - (EQ (\REFCNT A4) - 11Q) - (EQ (\REFCNT A5) - 3)) - (SETQ !FVAR2 A1) - (\ADDREF A4) - (SETQ !FVAR1 A3) - (SETQ !FVAR2 A3) - (SETQ !FVAR1 A2) - (SETQ !FVAR1 A1) - (SETQ !FVAR2 A2) - (SETQ !FVAR1 A5) - (SETQ !FVAR1 A5) - (SETQ !FVAR2 A5) - (MTCHECK (EQ (\REFCNT A1) - 3) - (EQ (\REFCNT A2) - 0) - (EQ (\REFCNT A3) - 1) - (EQ (\REFCNT A4) - 12Q) - (EQ (\REFCNT A5) - 5)) - (SETQ !FVAR1 A3) - (SETQ !FVAR2 A3) - (\ADDREF A2) - (SETQ !FVAR2 A5) - (\ADDREF A4) - (\DELREF A1) - (SETQ !FVAR1 A4) - (\DELREF A1) - (\DELREF A2) - (\ADDREF A5) - (MTCHECK (EQ (\REFCNT A1) - 1) - (EQ (\REFCNT A2) - 0) - (EQ (\REFCNT A3) - 1) - (EQ (\REFCNT A4) - 14Q) - (EQ (\REFCNT A5) - 5)) - (\ADDREF A1) - (SETQ !FVAR2 A3) - (SETQ !FVAR1 A4) - (SETQ !FVAR1 A3) - (SETQ !FVAR2 A1) - (SETQ !FVAR1 A2) - (\ADDREF A4) - (\ADDREF A4) - (\ADDREF A4) - (\ADDREF A1) - (MTCHECK (EQ (\REFCNT A1) - 4) - (EQ (\REFCNT A2) - 1) - (EQ (\REFCNT A3) - 1) - (EQ (\REFCNT A4) - 16Q) - (EQ (\REFCNT A5) - 4)) - (\DELREF A1) - (\DELREF A1) - (\DELREF A1) - (\DELREF A4) - (\DELREF A4) - (\DELREF A4) - (\DELREF A4) - (\DELREF A4) - (\DELREF A4) - (\DELREF A4) - (\DELREF A4) - (\DELREF A4) - (\DELREF A4) - (\DELREF A4) - (\DELREF A4) - (\DELREF A4) - (\DELREF A5) - (\DELREF A5) - (\DELREF A5) - (SETQ.NOREF !FVAR1 NIL) - (SETQ.NOREF !FVAR2 NIL))))) - -(!GCTESTSETG - (LAMBDA NIL (* JonL "16-Mar-84 12:17") - (DECLARE (GLOBALVARS !GVAR1 !GVAR2)) - (PROG ((A1 (VAG2 71Q 442Q)) - (A2 (VAG2 72Q 442Q)) - (A3 (VAG2 70Q 442Q)) - (A4 (VAG2 67Q 442Q)) - (A5 (VAG2 66Q 442Q))) (* 5 array pointers that will hash to same place) - - (* (PROG ((STATE (for X in (QUOTE (A1 A2 A3 A4 A5)) collect (LIST X 1))) FORMS FORM BOX1STATE BOX2STATE)  - (FRPTQ 12Q (FRPTQ 12Q (SETQ VAR (CAR (NTH STATE (RAND 1 5)))) (PROG NIL RETRY (SELECTQ (RAND 1 4)  - (1 (COND (BOX1STATE (COND ((ZEROP (CADR BOX1STATE)) (GO RETRY))) (add (CADR BOX1STATE) -1)))  - (add (CADR VAR) 1) (SETQ BOX1STATE VAR) (push FORMS (LIST (QUOTE SETQ) (QUOTE !GVAR1) (CAR VAR))))  - (2 (COND (BOX2STATE (COND ((ZEROP (CADR BOX2STATE)) (GO RETRY))) (add (CADR BOX2STATE) -1)))  - (add (CADR VAR) 1) (SETQ BOX2STATE VAR) (push FORMS (LIST (QUOTE SETQ) (QUOTE !GVAR2) (CAR VAR))))  - (3 (add (CADR VAR) 1) (push FORMS (LIST (QUOTE \ADDREF) (CAR VAR)))) (PROGN (COND ((ZEROP (CADR VAR))  - (GO RETRY))) (add (CADR VAR) -1) (push FORMS (LIST (QUOTE \DELREF) (CAR VAR))))))) (push FORMS  - (CONS (QUOTE MTCHECK) (for X in STATE collect (LIST (QUOTE EQ) (LIST (QUOTE \REFCNT) (CAR X))  - (CADR X)))))) (for X in STATE do (COND ((ZEROP (CADR X)) (push FORMS (LIST (QUOTE \ADDREF) (CAR X))))  - (T (FRPTQ (SUB1 (CADR X)) (push FORMS (LIST (QUOTE \DELREF) (CAR X))))))) (RETURN (CONS (QUOTE PROGN)  - (REVERSE FORMS))))) - - - (MTCHECKSTK (SETQ !GVAR1 A4) - (\DELREF A2) - (SETQ !GVAR1 A4) - (\ADDREF A3) - (SETQ !GVAR1 A4) - (SETQ !GVAR2 A4) - (SETQ !GVAR2 A5) - (SETQ !GVAR1 A2) - (\DELREF A2) - (\DELREF A3) - (MTCHECK (EQ (\REFCNT A1) - 1) - (EQ (\REFCNT A2) - 0) - (EQ (\REFCNT A3) - 1) - (EQ (\REFCNT A4) - 1) - (EQ (\REFCNT A5) - 2)) - (\DELREF A3) - (SETQ !GVAR2 A1) - (\ADDREF A4) - (SETQ !GVAR2 A5) - (SETQ !GVAR2 A2) - (\ADDREF A3) - (SETQ !GVAR1 A2) - (\DELREF A4) - (\DELREF A1) - (\DELREF A4) - (MTCHECK (EQ (\REFCNT A1) - 0) - (EQ (\REFCNT A2) - 1) - (EQ (\REFCNT A3) - 1) - (EQ (\REFCNT A4) - 0) - (EQ (\REFCNT A5) - 1)) - (\DELREF A2) - (\ADDREF A2) - (\DELREF A3) - (\ADDREF A1) - (SETQ !GVAR2 A1) - (\ADDREF A5) - (SETQ !GVAR2 A4) - (\ADDREF A5) - (\ADDREF A5) - (\ADDREF A1) - (MTCHECK (EQ (\REFCNT A1) - 2) - (EQ (\REFCNT A2) - 0) - (EQ (\REFCNT A3) - 0) - (EQ (\REFCNT A4) - 1) - (EQ (\REFCNT A5) - 4)) - (SETQ !GVAR2 A4) - (\ADDREF A5) - (SETQ !GVAR2 A5) - (\ADDREF A1) - (SETQ !GVAR2 A5) - (SETQ !GVAR2 A2) - (SETQ !GVAR1 A4) - (SETQ !GVAR1 A4) - (\DELREF A4) - (\ADDREF A4) - (MTCHECK (EQ (\REFCNT A1) - 3) - (EQ (\REFCNT A2) - 0) - (EQ (\REFCNT A3) - 0) - (EQ (\REFCNT A4) - 1) - (EQ (\REFCNT A5) - 5)) - (\DELREF A5) - (SETQ !GVAR1 A5) - (\ADDREF A4) - (\ADDREF A1) - (SETQ !GVAR1 A1) - (\DELREF A4) - (SETQ !GVAR1 A5) - (SETQ !GVAR1 A2) - (\ADDREF A3) - (SETQ !GVAR1 A1) - (MTCHECK (EQ (\REFCNT A1) - 5) - (EQ (\REFCNT A2) - 0) - (EQ (\REFCNT A3) - 1) - (EQ (\REFCNT A4) - 0) - (EQ (\REFCNT A5) - 4)) - (\ADDREF A2) - (\DELREF A3) - (SETQ !GVAR2 A4) - (SETQ !GVAR2 A4) - (SETQ !GVAR2 A3) - (SETQ !GVAR2 A2) - (\ADDREF A2) - (SETQ !GVAR2 A5) - (\ADDREF A4) - (\DELREF A2) - (MTCHECK (EQ (\REFCNT A1) - 5) - (EQ (\REFCNT A2) - 0) - (EQ (\REFCNT A3) - 0) - (EQ (\REFCNT A4) - 1) - (EQ (\REFCNT A5) - 5)) - (SETQ !GVAR1 A2) - (SETQ !GVAR1 A4) - (\ADDREF A3) - (\DELREF A4) - (SETQ !GVAR1 A2) - (SETQ !GVAR2 A4) - (\DELREF A1) - (SETQ !GVAR1 A3) - (SETQ !GVAR2 A1) - (SETQ !GVAR2 A5) - (MTCHECK (EQ (\REFCNT A1) - 3) - (EQ (\REFCNT A2) - 0) - (EQ (\REFCNT A3) - 2) - (EQ (\REFCNT A4) - 0) - (EQ (\REFCNT A5) - 5)) - (SETQ !GVAR2 A3) - (SETQ !GVAR1 A2) - (\ADDREF A1) - (\ADDREF A5) - (\ADDREF A2) - (\DELREF A5) - (\DELREF A2) - (\DELREF A1) - (\ADDREF A2) - (SETQ !GVAR2 A4) - (MTCHECK (EQ (\REFCNT A1) - 3) - (EQ (\REFCNT A2) - 2) - (EQ (\REFCNT A3) - 1) - (EQ (\REFCNT A4) - 1) - (EQ (\REFCNT A5) - 4)) - (\DELREF A1) - (\ADDREF A5) - (\DELREF A1) - (\DELREF A5) - (\DELREF A3) - (\ADDREF A3) - (SETQ !GVAR1 A1) - (SETQ !GVAR2 A2) - (\ADDREF A2) - (SETQ !GVAR2 A2) - (MTCHECK (EQ (\REFCNT A1) - 2) - (EQ (\REFCNT A2) - 3) - (EQ (\REFCNT A3) - 1) - (EQ (\REFCNT A4) - 0) - (EQ (\REFCNT A5) - 4)) - (\ADDREF A3) - (\ADDREF A1) - (SETQ !GVAR2 A5) - (SETQ !GVAR1 A3) - (SETQ !GVAR2 A2) - (SETQ !GVAR1 A2) - (SETQ !GVAR2 A4) - (\DELREF A3) - (SETQ !GVAR2 A4) - (\DELREF A1) - (MTCHECK (EQ (\REFCNT A1) - 1) - (EQ (\REFCNT A2) - 3) - (EQ (\REFCNT A3) - 1) - (EQ (\REFCNT A4) - 1) - (EQ (\REFCNT A5) - 4)) - (\DELREF A2) - (\DELREF A2) - (\DELREF A5) - (\DELREF A5) - (\DELREF A5) - (SETQ.NOREF !GVAR1 NIL) - (SETQ.NOREF !GVAR2 NIL)) - (MTCHECKSTK (\ADDREF A3) - (\DELREF A1) - (SETQ !GVAR2 A1) - (SETQ !GVAR1 A2) - (SETQ !GVAR2 A2) - (\ADDREF A3) - (SETQ !GVAR2 A3) - (\DELREF A5) - (SETQ !GVAR2 A4) - (\ADDREF A2) - (MTCHECK (EQ (\REFCNT A1) - 0) - (EQ (\REFCNT A2) - 3) - (EQ (\REFCNT A3) - 3) - (EQ (\REFCNT A4) - 2) - (EQ (\REFCNT A5) - 0)) - (SETQ !GVAR1 A5) - (SETQ !GVAR2 A3) - (SETQ !GVAR1 A5) - (SETQ !GVAR1 A1) - (\DELREF A1) - (SETQ !GVAR2 A5) - (\ADDREF A1) - (SETQ !GVAR1 A1) - (\DELREF A4) - (SETQ !GVAR1 A4) - (MTCHECK (EQ (\REFCNT A1) - 0) - (EQ (\REFCNT A2) - 2) - (EQ (\REFCNT A3) - 3) - (EQ (\REFCNT A4) - 1) - (EQ (\REFCNT A5) - 1)) - (SETQ !GVAR2 A5) - (SETQ !GVAR1 A1) - (\ADDREF A5) - (\ADDREF A4) - (\DELREF A2) - (SETQ !GVAR2 A5) - (\DELREF A4) - (SETQ !GVAR1 A5) - (\ADDREF A2) - (SETQ !GVAR1 A4) - (MTCHECK (EQ (\REFCNT A1) - 0) - (EQ (\REFCNT A2) - 2) - (EQ (\REFCNT A3) - 3) - (EQ (\REFCNT A4) - 1) - (EQ (\REFCNT A5) - 2)) - (\DELREF A2) - (\DELREF A4) - (\DELREF A2) - (\ADDREF A2) - (SETQ !GVAR2 A2) - (\ADDREF A5) - (\ADDREF A2) - (\ADDREF A1) - (SETQ !GVAR2 A3) - (\ADDREF A5) - (MTCHECK (EQ (\REFCNT A1) - 1) - (EQ (\REFCNT A2) - 2) - (EQ (\REFCNT A3) - 4) - (EQ (\REFCNT A4) - 0) - (EQ (\REFCNT A5) - 3)) - (\ADDREF A2) - (\DELREF A5) - (\ADDREF A1) - (SETQ !GVAR2 A4) - (SETQ !GVAR2 A2) - (SETQ !GVAR2 A5) - (\DELREF A3) - (\ADDREF A2) - (SETQ !GVAR2 A1) - (\DELREF A5) - (MTCHECK (EQ (\REFCNT A1) - 3) - (EQ (\REFCNT A2) - 4) - (EQ (\REFCNT A3) - 2) - (EQ (\REFCNT A4) - 0) - (EQ (\REFCNT A5) - 1)) - (\DELREF A2) - (SETQ !GVAR2 A2) - (SETQ !GVAR2 A5) - (\ADDREF A1) - (SETQ !GVAR2 A2) - (\DELREF A3) - (\ADDREF A5) - (SETQ !GVAR2 A5) - (SETQ !GVAR2 A1) - (SETQ !GVAR2 A1) - (MTCHECK (EQ (\REFCNT A1) - 4) - (EQ (\REFCNT A2) - 3) - (EQ (\REFCNT A3) - 1) - (EQ (\REFCNT A4) - 0) - (EQ (\REFCNT A5) - 2)) - (\ADDREF A5) - (SETQ !GVAR2 A4) - (\DELREF A1) - (\ADDREF A3) - (\DELREF A3) - (SETQ !GVAR2 A2) - (SETQ !GVAR2 A2) - (\DELREF A2) - (\DELREF A5) - (\ADDREF A2) - (MTCHECK (EQ (\REFCNT A1) - 2) - (EQ (\REFCNT A2) - 4) - (EQ (\REFCNT A3) - 1) - (EQ (\REFCNT A4) - 0) - (EQ (\REFCNT A5) - 2)) - (SETQ !GVAR2 A1) - (\DELREF A1) - (\DELREF A5) - (SETQ !GVAR2 A1) - (SETQ !GVAR2 A2) - (\ADDREF A2) - (\ADDREF A4) - (SETQ !GVAR1 A4) - (SETQ !GVAR1 A5) - (\ADDREF A1) - (MTCHECK (EQ (\REFCNT A1) - 2) - (EQ (\REFCNT A2) - 5) - (EQ (\REFCNT A3) - 1) - (EQ (\REFCNT A4) - 0) - (EQ (\REFCNT A5) - 2)) - (SETQ !GVAR1 A4) - (SETQ !GVAR1 A4) - (\DELREF A5) - (\ADDREF A5) - (SETQ !GVAR2 A1) - (SETQ !GVAR2 A2) - (\DELREF A5) - (SETQ !GVAR1 A1) - (SETQ !GVAR2 A4) - (SETQ !GVAR2 A1) - (MTCHECK (EQ (\REFCNT A1) - 4) - (EQ (\REFCNT A2) - 4) - (EQ (\REFCNT A3) - 1) - (EQ (\REFCNT A4) - 0) - (EQ (\REFCNT A5) - 0)) - (SETQ !GVAR2 A4) - (\ADDREF A4) - (SETQ !GVAR2 A4) - (SETQ !GVAR1 A4) - (SETQ !GVAR2 A5) - (\ADDREF A3) - (SETQ !GVAR1 A4) - (\DELREF A4) - (\ADDREF A1) - (\ADDREF A5) - (MTCHECK (EQ (\REFCNT A1) - 3) - (EQ (\REFCNT A2) - 4) - (EQ (\REFCNT A3) - 2) - (EQ (\REFCNT A4) - 1) - (EQ (\REFCNT A5) - 2)) - (\DELREF A1) - (\DELREF A1) - (\DELREF A2) - (\DELREF A2) - (\DELREF A2) - (\DELREF A3) - (\DELREF A5) - (SETQ.NOREF !GVAR1 NIL) - (SETQ.NOREF !GVAR2 NIL))))) -) - - - -(* "Test of garbage collector") - -(DEFINEQ - -(MINILOGOUT - (LAMBDA NIL (* bvm: "10-OCT-81 17:22") - - (* * This one works for hacking in the init.sysout) - - - (\STOPDISPLAY) - (LOGOUT0) - (\STARTDISPLAY) - (\DEVICEEVENT (QUOTE AFTERLOGOUT)))) -) - - - -(* "File MACROTESTAUX contains freevar and numeric tests") - -(DEFINEQ - -(!CHARTEST - [LAMBDA NIL (* edited: - "18-Mar-86 20:47") - (!STRPOSTEST) - (!CHARFILETEST]) - -(!STRPOSTEST - [LAMBDA NIL (* edited: - "18-Mar-86 18:53") - (if [NOT (AND (EQ 4 (STRPOSL (QUOTE (A B)) - "LKDA")) - (NULL (STRPOSL (QUOTE (A B)) - "LKD˙&s˙")) - (EQ 2 (STRPOSL (QUOTE (˙&s˙ A)) - "B˙&s˙AASD;FKJ")) - (EQ 2 (STRPOSL (QUOTE (˙&s˙)) - "B˙&s˙AASD;FKJ"] - then (HELP]) - -(!CHARFILETEST - [LAMBDA NIL (* edited: - "18-Mar-86 20:56") - (LET ((OUT (OPENSTREAM (QUOTE {CORE}FOO) - (QUOTE OUTPUT))) - (PICODE (CHARCODE GREEK,PI))) - (PRIN1 (QUOTE A) - OUT) - (PRIN1 (CHARACTER PICODE) - OUT) - (TERPRI OUT) - (PRIN1 (CHARACTER PICODE) - OUT) - (TAB 3 NIL OUT) - (PRIN1 (CHARACTER PICODE) - OUT) - (CLOSEF OUT) - (SETQ IN (OPENSTREAM (QUOTE {CORE}FOO) - (QUOTE INPUT))) - (for C in (BQUOTE (A ˙&s˙ (\, (CHARACTER (CHARCODE EOL))) - ˙&s˙ - (\, (CHARACTER (CHARCODE SPACE))) - (\, (CHARACTER (CHARCODE SPACE))) - ˙&s˙)) do (if (NEQ C (READC IN)) - then (HELP))) - (CLOSEF IN) - (DELFILE (QUOTE {CORE}FOO]) -) -(DECLARE: DONTEVAL@LOAD DONTEVAL@COMPILE DOCOPY -(FILESLOAD MACROTESTAUX) -) -(PUTPROPS MACROTEST COPYRIGHT ("Xerox Corporation" 3675Q 3676Q 3677Q 3700Q 3701Q 3702Q)) -(DECLARE: DONTCOPY - (FILEMAP (NIL (7540Q 10734Q (!DIAGNOSE 7552Q . 10176Q) (!DIAGNOSELP 10200Q . 10732Q)) (11132Q 14363Q ( -!CKEQ 11144Q . 11701Q) (!CKFEQ 11703Q . 12352Q) (!CKFUZZYEQ 12354Q . 13761Q) (!MRAID 13763Q . 14361Q)) - (14416Q 24333Q (!CONSTEST 14430Q . 22545Q) (!COPY 22547Q . 23104Q) (!SMASH 23106Q . 23551Q) ( -!APPENDTEST 23553Q . 24331Q)) (24334Q 35631Q (!INTERPTEST 24346Q . 31567Q) (!CHECKARGS 31571Q . 35013Q -) (!CHECKLSTARARG 35015Q . 35323Q) (!CHECKLSTARSETARG 35325Q . 35627Q)) (35675Q 120247Q (!GCTEST -35707Q . 36126Q) (!GCTEST1 36130Q . 41052Q) (!GCTEST2 41054Q . 42047Q) (!GCTESTSETF 42051Q . 71473Q) ( -!GCTESTSETG 71475Q . 120245Q)) (120320Q 120772Q (MINILOGOUT 120332Q . 120770Q)) (121076Q 125074Q ( -!CHARTEST 121110Q . 121466Q) (!STRPOSTEST 121470Q . 122653Q) (!CHARFILETEST 122655Q . 125072Q))))) -STOP diff --git a/internal/MACROTEST.LCOM b/internal/MACROTEST.LCOM deleted file mode 100644 index a9fab59ac4f0469fed27ad9f24a70880d0e2d890..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33905 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 F{$GOu8S(%C diff --git a/internal/MACROTESTAUX b/internal/MACROTESTAUX deleted file mode 100644 index af5927e0..00000000 --- a/internal/MACROTESTAUX +++ /dev/null @@ -1,3359 +0,0 @@ -(FILECREATED " 7-Jul-85 12:26:39" {ERIS}LIBRARY>MACROTESTAUX.;2 247232Q - - changes to: (FNS !MIXNUMTEST) - - previous date: " 3-Dec-84 19:19:33" {ERIS}LIBRARY>MACROTESTAUX.;1) - - -(* Copyright (c) 1984, 1985 by Xerox Corporation. All rights reserved.) - -(PRETTYCOMPRINT MACROTESTAUXCOMS) - -(RPAQQ MACROTESTAUXCOMS [(E (RADIX 10Q)) - [DECLARE: EVAL@COMPILE DONTCOPY (P (LOADCOMP (QUOTE MACROTEST))) - (DECLARE: DONTEVAL@LOAD (P (RESETSAVE OPTIMIZATIONSOFF T] - (COMS (* "Test out of free variables") - (FNS !FVARTEST PUSH.TEST CALLS.FIRSTARGTEST CALLS.LASTARGTEST CALLS.TOOFEWARGS - FVAR.FREE FVAR.TEST FVAR.TEST2 FVAR.TEST3 FN.FIRSTARG.FVARS - FN.FIRSTARG.PVARS.FVARS FN.LASTARG.FVARS FN.LASTARG.FVARS.PVARS FVAR.TESTN - FN.FREE.SKIPPVARS FN.FREEPVAR FN.FVAR3 FN.FREEARG FN.FR1 FN.FR2 FN.FR3 FAULTTEST) - (VARS (F0 0) - (F1 1) - (F2 2) - (F3 3) - (F4 4) - (F5 5) - (F6 6) - (F7 7) - (F8 10Q))) - (* "Test out of numeric capabilities") - (FNS !NUMBERTEST !NUMTEST1 !NUMTEST2 !NUMTEST3 !NUMTEST4 !NUMTEST5 !NUMTEST6 !RANDNUMTEST - !RANDNUMTEST1 !RANDNUMTEST2 !RANDNUMTEST3 !RANDNUMTEST4 !FNUMTEST !FNUMTEST1 !FNUMTEST2 - !FNUMTEST3 !FNUMTEST4 !FNUMTEST5 !MIXNUMTEST) - (* "Compiler error may prevent some of the above functions from getting compiled") - (DECLARE: DONTEVAL@LOAD DONTEVAL@COMPILE DOCOPY (P (MAPC (OR (FILEFNSLST (QUOTE MACROTESTAUX)) - (QUOTE (PUSH.TEST))) - (FUNCTION (LAMBDA - (X) - (MOVD? (QUOTE NILL) - X]) -(DECLARE: EVAL@COMPILE DONTCOPY -(LOADCOMP (QUOTE MACROTEST)) - -(DECLARE: DONTEVAL@LOAD -(RESETSAVE OPTIMIZATIONSOFF T) -) -) - - - -(* "Test out of free variables") - -(DEFINEQ - -(!FVARTEST - (LAMBDA NIL (* JonL " 1-Jun-84 18:19") - (PUSH.TEST) - (CALLS.FIRSTARGTEST) - (CALLS.LASTARGTEST) - (CALLS.TOOFEWARGS) - (FVAR.FREE) - (FVAR.TEST) - (FVAR.TEST2) - (FVAR.TEST3))) - -(PUSH.TEST - (LAMBDA (I0 I1 I2 I3 I4) (* JonL " 1-Jun-84 19:54") - (PROG (P0 P1 P2 P3 P4 P5 P6 P7 P8) - (PROGN (MTCHECKSTK (COND - ((NULL F0) - F0))) - (MTCHECKSTK (COND - ((NULL F1) - F1))) - (MTCHECKSTK (COND - ((NULL F2) - F2))) - (MTCHECKSTK (COND - ((NULL F3) - F3))) - (MTCHECKSTK (COND - ((NULL F4) - F4))) - (MTCHECKSTK (COND - ((NULL F5) - F5))) - (MTCHECKSTK (COND - ((NULL F6) - F6))) - (MTCHECKSTK (COND - ((NULL F7) - F7))) - (MTCHECKSTK (COND - ((NULL F8) - F8)))) - (PROGN (MTCHECKSTK (COND - ((NULL P0) - P0))) - (MTCHECKSTK (COND - ((NULL P1) - P1))) - (MTCHECKSTK (COND - ((NULL P7) - P7))) - (MTCHECKSTK (COND - ((NULL P8) - P8))))))) - -(CALLS.FIRSTARGTEST - (LAMBDA NIL (* JonL " 1-Jun-84 18:19") - (MTCHECK (EQ (FN.FIRSTARG.FVARS 1 2 3) - 1) - (EQ (FN.FIRSTARG.PVARS.FVARS 1 2 3) - 1)))) - -(CALLS.LASTARGTEST - (LAMBDA NIL (* JonL " 1-Jun-84 18:19") - (MTCHECK (EQ (FN.LASTARG.FVARS 1 2 3 4 5 6 7 10Q 11Q 12Q 13Q 14Q 15Q 16Q 17Q) - 17Q)) - (MTCHECK (EQ (FN.LASTARG.FVARS.PVARS 1 2 3 4 5 6 7 10Q 11Q 12Q 13Q 14Q 15Q 16Q 17Q) - 17Q)))) - -(CALLS.TOOFEWARGS - (LAMBDA NIL (* JonL " 1-Jun-84 18:19") - (MTCHECK (EQ (FN.FIRSTARG.PVARS.FVARS 1 2) - 1) - (EQ (FN.FIRSTARG.PVARS.FVARS) - NIL) - (EQ (FN.LASTARG.FVARS 1 2 3 4 5 6 7 10Q 11Q 12Q 13Q 14Q 15Q 16Q) - NIL)))) - -(FVAR.FREE - (LAMBDA NIL (* JonL " 1-Jun-84 18:19") - (PROGN (SETQ F0 144Q) - (SETQ F1 145Q) - (SETQ F2 146Q) - (SETQ F3 147Q) - (SETQ F4 150Q) - (SETQ F5 151Q) - (SETQ F6 152Q) - (SETQ F7 153Q) - (SETQ F8 154Q) - (MTCHECK (EQ F0 144Q) - (EQ F1 145Q) - (EQ F2 146Q) - (EQ F3 147Q) - (EQ F4 150Q) - (EQ F5 151Q) - (EQ F6 152Q) - (EQ F7 153Q) - (EQ F8 154Q)) - (SETQ F0 0) - (SETQ F1 1) - (SETQ F2 2) - (SETQ F3 3) - (SETQ F4 4) - (SETQ F5 5) - (SETQ F6 6) - (SETQ F7 7) - (SETQ F8 10Q)))) - -(FVAR.TEST - (LAMBDA (FLG) (* JonL " 1-Jun-84 18:19") - (PROG ((FREE.VAR.FLAG (QUOTE FREE.VALUE)) - (FREE.VAR (QUOTE GARBAGE))) - (DECLARE (SPECVARS . T)) - (FN.FR1) - (MTCHECK (NULL FREE.VAR.FLAG)) - (MTCHECK (EQ FREE.VAR (QUOTE FREE.VALUE)))) - (PROG ((FREE.VAR.FLAG (QUOTE FREE.VALUE))) - (DECLARE (SPECVARS . T)) - (FN.FR1) - (MTCHECK (NULL FREE.VAR.FLAG)) - (MTCHECK (EQ FREE.VAR (QUOTE FREE.VALUE)))))) - -(FVAR.TEST2 - (LAMBDA NIL (* lmm "31-JUL-81 15:58") - (PROG ((FVAR1 1) - (FVAR2 2) - (FVAR3 3)) - (FVAR.TEST T)))) - -(FVAR.TEST3 - (LAMBDA NIL (* lmm " 3-JAN-80 01:46") - (FVAR.TESTN 1 2 3))) - -(FN.FIRSTARG.FVARS - (LAMBDA (X Y Z) (* JonL " 1-Jun-84 18:32") - (COND - (NIL FREE.1) - (NIL FREE.2) - (NIL FREE.3) - (T X)))) - -(FN.FIRSTARG.PVARS.FVARS - (LAMBDA (X Y Z) (* JonL " 1-Jun-84 18:33") - (PROG (P D Q) - (RETURN (COND - (P FREE.1) - (P FREE.2) - (P FREE.3) - (T X)))))) - -(FN.LASTARG.FVARS - (LAMBDA (A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15) - (* JonL " 1-Jun-84 18:34") - (COND - (NIL FREE.1) - (NIL FREE.2) - (NIL FREE.3) - (T A15)))) - -(FN.LASTARG.FVARS.PVARS - (LAMBDA (A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15) - (* JonL " 1-Jun-84 18:35") - (PROG (P1 P2 P3) - (RETURN (COND - (NIL FREE.1) - (NIL FREE.2) - (NIL FREE.3) - (T A15)))))) - -(FVAR.TESTN - (LAMBDA (FVAR1 FVAR2 FVAR3) (* lmm " 3-JAN-80 01:46") - (FVAR.TEST T))) - -(FN.FREE.SKIPPVARS - (LAMBDA NIL (* bvm: "21-OCT-83 12:38") - (PROG (FVAR1 FVAR2 FVAR3) - ((OPCODES NOP))) - (FN.FVAR3))) - -(FN.FREEPVAR - (LAMBDA NIL (* bvm: "21-OCT-83 12:29") - (PROG (FVAR3) - (SETQ FVAR3 (QUOTE FREEPVAR.VALUE)) - (RETURN (FN.FVAR3))))) - -(FN.FVAR3 - (LAMBDA NIL (* bvm: "21-OCT-83 12:29") - FVAR3)) - -(FN.FREEARG - (LAMBDA (FVAR3) (* lmm " 3-JAN-80 01:34") - (FN.FVAR3))) - -(FN.FR1 - (LAMBDA NIL (* JonL " 1-Jun-84 18:19") - (FN.FR2) - (MTCHECK (EQ FREE.VAR (QUOTE FREE.VALUE))))) - -(FN.FR2 - (LAMBDA NIL (* JonL " 1-Jun-84 18:19") - (FN.FR3) - (MTCHECK (EQ FREE.VAR (QUOTE FREE.VALUE))))) - -(FN.FR3 - (LAMBDA NIL (* JonL " 1-Jun-84 18:19") - (COND - (FREE.VAR.FLAG (SETQ FREE.VAR FREE.VAR.FLAG) - (SETQ FREE.VAR.FLAG NIL)) - (T (MTCHECK (EQ FREE.VAR (QUOTE FREE.VALUE))))))) - -(FAULTTEST - (LAMBDA NIL (* JonL " 1-Jun-84 18:19") - (SETQ FAULTFVAR 144Q) - (MTCHECK (EQ 144Q (PROGN (\RELEASEWORKINGSET) - FAULTFVAR))))) -) - -(RPAQQ F0 0) - -(RPAQQ F1 1) - -(RPAQQ F2 2) - -(RPAQQ F3 3) - -(RPAQQ F4 4) - -(RPAQQ F5 5) - -(RPAQQ F6 6) - -(RPAQQ F7 7) - -(RPAQQ F8 10Q) - - - -(* "Test out of numeric capabilities") - -(DEFINEQ - -(!NUMBERTEST - (LAMBDA NIL (* lmm "21-OCT-81 15:50") - (!NUMTEST1) - (!NUMTEST2) - (!NUMTEST3) - (!NUMTEST4) - (!NUMTEST5) - (!NUMTEST6))) - -(!NUMTEST1 - (LAMBDA NIL (* bvm: " 8-MAR-82 22:59") - (MTCHECKSTK (CKEQ (IGREATERP 0 0) - NIL) - (CKEQ (IPLUS 0 0) - 0) - (CKEQ (IDIFFERENCE 0 0) - 0) - (CKEQ (LOGOR 0 0) - 0) - (CKEQ (LOGAND 0 0) - 0) - (CKEQ (LOGXOR 0 0) - 0) - (CKEQ (IGREATERP 0 1) - NIL) - (CKEQ (IPLUS 0 1) - 1) - (CKEQ (IDIFFERENCE 0 1) - -1) - (CKEQ (LOGOR 0 1) - 1) - (CKEQ (LOGAND 0 1) - 0) - (CKEQ (LOGXOR 0 1) - 1) - (CKEQ (IGREATERP 0 -1) - T) - (CKEQ (IPLUS 0 -1) - -1) - (CKEQ (IDIFFERENCE 0 -1) - 1) - (CKEQ (LOGOR 0 -1) - -1) - (CKEQ (LOGAND 0 -1) - 0) - (CKEQ (LOGXOR 0 -1) - -1) - (CKEQ (IGREATERP 0 2) - NIL) - (CKEQ (IPLUS 0 2) - 2) - (CKEQ (IDIFFERENCE 0 2) - -2) - (CKEQ (LOGOR 0 2) - 2) - (CKEQ (LOGAND 0 2) - 0) - (CKEQ (LOGXOR 0 2) - 2) - (CKEQ (IGREATERP 0 -2) - T) - (CKEQ (IPLUS 0 -2) - -2) - (CKEQ (IDIFFERENCE 0 -2) - 2) - (CKEQ (LOGOR 0 -2) - -2) - (CKEQ (LOGAND 0 -2) - 0) - (CKEQ (LOGXOR 0 -2) - -2) - (CKEQ (IGREATERP 0 177777Q) - NIL) - (CKEQ (IPLUS 0 177777Q) - 177777Q) - (CKEQ (IDIFFERENCE 0 177777Q) - -177777Q) - (CKEQ (LOGOR 0 177777Q) - 177777Q) - (CKEQ (LOGAND 0 177777Q) - 0) - (CKEQ (LOGXOR 0 177777Q) - 177777Q) - (CKEQ (IGREATERP 0 -200000Q) - T) - (CKEQ (IPLUS 0 -200000Q) - -200000Q) - (CKEQ (IDIFFERENCE 0 -200000Q) - 200000Q) - (CKEQ (LOGOR 0 -200000Q) - -200000Q) - (CKEQ (LOGAND 0 -200000Q) - 0) - (CKEQ (LOGXOR 0 -200000Q) - -200000Q) - (CKEQ (IGREATERP 0 177776Q) - NIL) - (CKEQ (IPLUS 0 177776Q) - 177776Q) - (CKEQ (IDIFFERENCE 0 177776Q) - -177776Q) - (CKEQ (LOGOR 0 177776Q) - 177776Q) - (CKEQ (LOGAND 0 177776Q) - 0) - (CKEQ (LOGXOR 0 177776Q) - 177776Q) - (CKEQ (IGREATERP 0 -200001Q) - T) - (CKEQ (IPLUS 0 -200001Q) - -200001Q) - (CKEQ (IDIFFERENCE 0 -200001Q) - 200001Q) - (CKEQ (LOGOR 0 -200001Q) - -200001Q) - (CKEQ (LOGAND 0 -200001Q) - 0) - (CKEQ (LOGXOR 0 -200001Q) - -200001Q) - (CKEQ (IGREATERP 1 0) - T) - (CKEQ (IPLUS 1 0) - 1) - (CKEQ (IDIFFERENCE 1 0) - 1) - (CKEQ (LOGOR 1 0) - 1) - (CKEQ (LOGAND 1 0) - 0) - (CKEQ (LOGXOR 1 0) - 1) - (CKEQ (IGREATERP 1 1) - NIL) - (CKEQ (IPLUS 1 1) - 2) - (CKEQ (IDIFFERENCE 1 1) - 0) - (CKEQ (LOGOR 1 1) - 1) - (CKEQ (LOGAND 1 1) - 1) - (CKEQ (LOGXOR 1 1) - 0) - (CKEQ (IGREATERP 1 -1) - T) - (CKEQ (IPLUS 1 -1) - 0) - (CKEQ (IDIFFERENCE 1 -1) - 2) - (CKEQ (LOGOR 1 -1) - -1) - (CKEQ (LOGAND 1 -1) - 1) - (CKEQ (LOGXOR 1 -1) - -2) - (CKEQ (IGREATERP 1 2) - NIL) - (CKEQ (IPLUS 1 2) - 3) - (CKEQ (IDIFFERENCE 1 2) - -1) - (CKEQ (LOGOR 1 2) - 3) - (CKEQ (LOGAND 1 2) - 0) - (CKEQ (LOGXOR 1 2) - 3) - (CKEQ (IGREATERP 1 -2) - T) - (CKEQ (IPLUS 1 -2) - -1) - (CKEQ (IDIFFERENCE 1 -2) - 3) - (CKEQ (LOGOR 1 -2) - -1) - (CKEQ (LOGAND 1 -2) - 0) - (CKEQ (LOGXOR 1 -2) - -1) - (CKEQ (IGREATERP 1 177777Q) - NIL) - (CKEQ (IPLUS 1 177777Q) - 200000Q) - (CKEQ (IDIFFERENCE 1 177777Q) - -177776Q) - (CKEQ (LOGOR 1 177777Q) - 177777Q) - (CKEQ (LOGAND 1 177777Q) - 1) - (CKEQ (LOGXOR 1 177777Q) - 177776Q) - (CKEQ (IGREATERP 1 -200000Q) - T) - (CKEQ (IPLUS 1 -200000Q) - -177777Q) - (CKEQ (IDIFFERENCE 1 -200000Q) - 200001Q) - (CKEQ (LOGOR 1 -200000Q) - -177777Q) - (CKEQ (LOGAND 1 -200000Q) - 0) - (CKEQ (LOGXOR 1 -200000Q) - -177777Q) - (CKEQ (IGREATERP 1 177776Q) - NIL) - (CKEQ (IPLUS 1 177776Q) - 177777Q) - (CKEQ (IDIFFERENCE 1 177776Q) - -177775Q)))) - -(!NUMTEST2 - (LAMBDA NIL (* bvm: " 8-MAR-82 22:59") - (MTCHECKSTK (CKEQ (LOGOR 1 177776Q) - 177777Q) - (CKEQ (LOGAND 1 177776Q) - 0) - (CKEQ (LOGXOR 1 177776Q) - 177777Q) - (CKEQ (IGREATERP 1 -200001Q) - T) - (CKEQ (IPLUS 1 -200001Q) - -200000Q) - (CKEQ (IDIFFERENCE 1 -200001Q) - 200002Q) - (CKEQ (LOGOR 1 -200001Q) - -200001Q) - (CKEQ (LOGAND 1 -200001Q) - 1) - (CKEQ (LOGXOR 1 -200001Q) - -200002Q) - (CKEQ (IGREATERP -1 0) - NIL) - (CKEQ (IPLUS -1 0) - -1) - (CKEQ (IDIFFERENCE -1 0) - -1) - (CKEQ (LOGOR -1 0) - -1) - (CKEQ (LOGAND -1 0) - 0) - (CKEQ (LOGXOR -1 0) - -1) - (CKEQ (IGREATERP -1 1) - NIL) - (CKEQ (IPLUS -1 1) - 0) - (CKEQ (IDIFFERENCE -1 1) - -2) - (CKEQ (LOGOR -1 1) - -1) - (CKEQ (LOGAND -1 1) - 1) - (CKEQ (LOGXOR -1 1) - -2) - (CKEQ (IGREATERP -1 -1) - NIL) - (CKEQ (IPLUS -1 -1) - -2) - (CKEQ (IDIFFERENCE -1 -1) - 0) - (CKEQ (LOGOR -1 -1) - -1) - (CKEQ (LOGAND -1 -1) - -1) - (CKEQ (LOGXOR -1 -1) - 0) - (CKEQ (IGREATERP -1 2) - NIL) - (CKEQ (IPLUS -1 2) - 1) - (CKEQ (IDIFFERENCE -1 2) - -3) - (CKEQ (LOGOR -1 2) - -1) - (CKEQ (LOGAND -1 2) - 2) - (CKEQ (LOGXOR -1 2) - -3) - (CKEQ (IGREATERP -1 -2) - T) - (CKEQ (IPLUS -1 -2) - -3) - (CKEQ (IDIFFERENCE -1 -2) - 1) - (CKEQ (LOGOR -1 -2) - -1) - (CKEQ (LOGAND -1 -2) - -2) - (CKEQ (LOGXOR -1 -2) - 1) - (CKEQ (IGREATERP -1 177777Q) - NIL) - (CKEQ (IPLUS -1 177777Q) - 177776Q) - (CKEQ (IDIFFERENCE -1 177777Q) - -200000Q) - (CKEQ (LOGOR -1 177777Q) - -1) - (CKEQ (LOGAND -1 177777Q) - 177777Q) - (CKEQ (LOGXOR -1 177777Q) - -200000Q) - (CKEQ (IGREATERP -1 -200000Q) - T) - (CKEQ (IPLUS -1 -200000Q) - -200001Q) - (CKEQ (IDIFFERENCE -1 -200000Q) - 177777Q) - (CKEQ (LOGOR -1 -200000Q) - -1) - (CKEQ (LOGAND -1 -200000Q) - -200000Q) - (CKEQ (LOGXOR -1 -200000Q) - 177777Q) - (CKEQ (IGREATERP -1 177776Q) - NIL) - (CKEQ (IPLUS -1 177776Q) - 177775Q) - (CKEQ (IDIFFERENCE -1 177776Q) - -177777Q) - (CKEQ (LOGOR -1 177776Q) - -1) - (CKEQ (LOGAND -1 177776Q) - 177776Q) - (CKEQ (LOGXOR -1 177776Q) - -177777Q) - (CKEQ (IGREATERP -1 -200001Q) - T) - (CKEQ (IPLUS -1 -200001Q) - -200002Q) - (CKEQ (IDIFFERENCE -1 -200001Q) - 200000Q) - (CKEQ (LOGOR -1 -200001Q) - -1) - (CKEQ (LOGAND -1 -200001Q) - -200001Q) - (CKEQ (LOGXOR -1 -200001Q) - 200000Q) - (CKEQ (IGREATERP 2 0) - T) - (CKEQ (IPLUS 2 0) - 2) - (CKEQ (IDIFFERENCE 2 0) - 2) - (CKEQ (LOGOR 2 0) - 2) - (CKEQ (LOGAND 2 0) - 0) - (CKEQ (LOGXOR 2 0) - 2) - (CKEQ (IGREATERP 2 1) - T) - (CKEQ (IPLUS 2 1) - 3) - (CKEQ (IDIFFERENCE 2 1) - 1) - (CKEQ (LOGOR 2 1) - 3) - (CKEQ (LOGAND 2 1) - 0) - (CKEQ (LOGXOR 2 1) - 3) - (CKEQ (IGREATERP 2 -1) - T) - (CKEQ (IPLUS 2 -1) - 1) - (CKEQ (IDIFFERENCE 2 -1) - 3) - (CKEQ (LOGOR 2 -1) - -1) - (CKEQ (LOGAND 2 -1) - 2) - (CKEQ (LOGXOR 2 -1) - -3) - (CKEQ (IGREATERP 2 2) - NIL) - (CKEQ (IPLUS 2 2) - 4) - (CKEQ (IDIFFERENCE 2 2) - 0) - (CKEQ (LOGOR 2 2) - 2) - (CKEQ (LOGAND 2 2) - 2) - (CKEQ (LOGXOR 2 2) - 0) - (CKEQ (IGREATERP 2 -2) - T) - (CKEQ (IPLUS 2 -2) - 0) - (CKEQ (IDIFFERENCE 2 -2) - 4) - (CKEQ (LOGOR 2 -2) - -2) - (CKEQ (LOGAND 2 -2) - 2) - (CKEQ (LOGXOR 2 -2) - -4) - (CKEQ (IGREATERP 2 177777Q) - NIL) - (CKEQ (IPLUS 2 177777Q) - 200001Q) - (CKEQ (IDIFFERENCE 2 177777Q) - -177775Q) - (CKEQ (LOGOR 2 177777Q) - 177777Q) - (CKEQ (LOGAND 2 177777Q) - 2) - (CKEQ (LOGXOR 2 177777Q) - 177775Q)))) - -(!NUMTEST3 - (LAMBDA NIL (* bvm: " 8-MAR-82 23:00") - (MTCHECKSTK (CKEQ (IGREATERP 2 -200000Q) - T) - (CKEQ (IPLUS 2 -200000Q) - -177776Q) - (CKEQ (IDIFFERENCE 2 -200000Q) - 200002Q) - (CKEQ (LOGOR 2 -200000Q) - -177776Q) - (CKEQ (LOGAND 2 -200000Q) - 0) - (CKEQ (LOGXOR 2 -200000Q) - -177776Q) - (CKEQ (IGREATERP 2 177776Q) - NIL) - (CKEQ (IPLUS 2 177776Q) - 200000Q) - (CKEQ (IDIFFERENCE 2 177776Q) - -177774Q) - (CKEQ (LOGOR 2 177776Q) - 177776Q) - (CKEQ (LOGAND 2 177776Q) - 2) - (CKEQ (LOGXOR 2 177776Q) - 177774Q) - (CKEQ (IGREATERP 2 -200001Q) - T) - (CKEQ (IPLUS 2 -200001Q) - -177777Q) - (CKEQ (IDIFFERENCE 2 -200001Q) - 200003Q) - (CKEQ (LOGOR 2 -200001Q) - -200001Q) - (CKEQ (LOGAND 2 -200001Q) - 2) - (CKEQ (LOGXOR 2 -200001Q) - -200003Q) - (CKEQ (IGREATERP -2 0) - NIL) - (CKEQ (IPLUS -2 0) - -2) - (CKEQ (IDIFFERENCE -2 0) - -2) - (CKEQ (LOGOR -2 0) - -2) - (CKEQ (LOGAND -2 0) - 0) - (CKEQ (LOGXOR -2 0) - -2) - (CKEQ (IGREATERP -2 1) - NIL) - (CKEQ (IPLUS -2 1) - -1) - (CKEQ (IDIFFERENCE -2 1) - -3) - (CKEQ (LOGOR -2 1) - -1) - (CKEQ (LOGAND -2 1) - 0) - (CKEQ (LOGXOR -2 1) - -1) - (CKEQ (IGREATERP -2 -1) - NIL) - (CKEQ (IPLUS -2 -1) - -3) - (CKEQ (IDIFFERENCE -2 -1) - -1) - (CKEQ (LOGOR -2 -1) - -1) - (CKEQ (LOGAND -2 -1) - -2) - (CKEQ (LOGXOR -2 -1) - 1) - (CKEQ (IGREATERP -2 2) - NIL) - (CKEQ (IPLUS -2 2) - 0) - (CKEQ (IDIFFERENCE -2 2) - -4) - (CKEQ (LOGOR -2 2) - -2) - (CKEQ (LOGAND -2 2) - 2) - (CKEQ (LOGXOR -2 2) - -4) - (CKEQ (IGREATERP -2 -2) - NIL) - (CKEQ (IPLUS -2 -2) - -4) - (CKEQ (IDIFFERENCE -2 -2) - 0) - (CKEQ (LOGOR -2 -2) - -2) - (CKEQ (LOGAND -2 -2) - -2) - (CKEQ (LOGXOR -2 -2) - 0) - (CKEQ (IGREATERP -2 177777Q) - NIL) - (CKEQ (IPLUS -2 177777Q) - 177775Q) - (CKEQ (IDIFFERENCE -2 177777Q) - -200001Q) - (CKEQ (LOGOR -2 177777Q) - -1) - (CKEQ (LOGAND -2 177777Q) - 177776Q) - (CKEQ (LOGXOR -2 177777Q) - -177777Q) - (CKEQ (IGREATERP -2 -200000Q) - T) - (CKEQ (IPLUS -2 -200000Q) - -200002Q) - (CKEQ (IDIFFERENCE -2 -200000Q) - 177776Q) - (CKEQ (LOGOR -2 -200000Q) - -2) - (CKEQ (LOGAND -2 -200000Q) - -200000Q) - (CKEQ (LOGXOR -2 -200000Q) - 177776Q) - (CKEQ (IGREATERP -2 177776Q) - NIL) - (CKEQ (IPLUS -2 177776Q) - 177774Q) - (CKEQ (IDIFFERENCE -2 177776Q) - -200000Q) - (CKEQ (LOGOR -2 177776Q) - -2) - (CKEQ (LOGAND -2 177776Q) - 177776Q) - (CKEQ (LOGXOR -2 177776Q) - -200000Q) - (CKEQ (IGREATERP -2 -200001Q) - T) - (CKEQ (IPLUS -2 -200001Q) - -200003Q) - (CKEQ (IDIFFERENCE -2 -200001Q) - 177777Q) - (CKEQ (LOGOR -2 -200001Q) - -1) - (CKEQ (LOGAND -2 -200001Q) - -200002Q) - (CKEQ (LOGXOR -2 -200001Q) - 200001Q) - (CKEQ (IGREATERP 177777Q 0) - T) - (CKEQ (IPLUS 177777Q 0) - 177777Q) - (CKEQ (IDIFFERENCE 177777Q 0) - 177777Q) - (CKEQ (LOGOR 177777Q 0) - 177777Q) - (CKEQ (LOGAND 177777Q 0) - 0) - (CKEQ (LOGXOR 177777Q 0) - 177777Q) - (CKEQ (IGREATERP 177777Q 1) - T) - (CKEQ (IPLUS 177777Q 1) - 200000Q) - (CKEQ (IDIFFERENCE 177777Q 1) - 177776Q) - (CKEQ (LOGOR 177777Q 1) - 177777Q) - (CKEQ (LOGAND 177777Q 1) - 1) - (CKEQ (LOGXOR 177777Q 1) - 177776Q) - (CKEQ (IGREATERP 177777Q -1) - T) - (CKEQ (IPLUS 177777Q -1) - 177776Q) - (CKEQ (IDIFFERENCE 177777Q -1) - 200000Q) - (CKEQ (LOGOR 177777Q -1) - -1) - (CKEQ (LOGAND 177777Q -1) - 177777Q) - (CKEQ (LOGXOR 177777Q -1) - -200000Q) - (CKEQ (IGREATERP 177777Q 2) - T) - (CKEQ (IPLUS 177777Q 2) - 200001Q) - (CKEQ (IDIFFERENCE 177777Q 2) - 177775Q) - (CKEQ (LOGOR 177777Q 2) - 177777Q) - (CKEQ (LOGAND 177777Q 2) - 2) - (CKEQ (LOGXOR 177777Q 2) - 177775Q) - (CKEQ (IGREATERP 177777Q -2) - T) - (CKEQ (IPLUS 177777Q -2) - 177775Q) - (CKEQ (IDIFFERENCE 177777Q -2) - 200001Q) - (CKEQ (LOGOR 177777Q -2) - -1)))) - -(!NUMTEST4 - (LAMBDA NIL (* bvm: " 8-MAR-82 23:00") - (MTCHECKSTK (CKEQ (LOGAND 177777Q -2) - 177776Q) - (CKEQ (LOGXOR 177777Q -2) - -177777Q) - (CKEQ (IGREATERP 177777Q 177777Q) - NIL) - (CKEQ (IPLUS 177777Q 177777Q) - 377776Q) - (CKEQ (IDIFFERENCE 177777Q 177777Q) - 0) - (CKEQ (LOGOR 177777Q 177777Q) - 177777Q) - (CKEQ (LOGAND 177777Q 177777Q) - 177777Q) - (CKEQ (LOGXOR 177777Q 177777Q) - 0) - (CKEQ (IGREATERP 177777Q -200000Q) - T) - (CKEQ (IPLUS 177777Q -200000Q) - -1) - (CKEQ (IDIFFERENCE 177777Q -200000Q) - 377777Q) - (CKEQ (LOGOR 177777Q -200000Q) - -1) - (CKEQ (LOGAND 177777Q -200000Q) - 0) - (CKEQ (LOGXOR 177777Q -200000Q) - -1) - (CKEQ (IGREATERP 177777Q 177776Q) - T) - (CKEQ (IPLUS 177777Q 177776Q) - 377775Q) - (CKEQ (IDIFFERENCE 177777Q 177776Q) - 1) - (CKEQ (LOGOR 177777Q 177776Q) - 177777Q) - (CKEQ (LOGAND 177777Q 177776Q) - 177776Q) - (CKEQ (LOGXOR 177777Q 177776Q) - 1) - (CKEQ (IGREATERP 177777Q -200001Q) - T) - (CKEQ (IPLUS 177777Q -200001Q) - -2) - (CKEQ (IDIFFERENCE 177777Q -200001Q) - 400000Q) - (CKEQ (LOGOR 177777Q -200001Q) - -200001Q) - (CKEQ (LOGAND 177777Q -200001Q) - 177777Q) - (CKEQ (LOGXOR 177777Q -200001Q) - -400000Q) - (CKEQ (IGREATERP -200000Q 0) - NIL) - (CKEQ (IPLUS -200000Q 0) - -200000Q) - (CKEQ (IDIFFERENCE -200000Q 0) - -200000Q) - (CKEQ (LOGOR -200000Q 0) - -200000Q) - (CKEQ (LOGAND -200000Q 0) - 0) - (CKEQ (LOGXOR -200000Q 0) - -200000Q) - (CKEQ (IGREATERP -200000Q 1) - NIL) - (CKEQ (IPLUS -200000Q 1) - -177777Q) - (CKEQ (IDIFFERENCE -200000Q 1) - -200001Q) - (CKEQ (LOGOR -200000Q 1) - -177777Q) - (CKEQ (LOGAND -200000Q 1) - 0) - (CKEQ (LOGXOR -200000Q 1) - -177777Q) - (CKEQ (IGREATERP -200000Q -1) - NIL) - (CKEQ (IPLUS -200000Q -1) - -200001Q) - (CKEQ (IDIFFERENCE -200000Q -1) - -177777Q) - (CKEQ (LOGOR -200000Q -1) - -1) - (CKEQ (LOGAND -200000Q -1) - -200000Q) - (CKEQ (LOGXOR -200000Q -1) - 177777Q) - (CKEQ (IGREATERP -200000Q 2) - NIL) - (CKEQ (IPLUS -200000Q 2) - -177776Q) - (CKEQ (IDIFFERENCE -200000Q 2) - -200002Q) - (CKEQ (LOGOR -200000Q 2) - -177776Q) - (CKEQ (LOGAND -200000Q 2) - 0) - (CKEQ (LOGXOR -200000Q 2) - -177776Q) - (CKEQ (IGREATERP -200000Q -2) - NIL) - (CKEQ (IPLUS -200000Q -2) - -200002Q) - (CKEQ (IDIFFERENCE -200000Q -2) - -177776Q) - (CKEQ (LOGOR -200000Q -2) - -2) - (CKEQ (LOGAND -200000Q -2) - -200000Q) - (CKEQ (LOGXOR -200000Q -2) - 177776Q) - (CKEQ (IGREATERP -200000Q 177777Q) - NIL) - (CKEQ (IPLUS -200000Q 177777Q) - -1) - (CKEQ (IDIFFERENCE -200000Q 177777Q) - -377777Q) - (CKEQ (LOGOR -200000Q 177777Q) - -1) - (CKEQ (LOGAND -200000Q 177777Q) - 0) - (CKEQ (LOGXOR -200000Q 177777Q) - -1) - (CKEQ (IGREATERP -200000Q -200000Q) - NIL) - (CKEQ (IPLUS -200000Q -200000Q) - -400000Q) - (CKEQ (IDIFFERENCE -200000Q -200000Q) - 0) - (CKEQ (LOGOR -200000Q -200000Q) - -200000Q) - (CKEQ (LOGAND -200000Q -200000Q) - -200000Q) - (CKEQ (LOGXOR -200000Q -200000Q) - 0) - (CKEQ (IGREATERP -200000Q 177776Q) - NIL) - (CKEQ (IPLUS -200000Q 177776Q) - -2) - (CKEQ (IDIFFERENCE -200000Q 177776Q) - -377776Q) - (CKEQ (LOGOR -200000Q 177776Q) - -2) - (CKEQ (LOGAND -200000Q 177776Q) - 0) - (CKEQ (LOGXOR -200000Q 177776Q) - -2) - (CKEQ (IGREATERP -200000Q -200001Q) - T) - (CKEQ (IPLUS -200000Q -200001Q) - -400001Q) - (CKEQ (IDIFFERENCE -200000Q -200001Q) - 1) - (CKEQ (LOGOR -200000Q -200001Q) - -1) - (CKEQ (LOGAND -200000Q -200001Q) - -400000Q) - (CKEQ (LOGXOR -200000Q -200001Q) - 377777Q) - (CKEQ (IGREATERP 177776Q 0) - T) - (CKEQ (IPLUS 177776Q 0) - 177776Q) - (CKEQ (IDIFFERENCE 177776Q 0) - 177776Q) - (CKEQ (LOGOR 177776Q 0) - 177776Q) - (CKEQ (LOGAND 177776Q 0) - 0) - (CKEQ (LOGXOR 177776Q 0) - 177776Q) - (CKEQ (IGREATERP 177776Q 1) - T) - (CKEQ (IPLUS 177776Q 1) - 177777Q) - (CKEQ (IDIFFERENCE 177776Q 1) - 177775Q) - (CKEQ (LOGOR 177776Q 1) - 177777Q) - (CKEQ (LOGAND 177776Q 1) - 0) - (CKEQ (LOGXOR 177776Q 1) - 177777Q) - (CKEQ (IGREATERP 177776Q -1) - T) - (CKEQ (IPLUS 177776Q -1) - 177775Q) - (CKEQ (IDIFFERENCE 177776Q -1) - 177777Q) - (CKEQ (LOGOR 177776Q -1) - -1) - (CKEQ (LOGAND 177776Q -1) - 177776Q) - (CKEQ (LOGXOR 177776Q -1) - -177777Q) - (CKEQ (IGREATERP 177776Q 2) - T)))) - -(!NUMTEST5 - (LAMBDA NIL (* bvm: " 8-MAR-82 23:00") - (MTCHECKSTK (CKEQ (IPLUS 177776Q 2) - 200000Q) - (CKEQ (IDIFFERENCE 177776Q 2) - 177774Q) - (CKEQ (LOGOR 177776Q 2) - 177776Q) - (CKEQ (LOGAND 177776Q 2) - 2) - (CKEQ (LOGXOR 177776Q 2) - 177774Q) - (CKEQ (IGREATERP 177776Q -2) - T) - (CKEQ (IPLUS 177776Q -2) - 177774Q) - (CKEQ (IDIFFERENCE 177776Q -2) - 200000Q) - (CKEQ (LOGOR 177776Q -2) - -2) - (CKEQ (LOGAND 177776Q -2) - 177776Q) - (CKEQ (LOGXOR 177776Q -2) - -200000Q) - (CKEQ (IGREATERP 177776Q 177777Q) - NIL) - (CKEQ (IPLUS 177776Q 177777Q) - 377775Q) - (CKEQ (IDIFFERENCE 177776Q 177777Q) - -1) - (CKEQ (LOGOR 177776Q 177777Q) - 177777Q) - (CKEQ (LOGAND 177776Q 177777Q) - 177776Q) - (CKEQ (LOGXOR 177776Q 177777Q) - 1) - (CKEQ (IGREATERP 177776Q -200000Q) - T) - (CKEQ (IPLUS 177776Q -200000Q) - -2) - (CKEQ (IDIFFERENCE 177776Q -200000Q) - 377776Q) - (CKEQ (LOGOR 177776Q -200000Q) - -2) - (CKEQ (LOGAND 177776Q -200000Q) - 0) - (CKEQ (LOGXOR 177776Q -200000Q) - -2) - (CKEQ (IGREATERP 177776Q 177776Q) - NIL) - (CKEQ (IPLUS 177776Q 177776Q) - 377774Q) - (CKEQ (IDIFFERENCE 177776Q 177776Q) - 0) - (CKEQ (LOGOR 177776Q 177776Q) - 177776Q) - (CKEQ (LOGAND 177776Q 177776Q) - 177776Q) - (CKEQ (LOGXOR 177776Q 177776Q) - 0) - (CKEQ (IGREATERP 177776Q -200001Q) - T) - (CKEQ (IPLUS 177776Q -200001Q) - -3) - (CKEQ (IDIFFERENCE 177776Q -200001Q) - 377777Q) - (CKEQ (LOGOR 177776Q -200001Q) - -200001Q) - (CKEQ (LOGAND 177776Q -200001Q) - 177776Q) - (CKEQ (LOGXOR 177776Q -200001Q) - -377777Q) - (CKEQ (IGREATERP -200001Q 0) - NIL) - (CKEQ (IPLUS -200001Q 0) - -200001Q) - (CKEQ (IDIFFERENCE -200001Q 0) - -200001Q) - (CKEQ (LOGOR -200001Q 0) - -200001Q) - (CKEQ (LOGAND -200001Q 0) - 0) - (CKEQ (LOGXOR -200001Q 0) - -200001Q) - (CKEQ (IGREATERP -200001Q 1) - NIL) - (CKEQ (IPLUS -200001Q 1) - -200000Q) - (CKEQ (IDIFFERENCE -200001Q 1) - -200002Q) - (CKEQ (LOGOR -200001Q 1) - -200001Q) - (CKEQ (LOGAND -200001Q 1) - 1) - (CKEQ (LOGXOR -200001Q 1) - -200002Q) - (CKEQ (IGREATERP -200001Q -1) - NIL) - (CKEQ (IPLUS -200001Q -1) - -200002Q) - (CKEQ (IDIFFERENCE -200001Q -1) - -200000Q) - (CKEQ (LOGOR -200001Q -1) - -1) - (CKEQ (LOGAND -200001Q -1) - -200001Q) - (CKEQ (LOGXOR -200001Q -1) - 200000Q) - (CKEQ (IGREATERP -200001Q 2) - NIL) - (CKEQ (IPLUS -200001Q 2) - -177777Q) - (CKEQ (IDIFFERENCE -200001Q 2) - -200003Q) - (CKEQ (LOGOR -200001Q 2) - -200001Q) - (CKEQ (LOGAND -200001Q 2) - 2) - (CKEQ (LOGXOR -200001Q 2) - -200003Q) - (CKEQ (IGREATERP -200001Q -2) - NIL) - (CKEQ (IPLUS -200001Q -2) - -200003Q) - (CKEQ (IDIFFERENCE -200001Q -2) - -177777Q) - (CKEQ (LOGOR -200001Q -2) - -1) - (CKEQ (LOGAND -200001Q -2) - -200002Q) - (CKEQ (LOGXOR -200001Q -2) - 200001Q) - (CKEQ (IGREATERP -200001Q 177777Q) - NIL) - (CKEQ (IPLUS -200001Q 177777Q) - -2) - (CKEQ (IDIFFERENCE -200001Q 177777Q) - -400000Q) - (CKEQ (LOGOR -200001Q 177777Q) - -200001Q) - (CKEQ (LOGAND -200001Q 177777Q) - 177777Q) - (CKEQ (LOGXOR -200001Q 177777Q) - -400000Q) - (CKEQ (IGREATERP -200001Q -200000Q) - NIL) - (CKEQ (IPLUS -200001Q -200000Q) - -400001Q) - (CKEQ (IDIFFERENCE -200001Q -200000Q) - -1) - (CKEQ (LOGOR -200001Q -200000Q) - -1) - (CKEQ (LOGAND -200001Q -200000Q) - -400000Q) - (CKEQ (LOGXOR -200001Q -200000Q) - 377777Q) - (CKEQ (IGREATERP -200001Q 177776Q) - NIL) - (CKEQ (IPLUS -200001Q 177776Q) - -3) - (CKEQ (IDIFFERENCE -200001Q 177776Q) - -377777Q) - (CKEQ (LOGOR -200001Q 177776Q) - -200001Q) - (CKEQ (LOGAND -200001Q 177776Q) - 177776Q) - (CKEQ (LOGXOR -200001Q 177776Q) - -377777Q) - (CKEQ (IGREATERP -200001Q -200001Q) - NIL) - (CKEQ (IPLUS -200001Q -200001Q) - -400002Q) - (CKEQ (IDIFFERENCE -200001Q -200001Q) - 0) - (CKEQ (LOGOR -200001Q -200001Q) - -200001Q) - (CKEQ (LOGAND -200001Q -200001Q) - -200001Q) - (CKEQ (LOGXOR -200001Q -200001Q) - 0) - (CKEQ (LRSH 0 1) - 0) - (CKEQ (LLSH 0 1) - 0) - (CKEQ (LRSH 0 10Q) - 0) - (CKEQ (LLSH 0 10Q) - 0) - (CKEQ (LRSH 1 1) - 0) - (CKEQ (LLSH 1 1) - 2) - (CKEQ (LRSH 1 10Q) - 0) - (CKEQ (LLSH 1 10Q) - 400Q) - (CKEQ (LLSH -1 1) - -2) - (CKEQ (LLSH -1 10Q) - -400Q)))) - -(!NUMTEST6 - (LAMBDA NIL (* bvm: " 8-MAR-82 23:00") - (MTCHECKSTK (CKEQ (LRSH 2 1) - 1) - (CKEQ (LLSH 2 1) - 4) - (CKEQ (LRSH 2 10Q) - 0) - (CKEQ (LLSH 2 10Q) - 1000Q) - (CKEQ (LLSH -2 1) - -4) - (CKEQ (LLSH -2 10Q) - -1000Q) - (CKEQ (LRSH 177777Q 1) - 77777Q) - (CKEQ (LLSH 177777Q 1) - 377776Q) - (CKEQ (LRSH 177777Q 10Q) - 377Q) - (CKEQ (LLSH 177777Q 10Q) - 77777400Q) - (CKEQ (LLSH -200000Q 1) - -400000Q) - (CKEQ (LLSH -200000Q 10Q) - -100000000Q) - (CKEQ (LRSH 177776Q 1) - 77777Q) - (CKEQ (LLSH 177776Q 1) - 377774Q) - (CKEQ (LRSH 177776Q 10Q) - 377Q) - (CKEQ (LLSH 177776Q 10Q) - 77777000Q) - (CKEQ (LLSH -200001Q 1) - -400002Q) - (CKEQ (LLSH -200001Q 10Q) - -100000400Q) - (CKEQ (IQUOTIENT 0 1) - 0) - (CKEQ (IREMAINDER 0 1) - 0) - (CKEQ (ITIMES 0 1) - 0) - (CKEQ (IQUOTIENT 0 10Q) - 0) - (CKEQ (IREMAINDER 0 10Q) - 0) - (CKEQ (ITIMES 0 10Q) - 0) - (CKEQ (IQUOTIENT 1 1) - 1) - (CKEQ (IREMAINDER 1 1) - 0) - (CKEQ (ITIMES 1 1) - 1) - (CKEQ (IQUOTIENT 1 10Q) - 0) - (CKEQ (IREMAINDER 1 10Q) - 1) - (CKEQ (ITIMES 1 10Q) - 10Q) - (CKEQ (IQUOTIENT -1 1) - -1) - (CKEQ (IREMAINDER -1 1) - 0) - (CKEQ (ITIMES -1 1) - -1) - (CKEQ (IQUOTIENT -1 10Q) - 0) - (CKEQ (IREMAINDER -1 10Q) - -1) - (CKEQ (ITIMES -1 10Q) - -10Q) - (CKEQ (IQUOTIENT 2 1) - 2) - (CKEQ (IREMAINDER 2 1) - 0) - (CKEQ (ITIMES 2 1) - 2) - (CKEQ (IQUOTIENT 2 10Q) - 0) - (CKEQ (IREMAINDER 2 10Q) - 2) - (CKEQ (ITIMES 2 10Q) - 20Q) - (CKEQ (IQUOTIENT -2 1) - -2) - (CKEQ (IREMAINDER -2 1) - 0) - (CKEQ (ITIMES -2 1) - -2) - (CKEQ (IQUOTIENT -2 10Q) - 0) - (CKEQ (IREMAINDER -2 10Q) - -2) - (CKEQ (ITIMES -2 10Q) - -20Q) - (CKEQ (IQUOTIENT 177777Q 1) - 177777Q) - (CKEQ (IREMAINDER 177777Q 1) - 0) - (CKEQ (ITIMES 177777Q 1) - 177777Q) - (CKEQ (IQUOTIENT 177777Q 10Q) - 17777Q) - (CKEQ (IREMAINDER 177777Q 10Q) - 7) - (CKEQ (ITIMES 177777Q 10Q) - 1777770Q) - (CKEQ (IQUOTIENT -200000Q 1) - -200000Q) - (CKEQ (IREMAINDER -200000Q 1) - 0) - (CKEQ (ITIMES -200000Q 1) - -200000Q) - (CKEQ (IQUOTIENT -200000Q 10Q) - -20000Q) - (CKEQ (IREMAINDER -200000Q 10Q) - 0) - (CKEQ (ITIMES -200000Q 10Q) - -2000000Q) - (CKEQ (IQUOTIENT 177776Q 1) - 177776Q) - (CKEQ (IREMAINDER 177776Q 1) - 0) - (CKEQ (ITIMES 177776Q 1) - 177776Q) - (CKEQ (IQUOTIENT 177776Q 10Q) - 17777Q) - (CKEQ (IREMAINDER 177776Q 10Q) - 6) - (CKEQ (ITIMES 177776Q 10Q) - 1777760Q) - (CKEQ (IQUOTIENT -200001Q 1) - -200001Q) - (CKEQ (IREMAINDER -200001Q 1) - 0) - (CKEQ (ITIMES -200001Q 1) - -200001Q) - (CKEQ (IQUOTIENT -200001Q 10Q) - -20000Q) - (CKEQ (IREMAINDER -200001Q 10Q) - -1) - (CKEQ (ITIMES -200001Q 10Q) - -2000010Q) - (CKEQ (IQUOTIENT 3 1) - 3) - (CKEQ (IREMAINDER 3 1) - 0) - (CKEQ (ITIMES 3 1) - 3) - (CKEQ (IQUOTIENT 3 10Q) - 0) - (CKEQ (IREMAINDER 3 10Q) - 3) - (CKEQ (ITIMES 3 10Q) - 30Q) - (CKEQ (IQUOTIENT -3 1) - -3) - (CKEQ (IREMAINDER -3 1) - 0) - (CKEQ (ITIMES -3 1) - -3) - (CKEQ (IQUOTIENT -3 10Q) - 0) - (CKEQ (IREMAINDER -3 10Q) - -3) - (CKEQ (ITIMES -3 10Q) - -30Q) - (CKEQ (IQUOTIENT 4 1) - 4) - (CKEQ (IREMAINDER 4 1) - 0) - (CKEQ (ITIMES 4 1) - 4) - (CKEQ (IQUOTIENT 4 10Q) - 0) - (CKEQ (IREMAINDER 4 10Q) - 4) - (CKEQ (ITIMES 4 10Q) - 40Q) - (CKEQ (IQUOTIENT -4 1) - -4) - (CKEQ (IREMAINDER -4 1) - 0) - (CKEQ (ITIMES -4 1) - -4) - (CKEQ (IQUOTIENT -4 10Q) - 0) - (CKEQ (IREMAINDER -4 10Q) - -4) - (CKEQ (ITIMES -4 10Q) - -40Q)))) - -(!RANDNUMTEST - (LAMBDA NIL (* lmm " 5-JAN-82 20:03") - - (* (PROG (FORMS FORM ARG1 ARG2) (FRPTQ 36Q (SETQ ARG1 (SELECTQ (RAND 0 2) (0 (RAND -200000Q 177777Q))  - (1 (RAND -5 5)) (RAND -20000000000Q 17777777777Q))) (SETQ ARG2 (SELECTQ (RAND 0 2) (0 (RAND -200000Q 177777Q))  - (1 (RAND -5 5)) (RAND -20000000000Q 17777777777Q))) (for FN in (QUOTE (ITIMES IQUOTIENT IPLUS IDIFFERENCE  - IREMAINDER)) do (COND ((OR (NEQ ARG2 0) (NEQ FN (QUOTE IQUOTIENT))) (SETQ FORM (APPLY* (PACK*  - (QUOTE F) (SUBATOM FN 2 -1)) (FLOAT ARG1) (FLOAT ARG2))) (COND ((AND (FGREATERP FORM -20000000000Q)  - (FLESSP FORM -20000000000Q)) (SETQ FORM (LIST FN ARG1 ARG2)) (push FORMS (LIST (QUOTE CKEQ) FORM  - (EVAL FORM))))))))) (RETURN (CONS (QUOTE MTCHECKSTK) FORMS)))) - - - (!RANDNUMTEST1) - (!RANDNUMTEST2) - (!RANDNUMTEST3) - (!RANDNUMTEST4))) - -(!RANDNUMTEST1 - (LAMBDA NIL (* lmm " 5-JAN-82 20:00") - (MTCHECKSTK (CKEQ (IDIFFERENCE 225103021Q -41354Q) - 225144375Q) - (CKEQ (IPLUS 225103021Q -41354Q) - 225041445Q) - (CKEQ (IQUOTIENT 225103021Q -41354Q) - -4351Q) - (CKEQ (IDIFFERENCE 55211Q -170231Q) - 245442Q) - (CKEQ (IPLUS 55211Q -170231Q) - -113020Q) - (CKEQ (IQUOTIENT 55211Q -170231Q) - 0) - (CKEQ (ITIMES 55211Q -170231Q) - -12505505741Q) - (CKEQ (IDIFFERENCE 7527556636Q 6230151670Q) - 1277404746Q) - (CKEQ (IPLUS 7527556636Q 6230151670Q) - 15757730526Q) - (CKEQ (IQUOTIENT 7527556636Q 6230151670Q) - 1) - (CKEQ (IDIFFERENCE 46753Q 147206Q) - -100233Q) - (CKEQ (IPLUS 46753Q 147206Q) - 216161Q) - (CKEQ (IQUOTIENT 46753Q 147206Q) - 0) - (CKEQ (ITIMES 46753Q 147206Q) - 7666761402Q) - (CKEQ (IDIFFERENCE -2102475710Q 2301345735Q) - -4404043645Q) - (CKEQ (IPLUS -2102475710Q 2301345735Q) - 176650025Q) - (CKEQ (IQUOTIENT -2102475710Q 2301345735Q) - 0) - (CKEQ (IDIFFERENCE -2623Q 4352565011Q) - -4352567634Q) - (CKEQ (IPLUS -2623Q 4352565011Q) - 4352562166Q) - (CKEQ (IQUOTIENT -2623Q 4352565011Q) - 0) - (CKEQ (IDIFFERENCE -14153253501Q -57651Q) - -14153173630Q) - (CKEQ (IPLUS -14153253501Q -57651Q) - -14153333352Q) - (CKEQ (IQUOTIENT -14153253501Q -57651Q) - 202545Q) - (CKEQ (IDIFFERENCE 165526Q 2720657437Q) - -2720471711Q) - (CKEQ (IPLUS 165526Q 2720657437Q) - 2721045165Q) - (CKEQ (IQUOTIENT 165526Q 2720657437Q) - 0) - (CKEQ (IDIFFERENCE 2225143040Q 64675Q) - 2225056143Q) - (CKEQ (IPLUS 2225143040Q 64675Q) - 2225227735Q) - (CKEQ (IQUOTIENT 2225143040Q 64675Q) - 26141Q) - (CKEQ (IPLUS -12315334401Q 14120673261Q) - 1603336660Q) - (CKEQ (IQUOTIENT -12315334401Q 14120673261Q) - 0) - (CKEQ (IDIFFERENCE -10505775255Q 163226Q) - -10506160503Q) - (CKEQ (IPLUS -10505775255Q 163226Q) - -10505612027Q) - (CKEQ (IQUOTIENT -10505775255Q 163226Q) - -46265Q) - (CKEQ (IDIFFERENCE 122271Q 173021Q) - -50530Q) - (CKEQ (IPLUS 122271Q 173021Q) - 315312Q) - (CKEQ (IQUOTIENT 122271Q 173021Q) - 0) - (CKEQ (IDIFFERENCE 16047667244Q -135273Q) - 16050024537Q) - (CKEQ (IPLUS 16047667244Q -135273Q) - 16047531751Q) - (CKEQ (IQUOTIENT 16047667244Q -135273Q) - -115146Q) - (CKEQ (IDIFFERENCE -16411515370Q 21036Q) - -16411536426Q) - (CKEQ (IPLUS -16411515370Q 21036Q) - -16411474332Q) - (CKEQ (IQUOTIENT -16411515370Q 21036Q) - -663613Q) - (CKEQ (IDIFFERENCE -11057170232Q -34634Q) - -11057133376Q) - (CKEQ (IPLUS -11057170232Q -34634Q) - -11057225066Q) - (CKEQ (IQUOTIENT -11057170232Q -34634Q) - 241472Q) - (CKEQ (IPLUS 14517530732Q -6065652751Q) - 6431655761Q) - (CKEQ (IQUOTIENT 14517530732Q -6065652751Q) - -2) - (CKEQ (IDIFFERENCE 137044Q -4034725370Q) - 4035064434Q) - (CKEQ (IPLUS 137044Q -4034725370Q) - -4034566324Q) - (CKEQ (IQUOTIENT 137044Q -4034725370Q) - 0) - (CKEQ (IDIFFERENCE -14543070643Q -1302005044Q) - -13241063577Q) - (CKEQ (IPLUS -14543070643Q -1302005044Q) - -16045075707Q) - (CKEQ (IQUOTIENT -14543070643Q -1302005044Q) - 11Q) - (CKEQ (IDIFFERENCE 14210657030Q 16531056111Q) - -2320177061Q) - (CKEQ (IQUOTIENT 14210657030Q 16531056111Q) - 0) - (CKEQ (IDIFFERENCE 550212747Q 1055626226Q) - -305413257Q) - (CKEQ (IPLUS 550212747Q 1055626226Q) - 1626041175Q) - (CKEQ (IQUOTIENT 550212747Q 1055626226Q) - 0) - (CKEQ (IDIFFERENCE -11131703146Q -11764360741Q) - 632455573Q) - (CKEQ (IQUOTIENT -11131703146Q -11764360741Q) - 0) - (CKEQ (IDIFFERENCE 1541425342Q 12472345535Q) - -10730720173Q) - (CKEQ (IPLUS 1541425342Q 12472345535Q) - 14233773077Q) - (CKEQ (IQUOTIENT 1541425342Q 12472345535Q) - 0) - (CKEQ (IDIFFERENCE -15531366430Q -100526Q) - -15531265702Q) - (CKEQ (IPLUS -15531366430Q -100526Q) - -15531467156Q) - (CKEQ (IQUOTIENT -15531366430Q -100526Q) - 154211Q) - (CKEQ (IDIFFERENCE -41050Q -326400641Q) - 326337571Q) - (CKEQ (IPLUS -41050Q -326400641Q) - -326441711Q) - (CKEQ (IQUOTIENT -41050Q -326400641Q) - 0) - (CKEQ (IPLUS 16630056316Q -13347047476Q) - 3261006620Q) - (CKEQ (IQUOTIENT 16630056316Q -13347047476Q) - -1) - (CKEQ (IDIFFERENCE -31740Q -6001042052Q) - 6001010112Q) - (CKEQ (IPLUS -31740Q -6001042052Q) - -6001074012Q) - (CKEQ (IQUOTIENT -31740Q -6001042052Q) - 0) - (CKEQ (IDIFFERENCE -110217Q -12653617250Q) - 12653507031Q) - (CKEQ (IPLUS -110217Q -12653617250Q) - -12653727467Q) - (CKEQ (IQUOTIENT -110217Q -12653617250Q) - 0) - (CKEQ (IDIFFERENCE 116216Q 2453154032Q) - -2453035614Q) - (CKEQ (IPLUS 116216Q 2453154032Q) - 2453272250Q) - (CKEQ (IQUOTIENT 116216Q 2453154032Q) - 0) - (CKEQ (IDIFFERENCE 4553332136Q -4142306347Q) - 10715640505Q) - (CKEQ (IPLUS 4553332136Q -4142306347Q) - 411023567Q) - (CKEQ (IQUOTIENT 4553332136Q -4142306347Q) - -1) - (CKEQ (IPLUS 17161754144Q -3270231756Q) - 13671522166Q) - (CKEQ (IQUOTIENT 17161754144Q -3270231756Q) - -4)))) - -(!RANDNUMTEST2 - (LAMBDA NIL (* lmm " 5-JAN-82 20:01") - (MTCHECKSTK (CKEQ (IREMAINDER 7372147664Q -161456Q) - 64130Q) - (CKEQ (IDIFFERENCE 7372147664Q -161456Q) - 7372331342Q) - (CKEQ (IPLUS 7372147664Q -161456Q) - 7371766206Q) - (CKEQ (IQUOTIENT 7372147664Q -161456Q) - -41602Q) - (CKEQ (IREMAINDER 17634621231Q -146562Q) - 124171Q) - (CKEQ (IDIFFERENCE 17634621231Q -146562Q) - 17634770013Q) - (CKEQ (IPLUS 17634621231Q -146562Q) - 17634452447Q) - (CKEQ (IQUOTIENT 17634621231Q -146562Q) - -116620Q) - (CKEQ (IREMAINDER -117002Q 11327523020Q) - -117002Q) - (CKEQ (IDIFFERENCE -117002Q 11327523020Q) - -11327642022Q) - (CKEQ (IPLUS -117002Q 11327523020Q) - 11327404016Q) - (CKEQ (IQUOTIENT -117002Q 11327523020Q) - 0) - (CKEQ (IREMAINDER 7040503561Q 5360767723Q) - 1457513636Q) - (CKEQ (IDIFFERENCE 7040503561Q 5360767723Q) - 1457513636Q) - (CKEQ (IPLUS 7040503561Q 5360767723Q) - 14421473504Q) - (CKEQ (IQUOTIENT 7040503561Q 5360767723Q) - 1) - (CKEQ (IREMAINDER 2701423332Q -17633736657Q) - 2701423332Q) - (CKEQ (IPLUS 2701423332Q -17633736657Q) - -14732313325Q) - (CKEQ (IQUOTIENT 2701423332Q -17633736657Q) - 0) - (CKEQ (IREMAINDER -15075426141Q 53650Q) - -15721Q) - (CKEQ (IDIFFERENCE -15075426141Q 53650Q) - -15075502011Q) - (CKEQ (IPLUS -15075426141Q 53650Q) - -15075352271Q) - (CKEQ (IQUOTIENT -15075426141Q 53650Q) - -231212Q) - (CKEQ (IREMAINDER 11564140373Q 5167Q) - 3101Q) - (CKEQ (IDIFFERENCE 11564140373Q 5167Q) - 11564133204Q) - (CKEQ (IPLUS 11564140373Q 5167Q) - 11564145562Q) - (CKEQ (IQUOTIENT 11564140373Q 5167Q) - 1667626Q) - (CKEQ (IREMAINDER -766157106Q 11221047643Q) - -766157106Q) - (CKEQ (IDIFFERENCE -766157106Q 11221047643Q) - -12207226751Q) - (CKEQ (IPLUS -766157106Q 11221047643Q) - 10232670535Q) - (CKEQ (IQUOTIENT -766157106Q 11221047643Q) - 0) - (CKEQ (IREMAINDER -134743Q -10243Q) - -1342Q) - (CKEQ (IDIFFERENCE -134743Q -10243Q) - -124500Q) - (CKEQ (IPLUS -134743Q -10243Q) - -145206Q) - (CKEQ (IQUOTIENT -134743Q -10243Q) - 13Q) - (CKEQ (ITIMES -134743Q -10243Q) - 1405105611Q) - (CKEQ (IREMAINDER 156361Q 44021Q) - 2276Q) - (CKEQ (IDIFFERENCE 156361Q 44021Q) - 112340Q) - (CKEQ (IPLUS 156361Q 44021Q) - 222402Q) - (CKEQ (IQUOTIENT 156361Q 44021Q) - 3) - (CKEQ (ITIMES 156361Q 44021Q) - 7614472001Q) - (CKEQ (IREMAINDER -7606212052Q -12463650767Q) - -7606212052Q) - (CKEQ (IDIFFERENCE -7606212052Q -12463650767Q) - 2655436715Q) - (CKEQ (IQUOTIENT -7606212052Q -12463650767Q) - 0) - (CKEQ (IREMAINDER -23644Q 2024103014Q) - -23644Q) - (CKEQ (IDIFFERENCE -23644Q 2024103014Q) - -2024126660Q) - (CKEQ (IPLUS -23644Q 2024103014Q) - 2024057150Q) - (CKEQ (IQUOTIENT -23644Q 2024103014Q) - 0) - (CKEQ (IREMAINDER 142402Q -11771213026Q) - 142402Q) - (CKEQ (IDIFFERENCE 142402Q -11771213026Q) - 11771355430Q) - (CKEQ (IPLUS 142402Q -11771213026Q) - -11771050424Q) - (CKEQ (IQUOTIENT 142402Q -11771213026Q) - 0) - (CKEQ (IREMAINDER 137211Q 123321Q) - 13670Q) - (CKEQ (IDIFFERENCE 137211Q 123321Q) - 13670Q) - (CKEQ (IPLUS 137211Q 123321Q) - 262532Q) - (CKEQ (IQUOTIENT 137211Q 123321Q) - 1) - (CKEQ (ITIMES 137211Q 123321Q) - 17412061731Q) - (CKEQ (IREMAINDER -203262767Q 163647Q) - -107633Q) - (CKEQ (IDIFFERENCE -203262767Q 163647Q) - -203446636Q) - (CKEQ (IPLUS -203262767Q 163647Q) - -203077120Q) - (CKEQ (IQUOTIENT -203262767Q 163647Q) - -1104Q) - (CKEQ (IREMAINDER -6313474405Q 6752273462Q) - -6313474405Q) - (CKEQ (IDIFFERENCE -6313474405Q 6752273462Q) - -15265770067Q) - (CKEQ (IPLUS -6313474405Q 6752273462Q) - 436577055Q) - (CKEQ (IQUOTIENT -6313474405Q 6752273462Q) - 0) - (CKEQ (IREMAINDER -14063014353Q 113451Q) - -72715Q) - (CKEQ (IDIFFERENCE -14063014353Q 113451Q) - -14063130024Q) - (CKEQ (IPLUS -14063014353Q 113451Q) - -14062700702Q) - (CKEQ (IQUOTIENT -14063014353Q 113451Q) - -121756Q) - (CKEQ (IREMAINDER 10227145055Q 6462363731Q) - 1544561124Q) - (CKEQ (IDIFFERENCE 10227145055Q 6462363731Q) - 1544561124Q) - (CKEQ (IPLUS 10227145055Q 6462363731Q) - 16711531006Q) - (CKEQ (IQUOTIENT 10227145055Q 6462363731Q) - 1) - (CKEQ (IREMAINDER -75324Q 175652Q) - -75324Q) - (CKEQ (IDIFFERENCE -75324Q 175652Q) - -273176Q) - (CKEQ (IPLUS -75324Q 175652Q) - 100326Q) - (CKEQ (IQUOTIENT -75324Q 175652Q) - 0) - (CKEQ (ITIMES -75324Q 175652Q) - -17057666310Q) - (CKEQ (IREMAINDER 115610Q 11164020356Q) - 115610Q) - (CKEQ (IDIFFERENCE 115610Q 11164020356Q) - -11163702546Q) - (CKEQ (IPLUS 115610Q 11164020356Q) - 11164136166Q) - (CKEQ (IQUOTIENT 115610Q 11164020356Q) - 0) - (CKEQ (IREMAINDER -31121Q 161167Q) - -31121Q) - (CKEQ (IDIFFERENCE -31121Q 161167Q) - -212310Q) - (CKEQ (IPLUS -31121Q 161167Q) - 130046Q) - (CKEQ (IQUOTIENT -31121Q 161167Q) - 0) - (CKEQ (ITIMES -31121Q 161167Q) - -5440562647Q) - (CKEQ (IREMAINDER -1077046130Q 2302031512Q) - -1077046130Q) - (CKEQ (IDIFFERENCE -1077046130Q 2302031512Q) - -3401077642Q) - (CKEQ (IPLUS -1077046130Q 2302031512Q) - 1202763362Q) - (CKEQ (IQUOTIENT -1077046130Q 2302031512Q) - 0) - (CKEQ (IREMAINDER 162464Q 5724142525Q) - 162464Q) - (CKEQ (IDIFFERENCE 162464Q 5724142525Q) - -5723760041Q) - (CKEQ (IPLUS 162464Q 5724142525Q) - 5724325211Q) - (CKEQ (IQUOTIENT 162464Q 5724142525Q) - 0) - (CKEQ (IREMAINDER -16247235274Q 2154207235Q) - -1035561416Q) - (CKEQ (IPLUS -16247235274Q 2154207235Q) - -14073026037Q) - (CKEQ (IQUOTIENT -16247235274Q 2154207235Q) - -6) - (CKEQ (IREMAINDER -2773332645Q 145350Q) - -75045Q) - (CKEQ (IDIFFERENCE -2773332645Q 145350Q) - -2773500215Q) - (CKEQ (IPLUS -2773332645Q 145350Q) - -2773165275Q) - (CKEQ (IQUOTIENT -2773332645Q 145350Q) - -17060Q) - (CKEQ (IREMAINDER -30761Q -26031Q) - -2730Q) - (CKEQ (IDIFFERENCE -30761Q -26031Q) - -2730Q) - (CKEQ (IPLUS -30761Q -26031Q) - -57012Q) - (CKEQ (IQUOTIENT -30761Q -26031Q) - 1) - (CKEQ (ITIMES -30761Q -26031Q) - 1046446211Q) - (CKEQ (IREMAINDER -70373Q -115660Q) - -70373Q) - (CKEQ (IDIFFERENCE -70373Q -115660Q) - 25265Q) - (CKEQ (IPLUS -70373Q -115660Q) - -206253Q) - (CKEQ (IQUOTIENT -70373Q -115660Q) - 0) - (CKEQ (ITIMES -70373Q -115660Q) - 10455322620Q) - (CKEQ (IREMAINDER -161501Q -106613Q) - -52666Q) - (CKEQ (IDIFFERENCE -161501Q -106613Q) - -52666Q) - (CKEQ (IPLUS -161501Q -106613Q) - -270314Q) - (CKEQ (IQUOTIENT -161501Q -106613Q) - 1) - (CKEQ (ITIMES -161501Q -106613Q) - 17551430513Q) - (CKEQ (IREMAINDER -37733Q 6613741611Q) - -37733Q) - (CKEQ (IDIFFERENCE -37733Q 6613741611Q) - -6614001544Q) - (CKEQ (IPLUS -37733Q 6613741611Q) - 6613701656Q) - (CKEQ (IQUOTIENT -37733Q 6613741611Q) - 0) - (CKEQ (IREMAINDER 5403313261Q 170515Q) - 106045Q) - (CKEQ (IDIFFERENCE 5403313261Q 170515Q) - 5403122544Q) - (CKEQ (IPLUS 5403313261Q 170515Q) - 5403503776Q) - (CKEQ (IQUOTIENT 5403313261Q 170515Q) - 27274Q)))) - -(!RANDNUMTEST3 - (LAMBDA NIL (* lmm " 5-JAN-82 20:02") - (MTCHECKSTK (CKEQ (IREMAINDER 7362115002Q 33052Q) - 12214Q) - (CKEQ (IDIFFERENCE 7362115002Q 33052Q) - 7362061730Q) - (CKEQ (IPLUS 7362115002Q 33052Q) - 7362150054Q) - (CKEQ (IQUOTIENT 7362115002Q 33052Q) - 215217Q) - (CKEQ (IREMAINDER 156125Q -77040Q) - 57065Q) - (CKEQ (IDIFFERENCE 156125Q -77040Q) - 255165Q) - (CKEQ (IPLUS 156125Q -77040Q) - 57065Q) - (CKEQ (IQUOTIENT 156125Q -77040Q) - -1) - (CKEQ (ITIMES 156125Q -77040Q) - -15443260240Q) - (CKEQ (IREMAINDER 17144576471Q 63524Q) - 36051Q) - (CKEQ (IDIFFERENCE 17144576471Q 63524Q) - 17144512745Q) - (CKEQ (IPLUS 17144576471Q 63524Q) - 17144662215Q) - (CKEQ (IQUOTIENT 17144576471Q 63524Q) - 226464Q) - (CKEQ (IREMAINDER -1004475702Q -3747655621Q) - -1004475702Q) - (CKEQ (IDIFFERENCE -1004475702Q -3747655621Q) - 2743157717Q) - (CKEQ (IPLUS -1004475702Q -3747655621Q) - -4754353523Q) - (CKEQ (IQUOTIENT -1004475702Q -3747655621Q) - 0) - (CKEQ (IREMAINDER 7154Q 74266Q) - 7154Q) - (CKEQ (IDIFFERENCE 7154Q 74266Q) - -65112Q) - (CKEQ (IPLUS 7154Q 74266Q) - 103442Q) - (CKEQ (IQUOTIENT 7154Q 74266Q) - 0) - (CKEQ (ITIMES 7154Q 74266Q) - 663160310Q) - (CKEQ (IREMAINDER 14551535630Q -16006147276Q) - 14551535630Q) - (CKEQ (IPLUS 14551535630Q -16006147276Q) - -1234411446Q) - (CKEQ (IQUOTIENT 14551535630Q -16006147276Q) - 0) - (CKEQ (IREMAINDER -7700724341Q -13323635271Q) - -7700724341Q) - (CKEQ (IDIFFERENCE -7700724341Q -13323635271Q) - 3422710730Q) - (CKEQ (IQUOTIENT -7700724341Q -13323635271Q) - 0) - (CKEQ (IREMAINDER -130016Q -37545Q) - -30504Q) - (CKEQ (IDIFFERENCE -130016Q -37545Q) - -70251Q) - (CKEQ (IPLUS -130016Q -37545Q) - -167563Q) - (CKEQ (IQUOTIENT -130016Q -37545Q) - 2) - (CKEQ (ITIMES -130016Q -37545Q) - 5346163606Q) - (CKEQ (IREMAINDER 145065Q 142234Q) - 2631Q) - (CKEQ (IDIFFERENCE 145065Q 142234Q) - 2631Q) - (CKEQ (IPLUS 145065Q 142234Q) - 307321Q) - (CKEQ (IQUOTIENT 145065Q 142234Q) - 1) - (CKEQ (IREMAINDER -114603Q 54774426Q) - -114603Q) - (CKEQ (IDIFFERENCE -114603Q 54774426Q) - -55111231Q) - (CKEQ (IPLUS -114603Q 54774426Q) - 54657623Q) - (CKEQ (IQUOTIENT -114603Q 54774426Q) - 0) - (CKEQ (IREMAINDER 12673322761Q -11447432721Q) - 1223670040Q) - (CKEQ (IPLUS 12673322761Q -11447432721Q) - 1223670040Q) - (CKEQ (IQUOTIENT 12673322761Q -11447432721Q) - -1) - (CKEQ (IREMAINDER -173542Q -65615Q) - -20110Q) - (CKEQ (IDIFFERENCE -173542Q -65615Q) - -105725Q) - (CKEQ (IPLUS -173542Q -65615Q) - -261357Q) - (CKEQ (IQUOTIENT -173542Q -65615Q) - 2) - (CKEQ (ITIMES -173542Q -65615Q) - 14773433372Q) - (CKEQ (IREMAINDER 104500Q 12532705726Q) - 104500Q) - (CKEQ (IDIFFERENCE 104500Q 12532705726Q) - -12532601226Q) - (CKEQ (IPLUS 104500Q 12532705726Q) - 12533012426Q) - (CKEQ (IQUOTIENT 104500Q 12532705726Q) - 0) - (CKEQ (IREMAINDER 70447Q -45711Q) - 22536Q) - (CKEQ (IDIFFERENCE 70447Q -45711Q) - 136360Q) - (CKEQ (IPLUS 70447Q -45711Q) - 22536Q) - (CKEQ (IQUOTIENT 70447Q -45711Q) - -1) - (CKEQ (ITIMES 70447Q -45711Q) - -4137642237Q) - (CKEQ (IREMAINDER 157014Q 6410506327Q) - 157014Q) - (CKEQ (IDIFFERENCE 157014Q 6410506327Q) - -6410327313Q) - (CKEQ (IPLUS 157014Q 6410506327Q) - 6410665343Q) - (CKEQ (IQUOTIENT 157014Q 6410506327Q) - 0) - (CKEQ (IREMAINDER -5531662541Q 33210Q) - -22461Q) - (CKEQ (IDIFFERENCE -5531662541Q 33210Q) - -5531715751Q) - (CKEQ (IPLUS -5531662541Q 33210Q) - -5531627331Q) - (CKEQ (IQUOTIENT -5531662541Q 33210Q) - -152446Q) - (CKEQ (IREMAINDER -757266226Q -155715Q) - -122057Q) - (CKEQ (IDIFFERENCE -757266226Q -155715Q) - -757110311Q) - (CKEQ (IPLUS -757266226Q -155715Q) - -757444143Q) - (CKEQ (IQUOTIENT -757266226Q -155715Q) - 4403Q) - (CKEQ (IREMAINDER 12561101665Q 6715622627Q) - 3643257036Q) - (CKEQ (IDIFFERENCE 12561101665Q 6715622627Q) - 3643257036Q) - (CKEQ (IQUOTIENT 12561101665Q 6715622627Q) - 1) - (CKEQ (IREMAINDER 36575Q -146507Q) - 36575Q) - (CKEQ (IDIFFERENCE 36575Q -146507Q) - 205304Q) - (CKEQ (IPLUS 36575Q -146507Q) - -107712Q) - (CKEQ (IQUOTIENT 36575Q -146507Q) - 0) - (CKEQ (ITIMES 36575Q -146507Q) - -6123423253Q) - (CKEQ (IREMAINDER 43155Q 125453Q) - 43155Q) - (CKEQ (IDIFFERENCE 43155Q 125453Q) - -62276Q) - (CKEQ (IPLUS 43155Q 125453Q) - 170630Q) - (CKEQ (IQUOTIENT 43155Q 125453Q) - 0) - (CKEQ (ITIMES 43155Q 125453Q) - 5705521517Q) - (CKEQ (IREMAINDER -13215101247Q 3476554023Q) - -320775156Q) - (CKEQ (IDIFFERENCE -13215101247Q 3476554023Q) - -16713655272Q) - (CKEQ (IPLUS -13215101247Q 3476554023Q) - -7516325224Q) - (CKEQ (IQUOTIENT -13215101247Q 3476554023Q) - -3) - (CKEQ (IREMAINDER 163010Q 13235743316Q) - 163010Q) - (CKEQ (IDIFFERENCE 163010Q 13235743316Q) - -13235560306Q) - (CKEQ (IPLUS 163010Q 13235743316Q) - 13236126326Q) - (CKEQ (IQUOTIENT 163010Q 13235743316Q) - 0) - (CKEQ (IREMAINDER 13003244144Q -173327Q) - 140535Q) - (CKEQ (IDIFFERENCE 13003244144Q -173327Q) - 13003437473Q) - (CKEQ (IPLUS 13003244144Q -173327Q) - 13003050615Q) - (CKEQ (IQUOTIENT 13003244144Q -173327Q) - -55521Q) - (CKEQ (IREMAINDER -46215Q 12704061362Q) - -46215Q) - (CKEQ (IDIFFERENCE -46215Q 12704061362Q) - -12704127577Q) - (CKEQ (IPLUS -46215Q 12704061362Q) - 12704013145Q) - (CKEQ (IQUOTIENT -46215Q 12704061362Q) - 0) - (CKEQ (IREMAINDER -2241Q -4264546202Q) - -2241Q) - (CKEQ (IDIFFERENCE -2241Q -4264546202Q) - 4264543741Q) - (CKEQ (IPLUS -2241Q -4264546202Q) - -4264550443Q) - (CKEQ (IQUOTIENT -2241Q -4264546202Q) - 0) - (CKEQ (IREMAINDER -20207Q 17333457066Q) - -20207Q) - (CKEQ (IDIFFERENCE -20207Q 17333457066Q) - -17333477275Q) - (CKEQ (IPLUS -20207Q 17333457066Q) - 17333436657Q) - (CKEQ (IQUOTIENT -20207Q 17333457066Q) - 0) - (CKEQ (IREMAINDER -6472607512Q 3122034574Q) - -226516122Q) - (CKEQ (IDIFFERENCE -6472607512Q 3122034574Q) - -11614644306Q) - (CKEQ (IPLUS -6472607512Q 3122034574Q) - -3350552716Q) - (CKEQ (IQUOTIENT -6472607512Q 3122034574Q) - -2) - (CKEQ (IREMAINDER -157453Q 15475670672Q) - -157453Q) - (CKEQ (IDIFFERENCE -157453Q 15475670672Q) - -15476050345Q) - (CKEQ (IPLUS -157453Q 15475670672Q) - 15475511217Q) - (CKEQ (IQUOTIENT -157453Q 15475670672Q) - 0) - (CKEQ (IREMAINDER -102550Q 5520722570Q) - -102550Q) - (CKEQ (IDIFFERENCE -102550Q 5520722570Q) - -5521025340Q) - (CKEQ (IPLUS -102550Q 5520722570Q) - 5520620020Q) - (CKEQ (IQUOTIENT -102550Q 5520722570Q) - 0) - (CKEQ (IREMAINDER 115632Q -13773705461Q) - 115632Q) - (CKEQ (IDIFFERENCE 115632Q -13773705461Q) - 13774023313Q) - (CKEQ (IPLUS 115632Q -13773705461Q) - -13773567627Q) - (CKEQ (IQUOTIENT 115632Q -13773705461Q) - 0)))) - -(!RANDNUMTEST4 - (LAMBDA NIL (* lmm "19-Jul-84 18:02") - (MTCHECKSTK (CKEQ (IREMAINDER 46416Q 73661Q) - 46416Q) - (CKEQ (IDIFFERENCE 46416Q 73661Q) - -25243Q) - (CKEQ (IPLUS 46416Q 73661Q) - 142277Q) - (CKEQ (IQUOTIENT 46416Q 73661Q) - 0) - (CKEQ (ITIMES 46416Q 73661Q) - 4401544256Q) - (CKEQ (IREMAINDER -165357Q -15133072242Q) - -165357Q) - (CKEQ (IDIFFERENCE -165357Q -15133072242Q) - 15132704663Q) - (CKEQ (IPLUS -165357Q -15133072242Q) - -15133257621Q) - (CKEQ (IQUOTIENT -165357Q -15133072242Q) - 0) - (CKEQ (IREMAINDER -4052Q 622430174Q) - -4052Q) - (CKEQ (IDIFFERENCE -4052Q 622430174Q) - -622434246Q) - (CKEQ (IPLUS -4052Q 622430174Q) - 622424122Q) - (CKEQ (IQUOTIENT -4052Q 622430174Q) - 0) - (CKEQ (IREMAINDER -10566613407Q 6004741132Q) - -2561652255Q) - (CKEQ (IDIFFERENCE -10566613407Q 6004741132Q) - -16573554541Q) - (CKEQ (IPLUS -10566613407Q 6004741132Q) - -2561652255Q) - (CKEQ (IQUOTIENT -10566613407Q 6004741132Q) - -1) - (CKEQ (IREMAINDER -2 -4) - -2) - (CKEQ (IDIFFERENCE -2 -4) - 2) - (CKEQ (IPLUS -2 -4) - -6) - (CKEQ (IQUOTIENT -2 -4) - 0) - (CKEQ (ITIMES -2 -4) - 10Q) - (CKEQ (IREMAINDER 162662613Q -6300165562Q) - 162662613Q) - (CKEQ (IDIFFERENCE 162662613Q -6300165562Q) - 6463050375Q) - (CKEQ (IPLUS 162662613Q -6300165562Q) - -6115302747Q) - (CKEQ (IQUOTIENT 162662613Q -6300165562Q) - 0) - (CKEQ (IREMAINDER -2 3) - -2) - (CKEQ (IDIFFERENCE -2 3) - -5) - (CKEQ (IPLUS -2 3) - 1) - (CKEQ (IQUOTIENT -2 3) - 0) - (CKEQ (ITIMES -2 3) - -6) - (CKEQ (IREMAINDER -16047Q -171315Q) - -16047Q) - (CKEQ (IDIFFERENCE -16047Q -171315Q) - 153246Q) - (CKEQ (IPLUS -16047Q -171315Q) - -207364Q) - (CKEQ (IQUOTIENT -16047Q -171315Q) - 0) - (CKEQ (ITIMES -16047Q -171315Q) - 3254664473Q) - (CKEQ (IPLUS -4510035224Q 0) - -4510035224Q) - (CKEQ (ITIMES -4510035224Q 0) - 0) - (CKEQ (IREMAINDER 4 167331711Q) - 4) - (CKEQ (IDIFFERENCE 4 167331711Q) - -167331705Q) - (CKEQ (IPLUS 4 167331711Q) - 167331715Q) - (CKEQ (IQUOTIENT 4 167331711Q) - 0) - (CKEQ (ITIMES 4 167331711Q) - 735547444Q) - (CKEQ (IREMAINDER 10175626173Q -15244050032Q) - 10175626173Q) - (CKEQ (IPLUS 10175626173Q -15244050032Q) - -5046221637Q) - (CKEQ (IQUOTIENT 10175626173Q -15244050032Q) - 0) - (CKEQ (IREMAINDER -1771422055Q 16116655424Q) - -1771422055Q) - (CKEQ (IPLUS -1771422055Q 16116655424Q) - 14125233347Q) - (CKEQ (IQUOTIENT -1771422055Q 16116655424Q) - 0) - (CKEQ (IREMAINDER -5 -2) - -1) - (CKEQ (IDIFFERENCE -5 -2) - -3) - (CKEQ (IPLUS -5 -2) - -7) - (CKEQ (IQUOTIENT -5 -2) - 2) - (CKEQ (ITIMES -5 -2) - 12Q) - (CKEQ (IREMAINDER -13001Q -125515Q) - -13001Q) - (CKEQ (IDIFFERENCE -13001Q -125515Q) - 112514Q) - (CKEQ (IPLUS -13001Q -125515Q) - -140516Q) - (CKEQ (IQUOTIENT -13001Q -125515Q) - 0) - (CKEQ (ITIMES -13001Q -125515Q) - 1656244515Q) - (CKEQ (IREMAINDER -166401Q -7027Q) - -5621Q) - (CKEQ (IDIFFERENCE -166401Q -7027Q) - -157352Q) - (CKEQ (IPLUS -166401Q -7027Q) - -175430Q) - (CKEQ (IQUOTIENT -166401Q -7027Q) - 20Q) - (CKEQ (ITIMES -166401Q -7027Q) - 1502654427Q) - (CKEQ (IREMAINDER 4257756512Q -127717Q) - 56223Q) - (CKEQ (IDIFFERENCE 4257756512Q -127717Q) - 4260106431Q) - (CKEQ (IPLUS 4257756512Q -127717Q) - 4257626573Q) - (CKEQ (IQUOTIENT 4257756512Q -127717Q) - -31231Q) - (CKEQ (IREMAINDER 4 -5) - 4) - (CKEQ (IDIFFERENCE 4 -5) - 11Q) - (CKEQ (IPLUS 4 -5) - -1) - (CKEQ (IQUOTIENT 4 -5) - 0) - (CKEQ (ITIMES 4 -5) - -24Q) - (CKEQ (IREMAINDER 146317Q 5230002636Q) - 146317Q) - (CKEQ (IDIFFERENCE 146317Q 5230002636Q) - -5227634317Q) - (CKEQ (IPLUS 146317Q 5230002636Q) - 5230151155Q) - (CKEQ (IQUOTIENT 146317Q 5230002636Q) - 0) - (CKEQ (IREMAINDER 10650Q -66166Q) - 10650Q) - (CKEQ (IDIFFERENCE 10650Q -66166Q) - 77036Q) - (CKEQ (IPLUS 10650Q -66166Q) - -55316Q) - (CKEQ (IQUOTIENT 10650Q -66166Q) - 0) - (CKEQ (ITIMES 10650Q -66166Q) - -736601560Q) - (CKEQ (IREMAINDER -5 -32766Q) - -5) - (CKEQ (IDIFFERENCE -5 -32766Q) - 32761Q) - (CKEQ (IPLUS -5 -32766Q) - -32773Q) - (CKEQ (IQUOTIENT -5 -32766Q) - 0) - (CKEQ (ITIMES -5 -32766Q) - 206716Q) - (CKEQ (IREMAINDER 113703Q -2733011560Q) - 113703Q) - (CKEQ (IDIFFERENCE 113703Q -2733011560Q) - 2733125463Q) - (CKEQ (IPLUS 113703Q -2733011560Q) - -2732675655Q) - (CKEQ (IQUOTIENT 113703Q -2733011560Q) - 0) - (CKEQ (IPLUS 1124452466Q 0) - 1124452466Q) - (CKEQ (ITIMES 1124452466Q 0) - 0) - (CKEQ (IDIFFERENCE -4 0) - -4) - (CKEQ (IPLUS -4 0) - -4) - (CKEQ (ITIMES -4 0) - 0) - (CKEQ (IREMAINDER 1 -5061322610Q) - 1) - (CKEQ (IDIFFERENCE 1 -5061322610Q) - 5061322611Q) - (CKEQ (IPLUS 1 -5061322610Q) - -5061322607Q) - (CKEQ (IQUOTIENT 1 -5061322610Q) - 0) - (CKEQ (ITIMES 1 -5061322610Q) - -5061322610Q) - (CKEQ (IREMAINDER 0 113566Q) - 0) - (CKEQ (IDIFFERENCE 0 113566Q) - -113566Q) - (CKEQ (IPLUS 0 113566Q) - 113566Q) - (CKEQ (IQUOTIENT 0 113566Q) - 0) - (CKEQ (ITIMES 0 113566Q) - 0) - (CKEQ (IREMAINDER -5 3) - -2) - (CKEQ (IDIFFERENCE -5 3) - -10Q) - (CKEQ (IPLUS -5 3) - -2) - (CKEQ (IQUOTIENT -5 3) - -1) - (CKEQ (ITIMES -5 3) - -17Q) - (CKEQ (IREMAINDER 5 -145277Q) - 5) - (CKEQ (IDIFFERENCE 5 -145277Q) - 145304Q) - (CKEQ (IPLUS 5 -145277Q) - -145272Q) - (CKEQ (IQUOTIENT 5 -145277Q) - 0) - (CKEQ (ITIMES 5 -145277Q) - -772673Q) - (CKEQ (IREMAINDER 3216Q -7537760666Q) - 3216Q) - (CKEQ (IDIFFERENCE 3216Q -7537760666Q) - 7537764104Q) - (CKEQ (IPLUS 3216Q -7537760666Q) - -7537755450Q) - (CKEQ (IQUOTIENT 3216Q -7537760666Q) - 0) - (CKEQ (IREMAINDER 4601134451Q -154036Q) - 131071Q) - (CKEQ (IDIFFERENCE 4601134451Q -154036Q) - 4601310507Q) - (CKEQ (IPLUS 4601134451Q -154036Q) - 4600760413Q) - (CKEQ (IQUOTIENT 4601134451Q -154036Q) - -26410Q) - (CKEQ (IREMAINDER 0 2) - 0) - (CKEQ (IDIFFERENCE 0 2) - -2) - (CKEQ (IPLUS 0 2) - 2) - (CKEQ (IQUOTIENT 0 2) - 0) - (CKEQ (ITIMES 0 2) - 0)))) - -(!FNUMTEST - (LAMBDA NIL (* JonL " 7-Nov-84 17:57") - (!FNUMTEST1) - (!FNUMTEST2) - (!FNUMTEST3) - (!FNUMTEST4) - (!FNUMTEST5))) - -(!FNUMTEST1 - (LAMBDA NIL (* JonL " 7-Nov-84 16:29") - (* Some very simple cases especially involving a 16-bit - overflow) - (CKFEQ (FPLUS -65536.0 1.0) - -65535.0) - (CKFEQ (FDIFFERENCE -65536.0 1.0) - -65537.0) - (CKFEQ (FTIMES -65536.0 1.0) - -65536.0) - (CKFEQ (FQUOTIENT -65536.0 1.0) - -65536.0) - (CKFEQ (FPLUS 65535.0 0.0) - 65535.0) - (CKFEQ (FDIFFERENCE 65535.0 0.0) - 65535.0) - (CKFEQ (FTIMES 65535.0 0.0) - 0.0) - (CKFEQ (FPLUS 65535.0 -1.0) - 65534.0) - (CKFEQ (FDIFFERENCE 65535.0 -1.0) - 65536.0) - (CKFEQ (FTIMES 65535.0 -1.0) - -65535.0) - (CKFEQ (FQUOTIENT 65535.0 -1.0) - -65535.0) - (CKFEQ (FPLUS 65535.0 1.0) - 65536.0) - (CKFEQ (FDIFFERENCE 65535.0 1.0) - 65534.0) - (CKFEQ (FTIMES 65535.0 1.0) - 65535.0) - (CKFEQ (FQUOTIENT 65535.0 1.0) - 65535.0) - (CKFEQ (FPLUS 0.0 -65536.0) - -65536.0) - (CKFEQ (FDIFFERENCE 0.0 -65536.0) - 65536.0) - (CKFEQ (FTIMES 0.0 -65536.0) - 0.0) - (CKFEQ (FQUOTIENT 0.0 -65536.0) - 0.0))) - -(!FNUMTEST2 - (LAMBDA NIL (* JonL " 7-Nov-84 18:47") - (for I F FORM from 0 to (SUB1 BITSPERCELL) - do (SETQ F (create FLOATP - FLOATCONTENTS _(LOGXOR (MASK.1'S I 1) - (CONSTANT (fetch (FLOATP FLOATCONTENTS) - of (create FLOATP - EXPONENT _ 201Q)))))) - (SETQ FORM (LIST (QUOTE FPLUS) - 0.0 - (CONCAT "{ 2.0 xor 2^" I))) - (!CKFEQ (FPLUS 0.0 F) - F FORM) - (!CKFEQ (FTIMES 1.0 F) - F - (QUOTE (FTIMES 1.0 F)))))) - -(!FNUMTEST3 - (LAMBDA NIL (* JonL " 7-Nov-84 16:32") - (* Check for coercions) - (CKFEQ (FPLUS -200000Q 1) - -65535.0) - (CKFEQ (FDIFFERENCE -200000Q 1) - -65537.0) - (CKFEQ (FTIMES -200000Q 1) - -65536.0) - (CKFEQ (FQUOTIENT -200000Q 1) - -65536.0) - (CKFEQ (FPLUS -65536.0 1) - -65535.0) - (CKFEQ (FDIFFERENCE -65536.0 1) - -65537.0) - (CKFEQ (FTIMES -65536.0 1) - -65536.0) - (CKFEQ (FQUOTIENT -65536.0 1) - -65536.0) - (CKFEQ (FPLUS -200000Q 1.0) - -65535.0) - (CKFEQ (FDIFFERENCE -200000Q 1.0) - -65537.0) - (CKFEQ (FTIMES -200000Q 1.0) - -65536.0) - (CKFEQ (FQUOTIENT -200000Q 1.0) - -65536.0))) - -(!FNUMTEST4 - (LAMBDA NIL (* JonL " 7-Nov-84 20:58") - (* Some random kludgy number tests) - (!CKFEQ (FPLUS 1.234568 1.111111) - 2.345679 - (QUOTE (FPLUS 1.234568 1.111111))) - (!CKFEQ (FPLUS (DEFERREDCONSTANT (create FLOATP - FLOATCONTENTS _ 7747403121Q)) - 1.111111) - (DEFERREDCONSTANT (create FLOATP - FLOATCONTENTS _ 10005417632Q)) - (QUOTE (FPLUS "1.2345678" 1.111111))))) - -(!FNUMTEST5 - (LAMBDA NIL (* JonL " 7-Nov-84 16:33") - (* Check out the comparators) - (MTCHECK (FGREATERP 1.0 0.0)) - (MTCHECK (NOT (FGREATERP -1.0 0.0))))) - -(!MIXNUMTEST - [LAMBDA NIL (* lmm "19-Jul-84 18:07") - (!RANDNUMTEST) - (PROGN (CKEQ (DIFFERENCE -200000Q -200000Q) - 0) - (CKEQ (PLUS -200000Q -200000Q) - -400000Q) - (CKEQ (QUOTIENT -200000Q -200000Q) - 1) - (CKEQ (DIFFERENCE -200000Q 177777Q) - -377777Q) - (CKEQ (PLUS -200000Q 177777Q) - -1) - (CKEQ (QUOTIENT -200000Q 177777Q) - -1) - (CKFEQ (DIFFERENCE -200000Q 0.0) - -65536.0) - (CKFEQ (TIMES -200000Q 0.0) - 0.0) - (CKFEQ (PLUS -200000Q 0.0) - -65536.0) - (CKEQ (DIFFERENCE -200000Q 0) - -200000Q) - (CKEQ (TIMES -200000Q 0) - 0) - (CKEQ (PLUS -200000Q 0) - -200000Q) - (CKEQ (DIFFERENCE -200000Q 3) - -200003Q) - (CKEQ (TIMES -200000Q 3) - -600000Q) - (CKEQ (PLUS -200000Q 3) - -177775Q) - (CKEQ (QUOTIENT -200000Q 3) - -52525Q) - (CKFEQ (DIFFERENCE -200000Q -1.0) - -65535.0) - (CKFEQ (TIMES -200000Q -1.0) - 65536.0) - (CKFEQ (PLUS -200000Q -1.0) - -65537.0) - (CKFEQ (QUOTIENT -200000Q -1.0) - 65536.0) - (CKEQ (DIFFERENCE -200000Q -1) - -177777Q) - (CKEQ (TIMES -200000Q -1) - 200000Q) - (CKEQ (PLUS -200000Q -1) - -200001Q) - (CKEQ (QUOTIENT -200000Q -1) - 200000Q) - (CKEQ (DIFFERENCE -200000Q 2) - -200002Q) - (CKEQ (TIMES -200000Q 2) - -400000Q) - (CKEQ (PLUS -200000Q 2) - -177776Q) - (CKEQ (QUOTIENT -200000Q 2) - -100000Q) - (CKFEQ (DIFFERENCE -200000Q 1.0) - -65537.0) - (CKFEQ (TIMES -200000Q 1.0) - -65536.0) - (CKFEQ (PLUS -200000Q 1.0) - -65535.0) - (CKFEQ (QUOTIENT -200000Q 1.0) - -65536.0) - (CKEQ (DIFFERENCE -200000Q 1) - -200001Q) - (CKEQ (TIMES -200000Q 1) - -200000Q) - (CKEQ (PLUS -200000Q 1) - -177777Q) - (CKEQ (QUOTIENT -200000Q 1) - -200000Q) - (CKEQ (DIFFERENCE 177777Q -200000Q) - 377777Q) - (CKEQ (PLUS 177777Q -200000Q) - -1) - (CKEQ (QUOTIENT 177777Q -200000Q) - 0) - (CKEQ (DIFFERENCE 177777Q 177777Q) - 0) - (CKEQ (PLUS 177777Q 177777Q) - 377776Q) - (CKEQ (QUOTIENT 177777Q 177777Q) - 1) - (CKFEQ (DIFFERENCE 177777Q 0.0) - 65535.0) - (CKFEQ (TIMES 177777Q 0.0) - 0.0) - (CKFEQ (PLUS 177777Q 0.0) - 65535.0) - (CKEQ (DIFFERENCE 177777Q 0) - 177777Q) - (CKEQ (TIMES 177777Q 0) - 0) - (CKEQ (PLUS 177777Q 0) - 177777Q) - (CKEQ (DIFFERENCE 177777Q 3) - 177774Q) - (CKEQ (TIMES 177777Q 3) - 577775Q) - (CKEQ (PLUS 177777Q 3) - 200002Q) - (CKEQ (QUOTIENT 177777Q 3) - 52525Q) - (CKFEQ (DIFFERENCE 177777Q -1.0) - 65536.0) - (CKFEQ (TIMES 177777Q -1.0) - -65535.0) - (CKFEQ (PLUS 177777Q -1.0) - 65534.0) - (CKFEQ (QUOTIENT 177777Q -1.0) - -65535.0) - (CKEQ (DIFFERENCE 177777Q -1) - 200000Q) - (CKEQ (TIMES 177777Q -1) - -177777Q) - (CKEQ (PLUS 177777Q -1) - 177776Q) - (CKEQ (QUOTIENT 177777Q -1) - -177777Q) - (CKEQ (DIFFERENCE 177777Q 2) - 177775Q) - (CKEQ (TIMES 177777Q 2) - 377776Q) - (CKEQ (PLUS 177777Q 2) - 200001Q) - (CKEQ (QUOTIENT 177777Q 2) - 77777Q) - (CKFEQ (DIFFERENCE 177777Q 1.0) - 65534.0) - (CKFEQ (TIMES 177777Q 1.0) - 65535.0) - (CKFEQ (PLUS 177777Q 1.0) - 65536.0) - (CKFEQ (QUOTIENT 177777Q 1.0) - 65535.0) - (CKEQ (DIFFERENCE 177777Q 1) - 177776Q) - (CKEQ (TIMES 177777Q 1) - 177777Q) - (CKEQ (PLUS 177777Q 1) - 200000Q) - (CKEQ (QUOTIENT 177777Q 1) - 177777Q) - (CKFEQ (DIFFERENCE 0.0 -200000Q) - 65536.0) - (CKFEQ (TIMES 0.0 -200000Q) - 0.0) - (CKFEQ (PLUS 0.0 -200000Q) - -65536.0) - (CKFEQ (QUOTIENT 0.0 -200000Q) - 0.0) - (CKFEQ (DIFFERENCE 0.0 177777Q) - -65535.0) - (CKFEQ (TIMES 0.0 177777Q) - 0.0) - (CKFEQ (PLUS 0.0 177777Q) - 65535.0) - (CKFEQ (QUOTIENT 0.0 177777Q) - 0.0) - (CKFEQ (DIFFERENCE 0.0 0.0) - 0.0) - (CKFEQ (TIMES 0.0 0.0) - 0.0) - (CKFEQ (PLUS 0.0 0.0) - 0.0) - (CKFEQ (DIFFERENCE 0.0 0) - 0.0) - (CKFEQ (TIMES 0.0 0) - 0.0) - (CKFEQ (PLUS 0.0 0) - 0.0) - (CKFEQ (DIFFERENCE 0.0 3) - -3.0) - (CKFEQ (TIMES 0.0 3) - 0.0) - (CKFEQ (PLUS 0.0 3) - 3.0) - (CKFEQ (QUOTIENT 0.0 3) - 0.0) - (CKFEQ (DIFFERENCE 0.0 -1.0) - 1.0) - (CKFEQ (TIMES 0.0 -1.0) - 0.0) - (CKFEQ (PLUS 0.0 -1.0) - -1.0) - (CKFEQ (QUOTIENT 0.0 -1.0) - 0.0) - (CKFEQ (DIFFERENCE 0.0 -1) - 1.0) - (CKFEQ (TIMES 0.0 -1) - 0.0) - (CKFEQ (PLUS 0.0 -1) - -1.0) - (CKFEQ (QUOTIENT 0.0 -1) - 0.0) - (CKFEQ (DIFFERENCE 0.0 2) - -2.0) - (CKFEQ (TIMES 0.0 2) - 0.0) - (CKFEQ (PLUS 0.0 2) - 2.0) - (CKFEQ (QUOTIENT 0.0 2) - 0.0) - (CKFEQ (DIFFERENCE 0.0 1.0) - -1.0) - (CKFEQ (TIMES 0.0 1.0) - 0.0) - (CKFEQ (PLUS 0.0 1.0) - 1.0) - (CKFEQ (QUOTIENT 0.0 1.0) - 0.0) - (CKFEQ (DIFFERENCE 0.0 1) - -1.0) - (CKFEQ (TIMES 0.0 1) - 0.0) - (CKFEQ (PLUS 0.0 1) - 1.0) - (CKFEQ (QUOTIENT 0.0 1) - 0.0) - (CKEQ (DIFFERENCE 0 -200000Q) - 200000Q) - (CKEQ (TIMES 0 -200000Q) - 0) - (CKEQ (PLUS 0 -200000Q) - -200000Q) - (CKEQ (QUOTIENT 0 -200000Q) - 0) - (CKEQ (DIFFERENCE 0 177777Q) - -177777Q) - (CKEQ (TIMES 0 177777Q) - 0) - (CKEQ (PLUS 0 177777Q) - 177777Q) - (CKEQ (QUOTIENT 0 177777Q) - 0) - (CKFEQ (DIFFERENCE 0 0.0) - 0.0) - (CKFEQ (TIMES 0 0.0) - 0.0) - (CKFEQ (PLUS 0 0.0) - 0.0) - (CKEQ (DIFFERENCE 0 0) - 0) - (CKEQ (TIMES 0 0) - 0) - (CKEQ (PLUS 0 0) - 0) - (CKEQ (DIFFERENCE 0 3) - -3) - (CKEQ (TIMES 0 3) - 0) - (CKEQ (PLUS 0 3) - 3) - (CKEQ (QUOTIENT 0 3) - 0) - (CKFEQ (DIFFERENCE 0 -1.0) - 1.0) - (CKFEQ (TIMES 0 -1.0) - 0.0) - (CKFEQ (PLUS 0 -1.0) - -1.0) - (CKFEQ (QUOTIENT 0 -1.0) - 0.0) - (CKEQ (DIFFERENCE 0 -1) - 1) - (CKEQ (TIMES 0 -1) - 0) - (CKEQ (PLUS 0 -1) - -1) - (CKEQ (QUOTIENT 0 -1) - 0) - (CKEQ (DIFFERENCE 0 2) - -2) - (CKEQ (TIMES 0 2) - 0) - (CKEQ (PLUS 0 2) - 2) - (CKEQ (QUOTIENT 0 2) - 0) - (CKFEQ (DIFFERENCE 0 1.0) - -1.0) - (CKFEQ (TIMES 0 1.0) - 0.0) - (CKFEQ (PLUS 0 1.0) - 1.0) - (CKFEQ (QUOTIENT 0 1.0) - 0.0) - (CKEQ (DIFFERENCE 0 1) - -1) - (CKEQ (TIMES 0 1) - 0) - (CKEQ (PLUS 0 1) - 1) - (CKEQ (QUOTIENT 0 1) - 0) - (CKEQ (DIFFERENCE 3 -200000Q) - 200003Q) - (CKEQ (TIMES 3 -200000Q) - -600000Q) - (CKEQ (PLUS 3 -200000Q) - -177775Q) - (CKEQ (QUOTIENT 3 -200000Q) - 0) - (CKEQ (DIFFERENCE 3 177777Q) - -177774Q) - (CKEQ (TIMES 3 177777Q) - 577775Q) - (CKEQ (PLUS 3 177777Q) - 200002Q) - (CKEQ (QUOTIENT 3 177777Q) - 0) - (CKFEQ (DIFFERENCE 3 0.0) - 3.0) - (CKFEQ (TIMES 3 0.0) - 0.0) - (CKFEQ (PLUS 3 0.0) - 3.0) - (CKEQ (DIFFERENCE 3 0) - 3) - (CKEQ (TIMES 3 0) - 0) - (CKEQ (PLUS 3 0) - 3) - (CKEQ (DIFFERENCE 3 3) - 0) - (CKEQ (TIMES 3 3) - 11Q) - (CKEQ (PLUS 3 3) - 6) - (CKEQ (QUOTIENT 3 3) - 1) - (CKFEQ (DIFFERENCE 3 -1.0) - 4.0) - (CKFEQ (TIMES 3 -1.0) - -3.0) - (CKFEQ (PLUS 3 -1.0) - 2.0) - (CKFEQ (QUOTIENT 3 -1.0) - -3.0) - (CKEQ (DIFFERENCE 3 -1) - 4) - (CKEQ (TIMES 3 -1) - -3) - (CKEQ (PLUS 3 -1) - 2) - (CKEQ (QUOTIENT 3 -1) - -3) - (CKEQ (DIFFERENCE 3 2) - 1) - (CKEQ (TIMES 3 2) - 6) - (CKEQ (PLUS 3 2) - 5) - (CKEQ (QUOTIENT 3 2) - 1) - (CKFEQ (DIFFERENCE 3 1.0) - 2.0) - (CKFEQ (TIMES 3 1.0) - 3.0) - (CKFEQ (PLUS 3 1.0) - 4.0) - (CKFEQ (QUOTIENT 3 1.0) - 3.0) - (CKEQ (DIFFERENCE 3 1) - 2) - (CKEQ (TIMES 3 1) - 3) - (CKEQ (PLUS 3 1) - 4) - (CKEQ (QUOTIENT 3 1) - 3) - (CKFEQ (DIFFERENCE -1.0 -200000Q) - 65535.0) - (CKFEQ (TIMES -1.0 -200000Q) - 65536.0) - (CKFEQ (PLUS -1.0 -200000Q) - -65537.0) - (CKFUZZYEQ (QUOTIENT -1.0 -200000Q) - .00001525879) - (CKFEQ (DIFFERENCE -1.0 177777Q) - -65536.0) - (CKFEQ (TIMES -1.0 177777Q) - -65535.0) - (CKFEQ (PLUS -1.0 177777Q) - 65534.0) - (CKFUZZYEQ (QUOTIENT -1.0 177777Q) - -.00001525902) - (CKFEQ (DIFFERENCE -1.0 0.0) - -1.0) - (CKFEQ (TIMES -1.0 0.0) - 0.0) - (CKFEQ (PLUS -1.0 0.0) - -1.0) - (CKFEQ (DIFFERENCE -1.0 0) - -1.0) - (CKFEQ (TIMES -1.0 0) - 0.0) - (CKFEQ (PLUS -1.0 0) - -1.0) - (CKFEQ (DIFFERENCE -1.0 3) - -4.0) - (CKFEQ (TIMES -1.0 3) - -3.0) - (CKFEQ (PLUS -1.0 3) - 2.0) - (CKFUZZYEQ (QUOTIENT -1.0 3) - -.3333333) - (CKFEQ (DIFFERENCE -1.0 -1.0) - 0.0) - (CKFEQ (TIMES -1.0 -1.0) - 1.0) - (CKFEQ (PLUS -1.0 -1.0) - -2.0) - (CKFEQ (QUOTIENT -1.0 -1.0) - 1.0) - (CKFEQ (DIFFERENCE -1.0 -1) - 0.0) - (CKFEQ (TIMES -1.0 -1) - 1.0) - (CKFEQ (PLUS -1.0 -1) - -2.0) - (CKFEQ (QUOTIENT -1.0 -1) - 1.0) - (CKFEQ (DIFFERENCE -1.0 2) - -3.0) - (CKFEQ (TIMES -1.0 2) - -2.0) - (CKFEQ (PLUS -1.0 2) - 1.0) - (CKFEQ (QUOTIENT -1.0 2) - -.5) - (CKFEQ (DIFFERENCE -1.0 1.0) - -2.0) - (CKFEQ (TIMES -1.0 1.0) - -1.0) - (CKFEQ (PLUS -1.0 1.0) - 0.0) - (CKFEQ (QUOTIENT -1.0 1.0) - -1.0) - (CKFEQ (DIFFERENCE -1.0 1) - -2.0) - (CKFEQ (TIMES -1.0 1) - -1.0) - (CKFEQ (PLUS -1.0 1) - 0.0) - (CKFEQ (QUOTIENT -1.0 1) - -1.0) - (CKEQ (DIFFERENCE -1 -200000Q) - 177777Q) - (CKEQ (TIMES -1 -200000Q) - 200000Q) - (CKEQ (PLUS -1 -200000Q) - -200001Q) - (CKEQ (QUOTIENT -1 -200000Q) - 0) - (CKEQ (DIFFERENCE -1 177777Q) - -200000Q) - (CKEQ (TIMES -1 177777Q) - -177777Q) - (CKEQ (PLUS -1 177777Q) - 177776Q) - (CKEQ (QUOTIENT -1 177777Q) - 0) - (CKFEQ (DIFFERENCE -1 0.0) - -1.0) - (CKFEQ (TIMES -1 0.0) - 0.0) - (CKFEQ (PLUS -1 0.0) - -1.0) - (CKEQ (DIFFERENCE -1 0) - -1) - (CKEQ (TIMES -1 0) - 0) - (CKEQ (PLUS -1 0) - -1) - (CKEQ (DIFFERENCE -1 3) - -4) - (CKEQ (TIMES -1 3) - -3) - (CKEQ (PLUS -1 3) - 2) - (CKEQ (QUOTIENT -1 3) - 0) - (CKFEQ (DIFFERENCE -1 -1.0) - 0.0) - (CKFEQ (TIMES -1 -1.0) - 1.0) - (CKFEQ (PLUS -1 -1.0) - -2.0) - (CKFEQ (QUOTIENT -1 -1.0) - 1.0) - (CKEQ (DIFFERENCE -1 -1) - 0) - (CKEQ (TIMES -1 -1) - 1) - (CKEQ (PLUS -1 -1) - -2) - (CKEQ (QUOTIENT -1 -1) - 1) - (CKEQ (DIFFERENCE -1 2) - -3) - (CKEQ (TIMES -1 2) - -2) - (CKEQ (PLUS -1 2) - 1) - (CKEQ (QUOTIENT -1 2) - 0) - (CKFEQ (DIFFERENCE -1 1.0) - -2.0) - (CKFEQ (TIMES -1 1.0) - -1.0) - (CKFEQ (PLUS -1 1.0) - 0.0) - (CKFEQ (QUOTIENT -1 1.0) - -1.0) - (CKEQ (DIFFERENCE -1 1) - -2) - (CKEQ (TIMES -1 1) - -1) - (CKEQ (PLUS -1 1) - 0) - (CKEQ (QUOTIENT -1 1) - -1) - (CKEQ (DIFFERENCE 2 -200000Q) - 200002Q) - (CKEQ (TIMES 2 -200000Q) - -400000Q) - (CKEQ (PLUS 2 -200000Q) - -177776Q) - (CKEQ (QUOTIENT 2 -200000Q) - 0) - (CKEQ (DIFFERENCE 2 177777Q) - -177775Q) - (CKEQ (TIMES 2 177777Q) - 377776Q) - (CKEQ (PLUS 2 177777Q) - 200001Q) - (CKEQ (QUOTIENT 2 177777Q) - 0) - (CKEQ (DIFFERENCE 2 0.0) - 2.0) - (CKFEQ (TIMES 2 0.0) - 0.0) - (CKFEQ (PLUS 2 0.0) - 2.0) - (CKEQ (DIFFERENCE 2 0) - 2) - (CKEQ (TIMES 2 0) - 0) - (CKEQ (PLUS 2 0) - 2) - (CKEQ (DIFFERENCE 2 3) - -1) - (CKEQ (TIMES 2 3) - 6) - (CKEQ (PLUS 2 3) - 5) - (CKEQ (QUOTIENT 2 3) - 0) - (CKFEQ (DIFFERENCE 2 -1.0) - 3.0) - (CKFEQ (TIMES 2 -1.0) - -2.0) - (CKFEQ (PLUS 2 -1.0) - 1.0) - (CKFEQ (QUOTIENT 2 -1.0) - -2.0) - (CKEQ (DIFFERENCE 2 -1) - 3) - (CKEQ (TIMES 2 -1) - -2) - (CKEQ (PLUS 2 -1) - 1) - (CKEQ (QUOTIENT 2 -1) - -2) - (CKEQ (DIFFERENCE 2 2) - 0) - (CKEQ (TIMES 2 2) - 4) - (CKEQ (PLUS 2 2) - 4) - (CKEQ (QUOTIENT 2 2) - 1) - (CKFEQ (DIFFERENCE 2 1.0) - 1.0) - (CKFEQ (TIMES 2 1.0) - 2.0) - (CKFEQ (PLUS 2 1.0) - 3.0) - (CKFEQ (QUOTIENT 2 1.0) - 2.0) - (CKEQ (DIFFERENCE 2 1) - 1) - (CKEQ (TIMES 2 1) - 2) - (CKEQ (PLUS 2 1) - 3) - (CKEQ (QUOTIENT 2 1) - 2) - (CKFEQ (DIFFERENCE 1.0 -200000Q) - 65537.0) - (CKFEQ (TIMES 1.0 -200000Q) - -65536.0) - (CKFEQ (PLUS 1.0 -200000Q) - -65535.0) - (CKFUZZYEQ (QUOTIENT 1.0 -200000Q) - -.00001525879) - (CKFEQ (DIFFERENCE 1.0 177777Q) - -65534.0) - (CKFEQ (TIMES 1.0 177777Q) - 65535.0) - (CKFEQ (PLUS 1.0 177777Q) - 65536.0) - (CKFUZZYEQ (QUOTIENT 1.0 177777Q) - .00001525902) - (CKFEQ (DIFFERENCE 1.0 0.0) - 1.0) - (CKFEQ (TIMES 1.0 0.0) - 0.0) - (CKFEQ (PLUS 1.0 0.0) - 1.0) - (CKFEQ (DIFFERENCE 1.0 0) - 1.0) - (CKFEQ (TIMES 1.0 0) - 0.0) - (CKFEQ (PLUS 1.0 0) - 1.0) - (CKFEQ (DIFFERENCE 1.0 3) - -2.0) - (CKFEQ (TIMES 1.0 3) - 3.0) - (CKFEQ (PLUS 1.0 3) - 4.0) - (CKFUZZYEQ (QUOTIENT 1.0 3) - .3333333) - (CKFEQ (DIFFERENCE 1.0 -1.0) - 2.0) - (CKFEQ (TIMES 1.0 -1.0) - -1.0) - (CKFEQ (PLUS 1.0 -1.0) - 0.0) - (CKFEQ (QUOTIENT 1.0 -1.0) - -1.0) - (CKFEQ (DIFFERENCE 1.0 -1) - 2.0) - (CKFEQ (TIMES 1.0 -1) - -1.0) - (CKFEQ (PLUS 1.0 -1) - 0.0) - (CKFEQ (QUOTIENT 1.0 -1) - -1.0) - (CKFEQ (DIFFERENCE 1.0 2) - -1.0) - (CKFEQ (TIMES 1.0 2) - 2.0) - (CKFEQ (PLUS 1.0 2) - 3.0) - (CKFEQ (QUOTIENT 1.0 2) - .5) - (CKFEQ (DIFFERENCE 1.0 1.0) - 0.0) - (CKFEQ (TIMES 1.0 1.0) - 1.0) - (CKFEQ (PLUS 1.0 1.0) - 2.0) - (CKFEQ (QUOTIENT 1.0 1.0) - 1.0) - (CKFEQ (DIFFERENCE 1.0 1) - 0.0) - (CKFEQ (TIMES 1.0 1) - 1.0) - (CKFEQ (PLUS 1.0 1) - 2.0) - (CKFEQ (QUOTIENT 1.0 1) - 1.0) - (CKEQ (DIFFERENCE 1 -200000Q) - 200001Q) - (CKEQ (TIMES 1 -200000Q) - -200000Q) - (CKEQ (PLUS 1 -200000Q) - -177777Q) - (CKEQ (QUOTIENT 1 -200000Q) - 0) - (CKEQ (DIFFERENCE 1 177777Q) - -177776Q) - (CKEQ (TIMES 1 177777Q) - 177777Q) - (CKEQ (PLUS 1 177777Q) - 200000Q) - (CKEQ (QUOTIENT 1 177777Q) - 0) - (CKFEQ (DIFFERENCE 1 0.0) - 1.0) - (CKFEQ (TIMES 1 0.0) - 0.0) - (CKFEQ (PLUS 1 0.0) - 1.0) - (CKEQ (DIFFERENCE 1 0) - 1) - (CKEQ (TIMES 1 0) - 0) - (CKEQ (PLUS 1 0) - 1) - (CKEQ (DIFFERENCE 1 3) - -2) - (CKEQ (TIMES 1 3) - 3) - (CKEQ (PLUS 1 3) - 4) - (CKEQ (QUOTIENT 1 3) - 0) - (CKEQ (DIFFERENCE 1 -1.0) - 2.0) - (CKFEQ (TIMES 1 -1.0) - -1.0) - (CKFEQ (PLUS 1 -1.0) - 0.0) - (CKFEQ (QUOTIENT 1 -1.0) - -1.0) - (CKEQ (DIFFERENCE 1 -1) - 2) - (CKEQ (TIMES 1 -1) - -1) - (CKEQ (PLUS 1 -1) - 0) - (CKEQ (QUOTIENT 1 -1) - -1) - (CKEQ (DIFFERENCE 1 2) - -1) - (CKEQ (TIMES 1 2) - 2) - (CKEQ (PLUS 1 2) - 3) - (CKEQ (QUOTIENT 1 2) - 0) - (CKFEQ (DIFFERENCE 1 1.0) - 0.0) - (CKFEQ (TIMES 1 1.0) - 1.0) - (CKFEQ (PLUS 1 1.0) - 2.0) - (CKFEQ (QUOTIENT 1 1.0) - 1.0) - (CKEQ (DIFFERENCE 1 1) - 0) - (CKEQ (TIMES 1 1) - 1) - (CKEQ (PLUS 1 1) - 2) - (CKEQ (QUOTIENT 1 1) - 1]) -) - - - -(* "Compiler error may prevent some of the above functions from getting compiled") - -(DECLARE: DONTEVAL@LOAD DONTEVAL@COMPILE DOCOPY -[MAPC (OR (FILEFNSLST (QUOTE MACROTESTAUX)) - (QUOTE (PUSH.TEST))) - (FUNCTION (LAMBDA (X) - (MOVD? (QUOTE NILL) - X] -) -(PUTPROPS MACROTESTAUX COPYRIGHT ("Xerox Corporation" 3700Q 3701Q)) -(DECLARE: DONTCOPY - (FILEMAP (NIL (3310Q 20067Q (!FVARTEST 3322Q . 3770Q) (PUSH.TEST 3772Q . 5721Q) (CALLS.FIRSTARGTEST -5723Q . 6272Q) (CALLS.LASTARGTEST 6274Q . 6774Q) (CALLS.TOOFEWARGS 6776Q . 7472Q) (FVAR.FREE 7474Q . -11020Q) (FVAR.TEST 11022Q . 12151Q) (FVAR.TEST2 12153Q . 12452Q) (FVAR.TEST3 12454Q . 12663Q) ( -FN.FIRSTARG.FVARS 12665Q . 13175Q) (FN.FIRSTARG.PVARS.FVARS 13177Q . 13561Q) (FN.LASTARG.FVARS 13563Q - . 14173Q) (FN.LASTARG.FVARS.PVARS 14175Q . 14670Q) (FVAR.TESTN 14672Q . 15074Q) (FN.FREE.SKIPPVARS -15076Q . 15402Q) (FN.FREEPVAR 15404Q . 15745Q) (FN.FVAR3 15747Q . 16134Q) (FN.FREEARG 16136Q . 16335Q) - (FN.FR1 16337Q . 16620Q) (FN.FR2 16622Q . 17103Q) (FN.FR3 17105Q . 17526Q) (FAULTTEST 17530Q . 20065Q -)) (20413Q 246456Q (!NUMBERTEST 20425Q . 20772Q) (!NUMTEST1 20774Q . 31247Q) (!NUMTEST2 31251Q . -41611Q) (!NUMTEST3 41613Q . 52720Q) (!NUMTEST4 52722Q . 64753Q) (!NUMTEST5 64755Q . 76701Q) (!NUMTEST6 - 76703Q . 107223Q) (!RANDNUMTEST 107225Q . 111105Q) (!RANDNUMTEST1 111107Q . 124024Q) (!RANDNUMTEST2 -124026Q . 143354Q) (!RANDNUMTEST3 143356Q . 162401Q) (!RANDNUMTEST4 162403Q . 200141Q) (!FNUMTEST -200143Q . 200470Q) (!FNUMTEST1 200472Q . 203004Q) (!FNUMTEST2 203006Q . 204154Q) (!FNUMTEST3 204156Q - . 205635Q) (!FNUMTEST4 205637Q . 206742Q) (!FNUMTEST5 206744Q . 207407Q) (!MIXNUMTEST 207411Q . -246454Q))))) -STOP diff --git a/internal/MACROTESTAUX.LCOM b/internal/MACROTESTAUX.LCOM deleted file mode 100644 index 6710a0d08928a32fb4c162ca99d53058eae857c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177250 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Ⱦ{*QIg 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 zbNa@+-+24R;^YHx-@W_(+y5|&+_`o8_8SXm_local>lde>lispcore>internal>library>DSKTEST.;2 62325 - - changes to%: (VARS DSKTESTCOMS) - (FNS TESTEOFOP) - - previous date%: " 7-Dec-88 11:51:36" {DSK}local>lde>lispcore>internal>library>DSKTEST.;1 -) - - -(* ; " -Copyright (c) 1984, 1985, 1986, 1987, 1988, 1990 by Venue & Xerox Corporation. All rights reserved. -") - -(PRETTYCOMPRINT DSKTESTCOMS) - -(RPAQQ DSKTESTCOMS - ( - (* ;; "This program is a file system tester. It is suitable for testing any random-access filing device. It is NOT intended for customer release. DSKTEST is the entry function.") - - (FNS DSKTEST DELETETESTFILES) - (FNS CHECKCONSISTENCY CHECKLENGTHANDCONTENTS CHOOSERANDOMFILEOPERATION DEFAULT.DSKFREEPAGESFN - DEFAULT.DSKMINALLOCFN DEFAULT.DSKPAGESOVERHEADFN DOTESTFILEOP DSKFREEPAGES DSKMINALLOC - DSKPAGESOVERHEAD EXTENDTESTFILE FILEINFOFROMFILE GENERATEADDFILEOP GENERATECHANGEFILEOP - GENERATEDELETEFILEOP GENERATEEOFPFILEOP GENERATEPEEKBINFILEOP GENERATEDELETEALLFILEOP - RANDOMELT RANDOMFILELENGTH RANDOMFILENAME RANDOMSTR RANDOMTESTFILE SORTBYCAR TESTFILEP - TESTEOFP TESTEOFOP TESTFILEPTR TESTPEEKBIN TRUNCATETESTFILE WORDIN WORDOUT DOUBLEWORDIN - DOUBLEWORDOUT WRITETESTFILE WRITETESTFILELENGTH) - (VARS (DSKFREEPAGESFN (FUNCTION DEFAULT.DSKFREEPAGESFN)) - (DSKPAGESOVERHEADFN (FUNCTION DEFAULT.DSKPAGESOVERHEADFN)) - (DSKMINALLOCFN (FUNCTION DEFAULT.DSKMINALLOCFN))) - [VARS (MINTESTFILELENGTH 10) - (FIRSTTESTWORD 48094) - (SECONDTESTWORD 56187) - (NUMBEROFTESTBYTES 5) - (EXHAUSTIVETESTFLG) - (DEFAULTREPLAYFILE '{PHYLUM}DLIONFS>REPLAY.LOG) - (DONTCLOSEFILESFLG) - (LEGALFILENAMECHARS '(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g - h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9)) - (LEGALFIRSTFILENAMECHARS '(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d - e f g h i j k l m n o p q r s t u v w x y z] - (VARS (MINFILENAMELENGTH 1) - (MAXFILENAMELENGTH 15) - (MINFILEEXTENSIONLENGTH 0) - (MAXFILEEXTENSIONLENGTH 6) - (MAXVERSION 64000) - TESTFILEPAGELENGTHS) - (GLOBALVARS FIRSTTESTWORD SECONDTESTWORD MINTESTFILELENGTH NUMBEROFTESTBYTES - EXHAUSTIVETESTFLG DSKFREEPAGESFN DSKPAGESOVERHEADFN TESTFILEPAGELENGTHS) - (RECORDS TESTFILEINFO TESTFILEOP))) - - - -(* ;; -"This program is a file system tester. It is suitable for testing any random-access filing device. It is NOT intended for customer release. DSKTEST is the entry function." -) - -(DEFINEQ - -(DSKTEST - [LAMBDA (HOST/DIR KEEPREPLAYFILEFLG NUMOPERATIONS CURRENTFILES? DSKTESTBACKUP LOGFILE REPLAYFILE) - (* ; "Edited 6-Dec-88 19:31 by jds") - (* ; - "note: SOME OF THIS MAY NOT BE IMPLEMENTED") - - (* ;; "this is a tester for file systems. Basically it adds, deletes, extends and truncates files of various names and versions checking the consistency of the file system after each operation. A log is kept of the operations so that it can be replayed to duplicate problems that may arise.") - - (* ;; "the two variables DSKFREEPAGESFN and DSKPAGESOVERHEADFN should be set to functions that return the number of free pages available and the overhead for a file with a given number of pages.") - - (* ;; "CURRENTFILES? controls what the tester does with current files. NIL means that their existance will be checked each time but not their contents. T means that the files will be copied into directory DSKTESTBACKUP {defaults is CORE} and their contents will be checked. DELETE will delete all of the test files before the test starts but will leave non test files on the directory. Files written by DSKTEST have a two word key plus length which marks them as DSKTEST files. The rest of them is all the same byte.") - - (* ;; "EXHAUSTIVEFLG if non-NIL indicates that every pass through, the entire contents of each file is checked. Otherwise NUMBEROFTESTBYTES random bytes are examined each time.") - - (* ;; "LOGFILE is where print of progress is put {default to T}. If KEEPREPLAYFILEFLG is T, REPLAYFILE is where the log of event suitable for replaying is kept {default is DEFAULTREPLAYFILE }. If KEEPREPLAYFILEFLG is a file name, events are taken from that file until the last one. Before the last event, BREAK1 is called.") - - (* ;; "DONTCLOSEFILESFLG if non-NIL indicates that files should be left open. This should be faster as it avoids opening and closing files.") - (* ; - "TESTFILEPAGELENGTHS is a list of page lengths that the files will be near.") - (COND - ((NOT (DIRECTORYNAME HOST/DIR)) - (CL:ERROR "Can't connect to directory ~A." HOST/DIR))) - (SETQ HOST/DIR (DIRECTORYNAME HOST/DIR)) - (RESETLST - (PROG ((NUMBEROFOPERATIONSDONE 0) - FILESINFO FILEOP X FROMREPLAYFILE STARTINGTIME) - [COND - [LOGFILE (SETQ LOGFILE (OPENSTREAM LOGFILE 'OUTPUT] - (T (SETQ LOGFILE T) - (COND - ([SETQ X (WFROMDS (GETSTREAM T 'OUTPUT] - (* ; "stop page holding") - (RESETSAVE (WINDOWPROP X 'PAGEFULLFN (FUNCTION NILL)) - (LIST 'WINDOWPROP X 'PAGEFULLFN NIL] - (COND - ((EQ KEEPREPLAYFILEFLG T) - (COND - [REPLAYFILE (SETQ REPLAYFILE (OPENSTREAM REPLAYFILE 'OUTPUT] - (T (SETQ REPLAYFILE DEFAULTREPLAYFILE)))(* ; - "create a replay file and save its full name.") - (SETQ REPLAYFILE (OPENSTREAM REPLAYFILE 'OUTPUT)) - (CLOSEF REPLAYFILE)) - (KEEPREPLAYFILEFLG (* ; "use replay file") - (COND - ((SETQ FROMREPLAYFILE (OPENSTREAM KEEPREPLAYFILEFLG 'INPUT)) - (SETFILEPTR FROMREPLAYFILE 0)) - (T (ERROR KEEPREPLAYFILEFLG "replay file not found"))) - (* ; - "set so that no replay will be made of this run.") - (SETQ KEEPREPLAYFILEFLG))) (* ; - "connect to the tested directory.") - (* ; - "RESETSAVE (CNDIR HOST/DIR) (LIST (QUOTE CNDIR) (DIRECTORYNAME T T))") - (COND - ((EQ CURRENTFILES? 'DELETE) - (printout LOGFILE "Deleting any test files ...." T) - (DELETETESTFILES HOST/DIR) - (printout LOGFILE T))) - [COND - [(AND CURRENTFILES? (NEQ CURRENTFILES? 'DELETE)) - (* ; - "check their contents after every sweep") - (printout T "Not implemented to check old file contents yet.") - - (* ;; "this should copy each file into the backup directory and set the copy as the contents of the file information for the non-test files.") - - (SETQ FILESINFO (for FILE in (SORT (DIRECTORY HOST/DIR)) - collect (FILEINFOFROMFILE FILE] - (T (SETQ FILESINFO (for FILE in (SORT (DIRECTORY HOST/DIR)) - collect (FILEINFOFROMFILE FILE] - (SETQ STARTINGTIME (DATE)) - (printout LOGFILE "Beginning initial check at " STARTINGTIME " ......") - (CHECKCONSISTENCY FILESINFO HOST/DIR) - (BLOCK) - (printout LOGFILE " done." T) - LP (SETQ NUMBEROFOPERATIONSDONE (ADD1 NUMBEROFOPERATIONSDONE)) - [COND - ((AND (NUMBERP NUMOPERATIONS) - (GREATERP NUMBEROFOPERATIONSDONE NUMOPERATIONS)) - (RETURN (LIST (SUB1 NUMBEROFOPERATIONSDONE) - 'operations% done.] (* ; "choose a new file operation") - [COND - [FROMREPLAYFILE (* ; - "getting events from the replay file") - (SETQ FILEOP (READ FROMREPLAYFILE)) - (SKIPSEPRS FROMREPLAYFILE) - (COND - ((EOFP FROMREPLAYFILE) - (CLOSEF FROMREPLAYFILE) - (SETQ FROMREPLAYFILE) - (BREAK1 T T "Before last event on replay file"] - (T (SETQ FILEOP (CHOOSERANDOMFILEOPERATION FILESINFO HOST/DIR] - [COND - (KEEPREPLAYFILEFLG (* ; - "put op on REPLAYFILE and make sure it gets there.") - (PROG [(STRM (OPENSTREAM REPLAYFILE 'APPEND] - (PRINT FILEOP STRM) - (CLOSEF STRM] - (printout LOGFILE ".......... start=" STARTINGTIME " time=" (DATE) - T) - (PRINT FILEOP LOGFILE) - (SETQ FILESINFO (DOTESTFILEOP FILEOP FILESINFO HOST/DIR LOGFILE)) - (printout LOGFILE "Consistency check after operation " NUMBEROFOPERATIONSDONE " .....") - (BLOCK) - [COND - ((NOT DONTCLOSEFILESFLG) - - (* ;; "All files dshould be closed at this point:") - - (for FILE in FILESINFO when (for OPENFILE in (OPENP) - thereis (EQ (FULLNAME OPENFILE) - (fetch (TESTFILEINFO - - TESTFILEFULLNAME - ) - of FILE))) - do (HELP "File open that shouldn't be:" (fetch (TESTFILEINFO - TESTFILEFULLNAME) - of FILE] - (CHECKCONSISTENCY FILESINFO HOST/DIR) - (printout LOGFILE " done." T) - (GO LP)))]) - -(DELETETESTFILES - [LAMBDA (HOST/DIR CHECKENTIRECONTENTSFLG) (* hts%: "22-Oct-84 16:27") - (* deletes any TEST files from - directory HOST/DIR) - (for FILE in (DIRECTORY HOST/DIR) when (TESTFILEP FILE (NOT CHECKENTIRECONTENTSFLG)) - do (if (OPENP FILE) - then (CLOSEF FILE)) - (PRINT (DELFILE FILE) - T]) -) -(DEFINEQ - -(CHECKCONSISTENCY - [LAMBDA (FILESINFO HOST/DIR) (* ; "Edited 2-Nov-87 13:55 by jds") - - (* ;; "checks that the state of the currently connected directory (or HOST/DIR, if given) is exactly the same as FILESINFO.") - - (PROG [(DIRFILES (SORT (DIRECTORY HOST/DIR] - (for DIRFILE in DIRFILES as FILEINFO in FILESINFO - do (BLOCK) - [COND - ((NEQ (U-CASE DIRFILE) - (U-CASE (fetch (TESTFILEINFO TESTFILEFULLNAME) of FILEINFO))) - (* ; - "something is wrong with the directory. Find out what") - - (COND - ((FASSOC (U-CASE DIRFILE) - (MEMB FILEINFO FILESINFO)) (* ; "this file shows up later") - - (ERROR "FILE MISSING .. " (fetch (TESTFILEINFO TESTFILEFULLNAME) of FILEINFO) - )) - (T (ERROR "NEW FILE HAS APPEARED .. " DIRFILE] - (CHECKLENGTHANDCONTENTS FILEINFO]) - -(CHECKLENGTHANDCONTENTS - [LAMBDA (FILEINFO) (* ; "Edited 4-Nov-87 11:24 by jds") - - (* ;; "checks the length and contents of a file from its in core representation.") - - (PROG ((STRM (OPENSTREAM (fetch (TESTFILEINFO TESTFILEFULLNAME) of FILEINFO) - 'INPUT)) - (FILELENGTH (fetch (TESTFILEINFO FILELENGTH) of FILEINFO)) - (STARTBYTE (fetch (TESTFILEINFO STARTBYTE) of FILEINFO)) - (PERIOD (fetch (TESTFILEINFO PERIOD) of FILEINFO))) - (COND - ([NOT (EQP FILELENGTH (GETFILEINFO STRM 'LENGTH] - (ERROR "FILE has wrong length ... " FILEINFO))) - [COND - ((AND STARTBYTE PERIOD (IGEQ FILELENGTH MINTESTFILELENGTH)) - - (* ;; "test files contain at least enough bytes to hold keys and stuff. Maybe should have a special test for zero length files.") - - (COND - ((OR (NEQ (WORDIN STRM) - FIRSTTESTWORD) - (NEQ (WORDIN STRM) - SECONDTESTWORD) - (NOT (EQP FILELENGTH (DOUBLEWORDIN STRM))) - (NEQ (BIN STRM) - STARTBYTE) - (NEQ (BIN STRM) - PERIOD)) - (ERROR "FIRST 10 bytes of file is wrong .. " FILEINFO))) - [COND - ((IGREATERP FILELENGTH MINTESTFILELENGTH) (* ; - "only bother checking if we have data bytes") - - (COND - ((EQ 1 (RAND 1 7)) - - (* ;; "SCAN ENTIRE FILE once in about every seven tests.") - - (bind READBYTE (CURVALUE _ STARTBYTE) - (BLOCKCOUNT _ 0) for COMPUTEDBYTE from STARTBYTE - to (IPLUS STARTBYTE FILELENGTH (IMINUS MINTESTFILELENGTH) - -1) by 1 when [PROGN (COND - ((ZEROP (SETQ BLOCKCOUNT - (IMOD (ADD1 BLOCKCOUNT) - 100))) - (BLOCK))) - (PROG1 (NEQ (SETQ READBYTE (\BIN STRM)) - CURVALUE) - (SETQ CURVALUE (IMOD (ADD1 CURVALUE) - PERIOD] - do (printout LOGFILE "FILE HAS WRONG BYTE .. " T "should have " - (IMOD COMPUTEDBYTE PERIOD) - " but read " READBYTE " from file" T "at location " - (SUB1 (GETFILEPTR STRM)) - T) - (ERROR "FILE HAS WRONG BYTE .. " FILEINFO))) - (T - -(* ;;; "SPOT CHECK FILE") - - [bind SPOT COMPUTEDBYTE READBYTE to 7 - do (BLOCK) - (SETQ SPOT (RAND MINTESTFILELENGTH (SUB1 FILELENGTH))) - (SETQ COMPUTEDBYTE (PLUS (MINUS MINTESTFILELENGTH) - SPOT STARTBYTE)) - (SETFILEPTR STRM SPOT) - (COND - ((NEQ (SETQ READBYTE (\BIN STRM)) - (IMOD COMPUTEDBYTE PERIOD)) - (printout LOGFILE "FILE HAS WRONG BYTE .. " T "should have " - (IMOD COMPUTEDBYTE PERIOD) - " but read " READBYTE " from file" T "at location " - (SUB1 (GETFILEPTR STRM)) - T) - (ERROR "FILE HAS WRONG BYTE .. " FILEINFO] - (SETFILEPTR STRM FILELENGTH] - (OR (EOFP STRM) - (ERROR "FILE doesn't get EOFP ... " FILEINFO] - (OR DONTCLOSEFILESFLG (CLOSEF STRM]) - -(CHOOSERANDOMFILEOPERATION - [LAMBDA (FILESINFO HOST/DIR) (* ; "Edited 2-Nov-87 12:25 by jds") - - (* ;; "chooses a random file operation add delete setlength on a random file and return a TESTFILEOP record for it.") - - (COND - [FILESINFO (PROG ((RANDNUM (RAND 1 300))) - (RETURN (COND - ((ILEQ RANDNUM 75) (* ; "add a file") - - (GENERATEADDFILEOP FILESINFO NIL HOST/DIR)) - ((ILEQ RANDNUM 125) (* ; "Change the length of a file") - - (GENERATECHANGEFILEOP FILESINFO HOST/DIR)) - ((ILEQ RANDNUM 175) (* ; "delete a file") - - (GENERATEDELETEFILEOP FILESINFO NIL HOST/DIR)) - ((ILEQ RANDNUM 225) (* ; "do EOFP test") - - (GENERATEEOFPFILEOP FILESINFO HOST/DIR)) - ((ILEQ RANDNUM 295) (* ; "do PEEKBIN test") - - (GENERATEPEEKBINFILEOP FILESINFO HOST/DIR)) - (T (* ; "delete all files once in a while") - - (GENERATEDELETEALLFILEOP] - (T (* ; "add a file") - - (GENERATEADDFILEOP FILESINFO NIL HOST/DIR]) - -(DEFAULT.DSKFREEPAGESFN - [LAMBDA (HOST/DIR) (* mjs "17-Apr-86 14:59") - (SELECTQ (FILENAMEFIELD HOST/DIR 'HOST) - (DSK (SELECTQ (MACHINETYPE) - ((DORADO) - (DISKFREEPAGES HOST)) - ((DANDELION DOVE) - (DISKFREEPAGES HOST/DIR)) - (MAIKO 500) - (SHOULDNT))) - (FLOPPY (FLOPPY.FREE.PAGES)) - (PCDISK (* remember to strip trailing colon - off of device name!!) - (VPCDISK.FREEPAGES (SUBATOM (FILENAMEFIELD HOST/DIR 'DEVICE) - 1 -2))) - MAX.SMALLP]) - -(DEFAULT.DSKMINALLOCFN - [LAMBDA (HOST/DIR) (* mjs "22-Jan-86 12:18") - (* Default minimum-allocation unit - function) - (SELECTQ (FILENAMEFIELD HOST/DIR 'HOST) - (DSK (SELECTQ (MACHINETYPE) - ((DANDELION DOVE) (* DLIONFS allocates 25 at a crackj.) - 25) - ((DOLPHIN DORADO) - 1) - (MAIKO 1) - (SHOULDNT))) - (FLOPPY 1) - 1]) - -(DEFAULT.DSKPAGESOVERHEADFN - [LAMBDA (HOST/DIR NEWFILELENGTH) (* mjs "22-Jan-86 12:18") - (* default overhead function) - (SELECTQ (FILENAMEFIELD HOST/DIR 'HOST) - (DSK (SELECTQ (MACHINETYPE) - ((DANDELION DOVE) - - (* * 11 is 5 for worst-case btree split on file, 5 for split on directory, 1 - for leaderpage; NEWFILELENGTH and \LFrunSize for maximum length file will - attain during allocation; and \LFrunSize for possible directory extension.) - - (PLUS 11 NEWFILELENGTH \LFrunSize \LFrunSize)) - ((DOLPHIN DORADO) - (IPLUS NEWFILELENGTH 5)) - (MAIKO (IPLUS NEWFILELENGTH 5)) - (SHOULDNT))) - (FLOPPY (IPLUS NEWFILELENGTH 5)) - (IPLUS NEWFILELENGTH 5]) - -(DOTESTFILEOP - [LAMBDA (FILEOP FILEINFOLST HOST/DIR LOGFILE) (* ; "Edited 7-Dec-88 06:03 by jds") - - (* ;; "performs a TESTFILEOPERATION and updates the incore idea about what the directory should now look like. Returns the changed FILEINFOLST.") - (* ; - "operation can be add, delete or changelength") - (SELECTQ (fetch (TESTFILEOP TESTOPERATION) of FILEOP) - (ADD [PROG ((FULLFILE (fetch (TESTFILEOP TESTOPFILENAME) of FILEOP)) - (BYTELEN (fetch (TESTFILEOP TESTOPFILELENGTH) of FILEOP)) - (STARTBYTE (fetch (TESTFILEOP STARTBYTE) of FILEOP)) - (PERIOD (fetch (TESTFILEOP PERIOD) of FILEOP)) - (OLDDISKFREEPAGES (DSKFREEPAGES HOST/DIR))) - (COND - ((SETQ FULLFILE (WRITETESTFILE FULLFILE BYTELEN STARTBYTE PERIOD)) - (BLOCK)) - (T (ERROR "file wasn't written. " FILEOP))) - (COND - ((EQ FULLFILE T) - (HELP))) - (RETURN (SORTBYCAR (CONS (create TESTFILEINFO - TESTFILEFULLNAME _ FULLFILE - FILELENGTH _ BYTELEN - STARTBYTE _ STARTBYTE - PERIOD _ PERIOD - TESTFILEORIGNAME _ (fetch (TESTFILEOP - TESTOPFILENAME) - of FILEOP)) - FILEINFOLST]) - (DELETE (PROG ((DELFILEINFO (fetch (TESTFILEOP TESTOPFILENAME) of FILEOP))) - (COND - ((DELFILE (fetch (TESTFILEINFO TESTFILEFULLNAME) of DELFILEINFO)) - (BLOCK)) - (T (ERROR "file won't delete" DELFILEINFO))) - (RETURN (REMOVE DELFILEINFO FILEINFOLST)))) - (DELETEALL (for F in FILEINFOLST unless (PROGN (BLOCK) - (DELFILE (fetch (TESTFILEINFO - - TESTFILEFULLNAME - ) - of F))) - do (ERROR "file won't delete" F)) - NIL) - (CHANGELENGTH (PROG ((TESTFILE (fetch (TESTFILEINFO TESTFILEFULLNAME) - of (fetch (TESTFILEOP TESTOPFILENAME) of FILEOP - ))) - (NEWLENGTH (fetch (TESTFILEOP TESTOPFILELENGTH) of FILEOP)) - (OLDDISKFREEPAGES (DSKFREEPAGES HOST/DIR)) - NOWLENGTH CHANGEFILEINFO XFILEINFO) - (COND - ((SETQ CHANGEFILEINFO (for FILEINFO in FILEINFOLST - thereis (EQ (fetch (TESTFILEINFO - TESTFILEFULLNAME) - of FILEINFO) - TESTFILE))) - - (* ;; "look for the one on FILEINFOLST that has the same name as this one may have been read in from the replay file and not be EQ.") - - NIL) - (T (ERROR "changing a file that is not on file information list." - CHANGEFILEINFO) - (RETURN))) - (COND - ((IGREATERP NEWLENGTH (SETQ NOWLENGTH (fetch (TESTFILEINFO - FILELENGTH) - of CHANGEFILEINFO))) - (* ; "extend the file") - (EXTENDTESTFILE TESTFILE (fetch (TESTFILEINFO STARTBYTE) - of CHANGEFILEINFO) - (fetch (TESTFILEINFO PERIOD) of CHANGEFILEINFO) - NOWLENGTH NEWLENGTH) - (BLOCK)) - (T (* ; "truncate the file.") - (TRUNCATETESTFILE TESTFILE NEWLENGTH))) - (replace (TESTFILEINFO FILELENGTH) of CHANGEFILEINFO with - NEWLENGTH) - (RETURN FILEINFOLST))) - (EOFP (PROG ((TESTFILE (fetch (TESTFILEINFO TESTFILEFULLNAME) of (fetch - (TESTFILEOP - TESTOPFILENAME - ) - of FILEOP))) - (NEWLENGTH (fetch (TESTFILEOP TESTOPFILELENGTH) of FILEOP)) - (OLDDISKFREEPAGES (DSKFREEPAGES HOST/DIR)) - NOWLENGTH CHANGEFILEINFO XFILEINFO) - (COND - ((SETQ CHANGEFILEINFO (for FILEINFO in FILEINFOLST - thereis (EQ (fetch (TESTFILEINFO - TESTFILEFULLNAME) - of FILEINFO) - TESTFILE))) - - (* ;; "look for the one on FILEINFOLST that has the same name as this one may have been read in from the replay file and not be EQ.") - - NIL) - (T (ERROR "changing a file that is not on file information list." - CHANGEFILEINFO) - (RETURN))) - (TESTEOFP TESTFILE (fetch (TESTFILEINFO STARTBYTE) of CHANGEFILEINFO) - (fetch (TESTFILEINFO PERIOD) of CHANGEFILEINFO) - NEWLENGTH LOGFILE) - (replace (TESTFILEINFO FILELENGTH) of CHANGEFILEINFO with NEWLENGTH) - (RETURN FILEINFOLST))) - (PEEKBIN (PROG ((TESTFILE (fetch (TESTFILEINFO TESTFILEFULLNAME) - of (fetch (TESTFILEOP TESTOPFILENAME) of FILEOP))) - CHANGEFILEINFO) - (COND - ((SETQ CHANGEFILEINFO (for FILEINFO in FILEINFOLST - thereis (EQ (fetch (TESTFILEINFO - TESTFILEFULLNAME - ) of - FILEINFO - ) - TESTFILE))) - - (* ;; "look for the one on FILEINFOLST that has the same name as this one may have been read in from the replay file and not be EQ.") - - NIL) - (T (ERROR "changing a file that is not on file information list." - CHANGEFILEINFO) - (RETURN))) - (TESTPEEKBIN TESTFILE NIL LOGFILE) - (RETURN FILEINFOLST))) - (ERROR "unknown file operation" FILEOP]) - -(DSKFREEPAGES - [LAMBDA (HOST/DIR) (* hts%: "29-Apr-84 16:23") - - (* returns the number of free pages in the connected directory if it knows how.) - - (APPLY* DSKFREEPAGESFN HOST/DIR]) - -(DSKMINALLOC - [LAMBDA (HOST/DIR) (* mjs "22-Jan-86 12:18") - - (* Calls the device dependent function that gives the minimum %# of pages the - file system will allocate at a crack.) - - (APPLY* DSKMINALLOCFN HOST/DIR]) - -(DSKPAGESOVERHEAD - [LAMBDA (HOST/DIR NEWFILELENGTH) (* mjs "22-Jan-86 12:18") - - (* calls the device dependent function that gives the overhead per file) - - (APPLY* DSKPAGESOVERHEADFN HOST/DIR NEWFILELENGTH]) - -(EXTENDTESTFILE - [LAMBDA (FILENAME STARTBYTE PERIOD OLDLENGTH NEWLENGTH)(* ; "Edited 7-Dec-88 05:59 by jds") - - (* ;; "extends a file by writing CONTENTS byte to it until it has length LONGERLENGTH.") - - (COND - ((OPENP FILENAME) (* ; - "file may be open already for read.") - (CLOSEF FILENAME))) - (PROG [(STRM (OPENSTREAM FILENAME 'BOTH] - (COND - ((NULL STRM) - (ERROR "file that it supposed to exist won't open for extending." FILENAME))) - (* ; - "update the length count stored in the file.") - (WRITETESTFILELENGTH STRM NEWLENGTH) - (SETFILEPTR STRM OLDLENGTH) - [for BYTE from (IPLUS STARTBYTE OLDLENGTH (IMINUS MINTESTFILELENGTH)) - to (IPLUS STARTBYTE NEWLENGTH (IMINUS MINTESTFILELENGTH) - -1) do (BOUT STRM (IMOD BYTE PERIOD)) - (COND - ((ZEROP (IMOD BYTE 100)) - (BLOCK] - (OR DONTCLOSEFILESFLG (CLOSEF STRM]) - -(FILEINFOFROMFILE - [LAMBDA (FILE) (* hts%: "22-Oct-84 15:44") - (* returns a TESTFILEINFO record of - information about FILE.) - - (* keep track of test files differently because contents can be represented as - a single byte.) - - (if (EQ FILE T) - then (HELP "FILE IS T!!?")) - (PROG ((CONTENTS (TESTFILEP FILE NIL T))) - (RETURN (create TESTFILEINFO - TESTFILEFULLNAME _ FILE - FILELENGTH _ (GETFILEINFO FILE 'LENGTH) - STARTBYTE _ (CAR CONTENTS) - PERIOD _ (CDR CONTENTS]) - -(GENERATEADDFILEOP - [LAMBDA (FILEINFOLST STOPIFCANTFLG HOST/DIR) (* edited%: "13-Aug-85 11:28") - (PROG ((LENGTH (RANDOMFILELENGTH HOST/DIR)) - (PERIOD (RAND 1 255))) - (RETURN (COND - (LENGTH (create TESTFILEOP - TESTOPERATION _ 'ADD - TESTOPFILENAME _ (RANDOMFILENAME HOST/DIR) - TESTOPFILELENGTH _ LENGTH - STARTBYTE _ (RAND 0 PERIOD) - PERIOD _ PERIOD)) - (STOPIFCANTFLG (ERROR "probably out of disk space.")) - (T (GENERATEDELETEFILEOP FILEINFOLST T HOST/DIR]) - -(GENERATECHANGEFILEOP - [LAMBDA (FILEINFOLST HOST/DIR) (* hts%: "29-Apr-84 16:29") - (PROG ((FILETOCHANGE (RANDOMTESTFILE FILEINFOLST)) - (LENGTH (RANDOMFILELENGTH HOST/DIR))) - (RETURN (COND - ((NULL FILETOCHANGE) (* create a file instead) - (GENERATEADDFILEOP FILEINFOLST T HOST/DIR)) - ((NULL LENGTH) (* if can't change the length, try - deleting a file.) - (GENERATEDELETEFILEOP FILEINFOLST T HOST/DIR)) - (T (create TESTFILEOP - TESTOPERATION _ 'CHANGELENGTH - TESTOPFILENAME _ FILETOCHANGE - TESTOPFILELENGTH _ LENGTH]) - -(GENERATEDELETEFILEOP - [LAMBDA (FILEINFOLST STOPIFNONEFLG HOST/DIR) (* hts%: "22-Oct-84 16:54") - (* generates a delete file operation.) - - (* if it can't, it generates an file operation to ADD unless STOPIFNONEFLG is T) - - (PROG ((FILETODEL (RANDOMTESTFILE FILEINFOLST))) - (RETURN (COND - (FILETODEL (create TESTFILEOP - TESTOPERATION _ 'DELETE - TESTOPFILENAME _ FILETODEL)) - (STOPIFNONEFLG (ERROR "No file to delete")) - (T (GENERATEADDFILEOP FILEINFOLST T HOST/DIR]) - -(GENERATEEOFPFILEOP - [LAMBDA (FILEINFOLST HOST/DIR) (* AJB "31-Jul-86 15:46") - (PROG ((FILETOCHANGE (RANDOMTESTFILE FILEINFOLST)) - (LENGTH (RANDOMFILELENGTH HOST/DIR))) - (RETURN (COND - ((NULL FILETOCHANGE) (* create a file instead) - (GENERATEADDFILEOP FILEINFOLST T HOST/DIR)) - ((NULL LENGTH) (* if can't change the length, try - deleting a file.) - (GENERATEDELETEFILEOP FILEINFOLST T HOST/DIR)) - (T (create TESTFILEOP - TESTOPERATION _ 'EOFP - TESTOPFILENAME _ FILETOCHANGE - TESTOPFILELENGTH _ LENGTH]) - -(GENERATEPEEKBINFILEOP - [LAMBDA (FILEINFOLST HOST/DIR) (* AJB " 1-Aug-86 10:14") - (PROG ((FILETOCHANGE (RANDOMTESTFILE FILEINFOLST))) - (RETURN (COND - ((NULL FILETOCHANGE) (* create a file instead) - (GENERATEADDFILEOP FILEINFOLST T HOST/DIR)) - ((NULL LENGTH) (* if can't change the length, try - deleting a file.) - (GENERATEDELETEFILEOP FILEINFOLST T HOST/DIR)) - (T (create TESTFILEOP - TESTOPERATION _ 'PEEKBIN - TESTOPFILENAME _ FILETOCHANGE]) - -(GENERATEDELETEALLFILEOP - [LAMBDA NIL (* hts%: " 5-Jun-84 08:58") - (create TESTFILEOP - TESTOPERATION _ 'DELETEALL]) - -(RANDOMELT - [LAMBDA (LST) (* rrb "27-Mar-84 09:59") - (* returns a random element of a list.) - (CAR (NTH LST (RAND 1 (LENGTH LST]) - -(RANDOMFILELENGTH - [LAMBDA (HOST/DIR) (* ; "Edited 2-Nov-87 12:27 by jds") - - (* ;; "returns a random file length. (In bytes) that's guaranteed to fit in the file system in its current state.") - - (PROG ((NPAGES (RANDOMELT TESTFILEPAGELENGTHS)) - (DSKPAGES (DSKFREEPAGES HOST/DIR)) - (MINALLOC (DSKMINALLOC HOST/DIR)) - FILEOVERHEAD) (* ; - "checks that there are enough free pages to store the file.") - - [COND - ((ILEQ DSKPAGES (IPLUS MINALLOC (DSKPAGESOVERHEAD HOST/DIR MINALLOC))) - - (* ;; "There is no room for this file under any conditions -- there aren't enough pages to allocate a minimum-sized file") - - (RETURN NIL)) - ((IGREATERP (IPLUS NPAGES (SETQ FILEOVERHEAD (DSKPAGESOVERHEAD HOST/DIR NPAGES))) - DSKPAGES) - - (* ;; "There is room for A file. Now pick a file size that will fit. FILEOVERHEAD should be a high estimate of the overhead for the file, since the new NPAGES will be lower than the prior number.") - - (SETQ NPAGES (IDIFFERENCE DSKPAGES FILEOVERHEAD] - (* ; - "weight to return a length around an even number of pages.") - - (RETURN (IMAX MINTESTFILELENGTH (IPLUS (ITIMES NPAGES BYTESPERPAGE) - (SELECTQ (RAND 0 3) - (0 0) - (1 1) - (2 -1) - (RAND -511 512]) - -(RANDOMFILENAME - [LAMBDA (HOST/DIR) (* mjs "18-Apr-86 08:27") - (* generates a random file name.) - (U-CASE (PACK* HOST/DIR (COND - [(EQ 'PCDISK (FILENAMEFIELD HOST/DIR 'HOST)) - (PACKFILENAME 'NAME (RANDOMSTR (RAND 1 6)) - 'EXTENSION - (RANDOMSTR (RAND 0 3] - (T (PACKFILENAME 'NAME (RANDOMSTR (RAND MINFILENAMELENGTH - MAXFILENAMELENGTH)) - 'EXTENSION - (RANDOMSTR (RAND MINFILEEXTENSIONLENGTH - MAXFILEEXTENSIONLENGTH)) - 'VERSION - (SELECTQ (RAND 0 1) - (0 (* give an explicit extension) - (RAND 1 MAXVERSION)) - NIL]) - -(RANDOMSTR - [LAMBDA (NCHARS) (* rrb "27-Mar-84 09:38") - (* returns a random string NCHARS - long.) - (PACK (CONS [CAR (NTH LEGALFIRSTFILENAMECHARS (RAND 1 (LENGTH LEGALFIRSTFILENAMECHARS] - (bind (%#LEGALFILENAMECHARS _ (LENGTH LEGALFILENAMECHARS)) for I from 1 - to (SUB1 NCHARS) collect (CAR (NTH LEGALFILENAMECHARS (RAND 1 %#LEGALFILENAMECHARS - ]) - -(RANDOMTESTFILE - [LAMBDA (FILEINFOLST) (* hts%: "22-Oct-84 16:10") - - (* chooses a random test file from FILEINFOLST. - This avoids deleting not test files.) - - (PROG ((NTESTFILES (for FILE in FILEINFOLST when (SMALLP (fetch (TESTFILEINFO STARTBYTE) - of FILE)) sum 1)) - NFILE) - (RETURN (if (NEQ NTESTFILES 0) - then (SETQ NFILE (RAND 1 NTESTFILES)) - (for FILE in FILEINFOLST when (SMALLP (fetch (TESTFILEINFO STARTBYTE) - of FILE)) - do (if (ZEROP (SETQ NFILE (SUB1 NFILE))) - then (RETURN FILE]) - -(SORTBYCAR - [LAMBDA (LST) (* ; "Edited 6-Dec-88 22:54 by jds") - (* sorts a list by its CARs) - (SORT LST (FUNCTION (LAMBDA (A B) - (ALPHORDER (U-CASE (CAR A)) - (U-CASE (CAR B]) - -(TESTFILEP - [LAMBDA (FILE HINTONLYFLG RETURNCONTENTSFLG) (* ; "Edited 3-Nov-87 16:26 by jds") - - (* ;; "determines if a file is a test file.") - - (PROG ((STRM (OPENSTREAM FILE 'INPUT)) - FILELENGTH STARTBYTE PERIOD) - (SETQ FILELENGTH (GETFILEINFO STRM 'LENGTH)) - (RETURN (PROG1 [COND - ((ILESSP FILELENGTH MINTESTFILELENGTH) - - (* ;; "test files contain at least enough bytes to hold keys and stuff. Maybe should have a special test for zero length files.") - - NIL) - ((AND (EQ (WORDIN STRM) - FIRSTTESTWORD) - (EQ (WORDIN STRM) - SECONDTESTWORD) - (EQP FILELENGTH (DOUBLEWORDIN STRM))) - (COND - (HINTONLYFLG (* ; - "if asking about hint only, don't check contents.") - - (COND - (RETURNCONTENTSFLG (CONS (BIN STRM) - (BIN STRM))) - (T FILE))) - (T (SETQ STARTBYTE (BIN STRM)) - (SETQ PERIOD (BIN STRM)) - (bind (RUNNINGVALUE _ STARTBYTE) for COMPUTEDBYTE from STARTBYTE - to (IPLUS STARTBYTE FILELENGTH -1 (IMINUS MINTESTFILELENGTH)) - when (PROG1 (NEQ (BIN STRM) - RUNNINGVALUE) - (SETQ RUNNINGVALUE (IMOD (ADD1 RUNNINGVALUE) - PERIOD))) - do (RETURN NIL) finally (RETURN (COND - (RETURNCONTENTSFLG - (CONS STARTBYTE PERIOD)) - (T FILE] - (CLOSEF STRM]) - -(TESTEOFP - [LAMBDA (FILENAME STARTBYTE PERIOD NEWLENGTH LOGFILE) (* ; "Edited 7-Dec-88 06:04 by jds") - - (* ;; "Test the EOFP method for this file device.") - - (COND - ((OPENP FILENAME) (* ; - "file may be open already for read.") - (CLOSEF FILENAME))) - (LET* [(STRM (OPENSTREAM FILENAME 'BOTH)) - (OLDLENGTH (GETFILEINFO STRM 'LENGTH] - (COND - ((NULL STRM) - (CL:WARN "file ~A won't open for end of file tests." FILENAME))) - [COND - [(SETFILEINFO STRM 'LENGTH NEWLENGTH) - (COND - ((NOT (= (\GETEOFPTR STRM) - NEWLENGTH)) - (CL:FORMAT LOGFILE "Changing file ~A to NEWLENGTH ~D didn't change EOFPTR. -" FILENAME NEWLENGTH) - (CL:WARN "Changing file ~A to NEWLENGTH ~D didn't change EOFPTR. -" FILENAME NEWLENGTH))) - (SETFILEPTR STRM NEWLENGTH) - (WRITETESTFILELENGTH STRM NEWLENGTH) - (CLOSEF STRM) - [COND - ((NOT (EQP (GETFILEINFO FILENAME 'LENGTH) - NEWLENGTH)) - (CL:FORMAT LOGFILE "Changing file ~A to NEWLENGTH ~D didn't take; length still ~D" - FILENAME NEWLENGTH (GETFILEINFO FILENAME 'LENGTH)) - (CL:WARN "Changing file ~A to NEWLENGTH ~D didn't take; length still ~D" FILENAME - NEWLENGTH (GETFILEINFO FILENAME 'LENGTH] - (SETQ STRM (OPENSTREAM FILENAME 'BOTH)) - (COND - ((NOT (EQP (GETFILEINFO FILENAME 'LENGTH) - NEWLENGTH)) - (CL:FORMAT LOGFILE - "Re-opening file ~A after changing to NEWLENGTH ~D lost new length. -" FILENAME NEWLENGTH) - (CL:WARN "Re-opening file ~A after changing to NEWLENGTH ~D lost new length. -" FILENAME NEWLENGTH))) - (TESTFILEPTR STRM NEWLENGTH LOGFILE) - (SETFILEINFO STRM 'LENGTH NEWLENGTH) - (CLOSEF STRM) - (COND - ((NOT (EQP (GETFILEINFO FILENAME 'LENGTH) - NEWLENGTH)) - (CL:WARN "Changing file ~A to NEWLENGTH ~D the second time didn't take either. -" FILENAME NEWLENGTH] - (T (SETQ NEWLENGTH (GETFILEINFO STRM 'LENGTH] - (SETQ STRM (OPENSTREAM FILENAME 'INPUT)) - [for I from 0 to (SUB1 NEWLENGTH) do (COND - ((EOFP STRM) - (ERROR "EARLY EOF" I))) - (BIN STRM) - finally (COND - ((NOT (EOFP STRM)) - (ERROR "EOFP not true at end of file"] - (TESTEOFOP STRM NEWLENGTH (FUNCTION ZERO) - 0 LOGFILE) - (TESTEOFOP STRM NEWLENGTH (FUNCTION NILL) - NIL LOGFILE) - (CLOSEF STRM) - (EXTENDTESTFILE FILENAME STARTBYTE PERIOD OLDLENGTH NEWLENGTH]) - -(TESTEOFOP - [LAMBDA (STREAM FILESIZE FN EOFVALUE LOGFILE) (* ; "Edited 15-Jun-90 14:04 by jds") - - (* ;; - "Test ENDOFSTREAMOP, using FN as the function to call (THAT FUNCTION SHOULD RETURN EOFVALUE)") - - (PRINTOUT LOGFILE %,, %,, "Testing with ENDOFSTREAMOP set to " FN T) - (SETFILEPTR STREAM 0) - (replace (STREAM ENDOFSTREAMOP) of STREAM with FN) - (for I from 0 to (SUB1 FILESIZE) do (COND - ((EOFP STREAM) - (ERROR "Early EOF at" I))) - (BIN STREAM) - finally (COND - ((NOT (EOFP STREAM)) - (ERROR "EOFP NIL at EOF."))) - (OR (EQ EOFVALUE (BIN STREAM)) - (ERROR "End-of-stream value not returned right from function " FN)) - (OR (EOFP STREAM) - (ERROR "EOFP is NIL after a BIN at EOF"]) - -(TESTFILEPTR - [LAMBDA (STRM FILESIZE LOGFILE) (* ; "Edited 7-Dec-88 11:42 by jds") - -(* ;;; "Test setting fileptr past EOF") - - (PRINTOUT LOGFILE .TAB 5 "Testing FILEPTR" T) - (PRINTOUT LOGFILE .TAB 10 "FILESIZE = " FILESIZE T) - (bind BYTE for FILEPTR in '(8192 512 4096 8191 513 4097 8193 511 4095) - do (PRINTOUT LOGFILE .TAB 10 "Setting EOF and FILEPTR to " FILESIZE T) - (SETFILEINFO STRM 'LENGTH FILESIZE) - (SETFILEPTR STRM FILESIZE) - (COND - ((NOT (EOFP STRM)) - (CL:WARN "EOFP not set at ~D " FILESIZE))) - (PRINTOUT LOGFILE .TAB 10 "FILESIZE extended by " FILEPTR T) - (SETFILEPTR STRM (IPLUS FILESIZE FILEPTR)) - [COND - ((CL:/= (IPLUS FILESIZE FILEPTR) - (GETFILEPTR STRM)) - (CL:WARN "FILEPOS wrong after SETFILEPTR; is ~D, should be ~D. -" (GETFILEPTR STRM) - (IPLUS FILESIZE FILEPTR] - (BOUT STRM 6) - [COND - ((CL:/= (IPLUS FILESIZE FILEPTR 1) - (GETFILEPTR STRM)) - (CL:WARN "FILEPOS wrong after BOUT; is ~D, should be ~D. -" (GETFILEPTR STRM) - (IPLUS FILESIZE FILEPTR 1] - (SETFILEPTR STRM FILESIZE) - (PRINTOUT LOGFILE .TAB 10 "Testing new allocated area = zero" T) - [for I from FILESIZE to (IPLUS FILESIZE FILEPTR -1) - do (COND - ((NEQ (BIN STRM) - 0) - (CL:WARN "Newly-allocated area not zeroed.") - (RETURN] - (PRINTOUT LOGFILE .TAB 10 "Testing new EOF and last byte written" T) - (COND - ((EOFP STRM) - (CL:WARN "Early EOF; before BINning file's last byte. -"))) - (COND - ((NEQ (SETQ BYTE (BIN STRM)) - 6) - (CL:WARN "BIN didn't return what was just BOUTed; was ~D, should be 6. -" BYTE))) - (COND - ((EOFP STRM)) - (T (CL:WARN "EOFP false after BINning file's final byte."))) - finally (SETFILEINFO STRM 'LENGTH FILESIZE) - (SETFILEPTR STRM FILESIZE]) - -(TESTPEEKBIN - [LAMBDA (FILE DONT.TRY.HARD.FLG LOGFILE) (* ; "Edited 3-Nov-88 11:23 by jds") - - (* ;; "Test the various cases of PEEKBIN") - - (PROG ((STRM (OPENSTREAM FILE 'INPUT 'OLD)) - STRMLEN) - (RESETLST - (RESETSAVE NIL (LIST 'CLOSEF? STRM)) - (SETQ STRMLEN (GETEOFPTR STRM)) - [for PTR in (APPEND [LIST 0 STRMLEN (IMAX (SUB1 STRMLEN) - 0) - (ADD1 STRMLEN) - (IPLUS (RAND 1 10) - (IMIN 16777200 (ITIMES (RAND 2 5) - STRMLEN] - (for X from -1 to STRMLEN by 512 - when (IGREATERP X 0) collect X) - (for X from 0 to STRMLEN by 512 collect - X) - (for X from 1 to STRMLEN by 512 collect - X) - (for X from 1 to 5 collect (RAND 0 STRMLEN)) - ) bind C.PEEK.NIL C.PEEK.T C.BIN PTR2 PTR3 - do (SETFILEPTR STRM PTR) - (SETQ C.PEEK.NIL (NLSETQ (\PEEKBIN STRM))) - (SETQ PTR2 (GETFILEPTR STRM)) - [COND - ((NOT DONT.TRY.HARD.FLG) - (COND - ((NOT (EQUAL PTR PTR2)) - (PRINTOUT LOGFILE "\PEEKBIN moving file ptr!" T] - (SETQ C.PEEK.T (NLSETQ (\PEEKBIN STRM T))) - (SETQ PTR3 (GETFILEPTR STRM)) - [COND - ((NOT DONT.TRY.HARD.FLG) - (COND - ((NOT (EQUAL PTR PTR3)) - (PRINTOUT LOGFILE "\PEEKBIN moving file ptr!" T] - (SETQ C.BIN (NLSETQ (BIN STRM))) - (COND - [(IGEQ PTR STRMLEN) (* ; "at EOS") - [COND - ((NOT DONT.TRY.HARD.FLG) - (COND - ((NOT (AND (EQUAL C.PEEK.NIL NIL) - (EQUAL C.PEEK.T '(NIL)) - (EQUAL C.BIN NIL))) - (PRINTOUT LOGFILE "\PEEKBIN or BIN not working correctly at EOS" T - ] - (COND - ((NOT DONT.TRY.HARD.FLG) - (COND - ((NOT (EQUAL (GETFILEPTR STRM) - PTR)) - (PRINTOUT LOGFILE "BIN moving fileptr at eos" T] - (T (* ; "before EOS") - (COND - ((NOT (AND (EQUAL C.PEEK.NIL C.PEEK.T) - (EQUAL C.PEEK.T C.BIN))) - (PRINTOUT LOGFILE "\PEEKBIN and BIN not returning same value!" T))) - (COND - ((NOT (EQUAL (GETFILEPTR STRM) - (ADD1 PTR))) - (PRINTOUT LOGFILE "BIN not moving ptr correctly!" T] - (CLOSEF? STRM))]) - -(TRUNCATETESTFILE - [LAMBDA (FILENAME NEWLENGTH) (* ; "Edited 3-Nov-87 13:43 by jds") - (* ; "truncates a test file") - [COND - ((OPENP FILENAME) (* ; - "file may be open already for read.") - (CLOSEF (OPENP FILENAME] - (PROG [(STRM (OPENSTREAM FILENAME 'BOTH] - (COND - ((NULL STRM) - (ERROR "file that it supposed to exist won't open for truncation." FILENAME))) - (WRITETESTFILELENGTH STRM NEWLENGTH) - (SETFILEPTR STRM NEWLENGTH) - (SETFILEINFO STRM 'LENGTH NEWLENGTH) - (CLOSEF STRM) - (COND - ((CL:/= (GETFILEINFO FILENAME 'LENGTH) - NEWLENGTH) - (CL:WARN "changing file ~A to NEWLENGTH ~D didn't take" FILENAME NEWLENGTH]) - -(WORDIN - [LAMBDA (STRM) (* rrb "27-Mar-84 14:37") - (* read two bytes from a stream) - (LOGOR (LLSH (\BIN STRM) - 8) - (\BIN STRM]) - -(WORDOUT - [LAMBDA (STRM WORD) (* bouts two bytes onto stream) - (\BOUT STRM (LRSH WORD 8)) - (\BOUT STRM (LOGAND WORD 255]) - -(DOUBLEWORDIN - [LAMBDA (FILE) (* jds " 3-JAN-83 16:08") - (IPLUS (LLSH (\BIN FILE) - 24) - (LLSH (\BIN FILE) - 16) - (LLSH (\BIN FILE) - 8) - (\BIN FILE]) - -(DOUBLEWORDOUT - [LAMBDA (FILE NUMBER) (* jds " 3-JAN-83 15:30") - (\BOUT FILE (LOGAND 255 (LRSH NUMBER 24))) - (\BOUT FILE (LOGAND 255 (LRSH NUMBER 16))) - (\BOUT FILE (LOGAND 255 (LRSH NUMBER 8))) - (\BOUT FILE (LOGAND 255 NUMBER]) - -(WRITETESTFILE - [LAMBDA (NAME LENGTH STARTBYTE PERIOD) (* ; "Edited 4-Nov-87 11:21 by jds") - - (* ;; "writes a test file of length LENGTH with contents CONTENTBYTE") - - (PROG [(STRM (OPENSTREAM NAME 'OUTPUT] - (OR STRM (RETURN NIL)) - (COND - ((ILESSP LENGTH MINTESTFILELENGTH) - (ERROR "test files must have a minimum length " MINTESTFILELENGTH))) - (WORDOUT STRM FIRSTTESTWORD) - (WORDOUT STRM SECONDTESTWORD) - (DOUBLEWORDOUT STRM LENGTH) - (BOUT STRM STARTBYTE) - (BOUT STRM PERIOD) - [bind (CURRENTBYTE _ STARTBYTE) - BLOCKCOUNT _ 0 for COMPUTEDBYTE from STARTBYTE to (IPLUS STARTBYTE LENGTH - (IMINUS MINTESTFILELENGTH) - -1) - do (BOUT STRM CURRENTBYTE) - (SETQ CURRENTBYTE (IMOD (ADD1 CURRENTBYTE) - PERIOD)) - (COND - ((ZEROP (SETQ BLOCKCOUNT (IMOD (ADD1 BLOCKCOUNT) - 100))) - (BLOCK] - (CLOSEF STRM) - (RETURN (FULLNAME STRM]) - -(WRITETESTFILELENGTH - [LAMBDA (STRM NEWLENGTH) (* ; "Edited 3-Nov-88 10:45 by jds") - (* ; - "update the length count stored in the file.") - (SETFILEPTR STRM 4) - (DOUBLEWORDOUT STRM NEWLENGTH]) -) - -(RPAQ DSKFREEPAGESFN (FUNCTION DEFAULT.DSKFREEPAGESFN)) - -(RPAQ DSKPAGESOVERHEADFN (FUNCTION DEFAULT.DSKPAGESOVERHEADFN)) - -(RPAQ DSKMINALLOCFN (FUNCTION DEFAULT.DSKMINALLOCFN)) - -(RPAQQ MINTESTFILELENGTH 10) - -(RPAQQ FIRSTTESTWORD 48094) - -(RPAQQ SECONDTESTWORD 56187) - -(RPAQQ NUMBEROFTESTBYTES 5) - -(RPAQQ EXHAUSTIVETESTFLG NIL) - -(RPAQQ DEFAULTREPLAYFILE {PHYLUM}DLIONFS>REPLAY.LOG) - -(RPAQQ DONTCLOSEFILESFLG NIL) - -(RPAQQ LEGALFILENAMECHARS - (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u - v w x y z 0 1 2 3 4 5 6 7 8 9)) - -(RPAQQ LEGALFIRSTFILENAMECHARS - (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u - v w x y z)) - -(RPAQQ MINFILENAMELENGTH 1) - -(RPAQQ MAXFILENAMELENGTH 15) - -(RPAQQ MINFILEEXTENSIONLENGTH 0) - -(RPAQQ MAXFILEEXTENSIONLENGTH 6) - -(RPAQQ MAXVERSION 64000) - -(RPAQQ TESTFILEPAGELENGTHS - (1 2 3 5 7 8 11 13 16 17 19 21 23 24 29 31 34 37 41 43 47 64 55 78 89 128 129 255 256 257 333 - 512 837 1024 1997 2048 3333 4096 5432 8192 11321 16384 19997 32768 43210 65535)) -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS FIRSTTESTWORD SECONDTESTWORD MINTESTFILELENGTH NUMBEROFTESTBYTES EXHAUSTIVETESTFLG - DSKFREEPAGESFN DSKPAGESOVERHEADFN TESTFILEPAGELENGTHS) -) -(DECLARE%: EVAL@COMPILE - -(RECORD TESTFILEINFO (TESTFILEFULLNAME FILELENGTH STARTBYTE PERIOD TESTFILEORIGNAME)) - -(RECORD TESTFILEOP ( - (* ;; "Describes one DSKTEST file operation, for the log and for replay.") - - TESTOPERATION (* ; - "Operation to be performed. One of: ADD DELETE CHANGELENGTH DELETEALL") - TESTOPFILENAME (* ; - "File name of the file operated on") - TESTOPFILELENGTH (* ; "New length for the file") - STARTBYTE (* ; "%"Random%" data start < PERIOD") - PERIOD (* ; "%"Random%" data period < 256") - )) -) -(PUTPROPS DSKTEST COPYRIGHT ("Venue & Xerox Corporation" 1984 1985 1986 1987 1988 1990)) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (2943 12078 (DSKTEST 2953 . 11544) (DELETETESTFILES 11546 . 12076)) (12079 59900 ( -CHECKCONSISTENCY 12089 . 13302) (CHECKLENGTHANDCONTENTS 13304 . 17796) (CHOOSERANDOMFILEOPERATION -17798 . 19365) (DEFAULT.DSKFREEPAGESFN 19367 . 20152) (DEFAULT.DSKMINALLOCFN 20154 . 20803) ( -DEFAULT.DSKPAGESOVERHEADFN 20805 . 21709) (DOTESTFILEOP 21711 . 30611) (DSKFREEPAGES 30613 . 30872) ( -DSKMINALLOC 30874 . 31180) (DSKPAGESOVERHEAD 31182 . 31453) (EXTENDTESTFILE 31455 . 32765) ( -FILEINFOFROMFILE 32767 . 33586) (GENERATEADDFILEOP 33588 . 34342) (GENERATECHANGEFILEOP 34344 . 35248) - (GENERATEDELETEFILEOP 35250 . 35987) (GENERATEEOFPFILEOP 35989 . 36881) (GENERATEPEEKBINFILEOP 36883 - . 37672) (GENERATEDELETEALLFILEOP 37674 . 37866) (RANDOMELT 37868 . 38122) (RANDOMFILELENGTH 38124 . -40003) (RANDOMFILENAME 40005 . 41255) (RANDOMSTR 41257 . 41921) (RANDOMTESTFILE 41923 . 42826) ( -SORTBYCAR 42828 . 43181) (TESTFILEP 43183 . 45623) (TESTEOFP 45625 . 48865) (TESTEOFOP 48867 . 49898) -(TESTFILEPTR 49900 . 52243) (TESTPEEKBIN 52245 . 56179) (TRUNCATETESTFILE 56181 . 57146) (WORDIN 57148 - . 57425) (WORDOUT 57427 . 57602) (DOUBLEWORDIN 57604 . 57889) (DOUBLEWORDOUT 57891 . 58181) ( -WRITETESTFILE 58183 . 59529) (WRITETESTFILELENGTH 59531 . 59898))))) -STOP diff --git a/internal/envos/DSKTEST.TEDIT b/internal/envos/DSKTEST.TEDIT deleted file mode 100644 index 33b0ae3742a58916177bd3b9ae273d912e1e403c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2351 zcmd5*!EO^V5Z$z(Qp9rLMo)8s(uUr+p-Lf5+lZ(K62XOwvpdPRnpD&4wW2RVXMQ` zO+7n*uos^hPZMJ)DV;Y3Te7TJIF66l$xH_fozjJs-m|80MIU663!Bor(t4xgPtxa9 zm{d+=BD^%(g+n7zDZ@1MLc4Kkt2mC28fGLN37UyyDl(>YQN$YxgvjR{7)UXeO8Sb- zgeFizu5z9WcR+L^&p|{q;grv1!Zgorlk_!Jc5Of_24uVD56U`YS0@FK1(|^DC;@AU z;wa|e0p%=GI3YERDQZ!$NGWpxHy}=s<1Zy^6h=mHLnNN9ql+BgP$J+H1GJcx9vKsB zidt6#i|U;TjuQ(UHZ!($h4zwDl5;Y3b%tV{!QRjTa6|*V3nhh8Pc__C}){O z_$p^0qG>!17h=kx3mB#uiCU+igsm4+lP-%fghK&<8rkU2m8>ZkTTBBa~f)GO)d$KYOtitfsQ&^8h z`_ix8pf|#2I6CeRdP7?2TQhHDw1WFM!OgHyVp)VS0E0QxgD5;3VQKveEBK0sdn3y_7tjbL4PRyFNrTbn%e{q7LU(RnZjTfw6B8GE;J7x({(XSl zZ0c<*9w;n`m2L;z|z&&{P3_Mmy`JcUu-u%J4 L%^%VJ*Pp)uy+5DR diff --git a/internal/envos/FLOPPYTESTER b/internal/envos/FLOPPYTESTER deleted file mode 100644 index 6e481381..00000000 --- a/internal/envos/FLOPPYTESTER +++ /dev/null @@ -1,105 +0,0 @@ -(FILECREATED "24-Mar-86 15:18:14" {ERIS}SOURCES>FLOPPYTESTER.;9 4308 - - changes to: (FNS STARTTEST STOPTEST KILLTEST) - (VARS FLOPPYTESTERCOMS) - - previous date: "20-Mar-86 21:06:46" {ERIS}SOURCES>FLOPPYTESTER.;5) - - -(* Copyright (c) 1985, 1986 by Xerox Corporation. All rights reserved.) - -(PRETTYCOMPRINT FLOPPYTESTERCOMS) - -(RPAQQ FLOPPYTESTERCOMS ((* * FLOPPYTESTER -- Runs FILEBANGER on FLOPPY. *) - (P (LOAD? (QUOTE {ERINYES}TOOLS>FILEBANGER.DCOM))) - (INITVARS (ALLOCATIONSW NIL)) - (FNS STARTTEST STOPTEST KILLTEST BLTALLOCS BLTALLOC))) - (* * FLOPPYTESTER -- Runs FILEBANGER on FLOPPY. *) - -(LOAD? (QUOTE {ERINYES}TOOLS>FILEBANGER.DCOM)) - -(RPAQ? ALLOCATIONSW NIL) -(DEFINEQ - -(STARTTEST - (LAMBDA (N) (* kbr: "24-Mar-86 15:15") - (SETQ STARTTIME (GDATE)) - (CNDIR (QUOTE {FLOPPY})) - (FLOPPY.FORMAT (QUOTE TEST)) - (DIRECTORY (QUOTE {FLOPPY}*)) - (BLTALLOCS) - (for I from 1 to N do (DOFILEBANGER (PACK* (QUOTE {FLOPPY}) - (QUOTE TESTFILE) - I) - (RAND 10 30))))) - -(STOPTEST - (LAMBDA NIL (* kbr: "24-Mar-86 15:16") - (SETQ STOPTIME (GDATE)) - (for P in FILEBANGERS when (NOT (EQ P (THIS.PROCESS))) do (SUSPEND.PROCESS P)))) - -(KILLTEST - (LAMBDA NIL (* kbr: "22-Mar-86 17:18") - (for P in FILEBANGERS do (DEL.PROCESS P)) - (SETQ FILEBANGERS NIL))) - -(BLTALLOCS - [LAMBDA NIL (* kbr: "18-Nov-85 12:32") - (* Debugging fn. Puts up a window representation of  - allocations on floppy. *) - (PROG (PIXELS XLENGTH YLENGTH) - (SETQ PIXELS 5) - (SETQ XLENGTH (ITIMES \FLOPPY.TRACKSPERCYLINDER \FLOPPY.SECTORSPERTRACK)) - (SETQ YLENGTH \FLOPPY.CYLINDERS) - [COND - ((NULL ALLOCATIONSW) - (SETQ ALLOCATIONSW (CREATEW (GETBOXREGION (WIDTHIFWINDOW (ITIMES PIXELS - XLENGTH)) - (HEIGHTIFWINDOW (ITIMES PIXELS - YLENGTH) - T) - NIL NIL NIL - "Position FLOPPY ALLOCATIONS window") - "FLOPPY ALLOCATIONS")) - (UNADVISE (QUOTE \PFLOPPY.ALLOCATE)) - (ADVISE (QUOTE \PFLOPPY.ALLOCATE) - (QUOTE AFTER) - (QUOTE (COND (!VALUE (BLTALLOC !VALUE] - (BITBLT NIL NIL NIL ALLOCATIONSW NIL NIL NIL NIL (QUOTE TEXTURE) - (QUOTE REPLACE) - WHITESHADE) - (for Y from 0 to (SUB1 YLENGTH) do (for X from 0 to (SUB1 XLENGTH) - do (BITMAPBIT ALLOCATIONSW - (ITIMES PIXELS X) - (ITIMES PIXELS Y) - 1))) - (for PFALLOC in (fetch (PFLOPPYFDEV PFALLOCS) of \FLOPPYFDEV) - when [NOT (EQUAL (fetch (PFALLOC FILENAME) of PFALLOC) - (QUOTE (FREE] - do (BLTALLOC PFALLOC]) - -(BLTALLOC - [LAMBDA (PFALLOC) (* kbr: "18-Nov-85 12:21") - (PROG (SHADE OPSHADE LEFT BOTTOM PIXELS XLENGTH) - (SETQ PIXELS 5) - (SETQ XLENGTH (ITIMES \FLOPPY.TRACKSPERCYLINDER \FLOPPY.SECTORSPERTRACK)) - (SETQ SHADE (COND - ((EQUAL (fetch (PFALLOC FILENAME) of PFALLOC) - (QUOTE (FREE))) - WHITESHADE) - (T BLACKSHADE))) - (SETQ OPSHADE (IDIFFERENCE BLACKSHADE SHADE)) - (for I from (fetch (PFALLOC START) of PFALLOC) to (fetch (PFALLOC END) - of PFALLOC) - do (SETQ LEFT (ITIMES PIXELS (IREMAINDER (SUB1 I) - XLENGTH))) - (SETQ BOTTOM (ITIMES PIXELS (IQUOTIENT (SUB1 I) - XLENGTH))) - (BLTSHADE SHADE ALLOCATIONSW LEFT BOTTOM PIXELS PIXELS (QUOTE REPLACE)) - (BLTSHADE OPSHADE ALLOCATIONSW LEFT BOTTOM 1 1 (QUOTE REPLACE]) -) -(PUTPROPS FLOPPYTESTER COPYRIGHT ("Xerox Corporation" 1985 1986)) -(DECLARE: DONTCOPY - (FILEMAP (NIL (745 4220 (STARTTEST 755 . 1203) (STOPTEST 1205 . 1463) (KILLTEST 1465 . 1665) ( -BLTALLOCS 1667 . 3253) (BLTALLOC 3255 . 4218))))) -STOP diff --git a/internal/envos/RS232TEST b/internal/envos/RS232TEST deleted file mode 100644 index 52a236df..00000000 --- a/internal/envos/RS232TEST +++ /dev/null @@ -1,242 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10) -(FILECREATED "26-Jun-90 19:15:35" |{DSK}local>lde>lispcore>internal>library>RS232TEST.;2| 9419 - - |changes| |to:| (VARS RS232TESTCOMS) - - |previous| |date:| "20-Feb-87 00:10:14" -|{DSK}local>lde>lispcore>internal>library>RS232TEST.;1|) - - -; Copyright (c) 1987, 1990 by Venue & Xerox Corporation. All rights reserved. - -(PRETTYCOMPRINT RS232TESTCOMS) - -(RPAQQ RS232TESTCOMS - ((FNS RSTEST TESTCLEANUP XMITTEST) - - (* |;;| - "Exhaustive test for RS-232 for 5- 6- 7- and 8-bit chars, with parity NONE, EVEN, and ODD") - - (FNS RS232.TEST RS232.MICROTEST RS232.QUICKTEST RS232.MENU RS232TMENU.SELFN) - (VARS RS232.TEST.MENU.ITEMS) - - (* |;;| - "Exhaustive test for the TTY port for 5- 6- 7- and 8-bit chars, with parity NONE, EVEN, and ODD") - - (FNS TTY.TEST TTY.MICROTEST TTY.QUICKTEST TTY.MENU TTYTMENU.SELFN))) -(DEFINEQ - -(rstest - (lambda nil (* \; "Edited 14-Jan-87 16:00 by jds") - (let (oo) - (resetlst (resetsave (setq oo (openstream '{rs232} 'output)) - 'closef?) - (|for| i |from| 1 |do| (printout oo "Line " i - ": 1 2 3 4 5 6 7 8 9 0 9 8 7 6 5 4 3 2 1. -\ -") - (printout t "Line " i t)))))) - -(testcleanup - (lambda nil (* \; "Edited 16-Jan-87 09:51 by jds") - - (* |;;| "Close the streams used by the rs232 test.") - - (and (boundp 'out) - out - (closef? out)) - (and (boundp in) - in - (closef? in)))) - -(XMITTEST - (LAMBDA (BAUDRATE XONXOFF?) (* \; "Edited 19-Feb-87 20:59 by jds") - - (* |;;| "Set up the rs232 port at BAUDRATE with XOn-XOff flow control if XONXOFF? is T. Then print forever, lines of text. Show an indication on the screen for each line, so the user can tell if flow control has shut things off.") - - (RS232C.INIT BAUDRATE 8 'NONE 1 (COND - (XONXOFF? 'XONXOFF) - (T 'NONE))) - (SETQ OUT (OPENSTREAM '{RS232} 'OUTPUT)) - (SETQ IN (OPENSTREAM '{RS232} 'INPUT)) - (ERSETQ (FOR I FROM 1 DO (PRINTOUT OUT "Line " I ": 0 1 2 3 4 5 6 7 8 9 0 9 8 7 6 5 4 3 2 1. -\ -") - (|printout| T "Line " I T))) - (CLOSEF? OUT) - (CLOSEF? IN))) -) - - - -(* |;;| "Exhaustive test for RS-232 for 5- 6- 7- and 8-bit chars, with parity NONE, EVEN, and ODD") - -(DEFINEQ - -(rs232.test - (lambda nil (* \; "Edited 19-Feb-87 22:43 by jds") - - (* |;;| "Run quickly thru all the possible combinations of RS-232 bit lengths and parities and stop bits for testing sake.") - - (printout t t t "Starting RS-232 port test." t - "Make sure the line monitor is attached to the RS-232 port, " - "and its cable goes to the DCE socket on the monitor." t) - (mouseconfirm) - (printout t "Set the line monitor for: " t) - (|for| bits |in| '(5 6 7 8) |do| (|for| parity |in| '(none odd even) - |do| (|for| stopbits |in| '(1 1.5 2) - |do| (rs232.microtest 9600 bits parity stopbits)))))) - -(rs232.microtest - (lambda (speed bits parity stopbits) (* \; "Edited 19-Feb-87 22:37 by jds") - - (* |;;| "Transmit a short test pattern to the RS232 port at SPEED baud, using BITS-bit characters, with PARITY and STOPBITS.") - - (printout t bits "bits, " (cond - ((eq parity 'none) - "NO") - (t parity)) - " parity, " stopbits " stop bits..." t) - (mouseconfirm) - (rs232.quicktest speed bits parity stopbits))) - -(rs232.quicktest - (lambda (speed bits parity stopbits) (* \; "Edited 19-Feb-87 22:38 by jds") - - (* |;;| "Transmit a short test pattern to the RS232 port at SPEED baud, using BITS-bit characters, with PARITY and STOPBITS.") - - (rs232c.init speed bits parity stopbits 'none) - (let ((out (openstream '{rs232} 'output))) - (prin1 (concat "0123 ABC abc " (packc '(1 2 3 255))) - out) - (closef out)))) - -(rs232.menu - (lambda nil (* \; "Edited 19-Feb-87 22:45 by jds") - (let ((ww (addmenu (|create| menu - menucolumns _ 4 - items _ rs232.test.menu.items - whenselectedfn _ (function rs232tmenu.selfn))))) - (windowprop ww 'title "RS-232 Tests")))) - -(rs232tmenu.selfn - (lambda (item menu key) (* \; "Edited 19-Feb-87 22:57 by jds") - - (* |;;| "Called from the RS-232 test menu") - - (let* ((info (cadr item)) - (bits (car info)) - (parity (cadr info)) - (stopbits (caddr info))) - (rs232.quicktest 9600 bits parity stopbits)))) -) - -(RPAQQ RS232.TEST.MENU.ITEMS - ((|5/N/1| (5 NONE 1)) - (|6/N/1| (6 NONE 1)) - (|7/N/1| (7 NONE 1)) - (|8/N/1| (8 NONE 1)) - (|5/N/1.5| (5 NONE 1.5)) - (|6/N/1.5| (6 NONE 1.5)) - (|7/N/1.5| (7 NONE 1.5)) - (|8/N/1.5| (8 NONE 1.5)) - (|5/N/2| (5 NONE 2)) - (|6/N/2| (6 NONE 2)) - (|7/N/2| (7 NONE 2)) - (|8/N/2| (8 NONE 2)) - (|5/O/1| (5 ODD 1)) - (|6/O/1| (6 ODD 1)) - (|7/O/1| (7 ODD 1)) - (|8/O/1| (8 ODD 1)) - (|5/O/1.5| (5 ODD 1.5)) - (|6/O/1.5| (6 ODD 1.5)) - (|7/O/1.5| (7 ODD 1.5)) - (|8/O/1.5| (8 ODD 1.5)) - (|5/O/2| (5 ODD 2)) - (|6/O/2| (6 ODD 2)) - (|7/O/2| (7 ODD 2)) - (|8/O/2| (8 ODD 2)) - (|5/E/1| (5 EVEN 1)) - (|6/E/1| (6 EVEN 1)) - (|7/E/1| (7 EVEN 1)) - (|8/E/1| (8 EVEN 1)) - (|5/E/1.5| (5 EVEN 1.5)) - (|6/E/1.5| (6 EVEN 1.5)) - (|7/E/1.5| (7 EVEN 1.5)) - (|8/E/1.5| (8 EVEN 1.5)) - (|5/E/2| (5 EVEN 2)) - (|6/E/2| (6 EVEN 2)) - (|7/E/2| (7 EVEN 2)) - (|8/E/2| (8 EVEN 2)))) - - - -(* |;;| -"Exhaustive test for the TTY port for 5- 6- 7- and 8-bit chars, with parity NONE, EVEN, and ODD") - -(DEFINEQ - -(tty.test - (lambda nil (* \; "Edited 19-Feb-87 22:42 by jds") - - (* |;;| "Run quickly thru all the possible combinations of RS-232 bit lengths and parities and stop bits for testing sake.") - - (printout t t t "Starting TTY port test." t - "Make sure the line monitor is attached to the TTY port, " - "and its cable goes to the DTE socket on the monitor." t) - (mouseconfirm) - (printout t "Set the line monitor for: " t) - (|for| bits |in| '(5 6 7 8) |do| (|for| parity |in| '(none odd even) - |do| (|for| stopbits |in| '(1 1.5 2) - |do| (tty.microtest 9600 bits parity stopbits)))))) - -(tty.microtest - (lambda (speed bits parity stopbits) (* \; "Edited 19-Feb-87 22:41 by jds") - - (* |;;| "Transmit a short test pattern to the RS232 port at SPEED baud, using BITS-bit characters, with PARITY and STOPBITS.") - - (printout t bits "bits, " (cond - ((eq parity 'none) - "NO") - (t parity)) - " parity, " stopbits " stop bits..." t) - (mouseconfirm) - (tty.init speed bits parity stopbits))) - -(tty.quicktest - (lambda (speed bits parity stopbits) (* \; "Edited 19-Feb-87 22:40 by jds") - - (* |;;| "Transmit a short test pattern to the RS232 port at SPEED baud, using BITS-bit characters, with PARITY and STOPBITS.") - - (tty.init speed bits parity stopbits 'none) - (let ((out (openstream '{tty} 'output))) - (prin1 (concat "0123 ABC abc " (packc '(1 2 3 255))) - out) - (closef out)))) - -(tty.menu - (lambda nil (* \; "Edited 19-Feb-87 22:57 by jds") - (let ((ww (addmenu (|create| menu - menucolumns _ 4 - items _ rs232.test.menu.items - whenselectedfn _ (function ttytmenu.selfn))))) - (windowprop ww 'title "TTY Tests")))) - -(ttytmenu.selfn - (lambda (item menu key) (* \; "Edited 19-Feb-87 22:59 by jds") - - (* |;;| "Called from the RS-232 test menu") - - (let* ((info (cadr item)) - (bits (car info)) - (parity (cadr info)) - (stopbits (caddr info))) - (tty.quicktest 9600 bits parity stopbits)))) -) -(PUTPROPS RS232TEST COPYRIGHT ("Venue & Xerox Corporation" 1987 1990)) -(DECLARE\: DONTCOPY - (FILEMAP (NIL (979 2623 (RSTEST 989 . 1466) (TESTCLEANUP 1468 . 1789) (XMITTEST 1791 . 2621)) (2732 -5433 (RS232.TEST 2742 . 3570) (RS232.MICROTEST 3572 . 4151) (RS232.QUICKTEST 4153 . 4640) (RS232.MENU -4642 . 5042) (RS232TMENU.SELFN 5044 . 5431)) (6665 9325 (TTY.TEST 6675 . 7493) (TTY.MICROTEST 7495 . -8061) (TTY.QUICKTEST 8063 . 8543) (TTY.MENU 8545 . 8938) (TTYTMENU.SELFN 8940 . 9323))))) -STOP diff --git a/internal/test/filepos/BIG.XCCS b/internal/test/filepos/BIG.XCCS deleted file mode 100644 index 6c8dcb27..00000000 --- a/internal/test/filepos/BIG.XCCS +++ /dev/null @@ -1 +0,0 @@ -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa012345X1245 \ No newline at end of file diff --git a/internal/test/filepos/BIGGREEK.UTF8 b/internal/test/filepos/BIGGREEK.UTF8 deleted file mode 100644 index b1365330..00000000 --- a/internal/test/filepos/BIGGREEK.UTF8 +++ /dev/null @@ -1 +0,0 @@ -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaδσγδφβcδδb \ No newline at end of file diff --git a/internal/test/filepos/BIGGREEK.XCCS b/internal/test/filepos/BIGGREEK.XCCS deleted file mode 100644 index 316de294..00000000 --- a/internal/test/filepos/BIGGREEK.XCCS +++ /dev/null @@ -1 +0,0 @@ -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa˙&evdezb˙c˙&ee˙b \ No newline at end of file diff --git a/internal/test/filepos/FIVE b/internal/test/filepos/FIVE deleted file mode 100644 index bd41cba7..00000000 --- a/internal/test/filepos/FIVE +++ /dev/null @@ -1 +0,0 @@ -12345 \ No newline at end of file diff --git a/internal/test/filepos/FPTESTS b/internal/test/filepos/FPTESTS deleted file mode 100644 index d1ce3afd8e28df509dba130f17ea57c671ba5500..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4658 zcmcIo?{C^j5N%GUeBh6$Mk`(9NJkEvh9ukx$uSG@g<$G++NR%JFpV1rB24<@PWQKS zvulIbYva(UMS>4z{PxY8nYU|eUD~sUwBEA^v~CZ34!j(h)}`5}KR8OfgbGwfwTJGk5S!d7zP+d+c<3-I)VLPYyWoH<$r%Y z#=#=)-1!fYKkG#Eu^)BrgGm&8YaShUzRVYQ;p}5QxzY(|%V06Xh-DBjJJT=<9_DeU zH}WX+*wLTH@%|pXYBgH`P^;k&e%jWBIqXwb_Z-mPm@b39OX=mc*EHwpgXhgI9M?M%fLQ%Rv5H^9mi}T%)W~u?sOxGVLMIS^(AlI2qa!Vq6-QBF zw30x5dtfe2j5D?azNfC^45|0lNkpkYMfHl&CD22Akfx=E8>N&hNqEtp=vKm7>wuGQTP6Gd|Rwy3vu4*#x6h+wj-bm#Nmf1*p8HEw56|h z#8T4Z-B9d%@&s5?qp!sz%i&P?od9osG@vNM`@DQ5=_0@RbPCJc0D`i)Owug_gL?D( z@d&#MAKCycntvgR_`*tIH8iF=7$L1ns_TfjyIX+(yy&n#M`1iR~$- z1uw0gPX*o<2m+vJABjK;st7I_SdMXuB#u!~!iiO~I7_DK$-oot>DWK{z})7r**hh5 zgx>z@Aox59{`s(aF(%1wb0qfI{GLGK@ctnR;Bh%Um4;Qg@s0@7aDfva#sv&+K8W!o z1(sOP$3+m_NgRkMvPe*rdebPPl6<4k#NqZ?kx<3OoyY8kXyr#cPOr zg!Hm2sW7V-N(y`e`1joLE~IFZs~7b1e``7)##HDnfD#)%{3@Vl+JkJpl&|bbRro^m zO3LtIzPttDF$sA^_GIwo-kQjHWXw4CZ7%!73<_P>`sU>zV?Pf3#lrt4%|i7&em9!b zS&BLQEGW!1Cmfm0p)}Ey+NYv#32Li@PwGtZohLcB1aUHR%HFX#VDI9QCFka~NAkaR zs7V>Z#v}cB9ELJT(ruYBB^FkKfvqMC(c;f_JsgoX^tofg!y=f5Uu8^wS}RAaDlZ=c z5a{gMvM9wzi!BR0+nLj}vQ7}robSes+a|#ZW9e2^xvCr0_T#35Cl#3bVI(W3wa^<+ zvqcKlsF32`2lD)?UZ$9%z&|VCW3#Uxl(it#@@VamYw+hh!?rsO+EjzD{Nk zcaGjRzZnhvVomcvia#cu|B+Io7KWTcmoGg|LS_?-Wi>{QJ%2g)3 zGTKpY?Cz*|6iPcE&BUfGq6KXOoV{EfJ&B@*h@q8bq2vnOU5po#@q9l1`}ZYpD2*7U zmF$PBWQBG}6<9i?JpEUNnppFUJ#fhOCPZJNuBIB&WpR~CW8$=3sxv2S*qguGUxxOe#d^?-7r3P+WO^c;mw2+H$x zvV-&2a(WJs>utG~nujMAj?UZY4bA;)HVPAO)vib%L}Q4SCu6pT;N99( zAotnWZ%OjU_0@j*H0XEEPESbu%J)uz;RQbrTLN!`li_`@e=@AY20egD`50v9)OR#0 zMD=9U3N?5s;Q>uJ=%1aQcOZBC&a8pJ(U|CNB#Y1u{fnkP!M^`f_@9dsSLEx#!yBIT z%1ZeyHc6Nu4Y&tW>6NfsjHOVIrc~il6cmqPx&t;3F4jw3Cs3FR)Rr$6O5a3}KG@HI zD;9C24e8ike4fphk=q4MZM$RS--aFfdVECEz6B)_cEd`1{tTsJ{xkaplan>local>medley3.5>working-medley>internal>test>filepos>TFP.;31 27425 - - :CHANGES-TO (FNS TFP TFP1) - - :PREVIOUS-DATE " 3-Jul-2022 13:32:16" -{DSK}kaplan>local>medley3.5>working-medley>internal>test>filepos>TFP.;27) - - -(PRETTYCOMPRINT TFPCOMS) - -(RPAQQ TFPCOMS - ((FNS TFP TFP1 FPC FPCS) - (FNS OLDFILEPOS OLDFFILEPOS) - (FILES FPTESTS) - (ADDVARS (DIRECTORIES {WMEDLEY}test>filepos>)) - - (* ;; "Compiling also requires EXPORTS.ALL") - - (DECLARE%: DOEVAL@COMPILE DONTCOPY (FILES (LOADCOMP) - IOCHAR)))) -(DEFINEQ - -(TFP - [LAMBDA (TESTNAMES TAGS FN) (* ; "Edited 3-Jul-2022 14:06 by rmk") - (CL:UNLESS TESTNAMES (SETQ TESTNAMES ALLTESTS)) - (LET [(TESTS (FOR TN INSIDE TESTNAMES FIRST (PRINTOUT T "Testing") - JOIN (PRINTOUT T " " TN) - (CONS (MKSTRING TN) - (COPY (EVALV TN))) FINALLY (TERPRI T] - (CL:WHEN TAGS - (SETQ TESTS (FOR TEST IN TESTS WHEN (THEREIS TAG INSIDE TAGS - SUCHTHAT (MEMB TAG TEST)) COLLECT TEST))) - (PRINTOUT T (LENGTH TESTS) - " tests" T) - (FOR TEST VAL COMMENT PRINTED IN TESTS EACHTIME (CL:WHEN (STRINGP TEST) - (SETQ COMMENT TEST) - (SETQ PRINTED NIL)) - WHEN [AND (LISTP TEST) - (NOT (AND FN (CADDR TEST] UNLESS (EQUAL (CAR TEST) - (SETQ VAL (TFP1 (CADR TEST) - FN))) - COLLECT (CL:WHEN COMMENT - (CL:UNLESS PRINTED (PRINTOUT T COMMENT T))) - (PRINTOUT T 5 VAL " <- " .P2 TEST T) - (CONS VAL TEST]) - -(TFP1 - [LAMBDA (FPARGS FN) (* ; "Edited 3-Jul-2022 14:04 by rmk") - - (* ;; "FN is the search function to apply: NIL = FILEPOS, OLDFILEPOS, FFILEPOS. OLDFFILEPOS") - - (* ;; "For convenience: NIL -> FILEPOS, OF -> OLDFILEPOS, FF -> FFILEPOS, OFF -> OLDFFILEPOS.") - - (* ;; "OLDFILEPOS and OLDFFILEPOS do only a byte searches.") - - (* ;; - "FPARGS is a list of FILEPOS args. CASEARRAY=T means Transparent case array, pushes to FFILEPOS. ") - - (* ;; "The file extension gives the format, defaulting to *DEFAULT-EXTERNALFORMAT* = :XCCS") - - (SETQ FN (SELECTQ FN - ((NIL FILEPOS) - 'FILEPOS) - ((FF FFILEPOS) - 'FFILEPOS) - ((OF OLDFILEPOS) - 'OLDFILEPOS) - ((OFF OLDFFILEPOS) - 'OLDFFILEPOS) - (HELP "BAD FN" FN))) - (CL:WHEN (OR (FIXP (CAR FPARGS)) - (NULL (CAR FPARGS)) - (AND (LISTP (CAR FPARGS)) - (FIXP (CAAR FPARGS)) - (FIXP (CDAR FPARGS))) - (LISTP (CADR FPARGS))) - (SETQ FPARGS (CADR FPARGS))) - (LET (STREAM VAL PATTERN FILE START END SKIP TAIL CASEARRAY EXT (FORMAT *DEFAULT-EXTERNALFORMAT*) - ) - (SETQ PATTERN (EVAL (POP FPARGS))) (* ; - "So we can do substrings, CHARACTER etc.") - (SETQ FILE (POP FPARGS)) - (SETQ START (POP FPARGS)) - (SETQ END (POP FPARGS)) - (SETQ SKIP (POP FPARGS)) - (SETQ TAIL (POP FPARGS)) - (SETQ CASEARRAY (POP FPARGS)) - (SETQ EXT (FILENAMEFIELD.STRING FILE 'EXTENSION)) - (CL:WHEN EXT - (CL:WHEN (STRPOS "UTF8" EXT) - (SETQ EXT "UTF-8")) - [SETQ FORMAT (FIND-FORMAT (CL:INTERN EXT 'KEYWORD]) - [SETQ STREAM (OPENSTREAM (OR (FINDFILE FILE T) - FILE) - 'INPUT NIL `((FORMAT ,FORMAT] - (SETQ CASEARRAY (IF (EQ CASEARRAY T) - THEN (CASEARRAY) - ELSE (EVAL CASEARRAY))) - (SETQ VAL (APPLY* FN PATTERN STREAM START END SKIP TAIL CASEARRAY)) - (CLOSEF? STREAM) - VAL]) - -(FPC - [LAMBDA (STR FILE START END SKIP TAIL CASEARRAY) (* ; "Edited 29-Jun-2022 21:22 by rmk") - - (* ;; "Compare old and new filepos") - - (LET (OLD NEW EXT FORMAT) - (CL:UNLESS (STREAMP FILE) - (SETQ EXT (FILENAMEFIELD.STRING FILE 'EXTENSION)) - (SETQ FORMAT (CL:INTERN EXT 'KEYWORD)) - (CL:UNLESS (FIND-FORMAT FORMAT T) - (SETQ FORMAT :XCCS)) - (STREAMPROP FILE 'FORMAT FORMAT)) - (SETQ OLD (OLDFILEPOS STR FILE START END SKIP TAIL CASEARRAY)) - (SETQ NEW (FILEPOS STR FILE START END SKIP TAIL CASEARRAY)) - (CLOSEF FILE) - (CL:UNLESS (EQUAL OLD (IF (EQ TAIL 'BOTH) - THEN (CDR NEW) - ELSE NEW)) - (HELP (CONCAT "OLD=" (OR OLD "NIL") - " NEW=" - (OR NEW "NIL")))) - (LIST OLD NEW]) - -(FPCS - [LAMBDA (STR FILE START END SKIP TAIL) (* ; "Edited 29-Jun-2022 23:56 by rmk") - (* ; "Edited 28-Jun-2022 22:21 by rmk") - - (* ;; "Compare old and new slow filepos") - - (LET (FAST SLOW EXT FORMAT) - (CL:UNLESS (STREAMP FILE) - (SETQ EXT (FILENAMEFIELD.STRING FILE 'EXTENSION)) - (SETQ FORMAT (CL:INTERN EXT 'KEYWORD)) - (CL:UNLESS (FIND-FORMAT FORMAT T) - (SETQ FORMAT :XCCS)) - (STREAMPROP FILE 'FORMAT FORMAT)) - (SETQ FAST (FILEPOS STR FILE START END SKIP TAIL)) - (SETQ SLOW (FILEPOS STR FILE START END SKIP TAIL (CASEARRAY))) - (CLOSEF FILE) - (CL:UNLESS (EQUAL FAST SLOW) - (HELP (CONCAT "FAST=" (OR FAST "NIL") - " SLOW=" - (OR SLOW "NIL")))) - (LIST FAST SLOW]) -) -(DEFINEQ - -(OLDFILEPOS - [LAMBDA (STR FILE START END SKIP TAIL CASEARRAY) (* ; "Edited 27-Jun-2022 23:35 by rmk") - (* ; "Edited 10-Aug-2020 21:44 by rmk:") - (* Pavel "12-Oct-86 15:13") - - (* ;; "RMK: Added coercion from internal XCCS string to UTF8 if searching a UTF8 file") - - (* ;; "NB: this function now works on non-PAGEMAPPED files. It must use only IO functions that respect that.") - - (PROG ((SKIPCHAR (AND SKIP (CHCON1 SKIP))) - [CA (fetch (ARRAYP BASE) of (COND - [CASEARRAY (COND - ((AND (ARRAYP CASEARRAY) - (EQ (fetch (ARRAYP TYP) of CASEARRAY) - \ST.BYTE)) - CASEARRAY) - (T (CASEARRAY CASEARRAY] - (T \TRANSPARENT] - (STREAM (\GETSTREAM FILE 'INPUT)) - CHAR FIRSTCHAR STRBASE STRINDEX PATLEN PATINDEX ORGFILEPTR LASTINDEX STARTBYTE ENDBYTE - BIGENDBYTE STARTSEG ENDSEG) - (CL:WHEN (EQ :UTF-8 (\EXTERNALFORMAT STREAM)) - (SETQ STR (XTOUSTRING STR))) - [COND - ((LITATOM STR) - (SETQ STRBASE (fetch (LITATOM PNAMEBASE) of STR)) - (SETQ STRINDEX 1) - (SETQ PATLEN (fetch (LITATOM PNAMELENGTH) of STR))) - (T (OR (STRINGP STR) - (SETQ STR (MKSTRING STR))) - (SETQ STRBASE (fetch (STRINGP BASE) of STR)) - (SETQ STRINDEX (fetch (STRINGP OFFST) of STR)) - (SETQ PATLEN (fetch (STRINGP LENGTH) of STR] (* ; - "calculate start addr and set file ptr.") - [SETQ STARTBYTE (COND - (START (COND - ((NOT (AND (FIXP START) - (IGEQ START 0))) - (LISPERROR "ILLEGAL ARG" START))) - (SETQ ORGFILEPTR (\GETFILEPTR STREAM)) - (\SETFILEPTR STREAM START) - START) - (T (SETQ ORGFILEPTR (\GETFILEPTR STREAM] - (* ; - "calculate the character address of the character after the last possible match.") - [SETQ ENDBYTE (ADD1 (COND - ((NULL END) (* ; "Default is end of file") - (IDIFFERENCE (\GETEOFPTR STREAM) - PATLEN)) - ((IGEQ END 0) (* ; "Absolute byte pointer given") - (IMIN END (IDIFFERENCE (\GETEOFPTR STREAM) - PATLEN))) - ((IGREATERP PATLEN (IMINUS END)) - (* ; - "END is too far, use eof less length") - (IDIFFERENCE (\GETEOFPTR STREAM) - PATLEN)) - (T (IDIFFERENCE (IPLUS (\GETEOFPTR STREAM) - END 1) - PATLEN] - - (* ;; "use STARTBYTE and ENDBYTE instead of START and END because vm functions shouldn't change their arguments.") - - (COND - ((IGEQ STARTBYTE ENDBYTE) (* ; "nothing to search") - (GO FAILED))) - (SETQ LASTINDEX PATLEN) - SKIPLP - (* ; - "set the first character to FIRSTCHAR, handling leading skips.") - (COND - ((EQ LASTINDEX 0) (* ; "null case") - (GO FOUNDIT)) - ((EQ (SETQ FIRSTCHAR (\GETBASEBYTE CA (\GETBASEBYTE STRBASE STRINDEX))) - SKIPCHAR) (* ; - "first character in pattern is skip.") - (SETQ LASTINDEX (SUB1 LASTINDEX)) - (\BIN STREAM) (* ; "Move forward a character.") - (add STRINDEX 1) - (add STARTBYTE 1) - (GO SKIPLP))) - (SETQ LASTINDEX (IPLUS LASTINDEX STRINDEX)) (* ; - "Used for end of pattern check, comparing against current INDEX") - [COND - ((SMALLP ENDBYTE) - (SETQ STARTSEG (SETQ ENDSEG 0))) - (T - (* ;; "The search will be in the large integers at least part of the time, so split the start and end fileptrs into hi and lo parts. The `segment' size we choose is smaller than 2^16 so that we are still smallp near the boundary (can get around that here by decrementing everyone, but can't in FFILEPOS). Note that STARTBYTE and ENDBYTE are never actually used as file ptrs, just for counting.") - - (SETQ ENDSEG (FOLDLO ENDBYTE FILEPOS.SEGMENT.SIZE)) - (SETQ BIGENDBYTE (IMOD ENDBYTE FILEPOS.SEGMENT.SIZE)) - (SETQ STARTSEG (FOLDLO STARTBYTE FILEPOS.SEGMENT.SIZE)) - (SETQ STARTBYTE (IMOD STARTBYTE FILEPOS.SEGMENT.SIZE)) - (SETQ ENDBYTE (COND - ((EQ STARTSEG ENDSEG) - BIGENDBYTE) - (T - - (* ;; "In different segments, so we'll have to search all the way to the end of this seg; hence, `end' is currently as big as it gets") - - FILEPOS.SEGMENT.SIZE] - FIRSTCHARLP - - - (* ;; "STARTBYTE is the possible beginning of a match. the file ptr of the file is always at STARTBYTE position when the FIRSTCHAR loop is passed.") - - (COND - ((EQ STARTBYTE ENDBYTE) (* ; "end of this part of search") - (COND - ((EQ STARTSEG ENDSEG) (* ; "failed") - (GO FAILED))) (* ; - "Finished this segment, roll over into new one") - (SETQ STARTBYTE 0) (* ; "= STARTBYTE-FILEPOS.SEGMENT.SIZE") - [COND - ((EQ (add STARTSEG 1) - ENDSEG) (* ; - "Entering final segment, so set ENDBYTE to actual end instead of segment end") - (COND - ((EQ (SETQ ENDBYTE BIGENDBYTE) - 0) - (GO FAILED] - (GO FIRSTCHARLP)) - ((NEQ FIRSTCHAR (\GETBASEBYTE CA (\BIN STREAM))) - (add STARTBYTE 1) - (GO FIRSTCHARLP))) - (SETQ PATINDEX STRINDEX) - MATCHLP - (* ; - "At this point, STR is matched thru offset PATINDEX") - (COND - ((EQ (SETQ PATINDEX (ADD1 PATINDEX)) - LASTINDEX) (* ; "matched for entire length") - (GO FOUNDIT)) - ((OR (EQ (SETQ CHAR (\GETBASEBYTE CA (\GETBASEBYTE STRBASE PATINDEX))) - (\GETBASEBYTE CA (\BIN STREAM))) - (EQ CHAR SKIPCHAR)) (* ; - "Char from file matches char from STR") - (GO MATCHLP)) - (T (* ; - "Match failed, so we have to start again with first char") - (\SETFILEPTR STREAM (IDIFFERENCE (\GETFILEPTR STREAM) - (IDIFFERENCE PATINDEX STRINDEX))) - - (* ;; "Back up over the chars we have just read in trying to match, less one. I.e. go back to one past the previous starting point") - - (add STARTBYTE 1) - (GO FIRSTCHARLP))) - FOUNDIT - (* ; - "set fileptr, adjust for beginning skips and return proper value.") - [COND - ((NOT TAIL) (* ; - "Fileptr wants to be at start of string") - (\SETFILEPTR STREAM (IDIFFERENCE (\GETFILEPTR STREAM) - PATLEN] - (RETURN (\GETFILEPTR STREAM)) - FAILED - (* ; - "return the fileptr to its initial position.") - (\SETFILEPTR STREAM ORGFILEPTR) - (RETURN NIL]) - -(OLDFFILEPOS - [LAMBDA (PATTERN FILE START END SKIP TAIL CASEARRAY) (* ; "Edited 10-Aug-2020 21:44 by rmk:") - - (* ;; "RMK: Added coercion from internal XCCS string to UTF8 if searching a UTF8 file") - (* Pavel "12-Oct-86 15:20") - (PROG ([STREAM (\GETSTREAM (OR FILE (INPUT] - PATBASE PATOFFSET PATLEN ORGFILEPTR STARTOFFSET ENDOFFSET BIGENDOFFSET STARTSEG ENDSEG EOF - ) - (COND - (SKIP (* ; "Slow case--use FILEPOS") - (GO TRYFILEPOS)) - ((NOT (fetch PAGEMAPPED of (fetch (STREAM DEVICE) of STREAM))) - (* ; - "This is a non-page-oriented file. Use FILEPOS instead.") - (GO TRYFILEPOS))) (* ; - "calculate start addr and set file ptr.") - (CL:WHEN (EQ :UTF8 (\EXTERNALFORMAT STREAM)) - (SETQ PATTERN (XTOUSTRING PATTERN))) - [COND - ((LITATOM PATTERN) - (SETQ PATBASE (fetch (LITATOM PNAMEBASE) of PATTERN)) - (SETQ PATOFFSET 1) - (SETQ PATLEN (fetch (LITATOM PNAMELENGTH) of PATTERN))) - (T (OR (STRINGP PATTERN) - (SETQ PATTERN (MKSTRING PATTERN))) - (SETQ PATBASE (fetch (STRINGP BASE) of PATTERN)) - (SETQ PATOFFSET (fetch (STRINGP OFFST) of PATTERN)) - (SETQ PATLEN (fetch (STRINGP LENGTH) of PATTERN] - (COND - ((OR (IGREATERP PATLEN \MAX.PATTERN.SIZE) - (ILESSP PATLEN \MIN.PATTERN.SIZE)) - (GO TRYFILEPOS))) - (SETQ ORGFILEPTR (\GETFILEPTR STREAM)) - (SETQ STARTOFFSET (IPLUS (COND - (START (COND - ((NOT (AND (FIXP START) - (IGEQ START 0))) - (LISPERROR "ILLEGAL ARG" START))) - START) - (T ORGFILEPTR)) - (SUB1 PATLEN))) (* ; - "STARTOFFSET is the address of the character corresponding to the last character of PATTERN.") - (SETQ EOF (\GETEOFPTR STREAM)) (* ; - "calculate the character address of the character after the last possible match.") - [SETQ ENDOFFSET (COND - ((NULL END) (* ; "Default is end of file") - EOF) - (T (IMIN (IPLUS (COND - ((ILESSP END 0) - (IPLUS EOF END 1)) - (T END)) - PATLEN) - EOF] - - (* ;; "use STARTOFFSET and ENDOFFSET instead of START and END because vm functions shouldn't change their arguments.") - - (COND - ((IGEQ STARTOFFSET ENDOFFSET) (* ; "nothing to search") - (RETURN)) - ((ILESSP (IDIFFERENCE ENDOFFSET STARTOFFSET) - \MIN.SEARCH.LENGTH) (* ; - "too small to make FFILEPOS worthwhile") - (GO TRYFILEPOS))) - (\SETFILEPTR STREAM STARTOFFSET) - [RETURN (GLOBALRESOURCE - (\FFDELTA1 \FFDELTA2 \FFPATCHAR) - (PROG ((CASE (fetch (ARRAYP BASE) - of (COND - [CASEARRAY (COND - ((AND (ARRAYP CASEARRAY) - (EQ (fetch (ARRAYP TYP) of CASEARRAY) - \ST.BYTE)) - CASEARRAY) - (T (CASEARRAY CASEARRAY] - (T \TRANSPARENT)))) - (DELTA1 (fetch (ARRAYP BASE) of \FFDELTA1)) - (DELTA2 (fetch (ARRAYP BASE) of \FFDELTA2)) - (PATCHAR (fetch (ARRAYP BASE) of \FFPATCHAR)) - (MAXPATINDEX (SUB1 PATLEN)) - CHAR CURPATINDEX LASTCHAR INC) - - (* ;; "Use Boyer-Moore string search algorithm. Use two auxiliary tables, DELTA1 and DELTA2, to tell how far ahead to move in the file when a partial match fails. DELTA1 contains, for each character code, the distance of that character from the right end of the pattern, or PATLEN if the character does not occur in the pattern. DELTA2 contains, for each character position in the pattern, how far ahead to move such that the partial substring discovered to the right of the position now matches some other substring (to the left) in the pattern. PATCHAR is just PATTERN translated thru CASEARRAY") - - (\SETUP.FFILEPOS PATBASE PATOFFSET PATLEN PATCHAR DELTA1 DELTA2 CASE) - [COND - ((SMALLP ENDOFFSET) - (SETQ STARTSEG (SETQ ENDSEG 0))) - (T - (* ;; "The search will be in the large integers at least part of the time, so split the start and end fileptrs into hi and lo parts. The `segment' size we choose is smaller than 2^16 so that we are still smallp near the boundary. Note that STARTOFFSET and ENDOFFSET are never actually used as file ptrs, just for counting.") - - (SETQ ENDSEG (FOLDLO ENDOFFSET FILEPOS.SEGMENT.SIZE)) - (SETQ BIGENDOFFSET (MOD ENDOFFSET FILEPOS.SEGMENT.SIZE)) - (SETQ STARTSEG (FOLDLO STARTOFFSET FILEPOS.SEGMENT.SIZE)) - (SETQ STARTOFFSET (MOD STARTOFFSET FILEPOS.SEGMENT.SIZE)) - (SETQ ENDOFFSET (COND - ((EQ STARTSEG ENDSEG) - BIGENDOFFSET) - (T - - (* ;; "In different segments, so we'll have to search all the way to the end of this seg; hence, `end' is currently as big as it gets") - - FILEPOS.SEGMENT.SIZE] - (SETQ LASTCHAR (GETBASEBYTE PATCHAR MAXPATINDEX)) - FIRSTCHARLP - (COND - [(IGEQ STARTOFFSET ENDOFFSET) (* ; "End of this chunk") - (COND - ((EQ STARTSEG ENDSEG) (* ; "failed") - (GO FAILED)) - (T (* ; - "Finished this segment, roll over into new one") - (add STARTSEG 1) - (SETQ STARTOFFSET (IDIFFERENCE STARTOFFSET FILEPOS.SEGMENT.SIZE)) - (COND - ((EQ STARTSEG ENDSEG) - (SETQ ENDOFFSET BIGENDOFFSET))) - (GO FIRSTCHARLP] - ((NEQ (SETQ CHAR (GETBASEBYTE CASE (\BIN STREAM))) - LASTCHAR) - (add STARTOFFSET (SETQ INC (GETBASEBYTE DELTA1 CHAR))) - (OR (EQ INC 1) - (\INCFILEPTR STREAM (SUB1 INC))) - (* ; - "advance file pointer accordingly (\BIN already advanced it one)") - (GO FIRSTCHARLP))) - (SETQ CURPATINDEX (SUB1 MAXPATINDEX)) - MATCHLP - (COND - ((ILESSP CURPATINDEX 0) - (GO FOUNDIT))) - (\DECFILEPTR STREAM 2) (* ; "back up to read previous char") - (COND - ((NEQ (SETQ CHAR (GETBASEBYTE CASE (\BIN STREAM))) - (GETBASEBYTE PATCHAR CURPATINDEX)) - (* ; - "Mismatch, advance by greater of delta1 and delta2") - (add STARTOFFSET (IDIFFERENCE (SETQ INC (IMAX (GETBASEBYTE DELTA1 CHAR) - (GETBASEBYTE DELTA2 - CURPATINDEX))) - (IDIFFERENCE MAXPATINDEX CURPATINDEX))) - (OR (EQ INC 1) - (\INCFILEPTR STREAM (SUB1 INC))) - (GO FIRSTCHARLP))) - (SETQ CURPATINDEX (SUB1 CURPATINDEX)) - (GO MATCHLP) - FOUNDIT - (* ; - "set fileptr, adjust for beginning skips and return proper value.") - (\INCFILEPTR STREAM (COND - (TAIL (* ; "Put fileptr at end of string") - (SUB1 PATLEN)) - (T (* ; - "back up over the last char we looked at, i.e. the first char of string") - -1))) - (RETURN (\GETFILEPTR STREAM)) - FAILED - (* ; - "return the fileptr to its initial position.") - (\SETFILEPTR STREAM ORGFILEPTR) - (RETURN NIL] - TRYFILEPOS - (RETURN (FILEPOS PATTERN STREAM START END SKIP TAIL CASEARRAY]) -) - -(FILESLOAD FPTESTS) - -(ADDTOVAR DIRECTORIES {WMEDLEY}test>filepos>) - - - -(* ;; "Compiling also requires EXPORTS.ALL") - -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(FILESLOAD (LOADCOMP) - IOCHAR) -) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (759 6571 (TFP 769 . 2219) (TFP1 2221 . 4656) (FPC 4658 . 5619) (FPCS 5621 . 6569)) ( -6572 27191 (OLDFILEPOS 6582 . 16284) (OLDFFILEPOS 16286 . 27189))))) -STOP diff --git a/internal/test/filepos/TFP.LCOM b/internal/test/filepos/TFP.LCOM deleted file mode 100644 index aabd3f1d627426e037cedb8d8ed3ef847d6b9689..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 zcmb_hUu;`f8TX%c9ognNZkDxKiO#IHIH8Gr@Abd9Tky4g9Xq+c$FrTbS+kmU4$Hqb zUDJu8Y0!-c0WXL`y8;qolx^^YV=GeEwY`uB#3~^qw1)SU7cNW`3$l z7EWVO$1Ca5*sD*!yf}4sad_^;nfVi^hvyewI59tbYN|Rv^$le(JpA>AvvV`2UmOrE z!!xJPO`ScB5$C2B&kcVKYn@qG94==HgNGEUk92I>IT(wFBk^#|PfnhlYHdAr{><6M z{c(axWCmhn#&w;v3p_YD=qJ?^=OE^`<)ZOm$lv$BPb=O3(-AoulEWmP%BseQRvIW% z637^(4t@|E2FH&VirV2E9WM=}p@+@VOG;dk<5J{)3noYVI@ndl)3J^~fk-h@C^E}Q z6I7xkMe}*hD6>k099DH!2$Ql_VoeG!lu(jM*&sQ5GVCLfvN}>iA;L_(zU#i4y*~X$)_Fbax|VC7J8G>l$`=rSd9jDDJyE;rtaO>`^vxT3wee)V zi*{9fCiN~Kq`v8%inro14cGD7757#B=JXr7^QP{)k*8gJZvD^s#$RS?f1qN*0(NXe#i98!~AL}`IMb$@8;o@(B7WPUX%7L@1lEgz@Ex( zlXkl*-An7!bnk&mk6HVdBcOztri#!!Q9=s00GTLCh?gXy00x*-(YLX~Hrh7g? z9*S6St7DBL`r2$7=dL#>-I>=UPcZEtvS+Ai0GOzQqIEKWRlnNNg`p~q>-XV z3g{Dzzy=EwC`e>dg9RRz$WWN%$HWFCCJa_0F?&g+br#ub>gzCadPe}~h{36z9>5-q^pp+!H5hEVnc>4?9K7T^^yf}h0piXhRBGK(J~DL|%LEUFWz#c&rn<`Pj-8p{<> zh!D+So)gCT)gqe_A`Dqkz_qGn+=PL$Y`YS>CQZ$wDM&K3m{-f(eYh8)rJxq!NAMhp z^aJVDalJeML9mFbi{bt7r1HZ~hfDp5T78ijM)OURe``fi{ms_)_+8rlqWxV}d@u3O z_qkoG+%8YL5>=-{8c$Z8^(U%M_s^lEegbQVE z^vA5qr1gE?`X0Bw6^~u;+6AA^cNgx^Rjv1NF)TlPlUFKTuhFiJQGBOsx-kD`x0pZ8 z`?J$MJ<~mpu*;dCzUoZ#viT6Jyus&Gd}F!1K|RzAaqexbnnbXw9f zUxDe%gxMc#AB`<5kcSjP3z}gmQjWx+a3jr?E=Qn4R0b^7%Hc4Ui*sT&;3XlZ{sJw* zNuu0L7*b|(nw}oCtXm3)#HK?rlGXGAs7sCkWre9Qhszm-@iLL&z+>9P5n4=RF$fAH zF-kdVkXVFJJ)L3lu$`hqo2wF`nGA`9c&jxgET&ksP!vN*2q&@EP#}O^mKBs4H`opA z_EHEh)DbQvJ!!|4rDr+-5 zaV6V~t+fDDCjp_86sR0-SsTQPA5EoTt?R)NMv zGXq&j{fy9j=`&Sd(y7pWMn$~wf2#W;)cxS+SNEe2wrQKghtR*R@q1UZ61CLKlw+yc zh8q%N`V%f2gYH{!6BW8+t{iUZ>wYNw9`($$YbkVy>6xjDDVnKQv@?QbdSjYyGgFIE zWr?UkNk)VLD&|G-BaaZ#iZFo%qHF*doQ0vRD6wLg`FBYhVPyuNAX%%XkYsKIoyiG= z&gcb#Y*ZvM)b0xs9g@L6w4)dbNGy)<+b$PTML?mp`l76Y00r$4=3n+4M({q@26c_|qU{}5;iRKRsyiO6?=mxd&TW@_ws|pA`(1{2*RCb1N}^fsO8owz4;(k=Zt?GJ z$IjZYnEz{g88dO)<(+N5BkHdwFnUYNAKkYS^A89%_n67${!t-ihxizs&d$*}>i766 zzDl>5Y9xicwS_9;3v)KPb|pFgB%f|>o9V;MeQc&VD#B+oS-UZtT5I&A#46OYS|MhY zlC`?uq@?ym>X}Wgu3Z+r-xHtIow++0ICrPAn|7}u;dq;RkSEYCT*;Etfe2w`Wis2W z@1b3DtLPXdrZM;7E!sWzAtbJ?(k|l;8^61{!+FJ=t@I-3t{wX5@8Vyj7d@xHwf-^U zZQ9*xMO@y^Tf0rVm-aR<(w^5(UvTgco$hYd`*~|)&n&i}d$AK6RR5SFh@WlN|29f} z{7$C5dTx}gG~X4{)c#-~J)vHl#Y?-IjbtuQy(=rn_?X5&$Fj}FKSrxt6|f7}c);VM zUSoAt+_YG2Y5ly`*tdOr7sdxL-eZm4rkBStpx*;Ni-0&LOIq3Xu<+2(<~nkU_I?Ff z^5lqC)@Y^xhg5(BZB-coe|r@q*gjbXs!p;;53N|FMZ`jzMoWnF*<|LpncPvJL_{L{ z_w#su0D%ys1gt2nChx)2?OiX+F=p_23y?`88pw^kUm*$;V5D&))oc{SZ#6`e8Ae|5Dz9Ofh?><4eWf+Mta1v7iZTa&5%^&vCSwMf zQELWNn!$PPNw{XK%ID$W;Ephxh$Ie?EW`U2hcF6lQApHc5X%s(Y_3(aa=KO>F>^a@ z@cd3N1%y}2t#J@TC z@!O6dLo(ODvwVzTf-5$HUucK=_vWtO1Ju8_4eGDkP=9Rx!Wy>x_Pl$HeP7um&<6nh zN3wHtx5sxQx!kRf&8^$=Y9m?3Za5gX;^au{%}TwRRCGeLTPR z*0guNYUEehR^Du0U>Ik_W%uh#j%)Mlb9eZ$dCx}2rTGh6o6om5b-EwREEo8AaiI>{ zV;A&(bE9MQ0QJ*-l!zeFG(ZdW5%7YKy&Rokv@5mKZrz`$U7dac^zATf zKd=f*>x->YQIPV|`Zrtb;WG_R9v(B_YV(?T)^?L6v!D|Xqmx^ZC9qN%G>!aPL!;g* zy6OkatS+u-+DCiD#&oas?G;}y7>6x*!Lce9teezxy!JjNS+Y{;r-RK#Zyv|&U#SE? zyh(#|&Bo8O_y|U*{g4Jgl?TmPdT^~#%AWd<*w3DQfF4|FHlktyT-Cu9uw0dqFIce> zqyc(xbyX~TacMoXvGCG*j2^7LlhuBN+kWlTx>$CbaqWR|$sXU*x<8R^%hy0iF(84B zXweAB2nc4AQ#1s^Xsbt%ZEvartlR71XmAt%gg{Rlq!40Y1yUI=47M_61qdu2kl1sS zRSE)8`JA#M_9dKyb4Zk;Pl{#PLrx$)Jk-`n9`8DV0jy- z9gs{TtKE}ci5h&Oy z;^ZE{FAnAM1YY_1t3P|bMY)7NkoU9C+I13OKUK7TsldZziv7nkK5uVJ?^x0DE!K$? zwuF(^n}0w}rw^;e5(#vqb44vxro|lkUpbQ3(z-VB>eHY8^H3jF>L-T|5r2yR{)G2g za$E)TTQ;T?mC{QGVgZO#DkHKjzr6YjZAMYS(%HHe}?11bQC{2wre@?bU o3+Pl$v(7$}qbvmJ!$0x!5Hec!L}kg|!DKH}NKfubbpG=EU-L>7>;M1& diff --git a/internal/test/filepos/ZEROONETWO.XCCS b/internal/test/filepos/ZEROONETWO.XCCS deleted file mode 100644 index 108d4a6e..00000000 --- a/internal/test/filepos/ZEROONETWO.XCCS +++ /dev/null @@ -1 +0,0 @@ -012 \ No newline at end of file diff --git a/internal/test/printing/BADFILES.TEST b/internal/test/printing/BADFILES.TEST deleted file mode 100644 index a7067a53..00000000 --- a/internal/test/printing/BADFILES.TEST +++ /dev/null @@ -1 +0,0 @@ -(HCFILES "{DSK}larry>ilisp>envos>" "{DSK}larry>medley>tmp>psfiles>") diff --git a/internal/test/printing/BADFILES.TXT b/internal/test/printing/BADFILES.TXT deleted file mode 100644 index da197495..00000000 --- a/internal/test/printing/BADFILES.TXT +++ /dev/null @@ -1,66 +0,0 @@ -{DSK}larry>ilisp>envos>xd0e>DOC>PUBS>admin>doc-dirs>ERIS-DOC-WO-LOOPS.TEDIT;2 -{DSK}larry>ilisp>envos>xd0e>DOC>medley1.2>RS6000>keybaord-layout.tedit;3 -{DSK}larry>ilisp>envos>xd0e>DOC>medley2.0>final>ug>APP-D-DIFFERENCES.TEDIT;1 -{DSK}larry>ilisp>envos>xd0e>DOC>printers>recommendation.tedit;3 -{DSK}larry>ilisp>envos>xd0e>LISPCORE>internal>DOC>1982BUGS.TEDIT;1 -{DSK}larry>ilisp>envos>xd0e>LISPCORE>internal>DOC>BRIEFINGBLURB-DRAFT.TEDIT;1 -{DSK}larry>ilisp>envos>xd0e>LISPCORE>internal>DOC>CHAT-GENERIC.TEDIT;1 -{DSK}larry>ilisp>envos>xd0e>LISPCORE>internal>DOC>HELLO.TEDIT;1 -{DSK}larry>ilisp>envos>xd0e>LISPCORE>internal>DOC>IDDESCRIPTION.TEDIT;1 -{DSK}larry>ilisp>envos>xd0e>LISPCORE>internal>DOC>LISPARFIELDS.TEDIT;1 -{DSK}larry>ilisp>envos>xd0e>LISPCORE>internal>DOC>NSCHARACTERS.TEDIT;1 -{DSK}larry>ilisp>envos>xd0e>LISPCORE>internal>DOC>SOURCEFILES.TEDIT;1 -{DSK}larry>ilisp>envos>xd0e>LISPCORE>internal>library>COLOROBJ.TEDIT;1 -{DSK}larry>ilisp>envos>xd0e>LISPCORE>internal>library>DSKTEST.TEDIT;1 -{DSK}larry>ilisp>envos>xd0e>LISPCORE>notecards>library>BOONE-V-COE.TED;1 -{DSK}larry>ilisp>envos>xd0e>LISPCORE>notecards>library>NCPLOTCARD.TED;1 -{DSK}larry>ilisp>envos>xd0e>MISC>test>GC>HAND-AUX>ADVDICT-N-Z.TEDIT;1 -{DSK}larry>ilisp>envos>xd0e>MISC>test>Library>TEdit>Hand-Aux>AR10063.TEDIT;1 -{DSK}larry>ilisp>envos>xd0e>MISC>test>i>o>Hardcopy>Hand>testfiles>04PARA.TEDIT;1 -{DSK}larry>ilisp>envos>xd0e>OTHER>lafite>Doc>LAFITEDELTA.TED;1 -{DSK}larry>ilisp>envos>xd0e>OTHER>lafite>Doc>LAFITEIMPL.TED;1 -{DSK}larry>ilisp>envos>xd0e>OTHER>lafite>Doc>Manual>LAFITEMANUAL-INDEXINTERNAL.TEDIT;1 -{DSK}larry>ilisp>envos>xd0e>RELEASE>lispusers>2.0>src>EQUATIONEXAMPLES.TEDIT;1 -{DSK}larry>ilisp>envos>xd0e>RELEASE>notecards>1.2>doc>03-SOFTWARE-INSTALLATION.TEDIT;1 -{DSK}larry>ilisp>envos>xd0e>RELEASE>notecards>1.2>doc>05-NOTECARDS-BASICS.TEDIT;1 -{DSK}larry>ilisp>envos>xd0e>RELEASE>notecards>1.2>doc>11-SYSTEM-CARDS.TEDIT;1 -{DSK}larry>ilisp>envos>xd0e>RELEASE>notecards>2.0>src>library>BOONE-V-COE.TED;1 -{DSK}larry>ilisp>envos>xd1d>users>nilsson>intercalc>inter-calc>INTERCALCDEMO.TEDIT;1 -{DSK}larry>ilisp>envos>xd1d>users>nilsson>intercalc>inter-calc>INTERCALCDOCUMENTATION.TEDIT;1 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>JELLINEK>graphics>DDLCOLORHAX.TEDIT;1 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>JELLINEK>graphics>LUCASFILMFORMAT.TEDIT;1 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>basics>INVOICE.TEDIT;1 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>genis>FLYER-COV-CHOICE.TEDIT;1 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>genis>FLYER-COV.TEDIT;1 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>inter-calc>INTERCALCDEMO.TEDIT;1 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>inter-calc>INTERCALCDOCUMENTATION.TEDIT;1 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>sd>ADVERTS>Cherry-RidgeWFH.TEdit;5 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>sd>Callerlab>Adv-Committee>Defns>ADVDEFNS.TEDIT;1 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>sd>Callerlab>Board>CALLERLAB-BYLAWCHANGE.TEDIT;1 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>sd>Callerlab>Challenge-Committee>C1-NEW-DEFNS.TEDIT;1 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>sd>Callerlab>Challenge-Committee>C1DEFNS.TEDIT;1 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>sd>Callerlab>Challenge-Committee>C2DEFNS.TEDIT;1 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>sd>NUMBERART.TEDIT;1 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>top10-87>Dictionaries>ADVDICT-A-M.TEDIT;13 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>top10-87>Dictionaries>ADVDICT-N-Z.TEDIT;9 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>top10-87>Dictionaries>C1DEFNS-I-R.TEDIT;9 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>top10-87>Dictionaries>C1DEFNS-S.TEDIT;7 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>top10-87>Dictionaries>C1DEFNS-T-Z.TEDIT;9 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>top10-87>Dictionaries>C2DEFNS-A-E.TEDIT;11 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>top10-87>Dictionaries>C2DEFNS-F-O.TEDIT;5 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>top10-87>Dictionaries>C2DEFNS-P-S.TEDIT;6 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>top10-87>Dictionaries>C2DEFNS-T-Z.TEDIT;6 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>top10-87>Dictionaries>DICT-PREFACE.TEDIT;14 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>top10-87>Dictionaries>leftover-calls.tedit;3 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>top10-87>FRA>ARRANGEMENTS.TEDIT;28 -{DSK}larry>ilisp>envos>xd1d>users>sybalsky>venue>ads>aaai>top-rapid-dev.TEdit;4 -{DSK}larry>ilisp>envos>xd1d>users>turpin>IRM-3>old>24-STREAMS.TEDIT;1 -{DSK}larry>ilisp>envos>xd1d>users>turpin>IRM-3>old>25-IO.TEDIT;1 -{DSK}larry>ilisp>envos>xd1d>users>turpin>IRM-3>old>27-GRAPHICS.TEDIT;1 -{DSK}larry>ilisp>envos>xd1d>users>turpin>IRM-3>old>28-WINDOWS.TEDIT;1 -{DSK}larry>ilisp>envos>xd1d>users>turpin>IRM-3>old>29-HARDCOPY.TEDIT;1 -{DSK}larry>ilisp>envos>xd1d>users>turpin>IRM-3>old>30-ETHERNET.TEDIT;1 -{DSK}larry>ilisp>envos>xd1d>users>turpin>IRM-3>old>30-TERMINAL.TEDIT;1 -{DSK}larry>ilisp>envos>xd1d>users>turpin>IRM-3>old>31-ETHERNET.TEDIT;1 -{DSK}larry>medley>lispusers>ACE>ACE-MAINTAINERS-NOTES.TEDIT;1 -{DSK}larry>medley>lispusers>EQUATIONEXAMPLES.TEDIT;1 diff --git a/internal/test/unpackfilename/TESTUPF b/internal/test/unpackfilename/TESTUPF deleted file mode 100644 index 691c3380..00000000 --- a/internal/test/unpackfilename/TESTUPF +++ /dev/null @@ -1,546 +0,0 @@ -(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) - -(FILECREATED "23-May-2022 12:30:29"  -{DSK}kaplan>local>medley3.5>working-medley>sources>TESTUPF.;1 32843 ) - - -(PRETTYCOMPRINT TESTUPFCOMS) - -(RPAQQ TESTUPFCOMS - ((COMS (* ; "Original code") - (FNS OLD-UNPACKFILENAME.STRING \UPF.NEXTPOS \UPF.TEMPFILEP) - (DECLARE%: DONTCOPY (MACROS CANONICAL.DIRECTORY UNPACKFILE1.DIRECTORY UNPACKFILE1))) - - (* ;; "Debugging") - - - (* ;; "DOTTEDNAMES: mismatch intended") - - - (* ;; "RETURNFAILS: mismatch with DIRFLG=RETURN, DIRECTORY and SUBDIRECTORY are swapped. But original doesn't agree with its own complete analaysis.") - - (VARS DOTTEDNAMES TESTS RETURNFAILS) - (FNS TRY TRYALL DT))) - - - -(* ; "Original code") - -(DEFINEQ - -(OLD-UNPACKFILENAME.STRING - [LAMBDA (FILE ONEFIELDFLG DIRFLG OSTYPE PACKFLG CLFLG) (* ; "Edited 25-Jan-2022 17:16 by rmk") - (* ; "Edited 5-Jan-2022 11:03 by rmk") - (* ; "Edited 30-Mar-90 22:37 by nm") - -(* ;;; "Given a string or atom representation of a file name, unpack it into its component parts") - -(* ;;; "rmk: devices must come before directories.") - - (PROG ((POS 1) - (LEN (NCHARS FILE)) - TEM BEYONDNAME BEYONDEXT VAL CODE HOSTP SUBDIREND FIRSTDOT SECONDDOT USEDSEMI) - (COND - ((NULL FILE) - (RETURN NIL)) - ((OR (LITATOM FILE) - (STRINGP FILE) - (NUMBERP FILE))) - ((TYPEP FILE 'PATHNAME) - (RETURN (UNPACKPATHNAME.STRING FILE ONEFIELDFLG DIRFLG PACKFLG))) - [(STREAMP FILE) (* ; - "For streams, use full name. If anonymous, fake it") - (SETQ FILE (OR (ffetch FULLFILENAME of FILE) - (RETURN (COND - (ONEFIELDFLG (AND (EQ ONEFIELDFLG 'NAME) - FILE)) - (T (LIST 'NAME FILE] - (T (\ILLEGAL.ARG FILE))) - (COND - ((SELCHARQ (NTHCHARCODE FILE 1) - ({ (* ; "normal use in Interlisp-D") - (SETQ TEM (SUB1 (OR (\UPF.NEXTPOS (CHARCODE }) - FILE 2) - 0)))) - (%[ (* ; - "some Xerox and Arpanet systems use '[' for host") - (SETQ TEM (SUB1 (OR (\UPF.NEXTPOS (CHARCODE "]") - FILE 2) - 0)))) - (%( (* ; - "this is the 'proposed standard' for Xerox servers") - (SETQ TEM (SUB1 (OR (\UPF.NEXTPOS (CHARCODE ")") - FILE 2) - 0)))) - NIL) - (UNPACKFILE1 'HOST 2 TEM) - [COND - ((EQ TEM -1) (* ; - "Started with the host field delimiter, but there was no corresponding terminating delimiter .") - (* ; - "I'm not sure why the name is dealt with the host name.") - (RETURN (DREVERSE VAL] - (SETQ POS (IPLUS TEM 2)) - [if (EQ OSTYPE T) - then (* ; - "Use actual host to determine os type") - (SETQ OSTYPE (GETHOSTINFO (CAR VAL) - 'OSTYPE] - (SETQ HOSTP T))) - - (* ;; "rmk: if there is a colon before the next < or /, then we must be looking at a device. A device appears to end after the last colon, i.e., a device name can have a colon inside it.") - - (COND - ((AND (SETQ TEM (\UPF.NEXTPOS (CHARCODE (%: < /)) - FILE POS)) - (EQ (CHARCODE %:) - (NTHCHARCODE FILE TEM))) (* ; - "all device returned have DEVICE.END on it so that NIL: will work") - (UNPACKFILE1 'DEVICE POS (if CLFLG - then (SUB1 TEM) - else TEM)) - (SETQ POS (ADD1 TEM)) - (SETQ HOSTP T))) - (COND - ((EQ DIRFLG 'RETURN) (* ; "assert that this is a directory; more forgiving about missing trailing delimiter. There are two distinct cases for the missing initial delimiter. If HOST is also specified, it is dealt with as the true %"relative pathname%" by device dependent manner, otherwise it is dealt with following the %"incomplete file names%" convention. In the first case, returns RELATIVEDIRECTORY instead of DIRECTORY and in the second case, returns SUBDIRECTORY.") - (LET ((TYPE 'DIRECTORY) - (START (SELCHARQ (NTHCHARCODE FILE POS) - (NIL (* ; "just host, return") - (RETURN (DREVERSE VAL))) - ((/ <) (* ; - "Started with the initial directory delimiter.") - (ADD1 POS)) - POS)) - END) - (SETQ END (SELCHARQ (NTHCHARCODE FILE -1) - ((/ >) - [COND - ((EQ START POS) (* ; - "Didn't start with a directory delimiter,") - (COND - ((NOT HOSTP) (* ; "%"Incomplete file names%" case defined in IRM. This is a subdirectory of the current connected directory") - (SETQ TYPE 'SUBDIRECTORY)) - (T (* ; "True %"relative pathname%". The way to deal with it is dependent on the device on which HOST is implemented.") - (SETQ TYPE 'RELATIVEDIRECTORY] - (COND - ((EQ LEN POS) (* ; - "Only the initial directory is specified (i.e. %"{DSK}/%").") - (SETQ START POS) - -1) - (T -2))) - (PROGN [COND - [(EQ START POS) (* ; - "Both of the initial and trail delimiters are omitted.") - (COND - ((NOT HOSTP) (* ; "%"Incomplete file names%" case defined in IRM. This is a subdirectory of the current connected directory") - (SETQ TYPE 'SUBDIRECTORY)) - (T (* ; "True %"relative pathname%". The way to deal with it is dependent on the device on which HOST is implemented.") - (SETQ TYPE 'RELATIVEDIRECTORY] - (T (COND - ((EQ LEN POS) - (* ; - "Only the initial directory is specified (i.e. %"{DSK}<%").") - (SETQ START POS] - -1))) - (UNPACKFILE1.DIRECTORY TYPE START END)) - (RETURN (DREVERSE VAL))) - ((SELCHARQ (NTHCHARCODE FILE POS) - (/ (* ; - "unix and the 'xerox standard' use / for delimiter") - (* ; - "In the case of the {DSK}/FOO>BAR, FOO should be dealt with as a directory.") - (SETQ TEM (LASTCHPOS (CHARCODE (/ >)) - FILE - (ADD1 POS))) - T) - ((< >) (* ; - "Interlisp-D and most other Xerox systems, and Tops-20/Tenex use <>. Jericho uses >>") - (* ; - "In the case of the {DSK} /)) - FILE - (ADD1 POS))) - T) - NIL) - - (* ;; "allow {DSK}/etc to be a directory specification.") - - (if TEM - then (UNPACKFILE1.DIRECTORY 'DIRECTORY (ADD1 POS) - (SUB1 TEM)) - (SETQ POS (ADD1 TEM)) - else - (* ;; "{DSK}/foo: the directory is /, the name is foo") - - (UNPACKFILE1.DIRECTORY 'DIRECTORY POS POS) - (SETQ POS (ADD1 POS))) - (SETQ HOSTP T)) - ((SETQ TEM (LASTCHPOS (CHARCODE (/ >)) - FILE POS)) (* ; " {eris}abc> relative") - - (* ;; - " This is the true %"relative pathname%". Returns RELATIVEDIRECTORY instead of DIRECTORY.") - - [COND - ((NOT HOSTP) (* ; "%"Incomplete file names%" case.") - (UNPACKFILE1.DIRECTORY (if (EQ DIRFLG 'FIELD) - then 'DIRECTORY - else 'SUBDIRECTORY) - POS - (SUB1 TEM))) - (T (* ; "True %"relative pathname%".") - (UNPACKFILE1.DIRECTORY (if (EQ DIRFLG 'FIELD) - then 'DIRECTORY - else 'RELATIVEDIRECTORY) - POS - (SUB1 TEM] - (SETQ POS (ADD1 TEM)) - (SETQ HOSTP T))) - (OR (SETQ CODE (NTHCHARCODE FILE (SETQ TEM POS))) - (RETURN (DREVERSE VAL))) - (if (EQ OSTYPE T) - then (* ; - "There wasn't a host field in the name, so we have no clue") - (SETQ OSTYPE NIL)) - NAMELP - - - (* ;; "At this point, CODE is the TEM'th char of file name. POS is the first character of the field we are currently working on.") - - (SELCHARQ CODE - (%. (* ; - "Note position for later--we only want to deal with the last set of dots") - (if BEYONDNAME - then (* ; - "no longer of interest (probably a bad name, too)") - elseif FIRSTDOT - then (* ; "We're recording the second dot") - (if SECONDDOT - then (* ; - "Note only the two most recent dots") - (SETQ FIRSTDOT SECONDDOT)) - (SETQ SECONDDOT TEM) - else (SETQ FIRSTDOT TEM))) - ((! ; NIL) (* ; - "SUBDIRECTORY, NAME and EXTENSION fields definitely terminated by now") - (if (SELCHARQ CODE - (! (* ; - "! is only a delimiter on IFS, so ignore it if we know the ostype is something else") - (AND OSTYPE (NEQ OSTYPE 'IFS))) - (; (* ; "If we've already parsed the extension, then we have a semi in the middle of the version. Skip it unless it's ;T or ;S") - [AND BEYONDEXT (NOT (\UPF.TEMPFILEP FILE (ADD1 TEM]) - NIL) - then (GO NEXTCHAR)) - (if FIRSTDOT - then (* ; - "Have a name and/or extension to parse now") - (if - [AND SECONDDOT - (NOT (if OSTYPE - then (* ; - "Known OS type must be Tops20 for second dot to mean version") - (EQ OSTYPE 'TOPS20) - else (* ; - "Unknown OS type, so check that %"version%" is numeric or wildcard") - (AND [for I from (ADD1 SECONDDOT) to (SUB1 TEM) - bind CH - always (OR (DIGITCHARP (SETQ CH (NTHCHARCODE FILE I - ))) - (EQ CH (CHARCODE *] - (SELCHARQ CODE - (NIL (* ; "end of file name, ok") - T) - (; (* ; - "This semi-colon better not be introducing a version") - (\UPF.TEMPFILEP FILE (ADD1 TEM))) - NIL] - then (* ; - "Second dot is not intoducing a version") - (SETQ FIRSTDOT SECONDDOT) - (SETQ SECONDDOT NIL)) - (UNPACKFILE1 'NAME POS (SUB1 FIRSTDOT)) - (SETQ POS (ADD1 (if SECONDDOT - then (UNPACKFILE1 'EXTENSION (ADD1 FIRSTDOT) - (SUB1 SECONDDOT)) - (SETQ BEYONDEXT T) - SECONDDOT - else FIRSTDOT))) - (SETQ BEYONDNAME T) - (SETQ FIRSTDOT NIL)) - (UNPACKFILE1 (COND - ((NOT BEYONDNAME) - (SETQQ BEYONDNAME NAME)) - ((NOT BEYONDEXT) - 'EXTENSION) - ((AND (EQ BEYONDEXT (CHARCODE ";")) - (\UPF.TEMPFILEP FILE POS))) - (T (* ; - "Everything after the semi was version") - 'VERSION)) - POS - (SUB1 TEM)) - (if (NULL CODE) - then (* ; "End of string") - (RETURN (DREVERSE VAL))) - (SETQ BEYONDEXT CODE) (* ; - "Note the character that terminated the name/ext") - (SETQ POS (ADD1 TEM))) - (%' (* ; "Quoter") - (add TEM 1)) - NIL) - NEXTCHAR - (SETQ CODE (NTHCHARCODE FILE (add TEM 1))) - (GO NAMELP]) - -(\UPF.NEXTPOS - [LAMBDA (CHAR STRING POS) (* lmm " 5-Oct-84 18:41") - (bind NCH while (SETQ NCH (NTHCHARCODE STRING POS)) do (COND - ((EQMEMB NCH CHAR) - (RETURN POS)) - ((EQ NCH (CHARCODE %')) - (add POS 1))) - (add POS 1]) - -(\UPF.TEMPFILEP - [LAMBDA (FILENAME START) (* ; "Edited 6-Jan-88 13:12 by bvm:") - - (* ;; "Checks whether START denotes a temporary mark for Twenex filename beginning at START. Returns the appropriate field name if so. Not sure we should parse this junk any more, but this at least localizes it.") - - (SELCHARQ (NTHCHARCODE FILENAME START) - ((T S) (* ; "Funny temp stuff") - (AND (EQ START (NCHARS FILENAME)) - 'TEMPORARY)) - NIL]) -) -(DECLARE%: DONTCOPY -(DECLARE%: EVAL@COMPILE - -(PUTPROPS CANONICAL.DIRECTORY MACRO - [OPENLAMBDA (SRCSTRING) - (AND - SRCSTRING - (LET - ((LEN (NCHARS SRCSTRING))) - (COND - ((EQ LEN 1) - (if (STREQUAL SRCSTRING "/") - then "<" - else SRCSTRING)) - (T - (LET* - ((FATP (ffetch (STRINGP FATSTRINGP) of SRCSTRING)) - (DSTSTRING (ALLOCSTRING LEN NIL NIL (AND FATP T))) - (DSTBASE (ffetch (STRINGP BASE) of DSTSTRING)) - (DSTPOS 0) - (NEXTPOS -1)) - (if (NOT FATP) - then [for SRCPOS from 1 to LEN bind CODE - first (while (EQMEMB (NTHCHARCODE SRCSTRING SRCPOS) - (CHARCODE (< / >))) do (add SRCPOS 1)) - (if (> SRCPOS LEN) - then (RETURN "<")) - do (SELCHARQ (SETQ CODE (NTHCHARCODE SRCSTRING SRCPOS)) - ((> /) - (if (> DSTPOS NEXTPOS) - then (\PUTBASETHIN DSTBASE DSTPOS (CHARCODE >)) - (SETQ NEXTPOS (add DSTPOS 1)))) - (%' (\PUTBASETHIN DSTBASE DSTPOS CODE) - (add DSTPOS 1) - (if (NEQ SRCPOS LEN) - then (\PUTBASETHIN DSTBASE DSTPOS - (NTHCHARCODE SRCSTRING (add SRCPOS 1))) - (add DSTPOS 1))) - (PROGN (\PUTBASETHIN DSTBASE DSTPOS CODE) - (add DSTPOS 1))) - finally (RETURN (if (EQ DSTPOS LEN) - then (if (EQMEMB (NTHCHARCODE DSTSTRING -1) - (CHARCODE (> /))) - then (SUBSTRING DSTSTRING 1 -2) - else DSTSTRING) - elseif (EQMEMB (NTHCHARCODE DSTSTRING DSTPOS) - (CHARCODE (> /))) - then (SUBSTRING DSTSTRING 1 (SUB1 DSTPOS)) - else (SUBSTRING DSTSTRING 1 DSTPOS] - else (for SRCPOS from 1 to LEN bind CODE - first (while (EQMEMB (NTHCHARCODE SRCSTRING SRCPOS) - (CHARCODE (< / >))) do (add SRCPOS 1)) - do (SELCHARQ (SETQ CODE (NTHCHARCODE SRCSTRING SRCPOS)) - ((> /) - (if (> DSTPOS NEXTPOS) - then (\PUTBASEFAT DSTBASE DSTPOS (CHARCODE >)) - (SETQ NEXTPOS (add DSTPOS 1)))) - (%' (\PUTBASEFAT DSTBASE DSTPOS CODE) - (add DSTPOS 1) - (if (NEQ SRCPOS LEN) - then (\PUTBASEFAT DSTBASE DSTPOS (NTHCHARCODE - SRCSTRING - (add SRCPOS 1))) - (add DSTPOS 1))) - (PROGN (\PUTBASEFAT DSTBASE DSTPOS CODE) - (add DSTPOS 1))) - finally (RETURN (if (EQ DSTPOS LEN) - then (if (EQMEMB (NTHCHARCODE DSTSTRING -1) - (CHARCODE (> /))) - then (SUBSTRING DSTSTRING 1 -2) - else DSTSTRING) - elseif (EQMEMB (NTHCHARCODE DSTSTRING DSTPOS) - (CHARCODE (> /))) - then (SUBSTRING DSTSTRING 1 (SUB1 DSTPOS)) - else (SUBSTRING DSTSTRING 1 DSTPOS]) - -(PUTPROPS UNPACKFILE1.DIRECTORY MACRO [OPENLAMBDA (NAM ST END) - (LET* ((OLDDIR (SUBSTRING FILE ST END)) - (NEWDIR (CANONICAL.DIRECTORY OLDDIR))) - (COND - [(NOT ONEFIELDFLG) - (SETQ VAL (CONS (COND - (PACKFLG (AND NEWDIR - (MKATOM NEWDIR))) - (T (OR NEWDIR ""))) - (CONS NAM VAL] - ((EQMEMB NAM ONEFIELDFLG) - (RETURN (COND - (PACKFLG (AND NEWDIR (MKATOM NEWDIR))) - (T (OR NEWDIR ""]) - -(PUTPROPS UNPACKFILE1 MACRO [OPENLAMBDA (NAM ST END) (* lmm "22-APR-81 22:21") - (COND - [(NOT ONEFIELDFLG) - (SETQ VAL (CONS (COND - (PACKFLG (SUBATOM FILE ST END)) - (T (OR (SUBSTRING FILE ST END) - ""))) - (CONS NAM VAL] - ((EQMEMB NAM ONEFIELDFLG) - (RETURN (COND - (PACKFLG (SUBATOM FILE ST END)) - (T (OR (SUBSTRING FILE ST END) - ""]) -) -) - - - -(* ;; "Debugging") - - - - -(* ;; "DOTTEDNAMES: mismatch intended") - - - - -(* ;; -"RETURNFAILS: mismatch with DIRFLG=RETURN, DIRECTORY and SUBDIRECTORY are swapped. But original doesn't agree with its own complete analaysis." -) - - -(RPAQQ DOTTEDNAMES (".x" ">.git" "x.y.100")) - -(RPAQQ TESTS - ("*,;" "*.*;*" "*.;" "*.;*" "///abc/x" "/abc.x" "<" "<<" "<<>" "<<x" - "<>>zz" "<>>zzz/" "<>zz" "<zz" "" "aa" "" - "" "" "qrs" "" ";1" "xyz" "xyz>foo" ">zz" ">>zzz/" ">" ">>>abc/x" ">abc" ">abc;1" ">abc>" ">abc>xyz>foo" ">xxx" - "A.B.C" "XXX" "aaa>bbb>" - "aaa>xyz.e;m;n" "aaa>xyz>qrs" "abc" "abc...c" "abc///XYZ//" "abc/d" "abc/xyz" - "abc/xyz.qrs" "abc/xyz.qrs;2" "abc:xz" "abc<<qq" "abc;1" "abc>qr.x" "abc>xy" "abc>xyz" "abc>xyz;2" - "dev:aaa>xyz>qrs" "foo:" "foo:aaa" "foo:xz" "foo" "s;n;b" - "x.y.z;w" "x.y;z" "x;y" "xqrs" "xz" "xxx" - "xxxzzz" "xxx>yyy" "xxx>yyy>" "{ABC}" "{ABC}XXX:" "{DSK}" "{DSK}*.;*" "{DSK}...yyy" "{DSK}xxx>xxx" "{DSK}xxx>yyy" - "{HOST}foo:xz" "{HOST}xz" "{abc}" "{dsk}foo:aaa>b>.c.e.g;f" - "{dsk}foo:aaa>b>.c.e;f" "{dsk}foo:aaa>b>c.e;f" "{eris}abc>" "{host}abc/xyz;2" - "{host}abc>xyz;2" "{x}abcqq" "{x}abcabc" "qrs" - "")) - -(RPAQQ RETURNFAILS (">" ">>>abc/x" ">abc" ">abc;1" ">abc>" ">abc>xyz>foo" ">xxx" ">" ">>>abc/x" - ">abc" ">abc;1" ">abc>" ">abc>xyz>foo" ">xxx")) -(DEFINEQ - -(TRY - [LAMBDA (FILE ONEFIELDFLG DIRFLG) (* ; "Edited 23-May-2022 12:09 by rmk") - (* ; "Edited 25-Apr-2022 14:15 by rmk") - (* ; "Edited 24-Apr-2022 08:45 by rmk") - (* ; "Edited 21-Apr-2022 15:36 by rmk") - (CL:WHEN (LISTP (CAR (LISTP FILE))) - (SETQ FILE (CAR FILE))) - (LET (ORIG NEW) - (CL:WHEN (LISTP FILE) - (SETQ ONEFIELDFLG (CADR FILE)) - (SETQ DIRFLG (CADDR FILE)) - (SETQ FILE (CAR FILE))) - (SETQ ORIG (OLD-UNPACKFILENAME.STRING FILE ONEFIELDFLG DIRFLG)) - (SETQ NEW (UNPACKFILENAME.STRING FILE ONEFIELDFLG DIRFLG)) - (LIST (LIST FILE ONEFIELDFLG DIRFLG) - (AND (EQUAL ORIG NEW) - '=) - ORIG NEW]) - -(TRYALL - [LAMBDA (FILES ALLFLAG ONEFIELDFLG DIRFLG) (* ; "Edited 21-Apr-2022 17:56 by rmk") - (* ; "Edited 2-Apr-2022 23:50 by rmk") - (* ; "Edited 31-Mar-2022 22:57 by rmk") - (CL:WHEN (LISTP FILES) - (SETQ FILES (FOR F IN FILES COLLECT (CL:IF (LISTP (CAR (LISTP F))) - (CAR F) - F)))) - (FOR FILE INFO (SAME _ 0) - (DIFF _ 0) IN FILES EACHTIME (SETQ INFO (TRY FILE ONEFIELDFLG DIRFLG)) - (CL:IF (CADR INFO) - (ADD SAME 1) - (ADD DIFF 1)) UNLESS (AND (CADR INFO) - (NOT ALLFLAG)) - COLLECT (PRINTOUT T .P2 (CAAR INFO) - 31) - (IF (CADR INFO) - THEN (PRINTOUT T " = " .P2 (CADDR INFO)) - (CL:WHEN (OR (CADAR INFO) - (CADDAR INFO)) - (PRINTOUT T 60 (CADAR INFO) - %,, - (CADDAR INFO)) - (TERPRI T)) - ELSE (PRINTOUT T " ~= " -2 "old: " .P2 (CADDR INFO)) - (CL:WHEN (OR (CADAR INFO) - (CADDAR INFO)) - (PRINTOUT T 60 (CADAR INFO) - %,, - (CADDAR INFO)) - (TERPRI T)) - (PRINTOUT T 37 "new: " .P2 (CADDDR INFO) - T)) - INFO FINALLY (PRINTOUT T SAME " matches, " DIFF " mismatches" T]) - -(DT - [LAMBDA (STRINGS ALLFLAG) (* ; "Edited 21-Apr-2022 17:53 by rmk") - (* ; "Edited 19-Apr-2022 20:55 by rmk") - - (* ;; "Tests the DIRFLG options on STRINGS. If an element of STRINGS is a list, it is assumed to be a (STRING ONEFIELD DIRFLG), STRING is extracted.") - - (SETQ STRINGS (FOR S INSIDE STRINGS COLLECT (CL:IF (LISTP S) - (CAR S) - S))) - [AND NIL (FOR ONEFIELD IN '(NAME DIRECTORY SUBDIRECTORY RELATIVEDIRECTORY) - JOIN (FOR DIR ORIG NEW SAME IN '(FIELD RETURN) - JOIN (PRINTOUT T T "ONEFIELDFLG = " ONEFIELD -3 "DIRFLG = " DIR T T) - (TRYALL STRINGS ALLFLAG ONEFIELD DIR)) - FINALLY (FOR INFO SAME (DIFF _ 0) IN $$VAL DO (CL:IF (CADR INFO) - (ADD SAME 1) - (ADD DIFF 1)) - FINALLY (SETQ SAME (IDIFFERENCE (LENGTH STRINGS) - DIFF)) - (PRINTOUT T T "Overall: " SAME " matched, " DIFF " mismatched" T] - (TRYALL (FOR S IN STRINGS JOIN (FOR ONEFIELD IN '(NAME DIRECTORY SUBDIRECTORY RELATIVEDIRECTORY) - JOIN (FOR DIR IN '(FIELD RETURN) - COLLECT (LIST S ONEFIELD DIR]) -) -(DECLARE%: DONTCOPY - (FILEMAP (NIL (893 18981 (OLD-UNPACKFILENAME.STRING 903 . 17808) (\UPF.NEXTPOS 17810 . 18396) ( -\UPF.TEMPFILEP 18398 . 18979)) (28216 32820 (TRY 28226 . 29192) (TRYALL 29194 . 31111) (DT 31113 . -32818))))) -STOP diff --git a/internal/test/unpackfilename/TESTUPF.LCOM b/internal/test/unpackfilename/TESTUPF.LCOM deleted file mode 100644 index bbc3143632d475f680901d9be6edb54300986a2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13624 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". But the old code is inconsistent for these inputs: it returns different classifications of those substrings with or without the RETURN. (I think RETURN is for the case "/Users/kaplan" where the caller knows that the whole thing is a directory, doesnıt want Şkaplanş to be parsed as a name. Just wants it to be normalized, with host and device stripped off.)