From 4fedeeaf7a7bfd68132524536a9d692ddc8f318b Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 8 Jan 2010 19:53:04 +0000 Subject: [PATCH] add module->compiled-module-expression, which is used in Scribble's traversal of module paths to find documented bindings svn: r17576 --- collects/scribble/search.ss | 25 +- .../reference/module-reflect.scrbl | 11 +- doc/release-notes/mzscheme/HISTORY.txt | 3 + src/mzscheme/src/cstartup.inc | 596 +++++++++--------- src/mzscheme/src/module.c | 60 +- src/mzscheme/src/schminc.h | 2 +- src/mzscheme/src/schvers.h | 4 +- 7 files changed, 387 insertions(+), 314 deletions(-) diff --git a/collects/scribble/search.ss b/collects/scribble/search.ss index 86321b198a..e2420d5b37 100644 --- a/collects/scribble/search.ss +++ b/collects/scribble/search.ss @@ -17,6 +17,10 @@ (module-path-index-join name (module-path-index-rejoin base rel-to))]))) + (define (try thunk) + (with-handlers ([exn:fail? (lambda (exn) #f)]) + (thunk))) + (define (find-scheme-tag part ri stx/binding phase-level) ;; The phase-level argument is used only when `stx/binding' ;; is an identifier. @@ -106,12 +110,21 @@ rmp (lambda () (let-values ([(valss stxess) - (with-handlers ([exn:fail? - (lambda (exn) - (values null null))]) - (module-compiled-exports - (get-module-code (resolved-module-path-name rmp) - #:choose (lambda (src zo so) 'zo))))]) + (let ([exp + (or + (try + (lambda () + ;; First, try using bytecode: + (get-module-code (resolved-module-path-name rmp) + #:choose (lambda (src zo so) 'zo)))) + (try + (lambda () + ;; Bytecode not available. Declaration in the + ;; current namespace? + (module->compiled-module-expression rmp))))]) + (if exp + (module-compiled-exports exp) + (values null null)))]) (let ([t ;; Merge the two association lists: (let loop ([base valss] diff --git a/collects/scribblings/reference/module-reflect.scrbl b/collects/scribblings/reference/module-reflect.scrbl index 8bae45866a..dd56e4d650 100644 --- a/collects/scribblings/reference/module-reflect.scrbl +++ b/collects/scribblings/reference/module-reflect.scrbl @@ -366,7 +366,8 @@ Like @scheme[dynamic-require], but in a @tech{phase} that is @math{1} more than the namespace's @tech{base phase}.} -@defproc[(module->language-info [mod module-path?]) +@defproc[(module->language-info + [mod (or/c module-path? path? resolved-module-path?)]) (or/c #f (vector/c module-path? symbol? any/c))]{ Returns information intended to reflect the ``language'' of the @@ -375,3 +376,11 @@ necessarily @tech{instantiate}d or @tech{visit}ed) in the current namespace. The information is the same as would have been returned by @scheme[module-compiled-language-info] applied to the module's implementation as compiled code.} + +@defproc[(module->compiled-module-expression + [mod (or/c module-path? path? resolved-module-path?)]) + compiled-module-expression?]{ + +Returns the implementation of @scheme[mod], which must be declared +(but not necessarily @tech{instantiate}d or @tech{visit}ed) in the +current namespace.} diff --git a/doc/release-notes/mzscheme/HISTORY.txt b/doc/release-notes/mzscheme/HISTORY.txt index 544b8120f4..dabed921d9 100644 --- a/doc/release-notes/mzscheme/HISTORY.txt +++ b/doc/release-notes/mzscheme/HISTORY.txt @@ -1,3 +1,6 @@ +Version 4.2.3.11 +Added module->compiled-module-expression + Version 4.2.3.10 Added more fl and fx operations diff --git a/src/mzscheme/src/cstartup.inc b/src/mzscheme/src/cstartup.inc index a6ef54cef0..f8c82ef1f0 100644 --- a/src/mzscheme/src/cstartup.inc +++ b/src/mzscheme/src/cstartup.inc @@ -1,43 +1,43 @@ { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,52,46,50,46,51,46,49,48,50,0,0,0,1,0,0,3,0,12, -0,17,0,30,0,37,0,41,0,45,0,48,0,55,0,62,0,67,0,72,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,52,46,50,46,51,46,49,49,50,0,0,0,1,0,0,3,0,12, +0,17,0,21,0,26,0,31,0,35,0,42,0,55,0,58,0,65,0,72,0, 78,0,92,0,106,0,109,0,115,0,119,0,121,0,132,0,134,0,148,0,155, 0,177,0,179,0,193,0,4,1,33,1,44,1,55,1,65,1,101,1,134,1, 167,1,226,1,36,2,114,2,180,2,185,2,205,2,96,3,116,3,167,3,233, 3,118,4,4,5,56,5,79,5,158,5,0,0,105,7,0,0,29,11,11,68, -104,101,114,101,45,115,116,120,64,99,111,110,100,72,112,97,114,97,109,101,116, -101,114,105,122,101,66,108,101,116,114,101,99,63,97,110,100,63,108,101,116,62, -111,114,66,100,101,102,105,110,101,66,117,110,108,101,115,115,64,108,101,116,42, -64,119,104,101,110,65,113,117,111,116,101,29,94,2,13,68,35,37,107,101,114, +104,101,114,101,45,115,116,120,64,108,101,116,42,63,108,101,116,64,119,104,101, +110,64,99,111,110,100,63,97,110,100,66,108,101,116,114,101,99,72,112,97,114, +97,109,101,116,101,114,105,122,101,62,111,114,66,100,101,102,105,110,101,66,117, +110,108,101,115,115,65,113,117,111,116,101,29,94,2,13,68,35,37,107,101,114, 110,101,108,11,29,94,2,13,68,35,37,112,97,114,97,109,122,11,62,105,102, 65,98,101,103,105,110,63,115,116,120,61,115,70,108,101,116,45,118,97,108,117, 101,115,61,120,73,108,101,116,114,101,99,45,118,97,108,117,101,115,66,108,97, 109,98,100,97,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111, 110,45,107,101,121,61,118,73,100,101,102,105,110,101,45,118,97,108,117,101,115, -97,35,11,8,240,28,79,0,0,95,159,2,15,35,35,159,2,14,35,35,159, -2,14,35,35,16,20,2,3,2,1,2,4,2,1,2,6,2,1,2,7,2, -1,2,5,2,1,2,9,2,1,2,8,2,1,2,10,2,1,2,11,2,1, -2,12,2,1,97,36,11,8,240,28,79,0,0,93,159,2,14,35,36,16,2, -2,2,161,2,1,36,2,2,2,1,2,2,96,11,11,8,240,28,79,0,0, -16,0,96,37,11,8,240,28,79,0,0,16,0,13,16,4,35,29,11,11,2, +97,35,11,8,240,228,78,0,0,95,159,2,15,35,35,159,2,14,35,35,159, +2,14,35,35,16,20,2,10,2,1,2,3,2,1,2,4,2,1,2,5,2, +1,2,6,2,1,2,7,2,1,2,9,2,1,2,8,2,1,2,11,2,1, +2,12,2,1,97,36,11,8,240,228,78,0,0,93,159,2,14,35,36,16,2, +2,2,161,2,1,36,2,2,2,1,2,2,96,11,11,8,240,228,78,0,0, +16,0,96,37,11,8,240,228,78,0,0,16,0,13,16,4,35,29,11,11,2, 1,11,18,16,2,99,64,104,101,114,101,8,31,8,30,8,29,8,28,8,27, -93,8,224,35,79,0,0,95,9,8,224,35,79,0,0,2,1,27,248,22,137, +93,8,224,235,78,0,0,95,9,8,224,235,78,0,0,2,1,27,248,22,137, 4,195,249,22,130,4,80,158,38,35,251,22,77,2,16,248,22,92,199,12,249, 22,67,2,17,248,22,94,201,27,248,22,137,4,195,249,22,130,4,80,158,38, 35,251,22,77,2,16,248,22,92,199,249,22,67,2,17,248,22,94,201,12,27, 248,22,69,248,22,137,4,196,28,248,22,75,193,20,15,159,36,35,36,28,248, 22,75,248,22,69,194,248,22,68,193,249,22,130,4,80,158,38,35,251,22,77, -2,16,248,22,68,199,249,22,67,2,6,248,22,69,201,11,18,16,2,101,10, +2,16,248,22,68,199,249,22,67,2,7,248,22,69,201,11,18,16,2,101,10, 8,31,8,30,8,29,8,28,8,27,16,4,11,11,2,18,3,1,8,101,110, -118,49,50,55,54,56,16,4,11,11,2,19,3,1,8,101,110,118,49,50,55, -54,57,93,8,224,36,79,0,0,95,9,8,224,36,79,0,0,2,1,27,248, +118,49,50,55,53,48,16,4,11,11,2,19,3,1,8,101,110,118,49,50,55, +53,49,93,8,224,236,78,0,0,95,9,8,224,236,78,0,0,2,1,27,248, 22,69,248,22,137,4,196,28,248,22,75,193,20,15,159,36,35,36,28,248,22, 75,248,22,69,194,248,22,68,193,249,22,130,4,80,158,38,35,250,22,77,2, 20,248,22,77,249,22,77,248,22,77,2,21,248,22,68,201,251,22,77,2,16, -2,21,2,21,249,22,67,2,8,248,22,69,204,18,16,2,101,11,8,31,8, +2,21,2,21,249,22,67,2,10,248,22,69,204,18,16,2,101,11,8,31,8, 30,8,29,8,28,8,27,16,4,11,11,2,18,3,1,8,101,110,118,49,50, -55,55,49,16,4,11,11,2,19,3,1,8,101,110,118,49,50,55,55,50,93, -8,224,37,79,0,0,95,9,8,224,37,79,0,0,2,1,248,22,137,4,193, +55,53,51,16,4,11,11,2,19,3,1,8,101,110,118,49,50,55,53,52,93, +8,224,237,78,0,0,95,9,8,224,237,78,0,0,2,1,248,22,137,4,193, 27,248,22,137,4,194,249,22,67,248,22,77,248,22,68,196,248,22,69,195,27, 248,22,69,248,22,137,4,23,197,1,249,22,130,4,80,158,38,35,28,248,22, 53,248,22,131,4,248,22,68,23,198,2,27,249,22,2,32,0,89,162,8,44, @@ -51,8 +51,8 @@ 22,249,22,2,32,0,89,162,8,44,36,46,9,222,33,42,248,22,137,4,248, 22,68,201,248,22,69,198,27,248,22,69,248,22,137,4,196,27,248,22,137,4, 248,22,68,195,249,22,130,4,80,158,39,35,28,248,22,75,195,250,22,78,2, -20,9,248,22,69,199,250,22,77,2,7,248,22,77,248,22,68,199,250,22,78, -2,11,248,22,69,201,248,22,69,202,27,248,22,69,248,22,137,4,23,197,1, +20,9,248,22,69,199,250,22,77,2,4,248,22,77,248,22,68,199,250,22,78, +2,3,248,22,69,201,248,22,69,202,27,248,22,69,248,22,137,4,23,197,1, 27,249,22,1,22,81,249,22,2,22,137,4,248,22,137,4,248,22,68,199,249, 22,130,4,80,158,39,35,251,22,77,1,22,119,105,116,104,45,99,111,110,116, 105,110,117,97,116,105,111,110,45,109,97,114,107,2,24,250,22,78,1,23,101, @@ -61,15 +61,15 @@ 107,45,115,101,116,45,102,105,114,115,116,11,2,24,201,250,22,78,2,20,9, 248,22,69,203,27,248,22,69,248,22,137,4,196,28,248,22,75,193,20,15,159, 36,35,36,249,22,130,4,80,158,38,35,27,248,22,137,4,248,22,68,197,28, -249,22,167,8,62,61,62,248,22,131,4,248,22,92,196,250,22,77,2,20,248, -22,77,249,22,77,21,93,2,25,248,22,68,199,250,22,78,2,3,249,22,77, +249,22,168,8,62,61,62,248,22,131,4,248,22,92,196,250,22,77,2,20,248, +22,77,249,22,77,21,93,2,25,248,22,68,199,250,22,78,2,6,249,22,77, 2,25,249,22,77,248,22,101,203,2,25,248,22,69,202,251,22,77,2,16,28, -249,22,167,8,248,22,131,4,248,22,68,200,64,101,108,115,101,10,248,22,68, -197,250,22,78,2,20,9,248,22,69,200,249,22,67,2,3,248,22,69,202,100, +249,22,168,8,248,22,131,4,248,22,68,200,64,101,108,115,101,10,248,22,68, +197,250,22,78,2,20,9,248,22,69,200,249,22,67,2,6,248,22,69,202,100, 8,31,8,30,8,29,8,28,8,27,16,4,11,11,2,18,3,1,8,101,110, -118,49,50,55,57,52,16,4,11,11,2,19,3,1,8,101,110,118,49,50,55, -57,53,93,8,224,38,79,0,0,18,16,2,158,94,10,64,118,111,105,100,8, -47,95,9,8,224,38,79,0,0,2,1,27,248,22,69,248,22,137,4,196,249, +118,49,50,55,55,54,16,4,11,11,2,19,3,1,8,101,110,118,49,50,55, +55,55,93,8,224,238,78,0,0,18,16,2,158,94,10,64,118,111,105,100,8, +47,95,9,8,224,238,78,0,0,2,1,27,248,22,69,248,22,137,4,196,249, 22,130,4,80,158,38,35,28,248,22,53,248,22,131,4,248,22,68,197,250,22, 77,2,26,248,22,77,248,22,68,199,248,22,92,198,27,248,22,131,4,248,22, 68,197,250,22,77,2,26,248,22,77,248,22,68,197,250,22,78,2,23,248,22, @@ -81,25 +81,25 @@ 10,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12, 35,45,36,11,11,11,16,0,16,0,16,0,35,35,11,11,11,11,16,0,16, 0,16,0,35,35,16,11,16,5,2,2,20,15,159,35,35,35,35,20,102,159, -35,16,0,16,1,33,32,10,16,5,2,10,89,162,8,44,36,52,9,223,0, -33,33,35,20,102,159,35,16,1,2,2,16,0,11,16,5,2,12,89,162,8, +35,16,0,16,1,33,32,10,16,5,2,12,89,162,8,44,36,52,9,223,0, +33,33,35,20,102,159,35,16,1,2,2,16,0,11,16,5,2,5,89,162,8, 44,36,52,9,223,0,33,34,35,20,102,159,35,16,1,2,2,16,0,11,16, -5,2,6,89,162,8,44,36,52,9,223,0,33,35,35,20,102,159,35,16,1, -2,2,16,1,33,36,11,16,5,2,8,89,162,8,44,36,55,9,223,0,33, -37,35,20,102,159,35,16,1,2,2,16,1,33,38,11,16,5,2,7,89,162, +5,2,7,89,162,8,44,36,52,9,223,0,33,35,35,20,102,159,35,16,1, +2,2,16,1,33,36,11,16,5,2,10,89,162,8,44,36,55,9,223,0,33, +37,35,20,102,159,35,16,1,2,2,16,1,33,38,11,16,5,2,4,89,162, 8,44,36,57,9,223,0,33,41,35,20,102,159,35,16,1,2,2,16,0,11, -16,5,2,5,89,162,8,44,36,52,9,223,0,33,43,35,20,102,159,35,16, -1,2,2,16,0,11,16,5,2,11,89,162,8,44,36,53,9,223,0,33,44, -35,20,102,159,35,16,1,2,2,16,0,11,16,5,2,4,89,162,8,44,36, +16,5,2,8,89,162,8,44,36,52,9,223,0,33,43,35,20,102,159,35,16, +1,2,2,16,0,11,16,5,2,3,89,162,8,44,36,53,9,223,0,33,44, +35,20,102,159,35,16,1,2,2,16,0,11,16,5,2,9,89,162,8,44,36, 54,9,223,0,33,45,35,20,102,159,35,16,1,2,2,16,0,11,16,5,2, -3,89,162,8,44,36,57,9,223,0,33,46,35,20,102,159,35,16,1,2,2, -16,1,33,48,11,16,5,2,9,89,162,8,44,36,53,9,223,0,33,49,35, +6,89,162,8,44,36,57,9,223,0,33,46,35,20,102,159,35,16,1,2,2, +16,1,33,48,11,16,5,2,11,89,162,8,44,36,53,9,223,0,33,49,35, 20,102,159,35,16,1,2,2,16,0,11,16,0,94,2,14,2,15,93,2,14, 9,9,35,0}; EVAL_ONE_SIZED_STR((char *)expr, 2019); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,52,46,50,46,51,46,49,48,65,0,0,0,1,0,0,13,0,18, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,52,46,50,46,51,46,49,49,65,0,0,0,1,0,0,13,0,18, 0,35,0,50,0,68,0,84,0,94,0,112,0,132,0,148,0,166,0,197,0, 226,0,248,0,6,1,12,1,26,1,31,1,41,1,49,1,77,1,109,1,115, 1,160,1,205,1,229,1,12,2,69,2,159,3,200,3,17,5,103,5,189,5, @@ -132,196 +132,196 @@ 32,115,116,114,105,110,103,6,36,36,99,97,110,110,111,116,32,97,100,100,32, 97,32,115,117,102,102,105,120,32,116,111,32,97,32,114,111,111,116,32,112,97, 116,104,58,32,27,20,14,159,80,158,36,50,250,80,158,39,51,249,22,27,11, -80,158,41,50,22,128,13,10,248,22,160,5,23,196,2,28,248,22,157,6,23, -194,2,12,87,94,248,22,171,8,23,194,1,248,80,159,37,53,36,195,28,248, -22,75,23,195,2,9,27,248,22,68,23,196,2,27,28,248,22,174,13,23,195, -2,23,194,1,28,248,22,173,13,23,195,2,249,22,175,13,23,196,1,250,80, -158,42,48,248,22,190,13,2,19,11,10,250,80,158,40,48,248,22,190,13,2, -19,23,197,1,10,28,23,193,2,249,22,67,248,22,177,13,249,22,175,13,23, -198,1,247,22,191,13,27,248,22,69,23,200,1,28,248,22,75,23,194,2,9, -27,248,22,68,23,195,2,27,28,248,22,174,13,23,195,2,23,194,1,28,248, -22,173,13,23,195,2,249,22,175,13,23,196,1,250,80,158,47,48,248,22,190, -13,2,19,11,10,250,80,158,45,48,248,22,190,13,2,19,23,197,1,10,28, -23,193,2,249,22,67,248,22,177,13,249,22,175,13,23,198,1,247,22,191,13, +80,158,41,50,22,129,13,10,248,22,161,5,23,196,2,28,248,22,158,6,23, +194,2,12,87,94,248,22,172,8,23,194,1,248,80,159,37,53,36,195,28,248, +22,75,23,195,2,9,27,248,22,68,23,196,2,27,28,248,22,175,13,23,195, +2,23,194,1,28,248,22,174,13,23,195,2,249,22,176,13,23,196,1,250,80, +158,42,48,248,22,191,13,2,19,11,10,250,80,158,40,48,248,22,191,13,2, +19,23,197,1,10,28,23,193,2,249,22,67,248,22,178,13,249,22,176,13,23, +198,1,247,22,128,14,27,248,22,69,23,200,1,28,248,22,75,23,194,2,9, +27,248,22,68,23,195,2,27,28,248,22,175,13,23,195,2,23,194,1,28,248, +22,174,13,23,195,2,249,22,176,13,23,196,1,250,80,158,47,48,248,22,191, +13,2,19,11,10,250,80,158,45,48,248,22,191,13,2,19,23,197,1,10,28, +23,193,2,249,22,67,248,22,178,13,249,22,176,13,23,198,1,247,22,128,14, 248,80,159,45,52,36,248,22,69,23,199,1,87,94,23,193,1,248,80,159,43, 52,36,248,22,69,23,197,1,87,94,23,193,1,27,248,22,69,23,198,1,28, -248,22,75,23,194,2,9,27,248,22,68,23,195,2,27,28,248,22,174,13,23, -195,2,23,194,1,28,248,22,173,13,23,195,2,249,22,175,13,23,196,1,250, -80,158,45,48,248,22,190,13,2,19,11,10,250,80,158,43,48,248,22,190,13, -2,19,23,197,1,10,28,23,193,2,249,22,67,248,22,177,13,249,22,175,13, -23,198,1,247,22,191,13,248,80,159,43,52,36,248,22,69,23,199,1,248,80, -159,41,52,36,248,22,69,196,27,248,22,150,13,23,195,2,28,23,193,2,192, -87,94,23,193,1,28,248,22,162,6,23,195,2,27,248,22,172,13,195,28,192, -192,248,22,173,13,195,11,87,94,28,28,248,22,151,13,23,195,2,10,28,248, -22,150,13,23,195,2,10,28,248,22,162,6,23,195,2,28,248,22,172,13,23, -195,2,10,248,22,173,13,23,195,2,11,12,250,22,135,9,76,110,111,114,109, +248,22,75,23,194,2,9,27,248,22,68,23,195,2,27,28,248,22,175,13,23, +195,2,23,194,1,28,248,22,174,13,23,195,2,249,22,176,13,23,196,1,250, +80,158,45,48,248,22,191,13,2,19,11,10,250,80,158,43,48,248,22,191,13, +2,19,23,197,1,10,28,23,193,2,249,22,67,248,22,178,13,249,22,176,13, +23,198,1,247,22,128,14,248,80,159,43,52,36,248,22,69,23,199,1,248,80, +159,41,52,36,248,22,69,196,27,248,22,151,13,23,195,2,28,23,193,2,192, +87,94,23,193,1,28,248,22,163,6,23,195,2,27,248,22,173,13,195,28,192, +192,248,22,174,13,195,11,87,94,28,28,248,22,152,13,23,195,2,10,28,248, +22,151,13,23,195,2,10,28,248,22,163,6,23,195,2,28,248,22,173,13,23, +195,2,10,248,22,174,13,23,195,2,11,12,250,22,136,9,76,110,111,114,109, 97,108,45,112,97,116,104,45,99,97,115,101,6,42,42,112,97,116,104,32,40, 102,111,114,32,97,110,121,32,115,121,115,116,101,109,41,32,111,114,32,118,97, 108,105,100,45,112,97,116,104,32,115,116,114,105,110,103,23,197,2,28,28,248, -22,151,13,23,195,2,249,22,167,8,248,22,152,13,23,197,2,2,20,249,22, -167,8,247,22,181,7,2,20,27,28,248,22,162,6,23,196,2,23,195,2,248, -22,171,7,248,22,155,13,23,197,2,28,249,22,139,14,0,21,35,114,120,34, +22,152,13,23,195,2,249,22,168,8,248,22,153,13,23,197,2,2,20,249,22, +168,8,247,22,182,7,2,20,27,28,248,22,163,6,23,196,2,23,195,2,248, +22,172,7,248,22,156,13,23,197,2,28,249,22,140,14,0,21,35,114,120,34, 94,91,92,92,93,91,92,92,93,91,63,93,91,92,92,93,34,23,195,2,28, -248,22,162,6,195,248,22,158,13,195,194,27,248,22,137,7,23,195,1,249,22, -159,13,248,22,174,7,250,22,145,14,0,6,35,114,120,34,47,34,28,249,22, -139,14,0,22,35,114,120,34,91,47,92,92,93,91,46,32,93,43,91,47,92, -92,93,42,36,34,23,201,2,23,199,1,250,22,145,14,0,19,35,114,120,34, +248,22,163,6,195,248,22,159,13,195,194,27,248,22,138,7,23,195,1,249,22, +160,13,248,22,175,7,250,22,146,14,0,6,35,114,120,34,47,34,28,249,22, +140,14,0,22,35,114,120,34,91,47,92,92,93,91,46,32,93,43,91,47,92, +92,93,42,36,34,23,201,2,23,199,1,250,22,146,14,0,19,35,114,120,34, 91,32,46,93,43,40,91,47,92,92,93,42,41,36,34,23,202,1,6,2,2, -92,49,80,159,43,36,37,2,20,28,248,22,162,6,194,248,22,158,13,194,193, -87,94,28,28,248,22,150,13,23,195,2,10,28,248,22,162,6,23,195,2,28, -248,22,172,13,23,195,2,10,248,22,173,13,23,195,2,11,12,250,22,135,9, -23,196,2,2,21,23,197,2,28,248,22,172,13,23,195,2,12,248,22,168,11, -249,22,174,10,248,22,191,6,250,22,146,7,2,22,23,200,1,23,201,1,247, -22,23,87,94,28,28,248,22,150,13,23,195,2,10,28,248,22,162,6,23,195, -2,28,248,22,172,13,23,195,2,10,248,22,173,13,23,195,2,11,12,250,22, -135,9,23,196,2,2,21,23,197,2,28,248,22,172,13,23,195,2,12,248,22, -168,11,249,22,174,10,248,22,191,6,250,22,146,7,2,22,23,200,1,23,201, -1,247,22,23,87,94,87,94,28,28,248,22,150,13,23,195,2,10,28,248,22, -162,6,23,195,2,28,248,22,172,13,23,195,2,10,248,22,173,13,23,195,2, -11,12,250,22,135,9,195,2,21,23,197,2,28,248,22,172,13,23,195,2,12, -248,22,168,11,249,22,174,10,248,22,191,6,250,22,146,7,2,22,199,23,201, +92,49,80,159,43,36,37,2,20,28,248,22,163,6,194,248,22,159,13,194,193, +87,94,28,28,248,22,151,13,23,195,2,10,28,248,22,163,6,23,195,2,28, +248,22,173,13,23,195,2,10,248,22,174,13,23,195,2,11,12,250,22,136,9, +23,196,2,2,21,23,197,2,28,248,22,173,13,23,195,2,12,248,22,169,11, +249,22,175,10,248,22,128,7,250,22,147,7,2,22,23,200,1,23,201,1,247, +22,23,87,94,28,28,248,22,151,13,23,195,2,10,28,248,22,163,6,23,195, +2,28,248,22,173,13,23,195,2,10,248,22,174,13,23,195,2,11,12,250,22, +136,9,23,196,2,2,21,23,197,2,28,248,22,173,13,23,195,2,12,248,22, +169,11,249,22,175,10,248,22,128,7,250,22,147,7,2,22,23,200,1,23,201, +1,247,22,23,87,94,87,94,28,28,248,22,151,13,23,195,2,10,28,248,22, +163,6,23,195,2,28,248,22,173,13,23,195,2,10,248,22,174,13,23,195,2, +11,12,250,22,136,9,195,2,21,23,197,2,28,248,22,173,13,23,195,2,12, +248,22,169,11,249,22,175,10,248,22,128,7,250,22,147,7,2,22,199,23,201, 1,247,22,23,249,22,3,89,162,8,44,36,49,9,223,2,33,33,196,87,94, -28,28,248,22,150,13,23,194,2,10,28,248,22,162,6,23,194,2,28,248,22, -172,13,23,194,2,10,248,22,173,13,23,194,2,11,12,250,22,135,9,2,6, -2,21,23,196,2,28,248,22,172,13,23,194,2,12,248,22,168,11,249,22,174, -10,248,22,191,6,250,22,146,7,2,22,2,6,23,200,1,247,22,23,32,36, +28,28,248,22,151,13,23,194,2,10,28,248,22,163,6,23,194,2,28,248,22, +173,13,23,194,2,10,248,22,174,13,23,194,2,11,12,250,22,136,9,2,6, +2,21,23,196,2,28,248,22,173,13,23,194,2,12,248,22,169,11,249,22,175, +10,248,22,128,7,250,22,147,7,2,22,2,6,23,200,1,247,22,23,32,36, 89,162,8,44,39,54,2,23,222,33,37,28,248,22,75,23,197,2,87,94,23, -196,1,248,22,168,11,249,22,143,11,251,22,146,7,2,24,2,6,28,248,22, -75,23,203,2,87,94,23,202,1,23,201,1,250,22,1,22,168,13,23,204,1, -23,205,1,23,200,1,247,22,23,27,249,22,168,13,248,22,68,23,200,2,23, -197,2,28,248,22,163,13,23,194,2,27,250,22,1,22,168,13,23,197,1,199, -28,248,22,163,13,193,192,251,2,36,198,199,200,248,22,69,202,251,2,36,197, -198,199,248,22,69,201,87,94,87,94,87,94,28,28,248,22,150,13,193,10,28, -248,22,162,6,193,28,248,22,172,13,193,10,248,22,173,13,193,11,12,250,22, -135,9,2,6,2,21,195,28,248,22,172,13,193,12,248,22,168,11,249,22,174, -10,248,22,191,6,250,22,146,7,2,22,2,6,199,247,22,23,249,22,3,32, -0,89,162,8,44,36,48,9,222,33,35,195,27,247,22,128,14,251,2,36,196, +196,1,248,22,169,11,249,22,144,11,251,22,147,7,2,24,2,6,28,248,22, +75,23,203,2,87,94,23,202,1,23,201,1,250,22,1,22,169,13,23,204,1, +23,205,1,23,200,1,247,22,23,27,249,22,169,13,248,22,68,23,200,2,23, +197,2,28,248,22,164,13,23,194,2,27,250,22,1,22,169,13,23,197,1,199, +28,248,22,164,13,193,192,251,2,36,198,199,200,248,22,69,202,251,2,36,197, +198,199,248,22,69,201,87,94,87,94,87,94,28,28,248,22,151,13,193,10,28, +248,22,163,6,193,28,248,22,173,13,193,10,248,22,174,13,193,11,12,250,22, +136,9,2,6,2,21,195,28,248,22,173,13,193,12,248,22,169,11,249,22,175, +10,248,22,128,7,250,22,147,7,2,22,2,6,199,247,22,23,249,22,3,32, +0,89,162,8,44,36,48,9,222,33,35,195,27,247,22,129,14,251,2,36,196, 197,198,196,32,39,89,162,43,41,58,2,23,222,33,40,28,248,22,75,23,199, -2,87,94,23,198,1,248,23,196,1,251,22,146,7,2,24,23,199,1,28,248, -22,75,23,203,2,87,94,23,202,1,23,201,1,250,22,1,22,168,13,23,204, -1,23,205,1,23,198,1,27,249,22,168,13,248,22,68,23,202,2,23,199,2, -28,248,22,163,13,23,194,2,27,250,22,1,22,168,13,23,197,1,23,202,2, -28,248,22,163,13,23,194,2,192,87,94,23,193,1,27,248,22,69,23,202,1, -28,248,22,75,23,194,2,87,94,23,193,1,248,23,199,1,251,22,146,7,2, +2,87,94,23,198,1,248,23,196,1,251,22,147,7,2,24,23,199,1,28,248, +22,75,23,203,2,87,94,23,202,1,23,201,1,250,22,1,22,169,13,23,204, +1,23,205,1,23,198,1,27,249,22,169,13,248,22,68,23,202,2,23,199,2, +28,248,22,164,13,23,194,2,27,250,22,1,22,169,13,23,197,1,23,202,2, +28,248,22,164,13,23,194,2,192,87,94,23,193,1,27,248,22,69,23,202,1, +28,248,22,75,23,194,2,87,94,23,193,1,248,23,199,1,251,22,147,7,2, 24,23,202,1,28,248,22,75,23,206,2,87,94,23,205,1,23,204,1,250,22, -1,22,168,13,23,207,1,23,208,1,23,201,1,27,249,22,168,13,248,22,68, -23,197,2,23,202,2,28,248,22,163,13,23,194,2,27,250,22,1,22,168,13, -23,197,1,204,28,248,22,163,13,193,192,253,2,39,203,204,205,206,23,15,248, +1,22,169,13,23,207,1,23,208,1,23,201,1,27,249,22,169,13,248,22,68, +23,197,2,23,202,2,28,248,22,164,13,23,194,2,27,250,22,1,22,169,13, +23,197,1,204,28,248,22,164,13,193,192,253,2,39,203,204,205,206,23,15,248, 22,69,201,253,2,39,202,203,204,205,206,248,22,69,200,87,94,23,193,1,27, 248,22,69,23,201,1,28,248,22,75,23,194,2,87,94,23,193,1,248,23,198, -1,251,22,146,7,2,24,23,201,1,28,248,22,75,23,205,2,87,94,23,204, -1,23,203,1,250,22,1,22,168,13,23,206,1,23,207,1,23,200,1,27,249, -22,168,13,248,22,68,23,197,2,23,201,2,28,248,22,163,13,23,194,2,27, -250,22,1,22,168,13,23,197,1,203,28,248,22,163,13,193,192,253,2,39,202, +1,251,22,147,7,2,24,23,201,1,28,248,22,75,23,205,2,87,94,23,204, +1,23,203,1,250,22,1,22,169,13,23,206,1,23,207,1,23,200,1,27,249, +22,169,13,248,22,68,23,197,2,23,201,2,28,248,22,164,13,23,194,2,27, +250,22,1,22,169,13,23,197,1,203,28,248,22,164,13,193,192,253,2,39,202, 203,204,205,206,248,22,69,201,253,2,39,201,202,203,204,205,248,22,69,200,27, -247,22,128,14,253,2,39,198,199,200,201,202,198,87,95,28,28,248,22,151,13, -23,194,2,10,28,248,22,150,13,23,194,2,10,28,248,22,162,6,23,194,2, -28,248,22,172,13,23,194,2,10,248,22,173,13,23,194,2,11,12,252,22,135, -9,23,200,2,2,25,35,23,198,2,23,199,2,28,28,248,22,162,6,23,195, -2,10,248,22,150,7,23,195,2,87,94,23,194,1,12,252,22,135,9,23,200, +247,22,129,14,253,2,39,198,199,200,201,202,198,87,95,28,28,248,22,152,13, +23,194,2,10,28,248,22,151,13,23,194,2,10,28,248,22,163,6,23,194,2, +28,248,22,173,13,23,194,2,10,248,22,174,13,23,194,2,11,12,252,22,136, +9,23,200,2,2,25,35,23,198,2,23,199,2,28,28,248,22,163,6,23,195, +2,10,248,22,151,7,23,195,2,87,94,23,194,1,12,252,22,136,9,23,200, 2,2,26,36,23,198,2,23,199,1,91,159,38,11,90,161,38,35,11,248,22, -171,13,23,197,2,87,94,23,195,1,87,94,28,192,12,250,22,136,9,23,201, +172,13,23,197,2,87,94,23,195,1,87,94,28,192,12,250,22,137,9,23,201, 1,2,27,23,199,1,249,22,7,194,195,91,159,37,11,90,161,37,35,11,87, -95,28,28,248,22,151,13,23,196,2,10,28,248,22,150,13,23,196,2,10,28, -248,22,162,6,23,196,2,28,248,22,172,13,23,196,2,10,248,22,173,13,23, -196,2,11,12,252,22,135,9,2,9,2,25,35,23,200,2,23,201,2,28,28, -248,22,162,6,23,197,2,10,248,22,150,7,23,197,2,12,252,22,135,9,2, +95,28,28,248,22,152,13,23,196,2,10,28,248,22,151,13,23,196,2,10,28, +248,22,163,6,23,196,2,28,248,22,173,13,23,196,2,10,248,22,174,13,23, +196,2,11,12,252,22,136,9,2,9,2,25,35,23,200,2,23,201,2,28,28, +248,22,163,6,23,197,2,10,248,22,151,7,23,197,2,12,252,22,136,9,2, 9,2,26,36,23,200,2,23,201,2,91,159,38,11,90,161,38,35,11,248,22, -171,13,23,199,2,87,94,23,195,1,87,94,28,192,12,250,22,136,9,2,9, -2,27,23,201,2,249,22,7,194,195,27,249,22,160,13,250,22,144,14,0,20, +172,13,23,199,2,87,94,23,195,1,87,94,28,192,12,250,22,137,9,2,9, +2,27,23,201,2,249,22,7,194,195,27,249,22,161,13,250,22,145,14,0,20, 35,114,120,35,34,40,63,58,91,46,93,91,94,46,93,42,124,41,36,34,248, -22,156,13,23,201,1,28,248,22,162,6,23,203,2,249,22,174,7,23,204,1, -8,63,23,202,1,28,248,22,151,13,23,199,2,248,22,152,13,23,199,1,87, -94,23,198,1,247,22,153,13,28,248,22,150,13,194,249,22,168,13,195,194,192, -91,159,37,11,90,161,37,35,11,87,95,28,28,248,22,151,13,23,196,2,10, -28,248,22,150,13,23,196,2,10,28,248,22,162,6,23,196,2,28,248,22,172, -13,23,196,2,10,248,22,173,13,23,196,2,11,12,252,22,135,9,2,10,2, -25,35,23,200,2,23,201,2,28,28,248,22,162,6,23,197,2,10,248,22,150, -7,23,197,2,12,252,22,135,9,2,10,2,26,36,23,200,2,23,201,2,91, -159,38,11,90,161,38,35,11,248,22,171,13,23,199,2,87,94,23,195,1,87, -94,28,192,12,250,22,136,9,2,10,2,27,23,201,2,249,22,7,194,195,27, -249,22,160,13,249,22,160,7,250,22,145,14,0,9,35,114,120,35,34,91,46, -93,34,248,22,156,13,23,203,1,6,1,1,95,28,248,22,162,6,23,202,2, -249,22,174,7,23,203,1,8,63,23,201,1,28,248,22,151,13,23,199,2,248, -22,152,13,23,199,1,87,94,23,198,1,247,22,153,13,28,248,22,150,13,194, -249,22,168,13,195,194,192,249,247,22,129,5,194,11,249,80,159,37,46,36,9, -9,249,80,159,37,46,36,195,9,27,247,22,130,14,249,80,158,38,47,28,23, -195,2,27,248,22,179,7,6,11,11,80,76,84,67,79,76,76,69,67,84,83, -28,192,192,6,0,0,6,0,0,27,28,23,196,1,250,22,168,13,248,22,190, -13,69,97,100,100,111,110,45,100,105,114,247,22,177,7,6,8,8,99,111,108, +22,157,13,23,201,1,28,248,22,163,6,23,203,2,249,22,175,7,23,204,1, +8,63,23,202,1,28,248,22,152,13,23,199,2,248,22,153,13,23,199,1,87, +94,23,198,1,247,22,154,13,28,248,22,151,13,194,249,22,169,13,195,194,192, +91,159,37,11,90,161,37,35,11,87,95,28,28,248,22,152,13,23,196,2,10, +28,248,22,151,13,23,196,2,10,28,248,22,163,6,23,196,2,28,248,22,173, +13,23,196,2,10,248,22,174,13,23,196,2,11,12,252,22,136,9,2,10,2, +25,35,23,200,2,23,201,2,28,28,248,22,163,6,23,197,2,10,248,22,151, +7,23,197,2,12,252,22,136,9,2,10,2,26,36,23,200,2,23,201,2,91, +159,38,11,90,161,38,35,11,248,22,172,13,23,199,2,87,94,23,195,1,87, +94,28,192,12,250,22,137,9,2,10,2,27,23,201,2,249,22,7,194,195,27, +249,22,161,13,249,22,161,7,250,22,146,14,0,9,35,114,120,35,34,91,46, +93,34,248,22,157,13,23,203,1,6,1,1,95,28,248,22,163,6,23,202,2, +249,22,175,7,23,203,1,8,63,23,201,1,28,248,22,152,13,23,199,2,248, +22,153,13,23,199,1,87,94,23,198,1,247,22,154,13,28,248,22,151,13,194, +249,22,169,13,195,194,192,249,247,22,130,5,194,11,249,80,159,37,46,36,9, +9,249,80,159,37,46,36,195,9,27,247,22,131,14,249,80,158,38,47,28,23, +195,2,27,248,22,180,7,6,11,11,80,76,84,67,79,76,76,69,67,84,83, +28,192,192,6,0,0,6,0,0,27,28,23,196,1,250,22,169,13,248,22,191, +13,69,97,100,100,111,110,45,100,105,114,247,22,178,7,6,8,8,99,111,108, 108,101,99,116,115,11,27,248,80,159,41,52,36,250,22,81,23,203,1,248,22, -77,248,22,190,13,72,99,111,108,108,101,99,116,115,45,100,105,114,23,204,1, +77,248,22,191,13,72,99,111,108,108,101,99,116,115,45,100,105,114,23,204,1, 28,193,249,22,67,195,194,192,32,49,89,162,8,44,38,51,2,18,222,33,52, 32,50,89,162,8,44,38,46,69,99,111,110,115,45,112,97,116,104,222,33,51, -28,249,22,156,7,23,196,2,5,0,249,22,81,194,196,87,94,23,193,1,249, -22,67,248,22,159,13,23,197,1,196,27,249,22,137,14,23,197,2,23,198,2, +28,249,22,157,7,23,196,2,5,0,249,22,81,194,196,87,94,23,193,1,249, +22,67,248,22,160,13,23,197,1,196,27,249,22,138,14,23,197,2,23,198,2, 28,23,193,2,87,94,23,196,1,250,2,50,23,197,2,248,22,92,23,197,2, 250,2,49,23,200,1,23,201,1,248,22,101,23,200,1,250,2,50,196,198,9, -87,95,28,28,248,22,150,7,194,10,248,22,162,6,194,12,250,22,135,9,2, +87,95,28,28,248,22,151,7,194,10,248,22,163,6,194,12,250,22,136,9,2, 13,6,21,21,98,121,116,101,32,115,116,114,105,110,103,32,111,114,32,115,116, -114,105,110,103,196,28,28,248,22,76,195,249,22,4,22,150,13,196,11,12,250, -22,135,9,2,13,6,13,13,108,105,115,116,32,111,102,32,112,97,116,104,115, -197,250,2,49,197,195,28,248,22,162,6,197,248,22,173,7,197,196,32,54,89, +114,105,110,103,196,28,28,248,22,76,195,249,22,4,22,151,13,196,11,12,250, +22,136,9,2,13,6,13,13,108,105,115,116,32,111,102,32,112,97,116,104,115, +197,250,2,49,197,195,28,248,22,163,6,197,248,22,174,7,197,196,32,54,89, 162,8,44,38,52,70,102,111,117,110,100,45,101,120,101,99,222,33,57,32,55, -89,162,8,44,39,57,64,110,101,120,116,222,33,56,27,248,22,176,13,23,196, -2,28,249,22,169,8,23,195,2,23,197,1,11,28,248,22,172,13,23,194,2, -27,249,22,168,13,23,197,1,23,196,1,28,23,197,2,91,159,38,11,90,161, -38,35,11,248,22,171,13,23,197,2,87,95,23,195,1,23,194,1,27,28,23, -202,2,27,248,22,176,13,23,199,2,28,249,22,169,8,23,195,2,23,200,2, -11,28,248,22,172,13,23,194,2,250,2,54,23,205,2,23,206,2,249,22,168, +89,162,8,44,39,57,64,110,101,120,116,222,33,56,27,248,22,177,13,23,196, +2,28,249,22,170,8,23,195,2,23,197,1,11,28,248,22,173,13,23,194,2, +27,249,22,169,13,23,197,1,23,196,1,28,23,197,2,91,159,38,11,90,161, +38,35,11,248,22,172,13,23,197,2,87,95,23,195,1,23,194,1,27,28,23, +202,2,27,248,22,177,13,23,199,2,28,249,22,170,8,23,195,2,23,200,2, +11,28,248,22,173,13,23,194,2,250,2,54,23,205,2,23,206,2,249,22,169, 13,23,200,2,23,198,1,250,2,54,23,205,2,23,206,2,23,196,1,11,28, -23,193,2,192,87,94,23,193,1,27,28,248,22,150,13,23,196,2,27,249,22, -168,13,23,198,2,23,205,2,28,28,248,22,163,13,193,10,248,22,162,13,193, +23,193,2,192,87,94,23,193,1,27,28,248,22,151,13,23,196,2,27,249,22, +169,13,23,198,2,23,205,2,28,28,248,22,164,13,193,10,248,22,163,13,193, 192,11,11,28,23,193,2,192,87,94,23,193,1,28,23,203,2,11,27,248,22, -176,13,23,200,2,28,249,22,169,8,23,195,2,23,201,1,11,28,248,22,172, -13,23,194,2,250,2,54,23,206,1,23,207,1,249,22,168,13,23,201,1,23, +177,13,23,200,2,28,249,22,170,8,23,195,2,23,201,1,11,28,248,22,173, +13,23,194,2,250,2,54,23,206,1,23,207,1,249,22,169,13,23,201,1,23, 198,1,250,2,54,205,206,195,192,87,94,23,194,1,28,23,196,2,91,159,38, -11,90,161,38,35,11,248,22,171,13,23,197,2,87,95,23,195,1,23,194,1, -27,28,23,201,2,27,248,22,176,13,23,199,2,28,249,22,169,8,23,195,2, -23,200,2,11,28,248,22,172,13,23,194,2,250,2,54,23,204,2,23,205,2, -249,22,168,13,23,200,2,23,198,1,250,2,54,23,204,2,23,205,2,23,196, -1,11,28,23,193,2,192,87,94,23,193,1,27,28,248,22,150,13,23,196,2, -27,249,22,168,13,23,198,2,23,204,2,28,28,248,22,163,13,193,10,248,22, -162,13,193,192,11,11,28,23,193,2,192,87,94,23,193,1,28,23,202,2,11, -27,248,22,176,13,23,200,2,28,249,22,169,8,23,195,2,23,201,1,11,28, -248,22,172,13,23,194,2,250,2,54,23,205,1,23,206,1,249,22,168,13,23, +11,90,161,38,35,11,248,22,172,13,23,197,2,87,95,23,195,1,23,194,1, +27,28,23,201,2,27,248,22,177,13,23,199,2,28,249,22,170,8,23,195,2, +23,200,2,11,28,248,22,173,13,23,194,2,250,2,54,23,204,2,23,205,2, +249,22,169,13,23,200,2,23,198,1,250,2,54,23,204,2,23,205,2,23,196, +1,11,28,23,193,2,192,87,94,23,193,1,27,28,248,22,151,13,23,196,2, +27,249,22,169,13,23,198,2,23,204,2,28,28,248,22,164,13,193,10,248,22, +163,13,193,192,11,11,28,23,193,2,192,87,94,23,193,1,28,23,202,2,11, +27,248,22,177,13,23,200,2,28,249,22,170,8,23,195,2,23,201,1,11,28, +248,22,173,13,23,194,2,250,2,54,23,205,1,23,206,1,249,22,169,13,23, 201,1,23,198,1,250,2,54,204,205,195,192,28,23,193,2,91,159,38,11,90, -161,38,35,11,248,22,171,13,23,199,2,87,95,23,195,1,23,194,1,27,28, +161,38,35,11,248,22,172,13,23,199,2,87,95,23,195,1,23,194,1,27,28, 23,198,2,251,2,55,23,198,2,23,203,2,23,201,2,23,202,2,11,28,23, -193,2,192,87,94,23,193,1,27,28,248,22,150,13,195,27,249,22,168,13,197, -200,28,28,248,22,163,13,193,10,248,22,162,13,193,192,11,11,28,192,192,28, +193,2,192,87,94,23,193,1,27,28,248,22,151,13,195,27,249,22,169,13,197, +200,28,28,248,22,164,13,193,10,248,22,163,13,193,192,11,11,28,192,192,28, 198,11,251,2,55,198,203,201,202,194,32,58,89,162,8,44,39,54,2,18,222, -33,59,28,248,22,75,23,197,2,11,27,248,22,175,13,248,22,68,23,199,2, -27,249,22,168,13,23,196,1,23,197,2,28,248,22,162,13,23,194,2,250,2, +33,59,28,248,22,75,23,197,2,11,27,248,22,176,13,248,22,68,23,199,2, +27,249,22,169,13,23,196,1,23,197,2,28,248,22,163,13,23,194,2,250,2, 54,198,199,195,87,94,23,193,1,27,248,22,69,23,200,1,28,248,22,75,23, -194,2,11,27,248,22,175,13,248,22,68,195,27,249,22,168,13,23,196,1,199, -28,248,22,162,13,193,250,2,54,201,202,195,251,2,58,201,202,203,248,22,69, -199,87,95,28,28,248,22,150,13,23,195,2,10,28,248,22,162,6,23,195,2, -28,248,22,172,13,23,195,2,10,248,22,173,13,23,195,2,11,12,250,22,135, +194,2,11,27,248,22,176,13,248,22,68,195,27,249,22,169,13,23,196,1,199, +28,248,22,163,13,193,250,2,54,201,202,195,251,2,58,201,202,203,248,22,69, +199,87,95,28,28,248,22,151,13,23,195,2,10,28,248,22,163,6,23,195,2, +28,248,22,173,13,23,195,2,10,248,22,174,13,23,195,2,11,12,250,22,136, 9,2,14,6,25,25,112,97,116,104,32,111,114,32,115,116,114,105,110,103,32, 40,115,97,110,115,32,110,117,108,41,23,197,2,28,28,23,195,2,28,28,248, -22,150,13,23,196,2,10,28,248,22,162,6,23,196,2,28,248,22,172,13,23, -196,2,10,248,22,173,13,23,196,2,11,248,22,172,13,23,196,2,11,10,12, -250,22,135,9,2,14,6,29,29,35,102,32,111,114,32,114,101,108,97,116,105, +22,151,13,23,196,2,10,28,248,22,163,6,23,196,2,28,248,22,173,13,23, +196,2,10,248,22,174,13,23,196,2,11,248,22,173,13,23,196,2,11,10,12, +250,22,136,9,2,14,6,29,29,35,102,32,111,114,32,114,101,108,97,116,105, 118,101,32,112,97,116,104,32,111,114,32,115,116,114,105,110,103,23,198,2,28, -28,248,22,172,13,23,195,2,91,159,38,11,90,161,38,35,11,248,22,171,13, -23,198,2,249,22,167,8,194,68,114,101,108,97,116,105,118,101,11,27,248,22, -179,7,6,4,4,80,65,84,72,27,28,23,194,2,27,249,80,159,40,47,37, -23,197,1,9,28,249,22,167,8,247,22,181,7,2,20,249,22,67,248,22,159, +28,248,22,173,13,23,195,2,91,159,38,11,90,161,38,35,11,248,22,172,13, +23,198,2,249,22,168,8,194,68,114,101,108,97,116,105,118,101,11,27,248,22, +180,7,6,4,4,80,65,84,72,27,28,23,194,2,27,249,80,159,40,47,37, +23,197,1,9,28,249,22,168,8,247,22,182,7,2,20,249,22,67,248,22,160, 13,5,1,46,194,192,87,94,23,194,1,9,28,248,22,75,23,194,2,11,27, -248,22,175,13,248,22,68,23,196,2,27,249,22,168,13,23,196,1,23,200,2, -28,248,22,162,13,23,194,2,250,2,54,201,202,195,87,94,23,193,1,27,248, -22,69,23,197,1,28,248,22,75,23,194,2,11,27,248,22,175,13,248,22,68, -195,27,249,22,168,13,23,196,1,202,28,248,22,162,13,193,250,2,54,204,205, -195,251,2,58,204,205,206,248,22,69,199,27,248,22,175,13,23,196,1,28,248, -22,162,13,193,250,2,54,198,199,195,11,250,80,159,38,48,36,196,197,11,250, -80,159,38,48,36,196,11,11,87,94,249,22,153,6,247,22,189,4,195,248,22, -179,5,249,22,174,3,35,249,22,158,3,197,198,27,28,23,197,2,87,95,23, -196,1,23,195,1,23,197,1,87,94,23,197,1,27,248,22,190,13,2,19,27, +248,22,176,13,248,22,68,23,196,2,27,249,22,169,13,23,196,1,23,200,2, +28,248,22,163,13,23,194,2,250,2,54,201,202,195,87,94,23,193,1,27,248, +22,69,23,197,1,28,248,22,75,23,194,2,11,27,248,22,176,13,248,22,68, +195,27,249,22,169,13,23,196,1,202,28,248,22,163,13,193,250,2,54,204,205, +195,251,2,58,204,205,206,248,22,69,199,27,248,22,176,13,23,196,1,28,248, +22,163,13,193,250,2,54,198,199,195,11,250,80,159,38,48,36,196,197,11,250, +80,159,38,48,36,196,11,11,87,94,249,22,154,6,247,22,190,4,195,248,22, +180,5,249,22,174,3,35,249,22,158,3,197,198,27,28,23,197,2,87,95,23, +196,1,23,195,1,23,197,1,87,94,23,197,1,27,248,22,191,13,2,19,27, 249,80,159,40,48,36,23,196,1,11,27,27,248,22,177,3,23,200,1,28,192, -192,35,27,27,248,22,177,3,23,202,1,28,192,192,35,249,22,156,5,23,197, +192,35,27,27,248,22,177,3,23,202,1,28,192,192,35,249,22,157,5,23,197, 1,83,158,39,20,97,95,89,162,8,44,35,47,9,224,3,2,33,63,23,195, -1,23,196,1,27,248,22,141,5,23,195,1,248,80,159,38,53,36,193,159,35, +1,23,196,1,27,248,22,142,5,23,195,1,248,80,159,38,53,36,193,159,35, 20,102,159,35,16,1,11,16,0,83,158,41,20,100,144,67,35,37,117,116,105, 108,115,29,11,11,11,11,11,10,42,80,158,35,35,20,102,159,37,16,17,2, 1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11, @@ -337,7 +337,7 @@ 48,2,18,223,0,33,28,80,159,35,53,36,83,158,35,16,2,89,162,8,44, 36,55,2,18,223,0,33,29,80,159,35,52,36,83,158,35,16,2,32,0,89, 162,43,36,44,2,1,222,33,30,80,159,35,35,36,83,158,35,16,2,249,22, -164,6,7,92,7,92,80,159,35,36,36,83,158,35,16,2,89,162,43,36,53, +165,6,7,92,7,92,80,159,35,36,36,83,158,35,16,2,89,162,43,36,53, 2,3,223,0,33,31,80,159,35,37,36,83,158,35,16,2,32,0,89,162,8, 44,37,49,2,4,222,33,32,80,159,35,38,36,83,158,35,16,2,32,0,89, 162,8,44,38,50,2,5,222,33,34,80,159,35,39,36,83,158,35,16,2,32, @@ -349,9 +349,9 @@ 83,158,35,16,2,32,0,89,162,43,36,43,2,11,222,33,45,80,159,35,45, 36,83,158,35,16,2,83,158,38,20,96,96,2,12,89,162,43,35,43,9,223, 0,33,46,89,162,43,36,44,9,223,0,33,47,89,162,43,37,54,9,223,0, -33,48,80,159,35,46,36,83,158,35,16,2,27,248,22,133,14,248,22,173,7, -27,28,249,22,167,8,247,22,181,7,2,20,6,1,1,59,6,1,1,58,250, -22,146,7,6,14,14,40,91,94,126,97,93,42,41,126,97,40,46,42,41,23, +33,48,80,159,35,46,36,83,158,35,16,2,27,248,22,134,14,248,22,174,7, +27,28,249,22,168,8,247,22,182,7,2,20,6,1,1,59,6,1,1,58,250, +22,147,7,6,14,14,40,91,94,126,97,93,42,41,126,97,40,46,42,41,23, 196,2,23,196,1,89,162,8,44,37,47,2,13,223,0,33,53,80,159,35,47, 36,83,158,35,16,2,83,158,38,20,96,96,2,14,89,162,8,44,38,56,9, 223,0,33,60,89,162,43,37,46,9,223,0,33,61,89,162,43,36,45,9,223, @@ -362,12 +362,12 @@ EVAL_ONE_SIZED_STR((char *)expr, 5439); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,52,46,50,46,51,46,49,48,8,0,0,0,1,0,0,6,0,19, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,52,46,50,46,51,46,49,49,8,0,0,0,1,0,0,6,0,19, 0,34,0,48,0,62,0,76,0,118,0,0,0,53,1,0,0,65,113,117,111, 116,101,29,94,2,1,67,35,37,117,116,105,108,115,11,29,94,2,1,69,35, 37,110,101,116,119,111,114,107,11,29,94,2,1,68,35,37,112,97,114,97,109, 122,11,29,94,2,1,68,35,37,101,120,112,111,98,115,11,29,94,2,1,68, -35,37,107,101,114,110,101,108,11,97,35,11,8,240,162,79,0,0,98,159,2, +35,37,107,101,114,110,101,108,11,97,35,11,8,240,106,79,0,0,98,159,2, 2,35,35,159,2,3,35,35,159,2,4,35,35,159,2,5,35,35,159,2,6, 35,35,159,2,6,35,35,16,0,159,35,20,102,159,35,16,1,11,16,0,83, 158,41,20,100,144,69,35,37,98,117,105,108,116,105,110,29,11,11,11,11,11, @@ -382,7 +382,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 347); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,52,46,50,46,51,46,49,48,67,0,0,0,1,0,0,11,0,38, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,52,46,50,46,51,46,49,49,67,0,0,0,1,0,0,11,0,38, 0,44,0,57,0,66,0,73,0,95,0,117,0,143,0,155,0,173,0,193,0, 205,0,221,0,244,0,0,1,31,1,38,1,43,1,48,1,53,1,58,1,62, 1,70,1,79,1,124,1,147,1,183,1,214,1,248,1,2,2,36,2,46,2, @@ -406,25 +406,25 @@ 101,114,29,94,2,3,2,5,11,64,98,111,111,116,64,115,101,97,108,64,115, 97,109,101,64,108,111,111,112,63,108,105,98,67,105,103,110,111,114,101,100,249, 22,14,195,80,159,37,45,37,20,14,159,80,158,35,39,250,80,158,38,40,249, -22,27,11,80,158,40,39,22,130,5,28,248,22,150,13,23,198,2,23,197,1, -87,94,23,197,1,247,22,191,13,247,194,250,22,168,13,23,197,1,23,199,1, -249,80,158,42,38,23,198,1,5,3,46,122,111,252,22,168,13,23,199,1,23, -201,1,6,6,6,110,97,116,105,118,101,247,22,182,7,249,80,158,44,38,23, -200,1,80,159,44,35,37,87,94,23,194,1,27,250,22,185,13,196,11,32,0, +22,27,11,80,158,40,39,22,131,5,28,248,22,151,13,23,198,2,23,197,1, +87,94,23,197,1,247,22,128,14,247,194,250,22,169,13,23,197,1,23,199,1, +249,80,158,42,38,23,198,1,5,3,46,122,111,252,22,169,13,23,199,1,23, +201,1,6,6,6,110,97,116,105,118,101,247,22,183,7,249,80,158,44,38,23, +200,1,80,159,44,35,37,87,94,23,194,1,27,250,22,186,13,196,11,32,0, 89,162,8,44,35,40,9,222,11,28,192,249,22,67,195,194,11,27,248,23,195, -1,23,196,1,27,250,22,185,13,196,11,32,0,89,162,8,44,35,40,9,222, -11,28,192,249,22,67,195,194,11,249,247,22,132,14,248,22,68,195,195,27,248, -23,195,1,23,196,1,27,250,22,185,13,196,11,32,0,89,162,8,44,35,40, -9,222,11,28,192,249,22,67,195,194,11,249,247,22,128,5,248,22,68,195,195, -249,247,22,128,5,194,195,87,94,28,248,80,158,36,37,23,195,2,12,250,22, -135,9,77,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,6, +1,23,196,1,27,250,22,186,13,196,11,32,0,89,162,8,44,35,40,9,222, +11,28,192,249,22,67,195,194,11,249,247,22,133,14,248,22,68,195,195,27,248, +23,195,1,23,196,1,27,250,22,186,13,196,11,32,0,89,162,8,44,35,40, +9,222,11,28,192,249,22,67,195,194,11,249,247,22,129,5,248,22,68,195,195, +249,247,22,129,5,194,195,87,94,28,248,80,158,36,37,23,195,2,12,250,22, +136,9,77,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,6, 25,25,112,97,116,104,32,111,114,32,118,97,108,105,100,45,112,97,116,104,32, 115,116,114,105,110,103,23,197,2,91,159,41,11,90,161,36,35,11,28,248,22, -174,13,23,201,2,23,200,1,27,247,22,130,5,28,23,193,2,249,22,175,13, -23,203,1,23,195,1,200,90,161,38,36,11,248,22,171,13,23,194,2,87,94, -23,196,1,90,161,36,39,11,28,249,22,167,8,23,196,2,68,114,101,108,97, +175,13,23,201,2,23,200,1,27,247,22,131,5,28,23,193,2,249,22,176,13, +23,203,1,23,195,1,200,90,161,38,36,11,248,22,172,13,23,194,2,87,94, +23,196,1,90,161,36,39,11,28,249,22,168,8,23,196,2,68,114,101,108,97, 116,105,118,101,87,94,23,194,1,2,21,23,194,1,90,161,36,40,11,247,22, -129,14,27,89,162,43,36,49,62,122,111,225,7,5,3,33,27,27,83,158,39, +130,14,27,89,162,43,36,49,62,122,111,225,7,5,3,33,27,27,83,158,39, 20,97,94,89,162,43,36,51,9,225,8,6,4,33,28,23,197,1,27,249,22, 5,89,162,8,44,36,46,9,223,5,33,29,23,203,2,27,28,23,195,2,27, 249,22,5,83,158,39,20,97,94,89,162,8,44,36,47,9,223,5,33,30,23, @@ -437,12 +437,12 @@ 248,22,69,199,193,11,11,11,11,28,192,249,80,159,48,58,36,203,89,162,43, 35,45,9,224,15,2,33,33,249,80,159,48,58,36,203,89,162,43,35,44,9, 224,15,7,33,34,0,17,35,114,120,34,94,40,46,42,63,41,47,40,46,42, -41,36,34,32,37,89,162,8,44,36,58,2,22,222,33,38,27,249,22,137,14, +41,36,34,32,37,89,162,8,44,36,58,2,22,222,33,38,27,249,22,138,14, 2,36,23,196,2,28,23,193,2,87,94,23,194,1,249,22,67,248,22,92,23, -196,2,27,248,22,101,23,197,1,27,249,22,137,14,2,36,23,196,2,28,23, +196,2,27,248,22,101,23,197,1,27,249,22,138,14,2,36,23,196,2,28,23, 193,2,87,94,23,194,1,249,22,67,248,22,92,23,196,2,27,248,22,101,23, -197,1,27,249,22,137,14,2,36,23,196,2,28,23,193,2,87,94,23,194,1, -249,22,67,248,22,92,23,196,2,27,248,22,101,23,197,1,27,249,22,137,14, +197,1,27,249,22,138,14,2,36,23,196,2,28,23,193,2,87,94,23,194,1, +249,22,67,248,22,92,23,196,2,27,248,22,101,23,197,1,27,249,22,138,14, 2,36,23,196,2,28,23,193,2,87,94,23,194,1,249,22,67,248,22,92,23, 196,2,248,2,37,248,22,101,23,197,1,248,22,77,194,248,22,77,194,248,22, 77,194,248,22,77,194,32,39,89,162,43,36,54,2,22,222,33,40,28,248,22, @@ -452,64 +452,64 @@ 22,75,248,22,69,23,195,2,249,22,7,9,248,22,68,195,91,159,37,11,90, 161,37,35,11,248,2,39,248,22,69,196,249,22,7,249,22,67,248,22,68,199, 196,195,249,22,7,249,22,67,248,22,68,199,196,195,249,22,7,249,22,67,248, -22,68,199,196,195,27,27,249,22,137,14,2,36,23,197,2,28,23,193,2,87, +22,68,199,196,195,27,27,249,22,138,14,2,36,23,197,2,28,23,193,2,87, 94,23,195,1,249,22,67,248,22,92,23,196,2,27,248,22,101,23,197,1,27, -249,22,137,14,2,36,23,196,2,28,23,193,2,87,94,23,194,1,249,22,67, +249,22,138,14,2,36,23,196,2,28,23,193,2,87,94,23,194,1,249,22,67, 248,22,92,23,196,2,248,2,37,248,22,101,23,197,1,248,22,77,194,248,22, 77,195,28,23,195,1,192,28,248,22,75,248,22,69,23,195,2,249,22,7,9, 248,22,68,195,91,159,37,11,90,161,37,35,11,248,2,39,248,22,69,196,249, 22,7,249,22,67,248,22,68,199,196,195,87,95,28,248,22,174,4,195,12,250, -22,135,9,2,17,6,20,20,114,101,115,111,108,118,101,100,45,109,111,100,117, +22,136,9,2,17,6,20,20,114,101,115,111,108,118,101,100,45,109,111,100,117, 108,101,45,112,97,116,104,197,28,24,193,2,248,24,194,1,195,87,94,23,193, -1,12,27,27,250,22,141,2,80,159,41,42,37,248,22,157,14,247,22,132,12, +1,12,27,27,250,22,141,2,80,159,41,42,37,248,22,158,14,247,22,133,12, 11,28,23,193,2,192,87,94,23,193,1,27,247,22,125,87,94,250,22,139,2, -80,159,42,42,37,248,22,157,14,247,22,132,12,195,192,250,22,139,2,195,198, -66,97,116,116,97,99,104,251,211,197,198,199,10,28,192,250,22,134,9,11,196, -195,248,22,132,9,194,32,45,89,162,8,44,36,50,2,22,222,33,46,27,249, -22,137,14,2,36,23,196,2,28,23,193,2,87,94,23,194,1,249,22,67,248, -22,92,23,196,2,27,248,22,101,23,197,1,27,249,22,137,14,2,36,23,196, +80,159,42,42,37,248,22,158,14,247,22,133,12,195,192,250,22,139,2,195,198, +66,97,116,116,97,99,104,251,211,197,198,199,10,28,192,250,22,135,9,11,196, +195,248,22,133,9,194,32,45,89,162,8,44,36,50,2,22,222,33,46,27,249, +22,138,14,2,36,23,196,2,28,23,193,2,87,94,23,194,1,249,22,67,248, +22,92,23,196,2,27,248,22,101,23,197,1,27,249,22,138,14,2,36,23,196, 2,28,23,193,2,87,94,23,194,1,249,22,67,248,22,92,23,196,2,248,2, 45,248,22,101,23,197,1,248,22,77,194,248,22,77,194,32,47,89,162,43,36, 48,2,22,222,33,48,28,248,22,75,248,22,69,23,195,2,249,22,7,9,248, 22,68,195,91,159,37,11,90,161,37,35,11,248,2,47,248,22,69,196,249,22, 7,249,22,67,248,22,68,199,196,195,32,49,89,162,8,44,36,50,2,22,222, -33,50,27,249,22,137,14,2,36,23,196,2,28,23,193,2,87,94,23,194,1, -249,22,67,248,22,92,23,196,2,27,248,22,101,23,197,1,27,249,22,137,14, +33,50,27,249,22,138,14,2,36,23,196,2,28,23,193,2,87,94,23,194,1, +249,22,67,248,22,92,23,196,2,27,248,22,101,23,197,1,27,249,22,138,14, 2,36,23,196,2,28,23,193,2,87,94,23,194,1,249,22,67,248,22,92,23, 196,2,248,2,49,248,22,101,23,197,1,248,22,77,194,248,22,77,194,32,51, 89,162,43,36,48,2,22,222,33,52,28,248,22,75,248,22,69,23,195,2,249, 22,7,9,248,22,68,195,91,159,37,11,90,161,37,35,11,248,2,51,248,22, -69,196,249,22,7,249,22,67,248,22,68,199,196,195,28,249,22,168,6,194,6, -1,1,46,2,21,28,249,22,168,6,194,6,2,2,46,46,62,117,112,192,32, -54,89,162,8,44,36,50,2,22,222,33,55,27,249,22,137,14,2,36,23,196, +69,196,249,22,7,249,22,67,248,22,68,199,196,195,28,249,22,169,6,194,6, +1,1,46,2,21,28,249,22,169,6,194,6,2,2,46,46,62,117,112,192,32, +54,89,162,8,44,36,50,2,22,222,33,55,27,249,22,138,14,2,36,23,196, 2,28,23,193,2,87,94,23,194,1,249,22,67,248,22,92,23,196,2,27,248, -22,101,23,197,1,27,249,22,137,14,2,36,23,196,2,28,23,193,2,87,94, +22,101,23,197,1,27,249,22,138,14,2,36,23,196,2,28,23,193,2,87,94, 23,194,1,249,22,67,248,22,92,23,196,2,248,2,54,248,22,101,23,197,1, 248,22,77,194,248,22,77,194,32,56,89,162,43,36,48,2,22,222,33,57,28, 248,22,75,248,22,69,23,195,2,249,22,7,9,248,22,68,195,91,159,37,11, 90,161,37,35,11,248,2,56,248,22,69,196,249,22,7,249,22,67,248,22,68, -199,196,195,32,58,89,162,8,44,36,50,2,22,222,33,59,27,249,22,137,14, +199,196,195,32,58,89,162,8,44,36,50,2,22,222,33,59,27,249,22,138,14, 2,36,23,196,2,28,23,193,2,87,94,23,194,1,249,22,67,248,22,92,23, -196,2,27,248,22,101,23,197,1,27,249,22,137,14,2,36,23,196,2,28,23, +196,2,27,248,22,101,23,197,1,27,249,22,138,14,2,36,23,196,2,28,23, 193,2,87,94,23,194,1,249,22,67,248,22,92,23,196,2,248,2,58,248,22, -101,23,197,1,248,22,77,194,248,22,77,194,27,27,249,22,137,14,2,36,23, +101,23,197,1,248,22,77,194,248,22,77,194,27,27,249,22,138,14,2,36,23, 197,2,28,23,193,2,87,94,23,195,1,249,22,67,248,22,92,23,196,2,27, -248,22,101,23,197,1,27,249,22,137,14,2,36,23,196,2,28,23,193,2,87, +248,22,101,23,197,1,27,249,22,138,14,2,36,23,196,2,28,23,193,2,87, 94,23,194,1,249,22,67,248,22,92,23,196,2,248,2,58,248,22,101,23,197, -1,248,22,77,194,248,22,77,195,192,28,249,22,169,8,248,22,69,23,200,2, -23,197,1,28,249,22,167,8,248,22,68,23,200,2,23,196,1,251,22,132,9, +1,248,22,77,194,248,22,77,195,192,28,249,22,170,8,248,22,69,23,200,2, +23,197,1,28,249,22,168,8,248,22,68,23,200,2,23,196,1,251,22,133,9, 2,17,6,26,26,99,121,99,108,101,32,105,110,32,108,111,97,100,105,110,103, 32,97,116,32,126,101,58,32,126,101,23,200,1,249,22,2,22,69,248,22,82, 249,22,67,23,206,1,23,202,1,12,12,247,192,20,14,159,80,159,39,44,37, -249,22,67,248,22,157,14,247,22,132,12,23,197,1,20,14,159,80,158,39,39, +249,22,67,248,22,158,14,247,22,133,12,23,197,1,20,14,159,80,158,39,39, 250,80,158,42,40,249,22,27,11,80,158,44,39,22,156,4,23,196,1,249,247, -22,129,5,23,198,1,248,22,55,248,22,154,13,23,198,1,87,94,28,28,248, -22,150,13,23,196,2,10,248,22,180,4,23,196,2,12,28,23,197,2,250,22, -134,9,11,6,15,15,98,97,100,32,109,111,100,117,108,101,32,112,97,116,104, -23,200,2,250,22,135,9,2,17,6,19,19,109,111,100,117,108,101,45,112,97, +22,130,5,23,198,1,248,22,55,248,22,155,13,23,198,1,87,94,28,28,248, +22,151,13,23,196,2,10,248,22,181,4,23,196,2,12,28,23,197,2,250,22, +135,9,11,6,15,15,98,97,100,32,109,111,100,117,108,101,32,112,97,116,104, +23,200,2,250,22,136,9,2,17,6,19,19,109,111,100,117,108,101,45,112,97, 116,104,32,111,114,32,112,97,116,104,23,198,2,28,28,248,22,65,23,196,2, -249,22,167,8,248,22,68,23,198,2,2,3,11,248,22,175,4,248,22,92,196, -28,28,248,22,65,23,196,2,249,22,167,8,248,22,68,23,198,2,66,112,108, +249,22,168,8,248,22,68,23,198,2,2,3,11,248,22,175,4,248,22,92,196, +28,28,248,22,65,23,196,2,249,22,168,8,248,22,68,23,198,2,66,112,108, 97,110,101,116,11,87,94,28,207,12,20,14,159,80,158,36,51,80,158,36,49, 90,161,36,35,10,249,22,157,4,21,94,2,23,6,18,18,112,108,97,110,101, 116,47,114,101,115,111,108,118,101,114,46,115,115,1,27,112,108,97,110,101,116, @@ -517,97 +517,97 @@ 12,252,212,199,200,201,202,80,158,41,49,87,94,23,193,1,27,89,162,8,44, 36,45,79,115,104,111,119,45,99,111,108,108,101,99,116,105,111,110,45,101,114, 114,223,5,33,44,27,28,248,22,53,23,198,2,27,250,22,141,2,80,159,42, -43,37,249,22,67,23,203,2,247,22,128,14,11,28,23,193,2,192,87,94,23, +43,37,249,22,67,23,203,2,247,22,129,14,11,28,23,193,2,192,87,94,23, 193,1,91,159,37,11,90,161,37,35,11,27,248,22,58,23,202,2,27,27,249, -22,137,14,2,36,23,197,2,28,23,193,2,87,94,23,195,1,249,22,67,248, -22,92,23,196,2,27,248,22,101,23,197,1,27,249,22,137,14,2,36,23,196, +22,138,14,2,36,23,197,2,28,23,193,2,87,94,23,195,1,249,22,67,248, +22,92,23,196,2,27,248,22,101,23,197,1,27,249,22,138,14,2,36,23,196, 2,28,23,193,2,87,94,23,194,1,249,22,67,248,22,92,23,196,2,248,2, 45,248,22,101,23,197,1,248,22,77,194,248,22,77,195,28,248,22,75,248,22, 69,23,195,2,249,22,7,9,248,22,68,195,91,159,37,11,90,161,37,35,11, 248,2,47,248,22,69,196,249,22,7,249,22,67,248,22,68,199,196,195,27,251, 80,158,46,52,2,17,23,202,1,28,248,22,75,23,199,2,23,199,2,248,22, -68,23,199,2,28,248,22,75,23,199,2,9,248,22,69,23,199,2,249,22,168, +68,23,199,2,28,248,22,75,23,199,2,9,248,22,69,23,199,2,249,22,169, 13,23,195,1,28,248,22,75,23,197,1,87,94,23,197,1,6,7,7,109,97, -105,110,46,115,115,249,22,185,6,23,199,1,6,3,3,46,115,115,28,248,22, -162,6,23,198,2,87,94,23,194,1,27,27,28,23,200,2,28,249,22,167,8, +105,110,46,115,115,249,22,186,6,23,199,1,6,3,3,46,115,115,28,248,22, +163,6,23,198,2,87,94,23,194,1,27,27,28,23,200,2,28,249,22,168,8, 23,202,2,80,158,42,46,80,158,40,47,27,248,22,176,4,23,202,2,28,248, -22,150,13,23,194,2,91,159,38,11,90,161,38,35,11,248,22,171,13,23,197, +22,151,13,23,194,2,91,159,38,11,90,161,38,35,11,248,22,172,13,23,197, 1,87,95,83,160,37,11,80,158,44,46,23,204,2,83,160,37,11,80,158,44, -47,192,192,11,11,28,23,193,2,192,87,94,23,193,1,27,247,22,130,5,28, -23,193,2,192,87,94,23,193,1,247,22,191,13,27,250,22,141,2,80,159,43, +47,192,192,11,11,28,23,193,2,192,87,94,23,193,1,27,247,22,131,5,28, +23,193,2,192,87,94,23,193,1,247,22,128,14,27,250,22,141,2,80,159,43, 43,37,249,22,67,23,204,2,23,199,2,11,28,23,193,2,192,87,94,23,193, -1,91,159,37,11,90,161,37,35,11,27,27,249,22,137,14,2,36,23,205,2, +1,91,159,37,11,90,161,37,35,11,27,27,249,22,138,14,2,36,23,205,2, 28,23,193,2,249,22,67,248,22,92,23,196,2,27,248,22,101,23,197,1,27, -249,22,137,14,2,36,23,196,2,28,23,193,2,87,94,23,194,1,249,22,67, +249,22,138,14,2,36,23,196,2,28,23,193,2,87,94,23,194,1,249,22,67, 248,22,92,23,196,2,248,2,49,248,22,101,23,197,1,248,22,77,194,248,22, 77,23,204,2,28,248,22,75,248,22,69,23,195,2,249,22,7,9,248,22,68, 195,91,159,37,11,90,161,37,35,11,248,2,51,248,22,69,196,249,22,7,249, -22,67,248,22,68,199,196,195,250,22,1,22,168,13,23,199,1,249,22,81,249, +22,67,248,22,68,199,196,195,250,22,1,22,169,13,23,199,1,249,22,81,249, 22,2,32,0,89,162,8,44,36,43,9,222,33,53,23,200,1,248,22,77,23, -200,1,28,248,22,150,13,23,198,2,87,94,23,194,1,28,248,22,173,13,23, +200,1,28,248,22,151,13,23,198,2,87,94,23,194,1,28,248,22,174,13,23, 198,2,23,197,2,248,22,77,6,26,26,32,40,97,32,112,97,116,104,32,109, -117,115,116,32,98,101,32,97,98,115,111,108,117,116,101,41,28,249,22,167,8, +117,115,116,32,98,101,32,97,98,115,111,108,117,116,101,41,28,249,22,168,8, 248,22,68,23,200,2,2,23,27,250,22,141,2,80,159,42,43,37,249,22,67, -23,203,2,247,22,128,14,11,28,23,193,2,192,87,94,23,193,1,91,159,38, -11,90,161,37,35,11,27,248,22,92,23,203,2,27,27,249,22,137,14,2,36, +23,203,2,247,22,129,14,11,28,23,193,2,192,87,94,23,193,1,91,159,38, +11,90,161,37,35,11,27,248,22,92,23,203,2,27,27,249,22,138,14,2,36, 23,197,2,28,23,193,2,87,94,23,195,1,249,22,67,248,22,92,23,196,2, -27,248,22,101,23,197,1,27,249,22,137,14,2,36,23,196,2,28,23,193,2, +27,248,22,101,23,197,1,27,249,22,138,14,2,36,23,196,2,28,23,193,2, 87,94,23,194,1,249,22,67,248,22,92,23,196,2,248,2,54,248,22,101,23, 197,1,248,22,77,194,248,22,77,195,28,248,22,75,248,22,69,23,195,2,249, 22,7,9,248,22,68,195,91,159,37,11,90,161,37,35,11,248,2,56,248,22, 69,196,249,22,7,249,22,67,248,22,68,199,196,195,90,161,36,37,11,28,248, -22,75,248,22,94,23,203,2,28,248,22,75,23,194,2,249,22,139,14,0,8, +22,75,248,22,94,23,203,2,28,248,22,75,23,194,2,249,22,140,14,0,8, 35,114,120,34,91,46,93,34,23,196,2,11,10,27,27,28,23,197,2,249,22, 81,28,248,22,75,248,22,94,23,207,2,21,93,6,5,5,109,122,108,105,98, 249,22,1,22,81,249,22,2,32,0,89,162,8,44,36,51,9,222,33,60,248, 22,94,23,210,2,23,197,2,28,248,22,75,23,196,2,248,22,77,23,197,2, 23,195,2,251,80,158,48,52,2,17,23,204,1,248,22,68,23,198,2,248,22, -69,23,198,1,249,22,168,13,23,195,1,28,23,198,1,87,94,23,196,1,23, +69,23,198,1,249,22,169,13,23,195,1,28,23,198,1,87,94,23,196,1,23, 197,1,28,248,22,75,23,197,1,87,94,23,197,1,6,7,7,109,97,105,110, -46,115,115,28,249,22,139,14,0,8,35,114,120,34,91,46,93,34,23,199,2, -23,197,1,249,22,185,6,23,199,1,6,3,3,46,115,115,28,249,22,167,8, -248,22,68,23,200,2,64,102,105,108,101,249,22,175,13,248,22,179,13,248,22, -92,23,201,2,27,28,23,201,2,28,249,22,167,8,23,203,2,80,158,43,46, -80,158,41,47,27,248,22,176,4,23,203,2,28,248,22,150,13,23,194,2,91, -159,38,11,90,161,38,35,11,248,22,171,13,23,197,1,87,95,83,160,37,11, +46,115,115,28,249,22,140,14,0,8,35,114,120,34,91,46,93,34,23,199,2, +23,197,1,249,22,186,6,23,199,1,6,3,3,46,115,115,28,249,22,168,8, +248,22,68,23,200,2,64,102,105,108,101,249,22,176,13,248,22,180,13,248,22, +92,23,201,2,27,28,23,201,2,28,249,22,168,8,23,203,2,80,158,43,46, +80,158,41,47,27,248,22,176,4,23,203,2,28,248,22,151,13,23,194,2,91, +159,38,11,90,161,38,35,11,248,22,172,13,23,197,1,87,95,83,160,37,11, 80,158,45,46,23,205,2,83,160,37,11,80,158,45,47,192,192,11,11,28,23, -193,2,192,87,94,23,193,1,27,247,22,130,5,28,23,193,2,192,87,94,23, -193,1,247,22,191,13,12,87,94,28,28,248,22,150,13,23,194,2,10,248,22, -184,7,23,194,2,87,94,23,199,1,12,28,23,199,2,250,22,134,9,67,114, -101,113,117,105,114,101,249,22,146,7,6,17,17,98,97,100,32,109,111,100,117, +193,2,192,87,94,23,193,1,27,247,22,131,5,28,23,193,2,192,87,94,23, +193,1,247,22,128,14,12,87,94,28,28,248,22,151,13,23,194,2,10,248,22, +185,7,23,194,2,87,94,23,199,1,12,28,23,199,2,250,22,135,9,67,114, +101,113,117,105,114,101,249,22,147,7,6,17,17,98,97,100,32,109,111,100,117, 108,101,32,112,97,116,104,126,97,28,23,198,2,248,22,68,23,199,2,6,0, -0,23,202,1,87,94,23,199,1,250,22,135,9,2,17,249,22,146,7,6,13, +0,23,202,1,87,94,23,199,1,250,22,136,9,2,17,249,22,147,7,6,13, 13,109,111,100,117,108,101,32,112,97,116,104,126,97,28,23,198,2,248,22,68, -23,199,2,6,0,0,23,200,2,27,28,248,22,184,7,23,195,2,249,22,189, -7,23,196,2,35,249,22,177,13,248,22,178,13,23,197,2,11,27,28,248,22, -184,7,23,196,2,249,22,189,7,23,197,2,36,248,80,158,41,53,23,195,2, -91,159,38,11,90,161,38,35,11,28,248,22,184,7,23,199,2,250,22,7,2, -24,249,22,189,7,23,203,2,37,2,24,248,22,171,13,23,198,2,87,95,23, -195,1,23,193,1,27,28,248,22,184,7,23,200,2,249,22,189,7,23,201,2, -38,249,80,158,46,54,23,197,2,5,0,27,28,248,22,184,7,23,201,2,249, -22,189,7,23,202,2,39,248,22,175,4,23,200,2,27,27,250,22,141,2,80, -159,50,42,37,248,22,157,14,247,22,132,12,11,28,23,193,2,192,87,94,23, -193,1,27,247,22,125,87,94,250,22,139,2,80,159,51,42,37,248,22,157,14, -247,22,132,12,195,192,87,95,28,23,208,1,27,250,22,141,2,23,197,2,197, +23,199,2,6,0,0,23,200,2,27,28,248,22,185,7,23,195,2,249,22,190, +7,23,196,2,35,249,22,178,13,248,22,179,13,23,197,2,11,27,28,248,22, +185,7,23,196,2,249,22,190,7,23,197,2,36,248,80,158,41,53,23,195,2, +91,159,38,11,90,161,38,35,11,28,248,22,185,7,23,199,2,250,22,7,2, +24,249,22,190,7,23,203,2,37,2,24,248,22,172,13,23,198,2,87,95,23, +195,1,23,193,1,27,28,248,22,185,7,23,200,2,249,22,190,7,23,201,2, +38,249,80,158,46,54,23,197,2,5,0,27,28,248,22,185,7,23,201,2,249, +22,190,7,23,202,2,39,248,22,175,4,23,200,2,27,27,250,22,141,2,80, +159,50,42,37,248,22,158,14,247,22,133,12,11,28,23,193,2,192,87,94,23, +193,1,27,247,22,125,87,94,250,22,139,2,80,159,51,42,37,248,22,158,14, +247,22,133,12,195,192,87,95,28,23,208,1,27,250,22,141,2,23,197,2,197, 11,28,23,193,1,12,87,95,27,27,28,248,22,17,80,159,50,45,37,80,159, 49,45,37,247,22,19,250,22,25,248,22,23,23,197,2,80,159,52,44,37,23, -196,1,27,248,22,157,14,247,22,132,12,249,22,3,83,158,39,20,97,94,89, +196,1,27,248,22,158,14,247,22,133,12,249,22,3,83,158,39,20,97,94,89, 162,8,44,36,54,9,226,12,11,2,3,33,61,23,195,1,23,196,1,248,28, 248,22,17,80,159,49,45,37,32,0,89,162,43,36,41,9,222,33,62,80,159, 48,59,36,89,162,43,35,50,9,227,13,9,8,4,3,33,63,250,22,139,2, -23,197,1,197,10,12,28,28,248,22,184,7,23,202,1,11,28,248,22,162,6, +23,197,1,197,10,12,28,28,248,22,185,7,23,202,1,11,28,248,22,163,6, 23,206,2,10,28,248,22,53,23,206,2,10,28,248,22,65,23,206,2,249,22, -167,8,248,22,68,23,208,2,2,23,11,250,22,139,2,80,159,49,43,37,28, -248,22,162,6,23,209,2,249,22,67,23,210,1,27,28,23,212,2,28,249,22, -167,8,23,214,2,80,158,54,46,87,94,23,212,1,80,158,52,47,27,248,22, -176,4,23,214,2,28,248,22,150,13,23,194,2,91,159,38,11,90,161,38,35, -11,248,22,171,13,23,197,1,87,95,83,160,37,11,80,158,56,46,23,23,83, +168,8,248,22,68,23,208,2,2,23,11,250,22,139,2,80,159,49,43,37,28, +248,22,163,6,23,209,2,249,22,67,23,210,1,27,28,23,212,2,28,249,22, +168,8,23,214,2,80,158,54,46,87,94,23,212,1,80,158,52,47,27,248,22, +176,4,23,214,2,28,248,22,151,13,23,194,2,91,159,38,11,90,161,38,35, +11,248,22,172,13,23,197,1,87,95,83,160,37,11,80,158,56,46,23,23,83, 160,37,11,80,158,56,47,192,192,11,11,28,23,193,2,192,87,94,23,193,1, -27,247,22,130,5,28,23,193,2,192,87,94,23,193,1,247,22,191,13,249,22, -67,23,210,1,247,22,128,14,252,22,186,7,23,208,1,23,207,1,23,205,1, +27,247,22,131,5,28,23,193,2,192,87,94,23,193,1,247,22,128,14,249,22, +67,23,210,1,247,22,129,14,252,22,187,7,23,208,1,23,207,1,23,205,1, 23,203,1,201,12,193,87,96,83,160,37,11,80,158,35,49,248,80,158,36,57, -249,22,27,11,80,158,38,51,248,22,155,4,80,159,36,50,37,248,22,129,5, -80,159,36,36,36,248,22,187,12,80,159,36,41,36,83,160,37,11,80,158,35, +249,22,27,11,80,158,38,51,248,22,155,4,80,159,36,50,37,248,22,130,5, +80,159,36,36,36,248,22,188,12,80,159,36,41,36,83,160,37,11,80,158,35, 49,248,80,158,36,57,249,22,27,11,80,158,38,51,159,35,20,102,159,35,16, 1,11,16,0,83,158,41,20,100,144,66,35,37,98,111,111,116,29,11,11,11, 11,11,10,37,80,158,35,35,20,102,159,37,16,23,2,1,2,2,30,2,4, @@ -626,7 +626,7 @@ 11,16,0,16,0,16,0,35,35,16,0,16,16,83,158,35,16,2,89,162,43, 36,44,9,223,0,33,25,80,159,35,59,36,83,158,35,16,2,89,162,43,37, 48,68,119,105,116,104,45,100,105,114,223,0,33,26,80,159,35,58,36,83,158, -35,16,2,248,22,181,7,69,115,111,45,115,117,102,102,105,120,80,159,35,35, +35,16,2,248,22,182,7,69,115,111,45,115,117,102,102,105,120,80,159,35,35, 36,83,158,35,16,2,89,162,43,37,59,2,2,223,0,33,35,80,159,35,36, 36,83,158,35,16,2,32,0,89,162,8,44,36,41,2,8,222,192,80,159,35, 41,36,83,158,35,16,2,247,22,128,2,80,159,35,42,36,83,158,35,16,2, diff --git a/src/mzscheme/src/module.c b/src/mzscheme/src/module.c index bc1429a7c3..68d1e9678e 100644 --- a/src/mzscheme/src/module.c +++ b/src/mzscheme/src/module.c @@ -57,6 +57,7 @@ static Scheme_Object *module_compiled_exports(int argc, Scheme_Object *argv[]); static Scheme_Object *module_compiled_lang_info(int argc, Scheme_Object *argv[]); static Scheme_Object *module_to_namespace(int argc, Scheme_Object *argv[]); static Scheme_Object *module_to_lang_info(int argc, Scheme_Object *argv[]); +static Scheme_Object *module_to_compiled(int argc, Scheme_Object *argv[]); static Scheme_Object *module_path_index_p(int argc, Scheme_Object *argv[]); static Scheme_Object *module_path_index_resolve(int argc, Scheme_Object *argv[]); @@ -394,6 +395,7 @@ void scheme_init_module(Scheme_Env *env) GLOBAL_PRIM_W_ARITY("module-provide-protected?", module_export_protected_p, 2, 2, env); GLOBAL_PRIM_W_ARITY("module->namespace", module_to_namespace, 1, 1, env); GLOBAL_PRIM_W_ARITY("module->language-info", module_to_lang_info, 1, 1, env); + GLOBAL_PRIM_W_ARITY("module->compiled-module-expression", module_to_compiled, 1, 1, env); GLOBAL_PRIM_W_ARITY("module-path?", is_module_path, 1, 1, env); } @@ -2553,7 +2555,7 @@ static Scheme_Object *module_to_namespace(int argc, Scheme_Object *argv[]) return scheme_module_to_namespace(argv[0], env); } -static Scheme_Object *module_to_lang_info(int argc, Scheme_Object *argv[]) +static Scheme_Module *module_to_(const char *who, int argc, Scheme_Object *argv[]) { Scheme_Env *env; Scheme_Object *name; @@ -2562,22 +2564,68 @@ static Scheme_Object *module_to_lang_info(int argc, Scheme_Object *argv[]) env = scheme_get_env(NULL); if (!SCHEME_PATHP(argv[0]) + && !SCHEME_MODNAMEP(argv[0]) && !scheme_is_module_path(argv[0])) - scheme_wrong_type("module->language-info", "path or module-path", 0, argc, argv); + scheme_wrong_type(who, "path, module-path, or resolved-module-path", 0, argc, argv); - name = scheme_module_resolve(scheme_make_modidx(argv[0], scheme_false, scheme_false), 1); + if (SCHEME_MODNAMEP(argv[0])) + name = argv[0]; + else + name = scheme_module_resolve(scheme_make_modidx(argv[0], scheme_false, scheme_false), 1); - env = scheme_get_env(NULL); - m = (Scheme_Module *)scheme_hash_get(env->module_registry, name); + if (SAME_OBJ(name, kernel_modname)) + m = kernel; + else if (SAME_OBJ(name, unsafe_modname)) + m = scheme_get_unsafe_env()->module; + else if (SAME_OBJ(name, flfxnum_modname)) + m = scheme_get_flfxnum_env()->module; + else { + env = scheme_get_env(NULL); + m = (Scheme_Module *)scheme_hash_get(env->module_registry, name); + } if (!m) - scheme_arg_mismatch("module->laguage-info", + scheme_arg_mismatch(who, "unknown module in the current namespace: ", name); + return m; +} + +static Scheme_Object *module_to_lang_info(int argc, Scheme_Object *argv[]) +{ + Scheme_Module *m; + + m = module_to_("module->language-info", argc, argv); + return (m->lang_info ? m->lang_info : scheme_false); } +static Scheme_Object *module_to_compiled(int argc, Scheme_Object *argv[]) +{ + Scheme_Object *o; + Scheme_Module *m; + Scheme_Compilation_Top *top; + Resolve_Prefix *rp; + + m = module_to_("module->compiled-module-expression", argc, argv); + + o = scheme_make_syntax_resolved(MODULE_EXPD, (Scheme_Object *)m); + + rp = MALLOC_ONE_TAGGED(Resolve_Prefix); + rp->so.type = scheme_resolve_prefix_type; + rp->num_toplevels = 0; + rp->num_stxes = 0; + rp->uses_unsafe = 0; + + top = MALLOC_ONE_TAGGED(Scheme_Compilation_Top); + top->so.type = scheme_compilation_top_type; + top->max_let_depth = 0; + top->code = o; + top->prefix = rp; + + return (Scheme_Object *)top; +} static Scheme_Object *module_compiled_p(int argc, Scheme_Object *argv[]) { diff --git a/src/mzscheme/src/schminc.h b/src/mzscheme/src/schminc.h index 51cb9c0219..1fe76fe41b 100644 --- a/src/mzscheme/src/schminc.h +++ b/src/mzscheme/src/schminc.h @@ -13,7 +13,7 @@ #define USE_COMPILED_STARTUP 1 -#define EXPECTED_PRIM_COUNT 962 +#define EXPECTED_PRIM_COUNT 963 #define EXPECTED_UNSAFE_COUNT 58 #define EXPECTED_FLFXNUM_COUNT 53 diff --git a/src/mzscheme/src/schvers.h b/src/mzscheme/src/schvers.h index 49ab82fe01..1456f80e1a 100644 --- a/src/mzscheme/src/schvers.h +++ b/src/mzscheme/src/schvers.h @@ -13,12 +13,12 @@ consistently.) */ -#define MZSCHEME_VERSION "4.2.3.10" +#define MZSCHEME_VERSION "4.2.3.11" #define MZSCHEME_VERSION_X 4 #define MZSCHEME_VERSION_Y 2 #define MZSCHEME_VERSION_Z 3 -#define MZSCHEME_VERSION_W 10 +#define MZSCHEME_VERSION_W 11 #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)