From 426a8c0d39aaddcb45bd8a56febbb50b99cd0945 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sun, 21 Apr 2013 17:51:44 -0600 Subject: [PATCH] add `exn:fail:{filesystem,syntax}:missing-module' These exception types are intended as a hook for a programming environment to recommend packages that can provide a module that isn't found (through an uncaught-exception handler). The new exceptions are generated by the default module name resolver and defaultload handler. In addition to the exceptions, there's a new `prop:exn:missing-module' property and `exn:missing-module?', which is what an environment should use to detect relevant exceptions. There's also a new `current-module-path-for-load' parameter, which just provides a commuincation path from the module name resolver to the the load handler. The parameter is a relatively ugly piece of the puzzle, but it's the best I could find to squash the new functionality into the existing stack of handlers. --- collects/racket/private/kernstruct.rkt | 43 + collects/scribblings/reference/exns.scrbl | 58 +- .../reference/module-reflect.scrbl | 12 + doc/release-notes/racket/HISTORY.txt | 5 + src/racket/include/scheme.h | 1 + src/racket/src/cstartup.inc | 1796 +++++++++-------- src/racket/src/error.c | 55 + src/racket/src/file.c | 2 +- src/racket/src/makeexn | 12 +- src/racket/src/module.c | 24 + src/racket/src/port.c | 53 +- src/racket/src/portfun.c | 8 +- src/racket/src/read.c | 2 +- src/racket/src/schexn.h | 30 +- src/racket/src/schminc.h | 2 +- src/racket/src/schpriv.h | 3 +- src/racket/src/schvers.h | 4 +- src/racket/src/startup.inc | 39 +- src/racket/src/startup.rktl | 45 +- src/racket/src/struct.c | 53 + 20 files changed, 1304 insertions(+), 943 deletions(-) diff --git a/collects/racket/private/kernstruct.rkt b/collects/racket/private/kernstruct.rkt index 5c219a6328..fb15bf1e37 100644 --- a/collects/racket/private/kernstruct.rkt +++ b/collects/racket/private/kernstruct.rkt @@ -211,6 +211,28 @@ '(#f #f #f) (quote-syntax exn:fail:syntax))) (λ () (quote-syntax kernel:exn:fail:syntax:unbound))))) + (begin + (#%require + (rename '#%kernel + kernel:exn:fail:syntax:missing-module + exn:fail:syntax:missing-module)) + (define make-exn:fail:syntax:missing-module + kernel:exn:fail:syntax:missing-module) + (define-syntax exn:fail:syntax:missing-module + (make-self-ctr-struct-info + (λ () + (list + (quote-syntax struct:exn:fail:syntax:missing-module) + (quote-syntax make-exn:fail:syntax:missing-module) + (quote-syntax exn:fail:syntax:missing-module?) + (list + (quote-syntax exn:fail:syntax:missing-module-path) + (quote-syntax exn:fail:syntax-exprs) + (quote-syntax exn-continuation-marks) + (quote-syntax exn-message)) + '(#f #f #f #f) + (quote-syntax exn:fail:syntax))) + (λ () (quote-syntax kernel:exn:fail:syntax:missing-module))))) (begin (#%require (rename '#%kernel kernel:exn:fail:read exn:fail:read)) (define make-exn:fail:read kernel:exn:fail:read) @@ -339,6 +361,27 @@ '(#f #f #f) (quote-syntax exn:fail:filesystem))) (λ () (quote-syntax kernel:exn:fail:filesystem:errno))))) + (begin + (#%require + (rename '#%kernel + kernel:exn:fail:filesystem:missing-module + exn:fail:filesystem:missing-module)) + (define make-exn:fail:filesystem:missing-module + kernel:exn:fail:filesystem:missing-module) + (define-syntax exn:fail:filesystem:missing-module + (make-self-ctr-struct-info + (λ () + (list + (quote-syntax struct:exn:fail:filesystem:missing-module) + (quote-syntax make-exn:fail:filesystem:missing-module) + (quote-syntax exn:fail:filesystem:missing-module?) + (list + (quote-syntax exn:fail:filesystem:missing-module--path) + (quote-syntax exn-continuation-marks) + (quote-syntax exn-message)) + '(#f #f #f) + (quote-syntax exn:fail:filesystem))) + (λ () (quote-syntax kernel:exn:fail:filesystem:missing-module))))) (begin (#%require (rename '#%kernel kernel:exn:fail:network exn:fail:network)) (define make-exn:fail:network kernel:exn:fail:network) diff --git a/collects/scribblings/reference/exns.scrbl b/collects/scribblings/reference/exns.scrbl index 3f1c95a85e..0efab38c79 100644 --- a/collects/scribblings/reference/exns.scrbl +++ b/collects/scribblings/reference/exns.scrbl @@ -615,6 +615,7 @@ exn exn:fail:contract:variable exn:fail:syntax exn:fail:syntax:unbound + exn:fail:syntax:missing-module exn:fail:read exn:fail:read:eof exn:fail:read:non-char @@ -622,6 +623,7 @@ exn exn:fail:filesystem:exists exn:fail:filesystem:version exn:fail:filesystem:errno + exn:fail:filesystem:missing-module exn:fail:network exn:fail:network:errno exn:fail:out-of-memory @@ -677,7 +679,9 @@ or @tech{module-level variable}.} Raised for a syntax error that is not a @racket[read] error. The @racket[exprs] indicate the relevant source expressions, -least-specific to most-specific.} +least-specific to most-specific. + +This structure type implements the @racket[prop:exn:srclocs] property.} @defstruct[(exn:fail:syntax:unbound exn:fail:syntax) () #:inspector #f]{ @@ -685,6 +689,22 @@ least-specific to most-specific.} Raised by @racket[#%top] or @racket[set!] for an unbound identifier within a module.} +@defstruct[(exn:fail:syntax:missing-module exn:fail:syntax) ([path module-path?]) + #:inspector #f]{ + +Raised by the default @tech{module name resolver} or default +@tech{load handler} to report a module path---a reported in the +@racket[path] field---whose implementation file cannot be +found. + +The default @tech{module name resolver} raises this exception only +when it is given a syntax object as its second argument, and the +default @tech{load handler} raises this exception only when the value +of @racket[current-module-path-for-load] is a syntax object (in which +case both the @racket[exprs] field and the @racket[path] field +are determined by the syntax object. + +This structure type implements the @racket[prop:exn:missing-module] property.} @defstruct[(exn:fail:read exn:fail) ([srclocs (listof srcloc?)]) #:inspector #f]{ @@ -735,6 +755,21 @@ code (under Windows, only), and @racket['gai] indicates a hostnames, but it allowed in @racket[exn:fail:filesystem:errno] instances for consistency).} +@defstruct[(exn:fail:filesystem:missing-module exn:fail:filesystem) ([path module-path?]) + #:inspector #f]{ + +Raised by the default @tech{module name resolver} or default +@tech{load handler} to report a module path---a reported in the +@racket[path] field---whose implementation file cannot be +found. + +The default @tech{module name resolver} raises this exception only +when it is @emph{not} given a syntax object as its second argument, and the +default @tech{load handler} raises this exception only when the value +of @racket[current-module-path-for-load] is @emph{not} a syntax object. + +This structure type implements the @racket[prop:exn:missing-module] property.} + @defstruct[(exn:fail:network exn:fail) () #:inspector #f]{ @@ -892,3 +927,24 @@ The fields of a @racket[srcloc] instance are as follows: 0) or @racket[#f] (unknown).} ]} + + +@defthing[prop:exn:missing-module struct-type-property?]{ + +A property that identifies structure types that provide a module path +for a load that fails because a module is not found. + +The property value must be a procedure that accepts a single +value---the structure type instance from which to extract source +locations---and returns a @tech{module path}.} + +@defproc[(exn:missing-module? [v any/c]) boolean?]{ + +Returns @racket[#t] if @racket[v] has the @racket[prop:exn:missing-module] +property, @racket[#f] otherwise.} + + +@defproc[(exn:missing-module-accessor [v exn:srclocs?]) + (exn:missing-module? . -> . module-path?)]{ + +Returns the @tech{module path}-getting procedure associated with @racket[v].} diff --git a/collects/scribblings/reference/module-reflect.scrbl b/collects/scribblings/reference/module-reflect.scrbl index 9bff08aebc..9935869bd0 100644 --- a/collects/scribblings/reference/module-reflect.scrbl +++ b/collects/scribblings/reference/module-reflect.scrbl @@ -171,6 +171,18 @@ is @racket[#f], the module's name (as determined by @racket[current-module-declare-name]) is used as the source name instead of the parameter value.} + +@defparam[current-module-path-for-load path (or/c #f module-path? + (and/c syntax? + (lambda (stx) + (module-path? (syntax->datum s)))))]{ + +A @tech{parameter} that determines a module path used for +@racket[exn:fail:syntax:missing-module] and +@racket[exn:fail:filesytem:missing-module] exceptions as raised by the +default @tech{load handler}. The parameter is normally set by a +@tech{module name resolver}.} + @;------------------------------------------------------------------------ @section[#:tag "modpathidx"]{Compiled Modules and References} diff --git a/doc/release-notes/racket/HISTORY.txt b/doc/release-notes/racket/HISTORY.txt index e6b27814d3..a635accaa4 100644 --- a/doc/release-notes/racket/HISTORY.txt +++ b/doc/release-notes/racket/HISTORY.txt @@ -1,3 +1,8 @@ +Version 5.3.4.4 +Added current-module-path-for-load, exn:fail:syntax:missing-module, + exn:fail:filesystem:missing-module, prop:exn:missing-module, + exn:missing-module?, and exn:missing-module-accessor + Version 5.3.4.3 Added make-environment-variables Changed initialization of current-directory to use PWD diff --git a/src/racket/include/scheme.h b/src/racket/include/scheme.h index 345e4a4b88..0f10c36a6f 100644 --- a/src/racket/include/scheme.h +++ b/src/racket/include/scheme.h @@ -1372,6 +1372,7 @@ enum { MZCONFIG_CURRENT_MODULE_RESOLVER, MZCONFIG_CURRENT_MODULE_NAME, MZCONFIG_CURRENT_MODULE_SRC, + MZCONFIG_CURRENT_MODULE_LOAD_PATH, MZCONFIG_ERROR_PRINT_SRCLOC, diff --git a/src/racket/src/cstartup.inc b/src/racket/src/cstartup.inc index 5e40ed5685..0044d1996d 100644 --- a/src/racket/src/cstartup.inc +++ b/src/racket/src/cstartup.inc @@ -1,58 +1,58 @@ { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,52,46,51,84,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,52,46,52,84,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,51,0,0,0,1,0,0,10,0,14,0, -27,0,31,0,38,0,42,0,49,0,54,0,61,0,66,0,69,0,74,0,83, +19,0,26,0,29,0,36,0,49,0,53,0,60,0,65,0,69,0,74,0,83, 0,87,0,93,0,107,0,121,0,124,0,130,0,134,0,136,0,147,0,149,0, 163,0,170,0,192,0,194,0,208,0,19,1,48,1,59,1,70,1,96,1,129, 1,162,1,224,1,24,2,105,2,161,2,166,2,187,2,84,3,105,3,158,3, 225,3,114,4,2,5,56,5,67,5,150,5,0,0,113,7,0,0,69,35,37, -109,105,110,45,115,116,120,29,11,11,11,72,112,97,114,97,109,101,116,101,114, -105,122,101,63,97,110,100,66,100,101,102,105,110,101,63,108,101,116,66,117,110, -108,101,115,115,64,99,111,110,100,66,108,101,116,114,101,99,64,108,101,116,42, -62,111,114,64,119,104,101,110,68,104,101,114,101,45,115,116,120,29,11,11,11, +109,105,110,45,115,116,120,29,11,11,11,64,99,111,110,100,66,108,101,116,114, +101,99,62,111,114,66,117,110,108,101,115,115,72,112,97,114,97,109,101,116,101, +114,105,122,101,63,97,110,100,66,100,101,102,105,110,101,64,108,101,116,42,63, +108,101,116,64,119,104,101,110,68,104,101,114,101,45,115,116,120,29,11,11,11, 65,113,117,111,116,101,29,94,2,15,68,35,37,107,101,114,110,101,108,11,29, 94,2,15,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,36,11,8,240, -174,91,0,0,95,159,2,17,36,36,159,2,16,36,36,159,2,16,36,36,16, -20,2,8,2,2,2,4,2,2,2,5,2,2,2,6,2,2,2,7,2,2, -2,10,2,2,2,3,2,2,2,9,2,2,2,11,2,2,2,12,2,2,97, -37,11,8,240,174,91,0,0,93,159,2,16,36,37,16,2,2,13,161,2,2, -37,2,13,2,2,2,13,96,11,11,8,240,174,91,0,0,16,0,96,38,11, -8,240,174,91,0,0,16,0,18,98,64,104,101,114,101,13,16,6,36,2,14, +192,91,0,0,95,159,2,17,36,36,159,2,16,36,36,159,2,16,36,36,16, +20,2,10,2,2,2,7,2,2,2,5,2,2,2,6,2,2,2,3,2,2, +2,8,2,2,2,9,2,2,2,4,2,2,2,11,2,2,2,12,2,2,97, +37,11,8,240,192,91,0,0,93,159,2,16,36,37,16,2,2,13,161,2,2, +37,2,13,2,2,2,13,96,38,11,8,240,192,91,0,0,16,0,96,11,11, +8,240,192,91,0,0,16,0,18,98,64,104,101,114,101,13,16,6,36,2,14, 2,2,11,11,11,8,32,8,31,8,30,8,29,27,248,22,164,4,195,249,22, 157,4,80,158,39,36,251,22,89,2,18,248,22,104,199,12,249,22,79,2,19, 248,22,106,201,27,248,22,164,4,195,249,22,157,4,80,158,39,36,251,22,89, 2,18,248,22,104,199,249,22,79,2,19,248,22,106,201,12,27,248,22,81,248, 22,164,4,196,28,248,22,87,193,20,14,159,37,36,37,28,248,22,87,248,22, -81,194,248,22,184,17,193,249,22,157,4,80,158,39,36,251,22,89,2,18,248, -22,184,17,199,249,22,79,2,4,248,22,185,17,201,11,18,100,10,13,16,6, +81,194,248,22,132,18,193,249,22,157,4,80,158,39,36,251,22,89,2,18,248, +22,132,18,199,249,22,79,2,8,248,22,133,18,201,11,18,100,10,13,16,6, 36,2,14,2,2,11,11,11,8,32,8,31,8,30,8,29,16,4,11,11,2, -20,3,1,8,101,110,118,49,55,52,52,57,16,4,11,11,2,21,3,1,8, -101,110,118,49,55,52,53,48,27,248,22,81,248,22,164,4,196,28,248,22,87, -193,20,14,159,37,36,37,28,248,22,87,248,22,81,194,248,22,184,17,193,249, +20,3,1,8,101,110,118,49,55,52,54,48,16,4,11,11,2,21,3,1,8, +101,110,118,49,55,52,54,49,27,248,22,81,248,22,164,4,196,28,248,22,87, +193,20,14,159,37,36,37,28,248,22,87,248,22,81,194,248,22,132,18,193,249, 22,157,4,80,158,39,36,250,22,89,2,22,248,22,89,249,22,89,248,22,89, -2,23,248,22,184,17,201,251,22,89,2,18,2,23,2,23,249,22,79,2,11, -248,22,185,17,204,18,100,11,13,16,6,36,2,14,2,2,11,11,11,8,32, +2,23,248,22,132,18,201,251,22,89,2,18,2,23,2,23,249,22,79,2,5, +248,22,133,18,204,18,100,11,13,16,6,36,2,14,2,2,11,11,11,8,32, 8,31,8,30,8,29,16,4,11,11,2,20,3,1,8,101,110,118,49,55,52, -53,50,16,4,11,11,2,21,3,1,8,101,110,118,49,55,52,53,51,248,22, +54,51,16,4,11,11,2,21,3,1,8,101,110,118,49,55,52,54,52,248,22, 164,4,193,27,248,22,164,4,194,249,22,79,248,22,89,248,22,80,196,248,22, -185,17,195,27,248,22,81,248,22,164,4,23,197,1,249,22,157,4,80,158,39, +133,18,195,27,248,22,81,248,22,164,4,23,197,1,249,22,157,4,80,158,39, 36,28,248,22,64,248,22,158,4,248,22,80,23,198,2,27,249,22,2,32,0, 88,163,8,36,37,43,11,9,222,33,40,248,22,164,4,248,22,104,23,200,2, -250,22,89,2,24,248,22,89,249,22,89,248,22,89,248,22,184,17,23,204,2, +250,22,89,2,24,248,22,89,249,22,89,248,22,89,248,22,132,18,23,204,2, 250,22,90,2,25,249,22,2,22,80,23,204,2,248,22,106,23,206,2,249,22, -79,248,22,184,17,23,202,1,249,22,2,22,104,23,200,1,250,22,90,2,22, +79,248,22,132,18,23,202,1,249,22,2,22,104,23,200,1,250,22,90,2,22, 249,22,2,32,0,88,163,8,36,37,47,11,9,222,33,41,248,22,164,4,248, -22,184,17,201,248,22,185,17,198,27,248,22,164,4,194,249,22,79,248,22,89, -248,22,80,196,248,22,185,17,195,27,248,22,81,248,22,164,4,23,197,1,249, +22,132,18,201,248,22,133,18,198,27,248,22,164,4,194,249,22,79,248,22,89, +248,22,80,196,248,22,133,18,195,27,248,22,81,248,22,164,4,23,197,1,249, 22,157,4,80,158,39,36,250,22,90,2,24,249,22,2,32,0,88,163,8,36, -37,47,11,9,222,33,43,248,22,164,4,248,22,80,201,248,22,185,17,198,27, +37,47,11,9,222,33,43,248,22,164,4,248,22,80,201,248,22,133,18,198,27, 248,22,81,248,22,164,4,196,27,248,22,164,4,248,22,80,195,249,22,157,4, 80,158,40,36,28,248,22,87,195,250,22,90,2,22,9,248,22,81,199,250,22, -89,2,6,248,22,89,248,22,80,199,250,22,90,2,10,248,22,185,17,201,248, +89,2,11,248,22,89,248,22,80,199,250,22,90,2,10,248,22,133,18,201,248, 22,81,202,27,248,22,81,248,22,164,4,23,197,1,27,249,22,1,22,93,249, 22,2,22,164,4,248,22,164,4,248,22,80,199,248,22,184,4,249,22,157,4, 80,158,41,36,251,22,89,1,22,119,105,116,104,45,99,111,110,116,105,110,117, @@ -61,19 +61,19 @@ 1,27,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,45,115, 101,116,45,102,105,114,115,116,11,2,26,202,250,22,90,2,22,9,248,22,81, 204,27,248,22,81,248,22,164,4,196,28,248,22,87,193,20,14,159,37,36,37, -249,22,157,4,80,158,39,36,27,248,22,164,4,248,22,80,197,28,249,22,161, +249,22,157,4,80,158,39,36,27,248,22,164,4,248,22,80,197,28,249,22,162, 9,62,61,62,248,22,158,4,248,22,104,196,250,22,89,2,22,248,22,89,249, -22,89,21,93,2,27,248,22,80,199,250,22,90,2,8,249,22,89,2,27,249, -22,89,248,22,113,203,2,27,248,22,81,202,251,22,89,2,18,28,249,22,161, -9,248,22,158,4,248,22,80,200,64,101,108,115,101,10,248,22,184,17,197,250, -22,90,2,22,9,248,22,185,17,200,249,22,79,2,8,248,22,81,202,99,13, +22,89,21,93,2,27,248,22,80,199,250,22,90,2,3,249,22,89,2,27,249, +22,89,248,22,113,203,2,27,248,22,81,202,251,22,89,2,18,28,249,22,162, +9,248,22,158,4,248,22,80,200,64,101,108,115,101,10,248,22,132,18,197,250, +22,90,2,22,9,248,22,133,18,200,249,22,79,2,3,248,22,81,202,99,13, 16,6,36,2,14,2,2,11,11,11,8,32,8,31,8,30,8,29,16,4,11, -11,2,20,3,1,8,101,110,118,49,55,52,55,53,16,4,11,11,2,21,3, -1,8,101,110,118,49,55,52,55,54,18,158,94,10,64,118,111,105,100,8,48, +11,2,20,3,1,8,101,110,118,49,55,52,56,54,16,4,11,11,2,21,3, +1,8,101,110,118,49,55,52,56,55,18,158,94,10,64,118,111,105,100,8,48, 27,248,22,81,248,22,164,4,196,249,22,157,4,80,158,39,36,28,248,22,64, -248,22,158,4,248,22,80,197,250,22,89,2,28,248,22,89,248,22,184,17,199, -248,22,104,198,27,248,22,158,4,248,22,184,17,197,250,22,89,2,28,248,22, -89,248,22,80,197,250,22,90,2,25,248,22,185,17,199,248,22,185,17,202,159, +248,22,158,4,248,22,80,197,250,22,89,2,28,248,22,89,248,22,132,18,199, +248,22,104,198,27,248,22,158,4,248,22,132,18,197,250,22,89,2,28,248,22, +89,248,22,80,197,250,22,90,2,25,248,22,133,18,199,248,22,133,18,202,159, 36,20,114,159,36,16,1,11,16,0,20,26,150,9,2,1,2,1,2,2,11, 9,9,11,11,11,10,36,80,158,36,36,20,114,159,36,16,0,16,0,38,39, 36,16,0,36,16,0,36,11,11,11,16,10,2,3,2,4,2,5,2,6,2, @@ -82,25 +82,25 @@ 11,2,12,36,46,37,16,0,36,16,1,2,13,37,11,11,11,16,0,16,0, 16,0,36,36,11,12,11,11,16,0,16,0,16,0,36,36,16,11,16,5,11, 20,15,16,2,20,14,159,36,36,37,80,158,36,36,36,20,114,159,36,16,1, -2,13,16,1,33,33,10,16,5,2,7,88,163,8,36,37,53,37,9,223,0, +2,13,16,1,33,33,10,16,5,2,6,88,163,8,36,37,53,37,9,223,0, 33,34,36,20,114,159,36,16,1,2,13,16,0,11,16,5,2,12,88,163,8, 36,37,53,37,9,223,0,33,35,36,20,114,159,36,16,1,2,13,16,0,11, -16,5,2,4,88,163,8,36,37,53,37,9,223,0,33,36,36,20,114,159,36, -16,1,2,13,16,1,33,37,11,16,5,2,11,88,163,8,36,37,56,37,9, +16,5,2,8,88,163,8,36,37,53,37,9,223,0,33,36,36,20,114,159,36, +16,1,2,13,16,1,33,37,11,16,5,2,5,88,163,8,36,37,56,37,9, 223,0,33,38,36,20,114,159,36,16,1,2,13,16,1,33,39,11,16,5,2, -6,88,163,8,36,37,58,37,9,223,0,33,42,36,20,114,159,36,16,1,2, -13,16,0,11,16,5,2,9,88,163,8,36,37,53,37,9,223,0,33,44,36, +11,88,163,8,36,37,58,37,9,223,0,33,42,36,20,114,159,36,16,1,2, +13,16,0,11,16,5,2,4,88,163,8,36,37,53,37,9,223,0,33,44,36, 20,114,159,36,16,1,2,13,16,0,11,16,5,2,10,88,163,8,36,37,54, 37,9,223,0,33,45,36,20,114,159,36,16,1,2,13,16,0,11,16,5,2, -3,88,163,8,36,37,56,37,9,223,0,33,46,36,20,114,159,36,16,1,2, -13,16,0,11,16,5,2,8,88,163,8,36,37,58,37,9,223,0,33,47,36, -20,114,159,36,16,1,2,13,16,1,33,49,11,16,5,2,5,88,163,8,36, +7,88,163,8,36,37,56,37,9,223,0,33,46,36,20,114,159,36,16,1,2, +13,16,0,11,16,5,2,3,88,163,8,36,37,58,37,9,223,0,33,47,36, +20,114,159,36,16,1,2,13,16,1,33,49,11,16,5,2,9,88,163,8,36, 37,54,37,9,223,0,33,50,36,20,114,159,36,16,1,2,13,16,0,11,16, 0,94,2,16,2,17,93,2,16,9,9,36,0}; EVAL_ONE_SIZED_STR((char *)expr, 2049); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,52,46,51,84,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,52,46,52,84,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,138,0,0,0,1,0,0,8,0,21,0, 26,0,43,0,55,0,77,0,106,0,121,0,139,0,151,0,167,0,181,0,203, 0,219,0,236,0,2,1,13,1,19,1,28,1,35,1,42,1,54,1,70,1, @@ -159,510 +159,510 @@ 32,115,117,102,102,105,120,32,116,111,32,97,32,114,111,111,116,32,112,97,116, 104,58,32,5,1,95,5,11,80,76,84,67,79,76,76,69,67,84,83,69,97, 100,100,111,110,45,100,105,114,6,8,8,99,111,108,108,101,99,116,115,27,248, -22,140,15,23,195,2,28,23,193,2,192,86,94,23,193,1,28,248,22,146,7, -23,195,2,27,248,22,162,15,23,196,2,28,23,193,2,192,86,94,23,193,1, -248,22,163,15,23,196,1,11,0,21,35,114,120,34,94,91,92,92,93,91,92, +22,152,15,23,195,2,28,23,193,2,192,86,94,23,193,1,28,248,22,147,7, +23,195,2,27,248,22,174,15,23,196,2,28,23,193,2,192,86,94,23,193,1, +248,22,175,15,23,196,1,11,0,21,35,114,120,34,94,91,92,92,93,91,92, 92,93,91,63,93,91,92,92,93,34,0,6,35,114,120,34,47,34,0,22,35, 114,120,34,91,47,92,92,93,91,46,32,93,43,91,47,92,92,93,42,36,34, 0,19,35,114,120,34,91,32,46,93,43,40,91,47,92,92,93,42,41,36,34, -86,94,28,28,248,22,141,15,23,195,2,10,28,248,22,140,15,23,195,2,10, -28,248,22,146,7,23,195,2,28,248,22,162,15,23,195,2,10,248,22,163,15, -23,195,2,11,12,250,22,134,10,2,33,2,34,23,197,2,28,28,248,22,141, -15,23,195,2,249,22,161,9,248,22,142,15,23,197,2,2,35,249,22,161,9, -247,22,173,8,2,35,27,28,248,22,146,7,23,196,2,23,195,2,248,22,158, -8,248,22,145,15,23,197,2,28,249,22,133,16,2,60,23,195,2,86,94,23, -193,1,28,248,22,146,7,23,196,2,248,22,148,15,23,196,1,194,27,248,22, -185,7,23,195,1,249,22,149,15,248,22,161,8,250,22,141,16,2,61,28,249, -22,133,16,2,62,23,201,2,23,199,1,250,22,141,16,2,63,23,202,1,2, -36,80,159,44,37,38,2,35,28,248,22,146,7,23,195,2,248,22,148,15,23, +86,94,28,28,248,22,153,15,23,195,2,10,28,248,22,152,15,23,195,2,10, +28,248,22,147,7,23,195,2,28,248,22,174,15,23,195,2,10,248,22,175,15, +23,195,2,11,12,250,22,135,10,2,33,2,34,23,197,2,28,28,248,22,153, +15,23,195,2,249,22,162,9,248,22,154,15,23,197,2,2,35,249,22,162,9, +247,22,174,8,2,35,27,28,248,22,147,7,23,196,2,23,195,2,248,22,159, +8,248,22,157,15,23,197,2,28,249,22,145,16,2,60,23,195,2,86,94,23, +193,1,28,248,22,147,7,23,196,2,248,22,160,15,23,196,1,194,27,248,22, +186,7,23,195,1,249,22,161,15,248,22,162,8,250,22,153,16,2,61,28,249, +22,145,16,2,62,23,201,2,23,199,1,250,22,153,16,2,63,23,202,1,2, +36,80,159,44,37,38,2,35,28,248,22,147,7,23,195,2,248,22,160,15,23, 195,1,193,0,28,35,114,120,34,94,92,92,92,92,92,92,92,92,91,63,93, -92,92,92,92,85,78,67,92,92,92,92,34,86,95,28,28,28,248,22,140,15, -23,195,2,10,28,248,22,146,7,23,195,2,28,248,22,162,15,23,195,2,10, -248,22,163,15,23,195,2,11,10,248,22,141,15,23,195,2,12,252,22,134,10, -2,5,2,37,36,23,199,2,23,200,2,28,28,28,248,22,140,15,23,196,2, -10,28,248,22,146,7,23,196,2,28,248,22,162,15,23,196,2,10,248,22,163, -15,23,196,2,11,10,248,22,141,15,23,196,2,12,252,22,134,10,2,5,2, -37,37,23,199,2,23,200,2,27,28,248,22,141,15,23,196,2,248,22,142,15, -23,196,2,247,22,143,15,86,95,28,28,248,22,164,15,23,196,2,10,249,22, -161,9,247,22,143,15,23,195,2,12,253,22,136,10,2,5,6,54,54,112,97, +92,92,92,92,85,78,67,92,92,92,92,34,86,95,28,28,28,248,22,152,15, +23,195,2,10,28,248,22,147,7,23,195,2,28,248,22,174,15,23,195,2,10, +248,22,175,15,23,195,2,11,10,248,22,153,15,23,195,2,12,252,22,135,10, +2,5,2,37,36,23,199,2,23,200,2,28,28,28,248,22,152,15,23,196,2, +10,28,248,22,147,7,23,196,2,28,248,22,174,15,23,196,2,10,248,22,175, +15,23,196,2,11,10,248,22,153,15,23,196,2,12,252,22,135,10,2,5,2, +37,37,23,199,2,23,200,2,27,28,248,22,153,15,23,196,2,248,22,154,15, +23,196,2,247,22,155,15,86,95,28,28,248,22,176,15,23,196,2,10,249,22, +162,9,247,22,155,15,23,195,2,12,253,22,137,10,2,5,6,54,54,112,97, 116,104,32,105,115,32,110,111,116,32,99,111,109,112,108,101,116,101,32,97,110, 100,32,110,111,116,32,116,104,101,32,112,108,97,116,102,111,114,109,39,115,32, 99,111,110,118,101,110,116,105,111,110,2,38,23,201,2,6,24,24,112,108,97, 116,102,111,114,109,32,99,111,110,118,101,110,116,105,111,110,32,116,121,112,101, -247,22,143,15,28,249,22,161,9,28,248,22,141,15,23,199,2,248,22,142,15, -23,199,2,247,22,143,15,23,195,2,12,253,22,136,10,2,5,6,37,37,103, +247,22,155,15,28,249,22,162,9,28,248,22,153,15,23,199,2,248,22,154,15, +23,199,2,247,22,155,15,23,195,2,12,253,22,137,10,2,5,6,37,37,103, 105,118,101,110,32,112,97,116,104,115,32,117,115,101,32,100,105,102,102,101,114, 101,110,116,32,99,111,110,118,101,110,116,105,111,110,115,2,38,23,201,2,6, -9,9,114,111,111,116,32,112,97,116,104,23,202,2,27,27,248,22,168,15,28, -248,22,164,15,23,199,2,23,198,1,248,22,165,15,23,199,1,86,94,28,28, -248,22,141,15,23,194,2,10,28,248,22,140,15,23,194,2,10,28,248,22,146, -7,23,194,2,28,248,22,162,15,23,194,2,10,248,22,163,15,23,194,2,11, -12,250,22,134,10,2,33,2,34,23,196,2,28,28,248,22,141,15,23,194,2, -249,22,161,9,248,22,142,15,23,196,2,2,35,249,22,161,9,247,22,173,8, -2,35,27,28,248,22,146,7,23,195,2,23,194,2,248,22,158,8,248,22,145, -15,23,196,2,28,249,22,133,16,2,60,23,195,2,86,94,23,193,1,28,248, -22,146,7,23,195,2,248,22,148,15,23,195,1,193,27,248,22,185,7,23,195, -1,249,22,149,15,248,22,161,8,250,22,141,16,2,61,28,249,22,133,16,2, -62,23,201,2,23,199,1,250,22,141,16,2,63,23,202,1,2,36,80,159,47, -37,38,2,35,28,248,22,146,7,23,194,2,248,22,148,15,23,194,1,192,27, -248,22,145,15,23,195,2,28,249,22,161,9,23,197,2,64,117,110,105,120,28, -249,22,143,8,23,195,1,5,1,47,86,95,23,195,1,23,194,1,28,248,22, -141,15,23,199,2,197,248,22,148,15,23,199,1,249,22,158,15,23,200,1,249, -22,149,15,249,22,146,8,248,22,145,15,23,201,1,37,23,199,1,28,249,22, -161,9,23,197,2,2,35,249,22,158,15,23,200,1,249,22,149,15,28,249,22, -133,16,0,27,35,114,120,34,94,92,92,92,92,92,92,92,92,91,63,93,92, -92,92,92,91,97,45,122,93,58,34,23,199,2,251,22,147,8,2,39,250,22, -146,8,23,204,2,40,41,5,1,92,249,22,146,8,23,203,1,42,28,249,22, -133,16,2,65,23,199,2,249,22,147,8,2,39,249,22,146,8,23,201,1,40, -28,249,22,133,16,2,65,23,199,2,249,22,147,8,2,39,249,22,146,8,23, -201,1,40,28,249,22,133,16,0,14,35,114,120,34,94,92,92,92,92,92,92, -92,92,34,23,199,2,249,22,147,8,5,4,85,78,67,92,249,22,146,8,23, -201,1,38,28,249,22,133,16,0,12,35,114,120,34,94,91,97,45,122,93,58, -34,23,199,2,249,22,147,8,250,22,146,8,23,202,2,36,37,249,22,146,8, +9,9,114,111,111,116,32,112,97,116,104,23,202,2,27,27,248,22,180,15,28, +248,22,176,15,23,199,2,23,198,1,248,22,177,15,23,199,1,86,94,28,28, +248,22,153,15,23,194,2,10,28,248,22,152,15,23,194,2,10,28,248,22,147, +7,23,194,2,28,248,22,174,15,23,194,2,10,248,22,175,15,23,194,2,11, +12,250,22,135,10,2,33,2,34,23,196,2,28,28,248,22,153,15,23,194,2, +249,22,162,9,248,22,154,15,23,196,2,2,35,249,22,162,9,247,22,174,8, +2,35,27,28,248,22,147,7,23,195,2,23,194,2,248,22,159,8,248,22,157, +15,23,196,2,28,249,22,145,16,2,60,23,195,2,86,94,23,193,1,28,248, +22,147,7,23,195,2,248,22,160,15,23,195,1,193,27,248,22,186,7,23,195, +1,249,22,161,15,248,22,162,8,250,22,153,16,2,61,28,249,22,145,16,2, +62,23,201,2,23,199,1,250,22,153,16,2,63,23,202,1,2,36,80,159,47, +37,38,2,35,28,248,22,147,7,23,194,2,248,22,160,15,23,194,1,192,27, +248,22,157,15,23,195,2,28,249,22,162,9,23,197,2,64,117,110,105,120,28, +249,22,144,8,23,195,1,5,1,47,86,95,23,195,1,23,194,1,28,248,22, +153,15,23,199,2,197,248,22,160,15,23,199,1,249,22,170,15,23,200,1,249, +22,161,15,249,22,147,8,248,22,157,15,23,201,1,37,23,199,1,28,249,22, +162,9,23,197,2,2,35,249,22,170,15,23,200,1,249,22,161,15,28,249,22, +145,16,0,27,35,114,120,34,94,92,92,92,92,92,92,92,92,91,63,93,92, +92,92,92,91,97,45,122,93,58,34,23,199,2,251,22,148,8,2,39,250,22, +147,8,23,204,2,40,41,5,1,92,249,22,147,8,23,203,1,42,28,249,22, +145,16,2,65,23,199,2,249,22,148,8,2,39,249,22,147,8,23,201,1,40, +28,249,22,145,16,2,65,23,199,2,249,22,148,8,2,39,249,22,147,8,23, +201,1,40,28,249,22,145,16,0,14,35,114,120,34,94,92,92,92,92,92,92, +92,92,34,23,199,2,249,22,148,8,5,4,85,78,67,92,249,22,147,8,23, +201,1,38,28,249,22,145,16,0,12,35,114,120,34,94,91,97,45,122,93,58, +34,23,199,2,249,22,148,8,250,22,147,8,23,202,2,36,37,249,22,147,8, 23,201,1,38,86,94,23,197,1,12,23,199,1,12,32,67,88,163,8,36,39, 53,11,70,102,111,117,110,100,45,101,120,101,99,222,33,70,32,68,88,163,8, -36,40,58,11,64,110,101,120,116,222,33,69,27,248,22,166,15,23,196,2,28, -249,22,163,9,23,195,2,23,197,1,11,28,248,22,162,15,23,194,2,27,249, -22,158,15,23,197,1,23,196,1,28,23,197,2,90,159,39,11,89,161,39,36, -11,248,22,161,15,23,197,2,86,95,23,195,1,23,194,1,27,28,23,202,2, -27,248,22,166,15,23,199,2,28,249,22,163,9,23,195,2,23,200,2,11,28, -248,22,162,15,23,194,2,250,2,67,23,205,2,23,206,2,249,22,158,15,23, +36,40,58,11,64,110,101,120,116,222,33,69,27,248,22,178,15,23,196,2,28, +249,22,164,9,23,195,2,23,197,1,11,28,248,22,174,15,23,194,2,27,249, +22,170,15,23,197,1,23,196,1,28,23,197,2,90,159,39,11,89,161,39,36, +11,248,22,173,15,23,197,2,86,95,23,195,1,23,194,1,27,28,23,202,2, +27,248,22,178,15,23,199,2,28,249,22,164,9,23,195,2,23,200,2,11,28, +248,22,174,15,23,194,2,250,2,67,23,205,2,23,206,2,249,22,170,15,23, 200,2,23,198,1,250,2,67,23,205,2,23,206,2,23,196,1,11,28,23,193, -2,192,86,94,23,193,1,27,28,248,22,140,15,23,196,2,27,249,22,158,15, -23,198,2,23,205,2,28,28,248,22,153,15,193,10,248,22,152,15,193,192,11, -11,28,23,193,2,192,86,94,23,193,1,28,23,203,2,11,27,248,22,166,15, -23,200,2,28,249,22,163,9,23,195,2,23,201,1,11,28,248,22,162,15,23, -194,2,250,2,67,23,206,1,23,207,1,249,22,158,15,23,201,1,23,198,1, +2,192,86,94,23,193,1,27,28,248,22,152,15,23,196,2,27,249,22,170,15, +23,198,2,23,205,2,28,28,248,22,165,15,193,10,248,22,164,15,193,192,11, +11,28,23,193,2,192,86,94,23,193,1,28,23,203,2,11,27,248,22,178,15, +23,200,2,28,249,22,164,9,23,195,2,23,201,1,11,28,248,22,174,15,23, +194,2,250,2,67,23,206,1,23,207,1,249,22,170,15,23,201,1,23,198,1, 86,94,23,196,1,250,2,67,23,206,1,23,207,1,23,196,1,192,86,94,23, -194,1,28,23,196,2,90,159,39,11,89,161,39,36,11,248,22,161,15,23,197, -2,86,95,23,195,1,23,194,1,27,28,23,201,2,27,248,22,166,15,23,199, -2,28,249,22,163,9,23,195,2,23,200,2,11,28,248,22,162,15,23,194,2, -250,2,67,23,204,2,23,205,2,249,22,158,15,23,200,2,23,198,1,250,2, +194,1,28,23,196,2,90,159,39,11,89,161,39,36,11,248,22,173,15,23,197, +2,86,95,23,195,1,23,194,1,27,28,23,201,2,27,248,22,178,15,23,199, +2,28,249,22,164,9,23,195,2,23,200,2,11,28,248,22,174,15,23,194,2, +250,2,67,23,204,2,23,205,2,249,22,170,15,23,200,2,23,198,1,250,2, 67,23,204,2,23,205,2,23,196,1,11,28,23,193,2,192,86,94,23,193,1, -27,28,248,22,140,15,23,196,2,27,249,22,158,15,23,198,2,23,204,2,28, -28,248,22,153,15,193,10,248,22,152,15,193,192,11,11,28,23,193,2,192,86, -94,23,193,1,28,23,202,2,11,27,248,22,166,15,23,200,2,28,249,22,163, -9,23,195,2,23,201,1,11,28,248,22,162,15,23,194,2,250,2,67,23,205, -1,23,206,1,249,22,158,15,23,201,1,23,198,1,86,94,23,196,1,250,2, +27,28,248,22,152,15,23,196,2,27,249,22,170,15,23,198,2,23,204,2,28, +28,248,22,165,15,193,10,248,22,164,15,193,192,11,11,28,23,193,2,192,86, +94,23,193,1,28,23,202,2,11,27,248,22,178,15,23,200,2,28,249,22,164, +9,23,195,2,23,201,1,11,28,248,22,174,15,23,194,2,250,2,67,23,205, +1,23,206,1,249,22,170,15,23,201,1,23,198,1,86,94,23,196,1,250,2, 67,23,205,1,23,206,1,23,196,1,192,28,23,193,2,90,159,39,11,89,161, -39,36,11,248,22,161,15,23,199,2,86,95,23,195,1,23,194,1,27,28,23, +39,36,11,248,22,173,15,23,199,2,86,95,23,195,1,23,194,1,27,28,23, 198,2,251,2,68,23,198,2,23,203,2,23,201,2,23,202,2,11,28,23,193, -2,192,86,94,23,193,1,27,28,248,22,140,15,23,196,2,27,249,22,158,15, -23,198,2,23,201,2,28,28,248,22,153,15,193,10,248,22,152,15,193,192,11, +2,192,86,94,23,193,1,27,28,248,22,152,15,23,196,2,27,249,22,170,15, +23,198,2,23,201,2,28,28,248,22,165,15,193,10,248,22,164,15,193,192,11, 11,28,23,193,2,192,86,94,23,193,1,28,23,199,2,11,251,2,68,23,199, 1,23,204,1,23,202,1,23,203,1,194,32,71,88,163,8,36,40,58,11,2, -42,222,33,72,28,248,22,87,23,197,2,11,27,248,22,165,15,248,22,80,23, -199,2,27,249,22,158,15,23,196,1,23,197,2,28,248,22,152,15,23,194,2, +42,222,33,72,28,248,22,87,23,197,2,11,27,248,22,177,15,248,22,80,23, +199,2,27,249,22,170,15,23,196,1,23,197,2,28,248,22,164,15,23,194,2, 86,95,23,198,1,23,195,1,250,2,67,23,199,1,23,200,1,23,196,1,86, 94,23,193,1,27,248,22,81,23,200,1,28,248,22,87,23,194,2,11,27,248, -22,165,15,248,22,80,23,196,2,27,249,22,158,15,23,196,1,23,200,2,28, -248,22,152,15,23,194,2,86,95,23,198,1,23,195,1,250,2,67,23,202,1, +22,177,15,248,22,80,23,196,2,27,249,22,170,15,23,196,1,23,200,2,28, +248,22,164,15,23,194,2,86,95,23,198,1,23,195,1,250,2,67,23,202,1, 23,203,1,23,196,1,86,94,23,193,1,27,248,22,81,23,197,1,28,248,22, -87,23,194,2,11,27,248,22,165,15,248,22,80,23,196,2,27,249,22,158,15, -23,196,1,23,203,2,28,248,22,152,15,23,194,2,86,95,23,201,1,23,195, +87,23,194,2,11,27,248,22,177,15,248,22,80,23,196,2,27,249,22,170,15, +23,196,1,23,203,2,28,248,22,164,15,23,194,2,86,95,23,201,1,23,195, 1,250,2,67,23,205,1,23,206,1,23,196,1,86,94,23,193,1,251,2,71, 23,205,1,23,206,1,23,207,1,248,22,81,23,200,1,86,95,28,28,248,22, -140,15,23,195,2,10,28,248,22,146,7,23,195,2,28,248,22,162,15,23,195, -2,10,248,22,163,15,23,195,2,11,12,250,22,134,10,2,6,2,40,23,197, -2,28,28,23,195,2,28,28,248,22,140,15,23,196,2,10,28,248,22,146,7, -23,196,2,28,248,22,162,15,23,196,2,10,248,22,163,15,23,196,2,11,248, -22,162,15,23,196,2,11,10,12,250,22,134,10,2,6,6,45,45,40,111,114, +152,15,23,195,2,10,28,248,22,147,7,23,195,2,28,248,22,174,15,23,195, +2,10,248,22,175,15,23,195,2,11,12,250,22,135,10,2,6,2,40,23,197, +2,28,28,23,195,2,28,28,248,22,152,15,23,196,2,10,28,248,22,147,7, +23,196,2,28,248,22,174,15,23,196,2,10,248,22,175,15,23,196,2,11,248, +22,174,15,23,196,2,11,10,12,250,22,135,10,2,6,6,45,45,40,111,114, 47,99,32,35,102,32,40,97,110,100,47,99,32,112,97,116,104,45,115,116,114, 105,110,103,63,32,114,101,108,97,116,105,118,101,45,112,97,116,104,63,41,41, -23,198,2,28,28,248,22,162,15,23,195,2,90,159,39,11,89,161,39,36,11, -248,22,161,15,23,198,2,249,22,161,9,194,2,41,11,27,249,22,168,8,247, -22,167,8,5,4,80,65,84,72,27,28,23,194,2,249,80,158,40,41,249,22, -158,8,23,198,1,7,63,9,86,94,23,194,1,9,27,28,249,22,161,9,247, -22,173,8,2,35,249,22,79,248,22,149,15,5,1,46,23,196,1,23,194,1, -28,248,22,87,23,194,2,11,27,248,22,165,15,248,22,80,23,196,2,27,249, -22,158,15,23,196,1,23,201,2,28,248,22,152,15,23,194,2,86,95,23,199, +23,198,2,28,28,248,22,174,15,23,195,2,90,159,39,11,89,161,39,36,11, +248,22,173,15,23,198,2,249,22,162,9,194,2,41,11,27,249,22,169,8,247, +22,168,8,5,4,80,65,84,72,27,28,23,194,2,249,80,158,40,41,249,22, +159,8,23,198,1,7,63,9,86,94,23,194,1,9,27,28,249,22,162,9,247, +22,174,8,2,35,249,22,79,248,22,161,15,5,1,46,23,196,1,23,194,1, +28,248,22,87,23,194,2,11,27,248,22,177,15,248,22,80,23,196,2,27,249, +22,170,15,23,196,1,23,201,2,28,248,22,164,15,23,194,2,86,95,23,199, 1,23,195,1,250,2,67,23,203,1,23,204,1,23,196,1,86,94,23,193,1, -27,248,22,81,23,197,1,28,248,22,87,23,194,2,11,27,248,22,165,15,248, -22,80,23,196,2,27,249,22,158,15,23,196,1,23,204,2,28,248,22,152,15, +27,248,22,81,23,197,1,28,248,22,87,23,194,2,11,27,248,22,177,15,248, +22,80,23,196,2,27,249,22,170,15,23,196,1,23,204,2,28,248,22,164,15, 23,194,2,86,95,23,202,1,23,195,1,250,2,67,23,206,1,23,207,1,23, 196,1,86,94,23,193,1,27,248,22,81,23,197,1,28,248,22,87,23,194,2, -11,27,248,22,165,15,248,22,80,23,196,2,27,249,22,158,15,23,196,1,23, -207,2,28,248,22,152,15,23,194,2,86,95,23,205,1,23,195,1,250,2,67, +11,27,248,22,177,15,248,22,80,23,196,2,27,249,22,170,15,23,196,1,23, +207,2,28,248,22,164,15,23,194,2,86,95,23,205,1,23,195,1,250,2,67, 23,209,1,23,210,1,23,196,1,86,94,23,193,1,251,2,71,23,209,1,23, -210,1,23,211,1,248,22,81,23,200,1,27,248,22,165,15,23,196,1,28,248, -22,152,15,23,194,2,250,2,67,23,199,1,23,200,1,23,196,1,11,250,80, +210,1,23,211,1,248,22,81,23,200,1,27,248,22,177,15,23,196,1,28,248, +22,164,15,23,194,2,250,2,67,23,199,1,23,200,1,23,196,1,11,250,80, 159,39,40,39,196,197,11,250,80,159,39,40,39,196,11,11,32,76,88,163,8, 36,39,57,11,2,42,222,33,78,0,8,35,114,120,35,34,92,34,34,27,249, -22,129,16,23,197,2,23,198,2,28,23,193,2,86,94,23,196,1,27,248,22, -104,23,195,2,27,27,248,22,113,23,197,1,27,249,22,129,16,23,201,2,23, +22,141,16,23,197,2,23,198,2,28,23,193,2,86,94,23,196,1,27,248,22, +104,23,195,2,27,27,248,22,113,23,197,1,27,249,22,141,16,23,201,2,23, 196,2,28,23,193,2,86,94,23,194,1,27,248,22,104,23,195,2,27,250,2, -76,23,203,2,23,204,1,248,22,113,23,199,1,28,249,22,143,8,23,196,2, -2,43,249,22,93,23,202,2,194,249,22,79,248,22,149,15,28,249,22,161,9, -247,22,173,8,2,35,250,22,141,16,2,77,23,200,1,2,43,23,197,1,194, -86,95,23,199,1,23,193,1,28,249,22,143,8,23,196,2,2,43,249,22,93, -23,200,2,9,249,22,79,248,22,149,15,28,249,22,161,9,247,22,173,8,2, -35,250,22,141,16,2,77,23,200,1,2,43,23,197,1,9,28,249,22,143,8, -23,196,2,2,43,249,22,93,197,194,86,94,23,196,1,249,22,79,248,22,149, -15,28,249,22,161,9,247,22,173,8,2,35,250,22,141,16,2,77,23,200,1, -2,43,23,197,1,194,86,94,23,193,1,28,249,22,143,8,23,198,2,2,43, -249,22,93,195,9,86,94,23,194,1,249,22,79,248,22,149,15,28,249,22,161, -9,247,22,173,8,2,35,250,22,141,16,2,77,23,202,1,2,43,23,199,1, -9,86,95,28,28,248,22,135,8,23,195,2,10,248,22,146,7,23,195,2,12, -250,22,134,10,2,7,6,21,21,40,111,114,47,99,32,98,121,116,101,115,63, +76,23,203,2,23,204,1,248,22,113,23,199,1,28,249,22,144,8,23,196,2, +2,43,249,22,93,23,202,2,194,249,22,79,248,22,161,15,28,249,22,162,9, +247,22,174,8,2,35,250,22,153,16,2,77,23,200,1,2,43,23,197,1,194, +86,95,23,199,1,23,193,1,28,249,22,144,8,23,196,2,2,43,249,22,93, +23,200,2,9,249,22,79,248,22,161,15,28,249,22,162,9,247,22,174,8,2, +35,250,22,153,16,2,77,23,200,1,2,43,23,197,1,9,28,249,22,144,8, +23,196,2,2,43,249,22,93,197,194,86,94,23,196,1,249,22,79,248,22,161, +15,28,249,22,162,9,247,22,174,8,2,35,250,22,153,16,2,77,23,200,1, +2,43,23,197,1,194,86,94,23,193,1,28,249,22,144,8,23,198,2,2,43, +249,22,93,195,9,86,94,23,194,1,249,22,79,248,22,161,15,28,249,22,162, +9,247,22,174,8,2,35,250,22,153,16,2,77,23,202,1,2,43,23,199,1, +9,86,95,28,28,248,22,136,8,23,195,2,10,248,22,147,7,23,195,2,12, +250,22,135,10,2,7,6,21,21,40,111,114,47,99,32,98,121,116,101,115,63, 32,115,116,114,105,110,103,63,41,23,197,2,28,28,248,22,88,23,196,2,249, -22,4,22,140,15,23,197,2,11,12,250,22,134,10,2,7,6,14,14,40,108, +22,4,22,152,15,23,197,2,11,12,250,22,135,10,2,7,6,14,14,40,108, 105,115,116,111,102,32,112,97,116,104,63,41,23,198,2,250,2,76,23,198,1, -23,196,1,28,248,22,146,7,23,198,2,248,22,160,8,23,198,1,23,197,1, -86,94,28,28,248,22,140,15,23,195,2,10,28,248,22,146,7,23,195,2,28, -248,22,162,15,23,195,2,10,248,22,163,15,23,195,2,11,12,250,22,134,10, -23,196,2,2,40,23,197,2,28,248,22,162,15,23,195,2,12,251,22,136,10, -23,197,1,2,44,2,38,23,198,1,86,94,28,28,248,22,140,15,23,195,2, -10,28,248,22,146,7,23,195,2,28,248,22,162,15,23,195,2,10,248,22,163, -15,23,195,2,11,12,250,22,134,10,23,196,2,2,40,23,197,2,28,248,22, -162,15,23,195,2,12,251,22,136,10,23,197,1,2,44,2,38,23,198,1,86, -94,86,94,28,28,248,22,140,15,23,195,2,10,28,248,22,146,7,23,195,2, -28,248,22,162,15,23,195,2,10,248,22,163,15,23,195,2,11,12,250,22,134, -10,23,196,2,2,40,23,197,2,28,248,22,162,15,23,195,2,86,94,23,194, -1,12,251,22,136,10,23,197,2,2,44,2,38,23,198,1,249,22,3,20,20, +23,196,1,28,248,22,147,7,23,198,2,248,22,161,8,23,198,1,23,197,1, +86,94,28,28,248,22,152,15,23,195,2,10,28,248,22,147,7,23,195,2,28, +248,22,174,15,23,195,2,10,248,22,175,15,23,195,2,11,12,250,22,135,10, +23,196,2,2,40,23,197,2,28,248,22,174,15,23,195,2,12,251,22,137,10, +23,197,1,2,44,2,38,23,198,1,86,94,28,28,248,22,152,15,23,195,2, +10,28,248,22,147,7,23,195,2,28,248,22,174,15,23,195,2,10,248,22,175, +15,23,195,2,11,12,250,22,135,10,23,196,2,2,40,23,197,2,28,248,22, +174,15,23,195,2,12,251,22,137,10,23,197,1,2,44,2,38,23,198,1,86, +94,86,94,28,28,248,22,152,15,23,195,2,10,28,248,22,147,7,23,195,2, +28,248,22,174,15,23,195,2,10,248,22,175,15,23,195,2,11,12,250,22,135, +10,23,196,2,2,40,23,197,2,28,248,22,174,15,23,195,2,86,94,23,194, +1,12,251,22,137,10,23,197,2,2,44,2,38,23,198,1,249,22,3,20,20, 94,88,163,8,36,37,47,11,9,223,2,33,81,23,195,1,23,197,1,28,28, -248,22,0,23,195,2,249,22,50,23,196,2,37,11,12,250,22,134,10,23,196, -1,2,45,23,197,1,86,94,28,28,248,22,140,15,23,194,2,10,28,248,22, -146,7,23,194,2,28,248,22,162,15,23,194,2,10,248,22,163,15,23,194,2, -11,12,250,22,134,10,2,11,2,40,23,196,2,28,248,22,162,15,23,194,2, -12,251,22,136,10,2,11,2,44,2,38,23,197,1,86,95,86,94,86,94,28, -28,248,22,140,15,23,196,2,10,28,248,22,146,7,23,196,2,28,248,22,162, -15,23,196,2,10,248,22,163,15,23,196,2,11,12,250,22,134,10,2,11,2, -40,23,198,2,28,248,22,162,15,23,196,2,12,251,22,136,10,2,11,2,44, +248,22,0,23,195,2,249,22,50,23,196,2,37,11,12,250,22,135,10,23,196, +1,2,45,23,197,1,86,94,28,28,248,22,152,15,23,194,2,10,28,248,22, +147,7,23,194,2,28,248,22,174,15,23,194,2,10,248,22,175,15,23,194,2, +11,12,250,22,135,10,2,11,2,40,23,196,2,28,248,22,174,15,23,194,2, +12,251,22,137,10,2,11,2,44,2,38,23,197,1,86,95,86,94,86,94,28, +28,248,22,152,15,23,196,2,10,28,248,22,147,7,23,196,2,28,248,22,174, +15,23,196,2,10,248,22,175,15,23,196,2,11,12,250,22,135,10,2,11,2, +40,23,198,2,28,248,22,174,15,23,196,2,12,251,22,137,10,2,11,2,44, 2,38,23,199,2,249,22,3,32,0,88,163,8,36,37,46,11,9,222,33,84, 23,198,2,28,28,248,22,0,23,195,2,249,22,50,23,196,2,37,11,12,250, -22,134,10,2,11,2,45,23,197,2,251,80,158,40,46,23,198,1,23,199,1, -23,200,1,11,86,94,28,28,248,22,140,15,23,194,2,10,28,248,22,146,7, -23,194,2,28,248,22,162,15,23,194,2,10,248,22,163,15,23,194,2,11,12, -250,22,134,10,2,13,2,40,23,196,2,28,248,22,162,15,23,194,2,12,251, -22,136,10,2,13,2,44,2,38,23,197,1,86,96,86,94,28,28,248,22,140, -15,23,196,2,10,28,248,22,146,7,23,196,2,28,248,22,162,15,23,196,2, -10,248,22,163,15,23,196,2,11,12,250,22,134,10,2,13,2,40,23,198,2, -28,248,22,162,15,23,196,2,12,251,22,136,10,2,13,2,44,2,38,23,199, -2,86,94,86,94,28,28,248,22,140,15,23,197,2,10,28,248,22,146,7,23, -197,2,28,248,22,162,15,23,197,2,10,248,22,163,15,23,197,2,11,12,250, -22,134,10,2,13,2,40,23,199,2,28,248,22,162,15,23,197,2,12,251,22, -136,10,2,13,2,44,2,38,23,200,2,249,22,3,32,0,88,163,8,36,37, +22,135,10,2,11,2,45,23,197,2,251,80,158,40,46,23,198,1,23,199,1, +23,200,1,11,86,94,28,28,248,22,152,15,23,194,2,10,28,248,22,147,7, +23,194,2,28,248,22,174,15,23,194,2,10,248,22,175,15,23,194,2,11,12, +250,22,135,10,2,13,2,40,23,196,2,28,248,22,174,15,23,194,2,12,251, +22,137,10,2,13,2,44,2,38,23,197,1,86,96,86,94,28,28,248,22,152, +15,23,196,2,10,28,248,22,147,7,23,196,2,28,248,22,174,15,23,196,2, +10,248,22,175,15,23,196,2,11,12,250,22,135,10,2,13,2,40,23,198,2, +28,248,22,174,15,23,196,2,12,251,22,137,10,2,13,2,44,2,38,23,199, +2,86,94,86,94,28,28,248,22,152,15,23,197,2,10,28,248,22,147,7,23, +197,2,28,248,22,174,15,23,197,2,10,248,22,175,15,23,197,2,11,12,250, +22,135,10,2,13,2,40,23,199,2,28,248,22,174,15,23,197,2,12,251,22, +137,10,2,13,2,44,2,38,23,200,2,249,22,3,32,0,88,163,8,36,37, 46,11,9,222,33,86,23,199,2,28,28,248,22,0,23,195,2,249,22,50,23, -196,2,37,11,12,250,22,134,10,2,13,2,45,23,197,2,251,80,158,40,46, +196,2,37,11,12,250,22,135,10,2,13,2,45,23,197,2,251,80,158,40,46, 23,198,1,23,200,1,23,201,1,23,199,1,0,6,45,105,110,102,46,48,27, -248,22,180,15,2,46,27,28,248,22,163,15,23,195,2,23,194,1,20,13,159, +248,22,128,16,2,46,27,28,248,22,175,15,23,195,2,23,194,1,20,13,159, 80,159,38,53,37,250,80,159,41,54,37,249,22,33,11,80,159,43,53,37,22, -181,15,248,22,180,15,68,111,114,105,103,45,100,105,114,27,248,22,180,15,2, -47,250,80,159,42,40,39,23,196,1,23,198,1,11,28,23,193,2,250,22,158, +129,16,248,22,128,16,68,111,114,105,103,45,100,105,114,27,248,22,128,16,2, +47,250,80,159,42,40,39,23,196,1,23,198,1,11,28,23,193,2,250,22,170, 15,23,196,1,6,6,6,99,111,110,102,105,103,6,10,10,108,105,110,107,115, -46,114,107,116,100,11,86,94,28,248,22,133,12,23,197,2,27,247,22,157,10, -28,249,22,149,10,23,195,2,2,48,251,22,153,10,23,197,1,2,48,250,22, -130,8,2,49,28,23,202,1,80,159,46,48,38,80,159,46,51,38,248,22,129, -12,23,205,2,247,22,29,12,12,28,248,22,133,12,23,197,2,86,94,23,196, -1,248,23,194,1,247,22,140,2,195,2,88,86,95,28,248,22,133,12,23,198, -2,27,247,22,157,10,28,249,22,149,10,23,195,2,2,48,251,22,153,10,23, -197,1,2,48,250,22,130,8,2,49,28,23,203,2,80,159,47,48,38,80,159, -47,51,38,248,22,129,12,23,206,2,247,22,29,12,12,28,23,193,2,28,23, +46,114,107,116,100,11,86,94,28,248,22,137,12,23,197,2,27,247,22,158,10, +28,249,22,150,10,23,195,2,2,48,251,22,154,10,23,197,1,2,48,250,22, +131,8,2,49,28,23,202,1,80,159,46,48,38,80,159,46,51,38,248,22,133, +12,23,205,2,247,22,29,12,12,28,248,22,137,12,23,197,2,86,94,23,196, +1,248,23,194,1,247,22,140,2,195,2,88,86,95,28,248,22,137,12,23,198, +2,27,247,22,158,10,28,249,22,150,10,23,195,2,2,48,251,22,154,10,23, +197,1,2,48,250,22,131,8,2,49,28,23,203,2,80,159,47,48,38,80,159, +47,51,38,248,22,133,12,23,206,2,247,22,29,12,12,28,23,193,2,28,23, 195,1,86,94,20,18,159,11,80,158,39,49,247,22,140,2,20,18,159,11,80, 158,39,50,23,193,1,86,94,20,18,159,11,80,158,39,55,247,22,140,2,20, -18,159,11,80,158,39,56,23,193,1,86,94,23,195,1,12,28,248,22,133,12, +18,159,11,80,158,39,56,23,193,1,86,94,23,195,1,12,28,248,22,137,12, 23,198,2,86,94,23,197,1,248,23,195,1,247,22,140,2,196,20,20,94,248, -22,141,6,23,194,2,28,248,22,141,7,248,22,141,6,23,195,1,12,248,22, -130,10,6,30,30,101,120,112,101,99,116,101,100,32,97,32,115,105,110,103,108, -101,32,83,45,101,120,112,114,101,115,115,105,111,110,248,22,129,6,23,194,1, +22,142,6,23,194,2,28,248,22,142,7,248,22,142,6,23,195,1,12,248,22, +131,10,6,30,30,101,120,112,101,99,116,101,100,32,97,32,115,105,110,103,108, +101,32,83,45,101,120,112,114,101,115,115,105,111,110,248,22,130,6,23,194,1, 28,248,22,88,23,194,2,28,28,249,22,128,4,38,248,22,92,23,196,2,10, -249,22,128,4,39,248,22,92,23,196,2,28,28,248,22,146,7,248,22,80,23, -195,2,10,249,22,161,9,64,114,111,111,116,248,22,184,17,23,196,2,28,27, -248,22,104,194,28,248,22,140,15,23,194,2,10,28,248,22,146,7,23,194,2, -28,248,22,162,15,23,194,2,10,248,22,163,15,23,194,1,11,27,248,22,87, -248,22,106,195,28,192,192,248,22,142,16,248,22,113,195,11,11,11,11,250,22, +249,22,128,4,39,248,22,92,23,196,2,28,28,248,22,147,7,248,22,80,23, +195,2,10,249,22,162,9,64,114,111,111,116,248,22,132,18,23,196,2,28,27, +248,22,104,194,28,248,22,152,15,23,194,2,10,28,248,22,147,7,23,194,2, +28,248,22,174,15,23,194,2,10,248,22,175,15,23,194,1,11,27,248,22,87, +248,22,106,195,28,192,192,248,22,154,16,248,22,113,195,11,11,11,11,250,22, 158,2,23,197,1,23,198,1,249,22,79,23,198,1,23,201,1,28,28,248,22, -87,248,22,106,23,197,2,10,249,22,133,16,248,22,113,23,198,2,247,22,164, -8,27,248,22,167,15,249,22,165,15,248,22,104,23,200,2,23,198,1,28,248, +87,248,22,106,23,197,2,10,249,22,145,16,248,22,113,23,198,2,247,22,165, +8,27,248,22,179,15,249,22,177,15,248,22,104,23,200,2,23,198,1,28,248, 22,64,248,22,80,23,198,2,86,94,23,196,1,86,94,28,250,22,160,2,23, 197,2,11,11,12,250,22,158,2,23,197,2,11,9,249,22,164,2,23,196,2, 20,20,95,88,163,8,36,38,50,11,9,224,3,2,33,96,23,195,1,23,196, -1,27,248,22,67,248,22,184,17,23,199,1,250,22,158,2,23,198,2,23,196, +1,27,248,22,67,248,22,132,18,23,199,1,250,22,158,2,23,198,2,23,196, 2,249,22,79,248,22,131,2,23,200,1,250,22,160,2,23,203,1,23,201,1, 9,12,250,22,158,2,23,196,1,23,197,1,248,22,94,23,199,1,20,13,159, 80,159,37,58,37,88,163,36,37,54,8,240,0,144,0,0,9,225,1,0,2, -33,90,27,250,22,175,15,28,23,197,2,80,159,41,48,38,80,159,41,51,38, +33,90,27,250,22,187,15,28,23,197,2,80,159,41,48,38,80,159,41,51,38, 11,32,0,88,163,8,36,36,41,11,9,222,33,91,28,249,22,130,4,23,195, 2,28,23,196,2,80,158,40,50,80,158,40,56,20,13,159,80,159,38,58,37, 20,20,94,88,163,36,37,55,8,240,0,240,24,0,9,226,2,1,3,0,33, 92,23,196,1,20,13,159,80,159,38,53,37,26,29,80,159,8,31,54,37,249, -22,33,11,80,159,8,33,53,37,22,174,14,10,22,175,14,10,22,176,14,10, -22,179,14,10,22,178,14,10,22,180,14,10,22,177,14,10,22,181,14,10,22, -182,14,10,22,183,14,10,22,184,14,10,22,185,14,10,22,186,14,11,22,172, -14,11,27,249,22,184,5,28,196,80,159,41,48,38,80,159,41,51,38,66,98, +22,33,11,80,159,8,33,53,37,22,186,14,10,22,187,14,10,22,188,14,10, +22,191,14,10,22,190,14,10,22,128,15,10,22,189,14,10,22,129,15,10,22, +130,15,10,22,131,15,10,22,132,15,10,22,133,15,10,22,134,15,11,22,184, +14,11,27,249,22,185,5,28,196,80,159,41,48,38,80,159,41,51,38,66,98, 105,110,97,114,121,27,250,22,46,22,37,88,163,8,36,36,44,11,9,223,4, 33,93,20,20,94,88,163,36,36,43,11,9,223,4,33,94,23,197,1,86,94, 28,28,248,22,88,23,194,2,249,22,4,32,0,88,163,8,36,37,45,11,9, -222,33,95,23,195,2,11,12,248,22,130,10,6,18,18,105,108,108,45,102,111, +222,33,95,23,195,2,11,12,248,22,131,10,6,18,18,105,108,108,45,102,111, 114,109,101,100,32,99,111,110,116,101,110,116,27,247,22,140,2,27,90,159,39, -11,89,161,39,36,11,248,22,161,15,28,201,80,159,46,48,38,80,159,46,51, +11,89,161,39,36,11,248,22,173,15,28,201,80,159,46,48,38,80,159,46,51, 38,192,86,96,249,22,3,20,20,94,88,163,8,36,37,54,11,9,224,2,3, 33,97,23,195,1,23,197,1,249,22,164,2,195,88,163,8,36,38,48,11,9, 223,3,33,98,28,197,86,94,20,18,159,11,80,158,42,49,193,20,18,159,11, 80,158,42,50,196,86,94,20,18,159,11,80,158,42,55,193,20,18,159,11,80, 158,42,56,196,193,28,193,80,158,38,49,80,158,38,55,248,22,8,20,20,94, 88,163,8,32,37,8,40,8,240,0,240,94,0,9,224,1,2,33,99,23,195, -1,0,7,35,114,120,34,47,43,34,28,248,22,146,7,23,195,2,27,249,22, -131,16,2,101,23,197,2,28,23,193,2,28,249,22,128,4,248,22,103,23,196, -2,248,22,182,3,248,22,149,7,23,199,2,249,22,7,250,22,168,7,23,200, -1,36,248,22,103,23,199,1,23,198,1,249,22,7,250,22,168,7,23,200,2, -36,248,22,103,23,199,2,249,22,79,249,22,168,7,23,201,1,248,22,105,23, +1,0,7,35,114,120,34,47,43,34,28,248,22,147,7,23,195,2,27,249,22, +143,16,2,101,23,197,2,28,23,193,2,28,249,22,128,4,248,22,103,23,196, +2,248,22,182,3,248,22,150,7,23,199,2,249,22,7,250,22,169,7,23,200, +1,36,248,22,103,23,199,1,23,198,1,249,22,7,250,22,169,7,23,200,2, +36,248,22,103,23,199,2,249,22,79,249,22,169,7,23,201,1,248,22,105,23, 200,1,23,200,1,249,22,7,23,197,1,23,198,1,90,159,39,11,89,161,39, -36,11,248,22,161,15,23,198,1,86,94,23,195,1,28,249,22,161,9,23,195, +36,11,248,22,173,15,23,198,1,86,94,23,195,1,28,249,22,162,9,23,195, 2,2,41,86,94,23,193,1,249,22,7,23,196,1,23,200,1,27,249,22,79, -23,197,1,23,201,1,28,248,22,146,7,23,195,2,27,249,22,131,16,2,101, +23,197,1,23,201,1,28,248,22,147,7,23,195,2,27,249,22,143,16,2,101, 23,197,2,28,23,193,2,28,249,22,128,4,248,22,103,23,196,2,248,22,182, -3,248,22,149,7,23,199,2,249,22,7,250,22,168,7,23,200,1,36,248,22, -103,23,199,1,23,196,1,249,22,7,250,22,168,7,23,200,2,36,248,22,103, -23,199,2,249,22,79,249,22,168,7,23,201,1,248,22,105,23,200,1,23,198, +3,248,22,150,7,23,199,2,249,22,7,250,22,169,7,23,200,1,36,248,22, +103,23,199,1,23,196,1,249,22,7,250,22,169,7,23,200,2,36,248,22,103, +23,199,2,249,22,79,249,22,169,7,23,201,1,248,22,105,23,200,1,23,198, 1,249,22,7,23,197,1,23,196,1,90,159,39,11,89,161,39,36,11,248,22, -161,15,23,198,1,86,94,23,195,1,28,249,22,161,9,23,195,2,2,41,86, +173,15,23,198,1,86,94,23,195,1,28,249,22,162,9,23,195,2,2,41,86, 94,23,193,1,249,22,7,23,196,1,23,198,1,249,80,159,45,59,39,194,249, 22,79,197,199,32,103,88,163,36,43,8,27,11,65,99,108,111,111,112,222,33, 112,32,104,88,163,8,36,37,47,11,2,42,222,33,107,32,105,88,163,36,37, -43,11,69,116,111,45,115,116,114,105,110,103,222,33,106,28,248,22,140,15,23, -194,2,248,22,144,15,23,194,1,192,28,248,22,87,248,22,81,23,195,2,248, -22,89,248,2,105,248,22,184,17,23,196,1,250,22,90,248,2,105,248,22,184, -17,23,198,2,2,51,248,2,104,248,22,185,17,23,198,1,249,22,130,8,2, +43,11,69,116,111,45,115,116,114,105,110,103,222,33,106,28,248,22,152,15,23, +194,2,248,22,156,15,23,194,1,192,28,248,22,87,248,22,81,23,195,2,248, +22,89,248,2,105,248,22,132,18,23,196,1,250,22,90,248,2,105,248,22,132, +18,23,198,2,2,51,248,2,104,248,22,133,18,23,198,1,249,22,131,8,2, 52,23,195,1,32,109,88,163,36,38,48,11,66,102,105,108,116,101,114,222,33, 110,28,248,22,87,23,195,2,9,28,248,23,194,2,248,22,80,23,196,2,249, -22,79,248,22,184,17,23,197,2,249,2,109,23,197,1,248,22,185,17,23,199, -1,249,2,109,23,195,1,248,22,185,17,23,197,1,249,22,130,8,2,52,248, +22,79,248,22,132,18,23,197,2,249,2,109,23,197,1,248,22,133,18,23,199, +1,249,2,109,23,195,1,248,22,133,18,23,197,1,249,22,131,8,2,52,248, 22,134,2,23,196,1,28,248,22,87,23,199,2,86,94,23,198,1,28,23,199, 2,86,97,23,196,1,23,195,1,23,194,1,23,193,1,28,23,197,2,249,22, -158,15,23,201,1,23,199,1,198,27,28,248,22,87,23,197,2,2,50,249,22, -1,22,169,7,248,2,104,23,199,2,248,23,198,1,251,22,130,8,6,70,70, +170,15,23,201,1,23,199,1,198,27,28,248,22,87,23,197,2,2,50,249,22, +1,22,170,7,248,2,104,23,199,2,248,23,198,1,251,22,131,8,6,70,70, 99,111,108,108,101,99,116,105,111,110,32,110,111,116,32,102,111,117,110,100,10, 32,32,99,111,108,108,101,99,116,105,111,110,58,32,126,115,10,32,32,105,110, 32,99,111,108,108,101,99,116,105,111,110,32,100,105,114,101,99,116,111,114,105, 101,115,58,126,97,126,97,28,248,22,87,23,202,1,248,2,105,23,201,1,250, -22,169,7,248,2,105,23,204,1,2,51,23,201,2,249,22,1,22,169,7,249, -22,2,32,0,88,163,8,36,37,44,11,9,222,33,108,249,2,109,22,140,15, -23,205,2,28,249,22,5,22,133,2,23,201,2,250,22,130,8,6,49,49,10, +22,170,7,248,2,105,23,204,1,2,51,23,201,2,249,22,1,22,170,7,249, +22,2,32,0,88,163,8,36,37,44,11,9,222,33,108,249,2,109,22,152,15, +23,205,2,28,249,22,5,22,133,2,23,201,2,250,22,131,8,6,49,49,10, 32,32,32,115,117,98,45,99,111,108,108,101,99,116,105,111,110,58,32,126,115, 10,32,32,105,110,32,112,97,114,101,110,116,32,100,105,114,101,99,116,111,114, -105,101,115,58,126,97,23,201,1,249,22,1,22,169,7,249,22,2,32,0,88, +105,101,115,58,126,97,23,201,1,249,22,1,22,170,7,249,22,2,32,0,88, 163,8,36,37,45,11,9,222,33,111,249,2,109,22,133,2,23,208,1,86,95, -23,199,1,23,198,1,2,50,27,248,22,80,23,200,2,27,28,248,22,140,15, -23,195,2,249,22,158,15,23,196,1,23,198,2,248,22,134,2,23,195,1,28, -28,248,22,140,15,248,22,80,23,202,2,248,22,153,15,23,194,2,10,27,250, -22,1,22,158,15,23,197,1,23,201,2,28,28,248,22,87,23,199,2,10,248, -22,153,15,23,194,2,28,23,200,2,28,28,248,22,152,15,249,22,158,15,23, -196,2,23,203,2,10,27,28,248,22,140,15,23,202,2,248,22,144,15,23,202, -2,23,201,2,19,248,22,149,7,23,195,2,27,28,249,22,132,4,23,196,4, -40,28,249,22,152,7,6,4,4,46,114,107,116,249,22,168,7,23,199,2,249, -22,184,3,23,200,4,40,249,22,169,7,250,22,168,7,23,200,1,36,249,22, +23,199,1,23,198,1,2,50,27,248,22,80,23,200,2,27,28,248,22,152,15, +23,195,2,249,22,170,15,23,196,1,23,198,2,248,22,134,2,23,195,1,28, +28,248,22,152,15,248,22,80,23,202,2,248,22,165,15,23,194,2,10,27,250, +22,1,22,170,15,23,197,1,23,201,2,28,28,248,22,87,23,199,2,10,248, +22,165,15,23,194,2,28,23,200,2,28,28,248,22,164,15,249,22,170,15,23, +196,2,23,203,2,10,27,28,248,22,152,15,23,202,2,248,22,156,15,23,202, +2,23,201,2,19,248,22,150,7,23,195,2,27,28,249,22,132,4,23,196,4, +40,28,249,22,153,7,6,4,4,46,114,107,116,249,22,169,7,23,199,2,249, +22,184,3,23,200,4,40,249,22,170,7,250,22,169,7,23,200,1,36,249,22, 184,3,23,201,4,40,6,3,3,46,115,115,86,95,23,195,1,23,194,1,11, -11,28,23,193,2,248,22,152,15,249,22,158,15,23,199,2,23,196,1,11,2, +11,28,23,193,2,248,22,164,15,249,22,170,15,23,199,2,23,196,1,11,2, 86,99,23,202,1,23,201,1,23,199,1,23,198,1,23,197,1,23,196,1,28, -23,200,2,249,22,158,15,23,195,1,23,202,1,192,254,2,103,23,203,1,23, +23,200,2,249,22,170,15,23,195,1,23,202,1,192,254,2,103,23,203,1,23, 204,1,23,205,1,23,206,1,23,207,1,248,22,81,23,209,1,28,23,209,2, 86,94,23,200,1,23,209,1,86,94,23,209,1,23,200,1,28,23,200,2,249, -22,158,15,23,195,1,23,202,1,192,254,2,103,23,203,1,23,204,1,23,205, +22,170,15,23,195,1,23,202,1,192,254,2,103,23,203,1,23,204,1,23,205, 1,23,206,1,23,207,1,248,22,81,23,209,1,23,209,1,86,94,23,193,1, 254,2,103,23,202,1,23,203,1,23,204,1,23,205,1,23,206,1,248,22,81, 23,208,1,23,208,1,90,159,38,11,89,161,38,36,11,249,80,159,40,59,39, -23,199,1,23,200,1,27,248,22,67,28,248,22,140,15,23,196,2,248,22,144, -15,23,196,2,23,195,2,27,247,22,186,15,27,250,22,93,28,23,197,2,28, -247,22,185,15,27,248,80,159,46,57,39,10,27,250,22,160,2,23,197,2,23, +23,199,1,23,200,1,27,248,22,67,28,248,22,152,15,23,196,2,248,22,156, +15,23,196,2,23,195,2,27,247,22,134,16,27,250,22,93,28,23,197,2,28, +247,22,133,16,27,248,80,159,46,57,39,10,27,250,22,160,2,23,197,2,23, 203,2,11,28,23,193,2,192,86,94,23,193,1,250,22,160,2,23,197,1,11, 9,9,9,28,23,197,1,28,80,159,44,51,38,27,248,80,159,46,57,39,11, 27,250,22,160,2,23,197,2,23,203,1,11,28,23,193,2,192,86,94,23,193, -1,250,22,160,2,23,197,1,11,9,86,94,23,198,1,9,9,247,22,182,15, +1,250,22,160,2,23,197,1,11,9,86,94,23,198,1,9,9,247,22,130,16, 254,2,103,23,200,2,23,203,1,23,204,1,23,206,1,23,209,1,23,200,1, -11,86,95,28,28,248,22,141,15,23,194,2,10,28,248,22,140,15,23,194,2, -10,28,248,22,146,7,23,194,2,28,248,22,162,15,23,194,2,10,248,22,163, -15,23,194,2,11,12,252,22,134,10,23,200,2,2,34,36,23,198,2,23,199, -2,28,28,248,22,146,7,23,195,2,10,248,22,135,8,23,195,2,86,94,23, -194,1,12,252,22,134,10,23,200,2,2,53,37,23,198,2,23,199,1,90,159, -39,11,89,161,39,36,11,248,22,161,15,23,197,2,86,94,23,195,1,86,94, -28,23,193,2,86,95,23,198,1,23,196,1,12,250,22,137,10,23,201,1,2, +11,86,95,28,28,248,22,153,15,23,194,2,10,28,248,22,152,15,23,194,2, +10,28,248,22,147,7,23,194,2,28,248,22,174,15,23,194,2,10,248,22,175, +15,23,194,2,11,12,252,22,135,10,23,200,2,2,34,36,23,198,2,23,199, +2,28,28,248,22,147,7,23,195,2,10,248,22,136,8,23,195,2,86,94,23, +194,1,12,252,22,135,10,23,200,2,2,53,37,23,198,2,23,199,1,90,159, +39,11,89,161,39,36,11,248,22,173,15,23,197,2,86,94,23,195,1,86,94, +28,23,193,2,86,95,23,198,1,23,196,1,12,250,22,138,10,23,201,1,2, 54,23,199,1,249,22,7,23,195,1,23,196,1,32,115,88,163,36,42,8,24, 11,2,42,222,33,116,28,248,22,133,4,23,199,2,86,95,23,198,1,23,194, -1,19,248,22,140,8,23,195,2,19,248,22,140,8,23,196,2,249,22,150,15, -251,22,147,8,250,22,146,8,23,204,2,36,23,203,4,2,43,249,23,205,1, -23,203,1,23,201,4,28,248,22,146,7,23,206,2,249,22,161,8,23,207,1, -8,63,23,205,1,28,248,22,141,15,23,201,2,248,22,142,15,23,201,1,86, -94,23,200,1,247,22,143,15,2,2,27,248,22,182,3,23,200,1,28,249,22, -161,9,8,46,249,22,141,8,23,198,2,23,197,2,27,248,22,181,3,23,195, -2,249,22,150,15,251,22,147,8,250,22,146,8,23,204,2,36,23,203,1,23, -202,1,249,23,205,1,23,203,1,23,201,1,28,248,22,146,7,23,206,2,249, -22,161,8,23,207,1,8,63,23,205,1,28,248,22,141,15,23,201,2,248,22, -142,15,23,201,1,86,94,23,200,1,247,22,143,15,28,248,22,133,4,23,194, -2,86,95,23,195,1,23,193,1,19,248,22,140,8,23,196,2,19,248,22,140, -8,23,197,2,249,22,150,15,251,22,147,8,250,22,146,8,23,205,2,36,23, -203,4,2,43,249,23,206,1,23,204,1,23,201,4,28,248,22,146,7,23,207, -2,249,22,161,8,23,208,1,8,63,23,206,1,28,248,22,141,15,23,202,2, -248,22,142,15,23,202,1,86,94,23,201,1,247,22,143,15,2,2,27,248,22, -182,3,23,195,1,28,249,22,161,9,8,46,249,22,141,8,23,199,2,23,197, -2,27,248,22,181,3,23,195,2,249,22,150,15,251,22,147,8,250,22,146,8, +1,19,248,22,141,8,23,195,2,19,248,22,141,8,23,196,2,249,22,162,15, +251,22,148,8,250,22,147,8,23,204,2,36,23,203,4,2,43,249,23,205,1, +23,203,1,23,201,4,28,248,22,147,7,23,206,2,249,22,162,8,23,207,1, +8,63,23,205,1,28,248,22,153,15,23,201,2,248,22,154,15,23,201,1,86, +94,23,200,1,247,22,155,15,2,2,27,248,22,182,3,23,200,1,28,249,22, +162,9,8,46,249,22,142,8,23,198,2,23,197,2,27,248,22,181,3,23,195, +2,249,22,162,15,251,22,148,8,250,22,147,8,23,204,2,36,23,203,1,23, +202,1,249,23,205,1,23,203,1,23,201,1,28,248,22,147,7,23,206,2,249, +22,162,8,23,207,1,8,63,23,205,1,28,248,22,153,15,23,201,2,248,22, +154,15,23,201,1,86,94,23,200,1,247,22,155,15,28,248,22,133,4,23,194, +2,86,95,23,195,1,23,193,1,19,248,22,141,8,23,196,2,19,248,22,141, +8,23,197,2,249,22,162,15,251,22,148,8,250,22,147,8,23,205,2,36,23, +203,4,2,43,249,23,206,1,23,204,1,23,201,4,28,248,22,147,7,23,207, +2,249,22,162,8,23,208,1,8,63,23,206,1,28,248,22,153,15,23,202,2, +248,22,154,15,23,202,1,86,94,23,201,1,247,22,155,15,2,2,27,248,22, +182,3,23,195,1,28,249,22,162,9,8,46,249,22,142,8,23,199,2,23,197, +2,27,248,22,181,3,23,195,2,249,22,162,15,251,22,148,8,250,22,147,8, 23,205,2,36,23,203,1,23,203,1,249,23,206,1,23,204,1,23,201,1,28, -248,22,146,7,23,207,2,249,22,161,8,23,208,1,8,63,23,206,1,28,248, -22,141,15,23,202,2,248,22,142,15,23,202,1,86,94,23,201,1,247,22,143, -15,28,248,22,133,4,23,194,2,86,95,23,196,1,23,193,1,19,248,22,140, -8,23,197,2,19,248,22,140,8,23,198,2,249,22,150,15,251,22,147,8,250, -22,146,8,23,206,2,36,23,203,4,2,43,249,23,207,1,23,205,1,23,201, -4,28,248,22,146,7,23,208,2,249,22,161,8,23,209,1,8,63,23,207,1, -28,248,22,141,15,23,203,2,248,22,142,15,23,203,1,86,94,23,202,1,247, -22,143,15,2,2,27,248,22,182,3,23,195,1,28,249,22,161,9,8,46,249, -22,141,8,23,200,2,23,197,2,27,248,22,181,3,23,195,2,249,22,150,15, -251,22,147,8,250,22,146,8,23,206,2,36,23,203,1,23,204,1,249,23,207, -1,23,205,1,23,201,1,28,248,22,146,7,23,208,2,249,22,161,8,23,209, -1,8,63,23,207,1,28,248,22,141,15,23,203,2,248,22,142,15,23,203,1, -86,94,23,202,1,247,22,143,15,253,2,115,23,202,1,23,203,1,23,204,1, +248,22,147,7,23,207,2,249,22,162,8,23,208,1,8,63,23,206,1,28,248, +22,153,15,23,202,2,248,22,154,15,23,202,1,86,94,23,201,1,247,22,155, +15,28,248,22,133,4,23,194,2,86,95,23,196,1,23,193,1,19,248,22,141, +8,23,197,2,19,248,22,141,8,23,198,2,249,22,162,15,251,22,148,8,250, +22,147,8,23,206,2,36,23,203,4,2,43,249,23,207,1,23,205,1,23,201, +4,28,248,22,147,7,23,208,2,249,22,162,8,23,209,1,8,63,23,207,1, +28,248,22,153,15,23,203,2,248,22,154,15,23,203,1,86,94,23,202,1,247, +22,155,15,2,2,27,248,22,182,3,23,195,1,28,249,22,162,9,8,46,249, +22,142,8,23,200,2,23,197,2,27,248,22,181,3,23,195,2,249,22,162,15, +251,22,148,8,250,22,147,8,23,206,2,36,23,203,1,23,204,1,249,23,207, +1,23,205,1,23,201,1,28,248,22,147,7,23,208,2,249,22,162,8,23,209, +1,8,63,23,207,1,28,248,22,153,15,23,203,2,248,22,154,15,23,203,1, +86,94,23,202,1,247,22,155,15,253,2,115,23,202,1,23,203,1,23,204,1, 23,205,1,23,206,1,23,199,1,90,159,38,11,89,161,38,36,11,86,95,28, -28,248,22,141,15,23,199,2,10,28,248,22,140,15,23,199,2,10,28,248,22, -146,7,23,199,2,28,248,22,162,15,23,199,2,10,248,22,163,15,23,199,2, -11,12,252,22,134,10,23,200,2,2,34,36,23,203,2,23,204,2,28,28,248, -22,146,7,23,200,2,10,248,22,135,8,23,200,2,12,252,22,134,10,23,200, +28,248,22,153,15,23,199,2,10,28,248,22,152,15,23,199,2,10,28,248,22, +147,7,23,199,2,28,248,22,174,15,23,199,2,10,248,22,175,15,23,199,2, +11,12,252,22,135,10,23,200,2,2,34,36,23,203,2,23,204,2,28,28,248, +22,147,7,23,200,2,10,248,22,136,8,23,200,2,12,252,22,135,10,23,200, 2,2,53,37,23,203,2,23,204,2,90,159,39,11,89,161,39,36,11,248,22, -161,15,23,202,2,86,94,23,195,1,86,94,28,192,12,250,22,137,10,23,201, -1,2,54,23,204,2,249,22,7,194,195,27,248,22,146,15,23,196,1,27,19, -248,22,140,8,23,196,2,28,248,22,133,4,23,194,4,86,95,23,199,1,23, -193,1,19,248,22,140,8,23,197,2,19,248,22,140,8,23,198,2,249,22,150, -15,251,22,147,8,250,22,146,8,23,206,2,36,23,203,4,2,43,249,23,210, -1,23,205,1,23,201,4,28,248,22,146,7,23,211,2,249,22,161,8,23,212, -1,8,63,23,210,1,28,248,22,141,15,23,206,2,248,22,142,15,23,206,1, -86,94,23,205,1,247,22,143,15,2,2,27,248,22,182,3,23,195,4,28,249, -22,161,9,8,46,249,22,141,8,23,200,2,23,197,2,27,248,22,181,3,23, -195,2,249,22,150,15,251,22,147,8,250,22,146,8,23,206,2,36,23,203,1, -23,207,1,249,23,210,1,23,205,1,23,201,1,28,248,22,146,7,23,211,2, -249,22,161,8,23,212,1,8,63,23,210,1,28,248,22,141,15,23,206,2,248, -22,142,15,23,206,1,86,94,23,205,1,247,22,143,15,28,248,22,133,4,23, -194,2,86,95,23,200,1,23,193,1,19,248,22,140,8,23,198,2,19,248,22, -140,8,23,199,2,249,22,150,15,251,22,147,8,250,22,146,8,23,207,2,36, -23,203,4,2,43,249,23,211,1,23,206,1,23,201,4,28,248,22,146,7,23, -212,2,249,22,161,8,23,213,1,8,63,23,211,1,28,248,22,141,15,23,207, -2,248,22,142,15,23,207,1,86,94,23,206,1,247,22,143,15,2,2,27,248, -22,182,3,23,195,1,28,249,22,161,9,8,46,249,22,141,8,23,201,2,23, -197,2,27,248,22,181,3,23,195,2,249,22,150,15,251,22,147,8,250,22,146, +173,15,23,202,2,86,94,23,195,1,86,94,28,192,12,250,22,138,10,23,201, +1,2,54,23,204,2,249,22,7,194,195,27,248,22,158,15,23,196,1,27,19, +248,22,141,8,23,196,2,28,248,22,133,4,23,194,4,86,95,23,199,1,23, +193,1,19,248,22,141,8,23,197,2,19,248,22,141,8,23,198,2,249,22,162, +15,251,22,148,8,250,22,147,8,23,206,2,36,23,203,4,2,43,249,23,210, +1,23,205,1,23,201,4,28,248,22,147,7,23,211,2,249,22,162,8,23,212, +1,8,63,23,210,1,28,248,22,153,15,23,206,2,248,22,154,15,23,206,1, +86,94,23,205,1,247,22,155,15,2,2,27,248,22,182,3,23,195,4,28,249, +22,162,9,8,46,249,22,142,8,23,200,2,23,197,2,27,248,22,181,3,23, +195,2,249,22,162,15,251,22,148,8,250,22,147,8,23,206,2,36,23,203,1, +23,207,1,249,23,210,1,23,205,1,23,201,1,28,248,22,147,7,23,211,2, +249,22,162,8,23,212,1,8,63,23,210,1,28,248,22,153,15,23,206,2,248, +22,154,15,23,206,1,86,94,23,205,1,247,22,155,15,28,248,22,133,4,23, +194,2,86,95,23,200,1,23,193,1,19,248,22,141,8,23,198,2,19,248,22, +141,8,23,199,2,249,22,162,15,251,22,148,8,250,22,147,8,23,207,2,36, +23,203,4,2,43,249,23,211,1,23,206,1,23,201,4,28,248,22,147,7,23, +212,2,249,22,162,8,23,213,1,8,63,23,211,1,28,248,22,153,15,23,207, +2,248,22,154,15,23,207,1,86,94,23,206,1,247,22,155,15,2,2,27,248, +22,182,3,23,195,1,28,249,22,162,9,8,46,249,22,142,8,23,201,2,23, +197,2,27,248,22,181,3,23,195,2,249,22,162,15,251,22,148,8,250,22,147, 8,23,207,2,36,23,203,1,23,208,1,249,23,211,1,23,206,1,23,201,1, -28,248,22,146,7,23,212,2,249,22,161,8,23,213,1,8,63,23,211,1,28, -248,22,141,15,23,207,2,248,22,142,15,23,207,1,86,94,23,206,1,247,22, -143,15,253,2,115,23,203,1,23,207,1,23,208,1,23,209,1,23,210,1,23, -199,1,2,28,248,22,140,15,23,196,2,249,22,158,15,23,197,1,23,195,1, +28,248,22,147,7,23,212,2,249,22,162,8,23,213,1,8,63,23,211,1,28, +248,22,153,15,23,207,2,248,22,154,15,23,207,1,86,94,23,206,1,247,22, +155,15,253,2,115,23,203,1,23,207,1,23,208,1,23,209,1,23,210,1,23, +199,1,2,28,248,22,152,15,23,196,2,249,22,170,15,23,197,1,23,195,1, 192,32,118,88,163,36,40,57,11,2,42,222,33,119,28,248,22,133,4,23,197, -2,86,94,23,196,1,19,248,22,140,8,23,195,2,35,248,22,140,8,23,196, -2,249,22,150,15,251,22,147,8,250,22,146,8,23,204,1,36,23,203,4,2, -43,2,43,28,248,22,146,7,23,204,2,249,22,161,8,23,205,1,8,63,23, -203,1,28,248,22,141,15,23,199,2,248,22,142,15,23,199,1,86,94,23,198, -1,247,22,143,15,2,27,248,22,182,3,23,198,1,28,249,22,161,9,8,46, -249,22,141,8,23,198,2,23,197,2,35,248,22,181,3,23,195,2,249,22,150, -15,251,22,147,8,250,22,146,8,23,204,1,36,23,203,1,2,43,2,43,28, -248,22,146,7,23,204,2,249,22,161,8,23,205,1,8,63,23,203,1,28,248, -22,141,15,23,199,2,248,22,142,15,23,199,1,86,94,23,198,1,247,22,143, -15,28,248,22,133,4,23,194,2,86,94,23,193,1,19,248,22,140,8,23,196, -2,35,248,22,140,8,23,197,2,249,22,150,15,251,22,147,8,250,22,146,8, -23,205,1,36,23,203,4,2,43,2,43,28,248,22,146,7,23,205,2,249,22, -161,8,23,206,1,8,63,23,204,1,28,248,22,141,15,23,200,2,248,22,142, -15,23,200,1,86,94,23,199,1,247,22,143,15,2,27,248,22,182,3,23,195, -1,28,249,22,161,9,8,46,249,22,141,8,23,199,2,23,197,2,35,248,22, -181,3,23,195,2,249,22,150,15,251,22,147,8,250,22,146,8,23,205,1,36, -23,203,1,2,43,2,43,28,248,22,146,7,23,205,2,249,22,161,8,23,206, -1,8,63,23,204,1,28,248,22,141,15,23,200,2,248,22,142,15,23,200,1, -86,94,23,199,1,247,22,143,15,251,2,118,23,199,1,23,200,1,23,201,1, -23,197,1,90,159,38,11,89,161,38,36,11,86,95,28,28,248,22,141,15,23, -196,2,10,28,248,22,140,15,23,196,2,10,28,248,22,146,7,23,196,2,28, -248,22,162,15,23,196,2,10,248,22,163,15,23,196,2,11,12,252,22,134,10, -2,28,2,34,36,23,200,2,23,201,2,28,28,248,22,146,7,23,197,2,10, -248,22,135,8,23,197,2,12,252,22,134,10,2,28,2,53,37,23,200,2,23, -201,2,90,159,39,11,89,161,39,36,11,248,22,161,15,23,199,2,86,94,23, -195,1,86,94,28,192,12,250,22,137,10,2,28,2,54,23,201,2,249,22,7, -194,195,27,248,22,146,15,23,196,1,27,251,2,118,23,198,2,23,201,1,23, -202,1,248,22,140,8,23,199,1,28,248,22,140,15,23,196,2,249,22,158,15, +2,86,94,23,196,1,19,248,22,141,8,23,195,2,35,248,22,141,8,23,196, +2,249,22,162,15,251,22,148,8,250,22,147,8,23,204,1,36,23,203,4,2, +43,2,43,28,248,22,147,7,23,204,2,249,22,162,8,23,205,1,8,63,23, +203,1,28,248,22,153,15,23,199,2,248,22,154,15,23,199,1,86,94,23,198, +1,247,22,155,15,2,27,248,22,182,3,23,198,1,28,249,22,162,9,8,46, +249,22,142,8,23,198,2,23,197,2,35,248,22,181,3,23,195,2,249,22,162, +15,251,22,148,8,250,22,147,8,23,204,1,36,23,203,1,2,43,2,43,28, +248,22,147,7,23,204,2,249,22,162,8,23,205,1,8,63,23,203,1,28,248, +22,153,15,23,199,2,248,22,154,15,23,199,1,86,94,23,198,1,247,22,155, +15,28,248,22,133,4,23,194,2,86,94,23,193,1,19,248,22,141,8,23,196, +2,35,248,22,141,8,23,197,2,249,22,162,15,251,22,148,8,250,22,147,8, +23,205,1,36,23,203,4,2,43,2,43,28,248,22,147,7,23,205,2,249,22, +162,8,23,206,1,8,63,23,204,1,28,248,22,153,15,23,200,2,248,22,154, +15,23,200,1,86,94,23,199,1,247,22,155,15,2,27,248,22,182,3,23,195, +1,28,249,22,162,9,8,46,249,22,142,8,23,199,2,23,197,2,35,248,22, +181,3,23,195,2,249,22,162,15,251,22,148,8,250,22,147,8,23,205,1,36, +23,203,1,2,43,2,43,28,248,22,147,7,23,205,2,249,22,162,8,23,206, +1,8,63,23,204,1,28,248,22,153,15,23,200,2,248,22,154,15,23,200,1, +86,94,23,199,1,247,22,155,15,251,2,118,23,199,1,23,200,1,23,201,1, +23,197,1,90,159,38,11,89,161,38,36,11,86,95,28,28,248,22,153,15,23, +196,2,10,28,248,22,152,15,23,196,2,10,28,248,22,147,7,23,196,2,28, +248,22,174,15,23,196,2,10,248,22,175,15,23,196,2,11,12,252,22,135,10, +2,28,2,34,36,23,200,2,23,201,2,28,28,248,22,147,7,23,197,2,10, +248,22,136,8,23,197,2,12,252,22,135,10,2,28,2,53,37,23,200,2,23, +201,2,90,159,39,11,89,161,39,36,11,248,22,173,15,23,199,2,86,94,23, +195,1,86,94,28,192,12,250,22,138,10,2,28,2,54,23,201,2,249,22,7, +194,195,27,248,22,158,15,23,196,1,27,251,2,118,23,198,2,23,201,1,23, +202,1,248,22,141,8,23,199,1,28,248,22,152,15,23,196,2,249,22,170,15, 23,197,1,23,195,1,192,2,43,252,80,158,41,8,25,2,28,2,43,32,0, 88,163,8,36,38,43,11,9,222,33,121,198,199,32,123,88,163,36,40,57,11, 2,42,222,33,124,28,248,22,133,4,23,197,2,86,94,23,196,1,19,248,22, -140,8,23,195,2,19,248,22,140,8,23,196,2,249,22,150,15,251,22,147,8, -250,22,146,8,23,204,2,36,23,203,4,2,43,249,22,146,8,23,203,1,23, -201,4,28,248,22,146,7,23,204,2,249,22,161,8,23,205,1,8,63,23,203, -1,28,248,22,141,15,23,199,2,248,22,142,15,23,199,1,86,94,23,198,1, -247,22,143,15,2,2,27,248,22,182,3,23,198,1,28,249,22,161,9,8,46, -249,22,141,8,23,198,2,23,197,2,27,248,22,181,3,23,195,2,249,22,150, -15,251,22,147,8,250,22,146,8,23,204,2,36,23,203,1,2,55,249,22,146, -8,23,203,1,23,201,1,28,248,22,146,7,23,204,2,249,22,161,8,23,205, -1,8,63,23,203,1,28,248,22,141,15,23,199,2,248,22,142,15,23,199,1, -86,94,23,198,1,247,22,143,15,28,248,22,133,4,23,194,2,86,94,23,193, -1,19,248,22,140,8,23,196,2,19,248,22,140,8,23,197,2,249,22,150,15, -251,22,147,8,250,22,146,8,23,205,2,36,23,203,4,2,43,249,22,146,8, -23,204,1,23,201,4,28,248,22,146,7,23,205,2,249,22,161,8,23,206,1, -8,63,23,204,1,28,248,22,141,15,23,200,2,248,22,142,15,23,200,1,86, -94,23,199,1,247,22,143,15,2,2,27,248,22,182,3,23,195,1,28,249,22, -161,9,8,46,249,22,141,8,23,199,2,23,197,2,27,248,22,181,3,23,195, -2,249,22,150,15,251,22,147,8,250,22,146,8,23,205,2,36,23,203,1,2, -55,249,22,146,8,23,204,1,23,201,1,28,248,22,146,7,23,205,2,249,22, -161,8,23,206,1,8,63,23,204,1,28,248,22,141,15,23,200,2,248,22,142, -15,23,200,1,86,94,23,199,1,247,22,143,15,251,2,123,23,199,1,23,200, +141,8,23,195,2,19,248,22,141,8,23,196,2,249,22,162,15,251,22,148,8, +250,22,147,8,23,204,2,36,23,203,4,2,43,249,22,147,8,23,203,1,23, +201,4,28,248,22,147,7,23,204,2,249,22,162,8,23,205,1,8,63,23,203, +1,28,248,22,153,15,23,199,2,248,22,154,15,23,199,1,86,94,23,198,1, +247,22,155,15,2,2,27,248,22,182,3,23,198,1,28,249,22,162,9,8,46, +249,22,142,8,23,198,2,23,197,2,27,248,22,181,3,23,195,2,249,22,162, +15,251,22,148,8,250,22,147,8,23,204,2,36,23,203,1,2,55,249,22,147, +8,23,203,1,23,201,1,28,248,22,147,7,23,204,2,249,22,162,8,23,205, +1,8,63,23,203,1,28,248,22,153,15,23,199,2,248,22,154,15,23,199,1, +86,94,23,198,1,247,22,155,15,28,248,22,133,4,23,194,2,86,94,23,193, +1,19,248,22,141,8,23,196,2,19,248,22,141,8,23,197,2,249,22,162,15, +251,22,148,8,250,22,147,8,23,205,2,36,23,203,4,2,43,249,22,147,8, +23,204,1,23,201,4,28,248,22,147,7,23,205,2,249,22,162,8,23,206,1, +8,63,23,204,1,28,248,22,153,15,23,200,2,248,22,154,15,23,200,1,86, +94,23,199,1,247,22,155,15,2,2,27,248,22,182,3,23,195,1,28,249,22, +162,9,8,46,249,22,142,8,23,199,2,23,197,2,27,248,22,181,3,23,195, +2,249,22,162,15,251,22,148,8,250,22,147,8,23,205,2,36,23,203,1,2, +55,249,22,147,8,23,204,1,23,201,1,28,248,22,147,7,23,205,2,249,22, +162,8,23,206,1,8,63,23,204,1,28,248,22,153,15,23,200,2,248,22,154, +15,23,200,1,86,94,23,199,1,247,22,155,15,251,2,123,23,199,1,23,200, 1,23,201,1,23,197,1,90,159,38,11,89,161,38,36,11,86,95,28,28,248, -22,141,15,23,196,2,10,28,248,22,140,15,23,196,2,10,28,248,22,146,7, -23,196,2,28,248,22,162,15,23,196,2,10,248,22,163,15,23,196,2,11,12, -252,22,134,10,2,28,2,34,36,23,200,2,23,201,2,28,28,248,22,146,7, -23,197,2,10,248,22,135,8,23,197,2,12,252,22,134,10,2,28,2,53,37, -23,200,2,23,201,2,90,159,39,11,89,161,39,36,11,248,22,161,15,23,199, -2,86,94,23,195,1,86,94,28,192,12,250,22,137,10,2,28,2,54,23,201, -2,249,22,7,194,195,27,248,22,146,15,23,196,1,27,251,2,123,23,198,2, -23,201,1,23,202,1,248,22,140,8,23,199,1,28,248,22,140,15,23,196,2, -249,22,158,15,23,197,1,23,195,1,192,252,80,158,41,8,25,2,28,2,55, -22,146,8,198,199,249,247,22,173,5,23,195,1,11,249,247,22,173,5,194,11, -28,248,22,87,23,195,2,9,27,248,22,80,23,196,2,27,28,248,22,164,15, -23,195,2,23,194,1,28,248,22,163,15,23,195,2,249,22,165,15,23,196,1, -250,80,159,43,40,39,248,22,180,15,2,47,11,10,250,80,159,41,40,39,248, -22,180,15,2,47,23,197,1,10,28,23,193,2,249,22,79,248,22,167,15,249, -22,165,15,23,198,1,247,22,181,15,248,80,159,41,8,31,39,248,22,81,23, +22,153,15,23,196,2,10,28,248,22,152,15,23,196,2,10,28,248,22,147,7, +23,196,2,28,248,22,174,15,23,196,2,10,248,22,175,15,23,196,2,11,12, +252,22,135,10,2,28,2,34,36,23,200,2,23,201,2,28,28,248,22,147,7, +23,197,2,10,248,22,136,8,23,197,2,12,252,22,135,10,2,28,2,53,37, +23,200,2,23,201,2,90,159,39,11,89,161,39,36,11,248,22,173,15,23,199, +2,86,94,23,195,1,86,94,28,192,12,250,22,138,10,2,28,2,54,23,201, +2,249,22,7,194,195,27,248,22,158,15,23,196,1,27,251,2,123,23,198,2, +23,201,1,23,202,1,248,22,141,8,23,199,1,28,248,22,152,15,23,196,2, +249,22,170,15,23,197,1,23,195,1,192,252,80,158,41,8,25,2,28,2,55, +22,147,8,198,199,249,247,22,174,5,23,195,1,11,249,247,22,174,5,194,11, +28,248,22,87,23,195,2,9,27,248,22,80,23,196,2,27,28,248,22,176,15, +23,195,2,23,194,1,28,248,22,175,15,23,195,2,249,22,177,15,23,196,1, +250,80,159,43,40,39,248,22,128,16,2,47,11,10,250,80,159,41,40,39,248, +22,128,16,2,47,23,197,1,10,28,23,193,2,249,22,79,248,22,179,15,249, +22,177,15,23,198,1,247,22,129,16,248,80,159,41,8,31,39,248,22,81,23, 200,1,86,94,23,193,1,248,80,159,39,8,31,39,248,22,81,23,198,1,28, -248,22,87,23,195,2,9,27,248,22,80,23,196,2,27,28,248,22,164,15,23, -195,2,23,194,1,28,248,22,163,15,23,195,2,249,22,165,15,23,196,1,250, -80,159,43,40,39,248,22,180,15,2,47,11,10,250,80,159,41,40,39,248,22, -180,15,2,47,23,197,1,10,28,23,193,2,249,22,79,248,22,167,15,249,22, -165,15,23,198,1,247,22,181,15,248,80,159,41,8,32,39,248,22,81,23,200, +248,22,87,23,195,2,9,27,248,22,80,23,196,2,27,28,248,22,176,15,23, +195,2,23,194,1,28,248,22,175,15,23,195,2,249,22,177,15,23,196,1,250, +80,159,43,40,39,248,22,128,16,2,47,11,10,250,80,159,41,40,39,248,22, +128,16,2,47,23,197,1,10,28,23,193,2,249,22,79,248,22,179,15,249,22, +177,15,23,198,1,247,22,129,16,248,80,159,41,8,32,39,248,22,81,23,200, 1,86,94,23,193,1,248,80,159,39,8,32,39,248,22,81,23,198,1,28,248, -22,87,23,195,2,9,27,248,22,80,23,196,2,27,28,248,22,164,15,23,195, -2,23,194,1,28,248,22,163,15,23,195,2,249,22,165,15,23,196,1,250,80, -159,43,40,39,248,22,180,15,2,47,11,10,250,80,159,41,40,39,248,22,180, -15,2,47,23,197,1,10,28,23,193,2,249,22,79,248,22,167,15,249,22,165, -15,23,198,1,247,22,181,15,27,248,22,81,23,200,1,28,248,22,87,23,194, -2,9,27,248,22,80,23,195,2,27,28,248,22,164,15,23,195,2,23,194,1, -28,248,22,163,15,23,195,2,249,22,165,15,23,196,1,250,80,159,48,40,39, -248,22,180,15,2,47,11,10,250,80,159,46,40,39,248,22,180,15,2,47,23, -197,1,10,28,23,193,2,249,22,79,248,22,167,15,249,22,165,15,23,198,1, -247,22,181,15,248,80,159,46,8,33,39,248,22,81,23,199,1,86,94,23,193, +22,87,23,195,2,9,27,248,22,80,23,196,2,27,28,248,22,176,15,23,195, +2,23,194,1,28,248,22,175,15,23,195,2,249,22,177,15,23,196,1,250,80, +159,43,40,39,248,22,128,16,2,47,11,10,250,80,159,41,40,39,248,22,128, +16,2,47,23,197,1,10,28,23,193,2,249,22,79,248,22,179,15,249,22,177, +15,23,198,1,247,22,129,16,27,248,22,81,23,200,1,28,248,22,87,23,194, +2,9,27,248,22,80,23,195,2,27,28,248,22,176,15,23,195,2,23,194,1, +28,248,22,175,15,23,195,2,249,22,177,15,23,196,1,250,80,159,48,40,39, +248,22,128,16,2,47,11,10,250,80,159,46,40,39,248,22,128,16,2,47,23, +197,1,10,28,23,193,2,249,22,79,248,22,179,15,249,22,177,15,23,198,1, +247,22,129,16,248,80,159,46,8,33,39,248,22,81,23,199,1,86,94,23,193, 1,248,80,159,44,8,33,39,248,22,81,23,197,1,86,94,23,193,1,27,248, 22,81,23,198,1,28,248,22,87,23,194,2,9,27,248,22,80,23,195,2,27, -28,248,22,164,15,23,195,2,23,194,1,28,248,22,163,15,23,195,2,249,22, -165,15,23,196,1,250,80,159,46,40,39,248,22,180,15,2,47,11,10,250,80, -159,44,40,39,248,22,180,15,2,47,23,197,1,10,28,23,193,2,249,22,79, -248,22,167,15,249,22,165,15,23,198,1,247,22,181,15,248,80,159,44,8,33, +28,248,22,176,15,23,195,2,23,194,1,28,248,22,175,15,23,195,2,249,22, +177,15,23,196,1,250,80,159,46,40,39,248,22,128,16,2,47,11,10,250,80, +159,44,40,39,248,22,128,16,2,47,23,197,1,10,28,23,193,2,249,22,79, +248,22,179,15,249,22,177,15,23,198,1,247,22,129,16,248,80,159,44,8,33, 39,248,22,81,23,199,1,86,94,23,193,1,248,80,159,42,8,33,39,248,22, -81,23,197,1,27,247,22,185,15,249,80,159,39,41,38,28,23,195,2,27,249, -22,168,8,247,22,167,8,2,56,28,192,249,22,158,8,194,7,63,2,50,2, -50,27,28,23,196,1,250,22,158,15,248,22,180,15,2,57,247,22,164,8,2, -58,11,27,248,80,159,42,8,31,39,250,22,93,9,248,22,89,248,22,180,15, -2,46,9,28,193,249,22,79,195,194,192,27,247,22,185,15,249,80,159,39,41, -38,28,23,195,2,27,249,22,168,8,247,22,167,8,2,56,28,192,249,22,158, -8,194,7,63,2,50,2,50,27,28,23,196,1,250,22,158,15,248,22,180,15, -2,57,247,22,164,8,2,58,11,27,248,80,159,42,8,32,39,250,22,93,23, -203,1,248,22,89,248,22,180,15,2,46,9,28,193,249,22,79,195,194,192,27, -247,22,185,15,249,80,159,39,41,38,28,23,195,2,27,249,22,168,8,247,22, -167,8,2,56,28,192,249,22,158,8,194,7,63,2,50,2,50,27,28,23,196, -1,250,22,158,15,248,22,180,15,2,57,247,22,164,8,2,58,11,27,248,80, -159,42,8,33,39,250,22,93,23,203,1,248,22,89,248,22,180,15,2,46,23, +81,23,197,1,27,247,22,133,16,249,80,159,39,41,38,28,23,195,2,27,249, +22,169,8,247,22,168,8,2,56,28,192,249,22,159,8,194,7,63,2,50,2, +50,27,28,23,196,1,250,22,170,15,248,22,128,16,2,57,247,22,165,8,2, +58,11,27,248,80,159,42,8,31,39,250,22,93,9,248,22,89,248,22,128,16, +2,46,9,28,193,249,22,79,195,194,192,27,247,22,133,16,249,80,159,39,41, +38,28,23,195,2,27,249,22,169,8,247,22,168,8,2,56,28,192,249,22,159, +8,194,7,63,2,50,2,50,27,28,23,196,1,250,22,170,15,248,22,128,16, +2,57,247,22,165,8,2,58,11,27,248,80,159,42,8,32,39,250,22,93,23, +203,1,248,22,89,248,22,128,16,2,46,9,28,193,249,22,79,195,194,192,27, +247,22,133,16,249,80,159,39,41,38,28,23,195,2,27,249,22,169,8,247,22, +168,8,2,56,28,192,249,22,159,8,194,7,63,2,50,2,50,27,28,23,196, +1,250,22,170,15,248,22,128,16,2,57,247,22,165,8,2,58,11,27,248,80, +159,42,8,33,39,250,22,93,23,203,1,248,22,89,248,22,128,16,2,46,23, 204,1,28,193,249,22,79,195,194,192,27,20,13,159,80,159,37,53,37,254,80, -159,44,54,37,249,22,33,11,80,159,46,53,37,22,178,14,10,22,185,14,10, -22,186,14,10,248,22,141,6,23,196,2,28,248,22,141,7,23,194,2,12,86, -94,248,22,169,9,23,194,1,27,20,13,159,80,159,38,53,37,254,80,159,45, -54,37,249,22,33,11,80,159,47,53,37,22,178,14,10,22,185,14,10,22,186, -14,10,248,22,141,6,23,197,2,28,248,22,141,7,23,194,2,12,86,94,248, -22,169,9,23,194,1,27,20,13,159,80,159,39,53,37,254,80,159,46,54,37, -249,22,33,11,80,159,48,53,37,22,178,14,10,22,185,14,10,22,186,14,10, -248,22,141,6,23,198,2,28,248,22,141,7,23,194,2,12,86,94,248,22,169, -9,23,194,1,248,80,159,40,8,34,39,23,198,1,86,94,249,22,132,7,247, -22,169,5,23,196,2,248,22,156,6,249,22,136,4,36,249,22,184,3,23,198, +159,44,54,37,249,22,33,11,80,159,46,53,37,22,190,14,10,22,133,15,10, +22,134,15,10,248,22,142,6,23,196,2,28,248,22,142,7,23,194,2,12,86, +94,248,22,170,9,23,194,1,27,20,13,159,80,159,38,53,37,254,80,159,45, +54,37,249,22,33,11,80,159,47,53,37,22,190,14,10,22,133,15,10,22,134, +15,10,248,22,142,6,23,197,2,28,248,22,142,7,23,194,2,12,86,94,248, +22,170,9,23,194,1,27,20,13,159,80,159,39,53,37,254,80,159,46,54,37, +249,22,33,11,80,159,48,53,37,22,190,14,10,22,133,15,10,22,134,15,10, +248,22,142,6,23,198,2,28,248,22,142,7,23,194,2,12,86,94,248,22,170, +9,23,194,1,248,80,159,40,8,34,39,23,198,1,86,94,249,22,133,7,247, +22,170,5,23,196,2,248,22,157,6,249,22,136,4,36,249,22,184,3,23,198, 1,23,199,1,27,28,23,197,2,86,95,23,196,1,23,195,1,23,197,1,86, -94,23,197,1,27,248,22,180,15,2,47,27,250,80,159,42,40,39,23,197,1, +94,23,197,1,27,248,22,128,16,2,47,27,250,80,159,42,40,39,23,197,1, 11,11,27,248,22,139,4,23,199,1,27,28,23,194,2,23,194,1,86,94,23, 194,1,36,27,248,22,139,4,23,202,1,27,28,23,194,2,23,194,1,86,94, -23,194,1,36,249,22,136,6,23,199,1,20,20,95,88,163,8,36,36,48,11, -9,224,4,2,33,136,2,23,195,1,23,197,1,27,248,22,185,5,23,195,1, +23,194,1,36,249,22,137,6,23,199,1,20,20,95,88,163,8,36,36,48,11, +9,224,4,2,33,136,2,23,195,1,23,197,1,27,248,22,186,5,23,195,1, 248,80,159,39,8,34,39,23,194,1,159,36,20,114,159,36,16,1,11,16,0, 20,26,145,9,2,1,2,1,29,11,11,11,11,9,9,11,11,11,10,43,80, 158,36,36,20,114,159,40,16,31,2,2,2,3,2,4,2,5,2,6,2,7, @@ -681,13 +681,13 @@ 2,29,2,7,2,28,2,2,2,5,49,49,37,12,11,11,16,0,16,0,16, 0,36,36,11,12,11,11,16,0,16,0,16,0,36,36,16,31,20,15,16,2, 32,0,88,163,36,37,45,11,2,2,222,33,59,80,159,36,36,37,20,15,16, -2,249,22,148,7,7,92,7,92,80,159,36,37,37,20,15,16,2,88,163,36, +2,249,22,149,7,7,92,7,92,80,159,36,37,37,20,15,16,2,88,163,36, 37,54,38,2,4,223,0,33,64,80,159,36,38,37,20,15,16,2,88,163,36, 38,58,38,2,5,223,0,33,66,80,159,36,39,37,20,15,16,2,20,25,96, 2,6,88,163,8,36,39,8,25,8,32,9,223,0,33,73,88,163,36,38,47, 52,9,223,0,33,74,88,163,36,37,46,52,9,223,0,33,75,80,159,36,40, -37,20,15,16,2,27,248,22,189,15,248,22,160,8,27,28,249,22,161,9,247, -22,173,8,2,35,6,1,1,59,6,1,1,58,250,22,130,8,6,14,14,40, +37,20,15,16,2,27,248,22,137,16,248,22,161,8,27,28,249,22,162,9,247, +22,174,8,2,35,6,1,1,59,6,1,1,58,250,22,131,8,6,14,14,40, 91,94,126,97,93,42,41,126,97,40,46,42,41,23,196,2,23,196,1,88,163, 8,36,38,48,11,2,7,223,0,33,79,80,159,36,41,37,20,15,16,2,32, 0,88,163,8,36,38,47,11,2,8,222,33,80,80,159,36,42,37,20,15,16, @@ -695,7 +695,7 @@ 15,16,2,32,0,88,163,8,36,38,46,11,2,10,222,33,83,80,159,36,44, 37,20,15,16,2,88,163,45,39,49,8,128,16,2,11,223,0,33,85,80,159, 36,45,37,20,15,16,2,88,163,45,40,50,8,128,16,2,13,223,0,33,87, -80,159,36,47,37,20,15,16,2,248,22,180,15,70,108,105,110,107,115,45,102, +80,159,36,47,37,20,15,16,2,248,22,128,16,70,108,105,110,107,115,45,102, 105,108,101,80,159,36,48,37,20,15,16,2,247,22,140,2,80,158,36,49,20, 15,16,2,2,88,80,158,36,50,20,15,16,2,248,80,159,37,52,37,88,163, 36,36,49,8,240,16,0,6,0,9,223,1,33,89,80,159,36,51,37,20,15, @@ -728,7 +728,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 13106); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,52,46,51,84,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,52,46,52,84,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,14,0,0,0,1,0,0,15,0,40,0, 57,0,75,0,97,0,120,0,140,0,162,0,171,0,180,0,187,0,196,0,203, 0,0,0,229,1,0,0,74,35,37,112,108,97,99,101,45,115,116,114,117,99, @@ -747,8 +747,8 @@ 16,2,2,5,2,6,38,11,11,11,16,5,2,3,2,7,2,8,2,4,2, 2,16,5,11,11,11,11,11,16,5,2,3,2,7,2,8,2,4,2,2,41, 41,37,12,11,11,16,0,16,0,16,0,36,36,11,12,11,11,16,0,16,0, -16,0,36,36,16,3,20,15,16,6,253,22,144,11,2,3,11,38,36,11,248, -22,89,249,22,79,22,131,11,88,163,36,37,45,44,9,223,9,33,9,80,159, +16,0,36,36,16,3,20,15,16,6,253,22,145,11,2,3,11,38,36,11,248, +22,89,249,22,79,22,132,11,88,163,36,37,45,44,9,223,9,33,9,80,159, 36,36,37,80,159,36,37,37,80,159,36,38,37,80,159,36,39,37,80,159,36, 40,37,20,15,16,2,20,27,158,88,163,36,37,45,44,9,223,0,33,10,88, 163,36,37,45,44,9,223,0,33,11,80,159,36,41,37,20,15,16,2,20,27, @@ -758,8 +758,8 @@ EVAL_ONE_SIZED_STR((char *)expr, 555); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,52,46,51,84,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,103,0,0,0,1,0,0,7,0,18,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,52,46,52,84,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,104,0,0,0,1,0,0,7,0,18,0, 45,0,51,0,60,0,67,0,89,0,102,0,128,0,145,0,167,0,175,0,187, 0,202,0,218,0,236,0,0,1,12,1,28,1,51,1,63,1,94,1,101,1, 106,1,111,1,129,1,135,1,140,1,145,1,154,1,160,1,165,1,169,1,184, @@ -768,465 +768,473 @@ 12,5,13,56,13,147,13,163,13,179,13,193,13,209,13,37,14,53,14,69,14, 85,14,169,14,90,15,106,15,190,15,204,16,96,17,180,17,101,18,114,18,11, 19,195,19,21,20,149,20,210,20,218,20,229,20,7,22,21,22,49,22,62,22, -1,23,14,23,83,23,105,23,125,23,187,23,197,23,211,23,248,23,91,24,95, -24,201,24,195,32,248,32,16,33,40,33,0,0,38,37,0,0,66,35,37,98, -111,111,116,70,100,108,108,45,115,117,102,102,105,120,1,25,100,101,102,97,117, -108,116,45,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,65, -113,117,111,116,101,68,35,37,112,97,114,97,109,122,29,94,2,4,2,5,11, -1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101, -121,29,94,2,4,67,35,37,117,116,105,108,115,11,1,24,45,109,111,100,117, -108,101,45,104,97,115,104,45,116,97,98,108,101,45,116,97,98,108,101,76,114, -101,103,105,115,116,101,114,45,122,111,45,112,97,116,104,1,20,100,101,102,97, -117,108,116,45,114,101,97,100,101,114,45,103,117,97,114,100,67,67,65,67,72, -69,45,78,71,45,112,97,116,104,45,99,97,99,104,101,74,112,97,116,104,45, -99,97,99,104,101,45,103,101,116,75,112,97,116,104,45,99,97,99,104,101,45, -115,101,116,33,77,45,108,111,97,100,105,110,103,45,102,105,108,101,110,97,109, -101,79,45,108,111,97,100,105,110,103,45,112,114,111,109,112,116,45,116,97,103, -71,45,112,114,101,118,45,114,101,108,116,111,75,45,112,114,101,118,45,114,101, -108,116,111,45,100,105,114,1,21,115,112,108,105,116,45,114,101,108,97,116,105, -118,101,45,115,116,114,105,110,103,71,111,114,105,103,45,112,97,114,97,109,122, -1,29,115,116,97,110,100,97,114,100,45,109,111,100,117,108,101,45,110,97,109, -101,45,114,101,115,111,108,118,101,114,29,94,2,4,2,5,11,64,98,111,111, -116,64,115,101,97,108,77,108,111,97,100,47,117,115,101,45,99,111,109,112,105, -108,101,100,5,4,46,114,107,116,64,115,97,109,101,5,3,46,122,111,6,6, -6,110,97,116,105,118,101,65,105,108,111,111,112,64,108,111,111,112,63,108,105, -98,6,12,12,109,111,100,117,108,101,45,112,97,116,104,63,66,115,117,98,109, -111,100,6,2,2,46,46,6,1,1,46,64,102,105,108,101,66,112,108,97,110, -101,116,6,8,8,109,97,105,110,46,114,107,116,6,4,4,46,114,107,116,67, -105,103,110,111,114,101,100,250,22,158,15,28,249,22,161,9,23,201,2,2,28, -86,94,23,199,1,23,197,1,28,248,22,162,15,23,200,2,249,22,158,15,23, -199,1,23,201,1,249,80,159,43,42,39,23,199,1,23,201,1,23,200,1,249, -80,159,43,43,39,23,198,1,2,29,250,22,158,15,28,249,22,161,9,23,201, -2,2,28,86,94,23,199,1,23,197,1,28,248,22,162,15,23,200,2,249,22, -158,15,23,199,1,23,201,1,249,80,159,43,42,39,23,199,1,23,201,1,23, -200,1,249,80,159,43,43,39,23,198,1,2,29,252,22,158,15,28,249,22,161, -9,23,203,2,2,28,86,94,23,201,1,23,199,1,28,248,22,162,15,23,202, -2,249,22,158,15,23,201,1,23,203,1,249,80,159,45,42,39,23,201,1,23, -203,1,23,202,1,2,30,247,22,174,8,249,80,159,45,43,39,23,200,1,80, -159,45,36,38,252,22,158,15,28,249,22,161,9,23,203,2,2,28,86,94,23, -201,1,23,199,1,28,248,22,162,15,23,202,2,249,22,158,15,23,201,1,23, -203,1,249,80,159,45,42,39,23,201,1,23,203,1,23,202,1,2,30,247,22, -174,8,249,80,159,45,43,39,23,200,1,80,159,45,36,38,27,252,22,158,15, -28,249,22,161,9,23,201,2,2,28,86,94,23,199,1,23,201,1,28,248,22, -162,15,23,200,2,249,22,158,15,23,203,1,23,201,1,249,80,159,47,42,39, -23,203,1,23,201,1,23,203,1,2,30,247,22,174,8,249,80,159,47,43,39, -23,202,1,80,159,47,36,38,27,250,22,175,15,196,11,32,0,88,163,8,36, -36,41,11,9,222,11,28,192,249,22,79,195,194,11,249,22,5,20,20,96,88, -163,8,36,37,54,8,129,3,9,226,5,3,2,6,33,47,23,199,1,23,195, -1,23,196,1,23,197,1,27,252,22,158,15,28,249,22,161,9,23,201,2,2, -28,86,94,23,199,1,23,201,1,28,248,22,162,15,23,200,2,249,22,158,15, -23,203,1,23,201,1,249,80,159,47,42,39,23,203,1,23,201,1,23,203,1, -2,30,247,22,174,8,249,80,159,47,43,39,23,202,1,80,159,47,36,38,27, -250,22,175,15,196,11,32,0,88,163,8,36,36,41,11,9,222,11,28,192,249, -22,79,195,194,11,249,22,5,20,20,96,88,163,8,36,37,54,8,129,3,9, -226,5,3,2,6,33,49,23,199,1,23,195,1,23,196,1,23,197,1,27,250, -22,158,15,28,249,22,161,9,23,199,2,2,28,86,94,23,197,1,23,199,1, -28,248,22,162,15,23,198,2,249,22,158,15,23,201,1,23,199,1,249,80,159, -45,42,39,23,201,1,23,199,1,23,201,1,249,80,159,45,43,39,23,200,1, -2,29,27,250,22,175,15,196,11,32,0,88,163,8,36,36,41,11,9,222,11, -28,192,249,22,79,195,194,11,249,22,5,20,20,96,88,163,8,36,37,52,8, -128,3,9,226,5,3,2,6,33,51,23,199,1,23,195,1,23,196,1,23,197, -1,27,250,22,158,15,28,249,22,161,9,23,199,2,2,28,86,94,23,197,1, -23,199,1,28,248,22,162,15,23,198,2,249,22,158,15,23,201,1,23,199,1, -249,80,159,45,42,39,23,201,1,23,199,1,23,201,1,249,80,159,45,43,39, -23,200,1,2,29,27,250,22,175,15,196,11,32,0,88,163,8,36,36,41,11, -9,222,11,28,192,249,22,79,195,194,11,249,22,5,20,20,96,88,163,8,36, -37,52,8,128,3,9,226,5,3,2,6,33,53,23,199,1,23,195,1,23,196, -1,23,197,1,86,95,28,248,80,159,37,40,39,23,195,2,12,250,22,134,10, -2,26,6,12,12,112,97,116,104,45,115,116,114,105,110,103,63,23,197,2,28, -28,23,195,2,28,248,22,64,23,196,2,10,28,248,22,88,23,196,2,28,249, -22,130,4,248,22,92,23,198,2,37,28,28,248,22,64,248,22,80,23,197,2, -10,248,22,159,9,248,22,184,17,23,197,2,249,22,4,22,64,248,22,185,17, -23,198,2,11,11,11,10,12,250,22,134,10,2,26,6,71,71,40,111,114,47, -99,32,35,102,32,115,121,109,98,111,108,63,32,40,99,111,110,115,47,99,32, -40,111,114,47,99,32,35,102,32,115,121,109,98,111,108,63,41,32,40,110,111, -110,45,101,109,112,116,121,45,108,105,115,116,111,102,32,115,121,109,98,111,108, -63,41,41,41,23,197,2,27,28,23,196,2,247,22,189,4,11,27,28,23,194, -2,250,22,160,2,80,158,41,41,248,22,154,16,247,22,176,13,11,11,27,28, -23,194,2,250,22,160,2,248,22,81,23,198,2,23,198,2,11,11,28,23,193, -2,86,96,23,197,1,23,195,1,23,194,1,20,13,159,80,159,39,38,37,250, -80,159,42,39,37,249,22,33,11,80,159,44,38,37,22,190,4,248,22,104,23, -197,2,27,248,22,113,23,195,2,20,13,159,80,159,40,38,37,250,80,159,43, -39,37,249,22,33,11,80,159,45,38,37,22,174,5,28,248,22,140,15,23,197, -2,23,196,1,86,94,23,196,1,247,22,181,15,249,247,22,172,5,248,22,80, -23,197,1,23,201,1,86,94,23,193,1,90,159,47,11,89,161,37,36,11,28, -248,22,164,15,23,209,2,23,208,2,27,247,22,174,5,28,23,193,2,249,22, -165,15,23,211,2,23,195,1,23,209,2,89,161,39,37,11,248,22,161,15,23, -209,1,86,94,23,196,1,89,161,38,40,11,28,23,209,2,27,248,22,145,15, -23,197,2,19,248,22,140,8,23,195,2,28,28,249,22,132,4,23,195,4,40, -249,22,143,8,2,27,249,22,146,8,23,198,2,249,22,184,3,23,199,4,40, -11,249,22,7,23,199,2,248,22,149,15,249,22,147,8,250,22,146,8,23,202, -1,36,249,22,184,3,23,203,4,40,5,3,46,115,115,249,22,7,23,199,2, -11,2,249,22,7,23,197,2,11,89,161,37,42,11,28,249,22,161,9,23,199, -2,23,197,2,23,193,2,249,22,158,15,23,196,2,23,199,2,89,161,37,43, -11,28,23,198,2,28,249,22,161,9,23,200,2,23,197,1,23,193,1,86,94, -23,193,1,249,22,158,15,23,196,2,23,200,2,86,94,23,195,1,11,89,161, -37,44,11,28,249,22,161,9,23,196,2,68,114,101,108,97,116,105,118,101,86, -94,23,194,1,2,28,23,194,1,89,161,37,45,11,247,22,183,15,89,161,37, -46,11,247,22,184,15,27,250,22,175,15,23,203,2,11,32,0,88,163,8,36, -36,41,11,9,222,11,27,28,23,194,2,249,22,79,23,203,2,23,196,1,86, -94,23,194,1,11,27,28,23,203,2,28,23,194,2,11,27,250,22,175,15,23, -207,2,11,32,0,88,163,8,36,36,41,11,9,222,11,28,192,249,22,79,23, -206,2,194,11,11,27,28,23,195,2,23,195,2,23,194,2,27,88,163,36,38, -51,8,128,3,62,122,111,225,19,13,9,33,43,27,88,163,36,38,51,8,128, -3,66,97,108,116,45,122,111,225,20,14,11,33,44,27,88,163,36,38,53,8, -129,3,9,225,21,15,11,33,45,27,88,163,36,38,53,8,129,3,9,225,22, -16,13,33,46,27,28,23,200,2,23,200,2,248,22,159,9,23,200,2,27,28, -23,208,2,28,23,200,2,86,94,23,201,1,23,200,2,248,22,159,9,23,202, -1,11,27,28,23,195,2,28,23,197,1,27,249,22,5,88,163,36,37,48,8, -129,3,9,226,28,23,22,18,33,48,23,217,2,27,28,23,202,2,11,193,28, -192,192,28,193,28,23,202,2,28,249,22,132,4,248,22,81,196,248,22,81,23, -205,2,193,11,11,11,11,86,94,23,197,1,11,28,23,193,2,86,108,23,217, -1,23,216,1,23,214,1,23,213,1,23,211,1,23,210,1,23,209,1,23,208, -1,23,201,1,23,200,1,23,199,1,23,198,1,23,196,1,23,195,1,23,194, -1,20,13,159,80,159,8,25,38,37,250,80,159,8,28,39,37,249,22,33,11, -80,159,8,30,38,37,22,190,4,11,20,13,159,80,159,8,25,38,37,250,80, -159,8,28,39,37,249,22,33,11,80,159,8,30,38,37,22,174,5,28,248,22, -140,15,23,216,2,23,215,1,86,94,23,215,1,247,22,181,15,249,247,22,188, -15,248,22,80,23,196,1,23,222,1,86,94,23,193,1,27,28,23,195,2,28, -23,197,1,27,249,22,5,88,163,36,37,48,8,129,3,9,226,29,24,23,20, -33,50,23,218,2,27,28,23,204,2,11,193,28,192,192,28,193,28,203,28,249, -22,132,4,248,22,81,196,248,22,81,206,193,11,11,11,11,86,94,23,197,1, -11,28,23,193,2,86,105,23,218,1,23,217,1,23,215,1,23,214,1,23,211, -1,23,210,1,23,209,1,23,201,1,23,200,1,23,199,1,23,196,1,23,195, -1,20,13,159,80,159,8,26,38,37,250,80,159,8,29,39,37,249,22,33,11, -80,159,8,31,38,37,22,190,4,23,215,1,20,13,159,80,159,8,26,38,37, -250,80,159,8,29,39,37,249,22,33,11,80,159,8,31,38,37,22,174,5,28, -248,22,140,15,23,217,2,23,216,1,86,94,23,216,1,247,22,181,15,249,247, -22,188,15,248,22,80,23,196,1,23,223,1,86,94,23,193,1,27,28,23,197, -2,28,23,201,1,27,249,22,5,20,20,94,88,163,36,37,48,8,128,3,9, -226,30,25,24,20,33,52,23,213,1,23,219,2,27,28,23,204,2,11,193,28, -192,192,28,193,28,23,204,2,28,249,22,132,4,248,22,81,196,248,22,81,23, -207,2,193,11,11,11,86,94,23,210,1,11,86,94,23,201,1,11,28,23,193, -2,86,102,23,216,1,23,215,1,23,213,1,23,212,1,23,211,1,23,202,1, -23,200,1,23,197,1,23,196,1,86,94,27,248,22,80,23,195,2,28,23,219, -2,250,22,158,2,248,22,81,23,223,1,23,223,1,250,22,89,23,199,1,11, -23,221,2,12,20,13,159,80,159,8,27,38,37,250,80,159,8,30,39,37,249, -22,33,11,80,159,8,32,38,37,22,190,4,11,20,13,159,80,159,8,27,38, -37,250,80,159,8,30,39,37,249,22,33,11,80,159,8,32,38,37,22,174,5, -28,248,22,140,15,23,218,2,23,217,1,86,94,23,217,1,247,22,181,15,249, -247,22,172,5,248,22,184,17,23,196,1,23,224,32,0,0,0,1,86,94,23, -193,1,27,28,23,197,1,28,23,201,1,27,249,22,5,20,20,95,88,163,36, -37,48,8,128,3,9,226,31,26,25,22,33,54,23,215,1,23,219,1,23,220, -1,27,28,23,205,2,11,193,28,192,192,28,193,28,204,28,249,22,132,4,248, -22,81,196,248,22,81,23,15,193,11,11,11,86,96,23,217,1,23,216,1,23, -212,1,11,86,94,23,201,1,11,28,23,193,2,86,95,23,213,1,23,198,1, -86,94,27,248,22,80,23,195,2,28,23,220,2,250,22,158,2,248,22,81,23, -224,32,0,0,0,1,23,224,32,0,0,0,1,250,22,89,23,199,1,23,221, -2,23,222,2,12,20,13,159,80,159,8,28,38,37,250,80,159,8,31,39,37, -249,22,33,11,80,159,8,33,38,37,22,190,4,23,217,1,20,13,159,80,159, -8,28,38,37,250,80,159,8,31,39,37,249,22,33,11,80,159,8,33,38,37, -22,174,5,28,248,22,140,15,23,219,2,23,218,1,86,94,23,218,1,247,22, -181,15,249,247,22,172,5,248,22,184,17,23,196,1,23,224,33,0,0,0,1, -86,94,23,193,1,28,28,248,22,77,23,224,32,0,0,0,2,248,22,184,17, -23,224,32,0,0,0,2,10,27,28,23,199,2,86,94,23,215,1,23,214,1, -86,94,23,214,1,23,215,1,28,28,248,22,77,23,224,33,0,0,0,2,248, -22,159,9,248,22,152,15,23,195,2,11,12,20,13,159,80,159,8,29,38,37, -250,80,159,8,32,39,37,249,22,33,11,80,159,8,34,38,37,22,190,4,28, -23,224,35,0,0,0,2,28,23,202,1,11,23,196,2,86,94,23,202,1,11, -20,13,159,80,159,8,29,38,37,250,80,159,8,32,39,37,249,22,33,11,80, -159,8,34,38,37,22,174,5,28,248,22,140,15,23,220,2,23,219,1,86,94, -23,219,1,247,22,181,15,249,247,22,172,5,23,195,1,23,224,34,0,0,0, -1,12,28,23,194,2,250,22,158,2,248,22,81,23,198,1,23,196,1,250,22, -89,23,201,1,23,202,1,23,203,1,12,27,249,22,181,8,80,159,39,47,38, -249,22,191,3,248,22,187,3,248,22,173,2,200,8,128,8,27,28,193,248,22, -176,2,194,11,28,192,27,249,22,102,198,195,28,192,248,22,81,193,11,11,27, -249,22,191,3,248,22,187,3,248,22,173,2,23,199,2,8,128,8,27,249,22, -181,8,80,159,40,47,38,23,196,2,27,28,23,194,2,248,22,176,2,23,195, -1,86,94,23,194,1,11,250,22,182,8,80,159,42,47,38,23,198,1,248,22, -175,2,249,22,79,249,22,79,23,205,1,23,206,1,28,23,199,2,23,199,1, -86,94,23,199,1,9,32,59,88,164,8,38,39,51,11,2,31,36,223,3,33, -74,32,60,88,164,8,38,39,50,11,2,31,36,223,3,33,73,32,61,88,163, -8,36,37,50,11,2,32,222,33,72,32,62,88,164,8,38,39,50,11,2,31, -36,223,3,33,63,28,249,22,128,4,23,197,2,23,195,4,248,22,89,194,28, -249,22,128,9,7,47,249,22,150,7,23,198,2,23,199,2,86,94,23,193,1, -249,22,79,250,22,168,7,23,199,2,36,23,200,2,248,2,61,249,22,168,7, -23,199,1,248,22,181,3,23,201,1,250,2,62,23,196,4,23,197,1,248,22, -181,3,23,199,1,32,64,88,164,8,38,39,52,11,2,31,36,223,3,33,71, -32,65,88,164,8,38,39,51,11,2,31,36,223,3,33,68,32,66,88,164,8, -38,39,50,11,2,31,36,223,3,33,67,28,249,22,128,4,23,197,2,23,195, -4,248,22,89,194,28,249,22,128,9,7,47,249,22,150,7,23,198,2,23,199, -2,86,94,23,193,1,249,22,79,250,22,168,7,23,199,2,36,23,200,2,248, -2,61,249,22,168,7,23,199,1,248,22,181,3,23,201,1,250,2,66,23,196, -4,23,197,1,248,22,181,3,23,199,1,28,249,22,128,4,23,197,2,23,195, -4,248,22,89,194,28,249,22,128,9,7,47,249,22,150,7,23,198,2,23,199, -2,86,94,23,193,1,249,22,79,250,22,168,7,23,199,2,36,23,200,2,27, -249,22,168,7,23,199,1,248,22,181,3,23,201,1,19,248,22,149,7,23,195, -2,250,2,66,23,196,4,23,197,1,36,2,27,248,22,181,3,23,197,1,28, -249,22,128,4,23,195,2,23,196,4,248,22,89,195,28,249,22,128,9,7,47, -249,22,150,7,23,199,2,23,197,2,86,94,23,194,1,249,22,79,250,22,168, -7,23,200,2,36,23,198,2,248,2,61,249,22,168,7,23,200,1,248,22,181, -3,23,199,1,250,2,65,23,197,4,23,198,1,248,22,181,3,23,197,1,32, -69,88,164,8,38,39,50,11,2,31,36,223,3,33,70,28,249,22,128,4,23, -197,2,23,195,4,248,22,89,194,28,249,22,128,9,7,47,249,22,150,7,23, -198,2,23,199,2,86,94,23,193,1,249,22,79,250,22,168,7,23,199,2,36, -23,200,2,248,2,61,249,22,168,7,23,199,1,248,22,181,3,23,201,1,250, -2,69,23,196,4,23,197,1,248,22,181,3,23,199,1,28,249,22,128,4,23, -197,2,23,195,4,248,22,89,194,28,249,22,128,9,7,47,249,22,150,7,23, -198,2,23,199,2,86,94,23,193,1,249,22,79,250,22,168,7,23,199,2,36, -23,200,2,27,249,22,168,7,23,199,1,248,22,181,3,23,201,1,19,248,22, -149,7,23,195,2,250,2,65,23,196,4,23,197,1,36,2,27,248,22,181,3, -23,197,1,28,249,22,128,4,23,195,2,23,196,4,248,22,89,195,28,249,22, -128,9,7,47,249,22,150,7,23,199,2,23,197,2,86,94,23,194,1,249,22, -79,250,22,168,7,23,200,2,36,23,198,2,27,249,22,168,7,23,200,1,248, -22,181,3,23,199,1,19,248,22,149,7,23,195,2,250,2,69,23,196,4,23, -197,1,36,2,27,248,22,181,3,23,195,1,28,249,22,128,4,23,195,2,23, -197,4,248,22,89,196,28,249,22,128,9,7,47,249,22,150,7,23,200,2,23, -197,2,86,94,23,195,1,249,22,79,250,22,168,7,23,201,2,36,23,198,2, -248,2,61,249,22,168,7,23,201,1,248,22,181,3,23,199,1,250,2,64,23, -198,4,23,199,1,248,22,181,3,23,197,1,19,248,22,149,7,23,195,2,28, -249,22,128,4,36,23,195,4,248,22,89,194,28,249,22,128,9,7,47,249,22, -150,7,23,198,2,36,86,94,23,193,1,249,22,79,250,22,168,7,23,199,2, -36,36,27,249,22,168,7,23,199,1,37,19,248,22,149,7,23,195,2,250,2, -62,23,196,4,23,197,1,36,2,28,249,22,128,4,37,23,195,4,248,22,89, -194,28,249,22,128,9,7,47,249,22,150,7,23,198,2,37,86,94,23,193,1, -249,22,79,250,22,168,7,23,199,2,36,37,248,2,61,249,22,168,7,23,199, -1,38,250,2,64,23,196,4,23,197,1,38,2,28,249,22,128,4,23,197,2, -23,195,4,248,22,89,194,28,249,22,128,9,7,47,249,22,150,7,23,198,2, -23,199,2,86,94,23,193,1,249,22,79,250,22,168,7,23,199,2,36,23,200, -2,248,2,61,249,22,168,7,23,199,1,248,22,181,3,23,201,1,250,2,60, +1,23,14,23,147,23,169,23,189,23,251,23,5,24,19,24,56,24,155,24,159, +24,166,24,120,25,111,33,164,33,188,33,212,33,0,0,210,37,0,0,66,35, +37,98,111,111,116,70,100,108,108,45,115,117,102,102,105,120,1,25,100,101,102, +97,117,108,116,45,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101, +100,65,113,117,111,116,101,68,35,37,112,97,114,97,109,122,29,94,2,4,2, +5,11,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45, +107,101,121,29,94,2,4,67,35,37,117,116,105,108,115,11,1,24,45,109,111, +100,117,108,101,45,104,97,115,104,45,116,97,98,108,101,45,116,97,98,108,101, +76,114,101,103,105,115,116,101,114,45,122,111,45,112,97,116,104,1,20,100,101, +102,97,117,108,116,45,114,101,97,100,101,114,45,103,117,97,114,100,67,67,65, +67,72,69,45,78,71,45,112,97,116,104,45,99,97,99,104,101,74,112,97,116, +104,45,99,97,99,104,101,45,103,101,116,75,112,97,116,104,45,99,97,99,104, +101,45,115,101,116,33,77,45,108,111,97,100,105,110,103,45,102,105,108,101,110, +97,109,101,79,45,108,111,97,100,105,110,103,45,112,114,111,109,112,116,45,116, +97,103,71,45,112,114,101,118,45,114,101,108,116,111,75,45,112,114,101,118,45, +114,101,108,116,111,45,100,105,114,1,21,115,112,108,105,116,45,114,101,108,97, +116,105,118,101,45,115,116,114,105,110,103,71,111,114,105,103,45,112,97,114,97, +109,122,1,29,115,116,97,110,100,97,114,100,45,109,111,100,117,108,101,45,110, +97,109,101,45,114,101,115,111,108,118,101,114,29,94,2,4,2,5,11,64,98, +111,111,116,64,115,101,97,108,77,108,111,97,100,47,117,115,101,45,99,111,109, +112,105,108,101,100,5,4,46,114,107,116,64,115,97,109,101,5,3,46,122,111, +6,6,6,110,97,116,105,118,101,65,105,108,111,111,112,64,108,111,111,112,63, +108,105,98,6,12,12,109,111,100,117,108,101,45,112,97,116,104,63,66,115,117, +98,109,111,100,6,2,2,46,46,6,1,1,46,64,102,105,108,101,66,112,108, +97,110,101,116,6,8,8,109,97,105,110,46,114,107,116,6,4,4,46,114,107, +116,67,105,103,110,111,114,101,100,250,22,170,15,28,249,22,162,9,23,201,2, +2,28,86,94,23,199,1,23,197,1,28,248,22,174,15,23,200,2,249,22,170, +15,23,199,1,23,201,1,249,80,159,43,42,39,23,199,1,23,201,1,23,200, +1,249,80,159,43,43,39,23,198,1,2,29,250,22,170,15,28,249,22,162,9, +23,201,2,2,28,86,94,23,199,1,23,197,1,28,248,22,174,15,23,200,2, +249,22,170,15,23,199,1,23,201,1,249,80,159,43,42,39,23,199,1,23,201, +1,23,200,1,249,80,159,43,43,39,23,198,1,2,29,252,22,170,15,28,249, +22,162,9,23,203,2,2,28,86,94,23,201,1,23,199,1,28,248,22,174,15, +23,202,2,249,22,170,15,23,201,1,23,203,1,249,80,159,45,42,39,23,201, +1,23,203,1,23,202,1,2,30,247,22,175,8,249,80,159,45,43,39,23,200, +1,80,159,45,36,38,252,22,170,15,28,249,22,162,9,23,203,2,2,28,86, +94,23,201,1,23,199,1,28,248,22,174,15,23,202,2,249,22,170,15,23,201, +1,23,203,1,249,80,159,45,42,39,23,201,1,23,203,1,23,202,1,2,30, +247,22,175,8,249,80,159,45,43,39,23,200,1,80,159,45,36,38,27,252,22, +170,15,28,249,22,162,9,23,201,2,2,28,86,94,23,199,1,23,201,1,28, +248,22,174,15,23,200,2,249,22,170,15,23,203,1,23,201,1,249,80,159,47, +42,39,23,203,1,23,201,1,23,203,1,2,30,247,22,175,8,249,80,159,47, +43,39,23,202,1,80,159,47,36,38,27,250,22,187,15,196,11,32,0,88,163, +8,36,36,41,11,9,222,11,28,192,249,22,79,195,194,11,249,22,5,20,20, +96,88,163,8,36,37,54,8,129,3,9,226,5,3,2,6,33,47,23,199,1, +23,195,1,23,196,1,23,197,1,27,252,22,170,15,28,249,22,162,9,23,201, +2,2,28,86,94,23,199,1,23,201,1,28,248,22,174,15,23,200,2,249,22, +170,15,23,203,1,23,201,1,249,80,159,47,42,39,23,203,1,23,201,1,23, +203,1,2,30,247,22,175,8,249,80,159,47,43,39,23,202,1,80,159,47,36, +38,27,250,22,187,15,196,11,32,0,88,163,8,36,36,41,11,9,222,11,28, +192,249,22,79,195,194,11,249,22,5,20,20,96,88,163,8,36,37,54,8,129, +3,9,226,5,3,2,6,33,49,23,199,1,23,195,1,23,196,1,23,197,1, +27,250,22,170,15,28,249,22,162,9,23,199,2,2,28,86,94,23,197,1,23, +199,1,28,248,22,174,15,23,198,2,249,22,170,15,23,201,1,23,199,1,249, +80,159,45,42,39,23,201,1,23,199,1,23,201,1,249,80,159,45,43,39,23, +200,1,2,29,27,250,22,187,15,196,11,32,0,88,163,8,36,36,41,11,9, +222,11,28,192,249,22,79,195,194,11,249,22,5,20,20,96,88,163,8,36,37, +52,8,128,3,9,226,5,3,2,6,33,51,23,199,1,23,195,1,23,196,1, +23,197,1,27,250,22,170,15,28,249,22,162,9,23,199,2,2,28,86,94,23, +197,1,23,199,1,28,248,22,174,15,23,198,2,249,22,170,15,23,201,1,23, +199,1,249,80,159,45,42,39,23,201,1,23,199,1,23,201,1,249,80,159,45, +43,39,23,200,1,2,29,27,250,22,187,15,196,11,32,0,88,163,8,36,36, +41,11,9,222,11,28,192,249,22,79,195,194,11,249,22,5,20,20,96,88,163, +8,36,37,52,8,128,3,9,226,5,3,2,6,33,53,23,199,1,23,195,1, +23,196,1,23,197,1,86,95,28,248,80,159,37,40,39,23,195,2,12,250,22, +135,10,2,26,6,12,12,112,97,116,104,45,115,116,114,105,110,103,63,23,197, +2,28,28,23,195,2,28,248,22,64,23,196,2,10,28,248,22,88,23,196,2, +28,249,22,130,4,248,22,92,23,198,2,37,28,28,248,22,64,248,22,80,23, +197,2,10,248,22,160,9,248,22,132,18,23,197,2,249,22,4,22,64,248,22, +133,18,23,198,2,11,11,11,10,12,250,22,135,10,2,26,6,71,71,40,111, +114,47,99,32,35,102,32,115,121,109,98,111,108,63,32,40,99,111,110,115,47, +99,32,40,111,114,47,99,32,35,102,32,115,121,109,98,111,108,63,41,32,40, +110,111,110,45,101,109,112,116,121,45,108,105,115,116,111,102,32,115,121,109,98, +111,108,63,41,41,41,23,197,2,27,28,23,196,2,247,22,189,4,11,27,28, +23,194,2,250,22,160,2,80,158,41,41,248,22,166,16,247,22,188,13,11,11, +27,28,23,194,2,250,22,160,2,248,22,81,23,198,2,23,198,2,11,11,28, +23,193,2,86,96,23,197,1,23,195,1,23,194,1,20,13,159,80,159,39,38, +37,250,80,159,42,39,37,249,22,33,11,80,159,44,38,37,22,190,4,248,22, +104,23,197,2,27,248,22,113,23,195,2,20,13,159,80,159,40,38,37,250,80, +159,43,39,37,249,22,33,11,80,159,45,38,37,22,175,5,28,248,22,152,15, +23,197,2,23,196,1,86,94,23,196,1,247,22,129,16,249,247,22,173,5,248, +22,80,23,197,1,23,201,1,86,94,23,193,1,90,159,47,11,89,161,37,36, +11,28,248,22,176,15,23,209,2,23,208,2,27,247,22,175,5,28,23,193,2, +249,22,177,15,23,211,2,23,195,1,23,209,2,89,161,39,37,11,248,22,173, +15,23,209,1,86,94,23,196,1,89,161,38,40,11,28,23,209,2,27,248,22, +157,15,23,197,2,19,248,22,141,8,23,195,2,28,28,249,22,132,4,23,195, +4,40,249,22,144,8,2,27,249,22,147,8,23,198,2,249,22,184,3,23,199, +4,40,11,249,22,7,23,199,2,248,22,161,15,249,22,148,8,250,22,147,8, +23,202,1,36,249,22,184,3,23,203,4,40,5,3,46,115,115,249,22,7,23, +199,2,11,2,249,22,7,23,197,2,11,89,161,37,42,11,28,249,22,162,9, +23,199,2,23,197,2,23,193,2,249,22,170,15,23,196,2,23,199,2,89,161, +37,43,11,28,23,198,2,28,249,22,162,9,23,200,2,23,197,1,23,193,1, +86,94,23,193,1,249,22,170,15,23,196,2,23,200,2,86,94,23,195,1,11, +89,161,37,44,11,28,249,22,162,9,23,196,2,68,114,101,108,97,116,105,118, +101,86,94,23,194,1,2,28,23,194,1,89,161,37,45,11,247,22,131,16,89, +161,37,46,11,247,22,132,16,27,250,22,187,15,23,203,2,11,32,0,88,163, +8,36,36,41,11,9,222,11,27,28,23,194,2,249,22,79,23,203,2,23,196, +1,86,94,23,194,1,11,27,28,23,203,2,28,23,194,2,11,27,250,22,187, +15,23,207,2,11,32,0,88,163,8,36,36,41,11,9,222,11,28,192,249,22, +79,23,206,2,194,11,11,27,28,23,195,2,23,195,2,23,194,2,27,88,163, +36,38,51,8,128,3,62,122,111,225,19,13,9,33,43,27,88,163,36,38,51, +8,128,3,66,97,108,116,45,122,111,225,20,14,11,33,44,27,88,163,36,38, +53,8,129,3,9,225,21,15,11,33,45,27,88,163,36,38,53,8,129,3,9, +225,22,16,13,33,46,27,28,23,200,2,23,200,2,248,22,160,9,23,200,2, +27,28,23,208,2,28,23,200,2,86,94,23,201,1,23,200,2,248,22,160,9, +23,202,1,11,27,28,23,195,2,28,23,197,1,27,249,22,5,88,163,36,37, +48,8,129,3,9,226,28,23,22,18,33,48,23,217,2,27,28,23,202,2,11, +193,28,192,192,28,193,28,23,202,2,28,249,22,132,4,248,22,81,196,248,22, +81,23,205,2,193,11,11,11,11,86,94,23,197,1,11,28,23,193,2,86,108, +23,217,1,23,216,1,23,214,1,23,213,1,23,211,1,23,210,1,23,209,1, +23,208,1,23,201,1,23,200,1,23,199,1,23,198,1,23,196,1,23,195,1, +23,194,1,20,13,159,80,159,8,25,38,37,250,80,159,8,28,39,37,249,22, +33,11,80,159,8,30,38,37,22,190,4,11,20,13,159,80,159,8,25,38,37, +250,80,159,8,28,39,37,249,22,33,11,80,159,8,30,38,37,22,175,5,28, +248,22,152,15,23,216,2,23,215,1,86,94,23,215,1,247,22,129,16,249,247, +22,136,16,248,22,80,23,196,1,23,222,1,86,94,23,193,1,27,28,23,195, +2,28,23,197,1,27,249,22,5,88,163,36,37,48,8,129,3,9,226,29,24, +23,20,33,50,23,218,2,27,28,23,204,2,11,193,28,192,192,28,193,28,203, +28,249,22,132,4,248,22,81,196,248,22,81,206,193,11,11,11,11,86,94,23, +197,1,11,28,23,193,2,86,105,23,218,1,23,217,1,23,215,1,23,214,1, +23,211,1,23,210,1,23,209,1,23,201,1,23,200,1,23,199,1,23,196,1, +23,195,1,20,13,159,80,159,8,26,38,37,250,80,159,8,29,39,37,249,22, +33,11,80,159,8,31,38,37,22,190,4,23,215,1,20,13,159,80,159,8,26, +38,37,250,80,159,8,29,39,37,249,22,33,11,80,159,8,31,38,37,22,175, +5,28,248,22,152,15,23,217,2,23,216,1,86,94,23,216,1,247,22,129,16, +249,247,22,136,16,248,22,80,23,196,1,23,223,1,86,94,23,193,1,27,28, +23,197,2,28,23,201,1,27,249,22,5,20,20,94,88,163,36,37,48,8,128, +3,9,226,30,25,24,20,33,52,23,213,1,23,219,2,27,28,23,204,2,11, +193,28,192,192,28,193,28,23,204,2,28,249,22,132,4,248,22,81,196,248,22, +81,23,207,2,193,11,11,11,86,94,23,210,1,11,86,94,23,201,1,11,28, +23,193,2,86,102,23,216,1,23,215,1,23,213,1,23,212,1,23,211,1,23, +202,1,23,200,1,23,197,1,23,196,1,86,94,27,248,22,80,23,195,2,28, +23,219,2,250,22,158,2,248,22,81,23,223,1,23,223,1,250,22,89,23,199, +1,11,23,221,2,12,20,13,159,80,159,8,27,38,37,250,80,159,8,30,39, +37,249,22,33,11,80,159,8,32,38,37,22,190,4,11,20,13,159,80,159,8, +27,38,37,250,80,159,8,30,39,37,249,22,33,11,80,159,8,32,38,37,22, +175,5,28,248,22,152,15,23,218,2,23,217,1,86,94,23,217,1,247,22,129, +16,249,247,22,173,5,248,22,132,18,23,196,1,23,224,32,0,0,0,1,86, +94,23,193,1,27,28,23,197,1,28,23,201,1,27,249,22,5,20,20,95,88, +163,36,37,48,8,128,3,9,226,31,26,25,22,33,54,23,215,1,23,219,1, +23,220,1,27,28,23,205,2,11,193,28,192,192,28,193,28,204,28,249,22,132, +4,248,22,81,196,248,22,81,23,15,193,11,11,11,86,96,23,217,1,23,216, +1,23,212,1,11,86,94,23,201,1,11,28,23,193,2,86,95,23,213,1,23, +198,1,86,94,27,248,22,80,23,195,2,28,23,220,2,250,22,158,2,248,22, +81,23,224,32,0,0,0,1,23,224,32,0,0,0,1,250,22,89,23,199,1, +23,221,2,23,222,2,12,20,13,159,80,159,8,28,38,37,250,80,159,8,31, +39,37,249,22,33,11,80,159,8,33,38,37,22,190,4,23,217,1,20,13,159, +80,159,8,28,38,37,250,80,159,8,31,39,37,249,22,33,11,80,159,8,33, +38,37,22,175,5,28,248,22,152,15,23,219,2,23,218,1,86,94,23,218,1, +247,22,129,16,249,247,22,173,5,248,22,132,18,23,196,1,23,224,33,0,0, +0,1,86,94,23,193,1,28,28,248,22,77,23,224,32,0,0,0,2,248,22, +132,18,23,224,32,0,0,0,2,10,27,28,23,199,2,86,94,23,215,1,23, +214,1,86,94,23,214,1,23,215,1,28,28,248,22,77,23,224,33,0,0,0, +2,248,22,160,9,248,22,164,15,23,195,2,11,12,20,13,159,80,159,8,29, +38,37,250,80,159,8,32,39,37,249,22,33,11,80,159,8,34,38,37,22,190, +4,28,23,224,35,0,0,0,2,28,23,202,1,11,23,196,2,86,94,23,202, +1,11,20,13,159,80,159,8,29,38,37,250,80,159,8,32,39,37,249,22,33, +11,80,159,8,34,38,37,22,175,5,28,248,22,152,15,23,220,2,23,219,1, +86,94,23,219,1,247,22,129,16,249,247,22,173,5,23,195,1,23,224,34,0, +0,0,1,12,28,23,194,2,250,22,158,2,248,22,81,23,198,1,23,196,1, +250,22,89,23,201,1,23,202,1,23,203,1,12,27,249,22,182,8,80,159,39, +47,38,249,22,191,3,248,22,187,3,248,22,173,2,200,8,128,8,27,28,193, +248,22,176,2,194,11,28,192,27,249,22,102,198,195,28,192,248,22,81,193,11, +11,27,249,22,191,3,248,22,187,3,248,22,173,2,23,199,2,8,128,8,27, +249,22,182,8,80,159,40,47,38,23,196,2,27,28,23,194,2,248,22,176,2, +23,195,1,86,94,23,194,1,11,250,22,183,8,80,159,42,47,38,23,198,1, +248,22,175,2,249,22,79,249,22,79,23,205,1,23,206,1,28,23,199,2,23, +199,1,86,94,23,199,1,9,32,59,88,164,8,38,39,51,11,2,31,36,223, +3,33,74,32,60,88,164,8,38,39,50,11,2,31,36,223,3,33,73,32,61, +88,163,8,36,37,50,11,2,32,222,33,72,32,62,88,164,8,38,39,50,11, +2,31,36,223,3,33,63,28,249,22,128,4,23,197,2,23,195,4,248,22,89, +194,28,249,22,129,9,7,47,249,22,151,7,23,198,2,23,199,2,86,94,23, +193,1,249,22,79,250,22,169,7,23,199,2,36,23,200,2,248,2,61,249,22, +169,7,23,199,1,248,22,181,3,23,201,1,250,2,62,23,196,4,23,197,1, +248,22,181,3,23,199,1,32,64,88,164,8,38,39,52,11,2,31,36,223,3, +33,71,32,65,88,164,8,38,39,51,11,2,31,36,223,3,33,68,32,66,88, +164,8,38,39,50,11,2,31,36,223,3,33,67,28,249,22,128,4,23,197,2, +23,195,4,248,22,89,194,28,249,22,129,9,7,47,249,22,151,7,23,198,2, +23,199,2,86,94,23,193,1,249,22,79,250,22,169,7,23,199,2,36,23,200, +2,248,2,61,249,22,169,7,23,199,1,248,22,181,3,23,201,1,250,2,66, 23,196,4,23,197,1,248,22,181,3,23,199,1,28,249,22,128,4,23,197,2, -23,195,4,248,22,89,194,28,249,22,128,9,7,47,249,22,150,7,23,198,2, -23,199,2,86,94,23,193,1,249,22,79,250,22,168,7,23,199,2,36,23,200, -2,27,249,22,168,7,23,199,1,248,22,181,3,23,201,1,19,248,22,149,7, -23,195,2,250,2,60,23,196,4,23,197,1,36,2,27,248,22,181,3,23,197, -1,28,249,22,128,4,23,195,2,23,196,4,248,22,89,195,28,249,22,128,9, -7,47,249,22,150,7,23,199,2,23,197,2,86,94,23,194,1,249,22,79,250, -22,168,7,23,200,2,36,23,198,2,248,2,61,249,22,168,7,23,200,1,248, -22,181,3,23,199,1,250,2,59,23,197,4,23,198,1,248,22,181,3,23,197, -1,32,75,88,163,36,37,55,11,2,32,222,33,76,28,248,22,87,248,22,81, -23,195,2,249,22,7,9,248,22,184,17,23,196,1,90,159,38,11,89,161,38, -36,11,27,248,22,185,17,23,197,2,28,248,22,87,248,22,81,23,195,2,249, -22,7,9,248,22,184,17,195,90,159,38,11,89,161,38,36,11,27,248,22,185, -17,196,28,248,22,87,248,22,81,23,195,2,249,22,7,9,248,22,184,17,195, -90,159,38,11,89,161,38,36,11,248,2,75,248,22,185,17,196,249,22,7,249, -22,79,248,22,184,17,199,196,195,249,22,7,249,22,79,248,22,184,17,199,196, -195,249,22,7,249,22,79,248,22,184,17,23,200,1,23,197,1,23,196,1,27, -19,248,22,149,7,23,196,2,250,2,59,23,196,4,23,198,1,36,2,28,23, -195,1,192,28,248,22,87,248,22,81,23,195,2,249,22,7,9,248,22,184,17, -23,196,1,27,248,22,185,17,23,195,2,90,159,38,11,89,161,38,36,11,28, -248,22,87,248,22,81,23,197,2,249,22,7,9,248,22,184,17,23,198,1,27, -248,22,185,17,23,197,2,90,159,38,11,89,161,38,36,11,28,248,22,87,248, -22,81,23,197,2,249,22,7,9,248,22,184,17,197,90,159,38,11,89,161,38, -36,11,248,2,75,248,22,185,17,198,249,22,7,249,22,79,248,22,184,17,201, -196,195,249,22,7,249,22,79,248,22,184,17,23,203,1,196,195,249,22,7,249, -22,79,248,22,184,17,23,201,1,23,197,1,23,196,1,28,24,194,2,12,20, -13,159,80,159,36,57,37,80,158,36,55,89,161,37,37,10,249,22,191,4,21, -94,2,33,6,19,19,112,108,97,110,101,116,47,114,101,115,111,108,118,101,114, -46,114,107,116,1,27,112,108,97,110,101,116,45,109,111,100,117,108,101,45,110, -97,109,101,45,114,101,115,111,108,118,101,114,12,27,28,23,195,2,28,249,22, -161,9,23,197,2,80,158,39,52,86,94,23,195,1,80,158,37,53,27,248,22, -150,5,23,197,2,27,28,248,22,77,23,195,2,248,22,184,17,23,195,1,23, -194,1,28,248,22,140,15,23,194,2,90,159,39,11,89,161,39,36,11,248,22, -161,15,23,197,1,86,95,20,18,159,11,80,158,42,52,199,20,18,159,11,80, -158,42,53,192,192,11,11,28,23,193,2,192,86,94,23,193,1,27,247,22,174, -5,28,23,193,2,192,86,94,23,193,1,247,22,181,15,90,159,39,11,89,161, -39,36,11,248,22,161,15,23,198,2,86,95,23,195,1,23,193,1,28,249,22, -129,16,0,11,35,114,120,34,91,46,93,115,115,36,34,248,22,145,15,23,197, -1,249,80,159,41,58,39,23,199,1,2,27,196,249,80,159,38,54,39,195,10, -249,22,14,23,196,1,80,159,38,51,38,86,96,28,248,22,148,5,23,196,2, -12,250,22,134,10,2,22,6,21,21,114,101,115,111,108,118,101,100,45,109,111, -100,117,108,101,45,112,97,116,104,63,23,198,2,28,28,23,196,2,248,22,177, -13,23,197,2,10,12,250,22,134,10,2,22,6,20,20,40,111,114,47,99,32, -35,102,32,110,97,109,101,115,112,97,99,101,63,41,23,199,2,28,24,193,2, -248,24,194,1,23,196,2,86,94,23,193,1,12,27,250,22,160,2,80,159,41, -41,38,248,22,154,16,247,22,176,13,11,27,28,23,194,2,23,194,1,86,94, -23,194,1,27,249,22,79,247,22,140,2,247,22,140,2,86,94,250,22,158,2, -80,159,43,41,38,248,22,154,16,247,22,176,13,195,192,86,94,250,22,158,2, -248,22,80,23,197,2,23,200,2,68,100,101,99,108,97,114,101,100,28,23,198, -2,27,28,248,22,77,248,22,150,5,23,200,2,248,22,149,5,248,22,80,248, -22,150,5,23,201,1,23,198,1,27,250,22,160,2,80,159,44,41,38,248,22, -154,16,23,204,1,11,28,23,193,2,27,250,22,160,2,248,22,81,23,198,1, -23,198,2,11,28,23,193,2,250,22,158,2,248,22,185,17,23,200,1,23,198, -1,23,196,1,12,12,12,251,24,197,1,23,198,1,23,199,1,23,200,1,10, -32,85,88,163,36,38,47,11,76,102,108,97,116,116,101,110,45,115,117,98,45, -112,97,116,104,222,33,88,32,86,88,163,36,40,54,11,2,32,222,33,87,28, -248,22,87,23,197,2,28,248,22,87,195,192,249,22,79,194,248,22,94,197,28, -249,22,163,9,248,22,80,23,199,2,2,36,28,248,22,87,23,196,2,86,95, -23,196,1,23,195,1,250,22,130,10,2,22,6,37,37,116,111,111,32,109,97, -110,121,32,34,46,46,34,115,32,105,110,32,115,117,98,109,111,100,117,108,101, -32,112,97,116,104,58,32,126,46,115,250,22,90,2,35,28,249,22,163,9,23, -201,2,2,37,23,199,1,28,248,22,140,15,23,200,2,23,199,1,249,22,89, -28,248,22,64,23,202,2,2,4,2,38,23,201,1,23,200,1,251,2,86,23, -197,1,23,198,1,248,22,81,23,200,1,248,22,185,17,23,201,1,251,2,86, -23,197,1,23,198,1,249,22,79,248,22,184,17,23,203,2,23,201,1,248,22, -185,17,23,201,1,251,2,86,23,197,1,23,198,2,9,23,198,1,27,249,22, -169,7,6,31,31,115,116,97,110,100,97,114,100,45,109,111,100,117,108,101,45, -110,97,109,101,45,114,101,115,111,108,118,101,114,58,32,23,197,1,28,23,194, -2,250,22,132,10,11,23,196,1,23,197,1,86,94,23,194,1,248,22,130,10, -23,194,1,28,249,22,152,7,194,2,37,2,28,28,249,22,152,7,194,2,36, -62,117,112,192,32,91,88,163,8,36,37,50,11,67,115,115,45,62,114,107,116, -222,33,92,19,248,22,149,7,194,28,249,22,132,4,23,195,4,39,28,249,22, -152,7,6,3,3,46,115,115,249,22,168,7,197,249,22,184,3,23,199,4,39, -249,22,169,7,250,22,168,7,198,36,249,22,184,3,23,200,4,39,2,41,193, -193,2,0,8,35,114,120,34,91,46,93,34,32,94,88,163,8,36,37,47,11, -2,32,222,33,95,28,248,22,87,23,194,2,9,250,22,90,6,4,4,10,32, -32,32,248,22,144,15,248,22,105,23,198,2,248,2,94,248,22,81,23,198,1, -28,249,22,163,9,248,22,81,23,200,2,23,197,1,28,249,22,161,9,248,22, -184,17,23,200,1,23,196,1,251,22,130,10,2,22,6,41,41,99,121,99,108, -101,32,105,110,32,108,111,97,100,105,110,103,10,32,32,97,116,32,112,97,116, -104,58,32,126,97,10,32,32,112,97,116,104,115,58,126,97,23,200,1,249,22, -1,22,169,7,248,2,94,248,22,94,23,201,1,12,12,247,23,193,1,20,13, -159,80,159,43,50,38,249,22,79,249,22,79,248,22,154,16,247,22,176,13,23, -201,1,23,195,1,20,13,159,80,159,43,38,37,250,80,159,46,39,37,249,22, -33,11,80,159,48,38,37,22,189,4,23,198,2,249,247,22,173,5,23,200,1, -27,248,22,67,248,22,144,15,23,201,1,28,23,202,2,28,250,22,160,2,248, -22,80,23,201,1,23,201,1,11,249,22,79,11,203,249,22,79,194,203,192,86, -94,28,248,22,158,5,23,196,2,12,28,23,197,2,250,22,132,10,11,6,15, -15,98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,23,200,2,250,22, -134,10,2,22,2,34,23,198,2,28,28,248,22,77,23,196,2,249,22,161,9, -248,22,184,17,23,198,2,2,4,11,86,97,23,198,1,23,197,1,23,196,1, -23,193,1,248,22,149,5,248,22,104,23,197,1,28,28,248,22,77,23,196,2, -28,249,22,161,9,248,22,184,17,23,198,2,2,35,28,248,22,77,248,22,104, -23,197,2,249,22,161,9,248,22,108,23,198,2,2,4,11,11,11,86,97,23, -198,1,23,197,1,23,196,1,23,193,1,248,22,149,5,249,2,85,248,22,121, -23,199,2,248,22,106,23,199,1,28,28,248,22,77,23,196,2,28,249,22,161, -9,248,22,184,17,23,198,2,2,35,28,28,249,22,163,9,248,22,104,23,198, -2,2,37,10,249,22,163,9,248,22,104,23,198,2,2,36,28,23,196,2,27, -248,22,150,5,23,198,2,28,248,22,64,193,10,28,248,22,77,193,248,22,64, -248,22,184,17,194,11,11,11,11,11,86,96,23,198,1,23,197,1,23,193,1, -27,248,22,150,5,23,198,1,248,22,149,5,249,2,85,28,248,22,77,23,197, -2,248,22,184,17,23,197,2,23,196,2,27,28,249,22,163,9,248,22,104,23, -203,2,2,36,248,22,185,17,200,248,22,106,200,28,248,22,77,23,198,2,249, -22,93,248,22,185,17,199,194,192,28,28,248,22,77,23,196,2,249,22,161,9, -248,22,184,17,23,198,2,2,39,11,86,94,248,80,159,38,8,28,39,23,194, -2,253,24,199,1,23,201,1,23,202,1,23,203,1,23,204,1,11,80,158,43, -55,28,28,248,22,77,23,196,2,28,249,22,161,9,248,22,184,17,23,198,2, -2,35,28,248,22,77,248,22,104,23,197,2,249,22,161,9,248,22,108,23,198, -2,2,39,11,11,11,86,94,248,80,159,38,8,28,39,23,194,2,253,24,199, -1,248,22,104,23,202,2,23,202,1,23,203,1,23,204,1,248,22,106,23,202, -1,80,158,43,55,86,94,23,193,1,27,88,163,8,36,37,47,11,79,115,104, -111,119,45,99,111,108,108,101,99,116,105,111,110,45,101,114,114,223,5,33,89, -27,28,248,22,77,23,198,2,28,249,22,161,9,2,35,248,22,184,17,23,200, -2,27,248,22,104,23,199,2,28,28,249,22,163,9,23,195,2,2,37,10,249, -22,163,9,23,195,2,2,36,86,94,23,193,1,28,23,199,2,27,248,22,150, -5,23,201,2,28,248,22,77,193,248,22,184,17,193,192,250,22,130,10,2,22, -6,45,45,110,111,32,98,97,115,101,32,112,97,116,104,32,102,111,114,32,114, -101,108,97,116,105,118,101,32,115,117,98,109,111,100,117,108,101,32,112,97,116, -104,58,32,126,46,115,23,201,2,192,23,197,2,23,197,2,27,28,248,22,77, -23,199,2,28,249,22,161,9,2,35,248,22,184,17,23,201,2,27,28,28,28, -249,22,163,9,248,22,104,23,202,2,2,37,10,249,22,163,9,248,22,104,23, -202,2,2,36,23,200,2,11,27,248,22,150,5,23,202,2,27,28,249,22,163, -9,248,22,104,23,204,2,2,36,248,22,185,17,23,202,1,248,22,106,23,202, -1,28,248,22,77,23,195,2,249,2,85,248,22,184,17,23,197,2,249,22,93, -248,22,185,17,23,199,1,23,197,1,249,2,85,23,196,1,23,195,1,249,2, -85,2,37,28,249,22,163,9,248,22,104,23,204,2,2,36,248,22,185,17,23, -202,1,248,22,106,23,202,1,28,248,22,77,193,248,22,185,17,193,11,11,11, -27,28,248,22,64,23,196,2,27,248,80,159,43,48,39,249,22,79,23,199,2, -247,22,182,15,28,23,193,2,192,86,94,23,193,1,90,159,38,11,89,161,38, -36,11,249,80,159,46,54,39,248,22,70,23,201,2,11,27,28,248,22,87,23, -195,2,2,40,249,22,169,7,23,197,2,2,41,251,80,159,49,59,39,23,204, -1,28,248,22,87,23,199,2,23,199,1,86,94,23,199,1,248,22,80,23,199, -2,28,248,22,87,23,199,2,86,94,23,198,1,9,248,22,185,17,23,199,1, -23,197,1,28,248,22,146,7,23,196,2,86,94,23,196,1,27,248,80,159,43, -8,29,39,23,202,2,27,248,80,159,44,48,39,249,22,79,23,200,2,23,197, -2,28,23,193,2,192,86,94,23,193,1,90,159,38,11,89,161,38,36,11,249, -80,159,47,54,39,23,201,2,11,250,22,1,22,158,15,23,199,1,249,22,93, -249,22,2,32,0,88,163,8,36,37,44,11,9,222,33,90,23,200,1,248,22, -89,248,2,91,23,201,1,28,248,22,140,15,23,196,2,86,94,23,196,1,248, -80,159,42,8,30,39,248,22,167,15,28,248,22,164,15,23,198,2,23,197,2, -249,22,165,15,23,199,2,248,80,159,46,8,29,39,23,205,2,28,249,22,161, -9,248,22,80,23,198,2,2,33,27,248,80,159,43,48,39,249,22,79,23,199, -2,247,22,182,15,28,23,193,2,192,86,94,23,193,1,90,159,39,11,89,161, -38,36,11,249,80,159,47,54,39,248,22,104,23,202,2,11,89,161,37,38,11, -28,248,22,87,248,22,106,23,201,2,28,248,22,87,23,194,2,249,22,133,16, -2,93,23,196,2,11,10,27,28,23,196,2,248,2,91,23,196,2,28,248,22, -87,23,195,2,2,40,28,249,22,133,16,2,93,23,197,2,248,2,91,23,196, -2,249,22,169,7,23,197,2,2,41,27,28,23,197,1,86,94,23,196,1,249, -22,93,28,248,22,87,248,22,106,23,205,2,21,93,6,5,5,109,122,108,105, -98,249,22,1,22,93,249,22,2,80,159,53,8,31,39,248,22,106,23,208,2, -23,197,1,28,248,22,87,23,196,2,86,94,23,195,1,248,22,89,23,197,1, -86,94,23,196,1,23,195,1,251,80,159,51,59,39,23,206,1,248,22,80,23, -198,2,248,22,185,17,23,198,1,23,198,1,28,249,22,161,9,248,22,184,17, -23,198,2,2,38,248,80,159,42,8,30,39,248,22,167,15,249,22,165,15,248, -22,169,15,248,22,104,23,201,2,248,80,159,46,8,29,39,23,205,2,12,86, -94,28,28,248,22,140,15,23,194,2,10,248,22,176,8,23,194,2,86,94,23, -201,1,12,28,23,201,2,250,22,132,10,67,114,101,113,117,105,114,101,249,22, -130,8,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,80,23,199,2,6,0,0,23,204,1,86,94,23,201, -1,250,22,134,10,2,22,2,34,23,198,2,27,28,248,22,176,8,23,195,2, -249,22,181,8,23,196,2,36,249,22,167,15,248,22,168,15,23,197,2,11,27, -28,248,22,176,8,23,196,2,249,22,181,8,23,197,2,37,248,80,159,44,8, -24,39,23,195,2,90,159,39,11,89,161,39,36,11,28,248,22,176,8,23,199, -2,250,22,7,2,42,249,22,181,8,23,203,2,38,2,42,248,22,161,15,23, -198,2,86,95,23,195,1,23,193,1,27,28,248,22,176,8,23,200,2,249,22, -181,8,23,201,2,39,249,80,159,49,58,39,23,197,2,5,0,27,28,248,22, -176,8,23,201,2,249,22,181,8,23,202,2,40,248,22,149,5,23,200,2,27, -250,22,160,2,80,159,52,41,38,248,22,154,16,247,22,176,13,11,27,28,23, +23,195,4,248,22,89,194,28,249,22,129,9,7,47,249,22,151,7,23,198,2, +23,199,2,86,94,23,193,1,249,22,79,250,22,169,7,23,199,2,36,23,200, +2,27,249,22,169,7,23,199,1,248,22,181,3,23,201,1,19,248,22,150,7, +23,195,2,250,2,66,23,196,4,23,197,1,36,2,27,248,22,181,3,23,197, +1,28,249,22,128,4,23,195,2,23,196,4,248,22,89,195,28,249,22,129,9, +7,47,249,22,151,7,23,199,2,23,197,2,86,94,23,194,1,249,22,79,250, +22,169,7,23,200,2,36,23,198,2,248,2,61,249,22,169,7,23,200,1,248, +22,181,3,23,199,1,250,2,65,23,197,4,23,198,1,248,22,181,3,23,197, +1,32,69,88,164,8,38,39,50,11,2,31,36,223,3,33,70,28,249,22,128, +4,23,197,2,23,195,4,248,22,89,194,28,249,22,129,9,7,47,249,22,151, +7,23,198,2,23,199,2,86,94,23,193,1,249,22,79,250,22,169,7,23,199, +2,36,23,200,2,248,2,61,249,22,169,7,23,199,1,248,22,181,3,23,201, +1,250,2,69,23,196,4,23,197,1,248,22,181,3,23,199,1,28,249,22,128, +4,23,197,2,23,195,4,248,22,89,194,28,249,22,129,9,7,47,249,22,151, +7,23,198,2,23,199,2,86,94,23,193,1,249,22,79,250,22,169,7,23,199, +2,36,23,200,2,27,249,22,169,7,23,199,1,248,22,181,3,23,201,1,19, +248,22,150,7,23,195,2,250,2,65,23,196,4,23,197,1,36,2,27,248,22, +181,3,23,197,1,28,249,22,128,4,23,195,2,23,196,4,248,22,89,195,28, +249,22,129,9,7,47,249,22,151,7,23,199,2,23,197,2,86,94,23,194,1, +249,22,79,250,22,169,7,23,200,2,36,23,198,2,27,249,22,169,7,23,200, +1,248,22,181,3,23,199,1,19,248,22,150,7,23,195,2,250,2,69,23,196, +4,23,197,1,36,2,27,248,22,181,3,23,195,1,28,249,22,128,4,23,195, +2,23,197,4,248,22,89,196,28,249,22,129,9,7,47,249,22,151,7,23,200, +2,23,197,2,86,94,23,195,1,249,22,79,250,22,169,7,23,201,2,36,23, +198,2,248,2,61,249,22,169,7,23,201,1,248,22,181,3,23,199,1,250,2, +64,23,198,4,23,199,1,248,22,181,3,23,197,1,19,248,22,150,7,23,195, +2,28,249,22,128,4,36,23,195,4,248,22,89,194,28,249,22,129,9,7,47, +249,22,151,7,23,198,2,36,86,94,23,193,1,249,22,79,250,22,169,7,23, +199,2,36,36,27,249,22,169,7,23,199,1,37,19,248,22,150,7,23,195,2, +250,2,62,23,196,4,23,197,1,36,2,28,249,22,128,4,37,23,195,4,248, +22,89,194,28,249,22,129,9,7,47,249,22,151,7,23,198,2,37,86,94,23, +193,1,249,22,79,250,22,169,7,23,199,2,36,37,248,2,61,249,22,169,7, +23,199,1,38,250,2,64,23,196,4,23,197,1,38,2,28,249,22,128,4,23, +197,2,23,195,4,248,22,89,194,28,249,22,129,9,7,47,249,22,151,7,23, +198,2,23,199,2,86,94,23,193,1,249,22,79,250,22,169,7,23,199,2,36, +23,200,2,248,2,61,249,22,169,7,23,199,1,248,22,181,3,23,201,1,250, +2,60,23,196,4,23,197,1,248,22,181,3,23,199,1,28,249,22,128,4,23, +197,2,23,195,4,248,22,89,194,28,249,22,129,9,7,47,249,22,151,7,23, +198,2,23,199,2,86,94,23,193,1,249,22,79,250,22,169,7,23,199,2,36, +23,200,2,27,249,22,169,7,23,199,1,248,22,181,3,23,201,1,19,248,22, +150,7,23,195,2,250,2,60,23,196,4,23,197,1,36,2,27,248,22,181,3, +23,197,1,28,249,22,128,4,23,195,2,23,196,4,248,22,89,195,28,249,22, +129,9,7,47,249,22,151,7,23,199,2,23,197,2,86,94,23,194,1,249,22, +79,250,22,169,7,23,200,2,36,23,198,2,248,2,61,249,22,169,7,23,200, +1,248,22,181,3,23,199,1,250,2,59,23,197,4,23,198,1,248,22,181,3, +23,197,1,32,75,88,163,36,37,55,11,2,32,222,33,76,28,248,22,87,248, +22,81,23,195,2,249,22,7,9,248,22,132,18,23,196,1,90,159,38,11,89, +161,38,36,11,27,248,22,133,18,23,197,2,28,248,22,87,248,22,81,23,195, +2,249,22,7,9,248,22,132,18,195,90,159,38,11,89,161,38,36,11,27,248, +22,133,18,196,28,248,22,87,248,22,81,23,195,2,249,22,7,9,248,22,132, +18,195,90,159,38,11,89,161,38,36,11,248,2,75,248,22,133,18,196,249,22, +7,249,22,79,248,22,132,18,199,196,195,249,22,7,249,22,79,248,22,132,18, +199,196,195,249,22,7,249,22,79,248,22,132,18,23,200,1,23,197,1,23,196, +1,27,19,248,22,150,7,23,196,2,250,2,59,23,196,4,23,198,1,36,2, +28,23,195,1,192,28,248,22,87,248,22,81,23,195,2,249,22,7,9,248,22, +132,18,23,196,1,27,248,22,133,18,23,195,2,90,159,38,11,89,161,38,36, +11,28,248,22,87,248,22,81,23,197,2,249,22,7,9,248,22,132,18,23,198, +1,27,248,22,133,18,23,197,2,90,159,38,11,89,161,38,36,11,28,248,22, +87,248,22,81,23,197,2,249,22,7,9,248,22,132,18,197,90,159,38,11,89, +161,38,36,11,248,2,75,248,22,133,18,198,249,22,7,249,22,79,248,22,132, +18,201,196,195,249,22,7,249,22,79,248,22,132,18,23,203,1,196,195,249,22, +7,249,22,79,248,22,132,18,23,201,1,23,197,1,23,196,1,28,24,194,2, +12,20,13,159,80,159,36,57,37,80,158,36,55,89,161,37,37,10,249,22,128, +5,21,94,2,33,6,19,19,112,108,97,110,101,116,47,114,101,115,111,108,118, +101,114,46,114,107,116,1,27,112,108,97,110,101,116,45,109,111,100,117,108,101, +45,110,97,109,101,45,114,101,115,111,108,118,101,114,12,27,28,23,195,2,28, +249,22,162,9,23,197,2,80,158,39,52,86,94,23,195,1,80,158,37,53,27, +248,22,151,5,23,197,2,27,28,248,22,77,23,195,2,248,22,132,18,23,195, +1,23,194,1,28,248,22,152,15,23,194,2,90,159,39,11,89,161,39,36,11, +248,22,173,15,23,197,1,86,95,20,18,159,11,80,158,42,52,199,20,18,159, +11,80,158,42,53,192,192,11,11,28,23,193,2,192,86,94,23,193,1,27,247, +22,175,5,28,23,193,2,192,86,94,23,193,1,247,22,129,16,90,159,39,11, +89,161,39,36,11,248,22,173,15,23,198,2,86,95,23,195,1,23,193,1,28, +249,22,141,16,0,11,35,114,120,34,91,46,93,115,115,36,34,248,22,157,15, +23,197,1,249,80,159,41,58,39,23,199,1,2,27,196,249,80,159,38,54,39, +195,10,249,22,14,23,196,1,80,159,38,51,38,86,96,28,248,22,149,5,23, +196,2,12,250,22,135,10,2,22,6,21,21,114,101,115,111,108,118,101,100,45, +109,111,100,117,108,101,45,112,97,116,104,63,23,198,2,28,28,23,196,2,248, +22,189,13,23,197,2,10,12,250,22,135,10,2,22,6,20,20,40,111,114,47, +99,32,35,102,32,110,97,109,101,115,112,97,99,101,63,41,23,199,2,28,24, +193,2,248,24,194,1,23,196,2,86,94,23,193,1,12,27,250,22,160,2,80, +159,41,41,38,248,22,166,16,247,22,188,13,11,27,28,23,194,2,23,194,1, +86,94,23,194,1,27,249,22,79,247,22,140,2,247,22,140,2,86,94,250,22, +158,2,80,159,43,41,38,248,22,166,16,247,22,188,13,195,192,86,94,250,22, +158,2,248,22,80,23,197,2,23,200,2,68,100,101,99,108,97,114,101,100,28, +23,198,2,27,28,248,22,77,248,22,151,5,23,200,2,248,22,150,5,248,22, +80,248,22,151,5,23,201,1,23,198,1,27,250,22,160,2,80,159,44,41,38, +248,22,166,16,23,204,1,11,28,23,193,2,27,250,22,160,2,248,22,81,23, +198,1,23,198,2,11,28,23,193,2,250,22,158,2,248,22,133,18,23,200,1, +23,198,1,23,196,1,12,12,12,251,24,197,1,23,198,1,23,199,1,23,200, +1,10,32,85,88,163,36,38,47,11,76,102,108,97,116,116,101,110,45,115,117, +98,45,112,97,116,104,222,33,88,32,86,88,163,36,40,54,11,2,32,222,33, +87,28,248,22,87,23,197,2,28,248,22,87,195,192,249,22,79,194,248,22,94, +197,28,249,22,164,9,248,22,80,23,199,2,2,36,28,248,22,87,23,196,2, +86,95,23,196,1,23,195,1,250,22,131,10,2,22,6,37,37,116,111,111,32, +109,97,110,121,32,34,46,46,34,115,32,105,110,32,115,117,98,109,111,100,117, +108,101,32,112,97,116,104,58,32,126,46,115,250,22,90,2,35,28,249,22,164, +9,23,201,2,2,37,23,199,1,28,248,22,152,15,23,200,2,23,199,1,249, +22,89,28,248,22,64,23,202,2,2,4,2,38,23,201,1,23,200,1,251,2, +86,23,197,1,23,198,1,248,22,81,23,200,1,248,22,133,18,23,201,1,251, +2,86,23,197,1,23,198,1,249,22,79,248,22,132,18,23,203,2,23,201,1, +248,22,133,18,23,201,1,251,2,86,23,197,1,23,198,2,9,23,198,1,27, +249,22,170,7,6,31,31,115,116,97,110,100,97,114,100,45,109,111,100,117,108, +101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,58,32,250,22,152,16, +0,7,35,114,120,34,92,110,34,23,201,1,249,22,131,8,6,23,23,10,32, +32,102,111,114,32,109,111,100,117,108,101,32,112,97,116,104,58,32,126,115,10, +23,201,2,248,22,160,13,28,23,196,2,251,22,168,12,23,198,1,247,22,29, +248,22,89,23,201,1,23,199,1,86,94,23,196,1,250,22,131,13,23,197,1, +247,22,29,23,198,1,28,249,22,153,7,194,2,37,2,28,28,249,22,153,7, +194,2,36,62,117,112,192,32,91,88,163,8,36,37,50,11,67,115,115,45,62, +114,107,116,222,33,92,19,248,22,150,7,194,28,249,22,132,4,23,195,4,39, +28,249,22,153,7,6,3,3,46,115,115,249,22,169,7,197,249,22,184,3,23, +199,4,39,249,22,170,7,250,22,169,7,198,36,249,22,184,3,23,200,4,39, +2,41,193,193,2,0,8,35,114,120,34,91,46,93,34,32,94,88,163,8,36, +37,47,11,2,32,222,33,95,28,248,22,87,23,194,2,9,250,22,90,6,4, +4,10,32,32,32,248,22,156,15,248,22,105,23,198,2,248,2,94,248,22,81, +23,198,1,28,249,22,164,9,248,22,81,23,200,2,23,197,1,28,249,22,162, +9,248,22,132,18,23,200,1,23,196,1,251,22,131,10,2,22,6,41,41,99, +121,99,108,101,32,105,110,32,108,111,97,100,105,110,103,10,32,32,97,116,32, +112,97,116,104,58,32,126,97,10,32,32,112,97,116,104,115,58,126,97,23,200, +1,249,22,1,22,170,7,248,2,94,248,22,94,23,201,1,12,12,247,23,193, +1,250,22,157,4,11,196,195,20,13,159,80,159,45,50,38,249,22,79,249,22, +79,248,22,166,16,247,22,188,13,23,201,1,23,195,1,20,13,159,80,159,45, +38,37,252,80,159,50,39,37,249,22,33,11,80,159,52,38,37,22,189,4,23, +200,2,22,191,4,248,28,23,207,2,20,20,94,88,163,8,36,37,46,11,9, +223,14,33,98,23,207,1,86,94,23,207,1,22,7,28,248,22,64,23,206,2, +23,205,1,28,28,248,22,77,23,206,2,249,22,162,9,248,22,132,18,23,208, +2,2,33,11,23,205,1,86,94,23,205,1,28,248,22,149,5,23,202,2,27, +248,22,151,5,23,203,2,28,248,22,64,193,249,22,89,2,4,194,192,23,201, +2,249,247,22,174,5,23,200,1,27,248,22,67,248,22,156,15,23,201,1,28, +23,203,2,28,250,22,160,2,248,22,80,23,201,1,23,201,1,11,249,22,79, +11,204,249,22,79,194,204,192,86,94,28,248,22,159,5,23,196,2,12,28,23, +197,2,250,22,133,10,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,10,2,22,2,34,23,198,2,28,28,248, +22,77,23,196,2,249,22,162,9,248,22,132,18,23,198,2,2,4,11,86,97, +23,198,1,23,197,1,23,196,1,23,193,1,248,22,150,5,248,22,104,23,197, +1,28,28,248,22,77,23,196,2,28,249,22,162,9,248,22,132,18,23,198,2, +2,35,28,248,22,77,248,22,104,23,197,2,249,22,162,9,248,22,108,23,198, +2,2,4,11,11,11,86,97,23,198,1,23,197,1,23,196,1,23,193,1,248, +22,150,5,249,2,85,248,22,121,23,199,2,248,22,106,23,199,1,28,28,248, +22,77,23,196,2,28,249,22,162,9,248,22,132,18,23,198,2,2,35,28,28, +249,22,164,9,248,22,104,23,198,2,2,37,10,249,22,164,9,248,22,104,23, +198,2,2,36,28,23,196,2,27,248,22,151,5,23,198,2,28,248,22,64,193, +10,28,248,22,77,193,248,22,64,248,22,132,18,194,11,11,11,11,11,86,96, +23,198,1,23,197,1,23,193,1,27,248,22,151,5,23,198,1,248,22,150,5, +249,2,85,28,248,22,77,23,197,2,248,22,132,18,23,197,2,23,196,2,27, +28,249,22,164,9,248,22,104,23,203,2,2,36,248,22,133,18,200,248,22,106, +200,28,248,22,77,23,198,2,249,22,93,248,22,133,18,199,194,192,28,28,248, +22,77,23,196,2,249,22,162,9,248,22,132,18,23,198,2,2,39,11,86,94, +248,80,159,38,8,28,39,23,194,2,253,24,199,1,23,201,1,23,202,1,23, +203,1,23,204,1,11,80,158,43,55,28,28,248,22,77,23,196,2,28,249,22, +162,9,248,22,132,18,23,198,2,2,35,28,248,22,77,248,22,104,23,197,2, +249,22,162,9,248,22,108,23,198,2,2,39,11,11,11,86,94,248,80,159,38, +8,28,39,23,194,2,253,24,199,1,248,22,104,23,202,2,23,202,1,23,203, +1,23,204,1,248,22,106,23,202,1,80,158,43,55,86,94,23,193,1,27,88, +163,8,36,37,52,11,79,115,104,111,119,45,99,111,108,108,101,99,116,105,111, +110,45,101,114,114,224,5,3,33,89,27,28,248,22,77,23,198,2,28,249,22, +162,9,2,35,248,22,132,18,23,200,2,27,248,22,104,23,199,2,28,28,249, +22,164,9,23,195,2,2,37,10,249,22,164,9,23,195,2,2,36,86,94,23, +193,1,28,23,199,2,27,248,22,151,5,23,201,2,28,248,22,77,193,248,22, +132,18,193,192,250,22,131,10,2,22,6,45,45,110,111,32,98,97,115,101,32, +112,97,116,104,32,102,111,114,32,114,101,108,97,116,105,118,101,32,115,117,98, +109,111,100,117,108,101,32,112,97,116,104,58,32,126,46,115,23,201,2,192,23, +197,2,23,197,2,27,28,248,22,77,23,199,2,28,249,22,162,9,2,35,248, +22,132,18,23,201,2,27,28,28,28,249,22,164,9,248,22,104,23,202,2,2, +37,10,249,22,164,9,248,22,104,23,202,2,2,36,23,200,2,11,27,248,22, +151,5,23,202,2,27,28,249,22,164,9,248,22,104,23,204,2,2,36,248,22, +133,18,23,202,1,248,22,106,23,202,1,28,248,22,77,23,195,2,249,2,85, +248,22,132,18,23,197,2,249,22,93,248,22,133,18,23,199,1,23,197,1,249, +2,85,23,196,1,23,195,1,249,2,85,2,37,28,249,22,164,9,248,22,104, +23,204,2,2,36,248,22,133,18,23,202,1,248,22,106,23,202,1,28,248,22, +77,193,248,22,133,18,193,11,11,11,27,28,248,22,64,23,196,2,27,248,80, +159,43,48,39,249,22,79,23,199,2,247,22,130,16,28,23,193,2,192,86,94, +23,193,1,90,159,38,11,89,161,38,36,11,249,80,159,46,54,39,248,22,70, +23,201,2,11,27,28,248,22,87,23,195,2,2,40,249,22,170,7,23,197,2, +2,41,251,80,159,49,59,39,23,204,1,28,248,22,87,23,199,2,23,199,1, +86,94,23,199,1,248,22,80,23,199,2,28,248,22,87,23,199,2,86,94,23, +198,1,9,248,22,133,18,23,199,1,23,197,1,28,248,22,147,7,23,196,2, +86,94,23,196,1,27,248,80,159,43,8,29,39,23,202,2,27,248,80,159,44, +48,39,249,22,79,23,200,2,23,197,2,28,23,193,2,192,86,94,23,193,1, +90,159,38,11,89,161,38,36,11,249,80,159,47,54,39,23,201,2,11,250,22, +1,22,170,15,23,199,1,249,22,93,249,22,2,32,0,88,163,8,36,37,44, +11,9,222,33,90,23,200,1,248,22,89,248,2,91,23,201,1,28,248,22,152, +15,23,196,2,86,94,23,196,1,248,80,159,42,8,30,39,248,22,179,15,28, +248,22,176,15,23,198,2,23,197,2,249,22,177,15,23,199,2,248,80,159,46, +8,29,39,23,205,2,28,249,22,162,9,248,22,80,23,198,2,2,33,27,248, +80,159,43,48,39,249,22,79,23,199,2,247,22,130,16,28,23,193,2,192,86, +94,23,193,1,90,159,39,11,89,161,38,36,11,249,80,159,47,54,39,248,22, +104,23,202,2,11,89,161,37,38,11,28,248,22,87,248,22,106,23,201,2,28, +248,22,87,23,194,2,249,22,145,16,2,93,23,196,2,11,10,27,28,23,196, +2,248,2,91,23,196,2,28,248,22,87,23,195,2,2,40,28,249,22,145,16, +2,93,23,197,2,248,2,91,23,196,2,249,22,170,7,23,197,2,2,41,27, +28,23,197,1,86,94,23,196,1,249,22,93,28,248,22,87,248,22,106,23,205, +2,21,93,6,5,5,109,122,108,105,98,249,22,1,22,93,249,22,2,80,159, +53,8,31,39,248,22,106,23,208,2,23,197,1,28,248,22,87,23,196,2,86, +94,23,195,1,248,22,89,23,197,1,86,94,23,196,1,23,195,1,251,80,159, +51,59,39,23,206,1,248,22,80,23,198,2,248,22,133,18,23,198,1,23,198, +1,28,249,22,162,9,248,22,132,18,23,198,2,2,38,248,80,159,42,8,30, +39,248,22,179,15,249,22,177,15,248,22,181,15,248,22,104,23,201,2,248,80, +159,46,8,29,39,23,205,2,12,86,94,28,28,248,22,152,15,23,194,2,10, +248,22,177,8,23,194,2,12,28,23,201,2,250,22,133,10,67,114,101,113,117, +105,114,101,249,22,131,8,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,80,23,199,2,6,0,0,23,204, +2,250,22,135,10,2,22,2,34,23,198,2,27,28,248,22,177,8,23,195,2, +249,22,182,8,23,196,2,36,249,22,179,15,248,22,180,15,23,197,2,11,27, +28,248,22,177,8,23,196,2,249,22,182,8,23,197,2,37,248,80,159,44,8, +24,39,23,195,2,90,159,39,11,89,161,39,36,11,28,248,22,177,8,23,199, +2,250,22,7,2,42,249,22,182,8,23,203,2,38,2,42,248,22,173,15,23, +198,2,86,95,23,195,1,23,193,1,27,28,248,22,177,8,23,200,2,249,22, +182,8,23,201,2,39,249,80,159,49,58,39,23,197,2,5,0,27,28,248,22, +177,8,23,201,2,249,22,182,8,23,202,2,40,248,22,150,5,23,200,2,27, +250,22,160,2,80,159,52,41,38,248,22,166,16,247,22,188,13,11,27,28,23, 194,2,23,194,1,86,94,23,194,1,27,249,22,79,247,22,140,2,247,22,140, -2,86,94,250,22,158,2,80,159,54,41,38,248,22,154,16,247,22,176,13,195, -192,27,28,23,204,2,248,22,149,5,249,22,79,248,22,150,5,23,200,2,23, +2,86,94,250,22,158,2,80,159,54,41,38,248,22,166,16,247,22,188,13,195, +192,27,28,23,204,2,248,22,150,5,249,22,79,248,22,151,5,23,200,2,23, 207,2,23,196,2,86,95,28,23,212,1,27,250,22,160,2,248,22,80,23,199, 2,196,11,28,23,193,1,12,27,27,28,248,22,17,80,159,55,51,38,80,159, 54,51,38,247,22,19,251,22,33,11,80,159,58,50,38,9,23,197,1,27,248, -22,154,16,247,22,176,13,86,94,249,22,3,20,20,94,88,163,8,36,37,54, +22,166,16,247,22,188,13,86,94,249,22,3,20,20,94,88,163,8,36,37,54, 11,9,226,14,13,2,3,33,96,23,195,1,23,196,2,248,28,248,22,17,80, 159,56,51,38,32,0,88,163,36,37,42,11,9,222,33,97,80,159,55,8,32, -39,20,20,96,88,163,36,36,56,8,240,12,64,0,0,9,230,19,15,13,12, -8,7,5,2,33,98,23,195,1,23,198,1,23,208,1,12,28,28,248,22,176, -8,23,204,1,11,28,248,22,146,7,23,206,2,10,28,248,22,64,23,206,2, -10,28,248,22,77,23,206,2,249,22,161,9,248,22,184,17,23,208,2,2,33, -11,249,80,159,53,49,39,28,248,22,146,7,23,208,2,249,22,79,23,209,1, -248,80,159,56,8,29,39,23,215,1,86,94,23,212,1,249,22,79,23,209,1, -247,22,182,15,252,22,178,8,23,209,1,23,208,1,23,206,1,23,204,1,23, -203,1,12,192,86,96,20,18,159,11,80,158,36,55,248,80,159,37,8,27,37, -249,22,33,11,80,159,39,57,37,248,22,188,4,80,159,37,56,38,248,22,173, -5,80,159,37,37,39,248,22,173,14,80,159,37,45,39,20,18,159,11,80,158, -36,55,248,80,159,37,8,27,37,249,22,33,11,80,159,39,57,37,20,18,159, -11,80,158,36,55,248,80,159,37,8,27,37,249,22,33,11,80,159,39,57,37, -159,36,20,114,159,36,16,1,11,16,0,20,26,145,9,2,1,2,1,29,11, -11,11,11,9,9,11,11,11,10,38,80,158,36,36,20,114,159,41,16,28,2, -2,2,3,30,2,6,2,7,11,6,30,2,6,1,23,101,120,116,101,110,100, -45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,11,3,30,2, -8,72,112,97,116,104,45,115,116,114,105,110,103,63,38,196,11,2,9,30,2, -8,71,114,101,114,111,111,116,45,112,97,116,104,40,196,12,30,2,8,75,112, -97,116,104,45,97,100,100,45,115,117,102,102,105,120,40,196,8,2,10,2,11, -2,12,2,13,2,14,2,15,2,16,2,17,2,18,2,19,2,20,2,21,2, -22,30,2,23,2,7,11,6,30,2,8,79,112,97,116,104,45,114,101,112,108, -97,99,101,45,115,117,102,102,105,120,40,196,10,30,2,8,73,102,105,110,100, -45,99,111,108,45,102,105,108,101,44,196,3,30,2,8,76,110,111,114,109,97, -108,45,99,97,115,101,45,112,97,116,104,38,196,7,2,24,2,25,30,2,23, -74,114,101,112,97,114,97,109,101,116,101,114,105,122,101,11,7,16,0,37,39, -36,16,0,36,16,15,2,16,2,17,2,9,2,13,2,18,2,19,2,12,2, -3,2,11,2,2,2,14,2,15,2,10,2,20,2,22,51,11,11,11,16,3, -2,24,2,21,2,25,16,3,11,11,11,16,3,2,24,2,21,2,25,39,39, -37,12,11,11,16,0,16,0,16,0,36,36,11,12,11,11,16,0,16,0,16, -0,36,36,16,23,20,15,16,2,248,22,173,8,69,115,111,45,115,117,102,102, -105,120,80,159,36,36,37,20,15,16,2,88,163,36,38,8,43,8,189,3,2, -3,223,0,33,55,80,159,36,37,37,20,15,16,2,32,0,88,163,8,36,41, -52,11,2,10,222,33,56,80,159,36,44,37,20,15,16,2,20,27,158,32,0, -88,163,8,36,37,42,11,2,11,222,192,32,0,88,163,8,36,37,42,11,2, -11,222,192,80,159,36,45,37,20,15,16,2,247,22,143,2,80,159,36,41,37, -20,15,16,2,8,128,8,80,159,36,46,37,20,15,16,2,249,22,177,8,8, -128,8,11,80,159,36,47,37,20,15,16,2,88,163,8,36,37,50,8,128,32, -2,14,223,0,33,57,80,159,36,48,37,20,15,16,2,88,163,8,36,38,55, -8,128,32,2,15,223,0,33,58,80,159,36,49,37,20,15,16,2,247,22,75, -80,159,36,50,37,20,15,16,2,248,22,18,74,109,111,100,117,108,101,45,108, -111,97,100,105,110,103,80,159,36,51,37,20,15,16,2,11,80,158,36,52,20, -15,16,2,11,80,158,36,53,20,15,16,2,32,0,88,163,36,38,57,11,2, -20,222,33,77,80,159,36,54,37,20,15,16,2,11,80,158,36,55,20,15,16, -2,88,164,8,34,37,45,8,240,0,0,40,0,1,21,112,114,101,112,45,112, -108,97,110,101,116,45,114,101,115,111,108,118,101,114,33,37,224,1,0,33,78, -80,159,36,8,28,39,20,15,16,2,88,163,36,37,50,8,240,0,0,3,0, -67,103,101,116,45,100,105,114,223,0,33,79,80,159,36,8,29,39,20,15,16, -2,88,163,36,37,49,8,240,0,0,64,0,72,112,97,116,104,45,115,115,45, -62,114,107,116,223,0,33,80,80,159,36,8,30,39,20,15,16,2,88,163,8, -36,37,45,8,240,0,0,4,0,9,223,0,33,81,80,159,36,8,31,39,20, -15,16,2,88,163,36,37,45,8,240,0,128,0,0,9,223,0,33,82,80,159, -36,8,32,39,20,15,16,2,27,11,20,19,158,36,90,159,37,10,89,161,37, -36,10,20,25,96,2,22,88,163,8,36,38,54,8,32,9,224,2,1,33,83, -88,163,36,39,49,11,9,223,0,33,84,88,163,36,40,8,32,16,4,8,240, -44,240,0,0,8,240,204,241,0,0,37,36,9,224,2,1,33,99,207,80,159, -36,56,37,20,15,16,2,88,163,36,36,45,16,2,8,130,8,8,184,32,2, -24,223,0,33,100,80,159,36,8,25,37,20,15,16,2,20,27,158,88,163,8, -36,36,45,16,2,36,8,168,32,2,25,223,0,33,101,88,163,8,36,36,45, -16,2,36,8,168,32,2,25,223,0,33,102,80,159,36,8,26,37,96,29,94, -2,4,68,35,37,107,101,114,110,101,108,11,29,94,2,4,69,35,37,109,105, -110,45,115,116,120,11,2,8,2,23,9,9,9,36,0}; - EVAL_ONE_SIZED_STR((char *)expr, 9758); +39,20,20,97,88,163,36,36,8,24,8,240,12,64,0,0,9,232,19,22,15, +16,13,12,8,7,5,2,33,99,23,195,1,23,198,1,23,208,1,23,215,1, +12,28,28,248,22,177,8,23,204,1,11,28,248,22,147,7,23,206,2,10,28, +248,22,64,23,206,2,10,28,248,22,77,23,206,2,249,22,162,9,248,22,132, +18,23,208,2,2,33,11,249,80,159,53,49,39,28,248,22,147,7,23,208,2, +249,22,79,23,209,1,248,80,159,56,8,29,39,23,215,1,86,94,23,212,1, +249,22,79,23,209,1,247,22,130,16,252,22,179,8,23,209,1,23,208,1,23, +206,1,23,204,1,23,203,1,12,192,86,96,20,18,159,11,80,158,36,55,248, +80,159,37,8,27,37,249,22,33,11,80,159,39,57,37,248,22,188,4,80,159, +37,56,38,248,22,174,5,80,159,37,37,39,248,22,185,14,80,159,37,45,39, +20,18,159,11,80,158,36,55,248,80,159,37,8,27,37,249,22,33,11,80,159, +39,57,37,20,18,159,11,80,158,36,55,248,80,159,37,8,27,37,249,22,33, +11,80,159,39,57,37,159,36,20,114,159,36,16,1,11,16,0,20,26,145,9, +2,1,2,1,29,11,11,11,11,9,9,11,11,11,10,38,80,158,36,36,20, +114,159,41,16,28,2,2,2,3,30,2,6,2,7,11,6,30,2,6,1,23, +101,120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105, +111,110,11,3,30,2,8,72,112,97,116,104,45,115,116,114,105,110,103,63,38, +196,11,2,9,30,2,8,71,114,101,114,111,111,116,45,112,97,116,104,40,196, +12,30,2,8,75,112,97,116,104,45,97,100,100,45,115,117,102,102,105,120,40, +196,8,2,10,2,11,2,12,2,13,2,14,2,15,2,16,2,17,2,18,2, +19,2,20,2,21,2,22,30,2,23,2,7,11,6,30,2,8,79,112,97,116, +104,45,114,101,112,108,97,99,101,45,115,117,102,102,105,120,40,196,10,30,2, +8,73,102,105,110,100,45,99,111,108,45,102,105,108,101,44,196,3,30,2,8, +76,110,111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,38,196,7,2, +24,2,25,30,2,23,74,114,101,112,97,114,97,109,101,116,101,114,105,122,101, +11,7,16,0,37,39,36,16,0,36,16,15,2,16,2,17,2,9,2,13,2, +18,2,19,2,12,2,3,2,11,2,2,2,14,2,15,2,10,2,20,2,22, +51,11,11,11,16,3,2,24,2,21,2,25,16,3,11,11,11,16,3,2,24, +2,21,2,25,39,39,37,12,11,11,16,0,16,0,16,0,36,36,11,12,11, +11,16,0,16,0,16,0,36,36,16,23,20,15,16,2,248,22,174,8,69,115, +111,45,115,117,102,102,105,120,80,159,36,36,37,20,15,16,2,88,163,36,38, +8,43,8,189,3,2,3,223,0,33,55,80,159,36,37,37,20,15,16,2,32, +0,88,163,8,36,41,52,11,2,10,222,33,56,80,159,36,44,37,20,15,16, +2,20,27,158,32,0,88,163,8,36,37,42,11,2,11,222,192,32,0,88,163, +8,36,37,42,11,2,11,222,192,80,159,36,45,37,20,15,16,2,247,22,143, +2,80,159,36,41,37,20,15,16,2,8,128,8,80,159,36,46,37,20,15,16, +2,249,22,178,8,8,128,8,11,80,159,36,47,37,20,15,16,2,88,163,8, +36,37,50,8,128,32,2,14,223,0,33,57,80,159,36,48,37,20,15,16,2, +88,163,8,36,38,55,8,128,32,2,15,223,0,33,58,80,159,36,49,37,20, +15,16,2,247,22,75,80,159,36,50,37,20,15,16,2,248,22,18,74,109,111, +100,117,108,101,45,108,111,97,100,105,110,103,80,159,36,51,37,20,15,16,2, +11,80,158,36,52,20,15,16,2,11,80,158,36,53,20,15,16,2,32,0,88, +163,36,38,57,11,2,20,222,33,77,80,159,36,54,37,20,15,16,2,11,80, +158,36,55,20,15,16,2,88,164,8,34,37,45,8,240,0,0,40,0,1,21, +112,114,101,112,45,112,108,97,110,101,116,45,114,101,115,111,108,118,101,114,33, +37,224,1,0,33,78,80,159,36,8,28,39,20,15,16,2,88,163,36,37,50, +8,240,0,0,3,0,67,103,101,116,45,100,105,114,223,0,33,79,80,159,36, +8,29,39,20,15,16,2,88,163,36,37,49,8,240,0,0,64,0,72,112,97, +116,104,45,115,115,45,62,114,107,116,223,0,33,80,80,159,36,8,30,39,20, +15,16,2,88,163,8,36,37,45,8,240,0,0,4,0,9,223,0,33,81,80, +159,36,8,31,39,20,15,16,2,88,163,36,37,45,8,240,0,128,0,0,9, +223,0,33,82,80,159,36,8,32,39,20,15,16,2,27,11,20,19,158,36,90, +159,37,10,89,161,37,36,10,20,25,96,2,22,88,163,8,36,38,54,8,32, +9,224,2,1,33,83,88,163,36,39,49,11,9,223,0,33,84,88,163,36,40, +8,32,16,4,8,240,44,240,0,0,8,240,204,241,0,0,37,36,9,224,2, +1,33,100,207,80,159,36,56,37,20,15,16,2,88,163,36,36,45,16,2,8, +130,8,8,184,32,2,24,223,0,33,101,80,159,36,8,25,37,20,15,16,2, +20,27,158,88,163,8,36,36,45,16,2,36,8,168,32,2,25,223,0,33,102, +88,163,8,36,36,45,16,2,36,8,168,32,2,25,223,0,33,103,80,159,36, +8,26,37,96,29,94,2,4,68,35,37,107,101,114,110,101,108,11,29,94,2, +4,69,35,37,109,105,110,45,115,116,120,11,2,8,2,23,9,9,9,36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 9932); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,52,46,51,84,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,52,46,52,84,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,11,0,0,0,1,0,0,10,0,16,0, 29,0,44,0,58,0,78,0,90,0,104,0,118,0,170,0,0,0,99,1,0, 0,69,35,37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2,2, @@ -1234,7 +1242,7 @@ 114,107,11,29,94,2,2,68,35,37,112,97,114,97,109,122,11,29,94,2,2, 74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,11,29,94,2,2,66, 35,37,98,111,111,116,11,29,94,2,2,68,35,37,101,120,112,111,98,115,11, -29,94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,206,93, +29,94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,231,93, 0,0,100,159,2,3,36,36,159,2,4,36,36,159,2,5,36,36,159,2,6, 36,36,159,2,7,36,36,159,2,8,36,36,159,2,9,36,36,159,2,9,36, 36,16,0,159,36,20,114,159,36,16,1,11,16,0,20,26,145,9,2,1,2, diff --git a/src/racket/src/error.c b/src/racket/src/error.c index 69d6f7fbb2..2b5544c710 100644 --- a/src/racket/src/error.c +++ b/src/racket/src/error.c @@ -257,6 +257,7 @@ Scheme_Config *scheme_init_error_escape_proc(Scheme_Config *config) %V = scheme_value %@ = list of scheme_value to write splice %D = scheme value to display + %W = scheme value to write %_ = skip pointer %- = skip int @@ -336,6 +337,7 @@ static intptr_t sch_vsprintf(char *s, intptr_t maxlen, const char *msg, va_list case 'V': case '@': case 'D': + case 'W': case 'T': case 'Q': case '_': @@ -578,6 +580,15 @@ static intptr_t sch_vsprintf(char *s, intptr_t maxlen, const char *msg, va_list tlen = dlen; } break; + case 'W': + { + Scheme_Object *o; + intptr_t dlen; + o = (Scheme_Object *)ptrs[pp++]; + t = scheme_write_to_string(o, &dlen); + tlen = dlen; + } + break; case '_': { pp++; @@ -4365,6 +4376,24 @@ static Scheme_Object *errno_field_check(int argc, Scheme_Object **argv) return scheme_values (3, argv); } +static Scheme_Object *module_path_field_check(int pos, int argc, Scheme_Object **argv) +{ + if (!scheme_is_module_path(argv[pos])) + scheme_wrong_field_contract(argv[pos+1], "(or/c #f module-path?)", argv[pos]); + + return scheme_values (pos+1, argv); +} + +static Scheme_Object *module_path_field_check_2(int argc, Scheme_Object **argv) +{ + return module_path_field_check(2, argc, argv); +} + +static Scheme_Object *module_path_field_check_3(int argc, Scheme_Object **argv) +{ + return module_path_field_check(3, argc, argv); +} + static Scheme_Object *extract_syntax_locations(int argc, Scheme_Object **argv) { if (scheme_is_struct_instance(exn_table[MZEXN_FAIL_SYNTAX].type, argv[0])) { @@ -4401,6 +4430,32 @@ static Scheme_Object *extract_read_locations(int argc, Scheme_Object **argv) return NULL; } +static Scheme_Object *extract_module_path(int pos, int argc, Scheme_Object **argv, + int exn_kind, const + char *accessor_name, const char *contract) +{ + if (scheme_is_struct_instance(exn_table[exn_kind].type, argv[0])) + return scheme_struct_ref(argv[0], pos); + scheme_wrong_contract(accessor_name, contract, 0, argc, argv); + return NULL; +} + +static Scheme_Object *extract_module_path_2(int argc, Scheme_Object **argv) +{ + return extract_module_path(2, argc, argv, + MZEXN_FAIL_FILESYSTEM_MISSING_MODULE, + "exn:fail:filesystem:missing-module:path-accessor", + "exn:fail:filesystem:missing-module?"); +} + +static Scheme_Object *extract_module_path_3(int argc, Scheme_Object **argv) +{ + return extract_module_path(3, argc, argv, + MZEXN_FAIL_SYNTAX_MISSING_MODULE, + "exn:fail:syntax:missing-module:path-accessor", + "exn:fail:syntax:missing-module?"); +} + void scheme_init_exn(Scheme_Env *env) { int i, j; diff --git a/src/racket/src/file.c b/src/racket/src/file.c index f1f6194a1c..c5cfb7aaad 100644 --- a/src/racket/src/file.c +++ b/src/racket/src/file.c @@ -3939,7 +3939,7 @@ static Scheme_Object *copy_file(int argc, Scheme_Object **argv) Scheme_Object *a[2], * volatile in, * volatile out; reason = NULL; - in = scheme_do_open_input_file("copy-file", 0, 1, argv, 1, &reason, &err_val); + in = scheme_do_open_input_file("copy-file", 0, 1, argv, 1, &reason, &err_val, 0); if (!in) { has_err_val = !!err_val; goto failed; diff --git a/src/racket/src/makeexn b/src/racket/src/makeexn index 705688e7ed..f5ba26431c 100755 --- a/src/racket/src/makeexn +++ b/src/racket/src/makeexn @@ -48,7 +48,11 @@ propeties (the latter in curly braces), strings are contracts/comments. {exn:source scheme_source_property |scheme_make_prim(extract_syntax_locations)|}] "syntax error, but not a \\scmfirst{read} error" (unbound [] - "unbound module variable")) + "unbound module variable") + (missing-module [module_path_field_check_3 + (path "module path" "module path") + {exn:module-path scheme_module_path_property |scheme_make_prim(extract_module_path_3)|}] + "error resolving a module path")) (read [read_field_check (srclocs "immutable list of \\scmk{srcloc}s (see \\SecRef{linecol})" "source location(s) of error") {exn:source scheme_source_property |scheme_make_prim(extract_read_locations)|}] @@ -60,7 +64,11 @@ propeties (the latter in curly braces), strings are contracts/comments. (version [] "version mismatch loading an extension") (errno [errno_field_check (errno "pair of symbol and number" "system error code")] - "error with system error code")) + "error with system error code") + (missing-module [module_path_field_check_2 + (-path "module path" "module path") + {exn:module-path scheme_module_path_property |scheme_make_prim(extract_module_path_2)|}] + "error resolving a module path")) (network [] "TCP and UDP errors" (errno [errno_field_check (errno "pair of symbol and number" "system error code")] diff --git a/src/racket/src/module.c b/src/racket/src/module.c index 9dbd5ac7db..262eb28446 100644 --- a/src/racket/src/module.c +++ b/src/racket/src/module.c @@ -46,6 +46,7 @@ SHARED_OK static mzrt_mutex *modpath_table_mutex; static Scheme_Object *current_module_name_resolver(int argc, Scheme_Object *argv[]); static Scheme_Object *current_module_name_prefix(int argc, Scheme_Object *argv[]); static Scheme_Object *current_module_name_source(int argc, Scheme_Object *argv[]); +static Scheme_Object *current_module_load_path(int argc, Scheme_Object *argv[]); static Scheme_Object *dynamic_require_for_syntax(int argc, Scheme_Object *argv[]); static Scheme_Object *namespace_require(int argc, Scheme_Object *argv[]); static Scheme_Object *namespace_require_copy(int argc, Scheme_Object *argv[]); @@ -428,6 +429,7 @@ void scheme_init_module(Scheme_Env *env) GLOBAL_PARAMETER("current-module-name-resolver", current_module_name_resolver, MZCONFIG_CURRENT_MODULE_RESOLVER, env); GLOBAL_PARAMETER("current-module-declare-name", current_module_name_prefix, MZCONFIG_CURRENT_MODULE_NAME, env); GLOBAL_PARAMETER("current-module-declare-source", current_module_name_source, MZCONFIG_CURRENT_MODULE_SRC, env); + GLOBAL_PARAMETER("current-module-path-for-load", current_module_load_path, MZCONFIG_CURRENT_MODULE_LOAD_PATH, env); GLOBAL_PRIM_W_ARITY("dynamic-require", scheme_dynamic_require, 2, 3, env); GLOBAL_PRIM_W_ARITY("dynamic-require-for-syntax", dynamic_require_for_syntax, 2, 3, env); @@ -1036,6 +1038,28 @@ current_module_name_source(int argc, Scheme_Object *argv[]) -1, source_p, "symbol, complete path, or #f", 1); } +static Scheme_Object *load_path_p(int argc, Scheme_Object **argv) +{ + Scheme_Object *o = argv[0]; + + if (!SCHEME_FALSEP(o) + && !scheme_is_module_path(o) + && (!SCHEME_STXP(o) + || !scheme_is_module_path(scheme_syntax_to_datum(o, 0, NULL)))) + return NULL; + + return o; +} + +static Scheme_Object * +current_module_load_path(int argc, Scheme_Object *argv[]) +{ + return scheme_param_config("current-module-path-for-load", + scheme_make_integer(MZCONFIG_CURRENT_MODULE_LOAD_PATH), + argc, argv, + -1, load_path_p, "module path, module path as syntax, or #f", 1); +} + /**********************************************************************/ /* procedures */ /**********************************************************************/ diff --git a/src/racket/src/port.c b/src/racket/src/port.c index 5d9eab3593..e57c5ea2f7 100644 --- a/src/racket/src/port.c +++ b/src/racket/src/port.c @@ -4491,11 +4491,12 @@ Scheme_Object *scheme_terminal_port_p(int argc, Scheme_Object *argv[]) return is_fd_terminal(fd) ? scheme_true : scheme_false; } -static void filename_exn(char *name, char *msg, char *filename, int err) +static void filename_exn(char *name, char *msg, char *filename, int err, int maybe_module_errno) { char *dir, *drive; int len; char *pre, *rel, *post; + Scheme_Object *mod_path, *mp; len = strlen(filename); @@ -4514,6 +4515,38 @@ static void filename_exn(char *name, char *msg, char *filename, int err) rel = dir ? dir : (drive ? drive : ""); post = dir ? "" : ""; + if (maybe_module_errno && (err == maybe_module_errno)) { + mod_path = scheme_get_param(scheme_current_config(), MZCONFIG_CURRENT_MODULE_LOAD_PATH); + if (SCHEME_TRUEP(mod_path)) { + if (SCHEME_STXP(mod_path)) { + mp = scheme_syntax_to_datum(mod_path, 0, NULL); + scheme_raise_exn(MZEXN_FAIL_SYNTAX_MISSING_MODULE, + scheme_make_pair(mod_path, scheme_null), + mp, + "%s: %s\n" + " module path: %W\n" + " path: %q%s%q%s\n" + " system error: " FILENAME_EXN_E, + name, "cannot open module file", + mp, filename, + pre, rel, post, + err); + } else { + scheme_raise_exn(MZEXN_FAIL_FILESYSTEM_MISSING_MODULE, + mod_path, + "%s: %s\n" + " module path: %W\n" + " path: %q%s%q%s\n" + " system error: " FILENAME_EXN_E, + name, "cannot open module file", + mod_path, filename, + pre, rel, post, + err); + } + return; + } + } + scheme_raise_exn(MZEXN_FAIL_FILESYSTEM, "%s: %s\n" " path: %q%s%q%s\n" @@ -4525,7 +4558,7 @@ static void filename_exn(char *name, char *msg, char *filename, int err) Scheme_Object * scheme_do_open_input_file(char *name, int offset, int argc, Scheme_Object *argv[], - int internal, char **err, int *eerrno) + int internal, char **err, int *eerrno, int for_module) { #ifdef USE_FD_PORTS int fd; @@ -4601,7 +4634,7 @@ scheme_do_open_input_file(char *name, int offset, int argc, Scheme_Object *argv[ *err = "cannot open source file"; *eerrno = errno; } else - filename_exn(name, "cannot open input file", filename, errno); + filename_exn(name, "cannot open input file", filename, errno, (for_module ? ENOENT : 0)); return NULL; } else { int ok; @@ -4619,7 +4652,7 @@ scheme_do_open_input_file(char *name, int offset, int argc, Scheme_Object *argv[ *err = "source is a directory"; *eerrno = 0; } else - filename_exn(name, "cannot open directory as a file", filename, 0); + filename_exn(name, "cannot open directory as a file", filename, 0, 0); return NULL; } else { regfile = S_ISREG(buf.st_mode); @@ -4643,14 +4676,14 @@ scheme_do_open_input_file(char *name, int offset, int argc, Scheme_Object *argv[ *err = "cannot open source file"; *eerrno = errv; } else - filename_exn(name, "cannot open input file", filename, GetLastError()); + filename_exn(name, "cannot open input file", filename, GetLastError(), (for_module ? ERROR_FILE_NOT_FOUND : 0)); return NULL; } else regfile = (GetFileType(fd) == FILE_TYPE_DISK); if ((mode[1] == 't') && !regfile) { CloseHandle(fd); - filename_exn(name, "cannot use text-mode on a non-file device", filename, 0); + filename_exn(name, "cannot use text-mode on a non-file device", filename, 0, 0); return NULL; } @@ -4661,7 +4694,7 @@ scheme_do_open_input_file(char *name, int offset, int argc, Scheme_Object *argv[ *err = "source is a directory"; *eerrno = 0; } else - filename_exn(name, err, filename, 0); + filename_exn(name, err, filename, 0, 0); return NULL; } @@ -4673,7 +4706,7 @@ scheme_do_open_input_file(char *name, int offset, int argc, Scheme_Object *argv[ *err = "cannot open source file"; *eerrno = errno; } else - filename_exn(name, "cannot open input file", filename, errno); + filename_exn(name, "cannot open input file", filename, errno, (for_module ? ENOENT : 0)); return NULL; } @@ -4877,7 +4910,7 @@ scheme_do_open_output_file(char *name, int offset, int argc, Scheme_Object *argv *err = "cannot open destination file"; *eerrno = errno; } else - filename_exn(name, "cannot open output file", filename, errno); + filename_exn(name, "cannot open output file", filename, errno, 0); return NULL; } } @@ -5077,7 +5110,7 @@ Scheme_Object *scheme_open_input_file(const char *name, const char *who) Scheme_Object *a[1]; a[0]= scheme_make_path(name); - return scheme_do_open_input_file((char *)who, 0, 1, a, 0, NULL, NULL); + return scheme_do_open_input_file((char *)who, 0, 1, a, 0, NULL, NULL, 0); } Scheme_Object *scheme_open_output_file(const char *name, const char *who) diff --git a/src/racket/src/portfun.c b/src/racket/src/portfun.c index 15f760a418..35a2bb277e 100644 --- a/src/racket/src/portfun.c +++ b/src/racket/src/portfun.c @@ -2542,7 +2542,7 @@ make_output_port (int argc, Scheme_Object *argv[]) static Scheme_Object * open_input_file (int argc, Scheme_Object *argv[]) { - return scheme_do_open_input_file("open-input-file", 0, argc, argv, 0, NULL, NULL); + return scheme_do_open_input_file("open-input-file", 0, argc, argv, 0, NULL, NULL, 0); } static Scheme_Object * @@ -2731,7 +2731,7 @@ call_with_input_file(int argc, Scheme_Object *argv[]) scheme_check_proc_arity("call-with-input-file", 1, 1, argc, argv); - port = scheme_do_open_input_file("call-with-input-file", 1, argc, argv, 0, NULL, NULL); + port = scheme_do_open_input_file("call-with-input-file", 1, argc, argv, 0, NULL, NULL, 0); v = _scheme_apply_multi(argv[1], 1, &port); @@ -2802,7 +2802,7 @@ with_input_from_file(int argc, Scheme_Object *argv[]) scheme_check_proc_arity("with-input-from-file", 0, 1, argc, argv); - port = scheme_do_open_input_file("with-input-from-file", 1, argc, argv, 0, NULL, NULL); + port = scheme_do_open_input_file("with-input-from-file", 1, argc, argv, 0, NULL, NULL, 0); config = scheme_extend_config(scheme_current_config(), MZCONFIG_INPUT_PORT, @@ -4724,7 +4724,7 @@ static Scheme_Object *default_load(int argc, Scheme_Object *argv[]) "(or/c #f symbol? (cons/c (or/c #f symbol?) (non-empty-listof symbol?)))", 1, argc, argv); - port = scheme_do_open_input_file("default-load-handler", 0, 1, argv, 0, NULL, NULL); + port = scheme_do_open_input_file("default-load-handler", 0, 1, argv, 0, NULL, NULL, SCHEME_TRUEP(expected_module)); /* Turn on line/column counting, unless it's a .zo file: */ if (SCHEME_PATHP(argv[0])) { diff --git a/src/racket/src/read.c b/src/racket/src/read.c index 6f0aafb12c..ed90849062 100644 --- a/src/racket/src/read.c +++ b/src/racket/src/read.c @@ -5715,7 +5715,7 @@ Scheme_Object *scheme_load_delayed_code(int _which, Scheme_Load_Delay *_delay_in scheme_release_file_descriptor(); a[0] = delay_info->path; - port = scheme_do_open_input_file("on-demand-loader", 0, 1, a, 0, NULL, NULL); + port = scheme_do_open_input_file("on-demand-loader", 0, 1, a, 0, NULL, NULL, 0); savebuf = scheme_current_thread->error_buf; scheme_current_thread->error_buf = &newbuf; diff --git a/src/racket/src/schexn.h b/src/racket/src/schexn.h index 33fb1b0ed1..aa5d8e2821 100644 --- a/src/racket/src/schexn.h +++ b/src/racket/src/schexn.h @@ -12,6 +12,7 @@ enum { MZEXN_FAIL_CONTRACT_VARIABLE, MZEXN_FAIL_SYNTAX, MZEXN_FAIL_SYNTAX_UNBOUND, + MZEXN_FAIL_SYNTAX_MISSING_MODULE, MZEXN_FAIL_READ, MZEXN_FAIL_READ_EOF, MZEXN_FAIL_READ_NON_CHAR, @@ -19,6 +20,7 @@ enum { MZEXN_FAIL_FILESYSTEM_EXISTS, MZEXN_FAIL_FILESYSTEM_VERSION, MZEXN_FAIL_FILESYSTEM_ERRNO, + MZEXN_FAIL_FILESYSTEM_MISSING_MODULE, MZEXN_FAIL_NETWORK, MZEXN_FAIL_NETWORK_ERRNO, MZEXN_FAIL_OUT_OF_MEMORY, @@ -33,7 +35,7 @@ enum { #ifdef _MZEXN_TABLE -#define MZEXN_MAXARGS 3 +#define MZEXN_MAXARGS 4 #ifdef GLOBAL_EXN_ARRAY static exn_rec exn_table[] = { @@ -47,21 +49,23 @@ static exn_rec exn_table[] = { { 3, NULL, NULL, 0, NULL, 2 }, { 3, NULL, NULL, 0, NULL, 1 }, { 3, NULL, NULL, 0, NULL, 8 }, + { 4, NULL, NULL, 0, NULL, 8 }, { 3, NULL, NULL, 0, NULL, 1 }, - { 3, NULL, NULL, 0, NULL, 10 }, - { 3, NULL, NULL, 0, NULL, 10 }, + { 3, NULL, NULL, 0, NULL, 11 }, + { 3, NULL, NULL, 0, NULL, 11 }, { 2, NULL, NULL, 0, NULL, 1 }, - { 2, NULL, NULL, 0, NULL, 13 }, - { 2, NULL, NULL, 0, NULL, 13 }, - { 3, NULL, NULL, 0, NULL, 13 }, + { 2, NULL, NULL, 0, NULL, 14 }, + { 2, NULL, NULL, 0, NULL, 14 }, + { 3, NULL, NULL, 0, NULL, 14 }, + { 3, NULL, NULL, 0, NULL, 14 }, { 2, NULL, NULL, 0, NULL, 1 }, - { 3, NULL, NULL, 0, NULL, 17 }, + { 3, NULL, NULL, 0, NULL, 19 }, { 2, NULL, NULL, 0, NULL, 1 }, { 2, NULL, NULL, 0, NULL, 1 }, { 2, NULL, NULL, 0, NULL, 1 }, { 3, NULL, NULL, 0, NULL, 0 }, - { 3, NULL, NULL, 0, NULL, 22 }, - { 3, NULL, NULL, 0, NULL, 22 } + { 3, NULL, NULL, 0, NULL, 24 }, + { 3, NULL, NULL, 0, NULL, 24 } }; #else static exn_rec *exn_table; @@ -83,6 +87,7 @@ static exn_rec *exn_table; exn_table[MZEXN_FAIL_CONTRACT_VARIABLE].args = 3; exn_table[MZEXN_FAIL_SYNTAX].args = 3; exn_table[MZEXN_FAIL_SYNTAX_UNBOUND].args = 3; + exn_table[MZEXN_FAIL_SYNTAX_MISSING_MODULE].args = 4; exn_table[MZEXN_FAIL_READ].args = 3; exn_table[MZEXN_FAIL_READ_EOF].args = 3; exn_table[MZEXN_FAIL_READ_NON_CHAR].args = 3; @@ -90,6 +95,7 @@ static exn_rec *exn_table; exn_table[MZEXN_FAIL_FILESYSTEM_EXISTS].args = 2; exn_table[MZEXN_FAIL_FILESYSTEM_VERSION].args = 2; exn_table[MZEXN_FAIL_FILESYSTEM_ERRNO].args = 3; + exn_table[MZEXN_FAIL_FILESYSTEM_MISSING_MODULE].args = 3; exn_table[MZEXN_FAIL_NETWORK].args = 2; exn_table[MZEXN_FAIL_NETWORK_ERRNO].args = 3; exn_table[MZEXN_FAIL_OUT_OF_MEMORY].args = 2; @@ -106,15 +112,19 @@ static exn_rec *exn_table; static const char *MZEXN_FIELDS[2] = { "message", "continuation-marks" }; static const char *MZEXN_FAIL_CONTRACT_VARIABLE_FIELDS[1] = { "id" }; static const char *MZEXN_FAIL_SYNTAX_FIELDS[1] = { "exprs" }; + static const char *MZEXN_FAIL_SYNTAX_MISSING_MODULE_FIELDS[1] = { "path" }; static const char *MZEXN_FAIL_READ_FIELDS[1] = { "srclocs" }; static const char *MZEXN_FAIL_FILESYSTEM_ERRNO_FIELDS[1] = { "errno" }; + static const char *MZEXN_FAIL_FILESYSTEM_MISSING_MODULE_FIELDS[1] = { "-path" }; static const char *MZEXN_FAIL_NETWORK_ERRNO_FIELDS[1] = { "errno" }; static const char *MZEXN_BREAK_FIELDS[1] = { "continuation" }; #endif #ifdef _MZEXN_DECL_PROPS # define MZEXN_FAIL_SYNTAX_PROPS scheme_make_pair(scheme_make_pair(scheme_source_property, scheme_make_prim(extract_syntax_locations)), scheme_null) +# define MZEXN_FAIL_SYNTAX_MISSING_MODULE_PROPS scheme_make_pair(scheme_make_pair(scheme_module_path_property, scheme_make_prim(extract_module_path_3)), scheme_null) # define MZEXN_FAIL_READ_PROPS scheme_make_pair(scheme_make_pair(scheme_source_property, scheme_make_prim(extract_read_locations)), scheme_null) +# define MZEXN_FAIL_FILESYSTEM_MISSING_MODULE_PROPS scheme_make_pair(scheme_make_pair(scheme_module_path_property, scheme_make_prim(extract_module_path_2)), scheme_null) #endif #ifdef _MZEXN_SETUP @@ -128,6 +138,7 @@ static exn_rec *exn_table; SETUP_STRUCT(MZEXN_FAIL_CONTRACT_VARIABLE, EXN_PARENT(MZEXN_FAIL_CONTRACT), "exn:fail:contract:variable", 1, MZEXN_FAIL_CONTRACT_VARIABLE_FIELDS, scheme_null, scheme_make_prim(variable_field_check)) SETUP_STRUCT(MZEXN_FAIL_SYNTAX, EXN_PARENT(MZEXN_FAIL), "exn:fail:syntax", 1, MZEXN_FAIL_SYNTAX_FIELDS, MZEXN_FAIL_SYNTAX_PROPS, scheme_make_prim(syntax_field_check)) SETUP_STRUCT(MZEXN_FAIL_SYNTAX_UNBOUND, EXN_PARENT(MZEXN_FAIL_SYNTAX), "exn:fail:syntax:unbound", 0, NULL, scheme_null, NULL) + SETUP_STRUCT(MZEXN_FAIL_SYNTAX_MISSING_MODULE, EXN_PARENT(MZEXN_FAIL_SYNTAX), "exn:fail:syntax:missing-module", 1, MZEXN_FAIL_SYNTAX_MISSING_MODULE_FIELDS, MZEXN_FAIL_SYNTAX_MISSING_MODULE_PROPS, scheme_make_prim(module_path_field_check_3)) SETUP_STRUCT(MZEXN_FAIL_READ, EXN_PARENT(MZEXN_FAIL), "exn:fail:read", 1, MZEXN_FAIL_READ_FIELDS, MZEXN_FAIL_READ_PROPS, scheme_make_prim(read_field_check)) SETUP_STRUCT(MZEXN_FAIL_READ_EOF, EXN_PARENT(MZEXN_FAIL_READ), "exn:fail:read:eof", 0, NULL, scheme_null, NULL) SETUP_STRUCT(MZEXN_FAIL_READ_NON_CHAR, EXN_PARENT(MZEXN_FAIL_READ), "exn:fail:read:non-char", 0, NULL, scheme_null, NULL) @@ -135,6 +146,7 @@ static exn_rec *exn_table; SETUP_STRUCT(MZEXN_FAIL_FILESYSTEM_EXISTS, EXN_PARENT(MZEXN_FAIL_FILESYSTEM), "exn:fail:filesystem:exists", 0, NULL, scheme_null, NULL) SETUP_STRUCT(MZEXN_FAIL_FILESYSTEM_VERSION, EXN_PARENT(MZEXN_FAIL_FILESYSTEM), "exn:fail:filesystem:version", 0, NULL, scheme_null, NULL) SETUP_STRUCT(MZEXN_FAIL_FILESYSTEM_ERRNO, EXN_PARENT(MZEXN_FAIL_FILESYSTEM), "exn:fail:filesystem:errno", 1, MZEXN_FAIL_FILESYSTEM_ERRNO_FIELDS, scheme_null, scheme_make_prim(errno_field_check)) + SETUP_STRUCT(MZEXN_FAIL_FILESYSTEM_MISSING_MODULE, EXN_PARENT(MZEXN_FAIL_FILESYSTEM), "exn:fail:filesystem:missing-module", 1, MZEXN_FAIL_FILESYSTEM_MISSING_MODULE_FIELDS, MZEXN_FAIL_FILESYSTEM_MISSING_MODULE_PROPS, scheme_make_prim(module_path_field_check_2)) SETUP_STRUCT(MZEXN_FAIL_NETWORK, EXN_PARENT(MZEXN_FAIL), "exn:fail:network", 0, NULL, scheme_null, NULL) SETUP_STRUCT(MZEXN_FAIL_NETWORK_ERRNO, EXN_PARENT(MZEXN_FAIL_NETWORK), "exn:fail:network:errno", 1, MZEXN_FAIL_NETWORK_ERRNO_FIELDS, scheme_null, scheme_make_prim(errno_field_check)) SETUP_STRUCT(MZEXN_FAIL_OUT_OF_MEMORY, EXN_PARENT(MZEXN_FAIL), "exn:fail:out-of-memory", 0, NULL, scheme_null, NULL) diff --git a/src/racket/src/schminc.h b/src/racket/src/schminc.h index 85d7837af4..dd10952591 100644 --- a/src/racket/src/schminc.h +++ b/src/racket/src/schminc.h @@ -14,7 +14,7 @@ #define USE_COMPILED_STARTUP 1 -#define EXPECTED_PRIM_COUNT 1093 +#define EXPECTED_PRIM_COUNT 1105 #define EXPECTED_UNSAFE_COUNT 100 #define EXPECTED_FLFXNUM_COUNT 69 #define EXPECTED_EXTFL_COUNT 45 diff --git a/src/racket/src/schpriv.h b/src/racket/src/schpriv.h index 058b8ee7b7..58065342fc 100644 --- a/src/racket/src/schpriv.h +++ b/src/racket/src/schpriv.h @@ -899,6 +899,7 @@ Scheme_Object *scheme_print_attribute_ref(Scheme_Object *s); #define SCHEME_STRUCT_INSPECTOR(obj) (((Scheme_Structure *)obj)->stype->inspector) extern Scheme_Object *scheme_source_property; +extern Scheme_Object *scheme_module_path_property; Scheme_Struct_Type *scheme_lookup_prefab_type(Scheme_Object *key, int field_count); Scheme_Object *scheme_make_blank_prefab_struct_instance(Scheme_Struct_Type *stype); @@ -3794,7 +3795,7 @@ void scheme_flush_orig_outputs(void); Scheme_Object *scheme_file_stream_port_p(int, Scheme_Object *[]); Scheme_Object *scheme_terminal_port_p(int, Scheme_Object *[]); Scheme_Object *scheme_do_open_input_file(char *name, int offset, int argc, Scheme_Object *argv[], - int internal, char **err, int *eerrno); + int internal, char **err, int *eerrno, int for_module); Scheme_Object *scheme_do_open_output_file(char *name, int offset, int argc, Scheme_Object *argv[], int and_read, int internal, char **err, int *eerrno); Scheme_Object *scheme_file_position(int argc, Scheme_Object *argv[]); diff --git a/src/racket/src/schvers.h b/src/racket/src/schvers.h index 5eb83b06ac..7361949f52 100644 --- a/src/racket/src/schvers.h +++ b/src/racket/src/schvers.h @@ -13,12 +13,12 @@ consistently.) */ -#define MZSCHEME_VERSION "5.3.4.3" +#define MZSCHEME_VERSION "5.3.4.4" #define MZSCHEME_VERSION_X 5 #define MZSCHEME_VERSION_Y 3 #define MZSCHEME_VERSION_Z 4 -#define MZSCHEME_VERSION_W 3 +#define MZSCHEME_VERSION_W 4 #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W) diff --git a/src/racket/src/startup.inc b/src/racket/src/startup.inc index dc31a7537a..c77b67a863 100644 --- a/src/racket/src/startup.inc +++ b/src/racket/src/startup.inc @@ -1011,14 +1011,24 @@ " base))))))" "(current-load-relative-directory)" "(current-directory))))" -"(show-collection-err(lambda(s)" -" (let ((s (string-append \"standard-module-name-resolver: \" s)))" +"(show-collection-err(lambda(msg)" +"(let((msg(string-append" +" \"standard-module-name-resolver: \" " +" (regexp-replace #rx\"\\n\" " +" msg" +" (format \"\\n for module path: ~s\\n\"" +" s)))))" +"(raise" "(if stx" -"(raise-syntax-error" -" #f" -" s" -" stx)" -"(error s)))))" +"(exn:fail:syntax:missing-module" +" msg" +"(current-continuation-marks)" +"(list stx)" +" s)" +"(exn:fail:filesystem:missing-module" +" msg" +"(current-continuation-marks)" +" s))))))" "(ss->rkt(lambda(s)" "(let((len(string-length s)))" "(if(and(len . >= . 3)" @@ -1202,7 +1212,20 @@ "(namespace-module-registry(current-namespace))" " normal-filename)" " loading)" -"(parameterize((current-module-declare-name root-modname))" +"(parameterize((current-module-declare-name root-modname)" +"(current-module-path-for-load" +"((if stx" +"(lambda(p)(datum->syntax #f p stx))" +" values)" +"(cond" +"((symbol? s) s)" +"((and(pair? s)(eq?(car s) 'lib)) s)" +"(else(if(resolved-module-path? root-modname)" +"(let((src(resolved-module-path-name root-modname)))" +"(if(symbol? src)" +"(list 'quote src)" +" src))" +" root-modname))))))" "((current-load/use-compiled) " " filename " "(let((sym(string->symbol(path->string no-sfx))))" diff --git a/src/racket/src/startup.rktl b/src/racket/src/startup.rktl index 31ca513273..c4de995c46 100644 --- a/src/racket/src/startup.rktl +++ b/src/racket/src/startup.rktl @@ -1144,14 +1144,24 @@ base)))))) (current-load-relative-directory) (current-directory)))] - [show-collection-err (lambda (s) - (let ([s (string-append "standard-module-name-resolver: " s)]) - (if stx - (raise-syntax-error - #f - s - stx) - (error s))))] + [show-collection-err (lambda (msg) + (let ([msg (string-append + "standard-module-name-resolver: " + (regexp-replace #rx"\n" + msg + (format "\n for module path: ~s\n" + s)))]) + (raise + (if stx + (exn:fail:syntax:missing-module + msg + (current-continuation-marks) + (list stx) + s) + (exn:fail:filesystem:missing-module + msg + (current-continuation-marks) + s)))))] [ss->rkt (lambda (s) (let ([len (string-length s)]) (if (and (len . >= . 3) @@ -1343,7 +1353,24 @@ (namespace-module-registry (current-namespace)) normal-filename) loading) - (parameterize ([current-module-declare-name root-modname]) + (parameterize ([current-module-declare-name root-modname] + [current-module-path-for-load + ;; If `s' is an absolute module path, then + ;; keep it as-is, the better to let a tool + ;; recommend how to get an unavailable module; + ;; also, propagate the source location. + ((if stx + (lambda (p) (datum->syntax #f p stx)) + values) + (cond + [(symbol? s) s] + [(and (pair? s) (eq? (car s) 'lib)) s] + [else (if (resolved-module-path? root-modname) + (let ([src (resolved-module-path-name root-modname)]) + (if (symbol? src) + (list 'quote src) + src)) + root-modname)]))]) ((current-load/use-compiled) filename (let ([sym (string->symbol (path->string no-sfx))]) diff --git a/src/racket/src/struct.c b/src/racket/src/struct.c index 0863121e84..0dd5704b4e 100644 --- a/src/racket/src/struct.c +++ b/src/racket/src/struct.c @@ -29,6 +29,7 @@ READ_ONLY Scheme_Object *scheme_arity_at_least; READ_ONLY Scheme_Object *scheme_date; READ_ONLY Scheme_Object *scheme_make_arity_at_least; READ_ONLY Scheme_Object *scheme_source_property; +READ_ONLY Scheme_Object *scheme_module_path_property; READ_ONLY Scheme_Object *scheme_input_port_property; READ_ONLY Scheme_Object *scheme_output_port_property; READ_ONLY Scheme_Object *scheme_cpointer_property; @@ -173,6 +174,10 @@ static Scheme_Object *check_exn_source_property_value_ok(int argc, Scheme_Object static Scheme_Object *exn_source_p(int argc, Scheme_Object **argv); static Scheme_Object *exn_source_get(int argc, Scheme_Object **argv); +static Scheme_Object *check_exn_module_path_property_value_ok(int argc, Scheme_Object *argv[]); +static Scheme_Object *exn_module_path_p(int argc, Scheme_Object **argv); +static Scheme_Object *exn_module_path_get(int argc, Scheme_Object **argv); + static Scheme_Object *procedure_extract_target(int argc, Scheme_Object **argv); static Scheme_Struct_Type *hash_prefab(Scheme_Struct_Type *type); @@ -791,6 +796,26 @@ scheme_init_struct (Scheme_Env *env) 1, 1, 1), env); + REGISTER_SO(scheme_module_path_property); + { + guard = scheme_make_prim_w_arity(check_exn_module_path_property_value_ok, + "guard-for-prop:exn:srclocs", + 2, 2); + scheme_module_path_property = scheme_make_struct_type_property_w_guard(scheme_intern_symbol("prop:exn:missing-module"), + guard); + } + scheme_add_global_constant("prop:exn:missing-module", scheme_module_path_property, env); + scheme_add_global_constant("exn:missing-module?", + scheme_make_folding_prim(exn_module_path_p, + "exn:missing-module?", + 1, 1, 1), + env); + scheme_add_global_constant("exn:missing-module-accessor", + scheme_make_folding_prim(exn_module_path_get, + "exn:missing-module-accessor", + 1, 1, 1), + env); + { Scheme_Object *p; p = scheme_make_prim_w_arity(scheme_extract_checked_procedure, @@ -5298,6 +5323,34 @@ static Scheme_Object *check_exn_source_property_value_ok(int argc, Scheme_Object /**********************************************************************/ +static Scheme_Object *exn_module_path_p(int argc, Scheme_Object **argv) +{ + return (scheme_struct_type_property_ref(scheme_module_path_property, argv[0]) + ? scheme_true + : scheme_false); +} + +static Scheme_Object *exn_module_path_get(int argc, Scheme_Object **argv) +{ + Scheme_Object *v; + + v = scheme_struct_type_property_ref(scheme_module_path_property, argv[0]); + if (!v) + scheme_wrong_contract("exn:missing-module-accessor", "exn:missing-module?", 0, argc, argv); + + return v; +} + +static Scheme_Object *check_exn_module_path_property_value_ok(int argc, Scheme_Object *argv[]) + /* This is the guard for prop:exn:srclocs */ +{ + scheme_check_proc_arity("guard-for-prop:exn:missing-module", 1, 0, argc, argv); + + return argv[0]; +} + +/**********************************************************************/ + static Scheme_Object *do_chaperone_struct(const char *name, int is_impersonator, int argc, Scheme_Object **argv) /* (chaperone-struct v mutator/selector redirect-proc ...) */ {