diff --git a/pkgs/base/info.rkt b/pkgs/base/info.rkt index e8191da74e..98ede218cd 100644 --- a/pkgs/base/info.rkt +++ b/pkgs/base/info.rkt @@ -12,7 +12,7 @@ (define collection 'multi) -(define version "6.5.0.2") +(define version "6.5.0.3") (define deps `("racket-lib" ["racket" #:version ,version])) diff --git a/pkgs/racket-doc/scribblings/reference/paths.scrbl b/pkgs/racket-doc/scribblings/reference/paths.scrbl index 2b1754c053..fe281084ae 100644 --- a/pkgs/racket-doc/scribblings/reference/paths.scrbl +++ b/pkgs/racket-doc/scribblings/reference/paths.scrbl @@ -527,29 +527,73 @@ proportional to the length of @racket[path] (unlike a loop in that uses @racket[split-path], which must allocate intermediate paths).} -@defproc[(path-replace-suffix [path (or/c path-string? path-for-some-system?)] - [suffix (or/c string? bytes?)]) +@defproc[(path-replace-extension [path (or/c path-string? path-for-some-system?)] + [ext (or/c string? bytes?)]) path-for-some-system?]{ Returns a path that is the same as @racket[path], except that the -suffix for the last element of the path is changed to -@racket[suffix]. If the last element of @racket[path] has no suffix, -then @racket[suffix] is added to the path. A suffix is defined as a -@litchar{.} followed by any number of non-@litchar{.} characters/bytes -at the end of the @tech{path element}, as long as the path element is not -@racket[".."] or @racket["."]. The @racket[path] argument can be a -path for any platform, and the result is for the same platform. If -@racket[path] represents a root, the @exnraise[exn:fail:contract].} +extension for the last element of the path (including the extension +separator) is changed to @racket[ext]. If the last element of +@racket[path] has no extension, then @racket[ext] is added to the +path. -@defproc[(path-add-suffix [path (or/c path-string? path-for-some-system?)] - [suffix (or/c string? bytes?)]) +An extension is defined as a @litchar{.} that is not at the start of +the path element followed by any number of non-@litchar{.} +characters/bytes at the end of the @tech{path element}, as long as the +path element is not a directory indicator like @racket[".."]. + +The @racket[path] argument can be a path for any platform, and the +result is for the same platform. If @racket[path] represents a root, +the @exnraise[exn:fail:contract]. The given @racket[ext] typically +starts with @litchar{.}, but it is not required to start with an +extension separator. + +@examples[ +(path-replace-extension "x/y.ss" #".rkt") +(path-replace-extension "x/y.ss" #"") +(path-replace-extension "x/y" #".rkt") +(path-replace-extension "x/y.tar.gz" #".rkt") +(path-replace-extension "x/.racketrc" #".rkt") +] + +@history[#:added "6.5.0.3"]} + + +@defproc[(path-add-extension [path (or/c path-string? path-for-some-system?)] + [ext (or/c string? bytes?)]) path-for-some-system?]{ -Similar to @racket[path-replace-suffix], but any existing suffix on -@racket[path] is preserved by replacing the @litchar{.} before the suffix -with @litchar{_}, and then the @racket[suffix] is added -to the end.} +Similar to @racket[path-replace-extension], but any existing extension on +@racket[path] is preserved by replacing the @litchar{.} before the extension +with @litchar{_}, and then the @racket[ext] is added +to the end. +@examples[ +(path-add-extension "x/y.ss" #".rkt") +(path-add-extension "x/y" #".rkt") +(path-add-extension "x/y.tar.gz" #".rkt") +(path-add-extension "x/.racketrc" #".rkt") +] + +@history[#:added "6.5.0.3"]} + + +@defproc[(path-replace-suffix [path (or/c path-string? path-for-some-system?)] + [ext (or/c string? bytes?)]) + path-for-some-system?]{ +@deprecated[#:what "function" @racket[path-replace-extension]] + +Like @racket[path-replace-extension], but treats a leading @litchar{.} +in a path element as an extension separator.} + +@defproc[(path-add-suffix [path (or/c path-string? path-for-some-system?)] + [ext (or/c string? bytes?)]) + path-for-some-system?]{ + +@deprecated[#:what "function" @racket[path-add-extension]] + +Like @racket[path-add-extension], but treats a leading @litchar{.} +in a path element as an extension separator.} @defproc[(reroot-path [path (or/c path-string? path-for-some-system?)] [root-path (or/c path-string? path-for-some-system?)]) @@ -590,14 +634,60 @@ Returns the last element of @racket[path]. If @racket[path] is syntactically a directory path (see @racket[split-path]), then the result is @racket[#f].} + +@defproc[(path-extension [path (or/c path-string? path-for-some-system?)]) + (or/c bytes? #f)]{ + +Returns a byte string that is the extension part of the filename in +@racket[path], including the @litchar{.} separator. If the path has no +extension, @racket[#f] is returned. + +See @racket[path-replace-extension] for the definition of a filename +extension. + +@examples[#:eval path-eval +(path-extension "x/y.rkt") +(path-extension "x/y") +(path-extension "x/y.tar.gz") +(path-extension "x/.racketrc") +] + +@history[#:added "6.5.0.3"]} + + +@defproc[(path-has-extension? [path (or/c path-string? path-for-some-system?)] + [ext (or/c bytes? string?)]) + (or/c bytes? #f)]{ + +Determines whether the last element of @racket[path] ends with +@racket[ext] but is not exactly the same as @racket[ext]. + +If @racket[ext] is a @tech{byte string} with the shape of an extension +(i.e., starting with @litchar{.}), this check is equivalent to +checking whether @racket[(path-extension path)] produces @racket[ext]. + +@examples[#:eval path-eval +(path-has-extension? "x/y.rkt" #".rkt") +(path-has-extension? "x/y.ss" #".rkt") +(path-has-extension? "x/y" #".rkt") +(path-has-extension? "x/.racketrc" #".racketrc") +(path-has-extension? "x/compiled/y_rkt.zo" #"_rkt.zo") +] + +@history[#:added "6.5.0.3"]} + + @defproc[(filename-extension [path (or/c path-string? path-for-some-system?)]) (or/c bytes? #f)]{ +@deprecated[#:what "function" @racket[path-extension]] + Returns a byte string that is the extension part of the filename in @racket[path] without the @litchar{.} separator. If @racket[path] is syntactically a directory (see @racket[split-path]) or if the path has no extension, @racket[#f] is returned.} + @defproc[(find-relative-path [base (or/c path-string? path-for-some-system?)] [path (or/c path-string? path-for-some-system?)] [#:more-than-root? more-than-root? any/c #f]) diff --git a/pkgs/racket-test-core/tests/racket/path.rktl b/pkgs/racket-test-core/tests/racket/path.rktl index c609eee4c1..e639bbe47f 100644 --- a/pkgs/racket-test-core/tests/racket/path.rktl +++ b/pkgs/racket-test-core/tests/racket/path.rktl @@ -12,24 +12,47 @@ (test #t pathpath #"a") (bytes->path #"aa")) (test #f pathpath #"aa") (bytes->path #"a")) -(test (string->path "x.zo") path-replace-suffix "x.rkt" ".zo") -(test (string->path "x.zo") path-replace-suffix "x.rkt" #".zo") -(test (string->path "x.zo") path-replace-suffix "x" #".zo") -(test (string->path "x.o.zo") path-replace-suffix "x.o.rkt" #".zo") -(test (string->some-system-path "p/x.zo" 'unix) - path-replace-suffix (string->some-system-path "p/x.rkt" 'unix) ".zo") -(test (string->some-system-path "p/x.zo" 'windows) - path-replace-suffix (string->some-system-path "p/x.rkt" 'windows) ".zo") -(test (string->path "x_rkt.zo") path-add-suffix "x.rkt" ".zo") -(test (string->path "x_rkt.zo") path-add-suffix "x.rkt" #".zo") -(test (string->path "x.zo") path-add-suffix "x" #".zo") -(test (string->path "x.o_rkt.zo") path-add-suffix "x.o.rkt" #".zo") -(test (string->some-system-path "p/x.zo" 'unix) - path-add-suffix (string->some-system-path "p/x" 'unix) ".zo") -(test (string->some-system-path "p/x.zo" 'windows) - path-add-suffix (string->some-system-path "p/x" 'windows) ".zo") +(define (test-basic-extension path-replace-extension + path-add-extension) + (test (string->path "x.zo") path-replace-extension "x.rkt" ".zo") + (test (string->path "x.zo") path-replace-extension "x.rkt" #".zo") + (test (string->path "x.zo") path-replace-extension "x" #".zo") + (test (string->path "x.o.zo") path-replace-extension "x.o.rkt" #".zo") + (test (string->some-system-path "p/x.zo" 'unix) + path-replace-extension (string->some-system-path "p/x.rkt" 'unix) ".zo") + (test (string->some-system-path "p/x.zo" 'windows) + path-replace-extension (string->some-system-path "p/x.rkt" 'windows) ".zo") + (test (string->path "x_rkt.zo") path-add-extension "x.rkt" ".zo") + (test (string->path "x_rkt.zo") path-add-extension "x.rkt" #".zo") + (test (string->path "x.zo") path-add-extension "x" #".zo") + (test (string->path "x.o_rkt.zo") path-add-extension "x.o.rkt" #".zo") + (test (string->some-system-path "p/x.zo" 'unix) + path-add-extension (string->some-system-path "p/x" 'unix) ".zo") + (test (string->some-system-path "p/x.zo" 'windows) + path-add-extension (string->some-system-path "p/x" 'windows) ".zo")) + +(test-basic-extension path-replace-extension + path-add-extension) +(test-basic-extension path-replace-suffix + path-add-suffix) + +(test (string->path ".zo.y") path-replace-extension ".zo" ".y") +(test (string->path ".zo.y") path-replace-extension ".zo" #".y") +(test (string->path ".zo") path-replace-extension ".zo" "") +(test (string->path ".zo") path-replace-extension ".zo" #"") +(test (string->path ".zo.y") path-add-extension ".zo" ".y") +(test (string->path ".zo.y") path-add-extension ".zo" #".y") +(test (string->path ".tar_gz.y") path-add-extension ".tar.gz" ".y") +(test (string->path ".tar_gz.y") path-add-extension ".tar.gz" #".y") + +(test (string->path ".y") path-replace-suffix ".zo" ".y") +(test (string->path ".y") path-replace-suffix ".zo" #".y") +(test (string->path "_zo.y") path-add-suffix ".zo" ".y") +(test (string->path "_zo.y") path-add-suffix ".zo" #".y") (err/rt-test (path-replace-suffix ".zo" "")) (err/rt-test (path-replace-suffix ".zo" #"")) +(test (string->path ".tar_gz.y") path-add-suffix ".tar.gz" ".y") +(test (string->path ".tar_gz.y") path-add-suffix ".tar.gz" #".y") (define (make-/tf p exn?) (lambda args diff --git a/pkgs/racket-test-core/tests/racket/pathlib.rktl b/pkgs/racket-test-core/tests/racket/pathlib.rktl index 685b172b5d..14b7226a20 100644 --- a/pkgs/racket-test-core/tests/racket/pathlib.rktl +++ b/pkgs/racket-test-core/tests/racket/pathlib.rktl @@ -52,10 +52,23 @@ ;; ---------------------------------------- +(rtest path-extension "a" #f) +(rtest path-extension "a.sls" #".sls") +(rtest path-extension (bytes->path #"b/a.sls" 'unix) #".sls") +(rtest path-extension (bytes->path #"b\\a.sls" 'windows) #".sls") +(rtest path-extension ".sls" #f) + +(test #t path-has-extension? "a.sls" #".sls") +(test #t path-has-extension? "a.sls" ".sls") +(test #f path-has-extension? ".sls" #".sls") +(test #t path-has-extension? "a_sls" #"_sls") +(test #t path-has-extension? "x/a.sls/" #".sls") + (rtest filename-extension "a" #f) (rtest filename-extension "a.sls" #"sls") (rtest filename-extension (bytes->path #"b/a.sls" 'unix) #"sls") (rtest filename-extension (bytes->path #"b\\a.sls" 'windows) #"sls") +(rtest filename-extension ".sls" #"sls") ;; ---------------------------------------- diff --git a/racket/collects/compiler/cm.rkt b/racket/collects/compiler/cm.rkt index 04f4c1e0e6..e0f233d82a 100644 --- a/racket/collects/compiler/cm.rkt +++ b/racket/collects/compiler/cm.rkt @@ -116,7 +116,7 @@ (build-path (reroot-path* base root) mode - (path-add-suffix name #".zo")) + (path-add-extension name #".zo")) #f (lambda () #f))]) (and v (list* v mode root)))) @@ -134,10 +134,10 @@ [get-zo-path (lambda () (let-values ([(name mode root) (if main-zo-date+mode - (values (path-add-suffix name #".zo") + (values (path-add-extension name #".zo") (cadr main-zo-date+mode) (cddr main-zo-date+mode)) - (values (path-add-suffix (rkt->ss name) #".zo") + (values (path-add-extension (rkt->ss name) #".zo") (cadr alt-zo-date+mode) (cddr alt-zo-date+mode)))]) (build-path (reroot-path* base root) mode name)))]) @@ -262,8 +262,8 @@ (define (get-source-sha1 p) (with-handlers ([exn:fail:filesystem? (lambda (exn) - (and (regexp-match? #rx#"[.]rkt$" p) - (get-source-sha1 (path-replace-suffix p #".ss"))))]) + (and (path-has-extension? p #".rkt") + (get-source-sha1 (path-replace-extension p #".ss"))))]) (call-with-input-file* p sha1))) (define (get-dep-sha1s deps up-to-date collection-cache read-src-syntax path->mode roots must-exist? seen) @@ -304,7 +304,7 @@ (define (write-deps code path->mode roots path src-sha1 external-deps external-module-deps reader-deps up-to-date collection-cache read-src-syntax) - (let ([dep-path (path-add-suffix (get-compilation-path path->mode roots path) #".dep")] + (let ([dep-path (path-add-extension (get-compilation-path path->mode roots path) #".dep")] [deps (remove-duplicates (append (get-deps code path) external-module-deps ; can create cycles if misused! reader-deps))] @@ -539,7 +539,7 @@ (trace-printf "maybe-compile-zo starting ~a" actual-path)) (begin0 (parameterize ([indent (+ 2 (indent))]) - (let* ([zo-name (path-add-suffix (get-compilation-path path->mode roots path) #".zo")] + (let* ([zo-name (path-add-extension (get-compilation-path path->mode roots path) #".zo")] [zo-exists? (file-exists? zo-name)]) (if (and zo-exists? (trust-existing-zos)) (begin @@ -593,9 +593,9 @@ (define (get-compiled-time path->mode roots path) (define-values (dir name) (get-compilation-dir+name path #:modes (list (path->mode path)) #:roots roots)) (or (try-file-time (build-path dir "native" (system-library-subpath) - (path-add-suffix name (system-type - 'so-suffix)))) - (try-file-time (build-path dir (path-add-suffix name #".zo"))))) + (path-add-extension name (system-type + 'so-suffix)))) + (try-file-time (build-path dir (path-add-extension name #".zo"))))) (define (try-file-sha1 path dep-path) (with-module-reading-parameterization @@ -608,18 +608,18 @@ (define (get-compiled-sha1 path->mode roots path) (define-values (dir name) (get-compilation-dir+name path #:modes (list (path->mode path)) #:roots roots)) - (let ([dep-path (build-path dir (path-add-suffix name #".dep"))]) + (let ([dep-path (build-path dir (path-add-extension name #".dep"))]) (or (try-file-sha1 (build-path dir "native" (system-library-subpath) - (path-add-suffix name (system-type - 'so-suffix))) + (path-add-extension name (system-type + 'so-suffix))) dep-path) - (try-file-sha1 (build-path dir (path-add-suffix name #".zo")) + (try-file-sha1 (build-path dir (path-add-extension name #".zo")) dep-path) ""))) (define (rkt->ss p) - (if (regexp-match? #rx#"[.]rkt$" p) - (path-replace-suffix p #".ss") + (if (path-has-extension? p #".rkt") + (path-replace-extension p #".ss") p)) (define (compile-root path->mode roots path0 up-to-date collection-cache read-src-syntax sha1-only? seen) @@ -629,7 +629,7 @@ (with-module-reading-parameterization (lambda () (call-with-input-file - (path-add-suffix (get-compilation-path path->mode roots path) #".dep") + (path-add-extension (get-compilation-path path->mode roots path) #".dep") read))))) (define (do-check) (let* ([main-path orig-path] @@ -776,7 +776,7 @@ (file-exists? p2))))) (trace-printf "skipping: ~a file does not exist" path) (when delete-zos-when-rkt-file-does-not-exist? - (define to-delete (path-add-suffix (get-compilation-path path->mode roots path) #".zo")) + (define to-delete (path-add-extension (get-compilation-path path->mode roots path) #".zo")) (when (file-exists? to-delete) (trace-printf "deleting: ~s" to-delete) (with-compiler-security-guard (delete-file to-delete))))] @@ -827,7 +827,7 @@ ;; Exported: (define (get-compiled-file-sha1 path) - (try-file-sha1 path (path-replace-suffix path #".dep"))) + (try-file-sha1 path (path-replace-extension path #".dep"))) (define (get-file-sha1 path) (get-source-sha1 path)) diff --git a/racket/collects/compiler/distribute.rkt b/racket/collects/compiler/distribute.rkt index e026d8023a..c0d3d5c420 100644 --- a/racket/collects/compiler/distribute.rkt +++ b/racket/collects/compiler/distribute.rkt @@ -96,7 +96,7 @@ "generic" (let-values ([(base name dir?) (split-path (car binaries))]) - (path-replace-suffix name #""))))] + (path-replace-extension name #""))))] [relative-collects-dir (or collects-path (build-path specific-lib-dir @@ -702,6 +702,6 @@ b)))) (let ([no-app (let-values ([(base name dir?) (split-path b)]) - (path-replace-suffix name #""))]) + (path-replace-extension name #""))]) (build-path b "Contents" "MacOS" no-app)) b))) diff --git a/racket/collects/compiler/embed.rkt b/racket/collects/compiler/embed.rkt index 2815d51f87..039020f2da 100644 --- a/racket/collects/compiler/embed.rkt +++ b/racket/collects/compiler/embed.rkt @@ -103,11 +103,11 @@ [fixup (lambda (re sfx) (if (regexp-match re (path->bytes path)) path - (path-replace-suffix path sfx)))]) + (path-replace-extension path sfx)))]) (case (cross-system-type) - [(windows) (fixup #rx#"[.][eE][xX][eE]$" #".exe")] + [(windows) (fixup #rx#".[.][eE][xX][eE]$" #".exe")] [(macosx) (if mred? - (fixup #rx#"[.][aA][pP][pP]$" #".app") + (fixup #rx#".[.][aA][pP][pP]$" #".app") path)] [else path]))) @@ -116,7 +116,7 @@ (let-values ([(base name dir?) (split-path dest)]) (build-path dest "Contents" "MacOS" - (path-replace-suffix name #""))) + (path-replace-extension name #""))) dest)) (define exe-suffix? @@ -149,7 +149,7 @@ (define (prepare-macosx-mred exec-name dest aux variant) (let* ([name (let-values ([(base name dir?) (split-path dest)]) - (path-replace-suffix name #""))] + (path-replace-extension name #""))] [src (build-path (find-lib-dir) "Starter.app")] [creator (let ([c (assq 'creator aux)]) (or (and c @@ -383,16 +383,16 @@ (values (reverse dirs) (car l)) (loop (cdr l) (cons (car l) dirs))))) -(define (adjust-ss/rkt-suffix path) +(define (adjust-ss/rkt-extension path) (cond [(file-exists? path) path] - [(regexp-match? #rx"[.]ss$" path) - (define rkt-path (path-replace-suffix path #".rkt")) + [(path-has-extension? path #".ss") + (define rkt-path (path-replace-extension path #".rkt")) (if (file-exists? rkt-path) rkt-path path)] - [(regexp-match? #rx"[.]rkt$" path) - (define ss-path (path-replace-suffix path #".ss")) + [(path-has-extension? path #".rkt") + (define ss-path (path-replace-extension path #".ss")) (if (file-exists? ss-path) ss-path path)] @@ -405,7 +405,7 @@ (let ([p (build-path collects-dest (apply build-path dir) "compiled" - (path-add-suffix file #".zo"))]) + (path-add-extension file #".zo"))]) (let-values ([(base name dir?) (split-path p)]) (make-directory* base) p)))) @@ -426,7 +426,7 @@ ;; main module even if a submodule is include in `filename`. [use-source? (and (not a) - (src-filter (adjust-ss/rkt-suffix (strip-submod filename))))] + (src-filter (adjust-ss/rkt-extension (strip-submod filename))))] ;; When using source or writing to collects, keep full modules: [keep-full? (or use-source? collects-dest)] ;; When keeping a full module, strip away submodule paths: @@ -467,9 +467,9 @@ null)] [just-filename (strip-submod filename)] [root-module-path (strip-submod module-path)] - [actual-filename just-filename] ; `set!'ed below to adjust file suffix + [actual-filename just-filename] ; `set!'ed below to adjust file extension [name (let-values ([(base name dir?) (split-path just-filename)]) - (path->string (path-replace-suffix name #"")))] + (path->string (path-replace-extension name #"")))] [prefix (let ([a (assoc just-filename prefixes)]) (if a (cdr a) @@ -785,7 +785,7 @@ (if (regexp-match #rx"^[^/.]*$" (cadr path)) (string-append (cadr path) "/main.ss") (if (regexp-match #rx"^[^.]*$" (cadr path)) - ;; need a suffix: + ;; need an extension: (string-append (cadr path) ".ss") (cadr path))))] [else @@ -898,7 +898,7 @@ (if (regexp-match #rx"^[^/.]*$" (cadr name)) (string-append (cadr name) "/main.rkt") (if (regexp-match #rx"^[^.]*$" (cadr name)) - ;; need a suffix: + ;; need an extension: (string-append (cadr name) ".rkt") (ss->rkt (cadr name))))) ;; old-style multi-string @@ -909,7 +909,7 @@ (ss->rkt (cadr name)))) (if (eq? 'planet (car name)) (letrec-values ([(split) - (lambda (s rx suffix-after) + (lambda (s rx extension-after) (let-values ([(m) (regexp-match-positions rx s)]) @@ -917,9 +917,9 @@ (cons (substring s 0 (caar m)) (split (substring s (cdar m)) rx - (- suffix-after 1))) + (- extension-after 1))) (list - (if (suffix-after . <= . 0) + (if (extension-after . <= . 0) (if (regexp-match? #rx"[.]" s) s (string-append s ".rkt")) @@ -1098,13 +1098,13 @@ (define (ss<->rkt path mk-full) (cond - [(regexp-match? #rx#"[.]ss$" path) - (ss<->rkt (path-replace-suffix path #".rkt") mk-full)] - [(regexp-match? #rx#"[.]rkt$" path) + [(path-has-extension? path #".ss") + (ss<->rkt (path-replace-extension path #".rkt") mk-full)] + [(path-has-extension? path #".rkt") (define full-path (mk-full path)) (if (file-exists? full-path) full-path - (let ([p2 (mk-full (path-replace-suffix path #".ss"))]) + (let ([p2 (mk-full (path-replace-extension path #".ss"))]) (if (file-exists? p2) p2 full-path)))] diff --git a/racket/collects/compiler/private/xform.rkt b/racket/collects/compiler/private/xform.rkt index a13e879114..5f0003b5b7 100644 --- a/racket/collects/compiler/private/xform.rkt +++ b/racket/collects/compiler/private/xform.rkt @@ -36,8 +36,8 @@ (define source-is-c++? (regexp-match #rx"([.]cc$)|([.]cxx$)" file-in)) - (define (change-suffix filename new) - (path-replace-suffix filename new)) + (define (change-extension filename new) + (path-replace-extension filename new)) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; "AST" structures @@ -488,10 +488,10 @@ (define recorded-cpp-out (and precompiling-header? - (open-output-file (change-suffix file-out #".e") #:exists 'truncate))) + (open-output-file (change-extension file-out #".e") #:exists 'truncate))) (define recorded-cpp-in (and precompiled-header - (open-input-file (change-suffix precompiled-header #".e")))) + (open-input-file (change-extension precompiled-header #".e")))) (define re:boring #rx#"^(?:(?:[ \t]*)|(?:# .*)|(?:#line .*)|(?:#pragma implementation.*)|(?:#pragma interface.*)|(?:#pragma once)|(?:#pragma warning.*)|(?:#ident.*))$") (define re:uninteresting #rx#"^(?:(?:[ \t]*)|(?:# .*)|(?:#line .*)|(?:#pragma implementation.*)|(?:#pragma interface.*)|(?:#pragma once)|(?:#pragma GCC diagnostic.*)|(?:#pragma warning.*)|(?:#ident.*))$") (define (skip-to-interesting-line p) @@ -1111,7 +1111,7 @@ (namespace-set-variable-value! (car v) (cdr v)))) (namespace-set-variable-value! 'make-short-tok make-short-tok) ;; Load the pre-compiled-header-as-.zo: - (let ([l (load (change-suffix precompiled-header #".zo"))]) + (let ([l (load (change-extension precompiled-header #".zo"))]) (for-each (lambda (x) (hash-set! used-symbols (car x) (+ @@ -4168,7 +4168,7 @@ non-gcing-functions non-aliasing-functions (list 'quote gc-var-stack-mode))]) - (with-output-to-file (change-suffix file-out #".zo") + (with-output-to-file (change-extension file-out #".zo") (lambda () (let ([orig (current-namespace)]) (parameterize ([current-namespace (make-base-namespace)]) @@ -4194,7 +4194,7 @@ (error 'xform "Errors converting")) (when output-depends-info? - (with-output-to-file (change-suffix file-out #".sdep") + (with-output-to-file (change-extension file-out #".sdep") (lambda () (write (hash-map depends-files (lambda (k v) k))) (newline)) diff --git a/racket/collects/dynext/file.rkt b/racket/collects/dynext/file.rkt index 014e52f62f..c19e7bebb5 100644 --- a/racket/collects/dynext/file.rkt +++ b/racket/collects/dynext/file.rkt @@ -15,21 +15,21 @@ extract-base-filename/ext) (define (append-zo-suffix s) - (path-add-suffix s #".zo")) + (path-add-extension s #".zo")) (define (append-c-suffix s) - (path-add-suffix s #".c")) + (path-add-extension s #".c")) (define (append-constant-pool-suffix s) - (path-add-suffix s #".kp")) + (path-add-extension s #".kp")) (define (append-object-suffix s) - (path-add-suffix s (case (system-type) - [(unix macosx) #".o"] - [(windows) #".obj"]))) + (path-add-extension s (case (system-type) + [(unix macosx) #".o"] + [(windows) #".obj"]))) (define (append-extension-suffix s) - (path-add-suffix s (system-type 'so-suffix))) + (path-add-extension s (system-type 'so-suffix))) (define (extract-suffix appender) (subbytes (path->bytes (appender (bytes->path #"x"))) 1)) @@ -47,7 +47,7 @@ (if simple (error program "not a ~a filename (doesn't end with ~a): ~a" kind simple s) - (path-replace-suffix s #""))] + (path-replace-extension s #""))] [else #f])) (define module-suffix-regexp diff --git a/racket/collects/launcher/launcher.rkt b/racket/collects/launcher/launcher.rkt index 41020e4eb3..bbf35b4b36 100644 --- a/racket/collects/launcher/launcher.rkt +++ b/racket/collects/launcher/launcher.rkt @@ -174,13 +174,13 @@ [(macosx) (and mred? (not (script-variant? variant)))]))]) (if (string=? "" s) path - (path-replace-suffix + (path-replace-extension path (string->bytes/utf-8 (if (and (eq? 'windows (cross-system-type)) - (regexp-match #rx#"[.]exe$" (path->bytes path))) - (format "~a.exe" s) - s)))))) + (path-has-extension? path #".exe")) + (format "~a.exe" s) + s)))))) (define (string-append/spaces f flags) (string-append* (append-map (lambda (x) (list (f x) " ")) flags))) @@ -515,8 +515,8 @@ (define dir (if user? (find-user-apps-dir) (find-apps-dir))) - (path-replace-suffix (build-path dir (file-name-from-path dest)) - #".desktop")) + (path-replace-extension (build-path dir (file-name-from-path dest)) + #".desktop")) (define (installed-desktop-path->icon-path dest user? extension) ;; We put icons files in "share" so that `setup/unixstyle-install' @@ -532,7 +532,7 @@ (build-path (if user? (find-user-share-dir) (find-share-dir)) - (path-replace-suffix + (path-replace-extension (file-name-from-path dest) (bytes-append #"-exe-icon." @@ -770,7 +770,7 @@ [else flags])) (define (strip-suffix s) - (path-replace-suffix s #"")) + (path-replace-extension s #"")) (define (extract-aux-from-path path) (define path-bytes (path->bytes (if (string? path) @@ -879,7 +879,7 @@ (define (build-aux-from-path aux-root) (let ([aux-root (if (string? aux-root) (string->path aux-root) aux-root)]) (define (try suffix) - (let ([p (path-replace-suffix aux-root suffix)]) + (let ([p (path-replace-extension aux-root suffix)]) (if (file-exists? p) (extract-aux-from-path p) null))) @@ -950,7 +950,7 @@ mred?)]) (if (and (eq? (cross-system-type) 'macosx) (not (script-variant? variant))) - (path-replace-suffix p #".app") + (path-replace-extension p #".app") p)))) (define (gracket-program-launcher-path name #:user? [user? #f] #:tethered? [tethered? #f]) diff --git a/racket/collects/pkg/name.rkt b/racket/collects/pkg/name.rkt index 2620a7c7bd..b96160bc6f 100644 --- a/racket/collects/pkg/name.rkt +++ b/racket/collects/pkg/name.rkt @@ -3,6 +3,7 @@ racket/contract racket/format racket/string + racket/path net/url) (provide @@ -45,9 +46,9 @@ (validate-name (and name+ext (path->string - (if (regexp-match #rx#"[.]tar[.]gz$" name+ext) - (path-replace-suffix (path-replace-suffix name+ext #"") #"") - (path-replace-suffix name+ext #"")))) + (if (path-has-extension? name+ext #".tar.gz") + (path-replace-extension (path-replace-extension name+ext #"") #"") + (path-replace-extension name+ext #"")))) complain #t)) @@ -102,7 +103,7 @@ (and (cor (path-string? s) (complain "ill-formed path")) (cor (regexp-match rx:archive s) - (complain "path does not end with a recognized archive suffix")) + (complain "path does not end with a recognized archive extension")) (let () (define-values (base name+ext dir?) (if (path-string? s) (split-path s) @@ -231,7 +232,7 @@ (and (cor (pair? p) (complain "URL path is empty")) (cor (string-and-regexp-match? rx:archive (path/param-path (last p))) - (complain "URL does not end with a recognized archive suffix")) + (complain "URL does not end with a recognized archive extension")) (extract-archive-name (last-non-empty p) complain-name))) (values name 'file-url)] [(if type diff --git a/racket/collects/pkg/private/addl-installs.rkt b/racket/collects/pkg/private/addl-installs.rkt index d725eaeffa..8029e88b89 100644 --- a/racket/collects/pkg/private/addl-installs.rkt +++ b/racket/collects/pkg/private/addl-installs.rkt @@ -76,7 +76,7 @@ (string-foldcase (if ((length doc) . < . 4) (let-values ([(base name dir?) (split-path (car doc))]) - (path->string (path-replace-suffix name #""))) + (path->string (path-replace-extension name #""))) (list-ref doc 3))))])))) (define (extract-paths i tag keys) (define (get k) diff --git a/racket/collects/pkg/private/archive.rkt b/racket/collects/pkg/private/archive.rkt index cbf2f7c46e..7456c40904 100644 --- a/racket/collects/pkg/private/archive.rkt +++ b/racket/collects/pkg/private/archive.rkt @@ -123,7 +123,7 @@ (match-define (pkg-info _ checksum _) pkg-i) (with-handlers ([exn:fail? (λ (exn) (package-exn-handler name exn))]) (define pkg-file (build-path dest-dir "pkgs" (format "~a.zip" name))) - (define pkg-checksum-file (path-replace-suffix pkg-file #".zip.CHECKSUM")) + (define pkg-checksum-file (path-replace-extension pkg-file #".zip.CHECKSUM")) (define pkg-dir (pkg-directory name)) (unless pkg-dir diff --git a/racket/collects/pkg/private/catalog-archive.rkt b/racket/collects/pkg/private/catalog-archive.rkt index 38bb4885f0..d27d288aa0 100644 --- a/racket/collects/pkg/private/catalog-archive.rkt +++ b/racket/collects/pkg/private/catalog-archive.rkt @@ -66,7 +66,7 @@ (and (= 1 (length l)) (db:pkg-checksum (car l)))))) (define pkg-file (build-path dest-dir "pkgs" (format "~a.zip" name))) - (define pkg-checksum-file (path-replace-suffix pkg-file #".zip.CHECKSUM")) + (define pkg-checksum-file (path-replace-extension pkg-file #".zip.CHECKSUM")) (unless (and current-checksum (equal? current-checksum (db:pkg-checksum pkg)) (file-exists? pkg-file) diff --git a/racket/collects/pkg/private/catalog.rkt b/racket/collects/pkg/private/catalog.rkt index bde12a9243..ca30e07c8b 100644 --- a/racket/collects/pkg/private/catalog.rkt +++ b/racket/collects/pkg/private/catalog.rkt @@ -21,7 +21,7 @@ db-path?) (define (db-path? p) - (regexp-match? #rx"[.]sqlite$" (path->bytes p))) + (path-has-extension? p #".sqlite")) (define (catalog-dispatch i server db dir) (cond diff --git a/racket/collects/pkg/private/check-will-exist.rkt b/racket/collects/pkg/private/check-will-exist.rkt index 8043b6a53e..57db3d8ffd 100644 --- a/racket/collects/pkg/private/check-will-exist.rkt +++ b/racket/collects/pkg/private/check-will-exist.rkt @@ -26,9 +26,9 @@ #:deleted-result [deleted-result #f]) (define v (or (file-exists? f) - (file-exists? (path-replace-suffix f #".ss")) + (file-exists? (path-replace-extension f #".ss")) (and (or (file-exists? (get-compilation-bytecode-file f)) - (file-exists? (get-compilation-bytecode-file (path-replace-suffix f #".ss")))) + (file-exists? (get-compilation-bytecode-file (path-replace-extension f #".ss")))) ;; found bytecode; make sure it won't be deleted by `raco setup` (or (bytecode-will-stick-around? f mp metadata-ns) deleted-result)))) diff --git a/racket/collects/racket/include.rkt b/racket/collects/racket/include.rkt index be0a869e98..6f8fffbf94 100644 --- a/racket/collects/racket/include.rkt +++ b/racket/collects/racket/include.rkt @@ -1,6 +1,7 @@ #lang racket/base (require (for-syntax racket/base + racket/path syntax/path-spec "private/increader.rkt" compiler/cm-accomplice)) @@ -20,10 +21,9 @@ [reader (syntax reader)] [orig-stx (syntax orig-stx)] [rkt->ss (lambda (p) - (let ([b (path->bytes p)]) - (if (regexp-match? #rx#"[.]rkt$" b) - (path-replace-suffix p #".ss") - p)))]) + (if (path-has-extension? p #".rkt") + (path-replace-extension p #".ss") + p))]) (let ([c-file (if (file-exists? orig-c-file) orig-c-file diff --git a/racket/collects/racket/path.rkt b/racket/collects/racket/path.rkt index 2a8f04ec4f..54becc09b4 100644 --- a/racket/collects/racket/path.rkt +++ b/racket/collects/racket/path.rkt @@ -3,6 +3,8 @@ (provide find-relative-path simple-form-path normalize-path + path-has-extension? + path-extension filename-extension file-name-from-path path-only @@ -163,7 +165,28 @@ [(path-for-some-system? base) base] [else #f]))) -;; name can be any string; we just look for a dot +(define (path-has-extension? name sfx) + (unless (path-string? name) + (raise-argument-error 'path-extension=? "path-string?" name)) + (unless (or (bytes? sfx) (string? sfx)) + (raise-argument-error 'path-extension=? "(or/c bytes? string?)" name)) + (let-values ([(base file dir?) (split-path name)]) + (and base + (path? file) + (let* ([bs (path-element->bytes file)] + [sfx (if (bytes? sfx) sfx (string->bytes/utf-8 sfx))] + [len (bytes-length bs)] + [slen (bytes-length sfx)]) + (and (len . > . slen) + (bytes=? sfx (subbytes bs (- len slen)))))))) + +(define (path-extension name) + (let* ([name (file-name 'filename-extension name)] + [name (and name (path->bytes name))]) + (cond [(and name (regexp-match #rx#"(?<=.)([.][^.]+)$" name)) => cadr] + [else #f]))) + +;; This old variant doesn't correctly handle filenames that start with ".": (define (filename-extension name) (let* ([name (file-name 'filename-extension name)] [name (and name (path->bytes name))]) diff --git a/racket/collects/racket/private/misc.rkt b/racket/collects/racket/private/misc.rkt index 14da5b91e9..2ab7da8d54 100644 --- a/racket/collects/racket/private/misc.rkt +++ b/racket/collects/racket/private/misc.rkt @@ -4,7 +4,7 @@ (module misc '#%kernel (#%require '#%utils ; built into racket - "small-scheme.rkt" "define.rkt" + "small-scheme.rkt" "define.rkt" "path.rkt" (for-syntax '#%kernel "qq-and-or.rkt" "stx.rkt" "stxcase-scheme.rkt" "stxcase.rkt")) ;; ------------------------------------------------------------------------- @@ -245,7 +245,9 @@ (#%provide define-syntax-rule rationalize - path-string? path-replace-suffix path-add-suffix + path-string? + path-replace-suffix path-add-suffix + path-replace-extension path-add-extension normal-case-path reroot-path read-eval-print-loop load/cd diff --git a/racket/collects/racket/private/path.rkt b/racket/collects/racket/private/path.rkt new file mode 100644 index 0000000000..623ce6ba57 --- /dev/null +++ b/racket/collects/racket/private/path.rkt @@ -0,0 +1,70 @@ +;; Old variants of `path-replace-extension` and +;; `path-add-extension` that do the wrong thing with +;; file names that start "." +(module path '#%kernel + (#%require '#%min-stx) + + (#%provide path-replace-suffix + path-add-suffix) + + (define-values (path-string?) + (lambda (s) + (or (path? s) + (and (string? s) + (or (relative-path? s) + (absolute-path? s)))))) + + (define-values (check-suffix-call) + (lambda (s sfx who) + (unless (or (path-for-some-system? s) + (path-string? s)) + (raise-argument-error who "(or/c path-for-some-system? path-string?)" 0 s sfx)) + (unless (or (string? sfx) (bytes? sfx)) + (raise-argument-error who "(or/c string? bytes?)" 1 s sfx)) + (let-values ([(base name dir?) (split-path s)]) + (when (not base) + (raise-mismatch-error who "cannot add a suffix to a root path: " s)) + (values base name)))) + + (define-values (path-adjust-suffix) + (lambda (name sep rest-bytes s sfx) + (let-values ([(base name) (check-suffix-call s sfx name)]) + (define bs (path-element->bytes name)) + (define finish + (lambda (i sep i2) + (bytes->path-element + (let ([res (bytes-append + (subbytes bs 0 i) + sep + (rest-bytes bs i2) + (if (string? sfx) + (string->bytes/locale sfx (char->integer #\?)) + sfx))]) + (if (zero? (bytes-length res)) + (raise-arguments-error 'path-replace-suffix + "removing suffix makes path element empty" + "given path" s) + res)) + (if (path-for-some-system? s) + (path-convention-type s) + (system-path-convention-type))))) + (let ([new-name (letrec-values ([(loop) + (lambda (i) + (if (zero? i) + (finish (bytes-length bs) #"" (bytes-length bs)) + (let-values ([(i) (sub1 i)]) + (if (eq? (char->integer #\.) (bytes-ref bs i)) + (finish i sep (add1 i)) + (loop i)))))]) + (loop (bytes-length bs)))]) + (if (path-for-some-system? base) + (build-path base new-name) + new-name))))) + + (define-values (path-replace-suffix) + (lambda (s sfx) + (path-adjust-suffix 'path-replace-suffix #"" (lambda (bs i) #"") s sfx))) + + (define-values (path-add-suffix) + (lambda (s sfx) + (path-adjust-suffix 'path-add-suffix #"_" subbytes s sfx)))) diff --git a/racket/collects/racket/private/pre-base.rkt b/racket/collects/racket/private/pre-base.rkt index 74b50d7140..292096cd0d 100644 --- a/racket/collects/racket/private/pre-base.rkt +++ b/racket/collects/racket/private/pre-base.rkt @@ -159,7 +159,7 @@ collection #:check-compiled? [check-compiled? (and (path-string? file-name) - (regexp-match? #rx"[.]rkt$" file-name))] + (regexp-match? #rx".[.]rkt$" file-name))] #:fail [fail (lambda (s) (raise (exn:fail:filesystem diff --git a/racket/collects/racket/rerequire.rkt b/racket/collects/racket/rerequire.rkt index 93ea18a357..edec108af5 100644 --- a/racket/collects/racket/rerequire.rkt +++ b/racket/collects/racket/rerequire.rkt @@ -1,6 +1,7 @@ #lang racket/base -(require syntax/modcode) +(require syntax/modcode + racket/path) (provide dynamic-rerequire) @@ -76,8 +77,8 @@ (let ([ts (file-or-directory-modify-seconds path #f (lambda () #f))]) (if ts (values ts path) - (if (regexp-match? #rx#"[.]rkt$" (path->bytes path)) - (let* ([alt-path (path-replace-suffix path #".ss")] + (if (path-has-extension? path #".rkt") + (let* ([alt-path (path-replace-extension path #".ss")] [ts (file-or-directory-modify-seconds alt-path #f (lambda () #f))]) (if ts (values ts alt-path) diff --git a/racket/collects/racket/runtime-path.rkt b/racket/collects/racket/runtime-path.rkt index 57ef3ddc41..43d370271a 100644 --- a/racket/collects/racket/runtime-path.rkt +++ b/racket/collects/racket/runtime-path.rkt @@ -113,7 +113,7 @@ (append (cddr p) (drop-right strs 1)))]) (let ([file (if (regexp-match? #rx#"[.]ss$" file) ;; normalize to ".rkt": - (path-replace-suffix file #".rkt") + (path-replace-extension file #".rkt") file)]) (let ([p (apply collection-file-path file @@ -124,7 +124,7 @@ ;; Try ".ss": (define p2 (apply collection-file-path #:check-compiled? #f - (path-replace-suffix file #".ss") + (path-replace-extension file #".ss") coll)) (if (file-exists? p2) p2 diff --git a/racket/collects/setup/main.rkt b/racket/collects/setup/main.rkt index ab099ea2d2..1489a6b4e8 100644 --- a/racket/collects/setup/main.rkt +++ b/racket/collects/setup/main.rkt @@ -146,7 +146,7 @@ ;; We do not currently support "external" dependencies ;; (via cm-accomplice) during bootstrap. (let ([deps (with-input-from-file - (bytes->path (regexp-replace #"[.]zo$" (path->bytes path) #".dep")) + (path-replace-extension path #".dep") read)]) (for-each (lambda (dep) (let ([dep diff --git a/racket/collects/setup/private/command-name.rkt b/racket/collects/setup/private/command-name.rkt index 9ad93343b6..9a3dfd0444 100644 --- a/racket/collects/setup/private/command-name.rkt +++ b/racket/collects/setup/private/command-name.rkt @@ -9,7 +9,7 @@ (lambda () (let-values ([(p) (find-system-path 'run-file)]) (let-values ([(p) (if (eq? (system-type) 'windows) - (path-replace-suffix p #"") + (path-replace-extension p #"") p)]) (let-values ([(base name dir?) (split-path p)]) (if (current-command-name) diff --git a/racket/collects/setup/private/pkg-deps.rkt b/racket/collects/setup/private/pkg-deps.rkt index 3c897ad0ce..ffcd805291 100644 --- a/racket/collects/setup/private/pkg-deps.rkt +++ b/racket/collects/setup/private/pkg-deps.rkt @@ -307,7 +307,7 @@ 'core)) (when src-pkg (unless (check-dep! pkg src-pkg mode) - (define key (list pkg src-pkg (path-replace-suffix f #"") mod)) + (define key (list pkg src-pkg (path-replace-extension f #"") mod)) (unless (hash-ref reported key #f) (hash-set! reported key #t) (setup-fprintf* (current-error-port) #f @@ -360,7 +360,7 @@ ;; ---------------------------------------- (define (check-bytecode-deps f dir coll-path pkg) - (define zo-f (path-replace-suffix f #".zo")) + (define zo-f (path-replace-extension f #".zo")) (when (file-exists? (build-path dir zo-f)) (define base (let ([m (regexp-match #rx#"^(.*)_[a-z]+[.]zo$" (path-element->bytes zo-f))]) @@ -426,7 +426,7 @@ (define name (if ((length s) . > . 3) (list-ref s 3) (path-element->string - (path-replace-suffix (file-name-from-path src) #"")))) + (path-replace-extension (file-name-from-path src) #"")))) (define dest-dir (if main? (build-path (find-doc-dir) name) (build-path path "doc" name))) @@ -477,11 +477,11 @@ (not (hash-ref skip-pkgs pkg #f))) (for ([f (directory-list dir)]) ;; A ".dep" file triggers a check: - (when (regexp-match? #rx#"[.]dep$" (path-element->bytes f)) + (when (path-has-extension? f #".dep") ;; Decide whether the file is inherently 'build or 'run mode: (define mode (if (or (eq? coll-mode 'build) - (regexp-match? #rx#"_scrbl[.]dep$" (path-element->bytes f))) + (path-has-extension? f #"_scrbl.dep")) 'build 'run)) ;; Look at the actual module for 'run mode (dropping diff --git a/racket/collects/setup/setup-core.rkt b/racket/collects/setup/setup-core.rkt index 5559704d02..c04a687c8d 100644 --- a/racket/collects/setup/setup-core.rkt +++ b/racket/collects/setup/setup-core.rkt @@ -731,7 +731,7 @@ ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define (delete-file/record-dependency path dependencies) - (when (regexp-match-positions #rx"[.]dep$" (path->bytes path)) + (when (path-has-extension? path #".dep") (define deps (with-handlers ([exn:fail? (lambda (x) null)]) (with-input-from-file path read))) @@ -828,8 +828,8 @@ old-dependencies (lambda (file _) (define-values [dir name dir?] (split-path file)) - (define zo (build-path dir mode-dir (path-add-suffix name #".zo"))) - (define dep (build-path dir mode-dir (path-add-suffix name #".dep"))) + (define zo (build-path dir mode-dir (path-add-extension name #".zo"))) + (define dep (build-path dir mode-dir (path-add-extension name #".dep"))) (when (and (file-exists? dep) (file-exists? zo)) (set! did-something? #t) (setup-printf "deleting" "~a" (path->relative-string/setup zo #:cache pkg-path-cache)) @@ -991,13 +991,13 @@ ;; appear in a "compiled" directory: (make-immutable-hash (map (lambda (p) - (cons (path-add-suffix p #".zo") #t)) + (cons (path-add-extension p #".zo") #t)) (append (directory-list dir) (info 'virtual-sources (lambda () null))))))]) ;; Check each file in `c` to see whether it can stay: (for ([p (directory-list c)]) - (when (and (regexp-match #rx#".(zo|dep)$" (path-element->bytes p)) - (not (hash-ref ok-zo-files (path-replace-suffix p #".zo") #f))) + (when (and (regexp-match? #rx#".[.](zo|dep)$" (path-element->bytes p)) + (not (hash-ref ok-zo-files (path-replace-extension p #".zo") #f))) (setup-fprintf (current-error-port) #f " deleting ~a" (build-path c p)) (delete-file (build-path c p)))) ok-zo-files)] @@ -1371,7 +1371,7 @@ (doc:setup-scribblings tmp-dir #f) (parameterize ([current-directory tmp-dir]) (for ([f (directory-list)] - #:when (regexp-match? #rx#"[.]tex$" (path-element->bytes f))) + #:when (path-has-extension? f #".tex")) (define pdf (scr:call 'run-pdflatex f (lambda (fmt . xs) (apply setup-printf #f fmt xs)))) @@ -1468,7 +1468,7 @@ (if (cc-main? cc) 'main 'user))) ,@(build-aux-from-path (build-path (cc-path cc) - (path-replace-suffix (or mzll mzln) #"")))))) + (path-replace-extension (or mzll mzln) #"")))))) (unless (up-to-date? p aux) (setup-printf "launcher" diff --git a/racket/collects/syntax/modcode.rkt b/racket/collects/syntax/modcode.rkt index 4aa542e47f..2ef4a74621 100644 --- a/racket/collects/syntax/modcode.rkt +++ b/racket/collects/syntax/modcode.rkt @@ -74,7 +74,7 @@ (error 'read-one "empty file; expected a module declaration in: ~a" path)) (define sym (string->symbol - (bytes->string/utf-8 (path->bytes (path-replace-suffix name #"")) #\?))) + (bytes->string/utf-8 (path->bytes (path-replace-extension name #"")) #\?))) (define checked-v (check-module-form unchecked-v sym path)) (unless (eof-object? (read p)) (error 'read-one @@ -156,18 +156,18 @@ sub-path "native" (system-library-subpath) - (path-add-suffix file (system-type 'so-suffix)))) + (path-add-extension file (system-type 'so-suffix)))) (define zo (get-metadata-path #:roots roots path0-base sub-path - (path-add-suffix src-file #".zo"))) + (path-add-extension src-file #".zo"))) (define alt-zo (and try-alt? (get-metadata-path #:roots roots path0-base sub-path - (path-add-suffix alt-src-file #".zo")))) + (path-add-extension alt-src-file #".zo")))) (define so (get-so src-file)) (define alt-so (and try-alt? (get-so alt-src-file))) (define prefer (choose src-path zo so)) diff --git a/racket/collects/syntax/modresolve.rkt b/racket/collects/syntax/modresolve.rkt index fe351ec6b2..1e4578e6c1 100644 --- a/racket/collects/syntax/modresolve.rkt +++ b/racket/collects/syntax/modresolve.rkt @@ -1,5 +1,6 @@ #lang racket/base (require racket/contract/base + racket/path "private/modhelp.rkt") (define (force-relto relto dir? #:path? [path? #t]) @@ -34,11 +35,9 @@ [else (values (and path? (current-directory)) submod)]))) (define (path-ss->rkt p) - (let-values ([(base name dir?) (split-path p)]) - (if (and (path? name) - (regexp-match #rx"[.]ss$" (path->bytes name))) - (path-replace-suffix p #".rkt") - p))) + (if (path-has-extension? p #".ss") + (path-replace-extension p #".rkt") + p)) (define (combine-submod v p) (if (null? p) diff --git a/racket/collects/syntax/module-reader.rkt b/racket/collects/syntax/module-reader.rkt index abfeaec83f..4ec90c9891 100644 --- a/racket/collects/syntax/module-reader.rkt +++ b/racket/collects/syntax/module-reader.rkt @@ -202,7 +202,7 @@ [name (if (path? p-name) (let-values ([(base name dir?) (split-path p-name)]) (string->symbol - (path->string (path-replace-suffix name #"")))) + (path->string (path-replace-extension name #"")))) 'anonymous-module)] [tag-src (lambda (v) (if stx? diff --git a/racket/collects/syntax/private/modcollapse-noctc.rkt b/racket/collects/syntax/private/modcollapse-noctc.rkt index 995dcc5180..4089de8e6b 100644 --- a/racket/collects/syntax/private/modcollapse-noctc.rkt +++ b/racket/collects/syntax/private/modcollapse-noctc.rkt @@ -10,6 +10,7 @@ Use syntax/modcollapse instead. (require racket/string racket/list + racket/path "modhelp.rkt") (define (collapse-module-path s relto-mp) @@ -54,16 +55,15 @@ Use syntax/modcollapse instead. (define (ss->rkt s) (let ([len (string-length s)]) - (if (and (len . >= . 3) + (if (and (len . > . 3) (string=? ".ss" (substring s (- len 3)))) (string-append (substring s 0 (- len 3)) ".rkt") s))) (define (path-ss->rkt p) - (let-values ([(base name dir?) (split-path p)]) - (if (regexp-match #rx"[.]ss$" (path->bytes name)) - (path-replace-suffix p #".rkt") - p))) + (if (path-has-extension? p #".ss") + (path-replace-extension p #".rkt") + p)) (define (flatten-relto-mp!) (when (procedure? relto-mp) (set! relto-mp (relto-mp))) diff --git a/racket/src/racket/gc2/check-sdep.rkt b/racket/src/racket/gc2/check-sdep.rkt index 0f5ff1b12d..f4a4a735a9 100644 --- a/racket/src/racket/gc2/check-sdep.rkt +++ b/racket/src/racket/gc2/check-sdep.rkt @@ -11,7 +11,7 @@ (cond [(regexp-match? #rx"[.][ch]$" path) (define-values (ts) (file-or-directory-modify-seconds path)) - (define-values (sdep) (path-replace-suffix path ".sdep")) + (define-values (sdep) (path-replace-extension path ".sdep")) (call-with-escape-continuation (lambda (esc) (with-continuation-mark diff --git a/racket/src/racket/src/cstartup.inc b/racket/src/racket/src/cstartup.inc index 1c413ecb1a..947d387f18 100644 --- a/racket/src/racket/src/cstartup.inc +++ b/racket/src/racket/src/cstartup.inc @@ -1,432 +1,419 @@ { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,54,46,52,46,48,46,49,53,84,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,54,0,0,0,1,0,0,8,0,18, -0,22,0,26,0,31,0,38,0,42,0,47,0,59,0,66,0,69,0,82,0, -89,0,94,0,103,0,109,0,123,0,137,0,140,0,146,0,157,0,159,0,173, -0,180,0,202,0,204,0,218,0,246,0,251,0,255,0,72,1,79,1,90,1, -128,1,135,1,144,1,177,1,210,1,16,2,21,2,102,2,107,2,112,2,133, -2,30,3,51,3,104,3,173,3,242,3,132,4,24,5,35,5,118,5,0,0, -148,7,0,0,3,1,5,105,110,115,112,48,71,35,37,109,105,110,45,115,116, -120,29,11,11,11,65,97,110,100,66,99,111,110,100,68,100,101,102,105,110,101, -65,108,101,116,66,108,101,116,42,73,108,101,116,42,45,118,97,108,117,101,115, -68,108,101,116,114,101,99,64,111,114,74,112,97,114,97,109,101,116,101,114,105, -122,101,68,117,110,108,101,115,115,66,119,104,101,110,70,104,101,114,101,45,115, -116,120,67,113,117,111,116,101,29,94,2,16,70,35,37,107,101,114,110,101,108, -11,29,94,2,16,70,35,37,112,97,114,97,109,122,11,64,105,102,67,98,101, -103,105,110,72,108,101,116,45,118,97,108,117,101,115,63,120,75,108,101,116,114, -101,99,45,118,97,108,117,101,115,68,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,63,118,75,100, -101,102,105,110,101,45,118,97,108,117,101,115,38,28,16,3,93,16,2,29,11, -11,11,2,3,2,29,93,143,16,5,39,2,31,40,2,34,2,2,39,38,29, -93,2,30,36,30,0,39,36,31,1,145,40,143,2,32,16,4,2,17,39,39, -2,1,143,2,32,16,4,2,18,39,39,2,1,16,22,2,4,2,33,2,5, -2,33,2,6,2,33,2,7,2,33,2,8,2,33,2,9,2,33,2,10,2, -33,2,11,2,33,2,12,2,33,2,13,2,33,2,14,2,33,38,32,143,2, -31,2,29,38,33,93,143,2,32,143,2,1,2,3,36,34,2,144,40,143,2, -35,16,4,2,17,40,39,2,1,16,2,2,15,93,143,2,35,147,2,1,2, -3,40,2,15,143,2,3,40,2,15,38,35,143,2,34,2,29,18,143,66,104, -101,114,101,2,28,27,248,22,169,4,195,249,22,162,4,80,143,42,39,251,22, -92,2,19,248,22,105,199,12,249,22,82,2,20,248,22,107,201,27,248,22,169, -4,195,249,22,162,4,80,143,42,39,251,22,92,2,19,248,22,105,199,249,22, -82,2,20,248,22,107,201,12,27,248,22,84,248,22,169,4,196,28,248,22,90, -193,20,14,144,40,39,40,28,248,22,90,248,22,84,194,248,22,175,20,193,249, -22,162,4,80,143,42,39,251,22,92,2,19,248,22,175,20,199,249,22,82,2, -4,248,22,176,20,201,11,18,143,10,2,28,27,248,22,84,248,22,169,4,196, -28,248,22,90,193,20,14,144,40,39,40,28,248,22,90,248,22,84,194,248,22, -175,20,193,249,22,162,4,80,143,42,39,250,22,92,2,21,248,22,92,249,22, -92,248,22,92,2,22,248,22,175,20,201,251,22,92,2,19,2,22,2,22,249, -22,82,2,11,248,22,176,20,204,18,143,11,2,28,248,22,169,4,193,27,248, -22,169,4,194,249,22,82,248,22,92,248,22,83,196,248,22,176,20,195,27,248, -22,84,248,22,169,4,23,197,1,249,22,162,4,80,143,42,39,28,248,22,66, -248,22,163,4,248,22,83,23,198,2,27,249,22,2,32,0,88,148,8,36,40, -46,11,9,222,33,43,248,22,169,4,248,22,105,23,200,2,250,22,92,2,23, -248,22,92,249,22,92,248,22,92,248,22,175,20,23,204,2,250,22,93,2,24, -249,22,2,22,83,23,204,2,248,22,107,23,206,2,249,22,82,248,22,175,20, -23,202,1,249,22,2,22,105,23,200,1,250,22,93,2,21,249,22,2,32,0, -88,148,8,36,40,50,11,9,222,33,44,248,22,169,4,248,22,175,20,201,248, -22,176,20,198,27,248,22,169,4,194,249,22,82,248,22,92,248,22,83,196,248, -22,176,20,195,27,248,22,84,248,22,169,4,23,197,1,249,22,162,4,80,143, -42,39,250,22,93,2,23,249,22,2,32,0,88,148,8,36,40,50,11,9,222, -33,46,248,22,169,4,248,22,83,201,248,22,176,20,198,27,248,22,84,248,22, -169,4,196,27,248,22,169,4,248,22,83,195,249,22,162,4,80,143,43,39,28, -248,22,90,195,250,22,93,2,21,9,248,22,176,20,199,250,22,92,2,7,248, -22,92,248,22,83,199,250,22,93,2,8,248,22,176,20,201,248,22,176,20,202, -27,248,22,84,248,22,169,4,196,27,248,22,169,4,248,22,83,195,249,22,162, -4,80,143,43,39,28,248,22,90,195,250,22,93,2,21,9,248,22,176,20,199, -250,22,92,2,21,248,22,92,248,22,83,199,250,22,93,2,9,248,22,176,20, -201,248,22,176,20,202,27,248,22,84,248,22,169,4,23,197,1,27,249,22,1, -22,97,249,22,2,22,169,4,248,22,169,4,248,22,83,199,248,22,191,4,249, -22,162,4,80,143,44,39,251,22,92,1,22,119,105,116,104,45,99,111,110,116, -105,110,117,97,116,105,111,110,45,109,97,114,107,2,25,250,22,93,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,21,95,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,25,202,250,22,93,2,21,9, -248,22,176,20,204,27,248,22,84,248,22,169,4,196,28,248,22,90,193,20,14, -144,40,39,40,249,22,162,4,80,143,42,39,27,248,22,169,4,248,22,83,197, -28,249,22,175,9,64,61,62,248,22,163,4,248,22,105,196,250,22,92,2,21, -248,22,92,249,22,92,21,93,2,26,248,22,175,20,199,250,22,93,2,5,249, -22,92,2,26,249,22,92,248,22,114,203,2,26,248,22,176,20,202,251,22,92, -2,19,28,249,22,175,9,248,22,163,4,248,22,175,20,200,66,101,108,115,101, -10,248,22,175,20,197,250,22,93,2,21,9,248,22,176,20,200,249,22,82,2, -5,248,22,176,20,202,18,143,94,10,66,118,111,105,100,2,28,27,248,22,84, -248,22,169,4,196,249,22,162,4,80,143,42,39,28,248,22,66,248,22,163,4, -248,22,83,197,250,22,92,2,27,248,22,92,248,22,175,20,199,248,22,105,198, -27,248,22,163,4,248,22,175,20,197,250,22,92,2,27,248,22,92,248,22,83, -197,250,22,93,2,24,248,22,176,20,199,248,22,176,20,202,145,40,9,20,122, -145,2,1,39,16,1,11,16,0,20,27,15,61,9,2,2,2,2,2,3,11, -11,11,11,9,9,11,11,11,10,40,80,143,39,39,20,122,145,2,1,39,16, -0,16,0,41,42,39,16,0,39,16,0,39,11,11,11,16,11,2,4,2,5, -2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,16,11,11, -11,11,11,11,11,11,11,11,11,11,16,11,2,4,2,5,2,6,2,7,2, -8,2,9,2,10,2,11,2,12,2,13,2,14,39,50,40,16,0,39,16,1, -2,15,40,11,11,11,16,0,16,0,16,0,39,39,11,12,11,11,16,0,16, -0,16,0,39,39,16,12,16,5,11,20,15,16,2,20,14,144,39,39,40,80, -143,39,39,40,20,122,145,2,1,39,16,1,2,15,16,1,33,36,10,16,5, -2,13,88,148,8,36,40,56,40,9,223,0,33,37,40,20,122,145,2,1,39, -16,1,2,15,16,0,11,16,5,2,14,88,148,8,36,40,56,40,9,223,0, -33,38,40,20,122,145,2,1,39,16,1,2,15,16,0,11,16,5,2,4,88, -148,8,36,40,56,42,9,223,0,33,39,40,20,122,145,2,1,39,16,1,2, -15,16,1,33,40,11,16,5,2,11,88,148,8,36,40,59,42,9,223,0,33, -41,40,20,122,145,2,1,39,16,1,2,15,16,1,33,42,11,16,5,2,7, -88,148,8,36,40,61,40,9,223,0,33,45,40,20,122,145,2,1,39,16,1, -2,15,16,0,11,16,5,2,10,88,148,8,36,40,56,40,9,223,0,33,47, -40,20,122,145,2,1,39,16,1,2,15,16,0,11,16,5,2,8,88,148,8, -36,40,57,40,9,223,0,33,48,40,20,122,145,2,1,39,16,1,2,15,16, -0,11,16,5,2,9,88,148,8,36,40,57,40,9,223,0,33,49,40,20,122, -145,2,1,39,16,1,2,15,16,0,11,16,5,2,12,88,148,8,36,40,59, -40,9,223,0,33,50,40,20,122,145,2,1,39,16,1,2,15,16,0,11,16, -5,2,5,88,148,8,36,40,61,42,9,223,0,33,51,40,20,122,145,2,1, -39,16,1,2,15,16,1,33,52,11,16,5,2,6,88,148,8,36,40,57,40, -9,223,0,33,53,40,20,122,145,2,1,39,16,1,2,15,16,0,11,16,0, -94,2,17,2,18,93,2,17,9,9,39,9,0}; - EVAL_ONE_SIZED_STR((char *)expr, 2091); + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,53,46,48,46,51,84,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,54,0,0,0,1,0,0,8,0,18,0, +22,0,26,0,31,0,38,0,42,0,47,0,59,0,66,0,69,0,82,0,89, +0,94,0,103,0,109,0,123,0,137,0,140,0,146,0,157,0,159,0,173,0, +180,0,202,0,204,0,218,0,246,0,251,0,255,0,72,1,79,1,90,1,128, +1,135,1,144,1,177,1,210,1,16,2,21,2,102,2,107,2,112,2,133,2, +30,3,51,3,104,3,173,3,242,3,132,4,24,5,35,5,118,5,0,0,148, +7,0,0,3,1,5,105,110,115,112,48,71,35,37,109,105,110,45,115,116,120, +29,11,11,11,65,97,110,100,66,99,111,110,100,68,100,101,102,105,110,101,65, +108,101,116,66,108,101,116,42,73,108,101,116,42,45,118,97,108,117,101,115,68, +108,101,116,114,101,99,64,111,114,74,112,97,114,97,109,101,116,101,114,105,122, +101,68,117,110,108,101,115,115,66,119,104,101,110,70,104,101,114,101,45,115,116, +120,67,113,117,111,116,101,29,94,2,16,70,35,37,107,101,114,110,101,108,11, +29,94,2,16,70,35,37,112,97,114,97,109,122,11,64,105,102,67,98,101,103, +105,110,72,108,101,116,45,118,97,108,117,101,115,63,120,75,108,101,116,114,101, +99,45,118,97,108,117,101,115,68,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,63,118,75,100,101, +102,105,110,101,45,118,97,108,117,101,115,38,28,16,3,93,16,2,29,11,11, +11,2,3,2,29,93,143,16,5,39,2,31,40,2,34,2,2,39,38,29,93, +2,30,36,30,0,39,36,31,1,145,40,143,2,32,16,4,2,17,39,39,2, +1,143,2,32,16,4,2,18,39,39,2,1,16,22,2,4,2,33,2,5,2, +33,2,6,2,33,2,7,2,33,2,8,2,33,2,9,2,33,2,10,2,33, +2,11,2,33,2,12,2,33,2,13,2,33,2,14,2,33,38,32,143,2,31, +2,29,38,33,93,143,2,32,143,2,1,2,3,36,34,2,144,40,143,2,35, +16,4,2,17,40,39,2,1,16,2,2,15,93,143,2,35,147,2,1,2,3, +40,2,15,143,2,3,40,2,15,38,35,143,2,34,2,29,18,143,66,104,101, +114,101,2,28,27,248,22,169,4,195,249,22,162,4,80,143,42,39,251,22,92, +2,19,248,22,105,199,12,249,22,82,2,20,248,22,107,201,27,248,22,169,4, +195,249,22,162,4,80,143,42,39,251,22,92,2,19,248,22,105,199,249,22,82, +2,20,248,22,107,201,12,27,248,22,84,248,22,169,4,196,28,248,22,90,193, +20,14,144,40,39,40,28,248,22,90,248,22,84,194,248,22,175,20,193,249,22, +162,4,80,143,42,39,251,22,92,2,19,248,22,175,20,199,249,22,82,2,4, +248,22,176,20,201,11,18,143,10,2,28,27,248,22,84,248,22,169,4,196,28, +248,22,90,193,20,14,144,40,39,40,28,248,22,90,248,22,84,194,248,22,175, +20,193,249,22,162,4,80,143,42,39,250,22,92,2,21,248,22,92,249,22,92, +248,22,92,2,22,248,22,175,20,201,251,22,92,2,19,2,22,2,22,249,22, +82,2,11,248,22,176,20,204,18,143,11,2,28,248,22,169,4,193,27,248,22, +169,4,194,249,22,82,248,22,92,248,22,83,196,248,22,176,20,195,27,248,22, +84,248,22,169,4,23,197,1,249,22,162,4,80,143,42,39,28,248,22,66,248, +22,163,4,248,22,83,23,198,2,27,249,22,2,32,0,88,148,8,36,40,46, +11,9,222,33,43,248,22,169,4,248,22,105,23,200,2,250,22,92,2,23,248, +22,92,249,22,92,248,22,92,248,22,175,20,23,204,2,250,22,93,2,24,249, +22,2,22,83,23,204,2,248,22,107,23,206,2,249,22,82,248,22,175,20,23, +202,1,249,22,2,22,105,23,200,1,250,22,93,2,21,249,22,2,32,0,88, +148,8,36,40,50,11,9,222,33,44,248,22,169,4,248,22,175,20,201,248,22, +176,20,198,27,248,22,169,4,194,249,22,82,248,22,92,248,22,83,196,248,22, +176,20,195,27,248,22,84,248,22,169,4,23,197,1,249,22,162,4,80,143,42, +39,250,22,93,2,23,249,22,2,32,0,88,148,8,36,40,50,11,9,222,33, +46,248,22,169,4,248,22,83,201,248,22,176,20,198,27,248,22,84,248,22,169, +4,196,27,248,22,169,4,248,22,83,195,249,22,162,4,80,143,43,39,28,248, +22,90,195,250,22,93,2,21,9,248,22,176,20,199,250,22,92,2,7,248,22, +92,248,22,83,199,250,22,93,2,8,248,22,176,20,201,248,22,176,20,202,27, +248,22,84,248,22,169,4,196,27,248,22,169,4,248,22,83,195,249,22,162,4, +80,143,43,39,28,248,22,90,195,250,22,93,2,21,9,248,22,176,20,199,250, +22,92,2,21,248,22,92,248,22,83,199,250,22,93,2,9,248,22,176,20,201, +248,22,176,20,202,27,248,22,84,248,22,169,4,23,197,1,27,249,22,1,22, +97,249,22,2,22,169,4,248,22,169,4,248,22,83,199,248,22,191,4,249,22, +162,4,80,143,44,39,251,22,92,1,22,119,105,116,104,45,99,111,110,116,105, +110,117,97,116,105,111,110,45,109,97,114,107,2,25,250,22,93,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, +21,95,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,25,202,250,22,93,2,21,9,248, +22,176,20,204,27,248,22,84,248,22,169,4,196,28,248,22,90,193,20,14,144, +40,39,40,249,22,162,4,80,143,42,39,27,248,22,169,4,248,22,83,197,28, +249,22,175,9,64,61,62,248,22,163,4,248,22,105,196,250,22,92,2,21,248, +22,92,249,22,92,21,93,2,26,248,22,175,20,199,250,22,93,2,5,249,22, +92,2,26,249,22,92,248,22,114,203,2,26,248,22,176,20,202,251,22,92,2, +19,28,249,22,175,9,248,22,163,4,248,22,175,20,200,66,101,108,115,101,10, +248,22,175,20,197,250,22,93,2,21,9,248,22,176,20,200,249,22,82,2,5, +248,22,176,20,202,18,143,94,10,66,118,111,105,100,2,28,27,248,22,84,248, +22,169,4,196,249,22,162,4,80,143,42,39,28,248,22,66,248,22,163,4,248, +22,83,197,250,22,92,2,27,248,22,92,248,22,175,20,199,248,22,105,198,27, +248,22,163,4,248,22,175,20,197,250,22,92,2,27,248,22,92,248,22,83,197, +250,22,93,2,24,248,22,176,20,199,248,22,176,20,202,145,40,9,20,122,145, +2,1,39,16,1,11,16,0,20,27,15,61,9,2,2,2,2,2,3,11,11, +11,11,9,9,11,11,11,10,40,80,143,39,39,20,122,145,2,1,39,16,0, +16,0,41,42,39,16,0,39,16,0,39,11,11,11,16,11,2,4,2,5,2, +6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,16,11,11,11, +11,11,11,11,11,11,11,11,11,16,11,2,4,2,5,2,6,2,7,2,8, +2,9,2,10,2,11,2,12,2,13,2,14,39,50,40,16,0,39,16,1,2, +15,40,11,11,11,16,0,16,0,16,0,39,39,11,12,11,11,16,0,16,0, +16,0,39,39,16,12,16,5,11,20,15,16,2,20,14,144,39,39,40,80,143, +39,39,40,20,122,145,2,1,39,16,1,2,15,16,1,33,36,10,16,5,2, +13,88,148,8,36,40,56,40,9,223,0,33,37,40,20,122,145,2,1,39,16, +1,2,15,16,0,11,16,5,2,14,88,148,8,36,40,56,40,9,223,0,33, +38,40,20,122,145,2,1,39,16,1,2,15,16,0,11,16,5,2,4,88,148, +8,36,40,56,42,9,223,0,33,39,40,20,122,145,2,1,39,16,1,2,15, +16,1,33,40,11,16,5,2,11,88,148,8,36,40,59,42,9,223,0,33,41, +40,20,122,145,2,1,39,16,1,2,15,16,1,33,42,11,16,5,2,7,88, +148,8,36,40,61,40,9,223,0,33,45,40,20,122,145,2,1,39,16,1,2, +15,16,0,11,16,5,2,10,88,148,8,36,40,56,40,9,223,0,33,47,40, +20,122,145,2,1,39,16,1,2,15,16,0,11,16,5,2,8,88,148,8,36, +40,57,40,9,223,0,33,48,40,20,122,145,2,1,39,16,1,2,15,16,0, +11,16,5,2,9,88,148,8,36,40,57,40,9,223,0,33,49,40,20,122,145, +2,1,39,16,1,2,15,16,0,11,16,5,2,12,88,148,8,36,40,59,40, +9,223,0,33,50,40,20,122,145,2,1,39,16,1,2,15,16,0,11,16,5, +2,5,88,148,8,36,40,61,42,9,223,0,33,51,40,20,122,145,2,1,39, +16,1,2,15,16,1,33,52,11,16,5,2,6,88,148,8,36,40,57,40,9, +223,0,33,53,40,20,122,145,2,1,39,16,1,2,15,16,0,11,16,0,94, +2,17,2,18,93,2,17,9,9,39,9,0}; + EVAL_ONE_SIZED_STR((char *)expr, 2090); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,54,46,52,46,48,46,49,53,84,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,192,0,0,0,1,0,0,8,0,16, -0,29,0,34,0,51,0,63,0,85,0,114,0,158,0,164,0,178,0,193,0, -211,0,223,0,239,0,253,0,19,1,39,1,73,1,90,1,107,1,130,1,145, -1,184,1,202,1,233,1,245,1,6,2,18,2,33,2,57,2,89,2,118,2, -134,2,152,2,172,2,193,2,211,2,242,2,0,3,17,3,61,3,69,3,74, -3,118,3,125,3,135,3,150,3,159,3,164,3,166,3,199,3,223,3,244,3, -1,4,11,4,20,4,31,4,49,4,62,4,72,4,82,4,88,4,93,4,105, -4,108,4,112,4,117,4,160,4,173,4,176,4,200,4,239,4,246,4,3,5, -25,5,36,5,66,5,89,5,97,5,121,5,142,5,91,6,121,6,212,9,235, -9,252,9,176,11,23,12,37,12,241,12,217,14,226,14,235,14,249,14,3,15, -23,16,126,16,251,16,68,17,141,17,243,17,16,18,87,18,221,18,36,19,243, -19,105,20,118,20,236,20,249,20,100,21,167,21,180,21,191,21,87,22,205,22, -249,22,104,23,182,25,206,25,68,26,150,27,157,27,209,27,222,27,212,28,228, -28,83,29,242,29,249,29,126,31,203,31,220,31,120,32,140,32,200,32,207,32, -65,33,119,33,138,33,89,34,105,34,66,35,67,36,104,36,113,36,200,37,45, -40,61,40,115,40,136,40,156,40,176,40,233,40,195,43,207,43,199,44,215,44, -184,45,242,45,19,46,151,46,54,47,70,47,168,47,185,47,3,50,53,52,69, -52,85,52,180,52,224,53,156,54,172,54,188,54,30,55,95,56,27,57,36,57, -43,57,109,58,175,59,37,60,83,63,213,63,89,64,34,66,240,66,26,67,134, -67,0,0,38,75,0,0,3,1,5,105,110,115,112,48,69,35,37,117,116,105, -108,115,74,112,97,116,104,45,115,116,114,105,110,103,63,66,98,115,98,115,78, -110,111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,73,114,101,114,111, -111,116,45,112,97,116,104,1,20,102,105,110,100,45,101,120,101,99,117,116,97, -98,108,101,45,112,97,116,104,1,27,112,97,116,104,45,108,105,115,116,45,115, -116,114,105,110,103,45,62,112,97,116,104,45,108,105,115,116,1,42,99,97,108, -108,45,119,105,116,104,45,100,101,102,97,117,108,116,45,114,101,97,100,105,110, -103,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,67,113,117, -111,116,101,29,94,2,10,70,35,37,112,97,114,97,109,122,11,76,45,99,104, -101,99,107,45,114,101,108,112,97,116,104,79,45,99,104,101,99,107,45,99,111, -108,108,101,99,116,105,111,110,73,45,99,104,101,99,107,45,102,97,105,108,77, -99,111,108,108,101,99,116,105,111,110,45,112,97,116,104,75,102,105,110,100,45, -99,111,108,45,102,105,108,101,1,20,99,111,108,108,101,99,116,105,111,110,45, -102,105,108,101,45,112,97,116,104,1,18,102,105,110,100,45,109,97,105,110,45, -99,111,108,108,101,99,116,115,1,32,101,120,101,45,114,101,108,97,116,105,118, -101,45,112,97,116,104,45,62,99,111,109,112,108,101,116,101,45,112,97,116,104, -78,102,105,110,100,45,109,97,105,110,45,99,111,110,102,105,103,78,103,101,116, -45,99,111,110,102,105,103,45,116,97,98,108,101,1,21,103,101,116,45,105,110, -115,116,97,108,108,97,116,105,111,110,45,110,97,109,101,76,99,111,101,114,99, -101,45,116,111,45,112,97,116,104,1,37,99,111,108,108,101,99,116,115,45,114, -101,108,97,116,105,118,101,45,112,97,116,104,45,62,99,111,109,112,108,101,116, -101,45,112,97,116,104,79,97,100,100,45,99,111,110,102,105,103,45,115,101,97, -114,99,104,1,29,102,105,110,100,45,108,105,98,114,97,114,121,45,99,111,108, -108,101,99,116,105,111,110,45,108,105,110,107,115,73,108,105,110,107,115,45,99, -97,99,104,101,78,115,116,97,109,112,45,112,114,111,109,112,116,45,116,97,103, -73,102,105,108,101,45,62,115,116,97,109,112,76,110,111,45,102,105,108,101,45, -115,116,97,109,112,63,1,22,103,101,116,45,108,105,110,107,101,100,45,99,111, -108,108,101,99,116,105,111,110,115,1,30,110,111,114,109,97,108,105,122,101,45, -99,111,108,108,101,99,116,105,111,110,45,114,101,102,101,114,101,110,99,101,1, -27,102,105,108,101,45,101,120,105,115,116,115,63,47,109,97,121,98,101,45,99, -111,109,112,105,108,101,100,77,112,97,116,104,45,97,100,100,45,115,117,102,102, -105,120,79,99,104,101,99,107,45,115,117,102,102,105,120,45,99,97,108,108,1, -18,112,97,116,104,45,97,100,106,117,115,116,45,115,117,102,102,105,120,1,19, -112,97,116,104,45,114,101,112,108,97,99,101,45,115,117,102,102,105,120,79,108, -111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,1,29,102,105,110, -100,45,108,105,98,114,97,114,121,45,99,111,108,108,101,99,116,105,111,110,45, -112,97,116,104,115,75,101,109,98,101,100,100,101,100,45,108,111,97,100,78,110, -111,114,109,97,108,45,112,97,116,104,45,99,97,115,101,6,41,41,40,111,114, -47,99,32,112,97,116,104,45,102,111,114,45,115,111,109,101,45,115,121,115,116, -101,109,63,32,112,97,116,104,45,115,116,114,105,110,103,63,41,69,119,105,110, -100,111,119,115,6,2,2,92,49,6,41,41,40,111,114,47,99,32,112,97,116, -104,45,115,116,114,105,110,103,63,32,112,97,116,104,45,102,111,114,45,115,111, -109,101,45,115,121,115,116,101,109,63,41,6,4,4,112,97,116,104,5,8,92, -92,63,92,82,69,76,92,6,12,12,112,97,116,104,45,115,116,114,105,110,103, -63,70,114,101,108,97,116,105,118,101,66,108,111,111,112,5,0,6,30,30,40, -112,114,111,99,101,100,117,114,101,45,97,114,105,116,121,45,105,110,99,108,117, -100,101,115,47,99,32,48,41,6,21,21,105,110,118,97,108,105,100,32,114,101, -108,97,116,105,118,101,32,112,97,116,104,6,18,18,40,97,110,121,47,99,32, -46,32,45,62,32,46,32,97,110,121,41,74,99,111,108,108,101,99,116,115,45, -100,105,114,71,101,120,101,99,45,102,105,108,101,70,111,114,105,103,45,100,105, -114,72,99,111,110,102,105,103,45,100,105,114,79,105,110,115,116,97,108,108,97, -116,105,111,110,45,110,97,109,101,6,10,10,108,105,110,107,115,46,114,107,116, -100,71,97,100,100,111,110,45,100,105,114,71,102,115,45,99,104,97,110,103,101, -67,101,114,114,111,114,66,114,111,111,116,73,115,116,97,116,105,99,45,114,111, -111,116,6,0,0,6,1,1,47,5,3,46,122,111,6,40,40,114,101,109,111, -118,105,110,103,32,115,117,102,102,105,120,32,109,97,107,101,115,32,112,97,116, -104,32,101,108,101,109,101,110,116,32,101,109,112,116,121,6,10,10,103,105,118, -101,110,32,112,97,116,104,5,1,95,6,21,21,40,111,114,47,99,32,115,116, -114,105,110,103,63,32,98,121,116,101,115,63,41,6,36,36,99,97,110,110,111, -116,32,97,100,100,32,97,32,115,117,102,102,105,120,32,116,111,32,97,32,114, -111,111,116,32,112,97,116,104,58,32,68,102,105,110,105,115,104,5,11,80,76, -84,67,79,76,76,69,67,84,83,1,20,99,111,108,108,101,99,116,115,45,115, -101,97,114,99,104,45,100,105,114,115,6,8,8,99,111,108,108,101,99,116,115, -27,248,22,184,15,194,28,192,192,28,248,22,159,7,194,27,248,22,143,16,195, -28,192,192,248,22,144,16,195,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,185,15,23,195,2,10,28,248,22,184,15,23,195,2, -10,28,248,22,159,7,23,195,2,28,248,22,143,16,23,195,2,10,248,22,144, -16,23,195,2,11,12,250,22,188,11,2,41,2,42,23,197,2,28,28,248,22, -185,15,23,195,2,249,22,175,9,248,22,186,15,23,197,2,2,43,249,22,175, -9,247,22,186,8,2,43,27,28,248,22,159,7,23,196,2,23,195,2,248,22, -171,8,248,22,189,15,23,197,2,28,249,22,181,16,2,79,23,195,2,28,248, -22,159,7,195,248,22,128,16,195,194,86,94,23,195,1,27,248,22,134,8,23, -195,1,249,22,129,16,248,22,174,8,250,22,189,16,2,80,28,249,22,181,16, -2,81,23,201,2,23,199,1,250,22,189,16,2,82,23,202,1,2,44,80,144, -47,40,41,2,43,28,248,22,159,7,194,248,22,128,16,194,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,184,15,23,195,2,10,28,248,22, -159,7,23,195,2,28,248,22,143,16,23,195,2,10,248,22,144,16,23,195,2, -11,10,248,22,185,15,23,195,2,12,252,22,188,11,2,6,2,45,39,23,199, -2,23,200,2,28,28,28,248,22,184,15,23,196,2,10,28,248,22,159,7,23, -196,2,28,248,22,143,16,23,196,2,10,248,22,144,16,23,196,2,11,10,248, -22,185,15,23,196,2,12,252,22,188,11,2,6,2,45,40,23,199,2,23,200, -2,27,28,248,22,185,15,23,196,2,248,22,186,15,23,196,2,247,22,187,15, -86,95,28,28,248,22,145,16,23,196,2,10,249,22,175,9,247,22,187,15,23, -195,2,12,253,22,190,11,2,6,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,46,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,187,15,28,249,22, -175,9,28,248,22,185,15,23,199,2,248,22,186,15,23,199,2,247,22,187,15, -23,195,2,12,253,22,190,11,2,6,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,46,23,201,2,6,9,9,114,111,111,116,32, -112,97,116,104,23,202,2,27,27,248,22,149,16,28,248,22,145,16,23,199,2, -23,198,1,248,22,146,16,23,199,1,86,94,28,28,248,22,185,15,23,194,2, -10,28,248,22,184,15,23,194,2,10,28,248,22,159,7,23,194,2,28,248,22, -143,16,23,194,2,10,248,22,144,16,23,194,2,11,12,250,22,188,11,2,41, -2,42,23,196,2,28,28,248,22,185,15,23,194,2,249,22,175,9,248,22,186, -15,23,196,2,2,43,249,22,175,9,247,22,186,8,2,43,27,28,248,22,159, -7,23,195,2,23,194,2,248,22,171,8,248,22,189,15,23,196,2,28,249,22, -181,16,2,79,23,195,2,28,248,22,159,7,194,248,22,128,16,194,193,86,94, -23,194,1,27,248,22,134,8,23,195,1,249,22,129,16,248,22,174,8,250,22, -189,16,2,80,28,249,22,181,16,2,81,23,201,2,23,199,1,250,22,189,16, -2,82,23,202,1,2,44,80,144,50,40,41,2,43,28,248,22,159,7,193,248, -22,128,16,193,192,27,248,22,189,15,23,195,2,28,249,22,175,9,23,197,2, -66,117,110,105,120,28,249,22,156,8,194,5,1,47,28,248,22,185,15,198,197, -248,22,128,16,198,249,22,138,16,199,249,22,129,16,249,22,159,8,248,22,189, -15,200,40,198,86,94,23,194,1,28,249,22,175,9,23,197,2,2,43,249,22, -138,16,23,200,1,249,22,129,16,28,249,22,181,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,160,8,2,47,250,22,159,8,203,43,44,5,1,92,249, -22,159,8,202,45,28,249,22,181,16,2,84,23,199,2,249,22,160,8,2,47, -249,22,159,8,200,43,28,249,22,181,16,2,84,23,199,2,249,22,160,8,2, -47,249,22,159,8,200,43,28,249,22,181,16,0,14,35,114,120,34,94,92,92, -92,92,92,92,92,92,34,23,199,2,249,22,160,8,5,4,85,78,67,92,249, -22,159,8,200,41,28,249,22,181,16,0,12,35,114,120,34,94,91,97,45,122, -93,58,34,198,249,22,160,8,250,22,159,8,201,39,40,249,22,159,8,200,41, -12,198,12,32,86,88,148,8,36,42,56,11,72,102,111,117,110,100,45,101,120, -101,99,222,33,89,32,87,88,148,8,36,43,61,11,66,110,101,120,116,222,33, -88,27,248,22,147,16,23,197,2,28,249,22,177,9,23,195,2,23,198,1,11, -28,248,22,143,16,23,194,2,27,249,22,138,16,23,200,1,23,196,1,28,23, -196,2,90,144,42,11,89,146,42,39,11,248,22,141,16,23,197,2,86,95,23, -195,1,23,194,1,27,28,23,199,2,27,248,22,147,16,23,199,2,28,249,22, -177,9,23,195,2,23,200,2,11,28,248,22,143,16,23,194,2,250,2,86,23, -203,2,23,204,2,249,22,138,16,23,200,2,23,198,1,250,2,86,23,203,2, -23,204,2,23,196,1,11,28,23,193,2,192,86,94,23,193,1,27,28,248,22, -184,15,23,196,2,27,249,22,138,16,23,198,2,23,204,2,28,28,248,22,133, -16,193,10,248,22,132,16,193,192,11,11,28,23,193,2,192,86,94,23,193,1, -28,23,200,2,11,27,248,22,147,16,23,200,2,28,249,22,177,9,194,23,201, -1,11,28,248,22,143,16,193,250,2,86,203,204,249,22,138,16,200,197,250,2, -86,203,204,195,192,86,94,23,197,1,28,23,195,2,90,144,42,11,89,146,42, -39,11,248,22,141,16,23,197,2,86,95,23,195,1,23,194,1,27,28,23,198, -2,27,248,22,147,16,23,199,2,28,249,22,177,9,23,195,2,23,200,2,11, -28,248,22,143,16,23,194,2,250,2,86,23,202,2,23,203,2,249,22,138,16, -23,200,2,23,198,1,250,2,86,23,202,2,23,203,2,23,196,1,11,28,23, -193,2,192,86,94,23,193,1,27,28,248,22,184,15,23,196,2,27,249,22,138, -16,23,198,2,23,203,2,28,28,248,22,133,16,193,10,248,22,132,16,193,192, -11,11,28,23,193,2,192,86,94,23,193,1,28,23,199,2,11,27,248,22,147, -16,23,200,2,28,249,22,177,9,194,23,201,1,11,28,248,22,143,16,193,250, -2,86,202,203,249,22,138,16,200,197,250,2,86,202,203,195,192,28,23,194,2, -90,144,42,11,89,146,42,39,11,248,22,141,16,23,199,2,86,95,23,195,1, -23,194,1,27,28,23,197,2,251,2,87,23,201,2,23,202,2,23,203,2,23, -198,2,11,28,23,193,2,192,86,94,23,193,1,27,28,248,22,184,15,195,27, -249,22,138,16,197,201,28,28,248,22,133,16,193,10,248,22,132,16,193,192,11, -11,28,192,192,28,197,11,251,2,87,201,202,203,198,194,32,90,88,148,8,36, -43,60,11,2,50,222,33,91,28,248,22,90,23,197,2,11,27,249,22,138,16, -248,22,146,16,248,22,83,23,201,2,23,198,2,28,248,22,132,16,23,194,2, -250,2,86,196,197,195,86,94,23,193,1,27,248,22,176,20,23,199,1,28,248, -22,90,23,194,2,11,27,249,22,138,16,248,22,146,16,248,22,83,23,198,2, -23,200,2,28,248,22,132,16,23,194,2,250,2,86,198,199,195,86,94,23,193, -1,27,248,22,176,20,23,196,1,28,248,22,90,23,194,2,11,27,249,22,138, -16,248,22,146,16,248,22,83,23,198,2,23,202,2,28,248,22,132,16,23,194, -2,250,2,86,200,201,195,86,94,23,193,1,27,248,22,176,20,23,196,1,28, -248,22,90,23,194,2,11,27,249,22,138,16,248,22,146,16,248,22,83,197,203, -28,248,22,132,16,193,250,2,86,202,203,195,251,2,90,203,204,205,248,22,176, -20,198,86,95,28,28,248,22,184,15,23,195,2,10,28,248,22,159,7,23,195, -2,28,248,22,143,16,23,195,2,10,248,22,144,16,23,195,2,11,12,250,22, -188,11,2,7,2,48,23,197,2,28,28,23,195,2,28,28,248,22,184,15,23, -196,2,10,28,248,22,159,7,23,196,2,28,248,22,143,16,23,196,2,10,248, -22,144,16,23,196,2,11,248,22,143,16,23,196,2,11,10,12,250,22,188,11, -2,7,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,143,16,23,195,2,90, -144,42,11,89,146,42,39,11,248,22,141,16,23,198,2,249,22,175,9,194,2, -49,11,27,249,22,181,8,247,22,180,8,5,4,80,65,84,72,27,28,23,194, -2,249,80,143,43,44,249,22,171,8,23,198,1,7,63,9,86,94,23,194,1, -9,27,28,249,22,175,9,247,22,186,8,2,43,249,22,82,248,22,129,16,5, -1,46,23,196,1,23,194,1,28,248,22,90,23,194,2,11,27,249,22,138,16, -248,22,146,16,248,22,83,23,198,2,23,200,2,28,248,22,132,16,23,194,2, -250,2,86,202,201,195,86,94,23,193,1,27,248,22,176,20,23,196,1,28,248, -22,90,23,194,2,11,27,249,22,138,16,248,22,146,16,248,22,83,23,198,2, -23,202,2,28,248,22,132,16,23,194,2,250,2,86,204,203,195,86,94,23,193, -1,27,248,22,176,20,23,196,1,28,248,22,90,23,194,2,11,27,249,22,138, -16,248,22,146,16,248,22,83,23,198,2,23,204,2,28,248,22,132,16,23,194, -2,250,2,86,206,205,195,86,94,23,193,1,27,248,22,176,20,23,196,1,28, -248,22,90,23,194,2,11,27,249,22,138,16,248,22,146,16,248,22,83,197,205, -28,248,22,132,16,193,250,2,86,23,16,23,15,195,251,2,90,23,17,23,16, -23,15,248,22,176,20,198,27,248,22,146,16,23,196,1,28,248,22,132,16,193, -250,2,86,199,198,195,11,250,80,144,42,43,42,196,197,11,250,80,144,42,43, -42,196,11,11,32,95,88,148,8,36,42,58,11,2,50,222,33,97,0,8,35, -114,120,35,34,92,34,34,27,249,22,177,16,23,196,2,23,198,2,28,23,193, -2,86,94,23,196,1,27,248,22,105,23,195,2,27,27,248,22,114,23,197,1, -27,249,22,177,16,23,200,2,23,196,2,28,23,193,2,86,94,23,194,1,27, -248,22,105,23,195,2,27,250,2,95,23,203,1,203,248,22,114,23,199,1,27, -28,249,22,175,9,247,22,186,8,2,43,250,22,189,16,2,96,23,198,1,2, -51,194,28,249,22,156,8,194,2,51,249,22,97,203,195,249,22,82,248,22,129, -16,195,195,86,95,23,198,1,23,193,1,27,28,249,22,175,9,247,22,186,8, -2,43,250,22,189,16,2,96,23,198,1,2,51,194,28,249,22,156,8,194,2, -51,249,22,97,201,9,249,22,82,248,22,129,16,195,9,27,28,249,22,175,9, -247,22,186,8,2,43,250,22,189,16,2,96,23,198,1,2,51,194,28,249,22, -156,8,194,2,51,249,22,97,199,195,249,22,82,248,22,129,16,195,195,86,95, -23,194,1,23,193,1,27,28,249,22,175,9,247,22,186,8,2,43,250,22,189, -16,2,96,23,200,1,2,51,196,28,249,22,156,8,194,2,51,249,22,97,197, -9,249,22,82,248,22,129,16,195,9,86,95,28,28,248,22,148,8,194,10,248, -22,159,7,194,12,250,22,188,11,2,8,6,21,21,40,111,114,47,99,32,98, -121,116,101,115,63,32,115,116,114,105,110,103,63,41,196,28,28,248,22,91,195, -249,22,4,22,184,15,196,11,12,250,22,188,11,2,8,6,14,14,40,108,105, -115,116,111,102,32,112,97,116,104,63,41,197,250,2,95,195,197,28,248,22,159, -7,197,248,22,173,8,197,196,28,28,248,22,0,23,195,2,249,22,48,23,196, -2,39,11,20,13,144,80,144,39,46,40,26,35,80,144,8,35,47,40,249,22, -31,11,80,144,8,37,46,40,22,151,15,10,22,152,15,10,22,153,15,10,22, -154,15,11,22,155,15,11,22,159,15,10,22,158,15,11,22,160,15,10,22,157, -15,10,22,161,15,10,22,156,15,11,22,162,15,10,22,163,15,10,22,164,15, -10,22,165,15,11,22,166,15,10,22,149,15,11,247,23,194,1,250,22,188,11, -2,9,2,52,23,197,1,86,94,28,28,248,22,184,15,23,195,2,10,28,248, -22,159,7,23,195,2,28,248,22,143,16,23,195,2,10,248,22,144,16,23,195, -2,11,12,250,22,188,11,23,196,2,2,48,23,197,2,28,248,22,143,16,23, -195,2,12,251,22,190,11,23,197,1,2,53,2,46,23,198,1,86,94,28,28, -248,22,184,15,23,195,2,10,28,248,22,159,7,23,195,2,28,248,22,143,16, -23,195,2,10,248,22,144,16,23,195,2,11,12,250,22,188,11,23,196,2,2, -48,23,197,2,28,248,22,143,16,23,195,2,12,251,22,190,11,23,197,1,2, -53,2,46,23,198,1,86,95,28,28,248,22,184,15,23,195,2,10,28,248,22, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,53,46,48,46,51,84,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,183,0,0,0,1,0,0,8,0,16,0, +29,0,34,0,51,0,63,0,85,0,114,0,158,0,164,0,178,0,193,0,211, +0,223,0,239,0,253,0,19,1,39,1,73,1,90,1,107,1,130,1,145,1, +184,1,202,1,233,1,245,1,6,2,18,2,33,2,57,2,89,2,118,2,138, +2,160,2,183,2,207,2,225,2,0,3,14,3,31,3,75,3,83,3,88,3, +132,3,139,3,149,3,164,3,173,3,178,3,180,3,213,3,237,3,2,4,15, +4,25,4,34,4,45,4,63,4,76,4,86,4,96,4,102,4,107,4,119,4, +122,4,126,4,131,4,134,4,158,4,201,4,214,4,236,4,247,4,21,5,44, +5,52,5,76,5,97,5,46,6,76,6,167,9,190,9,207,9,131,11,234,11, +248,11,196,12,172,14,181,14,190,14,204,14,214,14,234,15,81,16,206,16,23, +17,96,17,198,17,227,17,42,18,176,18,247,18,198,19,60,20,73,20,191,20, +204,20,55,21,122,21,135,21,146,21,42,22,160,22,204,22,59,23,137,25,161, +25,23,26,105,27,112,27,164,27,177,27,167,28,181,28,35,29,193,29,200,29, +76,31,153,31,170,31,70,32,90,32,150,32,157,32,15,33,69,33,88,33,39, +34,55,34,16,35,17,36,54,36,63,36,150,37,251,39,11,40,65,40,86,40, +106,40,126,40,183,40,145,43,157,43,149,44,165,44,45,45,103,45,136,45,12, +46,171,46,188,46,250,48,60,51,76,51,102,52,34,53,50,53,108,54,40,55, +49,55,56,55,122,56,188,57,50,58,96,61,226,61,102,62,47,64,253,64,39, +65,147,65,0,0,51,73,0,0,3,1,5,105,110,115,112,48,69,35,37,117, +116,105,108,115,74,112,97,116,104,45,115,116,114,105,110,103,63,66,98,115,98, +115,78,110,111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,73,114,101, +114,111,111,116,45,112,97,116,104,1,20,102,105,110,100,45,101,120,101,99,117, +116,97,98,108,101,45,112,97,116,104,1,27,112,97,116,104,45,108,105,115,116, +45,115,116,114,105,110,103,45,62,112,97,116,104,45,108,105,115,116,1,42,99, +97,108,108,45,119,105,116,104,45,100,101,102,97,117,108,116,45,114,101,97,100, +105,110,103,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,67, +113,117,111,116,101,29,94,2,10,70,35,37,112,97,114,97,109,122,11,76,45, +99,104,101,99,107,45,114,101,108,112,97,116,104,79,45,99,104,101,99,107,45, +99,111,108,108,101,99,116,105,111,110,73,45,99,104,101,99,107,45,102,97,105, +108,77,99,111,108,108,101,99,116,105,111,110,45,112,97,116,104,75,102,105,110, +100,45,99,111,108,45,102,105,108,101,1,20,99,111,108,108,101,99,116,105,111, +110,45,102,105,108,101,45,112,97,116,104,1,18,102,105,110,100,45,109,97,105, +110,45,99,111,108,108,101,99,116,115,1,32,101,120,101,45,114,101,108,97,116, +105,118,101,45,112,97,116,104,45,62,99,111,109,112,108,101,116,101,45,112,97, +116,104,78,102,105,110,100,45,109,97,105,110,45,99,111,110,102,105,103,78,103, +101,116,45,99,111,110,102,105,103,45,116,97,98,108,101,1,21,103,101,116,45, +105,110,115,116,97,108,108,97,116,105,111,110,45,110,97,109,101,76,99,111,101, +114,99,101,45,116,111,45,112,97,116,104,1,37,99,111,108,108,101,99,116,115, +45,114,101,108,97,116,105,118,101,45,112,97,116,104,45,62,99,111,109,112,108, +101,116,101,45,112,97,116,104,79,97,100,100,45,99,111,110,102,105,103,45,115, +101,97,114,99,104,1,29,102,105,110,100,45,108,105,98,114,97,114,121,45,99, +111,108,108,101,99,116,105,111,110,45,108,105,110,107,115,73,108,105,110,107,115, +45,99,97,99,104,101,78,115,116,97,109,112,45,112,114,111,109,112,116,45,116, +97,103,73,102,105,108,101,45,62,115,116,97,109,112,76,110,111,45,102,105,108, +101,45,115,116,97,109,112,63,1,22,103,101,116,45,108,105,110,107,101,100,45, +99,111,108,108,101,99,116,105,111,110,115,1,30,110,111,114,109,97,108,105,122, +101,45,99,111,108,108,101,99,116,105,111,110,45,114,101,102,101,114,101,110,99, +101,1,27,102,105,108,101,45,101,120,105,115,116,115,63,47,109,97,121,98,101, +45,99,111,109,112,105,108,101,100,1,18,112,97,116,104,45,97,100,100,45,101, +120,116,101,110,115,105,111,110,1,20,99,104,101,99,107,45,101,120,116,101,110, +115,105,111,110,45,99,97,108,108,1,21,112,97,116,104,45,97,100,106,117,115, +116,45,101,120,116,101,110,115,105,111,110,1,22,112,97,116,104,45,114,101,112, +108,97,99,101,45,101,120,116,101,110,115,105,111,110,79,108,111,97,100,47,117, +115,101,45,99,111,109,112,105,108,101,100,1,29,102,105,110,100,45,108,105,98, +114,97,114,121,45,99,111,108,108,101,99,116,105,111,110,45,112,97,116,104,115, +75,101,109,98,101,100,100,101,100,45,108,111,97,100,78,110,111,114,109,97,108, +45,112,97,116,104,45,99,97,115,101,6,41,41,40,111,114,47,99,32,112,97, +116,104,45,102,111,114,45,115,111,109,101,45,115,121,115,116,101,109,63,32,112, +97,116,104,45,115,116,114,105,110,103,63,41,69,119,105,110,100,111,119,115,6, +2,2,92,49,6,41,41,40,111,114,47,99,32,112,97,116,104,45,115,116,114, +105,110,103,63,32,112,97,116,104,45,102,111,114,45,115,111,109,101,45,115,121, +115,116,101,109,63,41,6,4,4,112,97,116,104,5,8,92,92,63,92,82,69, +76,92,6,12,12,112,97,116,104,45,115,116,114,105,110,103,63,70,114,101,108, +97,116,105,118,101,66,108,111,111,112,5,0,6,30,30,40,112,114,111,99,101, +100,117,114,101,45,97,114,105,116,121,45,105,110,99,108,117,100,101,115,47,99, +32,48,41,6,21,21,105,110,118,97,108,105,100,32,114,101,108,97,116,105,118, +101,32,112,97,116,104,6,18,18,40,97,110,121,47,99,32,46,32,45,62,32, +46,32,97,110,121,41,74,99,111,108,108,101,99,116,115,45,100,105,114,71,101, +120,101,99,45,102,105,108,101,70,111,114,105,103,45,100,105,114,72,99,111,110, +102,105,103,45,100,105,114,79,105,110,115,116,97,108,108,97,116,105,111,110,45, +110,97,109,101,6,10,10,108,105,110,107,115,46,114,107,116,100,71,97,100,100, +111,110,45,100,105,114,71,102,115,45,99,104,97,110,103,101,67,101,114,114,111, +114,66,114,111,111,116,73,115,116,97,116,105,99,45,114,111,111,116,6,0,0, +6,1,1,47,5,3,46,122,111,5,1,95,6,21,21,40,111,114,47,99,32, +115,116,114,105,110,103,63,32,98,121,116,101,115,63,41,6,40,40,99,97,110, +110,111,116,32,97,100,100,32,97,110,32,101,120,116,101,110,115,105,111,110,32, +116,111,32,97,32,114,111,111,116,32,112,97,116,104,58,32,5,11,80,76,84, +67,79,76,76,69,67,84,83,1,20,99,111,108,108,101,99,116,115,45,115,101, +97,114,99,104,45,100,105,114,115,6,8,8,99,111,108,108,101,99,116,115,27, +248,22,184,15,194,28,192,192,28,248,22,159,7,194,27,248,22,143,16,195,28, +192,192,248,22,144,16,195,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,185,15,23,195,2,10,28,248,22,184,15,23,195,2,10, +28,248,22,159,7,23,195,2,28,248,22,143,16,23,195,2,10,248,22,144,16, +23,195,2,11,12,250,22,188,11,2,41,2,42,23,197,2,28,28,248,22,185, +15,23,195,2,249,22,175,9,248,22,186,15,23,197,2,2,43,249,22,175,9, +247,22,186,8,2,43,27,28,248,22,159,7,23,196,2,23,195,2,248,22,171, +8,248,22,189,15,23,197,2,28,249,22,181,16,2,76,23,195,2,28,248,22, +159,7,195,248,22,128,16,195,194,86,94,23,195,1,27,248,22,134,8,23,195, +1,249,22,129,16,248,22,174,8,250,22,189,16,2,77,28,249,22,181,16,2, +78,23,201,2,23,199,1,250,22,189,16,2,79,23,202,1,2,44,80,144,47, +40,41,2,43,28,248,22,159,7,194,248,22,128,16,194,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,184,15,23,195,2,10,28,248,22,159, +7,23,195,2,28,248,22,143,16,23,195,2,10,248,22,144,16,23,195,2,11, +10,248,22,185,15,23,195,2,12,252,22,188,11,2,6,2,45,39,23,199,2, +23,200,2,28,28,28,248,22,184,15,23,196,2,10,28,248,22,159,7,23,196, +2,28,248,22,143,16,23,196,2,10,248,22,144,16,23,196,2,11,10,248,22, +185,15,23,196,2,12,252,22,188,11,2,6,2,45,40,23,199,2,23,200,2, +27,28,248,22,185,15,23,196,2,248,22,186,15,23,196,2,247,22,187,15,86, +95,28,28,248,22,145,16,23,196,2,10,249,22,175,9,247,22,187,15,23,195, +2,12,253,22,190,11,2,6,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,46,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,187,15,28,249,22,175, +9,28,248,22,185,15,23,199,2,248,22,186,15,23,199,2,247,22,187,15,23, +195,2,12,253,22,190,11,2,6,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,46,23,201,2,6,9,9,114,111,111,116,32,112, +97,116,104,23,202,2,27,27,248,22,149,16,28,248,22,145,16,23,199,2,23, +198,1,248,22,146,16,23,199,1,86,94,28,28,248,22,185,15,23,194,2,10, +28,248,22,184,15,23,194,2,10,28,248,22,159,7,23,194,2,28,248,22,143, +16,23,194,2,10,248,22,144,16,23,194,2,11,12,250,22,188,11,2,41,2, +42,23,196,2,28,28,248,22,185,15,23,194,2,249,22,175,9,248,22,186,15, +23,196,2,2,43,249,22,175,9,247,22,186,8,2,43,27,28,248,22,159,7, +23,195,2,23,194,2,248,22,171,8,248,22,189,15,23,196,2,28,249,22,181, +16,2,76,23,195,2,28,248,22,159,7,194,248,22,128,16,194,193,86,94,23, +194,1,27,248,22,134,8,23,195,1,249,22,129,16,248,22,174,8,250,22,189, +16,2,77,28,249,22,181,16,2,78,23,201,2,23,199,1,250,22,189,16,2, +79,23,202,1,2,44,80,144,50,40,41,2,43,28,248,22,159,7,193,248,22, +128,16,193,192,27,248,22,189,15,23,195,2,28,249,22,175,9,23,197,2,66, +117,110,105,120,28,249,22,156,8,194,5,1,47,28,248,22,185,15,198,197,248, +22,128,16,198,249,22,138,16,199,249,22,129,16,249,22,159,8,248,22,189,15, +200,40,198,86,94,23,194,1,28,249,22,175,9,23,197,2,2,43,249,22,138, +16,23,200,1,249,22,129,16,28,249,22,181,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,160,8,2,47,250,22,159,8,203,43,44,5,1,92,249,22, +159,8,202,45,28,249,22,181,16,2,81,23,199,2,249,22,160,8,2,47,249, +22,159,8,200,43,28,249,22,181,16,2,81,23,199,2,249,22,160,8,2,47, +249,22,159,8,200,43,28,249,22,181,16,0,14,35,114,120,34,94,92,92,92, +92,92,92,92,92,34,23,199,2,249,22,160,8,5,4,85,78,67,92,249,22, +159,8,200,41,28,249,22,181,16,0,12,35,114,120,34,94,91,97,45,122,93, +58,34,198,249,22,160,8,250,22,159,8,201,39,40,249,22,159,8,200,41,12, +198,12,32,83,88,148,8,36,42,56,11,72,102,111,117,110,100,45,101,120,101, +99,222,33,86,32,84,88,148,8,36,43,61,11,66,110,101,120,116,222,33,85, +27,248,22,147,16,23,197,2,28,249,22,177,9,23,195,2,23,198,1,11,28, +248,22,143,16,23,194,2,27,249,22,138,16,23,200,1,23,196,1,28,23,196, +2,90,144,42,11,89,146,42,39,11,248,22,141,16,23,197,2,86,95,23,195, +1,23,194,1,27,28,23,199,2,27,248,22,147,16,23,199,2,28,249,22,177, +9,23,195,2,23,200,2,11,28,248,22,143,16,23,194,2,250,2,83,23,203, +2,23,204,2,249,22,138,16,23,200,2,23,198,1,250,2,83,23,203,2,23, +204,2,23,196,1,11,28,23,193,2,192,86,94,23,193,1,27,28,248,22,184, +15,23,196,2,27,249,22,138,16,23,198,2,23,204,2,28,28,248,22,133,16, +193,10,248,22,132,16,193,192,11,11,28,23,193,2,192,86,94,23,193,1,28, +23,200,2,11,27,248,22,147,16,23,200,2,28,249,22,177,9,194,23,201,1, +11,28,248,22,143,16,193,250,2,83,203,204,249,22,138,16,200,197,250,2,83, +203,204,195,192,86,94,23,197,1,28,23,195,2,90,144,42,11,89,146,42,39, +11,248,22,141,16,23,197,2,86,95,23,195,1,23,194,1,27,28,23,198,2, +27,248,22,147,16,23,199,2,28,249,22,177,9,23,195,2,23,200,2,11,28, +248,22,143,16,23,194,2,250,2,83,23,202,2,23,203,2,249,22,138,16,23, +200,2,23,198,1,250,2,83,23,202,2,23,203,2,23,196,1,11,28,23,193, +2,192,86,94,23,193,1,27,28,248,22,184,15,23,196,2,27,249,22,138,16, +23,198,2,23,203,2,28,28,248,22,133,16,193,10,248,22,132,16,193,192,11, +11,28,23,193,2,192,86,94,23,193,1,28,23,199,2,11,27,248,22,147,16, +23,200,2,28,249,22,177,9,194,23,201,1,11,28,248,22,143,16,193,250,2, +83,202,203,249,22,138,16,200,197,250,2,83,202,203,195,192,28,23,194,2,90, +144,42,11,89,146,42,39,11,248,22,141,16,23,199,2,86,95,23,195,1,23, +194,1,27,28,23,197,2,251,2,84,23,201,2,23,202,2,23,203,2,23,198, +2,11,28,23,193,2,192,86,94,23,193,1,27,28,248,22,184,15,195,27,249, +22,138,16,197,201,28,28,248,22,133,16,193,10,248,22,132,16,193,192,11,11, +28,192,192,28,197,11,251,2,84,201,202,203,198,194,32,87,88,148,8,36,43, +60,11,2,50,222,33,88,28,248,22,90,23,197,2,11,27,249,22,138,16,248, +22,146,16,248,22,83,23,201,2,23,198,2,28,248,22,132,16,23,194,2,250, +2,83,196,197,195,86,94,23,193,1,27,248,22,176,20,23,199,1,28,248,22, +90,23,194,2,11,27,249,22,138,16,248,22,146,16,248,22,83,23,198,2,23, +200,2,28,248,22,132,16,23,194,2,250,2,83,198,199,195,86,94,23,193,1, +27,248,22,176,20,23,196,1,28,248,22,90,23,194,2,11,27,249,22,138,16, +248,22,146,16,248,22,83,23,198,2,23,202,2,28,248,22,132,16,23,194,2, +250,2,83,200,201,195,86,94,23,193,1,27,248,22,176,20,23,196,1,28,248, +22,90,23,194,2,11,27,249,22,138,16,248,22,146,16,248,22,83,197,203,28, +248,22,132,16,193,250,2,83,202,203,195,251,2,87,203,204,205,248,22,176,20, +198,86,95,28,28,248,22,184,15,23,195,2,10,28,248,22,159,7,23,195,2, +28,248,22,143,16,23,195,2,10,248,22,144,16,23,195,2,11,12,250,22,188, +11,2,7,2,48,23,197,2,28,28,23,195,2,28,28,248,22,184,15,23,196, +2,10,28,248,22,159,7,23,196,2,28,248,22,143,16,23,196,2,10,248,22, +144,16,23,196,2,11,248,22,143,16,23,196,2,11,10,12,250,22,188,11,2, +7,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,143,16,23,195,2,90,144, +42,11,89,146,42,39,11,248,22,141,16,23,198,2,249,22,175,9,194,2,49, +11,27,249,22,181,8,247,22,180,8,5,4,80,65,84,72,27,28,23,194,2, +249,80,143,43,44,249,22,171,8,23,198,1,7,63,9,86,94,23,194,1,9, +27,28,249,22,175,9,247,22,186,8,2,43,249,22,82,248,22,129,16,5,1, +46,23,196,1,23,194,1,28,248,22,90,23,194,2,11,27,249,22,138,16,248, +22,146,16,248,22,83,23,198,2,23,200,2,28,248,22,132,16,23,194,2,250, +2,83,202,201,195,86,94,23,193,1,27,248,22,176,20,23,196,1,28,248,22, +90,23,194,2,11,27,249,22,138,16,248,22,146,16,248,22,83,23,198,2,23, +202,2,28,248,22,132,16,23,194,2,250,2,83,204,203,195,86,94,23,193,1, +27,248,22,176,20,23,196,1,28,248,22,90,23,194,2,11,27,249,22,138,16, +248,22,146,16,248,22,83,23,198,2,23,204,2,28,248,22,132,16,23,194,2, +250,2,83,206,205,195,86,94,23,193,1,27,248,22,176,20,23,196,1,28,248, +22,90,23,194,2,11,27,249,22,138,16,248,22,146,16,248,22,83,197,205,28, +248,22,132,16,193,250,2,83,23,16,23,15,195,251,2,87,23,17,23,16,23, +15,248,22,176,20,198,27,248,22,146,16,23,196,1,28,248,22,132,16,193,250, +2,83,199,198,195,11,250,80,144,42,43,42,196,197,11,250,80,144,42,43,42, +196,11,11,32,92,88,148,8,36,42,58,11,2,50,222,33,94,0,8,35,114, +120,35,34,92,34,34,27,249,22,177,16,23,196,2,23,198,2,28,23,193,2, +86,94,23,196,1,27,248,22,105,23,195,2,27,27,248,22,114,23,197,1,27, +249,22,177,16,23,200,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248, +22,105,23,195,2,27,250,2,92,23,203,1,203,248,22,114,23,199,1,27,28, +249,22,175,9,247,22,186,8,2,43,250,22,189,16,2,93,23,198,1,2,51, +194,28,249,22,156,8,194,2,51,249,22,97,203,195,249,22,82,248,22,129,16, +195,195,86,95,23,198,1,23,193,1,27,28,249,22,175,9,247,22,186,8,2, +43,250,22,189,16,2,93,23,198,1,2,51,194,28,249,22,156,8,194,2,51, +249,22,97,201,9,249,22,82,248,22,129,16,195,9,27,28,249,22,175,9,247, +22,186,8,2,43,250,22,189,16,2,93,23,198,1,2,51,194,28,249,22,156, +8,194,2,51,249,22,97,199,195,249,22,82,248,22,129,16,195,195,86,95,23, +194,1,23,193,1,27,28,249,22,175,9,247,22,186,8,2,43,250,22,189,16, +2,93,23,200,1,2,51,196,28,249,22,156,8,194,2,51,249,22,97,197,9, +249,22,82,248,22,129,16,195,9,86,95,28,28,248,22,148,8,194,10,248,22, +159,7,194,12,250,22,188,11,2,8,6,21,21,40,111,114,47,99,32,98,121, +116,101,115,63,32,115,116,114,105,110,103,63,41,196,28,28,248,22,91,195,249, +22,4,22,184,15,196,11,12,250,22,188,11,2,8,6,14,14,40,108,105,115, +116,111,102,32,112,97,116,104,63,41,197,250,2,92,195,197,28,248,22,159,7, +197,248,22,173,8,197,196,28,28,248,22,0,23,195,2,249,22,48,23,196,2, +39,11,20,13,144,80,144,39,46,40,26,35,80,144,8,35,47,40,249,22,31, +11,80,144,8,37,46,40,22,151,15,10,22,152,15,10,22,153,15,10,22,154, +15,11,22,155,15,11,22,159,15,10,22,158,15,11,22,160,15,10,22,157,15, +10,22,161,15,10,22,156,15,11,22,162,15,10,22,163,15,10,22,164,15,10, +22,165,15,11,22,166,15,10,22,149,15,11,247,23,194,1,250,22,188,11,2, +9,2,52,23,197,1,86,94,28,28,248,22,184,15,23,195,2,10,28,248,22, 159,7,23,195,2,28,248,22,143,16,23,195,2,10,248,22,144,16,23,195,2, 11,12,250,22,188,11,23,196,2,2,48,23,197,2,28,248,22,143,16,23,195, -2,86,94,23,194,1,12,251,22,190,11,23,197,2,2,53,2,46,23,198,1, -249,22,3,20,20,94,88,148,8,36,40,50,11,9,223,2,33,101,23,195,1, -23,197,1,28,28,248,22,0,23,195,2,249,22,48,23,196,2,40,11,12,250, -22,188,11,23,196,1,2,54,23,197,1,86,94,28,28,248,22,184,15,23,194, -2,10,28,248,22,159,7,23,194,2,28,248,22,143,16,23,194,2,10,248,22, -144,16,23,194,2,11,12,250,22,188,11,2,15,2,48,23,196,2,28,248,22, -143,16,23,194,2,12,251,22,190,11,2,15,2,53,2,46,23,197,1,86,97, -28,28,248,22,184,15,23,196,2,10,28,248,22,159,7,23,196,2,28,248,22, -143,16,23,196,2,10,248,22,144,16,23,196,2,11,12,250,22,188,11,2,15, -2,48,23,198,2,28,248,22,143,16,23,196,2,12,251,22,190,11,2,15,2, -53,2,46,23,199,2,249,22,3,32,0,88,148,8,36,40,49,11,9,222,33, -104,23,198,2,28,28,248,22,0,23,195,2,249,22,48,23,196,2,40,11,12, -250,22,188,11,2,15,2,54,23,197,2,252,80,143,44,52,23,199,1,23,200, -1,23,201,1,11,11,86,94,28,28,248,22,184,15,23,194,2,10,28,248,22, -159,7,23,194,2,28,248,22,143,16,23,194,2,10,248,22,144,16,23,194,2, -11,12,250,22,188,11,2,17,2,48,23,196,2,28,248,22,143,16,23,194,2, -12,251,22,190,11,2,17,2,53,2,46,23,197,1,86,99,28,28,248,22,184, -15,23,197,2,10,28,248,22,159,7,23,197,2,28,248,22,143,16,23,197,2, -10,248,22,144,16,23,197,2,11,12,250,22,188,11,2,17,2,48,23,199,2, -28,248,22,143,16,23,197,2,12,251,22,190,11,2,17,2,53,2,46,23,200, -2,28,28,248,22,184,15,23,198,2,10,28,248,22,159,7,23,198,2,28,248, -22,143,16,23,198,2,10,248,22,144,16,23,198,2,11,12,250,22,188,11,2, -17,2,48,23,200,2,28,248,22,143,16,23,198,2,12,251,22,190,11,2,17, -2,53,2,46,23,201,2,249,22,3,32,0,88,148,8,36,40,49,11,9,222, -33,106,23,200,2,28,28,248,22,0,23,195,2,249,22,48,23,196,2,40,11, -12,250,22,188,11,2,17,2,54,23,197,2,252,80,143,44,52,23,199,1,23, -202,1,23,203,1,23,201,1,23,200,1,27,248,22,161,16,2,55,28,248,22, -145,16,23,194,2,248,22,148,16,23,194,1,28,248,22,144,16,23,194,2,90, -144,42,11,89,146,42,39,11,248,22,141,16,249,22,146,16,250,80,144,49,43, -42,248,22,161,16,2,56,11,11,248,22,161,16,2,57,86,95,23,195,1,23, -194,1,248,22,148,16,249,22,146,16,23,199,1,23,196,1,27,250,80,144,44, -43,42,248,22,161,16,2,56,23,197,1,10,28,23,193,2,248,22,148,16,23, -194,1,11,249,80,144,41,55,40,39,80,144,41,8,40,42,27,248,22,161,16, -2,58,28,248,22,145,16,23,194,2,248,22,148,16,23,194,1,28,248,22,144, -16,23,194,2,90,144,42,11,89,146,42,39,11,248,22,141,16,249,22,146,16, -250,80,144,49,43,42,248,22,161,16,2,56,11,11,248,22,161,16,2,57,86, -95,23,195,1,23,194,1,248,22,148,16,249,22,146,16,23,199,1,23,196,1, -27,250,80,144,44,43,42,248,22,161,16,2,56,23,197,1,10,28,23,193,2, -248,22,148,16,23,194,1,11,249,80,144,41,55,40,40,80,144,41,8,41,42, -27,20,13,144,80,144,40,46,40,26,35,80,144,8,36,47,40,249,22,31,11, -80,144,8,38,46,40,22,151,15,10,22,152,15,10,22,153,15,10,22,154,15, -11,22,155,15,11,22,159,15,10,22,158,15,11,22,160,15,10,22,157,15,10, -22,161,15,10,22,156,15,11,22,162,15,10,22,163,15,10,22,164,15,10,22, -165,15,11,22,166,15,10,22,149,15,11,247,22,154,6,28,248,22,152,2,193, -192,11,27,28,23,195,2,249,22,138,16,23,197,1,6,11,11,99,111,110,102, -105,103,46,114,107,116,100,86,94,23,195,1,11,27,28,23,194,2,28,248,22, -132,16,23,195,2,249,22,146,6,23,196,1,80,144,43,8,42,42,11,11,28, -192,192,21,17,1,0,250,22,161,2,23,196,1,2,59,247,22,177,8,250,22, -161,2,195,2,59,247,22,177,8,28,248,22,159,7,23,195,2,27,248,22,128, -16,23,196,1,28,248,22,145,16,23,194,2,192,249,22,146,16,23,195,1,27, -247,80,144,43,54,42,28,23,193,2,192,86,94,23,193,1,247,22,162,16,28, -248,22,148,8,23,195,2,27,248,22,129,16,23,196,1,28,248,22,145,16,23, -194,2,192,249,22,146,16,23,195,1,27,247,80,144,43,54,42,28,23,193,2, -192,86,94,23,193,1,247,22,162,16,28,248,22,184,15,23,195,2,28,248,22, -145,16,23,195,2,193,249,22,146,16,23,196,1,27,247,80,144,42,54,42,28, -23,193,2,192,86,94,23,193,1,247,22,162,16,193,27,248,22,161,16,2,55, -28,248,22,145,16,23,194,2,248,22,148,16,23,194,1,28,248,22,144,16,23, -194,2,90,144,42,11,89,146,42,39,11,248,22,141,16,249,22,146,16,250,80, -144,49,43,42,248,22,161,16,2,56,11,11,248,22,161,16,2,57,86,95,23, -195,1,23,194,1,248,22,148,16,249,22,146,16,23,199,1,23,196,1,27,250, -80,144,44,43,42,248,22,161,16,2,56,23,197,1,10,28,23,193,2,248,22, -148,16,23,194,1,11,28,248,22,145,16,23,195,2,193,249,22,146,16,23,196, -1,27,249,80,144,44,55,40,39,80,144,44,8,43,42,28,23,193,2,192,86, -94,23,193,1,247,22,162,16,28,248,22,145,16,23,195,2,248,22,148,16,23, -195,1,28,248,22,144,16,23,195,2,90,144,42,11,89,146,42,39,11,248,22, -141,16,249,22,146,16,250,80,144,48,43,42,248,22,161,16,2,56,11,11,248, -22,161,16,2,57,86,95,23,195,1,23,194,1,248,22,148,16,249,22,146,16, -23,200,1,23,196,1,27,250,80,144,43,43,42,248,22,161,16,2,56,23,198, -1,10,28,23,193,2,248,22,148,16,23,194,1,11,28,248,22,90,23,196,2, -9,28,248,22,83,23,196,2,249,22,82,27,248,22,175,20,23,199,2,28,248, -22,159,7,23,194,2,27,248,22,128,16,23,195,1,28,248,22,145,16,23,194, -2,192,249,22,146,16,23,195,1,27,247,80,144,46,54,42,28,23,193,2,192, -86,94,23,193,1,247,22,162,16,28,248,22,148,8,23,194,2,27,248,22,129, -16,23,195,1,28,248,22,145,16,23,194,2,192,249,22,146,16,23,195,1,27, -247,80,144,46,54,42,28,23,193,2,192,86,94,23,193,1,247,22,162,16,28, -248,22,184,15,23,194,2,28,248,22,145,16,23,194,2,192,249,22,146,16,23, -195,1,27,247,80,144,45,54,42,28,23,193,2,192,86,94,23,193,1,247,22, -162,16,192,27,248,22,176,20,23,199,1,28,248,22,90,23,194,2,9,28,248, -22,83,23,194,2,249,22,82,248,80,144,45,60,42,248,22,175,20,23,197,2, -27,248,22,176,20,23,197,1,28,248,22,90,23,194,2,9,28,248,22,83,23, -194,2,249,22,82,248,80,144,48,60,42,248,22,175,20,23,197,2,249,80,144, -49,8,44,42,23,204,1,248,22,176,20,23,198,1,249,22,97,23,202,2,249, -80,144,49,8,44,42,23,204,1,248,22,176,20,23,198,1,249,22,97,23,199, -2,27,248,22,176,20,23,197,1,28,248,22,90,23,194,2,9,28,248,22,83, -23,194,2,249,22,82,248,80,144,48,60,42,248,22,175,20,23,197,2,249,80, -144,49,8,44,42,23,204,1,248,22,176,20,23,198,1,249,22,97,23,202,2, -249,80,144,49,8,44,42,23,204,1,248,22,176,20,23,198,1,249,22,97,23, -196,2,27,248,22,176,20,23,199,1,28,248,22,90,23,194,2,9,28,248,22, +2,12,251,22,190,11,23,197,1,2,53,2,46,23,198,1,86,94,28,28,248, +22,184,15,23,195,2,10,28,248,22,159,7,23,195,2,28,248,22,143,16,23, +195,2,10,248,22,144,16,23,195,2,11,12,250,22,188,11,23,196,2,2,48, +23,197,2,28,248,22,143,16,23,195,2,12,251,22,190,11,23,197,1,2,53, +2,46,23,198,1,86,95,28,28,248,22,184,15,23,195,2,10,28,248,22,159, +7,23,195,2,28,248,22,143,16,23,195,2,10,248,22,144,16,23,195,2,11, +12,250,22,188,11,23,196,2,2,48,23,197,2,28,248,22,143,16,23,195,2, +86,94,23,194,1,12,251,22,190,11,23,197,2,2,53,2,46,23,198,1,249, +22,3,20,20,94,88,148,8,36,40,50,11,9,223,2,33,98,23,195,1,23, +197,1,28,28,248,22,0,23,195,2,249,22,48,23,196,2,40,11,12,250,22, +188,11,23,196,1,2,54,23,197,1,86,94,28,28,248,22,184,15,23,194,2, +10,28,248,22,159,7,23,194,2,28,248,22,143,16,23,194,2,10,248,22,144, +16,23,194,2,11,12,250,22,188,11,2,15,2,48,23,196,2,28,248,22,143, +16,23,194,2,12,251,22,190,11,2,15,2,53,2,46,23,197,1,86,97,28, +28,248,22,184,15,23,196,2,10,28,248,22,159,7,23,196,2,28,248,22,143, +16,23,196,2,10,248,22,144,16,23,196,2,11,12,250,22,188,11,2,15,2, +48,23,198,2,28,248,22,143,16,23,196,2,12,251,22,190,11,2,15,2,53, +2,46,23,199,2,249,22,3,32,0,88,148,8,36,40,49,11,9,222,33,101, +23,198,2,28,28,248,22,0,23,195,2,249,22,48,23,196,2,40,11,12,250, +22,188,11,2,15,2,54,23,197,2,252,80,143,44,52,23,199,1,23,200,1, +23,201,1,11,11,86,94,28,28,248,22,184,15,23,194,2,10,28,248,22,159, +7,23,194,2,28,248,22,143,16,23,194,2,10,248,22,144,16,23,194,2,11, +12,250,22,188,11,2,17,2,48,23,196,2,28,248,22,143,16,23,194,2,12, +251,22,190,11,2,17,2,53,2,46,23,197,1,86,99,28,28,248,22,184,15, +23,197,2,10,28,248,22,159,7,23,197,2,28,248,22,143,16,23,197,2,10, +248,22,144,16,23,197,2,11,12,250,22,188,11,2,17,2,48,23,199,2,28, +248,22,143,16,23,197,2,12,251,22,190,11,2,17,2,53,2,46,23,200,2, +28,28,248,22,184,15,23,198,2,10,28,248,22,159,7,23,198,2,28,248,22, +143,16,23,198,2,10,248,22,144,16,23,198,2,11,12,250,22,188,11,2,17, +2,48,23,200,2,28,248,22,143,16,23,198,2,12,251,22,190,11,2,17,2, +53,2,46,23,201,2,249,22,3,32,0,88,148,8,36,40,49,11,9,222,33, +103,23,200,2,28,28,248,22,0,23,195,2,249,22,48,23,196,2,40,11,12, +250,22,188,11,2,17,2,54,23,197,2,252,80,143,44,52,23,199,1,23,202, +1,23,203,1,23,201,1,23,200,1,27,248,22,161,16,2,55,28,248,22,145, +16,23,194,2,248,22,148,16,23,194,1,28,248,22,144,16,23,194,2,90,144, +42,11,89,146,42,39,11,248,22,141,16,249,22,146,16,250,80,144,49,43,42, +248,22,161,16,2,56,11,11,248,22,161,16,2,57,86,95,23,195,1,23,194, +1,248,22,148,16,249,22,146,16,23,199,1,23,196,1,27,250,80,144,44,43, +42,248,22,161,16,2,56,23,197,1,10,28,23,193,2,248,22,148,16,23,194, +1,11,249,80,144,41,55,40,39,80,144,41,8,40,42,27,248,22,161,16,2, +58,28,248,22,145,16,23,194,2,248,22,148,16,23,194,1,28,248,22,144,16, +23,194,2,90,144,42,11,89,146,42,39,11,248,22,141,16,249,22,146,16,250, +80,144,49,43,42,248,22,161,16,2,56,11,11,248,22,161,16,2,57,86,95, +23,195,1,23,194,1,248,22,148,16,249,22,146,16,23,199,1,23,196,1,27, +250,80,144,44,43,42,248,22,161,16,2,56,23,197,1,10,28,23,193,2,248, +22,148,16,23,194,1,11,249,80,144,41,55,40,40,80,144,41,8,41,42,27, +20,13,144,80,144,40,46,40,26,35,80,144,8,36,47,40,249,22,31,11,80, +144,8,38,46,40,22,151,15,10,22,152,15,10,22,153,15,10,22,154,15,11, +22,155,15,11,22,159,15,10,22,158,15,11,22,160,15,10,22,157,15,10,22, +161,15,10,22,156,15,11,22,162,15,10,22,163,15,10,22,164,15,10,22,165, +15,11,22,166,15,10,22,149,15,11,247,22,154,6,28,248,22,152,2,193,192, +11,27,28,23,195,2,249,22,138,16,23,197,1,6,11,11,99,111,110,102,105, +103,46,114,107,116,100,86,94,23,195,1,11,27,28,23,194,2,28,248,22,132, +16,23,195,2,249,22,146,6,23,196,1,80,144,43,8,42,42,11,11,28,192, +192,21,17,1,0,250,22,161,2,23,196,1,2,59,247,22,177,8,250,22,161, +2,195,2,59,247,22,177,8,28,248,22,159,7,23,195,2,27,248,22,128,16, +23,196,1,28,248,22,145,16,23,194,2,192,249,22,146,16,23,195,1,27,247, +80,144,43,54,42,28,23,193,2,192,86,94,23,193,1,247,22,162,16,28,248, +22,148,8,23,195,2,27,248,22,129,16,23,196,1,28,248,22,145,16,23,194, +2,192,249,22,146,16,23,195,1,27,247,80,144,43,54,42,28,23,193,2,192, +86,94,23,193,1,247,22,162,16,28,248,22,184,15,23,195,2,28,248,22,145, +16,23,195,2,193,249,22,146,16,23,196,1,27,247,80,144,42,54,42,28,23, +193,2,192,86,94,23,193,1,247,22,162,16,193,27,248,22,161,16,2,55,28, +248,22,145,16,23,194,2,248,22,148,16,23,194,1,28,248,22,144,16,23,194, +2,90,144,42,11,89,146,42,39,11,248,22,141,16,249,22,146,16,250,80,144, +49,43,42,248,22,161,16,2,56,11,11,248,22,161,16,2,57,86,95,23,195, +1,23,194,1,248,22,148,16,249,22,146,16,23,199,1,23,196,1,27,250,80, +144,44,43,42,248,22,161,16,2,56,23,197,1,10,28,23,193,2,248,22,148, +16,23,194,1,11,28,248,22,145,16,23,195,2,193,249,22,146,16,23,196,1, +27,249,80,144,44,55,40,39,80,144,44,8,43,42,28,23,193,2,192,86,94, +23,193,1,247,22,162,16,28,248,22,145,16,23,195,2,248,22,148,16,23,195, +1,28,248,22,144,16,23,195,2,90,144,42,11,89,146,42,39,11,248,22,141, +16,249,22,146,16,250,80,144,48,43,42,248,22,161,16,2,56,11,11,248,22, +161,16,2,57,86,95,23,195,1,23,194,1,248,22,148,16,249,22,146,16,23, +200,1,23,196,1,27,250,80,144,43,43,42,248,22,161,16,2,56,23,198,1, +10,28,23,193,2,248,22,148,16,23,194,1,11,28,248,22,90,23,196,2,9, +28,248,22,83,23,196,2,249,22,82,27,248,22,175,20,23,199,2,28,248,22, +159,7,23,194,2,27,248,22,128,16,23,195,1,28,248,22,145,16,23,194,2, +192,249,22,146,16,23,195,1,27,247,80,144,46,54,42,28,23,193,2,192,86, +94,23,193,1,247,22,162,16,28,248,22,148,8,23,194,2,27,248,22,129,16, +23,195,1,28,248,22,145,16,23,194,2,192,249,22,146,16,23,195,1,27,247, +80,144,46,54,42,28,23,193,2,192,86,94,23,193,1,247,22,162,16,28,248, +22,184,15,23,194,2,28,248,22,145,16,23,194,2,192,249,22,146,16,23,195, +1,27,247,80,144,45,54,42,28,23,193,2,192,86,94,23,193,1,247,22,162, +16,192,27,248,22,176,20,23,199,1,28,248,22,90,23,194,2,9,28,248,22, 83,23,194,2,249,22,82,248,80,144,45,60,42,248,22,175,20,23,197,2,27, 248,22,176,20,23,197,1,28,248,22,90,23,194,2,9,28,248,22,83,23,194, 2,249,22,82,248,80,144,48,60,42,248,22,175,20,23,197,2,249,80,144,49, @@ -435,406 +422,379 @@ 27,248,22,176,20,23,197,1,28,248,22,90,23,194,2,9,28,248,22,83,23, 194,2,249,22,82,248,80,144,48,60,42,248,22,175,20,23,197,2,249,80,144, 49,8,44,42,23,204,1,248,22,176,20,23,198,1,249,22,97,23,202,2,249, -80,144,49,8,44,42,23,204,1,248,22,176,20,23,198,1,27,250,22,161,2, -23,198,1,23,199,1,11,28,192,249,80,144,42,8,44,42,198,194,196,27,248, -22,161,16,2,58,28,248,22,145,16,23,194,2,248,22,148,16,23,194,1,28, -248,22,144,16,23,194,2,90,144,42,11,89,146,42,39,11,248,22,141,16,249, -22,146,16,250,80,144,49,43,42,248,22,161,16,2,56,11,11,248,22,161,16, -2,57,86,95,23,195,1,23,194,1,248,22,148,16,249,22,146,16,23,199,1, -23,196,1,27,250,80,144,44,43,42,248,22,161,16,2,56,23,197,1,10,28, -23,193,2,248,22,148,16,23,194,1,11,27,248,80,144,41,58,42,249,80,144, -43,55,40,40,80,144,43,8,45,42,27,27,250,22,161,2,23,198,2,72,108, -105,110,107,115,45,102,105,108,101,11,27,28,23,194,2,23,194,1,86,94,23, -194,1,249,22,138,16,27,250,22,161,2,23,202,2,71,115,104,97,114,101,45, -100,105,114,11,28,192,192,249,22,138,16,64,117,112,6,5,5,115,104,97,114, -101,2,60,28,248,22,159,7,23,194,2,27,248,22,128,16,23,195,1,28,248, -22,145,16,23,194,2,192,249,22,146,16,23,195,1,27,247,80,144,47,54,42, -28,23,193,2,192,86,94,23,193,1,247,22,162,16,28,248,22,148,8,23,194, -2,27,248,22,129,16,23,195,1,28,248,22,145,16,23,194,2,192,249,22,146, -16,23,195,1,27,247,80,144,47,54,42,28,23,193,2,192,86,94,23,193,1, -247,22,162,16,28,248,22,184,15,23,194,2,28,248,22,145,16,23,194,2,192, -249,22,146,16,23,195,1,27,247,80,144,46,54,42,28,23,193,2,192,86,94, -23,193,1,247,22,162,16,192,250,22,97,248,22,92,11,28,247,22,169,16,28, -247,22,170,16,248,22,92,250,22,138,16,248,22,161,16,2,61,250,22,161,2, -23,204,2,2,59,247,22,177,8,2,60,9,9,28,247,22,170,16,250,80,144, -47,8,23,42,23,200,1,1,18,108,105,110,107,115,45,115,101,97,114,99,104, -45,102,105,108,101,115,248,22,92,23,200,1,9,248,22,180,13,23,194,1,249, -22,14,80,144,41,8,26,41,28,248,22,136,13,23,197,2,86,94,23,196,1, -32,0,88,148,8,36,39,44,11,9,222,11,20,20,94,88,148,8,36,39,46, -11,9,223,3,33,124,23,196,1,32,126,88,148,39,40,59,11,2,50,222,33, -127,90,144,42,11,89,146,42,39,11,248,22,141,16,23,197,1,86,95,23,195, -1,23,194,1,28,248,22,184,15,23,194,2,28,248,22,133,16,23,194,2,249, -22,151,6,23,195,1,32,0,88,148,8,36,39,44,11,9,222,11,90,144,42, -11,89,146,42,39,11,248,22,141,16,23,197,1,86,95,23,195,1,23,194,1, -28,248,22,184,15,23,194,2,28,248,22,133,16,23,194,2,249,22,151,6,23, -195,1,32,0,88,148,8,36,39,44,11,9,222,11,90,144,42,11,89,146,42, -39,11,248,22,141,16,23,197,1,86,95,23,195,1,23,194,1,28,248,22,184, -15,23,194,2,28,248,22,133,16,23,194,2,249,22,151,6,23,195,1,32,0, -88,148,8,36,39,44,11,9,222,11,90,144,42,11,89,146,42,39,11,248,22, -141,16,23,197,1,86,95,23,195,1,23,194,1,28,248,22,184,15,23,194,2, -28,248,22,133,16,23,194,2,249,22,151,6,23,195,1,32,0,88,148,8,36, -39,44,11,9,222,11,248,2,126,23,194,1,11,11,11,11,32,128,2,88,148, -8,36,40,58,11,2,50,222,33,129,2,27,249,22,169,6,8,128,128,23,196, -2,28,248,22,154,7,23,194,2,9,249,22,82,23,195,1,27,249,22,169,6, -8,128,128,23,199,2,28,248,22,154,7,23,194,2,9,249,22,82,23,195,1, -27,249,22,169,6,8,128,128,23,202,2,28,248,22,154,7,23,194,2,9,249, -22,82,23,195,1,27,249,22,169,6,8,128,128,23,205,2,28,248,22,154,7, -23,194,2,9,249,22,82,23,195,1,248,2,128,2,23,206,1,27,249,22,169, -6,8,128,128,23,196,2,28,248,22,148,8,23,194,2,28,249,22,164,20,248, -22,153,8,23,196,2,8,128,128,249,22,1,22,160,8,249,22,82,23,197,1, -27,249,22,169,6,8,128,128,23,201,2,28,248,22,154,7,23,194,2,9,249, -22,82,23,195,1,27,249,22,169,6,8,128,128,23,204,2,28,248,22,154,7, -23,194,2,9,249,22,82,23,195,1,27,249,22,169,6,8,128,128,23,207,2, -28,248,22,154,7,23,194,2,9,249,22,82,23,195,1,27,249,22,169,6,8, -128,128,23,210,2,28,248,22,154,7,23,194,2,9,249,22,82,23,195,1,248, -2,128,2,23,211,1,192,192,248,22,139,6,23,194,1,20,13,144,80,144,40, -8,28,40,80,144,40,8,46,42,27,28,249,22,131,9,248,22,186,8,2,62, -41,90,144,42,11,89,146,42,39,11,248,22,141,16,23,198,2,86,95,23,195, -1,23,194,1,28,248,22,184,15,23,194,2,28,248,22,133,16,23,194,2,249, -22,151,6,23,195,1,32,0,88,148,8,36,39,44,11,9,222,11,90,144,42, -11,89,146,42,39,11,248,22,141,16,23,197,1,86,95,23,195,1,23,194,1, -28,248,22,184,15,23,194,2,28,248,22,133,16,23,194,2,249,22,151,6,23, -195,1,32,0,88,148,8,36,39,44,11,9,222,11,90,144,42,11,89,146,42, -39,11,248,22,141,16,23,197,1,86,95,23,195,1,23,194,1,28,248,22,184, -15,23,194,2,28,248,22,133,16,23,194,2,249,22,151,6,23,195,1,32,0, -88,148,8,36,39,44,11,9,222,11,90,144,42,11,89,146,42,39,11,248,22, -141,16,23,197,1,86,95,23,195,1,23,194,1,28,248,22,184,15,23,194,2, -28,248,22,133,16,23,194,2,249,22,151,6,23,195,1,32,0,88,148,8,36, -39,44,11,9,222,11,248,2,126,23,194,1,11,11,11,11,11,28,248,22,132, -16,23,195,2,27,28,249,22,131,9,248,22,186,8,2,62,41,249,22,151,6, -23,197,2,32,0,88,148,8,36,39,44,11,9,222,11,11,86,94,28,23,194, -2,248,22,153,6,23,195,1,86,94,23,194,1,12,249,22,82,27,248,22,130, -6,23,199,1,250,22,44,22,35,88,148,39,39,8,24,11,9,223,3,33,130, -2,20,20,94,88,148,8,36,39,46,11,9,223,3,33,131,2,23,196,1,194, -249,22,82,11,194,28,28,23,195,2,28,248,22,84,23,196,2,248,22,173,9, -249,22,182,14,39,248,22,176,20,23,199,2,11,11,194,86,94,23,195,1,249, -22,12,20,20,94,88,148,8,32,39,61,16,4,39,8,128,80,8,240,0,64, -0,0,39,9,224,2,3,33,132,2,23,196,1,80,144,41,8,26,41,27,248, -22,173,9,194,28,192,192,248,22,173,9,248,22,83,195,86,95,28,248,22,157, -12,23,198,2,27,247,22,149,12,28,249,22,139,12,23,195,2,2,63,251,22, -145,12,23,197,1,2,63,250,22,143,8,6,42,42,101,114,114,111,114,32,114, -101,97,100,105,110,103,32,99,111,108,108,101,99,116,105,111,110,32,108,105,110, -107,115,32,102,105,108,101,32,126,115,58,32,126,97,23,201,2,248,22,153,12, -23,206,2,247,22,27,12,12,28,23,195,2,250,22,159,2,80,144,45,8,25, -41,23,196,1,249,22,82,23,200,1,21,17,0,0,86,95,23,195,1,23,193, -1,12,28,248,22,157,12,23,198,2,86,94,23,197,1,248,23,195,1,247,22, -141,2,196,88,148,39,40,58,8,240,0,0,0,2,9,226,0,3,2,1,33, -135,2,20,20,94,248,22,154,6,23,194,2,28,248,22,154,7,248,22,154,6, -23,195,1,12,248,22,184,11,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,139,6,23,194,1,28,248,22,91,193,28,28,249,22,133,4,41,248,22,96, -195,10,249,22,133,4,42,248,22,96,195,28,28,248,22,159,7,248,22,83,194, -10,28,249,22,175,9,2,64,248,22,83,195,10,249,22,175,9,2,65,248,22, -83,195,28,27,248,22,105,194,28,248,22,184,15,193,10,28,248,22,159,7,193, -28,248,22,143,16,193,10,248,22,144,16,193,11,27,248,22,90,248,22,107,195, -28,192,192,248,22,190,16,248,22,114,195,11,11,11,11,28,248,22,133,16,249, -22,138,16,23,197,2,23,198,2,27,248,22,70,248,22,188,15,23,198,1,250, -22,159,2,23,197,2,23,196,2,249,22,82,23,200,1,250,22,161,2,23,202, -1,23,201,1,9,12,250,22,159,2,23,196,1,23,198,1,249,22,82,23,199, -1,23,201,1,28,28,248,22,90,248,22,107,23,197,2,10,249,22,181,16,248, -22,114,23,198,2,247,22,177,8,27,248,22,148,16,249,22,146,16,248,22,105, -23,200,2,23,198,1,28,249,22,175,9,248,22,175,20,23,199,2,2,65,86, -94,23,196,1,249,22,3,20,20,94,88,148,8,36,40,56,11,9,224,2,3, -33,140,2,23,196,1,248,22,151,16,23,196,1,28,249,22,175,9,248,22,175, -20,23,199,2,2,64,86,94,23,196,1,86,94,28,250,22,161,2,23,197,2, -11,11,12,250,22,159,2,23,197,2,11,9,249,22,167,2,23,196,2,20,20, -95,88,148,8,36,41,53,11,9,224,2,3,33,141,2,23,196,1,23,195,1, -27,248,22,70,248,22,175,20,23,199,1,250,22,159,2,23,198,2,23,196,2, -249,22,82,248,22,132,2,23,200,1,250,22,161,2,23,203,1,23,201,1,9, -12,250,22,159,2,23,196,1,23,197,1,248,22,98,23,199,1,27,28,28,23, -195,2,248,22,173,9,248,22,83,23,197,2,10,9,27,249,22,130,6,23,197, -2,68,98,105,110,97,114,121,250,22,44,22,35,88,148,8,36,39,47,11,9, -223,3,33,137,2,20,20,94,88,148,8,36,39,46,11,9,223,3,33,138,2, -23,196,1,86,94,28,28,248,22,91,23,194,2,249,22,4,32,0,88,148,8, -36,40,48,11,9,222,33,139,2,23,195,2,11,12,248,22,184,11,6,18,18, -105,108,108,45,102,111,114,109,101,100,32,99,111,110,116,101,110,116,27,247,22, -141,2,27,90,144,42,11,89,146,42,39,11,248,22,141,16,23,200,2,192,86, -96,249,22,3,20,20,94,88,148,8,36,40,57,11,9,224,2,3,33,142,2, -23,195,1,23,197,1,249,22,167,2,195,88,148,8,36,41,51,11,9,223,3, -33,143,2,250,22,159,2,80,144,47,8,25,41,23,199,1,249,22,82,23,202, -1,198,193,20,13,144,80,144,40,8,28,40,250,80,144,43,8,47,42,23,196, -2,23,198,2,11,27,250,22,161,2,80,144,44,8,25,41,23,197,2,21,143, -11,17,0,0,27,248,22,83,23,195,2,27,249,80,144,45,8,27,42,23,198, -2,23,196,2,28,249,22,177,9,23,195,2,23,196,1,248,22,176,20,195,86, -94,23,195,1,20,13,144,80,144,43,8,28,40,250,80,144,46,8,47,42,23, -199,2,23,201,1,23,196,2,27,20,20,95,88,148,8,36,39,55,8,240,0, -0,0,2,9,225,5,1,4,33,144,2,23,197,1,23,194,1,28,249,22,48, -23,195,2,39,20,13,144,80,144,44,46,40,26,35,80,144,8,40,47,40,249, -22,31,11,80,144,8,42,46,40,22,151,15,10,22,152,15,10,22,153,15,10, -22,154,15,11,22,155,15,11,22,159,15,10,22,158,15,11,22,160,15,10,22, -157,15,10,22,161,15,10,22,156,15,11,22,162,15,10,22,163,15,10,22,164, -15,10,22,165,15,11,22,166,15,10,22,149,15,11,247,23,193,1,250,22,188, -11,2,9,2,52,23,196,1,248,22,8,20,20,94,88,148,39,40,8,49,16, -4,8,128,6,8,128,104,8,240,0,128,0,0,39,9,224,1,2,33,145,2, -23,195,1,0,7,35,114,120,34,47,43,34,28,248,22,159,7,23,195,2,27, -249,22,179,16,2,147,2,23,197,2,28,23,193,2,28,249,22,133,4,248,22, -104,23,196,2,248,22,187,3,248,22,162,7,23,199,2,249,22,7,250,22,181, -7,23,200,1,39,248,22,104,23,199,1,23,198,1,249,22,7,250,22,181,7, -23,200,2,39,248,22,104,23,199,2,249,22,82,249,22,181,7,23,201,1,248, -22,106,23,200,1,23,200,1,86,94,23,193,1,249,22,7,23,197,1,23,198, -1,90,144,42,11,89,146,42,39,11,248,22,141,16,23,198,1,86,94,23,195, -1,28,249,22,175,9,23,195,2,2,49,86,94,23,193,1,249,22,7,23,196, -1,23,200,1,27,249,22,82,23,197,1,23,201,1,28,248,22,159,7,23,195, -2,27,249,22,179,16,2,147,2,23,197,2,28,23,193,2,28,249,22,133,4, -248,22,104,23,196,2,248,22,187,3,248,22,162,7,23,199,2,249,22,7,250, -22,181,7,23,200,1,39,248,22,104,23,199,1,23,196,1,249,22,7,250,22, -181,7,23,200,2,39,248,22,104,23,199,2,249,22,82,249,22,181,7,23,201, -1,248,22,106,23,200,1,23,198,1,86,94,23,193,1,249,22,7,23,197,1, -23,196,1,90,144,42,11,89,146,42,39,11,248,22,141,16,23,198,1,86,94, -23,195,1,28,249,22,175,9,23,195,2,2,49,86,94,23,193,1,249,22,7, -23,196,1,23,198,1,249,80,144,48,8,31,42,194,249,22,82,197,199,28,248, -22,90,23,196,2,9,28,248,22,83,23,196,2,28,248,22,152,2,248,22,175, -20,23,197,2,250,22,97,249,22,2,22,132,2,250,22,161,2,248,22,175,20, -23,204,2,23,202,2,9,250,22,161,2,248,22,175,20,23,202,2,11,9,27, -248,22,176,20,23,200,1,28,248,22,90,23,194,2,9,28,248,22,83,23,194, -2,28,248,22,152,2,248,22,175,20,23,195,2,250,22,97,249,22,2,22,132, -2,250,22,161,2,248,22,175,20,23,202,2,23,206,2,9,250,22,161,2,248, -22,175,20,23,200,2,11,9,249,80,144,48,8,48,42,23,203,1,248,22,176, -20,23,199,1,27,248,80,144,45,8,30,42,248,22,175,20,23,196,2,250,22, -97,250,22,161,2,23,199,2,23,205,2,9,250,22,161,2,23,199,1,11,9, -249,80,144,49,8,48,42,23,204,1,248,22,176,20,23,200,1,249,22,97,247, -22,165,16,249,80,144,47,8,48,42,23,202,1,248,22,176,20,23,198,1,27, -248,80,144,41,8,30,42,248,22,175,20,23,198,2,250,22,97,250,22,161,2, -23,199,2,23,201,2,9,250,22,161,2,23,199,1,11,9,27,248,22,176,20, -23,201,1,28,248,22,90,23,194,2,9,28,248,22,83,23,194,2,28,248,22, -152,2,248,22,175,20,23,195,2,250,22,97,249,22,2,22,132,2,250,22,161, -2,248,22,175,20,23,202,2,23,207,2,9,250,22,161,2,248,22,175,20,23, -200,2,11,9,249,80,144,49,8,48,42,23,204,1,248,22,176,20,23,199,1, -27,248,80,144,46,8,30,42,248,22,175,20,23,196,2,250,22,97,250,22,161, -2,23,199,2,23,206,2,9,250,22,161,2,23,199,1,11,9,249,80,144,50, -8,48,42,23,205,1,248,22,176,20,23,200,1,249,22,97,247,22,165,16,249, -80,144,48,8,48,42,23,203,1,248,22,176,20,23,198,1,249,22,97,247,22, -165,16,27,248,22,176,20,23,199,1,28,248,22,90,23,194,2,9,28,248,22, -83,23,194,2,28,248,22,152,2,248,22,175,20,23,195,2,250,22,97,249,22, -2,22,132,2,250,22,161,2,248,22,175,20,23,202,2,23,205,2,9,250,22, -161,2,248,22,175,20,23,200,2,11,9,249,80,144,47,8,48,42,23,202,1, -248,22,176,20,23,199,1,27,248,80,144,44,8,30,42,248,22,175,20,23,196, -2,250,22,97,250,22,161,2,23,199,2,23,204,2,9,250,22,161,2,23,199, -1,11,9,249,80,144,48,8,48,42,23,203,1,248,22,176,20,23,200,1,249, -22,97,247,22,165,16,249,80,144,46,8,48,42,23,201,1,248,22,176,20,23, -198,1,32,150,2,88,148,8,36,41,52,11,2,50,222,33,151,2,28,248,22, -90,248,22,84,23,196,2,248,22,92,248,23,195,1,248,22,175,20,23,197,1, -250,22,93,248,23,197,2,248,22,175,20,23,199,2,2,67,249,2,150,2,23, -198,1,248,22,176,20,23,200,1,250,22,143,8,6,7,7,10,32,126,97,32, -126,97,6,1,1,32,23,196,1,249,22,143,8,6,6,6,10,32,32,32,126, -97,248,22,135,2,23,196,1,32,154,2,88,148,39,41,51,11,68,102,105,108, -116,101,114,222,33,155,2,28,248,22,90,23,195,2,9,28,248,23,194,2,248, -22,83,23,196,2,249,22,82,248,22,175,20,23,197,2,249,2,154,2,23,197, -1,248,22,176,20,23,199,1,249,2,154,2,23,195,1,248,22,176,20,23,197, -1,28,248,22,90,23,202,2,86,95,23,201,1,23,194,1,28,23,202,2,28, -194,249,22,138,16,203,196,201,86,95,23,202,1,23,195,1,27,28,248,22,90, -23,199,2,2,66,249,22,1,22,182,7,249,2,150,2,23,205,2,23,202,2, -248,23,198,1,251,22,143,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, -90,23,204,1,248,23,207,1,23,205,1,250,22,182,7,248,23,210,1,23,208, -1,2,67,23,201,2,249,22,1,22,182,7,249,22,2,32,0,88,148,8,36, -40,48,11,9,222,33,152,2,27,248,22,96,23,211,2,27,248,22,96,247,22, -165,16,28,249,22,134,4,249,22,189,3,23,198,2,23,197,2,44,23,211,2, -249,22,97,247,22,165,16,248,22,92,249,22,143,8,6,50,50,46,46,46,32, -91,126,97,32,97,100,100,105,116,105,111,110,97,108,32,108,105,110,107,101,100, -32,97,110,100,32,112,97,99,107,97,103,101,32,100,105,114,101,99,116,111,114, -105,101,115,93,249,22,189,3,23,201,1,23,200,1,28,249,22,5,22,134,2, -23,207,2,250,22,143,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,182,7,249,22,2,32,0,88,148,8,36,40,48,11,9,222,33,153, -2,249,2,154,2,22,134,2,23,214,1,86,95,23,205,1,23,198,1,2,66, -27,248,22,83,23,203,2,27,28,248,22,184,15,23,195,2,249,22,138,16,23, -196,1,23,202,2,248,22,135,2,23,195,1,28,28,248,22,184,15,248,22,175, -20,23,205,2,248,22,133,16,23,194,2,10,27,250,22,1,22,138,16,23,197, -1,23,203,2,28,28,248,22,90,23,201,2,10,248,22,133,16,23,194,2,28, -23,198,2,28,28,250,80,144,45,8,32,42,195,200,199,10,27,28,248,22,184, -15,199,248,22,188,15,199,198,19,248,22,162,7,23,195,2,27,28,249,22,164, -20,23,196,4,43,28,249,22,165,7,6,4,4,46,114,107,116,249,22,181,7, -23,199,2,249,22,189,3,23,200,4,43,249,22,182,7,250,22,181,7,23,200, -1,39,249,22,189,3,23,201,4,43,6,3,3,46,115,115,86,94,23,195,1, -11,86,94,23,195,1,11,28,23,193,2,250,80,144,48,8,32,42,198,23,196, -1,202,11,2,28,197,249,22,138,16,194,199,192,26,9,80,144,51,8,49,42, -205,206,23,15,23,16,23,17,23,18,23,19,248,22,176,20,23,21,28,23,21, -23,21,201,192,26,9,80,144,51,8,49,42,205,206,23,15,23,16,23,17,23, -18,23,19,248,22,176,20,23,21,23,21,26,9,80,144,50,8,49,42,204,205, -206,23,15,23,16,23,17,23,18,248,22,176,20,23,20,23,20,28,248,22,184, -15,193,248,22,188,15,193,192,90,144,41,11,89,146,41,39,11,249,80,144,43, -8,31,42,23,199,1,23,200,1,27,248,22,70,28,248,22,184,15,195,248,22, -188,15,195,194,27,27,247,22,166,16,28,248,22,90,23,194,2,9,28,248,22, -83,23,194,2,28,248,22,152,2,248,22,175,20,23,195,2,250,22,97,249,22, -2,22,132,2,250,22,161,2,248,22,175,20,23,202,2,23,203,2,9,250,22, -161,2,248,22,175,20,23,200,2,11,9,249,80,144,49,8,48,42,23,200,1, -248,22,176,20,23,199,1,27,248,80,144,46,8,30,42,248,22,175,20,23,196, -2,250,22,97,250,22,161,2,23,199,2,23,202,2,9,250,22,161,2,23,199, -1,11,9,249,80,144,50,8,48,42,23,201,1,248,22,176,20,23,200,1,249, -22,97,247,22,165,16,249,80,144,48,8,48,42,23,199,1,248,22,176,20,23, -198,1,27,32,0,88,148,8,36,40,46,11,71,116,111,45,115,116,114,105,110, -103,222,33,157,2,26,9,80,144,53,8,49,42,23,19,23,18,23,15,205,204, -202,201,202,11,32,159,2,88,148,8,36,42,59,11,2,50,222,33,160,2,28, -248,22,138,4,23,196,2,86,94,23,195,1,19,248,22,153,8,23,196,2,19, -248,22,153,8,23,197,2,249,22,130,16,27,251,22,160,8,250,22,159,8,23, -206,2,39,23,204,4,2,51,249,22,159,8,23,205,1,23,202,4,2,68,28, -249,22,160,20,248,22,153,8,23,196,2,39,86,94,23,193,1,251,22,190,11, -2,37,2,69,2,70,201,192,28,248,22,185,15,197,248,22,186,15,197,247,22, -187,15,2,2,27,248,22,187,3,23,197,1,28,249,22,175,9,8,46,249,22, -154,8,23,199,2,23,197,2,249,22,130,16,27,251,22,160,8,250,22,159,8, -23,205,2,39,23,203,2,2,71,249,22,159,8,23,204,1,248,22,186,3,23, -203,1,2,68,28,249,22,160,20,248,22,153,8,23,196,2,39,86,94,23,193, -1,251,22,190,11,2,37,2,69,2,70,200,192,28,248,22,185,15,196,248,22, -186,15,196,247,22,187,15,250,2,159,2,196,197,195,248,22,132,16,27,250,22, -138,16,23,198,1,23,202,1,23,199,1,28,249,22,175,9,23,199,2,66,115, -97,109,101,192,28,248,22,143,16,23,198,2,249,22,138,16,194,198,249,80,144, -46,42,42,23,195,1,23,199,1,249,22,5,20,20,96,88,148,39,40,54,47, -9,226,5,6,3,2,33,161,2,23,195,1,23,196,1,23,199,1,23,197,1, -27,248,22,132,16,249,22,138,16,23,198,2,23,199,2,28,23,193,2,192,86, -94,23,193,1,28,23,197,1,27,90,144,41,11,89,146,41,39,11,250,80,144, -46,8,34,42,23,202,2,2,68,2,37,27,248,22,190,15,23,196,1,27,250, -2,159,2,23,204,1,23,197,2,248,22,153,8,23,198,1,28,248,22,185,15, -195,249,22,138,16,196,194,192,27,247,22,167,16,249,22,5,20,20,96,88,148, -39,40,51,47,9,226,5,2,3,6,33,162,2,23,199,1,23,196,1,23,195, -1,247,22,168,16,11,86,95,28,28,248,22,185,15,23,194,2,10,28,248,22, -184,15,23,194,2,10,28,248,22,159,7,23,194,2,28,248,22,143,16,23,194, -2,10,248,22,144,16,23,194,2,11,12,252,22,188,11,23,200,2,2,42,39, -23,198,2,23,199,2,28,28,248,22,159,7,23,195,2,10,248,22,148,8,23, -195,2,86,94,23,194,1,12,252,22,188,11,23,200,2,2,72,40,23,198,2, -23,199,1,90,144,42,11,89,146,42,39,11,248,22,141,16,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,191, -11,23,201,1,2,73,23,199,1,249,22,7,23,195,1,23,196,1,32,165,2, -88,148,8,36,46,61,11,2,74,222,33,166,2,249,22,130,16,27,251,22,160, -8,250,22,159,8,23,206,2,39,23,207,1,23,205,1,249,23,204,1,23,205, -1,23,208,1,28,248,22,159,7,23,201,2,249,22,174,8,23,202,1,8,63, -23,200,1,28,249,22,160,20,248,22,153,8,23,196,2,39,86,94,23,193,1, -251,22,190,11,2,37,2,69,2,70,200,192,28,248,22,185,15,196,248,22,186, -15,196,247,22,187,15,32,167,2,88,148,8,36,45,8,24,11,2,50,222,33, -168,2,28,248,22,138,4,23,199,2,86,95,23,198,1,23,196,1,19,248,22, -153,8,23,199,2,19,248,22,153,8,23,200,2,249,22,130,16,27,251,22,160, -8,250,22,159,8,23,209,2,39,23,204,4,2,51,249,23,206,1,23,208,1, -23,202,4,28,248,22,159,7,23,203,2,249,22,174,8,23,204,1,8,63,23, -202,1,28,249,22,160,20,248,22,153,8,23,196,2,39,86,94,23,193,1,251, -22,190,11,2,37,2,69,2,70,202,192,28,248,22,185,15,198,248,22,186,15, -198,247,22,187,15,2,2,27,248,22,187,3,23,200,1,28,249,22,175,9,8, -46,249,22,154,8,23,202,2,23,197,2,249,22,130,16,27,251,22,160,8,250, -22,159,8,23,208,2,39,23,203,2,23,204,1,249,23,205,1,23,207,1,248, -22,186,3,23,203,1,28,248,22,159,7,23,202,2,249,22,174,8,23,203,1, -8,63,23,201,1,28,249,22,160,20,248,22,153,8,23,196,2,39,86,94,23, -193,1,251,22,190,11,2,37,2,69,2,70,201,192,28,248,22,185,15,197,248, -22,186,15,197,247,22,187,15,28,248,22,138,4,23,194,2,86,95,23,197,1, -23,193,1,19,248,22,153,8,23,200,2,19,248,22,153,8,23,201,2,249,22, -130,16,27,251,22,160,8,250,22,159,8,23,210,2,39,23,204,4,2,51,249, -23,207,1,23,209,1,23,202,4,28,248,22,159,7,23,204,2,249,22,174,8, -23,205,1,8,63,23,203,1,28,249,22,160,20,248,22,153,8,23,196,2,39, -86,94,23,193,1,251,22,190,11,2,37,2,69,2,70,203,192,28,248,22,185, -15,199,248,22,186,15,199,247,22,187,15,2,2,27,248,22,187,3,23,195,1, -28,249,22,175,9,8,46,249,22,154,8,23,203,2,23,197,2,249,22,130,16, -27,251,22,160,8,250,22,159,8,23,209,2,39,23,203,2,23,205,1,249,23, -206,1,23,208,1,248,22,186,3,23,203,1,28,248,22,159,7,23,203,2,249, -22,174,8,23,204,1,8,63,23,202,1,28,249,22,160,20,248,22,153,8,23, -196,2,39,86,94,23,193,1,251,22,190,11,2,37,2,69,2,70,202,192,28, -248,22,185,15,198,248,22,186,15,198,247,22,187,15,28,248,22,138,4,193,254, -2,165,2,201,202,203,205,248,22,153,8,206,2,51,248,22,153,8,206,27,248, -22,187,3,194,28,249,22,175,9,8,46,249,22,154,8,203,196,254,2,165,2, -202,203,204,206,199,205,248,22,186,3,200,253,2,167,2,201,202,203,204,205,198, -90,144,41,11,89,146,41,39,11,86,95,28,28,248,22,185,15,23,199,2,10, -28,248,22,184,15,23,199,2,10,28,248,22,159,7,23,199,2,28,248,22,143, -16,23,199,2,10,248,22,144,16,23,199,2,11,12,252,22,188,11,23,200,2, -2,42,39,23,203,2,23,204,2,28,28,248,22,159,7,23,200,2,10,248,22, -148,8,23,200,2,12,252,22,188,11,23,200,2,2,72,40,23,203,2,23,204, -2,90,144,42,11,89,146,42,39,11,248,22,141,16,23,202,2,86,94,23,195, -1,86,94,28,192,12,250,22,191,11,23,201,1,2,73,23,204,2,249,22,7, -194,195,27,248,22,190,15,23,196,1,27,19,248,22,153,8,23,196,2,28,249, -22,160,20,23,195,4,39,86,94,23,199,1,19,248,22,153,8,23,197,2,19, -248,22,153,8,23,198,2,249,22,130,16,27,251,22,160,8,250,22,159,8,23, -207,2,39,23,204,4,2,51,249,23,211,1,23,206,1,23,202,4,28,248,22, -159,7,23,212,2,249,22,174,8,23,213,1,8,63,23,211,1,28,249,22,160, -20,248,22,153,8,23,196,2,39,86,94,23,193,1,251,22,190,11,2,37,2, -69,2,70,23,17,192,28,248,22,185,15,205,248,22,186,15,205,247,22,187,15, -2,2,27,248,22,187,3,23,195,4,28,249,22,175,9,8,46,249,22,154,8, -23,200,2,23,197,2,249,22,130,16,27,251,22,160,8,250,22,159,8,23,206, -2,39,23,203,2,23,207,1,249,23,210,1,23,205,1,248,22,186,3,23,203, -1,28,248,22,159,7,23,211,2,249,22,174,8,23,212,1,8,63,23,210,1, -28,249,22,160,20,248,22,153,8,23,196,2,39,86,94,23,193,1,251,22,190, -11,2,37,2,69,2,70,23,16,192,28,248,22,185,15,204,248,22,186,15,204, -247,22,187,15,28,248,22,138,4,23,194,2,86,95,23,200,1,23,193,1,254, -2,165,2,23,210,1,23,209,1,23,208,1,23,203,2,248,22,153,8,23,204, -2,2,51,248,22,153,8,23,204,1,27,248,22,187,3,23,195,1,28,249,22, -175,9,8,46,249,22,154,8,23,201,2,23,197,2,254,2,165,2,23,211,1, -23,210,1,23,209,1,23,204,1,23,200,2,23,208,1,248,22,186,3,23,201, -1,253,2,167,2,23,210,1,23,209,1,23,208,1,23,207,1,23,203,1,23, -199,1,2,28,248,22,185,15,195,249,22,138,16,196,194,192,32,170,2,88,148, -8,36,43,60,11,2,50,222,33,173,2,32,171,2,88,148,8,36,45,60,11, -2,74,222,33,172,2,86,94,23,198,1,249,22,130,16,27,251,22,160,8,250, -22,159,8,23,205,1,39,23,206,1,23,204,1,2,51,28,248,22,159,7,23, -201,2,249,22,174,8,23,202,1,8,63,23,200,1,28,249,22,160,20,248,22, -153,8,23,196,2,39,86,94,23,193,1,251,22,190,11,2,37,2,69,2,70, -200,192,28,248,22,185,15,196,248,22,186,15,196,247,22,187,15,28,248,22,138, -4,23,197,2,86,94,23,196,1,19,248,22,153,8,23,197,2,35,248,22,153, -8,23,198,2,249,22,130,16,27,251,22,160,8,250,22,159,8,23,207,1,39, -23,204,4,2,51,2,51,28,248,22,159,7,23,203,2,249,22,174,8,23,204, -1,8,63,23,202,1,28,249,22,160,20,248,22,153,8,23,196,2,39,86,94, -23,193,1,251,22,190,11,2,37,2,69,2,70,202,192,28,248,22,185,15,198, -248,22,186,15,198,247,22,187,15,2,27,248,22,187,3,23,198,1,28,249,22, -175,9,8,46,249,22,154,8,23,200,2,23,197,2,249,22,130,16,27,251,22, -160,8,250,22,159,8,23,206,1,39,23,203,1,2,51,2,51,28,248,22,159, -7,23,202,2,249,22,174,8,23,203,1,8,63,23,201,1,28,249,22,160,20, -248,22,153,8,23,196,2,39,86,94,23,193,1,251,22,190,11,2,37,2,69, -2,70,201,192,28,248,22,185,15,197,248,22,186,15,197,247,22,187,15,28,248, -22,138,4,193,253,2,171,2,199,200,201,248,22,153,8,202,2,51,248,22,153, -8,202,27,248,22,187,3,194,28,249,22,175,9,8,46,249,22,154,8,200,196, -253,2,171,2,200,201,202,198,2,51,248,22,186,3,199,251,2,170,2,198,199, -200,196,90,144,41,11,89,146,41,39,11,86,95,28,28,248,22,185,15,23,196, -2,10,28,248,22,184,15,23,196,2,10,28,248,22,159,7,23,196,2,28,248, -22,143,16,23,196,2,10,248,22,144,16,23,196,2,11,12,252,22,188,11,2, -37,2,42,39,23,200,2,23,201,2,28,28,248,22,159,7,23,197,2,10,248, -22,148,8,23,197,2,12,252,22,188,11,2,37,2,72,40,23,200,2,23,201, -2,90,144,42,11,89,146,42,39,11,248,22,141,16,23,199,2,86,94,23,195, -1,86,94,28,192,12,250,22,191,11,2,37,2,73,23,201,2,249,22,7,194, -195,27,248,22,190,15,23,196,1,27,251,2,170,2,23,202,1,23,201,1,23, -198,2,248,22,153,8,23,199,1,28,248,22,185,15,195,249,22,138,16,196,194, -192,32,175,2,88,148,8,36,43,60,11,2,50,222,33,178,2,32,176,2,88, -148,8,36,45,60,11,2,74,222,33,177,2,249,22,130,16,27,251,22,160,8, -250,22,159,8,23,205,2,39,23,206,1,23,204,1,249,22,159,8,23,204,1, -23,207,1,28,248,22,159,7,23,201,2,249,22,174,8,23,202,1,8,63,23, -200,1,28,249,22,160,20,248,22,153,8,23,196,2,39,86,94,23,193,1,251, -22,190,11,2,37,2,69,2,70,200,192,28,248,22,185,15,196,248,22,186,15, -196,247,22,187,15,28,248,22,138,4,23,197,2,86,94,23,196,1,19,248,22, -153,8,23,197,2,19,248,22,153,8,23,198,2,249,22,130,16,27,251,22,160, -8,250,22,159,8,23,207,2,39,23,204,4,2,51,249,22,159,8,23,206,1, -23,202,4,28,248,22,159,7,23,203,2,249,22,174,8,23,204,1,8,63,23, -202,1,28,249,22,160,20,248,22,153,8,23,196,2,39,86,94,23,193,1,251, -22,190,11,2,37,2,69,2,70,202,192,28,248,22,185,15,198,248,22,186,15, -198,247,22,187,15,2,2,27,248,22,187,3,23,198,1,28,249,22,175,9,8, -46,249,22,154,8,23,200,2,23,197,2,249,22,130,16,27,251,22,160,8,250, -22,159,8,23,206,2,39,23,203,2,2,71,249,22,159,8,23,205,1,248,22, -186,3,23,203,1,28,248,22,159,7,23,202,2,249,22,174,8,23,203,1,8, -63,23,201,1,28,249,22,160,20,248,22,153,8,23,196,2,39,86,94,23,193, -1,251,22,190,11,2,37,2,69,2,70,201,192,28,248,22,185,15,197,248,22, -186,15,197,247,22,187,15,28,248,22,138,4,193,253,2,176,2,199,200,201,248, -22,153,8,202,2,51,248,22,153,8,202,27,248,22,187,3,194,28,249,22,175, -9,8,46,249,22,154,8,200,196,253,2,176,2,200,201,202,198,2,71,248,22, -186,3,199,251,2,175,2,198,199,200,196,90,144,41,11,89,146,41,39,11,86, -95,28,28,248,22,185,15,23,196,2,10,28,248,22,184,15,23,196,2,10,28, -248,22,159,7,23,196,2,28,248,22,143,16,23,196,2,10,248,22,144,16,23, -196,2,11,12,252,22,188,11,2,37,2,42,39,23,200,2,23,201,2,28,28, -248,22,159,7,23,197,2,10,248,22,148,8,23,197,2,12,252,22,188,11,2, -37,2,72,40,23,200,2,23,201,2,90,144,42,11,89,146,42,39,11,248,22, -141,16,23,199,2,86,94,23,195,1,86,94,28,192,12,250,22,191,11,2,37, -2,73,23,201,2,249,22,7,194,195,27,248,22,190,15,23,196,1,27,251,2, -175,2,23,202,1,23,201,1,23,198,2,248,22,153,8,23,199,1,28,248,22, -185,15,195,249,22,138,16,196,194,192,249,247,22,182,5,23,195,1,11,249,247, -22,182,5,194,11,28,248,22,90,23,195,2,9,27,27,248,22,83,23,197,2, -28,248,22,145,16,23,194,2,248,22,148,16,23,194,1,28,248,22,144,16,23, -194,2,90,144,42,11,89,146,42,39,11,248,22,141,16,249,22,146,16,250,80, -144,50,43,42,248,22,161,16,2,56,11,11,248,22,161,16,2,57,86,95,23, -195,1,23,194,1,248,22,148,16,249,22,146,16,23,199,1,23,196,1,27,250, -80,144,45,43,42,248,22,161,16,2,56,23,197,1,10,28,23,193,2,248,22, -148,16,23,194,1,11,28,23,193,2,249,22,82,248,22,148,16,249,22,146,16, -23,198,1,247,22,162,16,27,248,22,176,20,23,199,1,28,248,22,90,23,194, -2,9,27,248,80,144,45,56,42,248,22,83,23,196,2,28,23,193,2,249,22, -82,248,22,148,16,249,22,146,16,23,198,1,247,22,162,16,248,80,144,47,8, -50,42,248,22,176,20,23,198,1,86,94,23,193,1,248,80,144,45,8,50,42, -248,22,176,20,23,196,1,86,94,23,193,1,27,248,22,176,20,23,197,1,28, -248,22,90,23,194,2,9,27,248,80,144,43,56,42,248,22,83,23,196,2,28, -23,193,2,249,22,82,248,22,148,16,249,22,146,16,23,198,1,247,22,162,16, -248,80,144,45,8,50,42,248,22,176,20,23,198,1,86,94,23,193,1,248,80, -144,43,8,50,42,248,22,176,20,23,196,1,28,248,22,90,23,195,2,9,27, +80,144,49,8,44,42,23,204,1,248,22,176,20,23,198,1,249,22,97,23,196, +2,27,248,22,176,20,23,199,1,28,248,22,90,23,194,2,9,28,248,22,83, +23,194,2,249,22,82,248,80,144,45,60,42,248,22,175,20,23,197,2,27,248, +22,176,20,23,197,1,28,248,22,90,23,194,2,9,28,248,22,83,23,194,2, +249,22,82,248,80,144,48,60,42,248,22,175,20,23,197,2,249,80,144,49,8, +44,42,23,204,1,248,22,176,20,23,198,1,249,22,97,23,202,2,249,80,144, +49,8,44,42,23,204,1,248,22,176,20,23,198,1,249,22,97,23,199,2,27, +248,22,176,20,23,197,1,28,248,22,90,23,194,2,9,28,248,22,83,23,194, +2,249,22,82,248,80,144,48,60,42,248,22,175,20,23,197,2,249,80,144,49, +8,44,42,23,204,1,248,22,176,20,23,198,1,249,22,97,23,202,2,249,80, +144,49,8,44,42,23,204,1,248,22,176,20,23,198,1,27,250,22,161,2,23, +198,1,23,199,1,11,28,192,249,80,144,42,8,44,42,198,194,196,27,248,22, +161,16,2,58,28,248,22,145,16,23,194,2,248,22,148,16,23,194,1,28,248, +22,144,16,23,194,2,90,144,42,11,89,146,42,39,11,248,22,141,16,249,22, +146,16,250,80,144,49,43,42,248,22,161,16,2,56,11,11,248,22,161,16,2, +57,86,95,23,195,1,23,194,1,248,22,148,16,249,22,146,16,23,199,1,23, +196,1,27,250,80,144,44,43,42,248,22,161,16,2,56,23,197,1,10,28,23, +193,2,248,22,148,16,23,194,1,11,27,248,80,144,41,58,42,249,80,144,43, +55,40,40,80,144,43,8,45,42,27,27,250,22,161,2,23,198,2,72,108,105, +110,107,115,45,102,105,108,101,11,27,28,23,194,2,23,194,1,86,94,23,194, +1,249,22,138,16,27,250,22,161,2,23,202,2,71,115,104,97,114,101,45,100, +105,114,11,28,192,192,249,22,138,16,64,117,112,6,5,5,115,104,97,114,101, +2,60,28,248,22,159,7,23,194,2,27,248,22,128,16,23,195,1,28,248,22, +145,16,23,194,2,192,249,22,146,16,23,195,1,27,247,80,144,47,54,42,28, +23,193,2,192,86,94,23,193,1,247,22,162,16,28,248,22,148,8,23,194,2, +27,248,22,129,16,23,195,1,28,248,22,145,16,23,194,2,192,249,22,146,16, +23,195,1,27,247,80,144,47,54,42,28,23,193,2,192,86,94,23,193,1,247, +22,162,16,28,248,22,184,15,23,194,2,28,248,22,145,16,23,194,2,192,249, +22,146,16,23,195,1,27,247,80,144,46,54,42,28,23,193,2,192,86,94,23, +193,1,247,22,162,16,192,250,22,97,248,22,92,11,28,247,22,169,16,28,247, +22,170,16,248,22,92,250,22,138,16,248,22,161,16,2,61,250,22,161,2,23, +204,2,2,59,247,22,177,8,2,60,9,9,28,247,22,170,16,250,80,144,47, +8,23,42,23,200,1,1,18,108,105,110,107,115,45,115,101,97,114,99,104,45, +102,105,108,101,115,248,22,92,23,200,1,9,248,22,180,13,23,194,1,249,22, +14,80,144,41,8,26,41,28,248,22,136,13,23,197,2,86,94,23,196,1,32, +0,88,148,8,36,39,44,11,9,222,11,20,20,94,88,148,8,36,39,46,11, +9,223,3,33,121,23,196,1,32,123,88,148,39,40,59,11,2,50,222,33,124, +90,144,42,11,89,146,42,39,11,248,22,141,16,23,197,1,86,95,23,195,1, +23,194,1,28,248,22,184,15,23,194,2,28,248,22,133,16,23,194,2,249,22, +151,6,23,195,1,32,0,88,148,8,36,39,44,11,9,222,11,90,144,42,11, +89,146,42,39,11,248,22,141,16,23,197,1,86,95,23,195,1,23,194,1,28, +248,22,184,15,23,194,2,28,248,22,133,16,23,194,2,249,22,151,6,23,195, +1,32,0,88,148,8,36,39,44,11,9,222,11,90,144,42,11,89,146,42,39, +11,248,22,141,16,23,197,1,86,95,23,195,1,23,194,1,28,248,22,184,15, +23,194,2,28,248,22,133,16,23,194,2,249,22,151,6,23,195,1,32,0,88, +148,8,36,39,44,11,9,222,11,90,144,42,11,89,146,42,39,11,248,22,141, +16,23,197,1,86,95,23,195,1,23,194,1,28,248,22,184,15,23,194,2,28, +248,22,133,16,23,194,2,249,22,151,6,23,195,1,32,0,88,148,8,36,39, +44,11,9,222,11,248,2,123,23,194,1,11,11,11,11,32,125,88,148,8,36, +40,58,11,2,50,222,33,126,27,249,22,169,6,8,128,128,23,196,2,28,248, +22,154,7,23,194,2,9,249,22,82,23,195,1,27,249,22,169,6,8,128,128, +23,199,2,28,248,22,154,7,23,194,2,9,249,22,82,23,195,1,27,249,22, +169,6,8,128,128,23,202,2,28,248,22,154,7,23,194,2,9,249,22,82,23, +195,1,27,249,22,169,6,8,128,128,23,205,2,28,248,22,154,7,23,194,2, +9,249,22,82,23,195,1,248,2,125,23,206,1,27,249,22,169,6,8,128,128, +23,196,2,28,248,22,148,8,23,194,2,28,249,22,164,20,248,22,155,21,23, +196,2,8,128,128,249,22,1,22,160,8,249,22,82,23,197,1,27,249,22,169, +6,8,128,128,23,201,2,28,248,22,154,7,23,194,2,9,249,22,82,23,195, +1,27,249,22,169,6,8,128,128,23,204,2,28,248,22,154,7,23,194,2,9, +249,22,82,23,195,1,27,249,22,169,6,8,128,128,23,207,2,28,248,22,154, +7,23,194,2,9,249,22,82,23,195,1,27,249,22,169,6,8,128,128,23,210, +2,28,248,22,154,7,23,194,2,9,249,22,82,23,195,1,248,2,125,23,211, +1,192,192,248,22,139,6,23,194,1,20,13,144,80,144,40,8,28,40,80,144, +40,8,46,42,27,28,249,22,131,9,248,22,186,8,2,62,41,90,144,42,11, +89,146,42,39,11,248,22,141,16,23,198,2,86,95,23,195,1,23,194,1,28, +248,22,184,15,23,194,2,28,248,22,133,16,23,194,2,249,22,151,6,23,195, +1,32,0,88,148,8,36,39,44,11,9,222,11,90,144,42,11,89,146,42,39, +11,248,22,141,16,23,197,1,86,95,23,195,1,23,194,1,28,248,22,184,15, +23,194,2,28,248,22,133,16,23,194,2,249,22,151,6,23,195,1,32,0,88, +148,8,36,39,44,11,9,222,11,90,144,42,11,89,146,42,39,11,248,22,141, +16,23,197,1,86,95,23,195,1,23,194,1,28,248,22,184,15,23,194,2,28, +248,22,133,16,23,194,2,249,22,151,6,23,195,1,32,0,88,148,8,36,39, +44,11,9,222,11,90,144,42,11,89,146,42,39,11,248,22,141,16,23,197,1, +86,95,23,195,1,23,194,1,28,248,22,184,15,23,194,2,28,248,22,133,16, +23,194,2,249,22,151,6,23,195,1,32,0,88,148,8,36,39,44,11,9,222, +11,248,2,123,23,194,1,11,11,11,11,11,28,248,22,132,16,23,195,2,27, +28,249,22,131,9,248,22,186,8,2,62,41,249,22,151,6,23,197,2,32,0, +88,148,8,36,39,44,11,9,222,11,11,86,94,28,23,194,2,248,22,153,6, +23,195,1,86,94,23,194,1,12,249,22,82,27,248,22,130,6,23,199,1,250, +22,44,22,35,88,148,39,39,8,24,11,9,223,3,33,127,20,20,94,88,148, +8,36,39,46,11,9,223,3,33,128,2,23,196,1,194,249,22,82,11,194,28, +28,23,195,2,28,248,22,84,23,196,2,248,22,173,9,249,22,182,14,39,248, +22,176,20,23,199,2,11,11,194,86,94,23,195,1,249,22,12,20,20,94,88, +148,8,32,39,61,16,4,39,8,128,80,8,240,0,64,0,0,39,9,224,2, +3,33,129,2,23,196,1,80,144,41,8,26,41,27,248,22,173,9,194,28,192, +192,248,22,173,9,248,22,83,195,86,95,28,248,22,157,12,23,198,2,27,247, +22,149,12,28,249,22,139,12,23,195,2,2,63,251,22,145,12,23,197,1,2, +63,250,22,143,8,6,42,42,101,114,114,111,114,32,114,101,97,100,105,110,103, +32,99,111,108,108,101,99,116,105,111,110,32,108,105,110,107,115,32,102,105,108, +101,32,126,115,58,32,126,97,23,201,2,248,22,153,12,23,206,2,247,22,27, +12,12,28,23,195,2,250,22,159,2,80,144,45,8,25,41,23,196,1,249,22, +82,23,200,1,21,17,0,0,86,95,23,195,1,23,193,1,12,28,248,22,157, +12,23,198,2,86,94,23,197,1,248,23,195,1,247,22,141,2,196,88,148,39, +40,58,8,240,0,0,0,2,9,226,0,3,2,1,33,132,2,20,20,94,248, +22,154,6,23,194,2,28,248,22,154,7,248,22,154,6,23,195,1,12,248,22, +184,11,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,139,6,23,194,1, +28,248,22,91,193,28,28,249,22,133,4,41,248,22,96,195,10,249,22,133,4, +42,248,22,96,195,28,28,248,22,159,7,248,22,83,194,10,28,249,22,175,9, +2,64,248,22,83,195,10,249,22,175,9,2,65,248,22,83,195,28,27,248,22, +105,194,28,248,22,184,15,193,10,28,248,22,159,7,193,28,248,22,143,16,193, +10,248,22,144,16,193,11,27,248,22,90,248,22,107,195,28,192,192,248,22,190, +16,248,22,114,195,11,11,11,11,28,248,22,133,16,249,22,138,16,23,197,2, +23,198,2,27,248,22,70,248,22,188,15,23,198,1,250,22,159,2,23,197,2, +23,196,2,249,22,82,23,200,1,250,22,161,2,23,202,1,23,201,1,9,12, +250,22,159,2,23,196,1,23,198,1,249,22,82,23,199,1,23,201,1,28,28, +248,22,90,248,22,107,23,197,2,10,249,22,181,16,248,22,114,23,198,2,247, +22,177,8,27,248,22,148,16,249,22,146,16,248,22,105,23,200,2,23,198,1, +28,249,22,175,9,248,22,175,20,23,199,2,2,65,86,94,23,196,1,249,22, +3,20,20,94,88,148,8,36,40,56,11,9,224,2,3,33,137,2,23,196,1, +248,22,151,16,23,196,1,28,249,22,175,9,248,22,175,20,23,199,2,2,64, +86,94,23,196,1,86,94,28,250,22,161,2,23,197,2,11,11,12,250,22,159, +2,23,197,2,11,9,249,22,167,2,23,196,2,20,20,95,88,148,8,36,41, +53,11,9,224,2,3,33,138,2,23,196,1,23,195,1,27,248,22,70,248,22, +175,20,23,199,1,250,22,159,2,23,198,2,23,196,2,249,22,82,248,22,132, +2,23,200,1,250,22,161,2,23,203,1,23,201,1,9,12,250,22,159,2,23, +196,1,23,197,1,248,22,98,23,199,1,27,28,28,23,195,2,248,22,173,9, +248,22,83,23,197,2,10,9,27,249,22,130,6,23,197,2,68,98,105,110,97, +114,121,250,22,44,22,35,88,148,8,36,39,47,11,9,223,3,33,134,2,20, +20,94,88,148,8,36,39,46,11,9,223,3,33,135,2,23,196,1,86,94,28, +28,248,22,91,23,194,2,249,22,4,32,0,88,148,8,36,40,48,11,9,222, +33,136,2,23,195,2,11,12,248,22,184,11,6,18,18,105,108,108,45,102,111, +114,109,101,100,32,99,111,110,116,101,110,116,27,247,22,141,2,27,90,144,42, +11,89,146,42,39,11,248,22,141,16,23,200,2,192,86,96,249,22,3,20,20, +94,88,148,8,36,40,57,11,9,224,2,3,33,139,2,23,195,1,23,197,1, +249,22,167,2,195,88,148,8,36,41,51,11,9,223,3,33,140,2,250,22,159, +2,80,144,47,8,25,41,23,199,1,249,22,82,23,202,1,198,193,20,13,144, +80,144,40,8,28,40,250,80,144,43,8,47,42,23,196,2,23,198,2,11,27, +250,22,161,2,80,144,44,8,25,41,23,197,2,21,143,11,17,0,0,27,248, +22,83,23,195,2,27,249,80,144,45,8,27,42,23,198,2,23,196,2,28,249, +22,177,9,23,195,2,23,196,1,248,22,176,20,195,86,94,23,195,1,20,13, +144,80,144,43,8,28,40,250,80,144,46,8,47,42,23,199,2,23,201,1,23, +196,2,27,20,20,95,88,148,8,36,39,55,8,240,0,0,0,2,9,225,5, +1,4,33,141,2,23,197,1,23,194,1,28,249,22,48,23,195,2,39,20,13, +144,80,144,44,46,40,26,35,80,144,8,40,47,40,249,22,31,11,80,144,8, +42,46,40,22,151,15,10,22,152,15,10,22,153,15,10,22,154,15,11,22,155, +15,11,22,159,15,10,22,158,15,11,22,160,15,10,22,157,15,10,22,161,15, +10,22,156,15,11,22,162,15,10,22,163,15,10,22,164,15,10,22,165,15,11, +22,166,15,10,22,149,15,11,247,23,193,1,250,22,188,11,2,9,2,52,23, +196,1,248,22,8,20,20,94,88,148,39,40,8,49,16,4,8,128,6,8,128, +104,8,240,0,128,0,0,39,9,224,1,2,33,142,2,23,195,1,0,7,35, +114,120,34,47,43,34,28,248,22,159,7,23,195,2,27,249,22,179,16,2,144, +2,23,197,2,28,23,193,2,28,249,22,133,4,248,22,104,23,196,2,248,22, +187,3,248,22,162,7,23,199,2,249,22,7,250,22,181,7,23,200,1,39,248, +22,104,23,199,1,23,198,1,249,22,7,250,22,181,7,23,200,2,39,248,22, +104,23,199,2,249,22,82,249,22,181,7,23,201,1,248,22,106,23,200,1,23, +200,1,86,94,23,193,1,249,22,7,23,197,1,23,198,1,90,144,42,11,89, +146,42,39,11,248,22,141,16,23,198,1,86,94,23,195,1,28,249,22,175,9, +23,195,2,2,49,86,94,23,193,1,249,22,7,23,196,1,23,200,1,27,249, +22,82,23,197,1,23,201,1,28,248,22,159,7,23,195,2,27,249,22,179,16, +2,144,2,23,197,2,28,23,193,2,28,249,22,133,4,248,22,104,23,196,2, +248,22,187,3,248,22,162,7,23,199,2,249,22,7,250,22,181,7,23,200,1, +39,248,22,104,23,199,1,23,196,1,249,22,7,250,22,181,7,23,200,2,39, +248,22,104,23,199,2,249,22,82,249,22,181,7,23,201,1,248,22,106,23,200, +1,23,198,1,86,94,23,193,1,249,22,7,23,197,1,23,196,1,90,144,42, +11,89,146,42,39,11,248,22,141,16,23,198,1,86,94,23,195,1,28,249,22, +175,9,23,195,2,2,49,86,94,23,193,1,249,22,7,23,196,1,23,198,1, +249,80,144,48,8,31,42,194,249,22,82,197,199,28,248,22,90,23,196,2,9, +28,248,22,83,23,196,2,28,248,22,152,2,248,22,175,20,23,197,2,250,22, +97,249,22,2,22,132,2,250,22,161,2,248,22,175,20,23,204,2,23,202,2, +9,250,22,161,2,248,22,175,20,23,202,2,11,9,27,248,22,176,20,23,200, +1,28,248,22,90,23,194,2,9,28,248,22,83,23,194,2,28,248,22,152,2, +248,22,175,20,23,195,2,250,22,97,249,22,2,22,132,2,250,22,161,2,248, +22,175,20,23,202,2,23,206,2,9,250,22,161,2,248,22,175,20,23,200,2, +11,9,249,80,144,48,8,48,42,23,203,1,248,22,176,20,23,199,1,27,248, +80,144,45,8,30,42,248,22,175,20,23,196,2,250,22,97,250,22,161,2,23, +199,2,23,205,2,9,250,22,161,2,23,199,1,11,9,249,80,144,49,8,48, +42,23,204,1,248,22,176,20,23,200,1,249,22,97,247,22,165,16,249,80,144, +47,8,48,42,23,202,1,248,22,176,20,23,198,1,27,248,80,144,41,8,30, +42,248,22,175,20,23,198,2,250,22,97,250,22,161,2,23,199,2,23,201,2, +9,250,22,161,2,23,199,1,11,9,27,248,22,176,20,23,201,1,28,248,22, +90,23,194,2,9,28,248,22,83,23,194,2,28,248,22,152,2,248,22,175,20, +23,195,2,250,22,97,249,22,2,22,132,2,250,22,161,2,248,22,175,20,23, +202,2,23,207,2,9,250,22,161,2,248,22,175,20,23,200,2,11,9,249,80, +144,49,8,48,42,23,204,1,248,22,176,20,23,199,1,27,248,80,144,46,8, +30,42,248,22,175,20,23,196,2,250,22,97,250,22,161,2,23,199,2,23,206, +2,9,250,22,161,2,23,199,1,11,9,249,80,144,50,8,48,42,23,205,1, +248,22,176,20,23,200,1,249,22,97,247,22,165,16,249,80,144,48,8,48,42, +23,203,1,248,22,176,20,23,198,1,249,22,97,247,22,165,16,27,248,22,176, +20,23,199,1,28,248,22,90,23,194,2,9,28,248,22,83,23,194,2,28,248, +22,152,2,248,22,175,20,23,195,2,250,22,97,249,22,2,22,132,2,250,22, +161,2,248,22,175,20,23,202,2,23,205,2,9,250,22,161,2,248,22,175,20, +23,200,2,11,9,249,80,144,47,8,48,42,23,202,1,248,22,176,20,23,199, +1,27,248,80,144,44,8,30,42,248,22,175,20,23,196,2,250,22,97,250,22, +161,2,23,199,2,23,204,2,9,250,22,161,2,23,199,1,11,9,249,80,144, +48,8,48,42,23,203,1,248,22,176,20,23,200,1,249,22,97,247,22,165,16, +249,80,144,46,8,48,42,23,201,1,248,22,176,20,23,198,1,32,147,2,88, +148,8,36,41,52,11,2,50,222,33,148,2,28,248,22,90,248,22,84,23,196, +2,248,22,92,248,23,195,1,248,22,175,20,23,197,1,250,22,93,248,23,197, +2,248,22,175,20,23,199,2,2,67,249,2,147,2,23,198,1,248,22,176,20, +23,200,1,250,22,143,8,6,7,7,10,32,126,97,32,126,97,6,1,1,32, +23,196,1,249,22,143,8,6,6,6,10,32,32,32,126,97,248,22,135,2,23, +196,1,32,151,2,88,148,39,41,51,11,68,102,105,108,116,101,114,222,33,152, +2,28,248,22,90,23,195,2,9,28,248,23,194,2,248,22,83,23,196,2,249, +22,82,248,22,175,20,23,197,2,249,2,151,2,23,197,1,248,22,176,20,23, +199,1,249,2,151,2,23,195,1,248,22,176,20,23,197,1,28,248,22,90,23, +202,2,86,95,23,201,1,23,194,1,28,23,202,2,28,194,249,22,138,16,203, +196,201,86,95,23,202,1,23,195,1,27,28,248,22,90,23,199,2,2,66,249, +22,1,22,182,7,249,2,147,2,23,205,2,23,202,2,248,23,198,1,251,22, +143,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,90,23,204,1,248,23, +207,1,23,205,1,250,22,182,7,248,23,210,1,23,208,1,2,67,23,201,2, +249,22,1,22,182,7,249,22,2,32,0,88,148,8,36,40,48,11,9,222,33, +149,2,27,248,22,96,23,211,2,27,248,22,96,247,22,165,16,28,249,22,134, +4,249,22,189,3,23,198,2,23,197,2,44,23,211,2,249,22,97,247,22,165, +16,248,22,92,249,22,143,8,6,50,50,46,46,46,32,91,126,97,32,97,100, +100,105,116,105,111,110,97,108,32,108,105,110,107,101,100,32,97,110,100,32,112, +97,99,107,97,103,101,32,100,105,114,101,99,116,111,114,105,101,115,93,249,22, +189,3,23,201,1,23,200,1,28,249,22,5,22,134,2,23,207,2,250,22,143, +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,182,7,249, +22,2,32,0,88,148,8,36,40,48,11,9,222,33,150,2,249,2,151,2,22, +134,2,23,214,1,86,95,23,205,1,23,198,1,2,66,27,248,22,83,23,203, +2,27,28,248,22,184,15,23,195,2,249,22,138,16,23,196,1,23,202,2,248, +22,135,2,23,195,1,28,28,248,22,184,15,248,22,175,20,23,205,2,248,22, +133,16,23,194,2,10,27,250,22,1,22,138,16,23,197,1,23,203,2,28,28, +248,22,90,23,201,2,10,248,22,133,16,23,194,2,28,23,198,2,28,28,250, +80,144,45,8,32,42,195,200,199,10,27,28,248,22,184,15,199,248,22,188,15, +199,198,19,248,22,162,7,23,195,2,27,28,249,22,164,20,23,196,4,43,28, +249,22,165,7,6,4,4,46,114,107,116,249,22,181,7,23,199,2,249,22,189, +3,23,200,4,43,249,22,182,7,250,22,181,7,23,200,1,39,249,22,189,3, +23,201,4,43,6,3,3,46,115,115,86,94,23,195,1,11,86,94,23,195,1, +11,28,23,193,2,250,80,144,48,8,32,42,198,23,196,1,202,11,2,28,197, +249,22,138,16,194,199,192,26,9,80,144,51,8,49,42,205,206,23,15,23,16, +23,17,23,18,23,19,248,22,176,20,23,21,28,23,21,23,21,201,192,26,9, +80,144,51,8,49,42,205,206,23,15,23,16,23,17,23,18,23,19,248,22,176, +20,23,21,23,21,26,9,80,144,50,8,49,42,204,205,206,23,15,23,16,23, +17,23,18,248,22,176,20,23,20,23,20,28,248,22,184,15,193,248,22,188,15, +193,192,90,144,41,11,89,146,41,39,11,249,80,144,43,8,31,42,23,199,1, +23,200,1,27,248,22,70,28,248,22,184,15,195,248,22,188,15,195,194,27,27, +247,22,166,16,28,248,22,90,23,194,2,9,28,248,22,83,23,194,2,28,248, +22,152,2,248,22,175,20,23,195,2,250,22,97,249,22,2,22,132,2,250,22, +161,2,248,22,175,20,23,202,2,23,203,2,9,250,22,161,2,248,22,175,20, +23,200,2,11,9,249,80,144,49,8,48,42,23,200,1,248,22,176,20,23,199, +1,27,248,80,144,46,8,30,42,248,22,175,20,23,196,2,250,22,97,250,22, +161,2,23,199,2,23,202,2,9,250,22,161,2,23,199,1,11,9,249,80,144, +50,8,48,42,23,201,1,248,22,176,20,23,200,1,249,22,97,247,22,165,16, +249,80,144,48,8,48,42,23,199,1,248,22,176,20,23,198,1,27,32,0,88, +148,8,36,40,46,11,71,116,111,45,115,116,114,105,110,103,222,33,154,2,26, +9,80,144,53,8,49,42,23,19,23,18,23,15,205,204,202,201,202,11,32,156, +2,88,148,8,36,42,57,11,2,50,222,33,157,2,28,248,22,138,4,195,19, +248,22,153,8,195,249,22,130,16,251,22,160,8,250,22,159,8,203,39,23,202, +4,2,51,249,22,159,8,202,248,22,155,21,203,2,68,28,248,22,185,15,196, +248,22,186,15,196,247,22,187,15,2,27,248,22,187,3,196,28,28,248,22,138, +4,193,11,249,22,175,9,8,46,249,22,154,8,198,196,249,22,130,16,251,22, +160,8,250,22,159,8,203,39,201,2,69,249,22,159,8,202,248,22,186,3,201, +2,68,28,248,22,185,15,196,248,22,186,15,196,247,22,187,15,250,2,156,2, +196,197,195,248,22,132,16,27,250,22,138,16,23,198,1,23,202,1,23,199,1, +28,249,22,175,9,23,199,2,66,115,97,109,101,192,28,248,22,143,16,23,198, +2,249,22,138,16,194,198,249,80,144,46,42,42,23,195,1,23,199,1,249,22, +5,20,20,96,88,148,39,40,54,47,9,226,5,6,3,2,33,158,2,23,195, +1,23,196,1,23,199,1,23,197,1,27,248,22,132,16,249,22,138,16,23,198, +2,23,199,2,28,23,193,2,192,86,94,23,193,1,28,23,197,1,27,90,144, +41,11,89,146,41,39,11,250,80,144,46,8,34,42,23,202,2,2,68,2,34, +27,248,22,190,15,23,196,1,27,250,2,156,2,23,204,1,23,197,2,248,22, +153,8,23,198,1,28,248,22,185,15,195,249,22,138,16,196,194,192,27,247,22, +167,16,249,22,5,20,20,96,88,148,39,40,51,47,9,226,5,2,3,6,33, +159,2,23,199,1,23,196,1,23,195,1,247,22,168,16,11,86,95,28,28,248, +22,185,15,23,194,2,10,28,248,22,184,15,23,194,2,10,28,248,22,159,7, +23,194,2,28,248,22,143,16,23,194,2,10,248,22,144,16,23,194,2,11,12, +252,22,188,11,23,200,2,2,42,39,23,198,2,23,199,2,28,28,248,22,159, +7,23,195,2,10,248,22,148,8,23,195,2,86,94,23,194,1,12,252,22,188, +11,23,200,2,2,70,40,23,198,2,23,199,1,90,144,42,11,89,146,42,39, +11,248,22,141,16,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,191,11,23,201,1,2,71,23,199,1,249,22, +7,23,195,1,23,196,1,32,162,2,88,148,8,36,45,8,23,11,2,50,222, +33,163,2,28,248,22,138,4,23,199,2,86,95,23,198,1,23,196,1,19,248, +22,153,8,23,199,2,249,22,130,16,251,22,160,8,250,22,159,8,23,207,2, +39,23,202,4,2,51,249,23,204,1,23,206,2,248,22,155,21,23,207,1,28, +248,22,159,7,200,249,22,174,8,201,8,63,199,28,248,22,185,15,197,248,22, +186,15,197,247,22,187,15,2,27,248,22,187,3,23,200,1,28,28,248,22,138, +4,23,194,2,11,249,22,175,9,8,46,249,22,154,8,23,202,2,23,197,2, +249,22,130,16,251,22,160,8,250,22,159,8,23,207,2,39,23,202,2,23,203, +1,249,23,204,1,23,206,1,248,22,186,3,23,202,1,28,248,22,159,7,200, +249,22,174,8,201,8,63,199,28,248,22,185,15,197,248,22,186,15,197,247,22, +187,15,28,248,22,138,4,23,194,2,86,95,23,197,1,23,193,1,19,248,22, +153,8,23,200,2,249,22,130,16,251,22,160,8,250,22,159,8,23,208,2,39, +23,202,4,2,51,249,23,205,1,23,207,2,248,22,155,21,23,208,1,28,248, +22,159,7,201,249,22,174,8,202,8,63,200,28,248,22,185,15,198,248,22,186, +15,198,247,22,187,15,2,27,248,22,187,3,23,195,1,28,28,248,22,138,4, +23,194,2,11,249,22,175,9,8,46,249,22,154,8,23,203,2,23,197,2,249, +22,130,16,251,22,160,8,250,22,159,8,23,208,2,39,23,202,2,23,204,1, +249,23,205,1,23,207,1,248,22,186,3,23,202,1,28,248,22,159,7,201,249, +22,174,8,202,8,63,200,28,248,22,185,15,198,248,22,186,15,198,247,22,187, +15,28,248,22,138,4,23,194,2,86,95,23,198,1,23,193,1,19,248,22,153, +8,23,201,2,249,22,130,16,251,22,160,8,250,22,159,8,23,209,2,39,23, +202,4,2,51,249,23,206,1,23,208,2,248,22,155,21,23,209,1,28,248,22, +159,7,202,249,22,174,8,203,8,63,201,28,248,22,185,15,199,248,22,186,15, +199,247,22,187,15,2,27,248,22,187,3,23,195,1,28,28,248,22,138,4,23, +194,2,11,249,22,175,9,8,46,249,22,154,8,23,204,2,23,197,2,249,22, +130,16,251,22,160,8,250,22,159,8,23,209,2,39,23,202,2,23,205,1,249, +23,206,1,23,208,1,248,22,186,3,23,202,1,28,248,22,159,7,202,249,22, +174,8,203,8,63,201,28,248,22,185,15,199,248,22,186,15,199,247,22,187,15, +253,2,162,2,201,202,203,204,205,198,90,144,41,11,89,146,41,39,11,86,95, +28,28,248,22,185,15,23,199,2,10,28,248,22,184,15,23,199,2,10,28,248, +22,159,7,23,199,2,28,248,22,143,16,23,199,2,10,248,22,144,16,23,199, +2,11,12,252,22,188,11,23,200,2,2,42,39,23,203,2,23,204,2,28,28, +248,22,159,7,23,200,2,10,248,22,148,8,23,200,2,12,252,22,188,11,23, +200,2,2,70,40,23,203,2,23,204,2,90,144,42,11,89,146,42,39,11,248, +22,141,16,23,202,2,86,94,23,195,1,86,94,28,192,12,250,22,191,11,23, +201,1,2,71,23,204,2,249,22,7,194,195,27,248,22,190,15,23,196,1,27, +19,248,22,153,8,23,196,2,28,249,22,160,20,23,195,4,39,86,94,23,199, +1,249,22,130,16,251,22,160,8,250,22,159,8,23,204,2,39,248,22,155,21, +23,205,2,2,51,249,23,208,1,23,203,2,248,22,155,21,23,204,1,28,248, +22,159,7,23,16,249,22,174,8,23,17,8,63,23,15,28,248,22,185,15,203, +248,22,186,15,203,247,22,187,15,27,248,22,187,3,23,195,4,28,28,248,22, +138,4,23,194,2,11,249,22,175,9,8,46,249,22,154,8,23,200,2,23,197, +2,249,22,130,16,251,22,160,8,250,22,159,8,23,205,2,39,23,202,2,23, +206,1,249,23,209,1,23,204,1,248,22,186,3,23,202,1,28,248,22,159,7, +23,17,249,22,174,8,23,18,8,63,23,16,28,248,22,185,15,204,248,22,186, +15,204,247,22,187,15,28,248,22,138,4,23,194,2,86,95,23,200,1,23,193, +1,249,22,130,16,251,22,160,8,250,22,159,8,23,205,2,39,248,22,155,21, +23,206,2,2,51,249,23,209,1,23,204,2,248,22,155,21,23,205,1,28,248, +22,159,7,23,17,249,22,174,8,23,18,8,63,23,16,28,248,22,185,15,204, +248,22,186,15,204,247,22,187,15,27,248,22,187,3,23,195,1,28,28,248,22, +138,4,23,194,2,11,249,22,175,9,8,46,249,22,154,8,23,201,2,23,197, +2,249,22,130,16,251,22,160,8,250,22,159,8,23,206,2,39,23,202,2,23, +207,1,249,23,210,1,23,205,1,248,22,186,3,23,202,1,28,248,22,159,7, +23,18,249,22,174,8,23,19,8,63,23,17,28,248,22,185,15,205,248,22,186, +15,205,247,22,187,15,253,2,162,2,23,210,1,23,209,1,23,208,1,23,207, +1,23,203,1,23,199,1,2,28,248,22,185,15,195,249,22,138,16,196,194,192, +32,165,2,88,148,8,36,43,59,11,2,50,222,33,166,2,28,248,22,138,4, +196,19,248,22,153,8,196,249,22,130,16,251,22,160,8,250,22,159,8,204,39, +23,202,4,2,51,2,51,28,248,22,159,7,200,249,22,174,8,201,8,63,199, +28,248,22,185,15,197,248,22,186,15,197,247,22,187,15,2,27,248,22,187,3, +197,28,28,248,22,138,4,193,11,249,22,175,9,8,46,249,22,154,8,199,196, +249,22,130,16,251,22,160,8,250,22,159,8,204,39,201,2,51,2,51,28,248, +22,159,7,200,249,22,174,8,201,8,63,199,28,248,22,185,15,197,248,22,186, +15,197,247,22,187,15,28,248,22,138,4,193,19,248,22,153,8,197,249,22,130, +16,251,22,160,8,250,22,159,8,205,39,23,202,4,2,51,2,51,28,248,22, +159,7,201,249,22,174,8,202,8,63,200,28,248,22,185,15,198,248,22,186,15, +198,247,22,187,15,2,27,248,22,187,3,194,28,28,248,22,138,4,193,11,249, +22,175,9,8,46,249,22,154,8,200,196,249,22,130,16,251,22,160,8,250,22, +159,8,205,39,201,2,51,2,51,28,248,22,159,7,201,249,22,174,8,202,8, +63,200,28,248,22,185,15,198,248,22,186,15,198,247,22,187,15,251,2,165,2, +198,199,200,196,90,144,41,11,89,146,41,39,11,86,95,28,28,248,22,185,15, +23,196,2,10,28,248,22,184,15,23,196,2,10,28,248,22,159,7,23,196,2, +28,248,22,143,16,23,196,2,10,248,22,144,16,23,196,2,11,12,252,22,188, +11,2,37,2,42,39,23,200,2,23,201,2,28,28,248,22,159,7,23,197,2, +10,248,22,148,8,23,197,2,12,252,22,188,11,2,37,2,70,40,23,200,2, +23,201,2,90,144,42,11,89,146,42,39,11,248,22,141,16,23,199,2,86,94, +23,195,1,86,94,28,192,12,250,22,191,11,2,37,2,71,23,201,2,249,22, +7,194,195,27,248,22,190,15,23,196,1,27,251,2,165,2,23,202,1,23,201, +1,23,198,2,248,22,153,8,23,199,1,28,248,22,185,15,195,249,22,138,16, +196,194,192,32,168,2,88,148,8,36,43,59,11,2,50,222,33,169,2,28,248, +22,138,4,196,19,248,22,153,8,196,249,22,130,16,251,22,160,8,250,22,159, +8,204,39,23,202,4,2,51,249,22,159,8,203,248,22,155,21,204,28,248,22, +159,7,200,249,22,174,8,201,8,63,199,28,248,22,185,15,197,248,22,186,15, +197,247,22,187,15,2,27,248,22,187,3,197,28,28,248,22,138,4,193,11,249, +22,175,9,8,46,249,22,154,8,199,196,249,22,130,16,251,22,160,8,250,22, +159,8,204,39,201,2,69,249,22,159,8,203,248,22,186,3,201,28,248,22,159, +7,200,249,22,174,8,201,8,63,199,28,248,22,185,15,197,248,22,186,15,197, +247,22,187,15,28,248,22,138,4,193,19,248,22,153,8,197,249,22,130,16,251, +22,160,8,250,22,159,8,205,39,23,202,4,2,51,249,22,159,8,204,248,22, +155,21,205,28,248,22,159,7,201,249,22,174,8,202,8,63,200,28,248,22,185, +15,198,248,22,186,15,198,247,22,187,15,2,27,248,22,187,3,194,28,28,248, +22,138,4,193,11,249,22,175,9,8,46,249,22,154,8,200,196,249,22,130,16, +251,22,160,8,250,22,159,8,205,39,201,2,69,249,22,159,8,204,248,22,186, +3,201,28,248,22,159,7,201,249,22,174,8,202,8,63,200,28,248,22,185,15, +198,248,22,186,15,198,247,22,187,15,251,2,168,2,198,199,200,196,90,144,41, +11,89,146,41,39,11,86,95,28,28,248,22,185,15,23,196,2,10,28,248,22, +184,15,23,196,2,10,28,248,22,159,7,23,196,2,28,248,22,143,16,23,196, +2,10,248,22,144,16,23,196,2,11,12,252,22,188,11,2,34,2,42,39,23, +200,2,23,201,2,28,28,248,22,159,7,23,197,2,10,248,22,148,8,23,197, +2,12,252,22,188,11,2,34,2,70,40,23,200,2,23,201,2,90,144,42,11, +89,146,42,39,11,248,22,141,16,23,199,2,86,94,23,195,1,86,94,28,192, +12,250,22,191,11,2,34,2,71,23,201,2,249,22,7,194,195,27,248,22,190, +15,23,196,1,27,251,2,168,2,23,202,1,23,201,1,23,198,2,248,22,153, +8,23,199,1,28,248,22,185,15,195,249,22,138,16,196,194,192,249,247,22,182, +5,23,195,1,11,249,247,22,182,5,194,11,28,248,22,90,23,195,2,9,27, 27,248,22,83,23,197,2,28,248,22,145,16,23,194,2,248,22,148,16,23,194, 1,28,248,22,144,16,23,194,2,90,144,42,11,89,146,42,39,11,248,22,141, 16,249,22,146,16,250,80,144,50,43,42,248,22,161,16,2,56,11,11,248,22, @@ -844,731 +804,746 @@ 22,148,16,249,22,146,16,23,198,1,247,22,162,16,27,248,22,176,20,23,199, 1,28,248,22,90,23,194,2,9,27,248,80,144,45,56,42,248,22,83,23,196, 2,28,23,193,2,249,22,82,248,22,148,16,249,22,146,16,23,198,1,247,22, -162,16,248,80,144,47,8,51,42,248,22,176,20,23,198,1,86,94,23,193,1, -248,80,144,45,8,51,42,248,22,176,20,23,196,1,86,94,23,193,1,27,248, +162,16,248,80,144,47,8,50,42,248,22,176,20,23,198,1,86,94,23,193,1, +248,80,144,45,8,50,42,248,22,176,20,23,196,1,86,94,23,193,1,27,248, 22,176,20,23,197,1,28,248,22,90,23,194,2,9,27,248,80,144,43,56,42, 248,22,83,23,196,2,28,23,193,2,249,22,82,248,22,148,16,249,22,146,16, -23,198,1,247,22,162,16,248,80,144,45,8,51,42,248,22,176,20,23,198,1, -86,94,23,193,1,248,80,144,43,8,51,42,248,22,176,20,23,196,1,27,248, -22,161,16,2,58,28,248,22,145,16,23,194,2,248,22,148,16,23,194,1,28, -248,22,144,16,23,194,2,90,144,42,11,89,146,42,39,11,248,22,141,16,249, -22,146,16,250,80,144,49,43,42,248,22,161,16,2,56,11,11,248,22,161,16, -2,57,86,95,23,195,1,23,194,1,248,22,148,16,249,22,146,16,23,199,1, -23,196,1,27,250,80,144,44,43,42,248,22,161,16,2,56,23,197,1,10,28, -23,193,2,248,22,148,16,23,194,1,11,28,248,22,90,23,195,2,9,27,27, -248,22,83,23,197,2,28,248,22,145,16,23,194,2,248,22,148,16,23,194,1, -28,248,22,144,16,23,194,2,90,144,42,11,89,146,42,39,11,248,22,141,16, -249,22,146,16,250,80,144,50,43,42,248,22,161,16,2,56,11,11,248,22,161, -16,2,57,86,95,23,195,1,23,194,1,248,22,148,16,249,22,146,16,23,199, -1,23,196,1,27,250,80,144,45,43,42,248,22,161,16,2,56,23,197,1,10, -28,23,193,2,248,22,148,16,23,194,1,11,28,23,193,2,249,22,82,248,22, -148,16,249,22,146,16,23,198,1,247,22,162,16,27,248,22,176,20,23,199,1, -28,248,22,90,23,194,2,9,27,27,248,22,83,23,196,2,28,248,22,145,16, -23,194,2,248,22,148,16,23,194,1,28,248,22,144,16,23,194,2,90,144,42, -11,89,146,42,39,11,248,22,141,16,249,22,146,16,250,80,144,54,43,42,248, -22,161,16,2,56,11,11,248,22,161,16,2,57,86,95,23,195,1,23,194,1, -248,22,148,16,249,22,146,16,23,199,1,23,196,1,27,250,80,144,49,43,42, -248,22,161,16,2,56,23,197,1,10,28,23,193,2,248,22,148,16,23,194,1, -11,28,23,193,2,249,22,82,248,22,148,16,249,22,146,16,23,198,1,247,22, -162,16,27,248,22,176,20,23,198,1,28,248,22,90,23,194,2,9,27,248,80, -144,49,56,42,248,22,83,23,196,2,28,23,193,2,249,22,82,248,22,148,16, -249,22,146,16,23,198,1,247,22,162,16,248,80,144,51,8,53,42,248,22,176, -20,23,198,1,86,94,23,193,1,248,80,144,49,8,53,42,248,22,176,20,23, -196,1,86,94,23,193,1,27,248,22,176,20,23,196,1,28,248,22,90,23,194, -2,9,27,248,80,144,47,56,42,248,22,83,23,196,2,28,23,193,2,249,22, -82,248,22,148,16,249,22,146,16,23,198,1,247,22,162,16,248,80,144,49,8, -53,42,248,22,176,20,23,198,1,86,94,23,193,1,248,80,144,47,8,53,42, -248,22,176,20,23,196,1,86,94,23,193,1,27,248,22,176,20,23,197,1,28, -248,22,90,23,194,2,9,27,27,248,22,83,23,196,2,28,248,22,145,16,23, -194,2,248,22,148,16,23,194,1,28,248,22,144,16,23,194,2,90,144,42,11, -89,146,42,39,11,248,22,141,16,249,22,146,16,250,80,144,52,43,42,248,22, -161,16,2,56,11,11,248,22,161,16,2,57,86,95,23,195,1,23,194,1,248, -22,148,16,249,22,146,16,23,199,1,23,196,1,27,250,80,144,47,43,42,248, -22,161,16,2,56,23,197,1,10,28,23,193,2,248,22,148,16,23,194,1,11, -28,23,193,2,249,22,82,248,22,148,16,249,22,146,16,23,198,1,247,22,162, -16,27,248,22,176,20,23,198,1,28,248,22,90,23,194,2,9,27,248,80,144, -47,56,42,248,22,83,23,196,2,28,23,193,2,249,22,82,248,22,148,16,249, -22,146,16,23,198,1,247,22,162,16,248,80,144,49,8,53,42,248,22,176,20, -23,198,1,86,94,23,193,1,248,80,144,47,8,53,42,248,22,176,20,23,196, -1,86,94,23,193,1,27,248,22,176,20,23,196,1,28,248,22,90,23,194,2, -9,27,248,80,144,45,56,42,248,22,83,23,196,2,28,23,193,2,249,22,82, -248,22,148,16,249,22,146,16,23,198,1,247,22,162,16,248,80,144,47,8,53, -42,248,22,176,20,23,198,1,86,94,23,193,1,248,80,144,45,8,53,42,248, -22,176,20,23,196,1,27,247,22,169,16,27,248,80,144,42,58,42,247,80,144, -42,57,42,249,80,144,43,44,41,28,23,196,2,27,249,22,181,8,247,22,180, -8,2,75,28,192,249,22,171,8,194,7,63,2,66,2,66,250,80,144,46,8, -23,42,23,198,2,2,76,27,28,23,200,1,250,22,138,16,248,22,161,16,2, -61,250,22,161,2,23,205,1,2,59,247,22,177,8,2,77,86,94,23,199,1, -11,27,248,80,144,49,8,50,42,250,22,97,9,248,22,92,248,22,161,16,2, -55,9,28,193,249,22,82,195,194,192,27,247,22,169,16,27,248,80,144,42,58, -42,247,80,144,42,57,42,249,80,144,43,44,41,28,23,196,2,27,249,22,181, -8,247,22,180,8,2,75,28,192,249,22,171,8,194,7,63,2,66,2,66,250, -80,144,46,8,23,42,23,198,2,2,76,27,28,23,200,1,250,22,138,16,248, -22,161,16,2,61,250,22,161,2,23,205,1,2,59,247,22,177,8,2,77,86, -94,23,199,1,11,27,248,80,144,49,8,51,42,250,22,97,23,207,1,248,22, -92,248,22,161,16,2,55,9,28,193,249,22,82,195,194,192,27,247,22,169,16, -27,248,80,144,42,58,42,249,80,144,44,55,40,40,80,144,44,8,52,42,249, -80,144,43,44,41,28,23,196,2,27,249,22,181,8,247,22,180,8,2,75,28, -192,249,22,171,8,194,7,63,2,66,2,66,250,80,144,46,8,23,42,23,198, -2,2,76,27,28,23,200,1,250,22,138,16,248,22,161,16,2,61,250,22,161, -2,23,205,1,2,59,247,22,177,8,2,77,86,94,23,199,1,11,27,27,250, -22,97,23,207,1,248,22,92,248,22,161,16,2,55,23,208,1,28,248,22,90, -23,194,2,9,27,27,248,22,83,23,196,2,28,248,22,145,16,23,194,2,248, +23,198,1,247,22,162,16,248,80,144,45,8,50,42,248,22,176,20,23,198,1, +86,94,23,193,1,248,80,144,43,8,50,42,248,22,176,20,23,196,1,28,248, +22,90,23,195,2,9,27,27,248,22,83,23,197,2,28,248,22,145,16,23,194, +2,248,22,148,16,23,194,1,28,248,22,144,16,23,194,2,90,144,42,11,89, +146,42,39,11,248,22,141,16,249,22,146,16,250,80,144,50,43,42,248,22,161, +16,2,56,11,11,248,22,161,16,2,57,86,95,23,195,1,23,194,1,248,22, +148,16,249,22,146,16,23,199,1,23,196,1,27,250,80,144,45,43,42,248,22, +161,16,2,56,23,197,1,10,28,23,193,2,248,22,148,16,23,194,1,11,28, +23,193,2,249,22,82,248,22,148,16,249,22,146,16,23,198,1,247,22,162,16, +27,248,22,176,20,23,199,1,28,248,22,90,23,194,2,9,27,248,80,144,45, +56,42,248,22,83,23,196,2,28,23,193,2,249,22,82,248,22,148,16,249,22, +146,16,23,198,1,247,22,162,16,248,80,144,47,8,51,42,248,22,176,20,23, +198,1,86,94,23,193,1,248,80,144,45,8,51,42,248,22,176,20,23,196,1, +86,94,23,193,1,27,248,22,176,20,23,197,1,28,248,22,90,23,194,2,9, +27,248,80,144,43,56,42,248,22,83,23,196,2,28,23,193,2,249,22,82,248, +22,148,16,249,22,146,16,23,198,1,247,22,162,16,248,80,144,45,8,51,42, +248,22,176,20,23,198,1,86,94,23,193,1,248,80,144,43,8,51,42,248,22, +176,20,23,196,1,27,248,22,161,16,2,58,28,248,22,145,16,23,194,2,248, 22,148,16,23,194,1,28,248,22,144,16,23,194,2,90,144,42,11,89,146,42, -39,11,248,22,141,16,249,22,146,16,250,80,144,60,43,42,248,22,161,16,2, +39,11,248,22,141,16,249,22,146,16,250,80,144,49,43,42,248,22,161,16,2, 56,11,11,248,22,161,16,2,57,86,95,23,195,1,23,194,1,248,22,148,16, -249,22,146,16,23,199,1,23,196,1,27,250,80,144,55,43,42,248,22,161,16, -2,56,23,197,1,10,28,23,193,2,248,22,148,16,23,194,1,11,28,23,193, -2,249,22,82,248,22,148,16,249,22,146,16,23,198,1,247,22,162,16,27,248, -22,176,20,23,198,1,28,248,22,90,23,194,2,9,27,248,80,144,55,56,42, -248,22,83,23,196,2,28,23,193,2,249,22,82,248,22,148,16,249,22,146,16, -23,198,1,247,22,162,16,248,80,144,57,8,53,42,248,22,176,20,23,198,1, -86,94,23,193,1,248,80,144,55,8,53,42,248,22,176,20,23,196,1,86,94, -23,193,1,27,248,22,176,20,23,196,1,28,248,22,90,23,194,2,9,27,248, -80,144,53,56,42,248,22,83,23,196,2,28,23,193,2,249,22,82,248,22,148, -16,249,22,146,16,23,198,1,247,22,162,16,248,80,144,55,8,53,42,248,22, -176,20,23,198,1,86,94,23,193,1,248,80,144,53,8,53,42,248,22,176,20, -23,196,1,28,193,249,22,82,195,194,192,27,20,13,144,80,144,40,46,40,26, -9,80,144,49,47,40,249,22,31,11,80,144,51,46,40,22,158,15,10,22,165, -15,10,22,166,15,10,22,167,15,10,248,22,154,6,23,196,2,28,248,22,154, -7,23,194,2,12,86,94,248,22,183,9,23,194,1,27,20,13,144,80,144,41, -46,40,26,9,80,144,50,47,40,249,22,31,11,80,144,52,46,40,22,158,15, -10,22,165,15,10,22,166,15,10,22,167,15,10,248,22,154,6,23,197,2,28, -248,22,154,7,23,194,2,12,86,94,248,22,183,9,23,194,1,27,20,13,144, -80,144,42,46,40,26,9,80,144,51,47,40,249,22,31,11,80,144,53,46,40, -22,158,15,10,22,165,15,10,22,166,15,10,22,167,15,10,248,22,154,6,23, -198,2,28,248,22,154,7,23,194,2,12,86,94,248,22,183,9,23,194,1,248, -80,144,43,8,54,42,197,86,94,249,22,145,7,247,22,178,5,23,195,2,248, -22,169,6,249,22,141,4,39,249,22,189,3,28,23,199,2,23,199,1,86,94, -23,199,1,39,23,198,1,27,248,22,131,6,28,23,198,2,86,95,23,197,1, -23,196,1,23,198,1,86,94,23,198,1,27,250,80,144,45,43,42,248,22,161, -16,2,56,11,11,27,248,22,144,4,23,199,1,27,28,23,194,2,23,194,1, -86,94,23,194,1,39,27,248,22,144,4,23,202,1,249,22,146,6,23,198,1, -20,20,95,88,148,8,36,39,51,11,9,224,2,3,33,190,2,23,196,1,23, -195,1,248,80,144,41,8,54,42,193,145,40,9,20,122,145,2,1,39,16,1, -11,16,0,20,27,15,56,9,2,2,2,2,29,11,11,11,11,11,11,11,9, -9,11,11,11,10,47,80,143,39,39,20,122,145,2,1,54,16,40,2,3,2, -4,2,5,2,6,2,7,2,8,2,9,30,2,11,1,20,112,97,114,97,109, -101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,11,6,30,2,11,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,4,2,12,2,13,2,14,2,15,2,16,2,17,2,18,30,2, -11,1,19,99,97,99,104,101,45,99,111,110,102,105,103,117,114,97,116,105,111, -110,11,1,2,19,2,20,2,21,2,22,2,23,2,24,2,25,2,26,2,27, -2,28,2,29,30,2,11,1,21,101,120,99,101,112,116,105,111,110,45,104,97, -110,100,108,101,114,45,107,101,121,11,3,2,30,2,31,2,32,2,33,2,34, -2,35,2,36,2,37,2,38,2,39,2,40,16,0,40,42,39,16,0,39,16, -19,2,13,2,14,2,12,2,25,2,4,2,35,2,23,2,24,2,19,2,29, -2,33,2,21,2,22,2,31,2,27,2,30,2,32,2,36,2,28,58,11,11, -11,16,17,2,9,2,17,2,15,2,40,2,16,2,7,2,26,2,39,2,18, -2,20,2,38,2,5,2,34,2,8,2,37,2,3,2,6,16,17,11,11,11, -11,11,11,11,11,11,11,11,11,11,11,11,11,11,16,17,2,9,2,17,2, -15,2,40,2,16,2,7,2,26,2,39,2,18,2,20,2,38,2,5,2,34, -2,8,2,37,2,3,2,6,56,56,40,12,11,11,16,0,16,0,16,0,39, -39,11,12,11,11,16,0,16,0,16,0,39,39,16,51,20,15,16,2,32,0, -88,148,8,36,40,48,11,2,3,222,33,78,80,144,39,39,40,20,15,16,2, -249,22,161,7,7,92,7,92,80,144,39,40,40,20,15,16,2,88,148,8,36, -40,57,41,2,5,223,0,33,83,80,144,39,41,40,20,15,16,2,88,148,8, -36,41,61,41,2,6,223,0,33,85,80,144,39,42,40,20,15,16,2,20,26, -96,2,7,88,148,8,36,42,8,24,8,32,9,223,0,33,92,88,148,8,36, -41,50,55,9,223,0,33,93,88,148,8,36,40,49,55,9,223,0,33,94,80, -144,39,43,40,20,15,16,2,27,248,22,173,16,248,22,173,8,27,28,249,22, -175,9,247,22,186,8,2,43,6,1,1,59,6,1,1,58,250,22,143,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,148,8,36,41,51,11,2,8,223,0,33,98,80,144,39,44,40,20,15, -16,2,88,148,39,40,8,44,8,128,6,2,9,223,0,33,99,80,144,39,45, -40,20,15,16,2,32,0,88,148,8,36,41,50,11,2,12,222,33,100,80,144, -39,48,40,20,15,16,2,32,0,88,148,8,36,42,51,11,2,13,222,33,102, -80,144,39,49,40,20,15,16,2,32,0,88,148,8,36,41,49,11,2,14,222, -33,103,80,144,39,50,40,20,15,16,2,88,148,39,42,53,8,128,128,2,15, -223,0,33,105,80,144,39,51,40,20,15,16,2,88,148,39,44,55,8,128,128, -2,17,223,0,33,107,80,144,39,53,40,20,15,16,2,88,148,39,39,56,55, -9,223,0,33,108,80,144,39,8,40,42,20,15,16,2,88,148,39,39,47,16, -4,39,40,8,128,4,39,2,18,223,0,33,109,80,144,39,54,40,20,15,16, -2,88,148,39,39,56,55,9,223,0,33,110,80,144,39,8,41,42,20,15,16, -2,88,148,39,39,47,16,4,39,40,8,128,8,39,2,20,223,0,33,111,80, -144,39,57,40,20,15,16,2,88,148,8,36,39,8,44,8,128,6,9,223,0, -33,112,80,144,39,8,42,42,20,15,16,2,88,148,8,36,40,50,16,4,39, -39,8,128,16,39,2,21,223,0,33,113,80,144,39,58,40,20,15,16,2,20, -28,143,32,0,88,148,39,40,48,11,2,22,222,33,114,32,0,88,148,39,40, -48,11,2,22,222,33,115,80,144,39,59,40,20,15,16,2,88,148,8,36,40, -50,8,240,0,128,0,0,2,23,223,0,33,116,80,144,39,60,40,20,15,16, -2,88,148,39,39,56,55,9,223,0,33,117,80,144,39,8,43,42,20,15,16, -2,88,148,8,36,40,51,16,4,39,40,8,128,32,39,2,24,223,0,33,118, -80,144,39,61,40,20,15,16,2,88,148,39,40,56,55,2,19,223,0,33,119, -80,144,39,56,40,20,15,16,2,88,148,8,36,41,58,16,4,8,240,0,128, -0,0,8,32,8,128,64,39,2,50,223,0,33,120,80,144,39,8,44,42,20, -15,16,2,88,148,8,36,42,52,16,4,39,39,8,128,64,39,2,25,223,0, -33,121,80,144,39,8,23,40,20,15,16,2,88,148,39,39,56,55,9,223,0, -33,122,80,144,39,8,45,42,20,15,16,2,88,148,8,36,39,57,16,4,8, -240,0,128,0,0,8,137,2,8,128,128,39,2,26,223,0,33,123,80,144,39, -8,24,40,20,15,16,2,247,22,143,2,80,144,39,8,25,40,20,15,16,2, -248,22,16,67,115,116,97,109,112,80,144,39,8,26,40,20,15,16,2,88,148, -39,40,49,8,240,0,0,0,4,9,223,0,33,125,80,144,39,8,46,42,20, -15,16,2,88,148,39,41,51,16,4,39,8,128,80,8,240,0,64,0,0,39, -2,29,223,0,33,133,2,80,144,39,8,27,40,20,15,16,2,32,0,88,148, -8,36,40,48,11,2,30,222,33,134,2,80,144,39,8,29,40,20,15,16,2, -88,148,8,36,42,48,8,240,0,0,0,2,74,109,97,107,101,45,104,97,110, -100,108,101,114,223,0,33,136,2,80,144,39,8,47,42,20,15,16,2,88,148, -39,40,47,16,4,8,128,6,8,128,104,8,240,0,128,0,0,39,2,31,223, -0,33,146,2,80,144,39,8,30,40,20,15,16,2,88,148,39,41,59,16,2, -39,8,240,0,128,0,0,2,32,223,0,33,148,2,80,144,39,8,31,40,20, -15,16,2,88,148,8,36,41,61,16,4,39,8,240,0,64,0,0,39,40,2, -50,223,0,33,149,2,80,144,39,8,48,42,20,15,16,2,88,148,39,48,8, -34,16,4,39,39,40,41,67,99,108,111,111,112,223,0,33,156,2,80,144,39, -8,49,42,20,15,16,2,88,148,39,44,8,25,16,4,39,8,240,0,192,0, -0,39,42,2,16,223,0,33,158,2,80,144,39,52,40,20,15,16,2,88,148, -39,42,58,16,4,47,39,43,39,2,33,223,0,33,163,2,80,144,39,8,32, -40,20,15,16,2,32,0,88,148,39,42,53,11,2,35,222,33,164,2,80,144, -39,8,34,40,20,15,16,2,32,0,88,148,8,36,44,8,27,11,2,36,222, -33,169,2,80,144,39,8,35,40,20,15,16,2,32,0,88,148,8,36,41,55, -11,2,37,222,33,174,2,80,144,39,8,36,40,20,15,16,2,32,0,88,148, -8,36,41,55,11,2,34,222,33,179,2,80,144,39,8,33,40,20,15,16,2, -20,28,143,32,0,88,148,39,40,47,11,2,38,222,33,180,2,32,0,88,148, -39,40,47,11,2,38,222,33,181,2,80,144,39,8,37,40,20,15,16,2,88, -148,8,36,40,58,16,4,55,41,39,43,2,50,223,0,33,182,2,80,144,39, -8,50,42,20,15,16,2,88,148,8,36,40,58,16,4,55,41,39,47,2,50, -223,0,33,183,2,80,144,39,8,51,42,20,15,16,2,88,148,39,39,56,55, -9,223,0,33,184,2,80,144,39,8,52,42,20,15,16,2,88,148,8,36,40, -8,23,16,4,55,41,39,8,32,2,50,223,0,33,185,2,80,144,39,8,53, -42,20,15,16,2,20,26,96,2,39,88,148,39,39,60,16,4,8,32,8,140, -2,39,43,9,223,0,33,186,2,88,148,39,40,61,16,4,8,32,8,140,2, -39,47,9,223,0,33,187,2,88,148,39,41,8,30,16,4,8,48,8,139,2, -39,8,48,9,223,0,33,188,2,80,144,39,8,38,40,20,15,16,2,88,148, -8,36,40,60,16,4,8,128,6,39,39,8,64,2,50,223,0,33,189,2,80, -144,39,8,54,42,20,15,16,2,88,148,8,36,42,56,16,4,55,39,39,8, -64,2,40,223,0,33,191,2,80,144,39,8,39,40,95,29,94,2,10,70,35, -37,107,101,114,110,101,108,11,29,94,2,10,71,35,37,109,105,110,45,115,116, -120,11,2,11,9,9,9,39,9,0}; - EVAL_ONE_SIZED_STR((char *)expr, 19665); +249,22,146,16,23,199,1,23,196,1,27,250,80,144,44,43,42,248,22,161,16, +2,56,23,197,1,10,28,23,193,2,248,22,148,16,23,194,1,11,28,248,22, +90,23,195,2,9,27,27,248,22,83,23,197,2,28,248,22,145,16,23,194,2, +248,22,148,16,23,194,1,28,248,22,144,16,23,194,2,90,144,42,11,89,146, +42,39,11,248,22,141,16,249,22,146,16,250,80,144,50,43,42,248,22,161,16, +2,56,11,11,248,22,161,16,2,57,86,95,23,195,1,23,194,1,248,22,148, +16,249,22,146,16,23,199,1,23,196,1,27,250,80,144,45,43,42,248,22,161, +16,2,56,23,197,1,10,28,23,193,2,248,22,148,16,23,194,1,11,28,23, +193,2,249,22,82,248,22,148,16,249,22,146,16,23,198,1,247,22,162,16,27, +248,22,176,20,23,199,1,28,248,22,90,23,194,2,9,27,27,248,22,83,23, +196,2,28,248,22,145,16,23,194,2,248,22,148,16,23,194,1,28,248,22,144, +16,23,194,2,90,144,42,11,89,146,42,39,11,248,22,141,16,249,22,146,16, +250,80,144,54,43,42,248,22,161,16,2,56,11,11,248,22,161,16,2,57,86, +95,23,195,1,23,194,1,248,22,148,16,249,22,146,16,23,199,1,23,196,1, +27,250,80,144,49,43,42,248,22,161,16,2,56,23,197,1,10,28,23,193,2, +248,22,148,16,23,194,1,11,28,23,193,2,249,22,82,248,22,148,16,249,22, +146,16,23,198,1,247,22,162,16,27,248,22,176,20,23,198,1,28,248,22,90, +23,194,2,9,27,248,80,144,49,56,42,248,22,83,23,196,2,28,23,193,2, +249,22,82,248,22,148,16,249,22,146,16,23,198,1,247,22,162,16,248,80,144, +51,8,53,42,248,22,176,20,23,198,1,86,94,23,193,1,248,80,144,49,8, +53,42,248,22,176,20,23,196,1,86,94,23,193,1,27,248,22,176,20,23,196, +1,28,248,22,90,23,194,2,9,27,248,80,144,47,56,42,248,22,83,23,196, +2,28,23,193,2,249,22,82,248,22,148,16,249,22,146,16,23,198,1,247,22, +162,16,248,80,144,49,8,53,42,248,22,176,20,23,198,1,86,94,23,193,1, +248,80,144,47,8,53,42,248,22,176,20,23,196,1,86,94,23,193,1,27,248, +22,176,20,23,197,1,28,248,22,90,23,194,2,9,27,27,248,22,83,23,196, +2,28,248,22,145,16,23,194,2,248,22,148,16,23,194,1,28,248,22,144,16, +23,194,2,90,144,42,11,89,146,42,39,11,248,22,141,16,249,22,146,16,250, +80,144,52,43,42,248,22,161,16,2,56,11,11,248,22,161,16,2,57,86,95, +23,195,1,23,194,1,248,22,148,16,249,22,146,16,23,199,1,23,196,1,27, +250,80,144,47,43,42,248,22,161,16,2,56,23,197,1,10,28,23,193,2,248, +22,148,16,23,194,1,11,28,23,193,2,249,22,82,248,22,148,16,249,22,146, +16,23,198,1,247,22,162,16,27,248,22,176,20,23,198,1,28,248,22,90,23, +194,2,9,27,248,80,144,47,56,42,248,22,83,23,196,2,28,23,193,2,249, +22,82,248,22,148,16,249,22,146,16,23,198,1,247,22,162,16,248,80,144,49, +8,53,42,248,22,176,20,23,198,1,86,94,23,193,1,248,80,144,47,8,53, +42,248,22,176,20,23,196,1,86,94,23,193,1,27,248,22,176,20,23,196,1, +28,248,22,90,23,194,2,9,27,248,80,144,45,56,42,248,22,83,23,196,2, +28,23,193,2,249,22,82,248,22,148,16,249,22,146,16,23,198,1,247,22,162, +16,248,80,144,47,8,53,42,248,22,176,20,23,198,1,86,94,23,193,1,248, +80,144,45,8,53,42,248,22,176,20,23,196,1,27,247,22,169,16,27,248,80, +144,42,58,42,247,80,144,42,57,42,249,80,144,43,44,41,28,23,196,2,27, +249,22,181,8,247,22,180,8,2,72,28,192,249,22,171,8,194,7,63,2,66, +2,66,250,80,144,46,8,23,42,23,198,2,2,73,27,28,23,200,1,250,22, +138,16,248,22,161,16,2,61,250,22,161,2,23,205,1,2,59,247,22,177,8, +2,74,86,94,23,199,1,11,27,248,80,144,49,8,50,42,250,22,97,9,248, +22,92,248,22,161,16,2,55,9,28,193,249,22,82,195,194,192,27,247,22,169, +16,27,248,80,144,42,58,42,247,80,144,42,57,42,249,80,144,43,44,41,28, +23,196,2,27,249,22,181,8,247,22,180,8,2,72,28,192,249,22,171,8,194, +7,63,2,66,2,66,250,80,144,46,8,23,42,23,198,2,2,73,27,28,23, +200,1,250,22,138,16,248,22,161,16,2,61,250,22,161,2,23,205,1,2,59, +247,22,177,8,2,74,86,94,23,199,1,11,27,248,80,144,49,8,51,42,250, +22,97,23,207,1,248,22,92,248,22,161,16,2,55,9,28,193,249,22,82,195, +194,192,27,247,22,169,16,27,248,80,144,42,58,42,249,80,144,44,55,40,40, +80,144,44,8,52,42,249,80,144,43,44,41,28,23,196,2,27,249,22,181,8, +247,22,180,8,2,72,28,192,249,22,171,8,194,7,63,2,66,2,66,250,80, +144,46,8,23,42,23,198,2,2,73,27,28,23,200,1,250,22,138,16,248,22, +161,16,2,61,250,22,161,2,23,205,1,2,59,247,22,177,8,2,74,86,94, +23,199,1,11,27,27,250,22,97,23,207,1,248,22,92,248,22,161,16,2,55, +23,208,1,28,248,22,90,23,194,2,9,27,27,248,22,83,23,196,2,28,248, +22,145,16,23,194,2,248,22,148,16,23,194,1,28,248,22,144,16,23,194,2, +90,144,42,11,89,146,42,39,11,248,22,141,16,249,22,146,16,250,80,144,60, +43,42,248,22,161,16,2,56,11,11,248,22,161,16,2,57,86,95,23,195,1, +23,194,1,248,22,148,16,249,22,146,16,23,199,1,23,196,1,27,250,80,144, +55,43,42,248,22,161,16,2,56,23,197,1,10,28,23,193,2,248,22,148,16, +23,194,1,11,28,23,193,2,249,22,82,248,22,148,16,249,22,146,16,23,198, +1,247,22,162,16,27,248,22,176,20,23,198,1,28,248,22,90,23,194,2,9, +27,248,80,144,55,56,42,248,22,83,23,196,2,28,23,193,2,249,22,82,248, +22,148,16,249,22,146,16,23,198,1,247,22,162,16,248,80,144,57,8,53,42, +248,22,176,20,23,198,1,86,94,23,193,1,248,80,144,55,8,53,42,248,22, +176,20,23,196,1,86,94,23,193,1,27,248,22,176,20,23,196,1,28,248,22, +90,23,194,2,9,27,248,80,144,53,56,42,248,22,83,23,196,2,28,23,193, +2,249,22,82,248,22,148,16,249,22,146,16,23,198,1,247,22,162,16,248,80, +144,55,8,53,42,248,22,176,20,23,198,1,86,94,23,193,1,248,80,144,53, +8,53,42,248,22,176,20,23,196,1,28,193,249,22,82,195,194,192,27,20,13, +144,80,144,40,46,40,26,9,80,144,49,47,40,249,22,31,11,80,144,51,46, +40,22,158,15,10,22,165,15,10,22,166,15,10,22,167,15,10,248,22,154,6, +23,196,2,28,248,22,154,7,23,194,2,12,86,94,248,22,183,9,23,194,1, +27,20,13,144,80,144,41,46,40,26,9,80,144,50,47,40,249,22,31,11,80, +144,52,46,40,22,158,15,10,22,165,15,10,22,166,15,10,22,167,15,10,248, +22,154,6,23,197,2,28,248,22,154,7,23,194,2,12,86,94,248,22,183,9, +23,194,1,27,20,13,144,80,144,42,46,40,26,9,80,144,51,47,40,249,22, +31,11,80,144,53,46,40,22,158,15,10,22,165,15,10,22,166,15,10,22,167, +15,10,248,22,154,6,23,198,2,28,248,22,154,7,23,194,2,12,86,94,248, +22,183,9,23,194,1,248,80,144,43,8,54,42,197,86,94,249,22,145,7,247, +22,178,5,23,195,2,248,22,169,6,249,22,141,4,39,249,22,189,3,28,23, +199,2,23,199,1,86,94,23,199,1,39,23,198,1,27,248,22,131,6,28,23, +198,2,86,95,23,197,1,23,196,1,23,198,1,86,94,23,198,1,27,250,80, +144,45,43,42,248,22,161,16,2,56,11,11,27,248,22,144,4,23,199,1,27, +28,23,194,2,23,194,1,86,94,23,194,1,39,27,248,22,144,4,23,202,1, +249,22,146,6,23,198,1,20,20,95,88,148,8,36,39,51,11,9,224,2,3, +33,181,2,23,196,1,23,195,1,248,80,144,41,8,54,42,193,145,40,9,20, +122,145,2,1,39,16,1,11,16,0,20,27,15,56,9,2,2,2,2,29,11, +11,11,11,11,11,11,9,9,11,11,11,10,47,80,143,39,39,20,122,145,2, +1,54,16,40,2,3,2,4,2,5,2,6,2,7,2,8,2,9,30,2,11, +1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101, +121,11,6,30,2,11,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,4,2,12,2,13,2,14,2,15,2, +16,2,17,2,18,30,2,11,1,19,99,97,99,104,101,45,99,111,110,102,105, +103,117,114,97,116,105,111,110,11,1,2,19,2,20,2,21,2,22,2,23,2, +24,2,25,2,26,2,27,2,28,2,29,30,2,11,1,21,101,120,99,101,112, +116,105,111,110,45,104,97,110,100,108,101,114,45,107,101,121,11,3,2,30,2, +31,2,32,2,33,2,34,2,35,2,36,2,37,2,38,2,39,2,40,16,0, +40,42,39,16,0,39,16,19,2,13,2,14,2,12,2,25,2,4,2,35,2, +23,2,24,2,19,2,29,2,33,2,21,2,22,2,31,2,27,2,30,2,32, +2,36,2,28,58,11,11,11,16,17,2,9,2,17,2,15,2,40,2,16,2, +7,2,26,2,39,2,18,2,20,2,38,2,5,2,34,2,8,2,37,2,3, +2,6,16,17,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, +16,17,2,9,2,17,2,15,2,40,2,16,2,7,2,26,2,39,2,18,2, +20,2,38,2,5,2,34,2,8,2,37,2,3,2,6,56,56,40,12,11,11, +16,0,16,0,16,0,39,39,11,12,11,11,16,0,16,0,16,0,39,39,16, +51,20,15,16,2,32,0,88,148,8,36,40,48,11,2,3,222,33,75,80,144, +39,39,40,20,15,16,2,249,22,161,7,7,92,7,92,80,144,39,40,40,20, +15,16,2,88,148,8,36,40,57,41,2,5,223,0,33,80,80,144,39,41,40, +20,15,16,2,88,148,8,36,41,61,41,2,6,223,0,33,82,80,144,39,42, +40,20,15,16,2,20,26,96,2,7,88,148,8,36,42,8,24,8,32,9,223, +0,33,89,88,148,8,36,41,50,55,9,223,0,33,90,88,148,8,36,40,49, +55,9,223,0,33,91,80,144,39,43,40,20,15,16,2,27,248,22,173,16,248, +22,173,8,27,28,249,22,175,9,247,22,186,8,2,43,6,1,1,59,6,1, +1,58,250,22,143,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,148,8,36,41,51,11,2,8,223,0,33,95, +80,144,39,44,40,20,15,16,2,88,148,39,40,8,44,8,128,6,2,9,223, +0,33,96,80,144,39,45,40,20,15,16,2,32,0,88,148,8,36,41,50,11, +2,12,222,33,97,80,144,39,48,40,20,15,16,2,32,0,88,148,8,36,42, +51,11,2,13,222,33,99,80,144,39,49,40,20,15,16,2,32,0,88,148,8, +36,41,49,11,2,14,222,33,100,80,144,39,50,40,20,15,16,2,88,148,39, +42,53,8,128,128,2,15,223,0,33,102,80,144,39,51,40,20,15,16,2,88, +148,39,44,55,8,128,128,2,17,223,0,33,104,80,144,39,53,40,20,15,16, +2,88,148,39,39,56,55,9,223,0,33,105,80,144,39,8,40,42,20,15,16, +2,88,148,39,39,47,16,4,39,40,8,128,4,39,2,18,223,0,33,106,80, +144,39,54,40,20,15,16,2,88,148,39,39,56,55,9,223,0,33,107,80,144, +39,8,41,42,20,15,16,2,88,148,39,39,47,16,4,39,40,8,128,8,39, +2,20,223,0,33,108,80,144,39,57,40,20,15,16,2,88,148,8,36,39,8, +44,8,128,6,9,223,0,33,109,80,144,39,8,42,42,20,15,16,2,88,148, +8,36,40,50,16,4,39,39,8,128,16,39,2,21,223,0,33,110,80,144,39, +58,40,20,15,16,2,20,28,143,32,0,88,148,39,40,48,11,2,22,222,33, +111,32,0,88,148,39,40,48,11,2,22,222,33,112,80,144,39,59,40,20,15, +16,2,88,148,8,36,40,50,8,240,0,128,0,0,2,23,223,0,33,113,80, +144,39,60,40,20,15,16,2,88,148,39,39,56,55,9,223,0,33,114,80,144, +39,8,43,42,20,15,16,2,88,148,8,36,40,51,16,4,39,40,8,128,32, +39,2,24,223,0,33,115,80,144,39,61,40,20,15,16,2,88,148,39,40,56, +55,2,19,223,0,33,116,80,144,39,56,40,20,15,16,2,88,148,8,36,41, +58,16,4,8,240,0,128,0,0,8,32,8,128,64,39,2,50,223,0,33,117, +80,144,39,8,44,42,20,15,16,2,88,148,8,36,42,52,16,4,39,39,8, +128,64,39,2,25,223,0,33,118,80,144,39,8,23,40,20,15,16,2,88,148, +39,39,56,55,9,223,0,33,119,80,144,39,8,45,42,20,15,16,2,88,148, +8,36,39,57,16,4,8,240,0,128,0,0,8,137,2,8,128,128,39,2,26, +223,0,33,120,80,144,39,8,24,40,20,15,16,2,247,22,143,2,80,144,39, +8,25,40,20,15,16,2,248,22,16,67,115,116,97,109,112,80,144,39,8,26, +40,20,15,16,2,88,148,39,40,49,8,240,0,0,0,4,9,223,0,33,122, +80,144,39,8,46,42,20,15,16,2,88,148,39,41,51,16,4,39,8,128,80, +8,240,0,64,0,0,39,2,29,223,0,33,130,2,80,144,39,8,27,40,20, +15,16,2,32,0,88,148,8,36,40,48,11,2,30,222,33,131,2,80,144,39, +8,29,40,20,15,16,2,88,148,8,36,42,48,8,240,0,0,0,2,74,109, +97,107,101,45,104,97,110,100,108,101,114,223,0,33,133,2,80,144,39,8,47, +42,20,15,16,2,88,148,39,40,47,16,4,8,128,6,8,128,104,8,240,0, +128,0,0,39,2,31,223,0,33,143,2,80,144,39,8,30,40,20,15,16,2, +88,148,39,41,59,16,2,39,8,240,0,128,0,0,2,32,223,0,33,145,2, +80,144,39,8,31,40,20,15,16,2,88,148,8,36,41,61,16,4,39,8,240, +0,64,0,0,39,40,2,50,223,0,33,146,2,80,144,39,8,48,42,20,15, +16,2,88,148,39,48,8,34,16,4,39,39,40,41,67,99,108,111,111,112,223, +0,33,153,2,80,144,39,8,49,42,20,15,16,2,88,148,39,44,8,25,16, +4,39,8,240,0,192,0,0,39,42,2,16,223,0,33,155,2,80,144,39,52, +40,20,15,16,2,88,148,39,42,58,16,4,47,39,43,39,2,33,223,0,33, +160,2,80,144,39,8,32,40,20,15,16,2,32,0,88,148,39,42,53,11,2, +35,222,33,161,2,80,144,39,8,34,40,20,15,16,2,32,0,88,148,8,36, +44,8,26,11,2,36,222,33,164,2,80,144,39,8,35,40,20,15,16,2,32, +0,88,148,8,36,41,55,11,2,37,222,33,167,2,80,144,39,8,36,40,20, +15,16,2,32,0,88,148,8,36,41,55,11,2,34,222,33,170,2,80,144,39, +8,33,40,20,15,16,2,20,28,143,32,0,88,148,39,40,47,11,2,38,222, +33,171,2,32,0,88,148,39,40,47,11,2,38,222,33,172,2,80,144,39,8, +37,40,20,15,16,2,88,148,8,36,40,58,16,4,55,41,39,43,2,50,223, +0,33,173,2,80,144,39,8,50,42,20,15,16,2,88,148,8,36,40,58,16, +4,55,41,39,47,2,50,223,0,33,174,2,80,144,39,8,51,42,20,15,16, +2,88,148,39,39,56,55,9,223,0,33,175,2,80,144,39,8,52,42,20,15, +16,2,88,148,8,36,40,8,23,16,4,55,41,39,8,32,2,50,223,0,33, +176,2,80,144,39,8,53,42,20,15,16,2,20,26,96,2,39,88,148,39,39, +60,16,4,8,32,8,140,2,39,43,9,223,0,33,177,2,88,148,39,40,61, +16,4,8,32,8,140,2,39,47,9,223,0,33,178,2,88,148,39,41,8,30, +16,4,8,48,8,139,2,39,8,48,9,223,0,33,179,2,80,144,39,8,38, +40,20,15,16,2,88,148,8,36,40,60,16,4,8,128,6,39,39,8,64,2, +50,223,0,33,180,2,80,144,39,8,54,42,20,15,16,2,88,148,8,36,42, +56,16,4,55,39,39,8,64,2,40,223,0,33,182,2,80,144,39,8,39,40, +95,29,94,2,10,70,35,37,107,101,114,110,101,108,11,29,94,2,10,71,35, +37,109,105,110,45,115,116,120,11,2,11,9,9,9,39,9,0}; + EVAL_ONE_SIZED_STR((char *)expr, 19147); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,54,46,52,46,48,46,49,53,84,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,1,0,0,8,0,23, -0,48,0,65,0,83,0,105,0,128,0,149,0,171,0,180,0,189,0,196,0, -205,0,212,0,0,0,248,1,0,0,3,1,5,105,110,115,112,48,76,35,37, -112,108,97,99,101,45,115,116,114,117,99,116,1,23,115,116,114,117,99,116,58, -84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,78,84,72,45,112, -108,97,99,101,45,99,104,97,110,110,101,108,79,84,72,45,112,108,97,99,101, -45,99,104,97,110,110,101,108,63,1,20,84,72,45,112,108,97,99,101,45,99, -104,97,110,110,101,108,45,114,101,102,1,21,84,72,45,112,108,97,99,101,45, -99,104,97,110,110,101,108,45,115,101,116,33,1,19,84,72,45,112,108,97,99, -101,45,99,104,97,110,110,101,108,45,105,110,1,20,84,72,45,112,108,97,99, -101,45,99,104,97,110,110,101,108,45,111,117,116,249,80,143,41,42,23,196,1, -39,249,80,143,41,42,23,196,1,39,249,80,143,41,42,195,39,249,80,143,41, -42,23,196,1,40,249,80,143,41,42,195,40,145,40,9,20,122,145,2,1,39, -16,1,11,16,0,20,27,15,56,9,2,2,2,2,29,11,11,11,11,11,11, -11,9,9,11,11,11,10,49,80,143,39,39,20,122,145,2,1,39,16,7,2, -3,2,4,2,5,2,6,2,7,2,8,2,9,16,0,40,42,39,16,0,39, -16,2,2,6,2,7,41,11,11,11,16,5,2,4,2,8,2,9,2,5,2, -3,16,5,11,11,11,11,11,16,5,2,4,2,8,2,9,2,5,2,3,44, -44,40,12,11,11,16,0,16,0,16,0,39,39,11,12,11,11,16,0,16,0, -16,0,39,39,16,3,20,15,16,6,253,22,132,11,2,4,11,41,39,11,248, -22,92,249,22,82,22,181,10,88,148,39,40,48,47,9,223,9,33,10,80,144, -39,39,40,80,144,39,40,40,80,144,39,41,40,80,144,39,42,40,80,144,39, -43,40,20,15,16,2,20,28,143,88,148,39,40,48,47,9,223,0,33,11,88, -148,39,40,48,47,9,223,0,33,12,80,144,39,44,40,20,15,16,2,20,28, -143,88,148,39,40,48,47,9,223,0,33,13,88,148,39,40,48,47,9,223,0, -33,14,80,144,39,45,40,93,29,94,67,113,117,111,116,101,70,35,37,107,101, -114,110,101,108,11,9,9,9,39,9,0}; - EVAL_ONE_SIZED_STR((char *)expr, 577); + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,53,46,48,46,51,84,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,15,0,0,0,1,0,0,8,0,23,0, +48,0,65,0,83,0,105,0,128,0,149,0,171,0,180,0,189,0,196,0,205, +0,212,0,0,0,248,1,0,0,3,1,5,105,110,115,112,48,76,35,37,112, +108,97,99,101,45,115,116,114,117,99,116,1,23,115,116,114,117,99,116,58,84, +72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,78,84,72,45,112,108, +97,99,101,45,99,104,97,110,110,101,108,79,84,72,45,112,108,97,99,101,45, +99,104,97,110,110,101,108,63,1,20,84,72,45,112,108,97,99,101,45,99,104, +97,110,110,101,108,45,114,101,102,1,21,84,72,45,112,108,97,99,101,45,99, +104,97,110,110,101,108,45,115,101,116,33,1,19,84,72,45,112,108,97,99,101, +45,99,104,97,110,110,101,108,45,105,110,1,20,84,72,45,112,108,97,99,101, +45,99,104,97,110,110,101,108,45,111,117,116,249,80,143,41,42,23,196,1,39, +249,80,143,41,42,23,196,1,39,249,80,143,41,42,195,39,249,80,143,41,42, +23,196,1,40,249,80,143,41,42,195,40,145,40,9,20,122,145,2,1,39,16, +1,11,16,0,20,27,15,56,9,2,2,2,2,29,11,11,11,11,11,11,11, +9,9,11,11,11,10,49,80,143,39,39,20,122,145,2,1,39,16,7,2,3, +2,4,2,5,2,6,2,7,2,8,2,9,16,0,40,42,39,16,0,39,16, +2,2,6,2,7,41,11,11,11,16,5,2,4,2,8,2,9,2,5,2,3, +16,5,11,11,11,11,11,16,5,2,4,2,8,2,9,2,5,2,3,44,44, +40,12,11,11,16,0,16,0,16,0,39,39,11,12,11,11,16,0,16,0,16, +0,39,39,16,3,20,15,16,6,253,22,132,11,2,4,11,41,39,11,248,22, +92,249,22,82,22,181,10,88,148,39,40,48,47,9,223,9,33,10,80,144,39, +39,40,80,144,39,40,40,80,144,39,41,40,80,144,39,42,40,80,144,39,43, +40,20,15,16,2,20,28,143,88,148,39,40,48,47,9,223,0,33,11,88,148, +39,40,48,47,9,223,0,33,12,80,144,39,44,40,20,15,16,2,20,28,143, +88,148,39,40,48,47,9,223,0,33,13,88,148,39,40,48,47,9,223,0,33, +14,80,144,39,45,40,93,29,94,67,113,117,111,116,101,70,35,37,107,101,114, +110,101,108,11,9,9,9,39,9,0}; + EVAL_ONE_SIZED_STR((char *)expr, 576); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,54,46,52,46,48,46,49,53,84,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,98,0,0,0,1,0,0,8,0,15, -0,26,0,53,0,59,0,73,0,86,0,112,0,129,0,151,0,159,0,171,0, -186,0,202,0,220,0,241,0,253,0,13,1,36,1,60,1,72,1,103,1,108, -1,113,1,131,1,137,1,142,1,151,1,156,1,162,1,167,1,171,1,186,1, -191,1,198,1,202,1,207,1,214,1,221,1,232,1,240,1,87,2,122,2,225, -2,4,3,98,3,133,3,227,3,6,4,27,11,57,11,108,11,183,11,199,11, -215,11,229,11,245,11,64,12,80,12,96,12,112,12,187,12,94,13,110,13,185, -13,180,14,60,15,135,15,42,16,55,16,208,16,136,17,179,17,5,18,138,18, -199,18,207,18,218,18,252,19,99,20,112,20,33,21,40,21,200,21,44,22,66, -22,76,22,90,22,128,22,227,22,231,22,238,22,188,23,207,32,4,33,28,33, -52,33,0,0,101,37,0,0,3,1,5,105,110,115,112,48,68,35,37,98,111, -111,116,72,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,67,113, -117,111,116,101,29,94,2,5,70,35,37,112,97,114,97,109,122,11,29,94,2, -5,69,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,78,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,69,67,65,67,72,69,45,78,73, -45,112,97,116,104,45,99,97,99,104,101,76,112,97,116,104,45,99,97,99,104, -101,45,103,101,116,77,112,97,116,104,45,99,97,99,104,101,45,115,101,116,33, -79,45,108,111,97,100,105,110,103,45,102,105,108,101,110,97,109,101,1,19,45, -108,111,97,100,105,110,103,45,112,114,111,109,112,116,45,116,97,103,73,45,112, -114,101,118,45,114,101,108,116,111,77,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,1,22,102,111,114,109,97,116,45,115,111,117,114,99,101, -45,108,111,99,97,116,105,111,110,73,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,66,98,111,111,116,66,115,101,97,108,79, -108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,5,4,46,114, -107,116,66,115,97,109,101,6,6,6,110,97,116,105,118,101,5,3,46,122,111, -67,105,108,111,111,112,66,108,111,111,112,65,108,105,98,6,12,12,109,111,100, -117,108,101,45,112,97,116,104,63,6,2,2,46,46,68,115,117,98,109,111,100, -6,1,1,46,66,102,105,108,101,68,112,108,97,110,101,116,6,4,4,46,114, -107,116,6,8,8,109,97,105,110,46,114,107,116,69,105,103,110,111,114,101,100, -27,252,22,138,16,28,249,22,175,9,23,203,2,2,27,86,94,23,201,1,23, -200,1,28,248,22,143,16,23,202,2,249,22,138,16,23,202,1,23,203,1,249, -80,144,50,45,42,23,202,1,23,203,1,23,203,1,2,28,247,22,187,8,249, -80,144,50,46,42,23,201,1,80,144,50,39,41,27,250,22,156,16,196,11,32, -0,88,148,8,36,39,44,11,9,222,11,28,192,249,22,82,195,194,11,249,22, -5,20,20,96,88,148,8,36,40,57,8,129,3,9,226,5,6,3,2,33,42, -23,195,1,23,196,1,23,199,1,23,197,1,27,252,22,138,16,28,249,22,175, -9,23,203,2,2,27,86,94,23,201,1,23,200,1,28,248,22,143,16,23,202, -2,249,22,138,16,23,202,1,23,203,1,249,80,144,50,45,42,23,202,1,23, -203,1,23,203,1,2,28,247,22,187,8,249,80,144,50,46,42,23,201,1,80, -144,50,39,41,27,250,22,156,16,196,11,32,0,88,148,8,36,39,44,11,9, -222,11,28,192,249,22,82,195,194,11,249,22,5,20,20,96,88,148,8,36,40, -57,8,129,3,9,226,5,6,3,2,33,44,23,195,1,23,196,1,23,199,1, -23,197,1,27,250,22,138,16,28,249,22,175,9,23,201,2,2,27,86,94,23, -199,1,23,198,1,28,248,22,143,16,23,200,2,249,22,138,16,23,200,1,23, -201,1,249,80,144,48,45,42,23,200,1,23,201,1,23,201,1,249,80,144,48, -46,42,23,199,1,2,29,27,250,22,156,16,196,11,32,0,88,148,8,36,39, -44,11,9,222,11,28,192,249,22,82,195,194,11,249,22,5,20,20,96,88,148, -8,36,40,55,8,128,3,9,226,5,6,3,2,33,46,23,195,1,23,196,1, -23,199,1,23,197,1,27,250,22,138,16,28,249,22,175,9,23,201,2,2,27, -86,94,23,199,1,23,198,1,28,248,22,143,16,23,200,2,249,22,138,16,23, -200,1,23,201,1,249,80,144,48,45,42,23,200,1,23,201,1,23,201,1,249, -80,144,48,46,42,23,199,1,2,29,27,250,22,156,16,196,11,32,0,88,148, -8,36,39,44,11,9,222,11,28,192,249,22,82,195,194,11,249,22,5,20,20, -96,88,148,8,36,40,55,8,128,3,9,226,5,6,3,2,33,48,23,195,1, -23,196,1,23,199,1,23,197,1,86,95,28,248,80,144,40,43,42,23,195,2, -12,250,22,188,11,2,25,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,66,23,196,2,10,28,248,22,91, -23,196,2,28,249,22,135,4,248,22,96,23,198,2,40,28,28,248,22,66,248, -22,83,23,197,2,10,248,22,173,9,248,22,83,23,197,2,249,22,4,22,66, -248,22,84,23,198,2,11,11,11,10,12,250,22,188,11,2,25,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,133,5,11,27, -28,23,194,2,250,22,161,2,80,143,44,44,248,22,138,17,247,22,151,14,11, -11,27,28,23,194,2,250,22,161,2,248,22,84,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,144,80,144,42, -41,40,250,80,144,45,42,40,249,22,31,11,80,144,47,41,40,22,134,5,248, -22,105,23,197,2,27,248,22,114,23,195,2,20,13,144,80,144,43,41,40,250, -80,144,46,42,40,249,22,31,11,80,144,48,41,40,22,183,5,28,248,22,184, -15,23,197,2,23,196,1,86,94,23,196,1,247,22,162,16,249,247,22,181,5, -248,22,175,20,23,197,1,23,201,1,86,94,23,193,1,27,28,248,22,145,16, -23,199,2,23,198,2,27,247,22,183,5,28,192,249,22,146,16,23,201,2,194, -23,199,2,90,144,42,11,89,146,42,39,11,248,22,141,16,23,202,1,86,94, -23,195,1,90,144,41,11,89,146,41,39,11,28,23,204,2,27,248,22,189,15, -23,198,2,19,248,22,153,8,194,28,28,249,22,164,20,23,195,4,43,249,22, -156,8,2,26,249,22,159,8,197,249,22,189,3,23,199,4,43,11,249,22,7, -23,200,2,248,22,129,16,249,22,160,8,250,22,159,8,201,39,249,22,189,3, -23,203,4,43,5,3,46,115,115,249,22,7,23,200,2,11,2,249,22,7,23, -198,2,11,27,28,249,22,175,9,23,196,2,23,199,2,23,199,2,249,22,138, -16,23,198,2,23,196,2,27,28,23,196,2,28,249,22,175,9,23,198,2,23, -200,1,23,200,1,86,94,23,200,1,249,22,138,16,23,199,2,23,198,2,86, -95,23,200,1,23,198,1,11,27,28,249,22,175,9,23,200,2,70,114,101,108, -97,116,105,118,101,86,94,23,198,1,2,27,23,198,1,27,247,22,167,16,27, -247,22,168,16,27,250,22,156,16,23,201,2,11,32,0,88,148,8,36,39,44, -11,9,222,11,27,28,23,194,2,249,22,82,23,201,2,23,196,1,86,94,23, -194,1,11,27,28,23,199,2,28,23,194,2,11,27,250,22,156,16,23,203,2, -11,32,0,88,148,8,36,39,44,11,9,222,11,28,192,249,22,82,23,202,2, -194,11,11,27,28,23,195,2,23,195,2,23,194,2,27,28,23,196,2,23,196, -2,248,22,173,9,23,196,2,27,28,23,205,2,28,23,196,2,86,94,23,197, -1,23,196,2,248,22,173,9,23,198,1,86,94,23,197,1,11,27,28,23,195, -2,27,249,22,5,88,148,39,40,51,8,129,3,9,226,24,11,12,15,33,43, -23,203,2,27,28,23,198,2,11,193,28,192,192,28,193,28,23,198,2,28,249, -22,137,4,248,22,84,196,248,22,84,23,201,2,193,11,11,11,11,28,23,193, -2,86,105,23,213,1,23,212,1,23,206,1,23,205,1,23,204,1,23,203,1, -23,201,1,23,200,1,23,197,1,23,196,1,23,195,1,23,194,1,20,13,144, -80,144,60,41,40,250,80,144,8,24,42,40,249,22,31,11,80,144,8,26,41, -40,22,134,5,11,20,13,144,80,144,60,41,40,250,80,144,8,24,42,40,249, -22,31,11,80,144,8,26,41,40,22,183,5,28,248,22,184,15,23,206,2,23, -205,1,86,94,23,205,1,247,22,162,16,249,247,22,172,16,248,22,83,23,196, -1,23,218,1,86,94,23,193,1,27,28,23,195,2,27,249,22,5,88,148,39, -40,51,8,129,3,9,226,25,12,13,17,33,45,23,204,2,27,28,23,200,2, -11,193,28,192,192,28,193,28,199,28,249,22,137,4,248,22,84,196,248,22,84, -202,193,11,11,11,86,94,23,198,1,11,28,23,193,2,86,103,23,214,1,23, -213,1,23,207,1,23,206,1,23,205,1,23,202,1,23,201,1,23,197,1,23, -196,1,23,195,1,20,13,144,80,144,61,41,40,250,80,144,8,25,42,40,249, -22,31,11,80,144,8,27,41,40,22,134,5,23,207,1,20,13,144,80,144,61, -41,40,250,80,144,8,25,42,40,249,22,31,11,80,144,8,27,41,40,22,183, -5,28,248,22,184,15,23,207,2,23,206,1,86,94,23,206,1,247,22,162,16, -249,247,22,172,16,248,22,83,23,196,1,23,219,1,86,94,23,193,1,27,28, -23,197,2,27,249,22,5,20,20,94,88,148,39,40,51,8,128,3,9,226,26, -13,14,17,33,47,23,210,1,23,205,2,27,28,23,200,2,11,193,28,192,192, -28,193,28,23,200,2,28,249,22,137,4,248,22,84,196,248,22,84,23,203,2, -193,11,11,11,86,94,23,207,1,11,28,23,193,2,86,101,23,208,1,23,206, -1,23,205,1,23,203,1,23,202,1,23,198,1,23,197,1,23,196,1,86,94, -27,248,22,83,23,195,2,28,23,215,2,250,22,159,2,248,22,84,23,219,1, -23,219,1,250,22,92,23,199,1,11,23,211,2,12,20,13,144,80,144,8,23, -41,40,250,80,144,8,26,42,40,249,22,31,11,80,144,8,28,41,40,22,134, -5,11,20,13,144,80,144,8,23,41,40,250,80,144,8,26,42,40,249,22,31, -11,80,144,8,28,41,40,22,183,5,28,248,22,184,15,23,208,2,23,207,1, -86,94,23,207,1,247,22,162,16,249,247,22,181,5,248,22,175,20,23,196,1, -23,220,1,86,94,23,193,1,27,28,23,197,1,27,249,22,5,20,20,95,88, -148,39,40,51,8,128,3,9,226,27,14,15,19,33,49,23,212,1,23,207,1, -23,206,1,27,28,23,201,2,11,193,28,192,192,28,193,28,200,28,249,22,137, -4,248,22,84,196,248,22,84,203,193,11,11,11,86,97,23,209,1,23,204,1, -23,203,1,23,199,1,11,28,23,193,2,86,95,23,207,1,23,198,1,86,94, -27,248,22,83,23,195,2,28,23,216,2,250,22,159,2,248,22,84,23,220,1, -23,220,1,250,22,92,23,199,1,23,213,2,23,212,2,12,20,13,144,80,144, -8,24,41,40,250,80,144,8,27,42,40,249,22,31,11,80,144,8,29,41,40, -22,134,5,23,209,1,20,13,144,80,144,8,24,41,40,250,80,144,8,27,42, -40,249,22,31,11,80,144,8,29,41,40,22,183,5,28,248,22,184,15,23,209, -2,23,208,1,86,94,23,208,1,247,22,162,16,249,247,22,181,5,248,22,175, -20,23,196,1,23,221,1,86,96,23,216,1,23,215,1,23,193,1,28,28,248, -22,80,23,220,2,248,22,175,20,23,220,2,10,27,28,23,199,2,86,94,23, -207,1,23,208,1,86,94,23,208,1,23,207,1,28,28,248,22,80,23,221,2, -248,22,173,9,248,22,132,16,23,195,2,11,12,20,13,144,80,144,8,25,41, -40,250,80,144,8,28,42,40,249,22,31,11,80,144,8,30,41,40,22,134,5, -28,23,223,2,28,23,202,1,11,23,196,2,86,94,23,202,1,11,20,13,144, -80,144,8,25,41,40,250,80,144,8,28,42,40,249,22,31,11,80,144,8,30, -41,40,22,183,5,28,248,22,184,15,23,210,2,23,209,1,86,94,23,209,1, -247,22,162,16,249,247,22,181,5,23,195,1,23,222,1,12,28,23,194,2,250, -22,159,2,248,22,84,23,198,1,23,196,1,250,22,92,23,201,1,23,202,1, -23,203,1,12,27,249,22,131,9,80,144,42,50,41,249,22,132,4,248,22,128, -4,248,22,178,2,200,8,128,8,27,28,193,248,22,181,2,194,11,28,192,27, -249,22,103,198,195,28,192,248,22,84,193,11,11,27,249,22,132,4,248,22,128, -4,248,22,178,2,23,199,2,8,128,8,27,249,22,131,9,80,144,43,50,41, -23,196,2,250,22,132,9,80,144,44,50,41,23,197,1,248,22,180,2,249,22, -82,249,22,82,23,204,1,23,205,1,27,28,23,200,2,248,22,181,2,200,11, -28,192,192,9,32,54,88,149,8,38,42,54,11,2,30,39,223,48,33,69,32, -55,88,149,8,38,42,53,11,2,30,39,223,48,33,68,32,56,88,148,8,36, -40,53,11,2,31,222,33,67,32,57,88,149,8,38,42,53,11,2,30,39,223, -48,33,58,28,249,22,133,4,23,197,2,23,196,4,248,22,92,193,28,249,22, -142,9,7,47,249,22,163,7,23,197,2,23,199,2,249,22,82,250,22,181,7, -23,198,2,39,23,200,2,248,2,56,249,22,181,7,23,198,1,248,22,186,3, -23,201,1,250,2,57,195,23,197,4,248,22,186,3,198,32,59,88,149,8,38, -42,55,11,2,30,39,223,48,33,66,32,60,88,149,8,38,42,54,11,2,30, -39,223,48,33,63,32,61,88,149,8,38,42,53,11,2,30,39,223,48,33,62, -28,249,22,133,4,23,197,2,23,196,4,248,22,92,193,28,249,22,142,9,7, -47,249,22,163,7,23,197,2,23,199,2,249,22,82,250,22,181,7,23,198,2, -39,23,200,2,248,2,56,249,22,181,7,23,198,1,248,22,186,3,23,201,1, -250,2,61,195,23,197,4,248,22,186,3,198,28,249,22,133,4,23,197,2,23, -196,4,248,22,92,193,28,249,22,142,9,7,47,249,22,163,7,23,197,2,23, -199,2,249,22,82,250,22,181,7,23,198,2,39,23,200,2,27,249,22,181,7, -23,198,1,248,22,186,3,23,201,1,19,248,22,162,7,23,195,2,250,2,61, -23,197,1,23,196,4,39,2,27,248,22,186,3,23,197,1,28,249,22,133,4, -23,195,2,23,197,4,248,22,92,194,28,249,22,142,9,7,47,249,22,163,7, -23,198,2,23,197,2,249,22,82,250,22,181,7,23,199,2,39,23,198,2,248, -2,56,249,22,181,7,23,199,1,248,22,186,3,23,199,1,250,2,60,196,23, -198,4,248,22,186,3,196,32,64,88,149,8,38,42,53,11,2,30,39,223,48, -33,65,28,249,22,133,4,23,197,2,23,196,4,248,22,92,193,28,249,22,142, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,53,46,48,46,51,84,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,98,0,0,0,1,0,0,8,0,15,0, +26,0,53,0,59,0,73,0,86,0,112,0,129,0,151,0,159,0,171,0,186, +0,202,0,220,0,241,0,253,0,13,1,36,1,60,1,72,1,103,1,108,1, +113,1,131,1,137,1,142,1,151,1,156,1,162,1,167,1,171,1,186,1,191, +1,198,1,202,1,207,1,214,1,221,1,232,1,240,1,87,2,122,2,225,2, +4,3,98,3,133,3,227,3,6,4,27,11,57,11,108,11,183,11,199,11,215, +11,229,11,245,11,64,12,80,12,96,12,112,12,187,12,94,13,110,13,185,13, +180,14,60,15,135,15,42,16,55,16,208,16,136,17,179,17,5,18,138,18,199, +18,207,18,218,18,252,19,99,20,112,20,33,21,40,21,200,21,44,22,66,22, +76,22,90,22,128,22,227,22,231,22,238,22,188,23,207,32,4,33,28,33,52, +33,0,0,108,37,0,0,3,1,5,105,110,115,112,48,68,35,37,98,111,111, +116,72,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,67,113,117, +111,116,101,29,94,2,5,70,35,37,112,97,114,97,109,122,11,29,94,2,5, +69,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,78,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,69,67,65,67,72,69,45,78,73,45, +112,97,116,104,45,99,97,99,104,101,76,112,97,116,104,45,99,97,99,104,101, +45,103,101,116,77,112,97,116,104,45,99,97,99,104,101,45,115,101,116,33,79, +45,108,111,97,100,105,110,103,45,102,105,108,101,110,97,109,101,1,19,45,108, +111,97,100,105,110,103,45,112,114,111,109,112,116,45,116,97,103,73,45,112,114, +101,118,45,114,101,108,116,111,77,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,1,22,102,111,114,109,97,116,45,115,111,117,114,99,101,45, +108,111,99,97,116,105,111,110,73,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,66,98,111,111,116,66,115,101,97,108,79,108, +111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,5,4,46,114,107, +116,66,115,97,109,101,6,6,6,110,97,116,105,118,101,5,3,46,122,111,67, +105,108,111,111,112,66,108,111,111,112,65,108,105,98,6,12,12,109,111,100,117, +108,101,45,112,97,116,104,63,6,2,2,46,46,68,115,117,98,109,111,100,6, +1,1,46,66,102,105,108,101,68,112,108,97,110,101,116,6,4,4,46,114,107, +116,6,8,8,109,97,105,110,46,114,107,116,69,105,103,110,111,114,101,100,27, +252,22,138,16,28,249,22,175,9,23,203,2,2,27,86,94,23,201,1,23,200, +1,28,248,22,143,16,23,202,2,249,22,138,16,23,202,1,23,203,1,249,80, +144,50,45,42,23,202,1,23,203,1,23,203,1,2,28,247,22,187,8,249,80, +144,50,46,42,23,201,1,80,144,50,39,41,27,250,22,156,16,196,11,32,0, +88,148,8,36,39,44,11,9,222,11,28,192,249,22,82,195,194,11,249,22,5, +20,20,96,88,148,8,36,40,57,8,129,3,9,226,5,6,3,2,33,42,23, +195,1,23,196,1,23,199,1,23,197,1,27,252,22,138,16,28,249,22,175,9, +23,203,2,2,27,86,94,23,201,1,23,200,1,28,248,22,143,16,23,202,2, +249,22,138,16,23,202,1,23,203,1,249,80,144,50,45,42,23,202,1,23,203, +1,23,203,1,2,28,247,22,187,8,249,80,144,50,46,42,23,201,1,80,144, +50,39,41,27,250,22,156,16,196,11,32,0,88,148,8,36,39,44,11,9,222, +11,28,192,249,22,82,195,194,11,249,22,5,20,20,96,88,148,8,36,40,57, +8,129,3,9,226,5,6,3,2,33,44,23,195,1,23,196,1,23,199,1,23, +197,1,27,250,22,138,16,28,249,22,175,9,23,201,2,2,27,86,94,23,199, +1,23,198,1,28,248,22,143,16,23,200,2,249,22,138,16,23,200,1,23,201, +1,249,80,144,48,45,42,23,200,1,23,201,1,23,201,1,249,80,144,48,46, +42,23,199,1,2,29,27,250,22,156,16,196,11,32,0,88,148,8,36,39,44, +11,9,222,11,28,192,249,22,82,195,194,11,249,22,5,20,20,96,88,148,8, +36,40,55,8,128,3,9,226,5,6,3,2,33,46,23,195,1,23,196,1,23, +199,1,23,197,1,27,250,22,138,16,28,249,22,175,9,23,201,2,2,27,86, +94,23,199,1,23,198,1,28,248,22,143,16,23,200,2,249,22,138,16,23,200, +1,23,201,1,249,80,144,48,45,42,23,200,1,23,201,1,23,201,1,249,80, +144,48,46,42,23,199,1,2,29,27,250,22,156,16,196,11,32,0,88,148,8, +36,39,44,11,9,222,11,28,192,249,22,82,195,194,11,249,22,5,20,20,96, +88,148,8,36,40,55,8,128,3,9,226,5,6,3,2,33,48,23,195,1,23, +196,1,23,199,1,23,197,1,86,95,28,248,80,144,40,43,42,23,195,2,12, +250,22,188,11,2,25,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,66,23,196,2,10,28,248,22,91,23, +196,2,28,249,22,135,4,248,22,96,23,198,2,40,28,28,248,22,66,248,22, +83,23,197,2,10,248,22,173,9,248,22,83,23,197,2,249,22,4,22,66,248, +22,84,23,198,2,11,11,11,10,12,250,22,188,11,2,25,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,133,5,11,27,28, +23,194,2,250,22,161,2,80,143,44,44,248,22,138,17,247,22,151,14,11,11, +27,28,23,194,2,250,22,161,2,248,22,84,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,144,80,144,42,41, +40,250,80,144,45,42,40,249,22,31,11,80,144,47,41,40,22,134,5,248,22, +105,23,197,2,27,248,22,114,23,195,2,20,13,144,80,144,43,41,40,250,80, +144,46,42,40,249,22,31,11,80,144,48,41,40,22,183,5,28,248,22,184,15, +23,197,2,23,196,1,86,94,23,196,1,247,22,162,16,249,247,22,181,5,248, +22,175,20,23,197,1,23,201,1,86,94,23,193,1,27,28,248,22,145,16,23, +199,2,23,198,2,27,247,22,183,5,28,192,249,22,146,16,23,201,2,194,23, +199,2,90,144,42,11,89,146,42,39,11,248,22,141,16,23,202,1,86,94,23, +195,1,90,144,41,11,89,146,41,39,11,28,23,204,2,27,248,22,189,15,23, +198,2,19,248,22,153,8,194,28,28,249,22,164,20,23,195,4,43,249,22,156, +8,2,26,249,22,159,8,197,249,22,189,3,23,199,4,43,11,249,22,7,23, +200,2,248,22,129,16,249,22,160,8,250,22,159,8,201,39,249,22,189,3,23, +203,4,43,5,3,46,115,115,249,22,7,23,200,2,11,2,249,22,7,23,198, +2,11,27,28,249,22,175,9,23,196,2,23,199,2,23,199,2,249,22,138,16, +23,198,2,23,196,2,27,28,23,196,2,28,249,22,175,9,23,198,2,23,200, +1,23,200,1,86,94,23,200,1,249,22,138,16,23,199,2,23,198,2,86,95, +23,200,1,23,198,1,11,27,28,249,22,175,9,23,200,2,70,114,101,108,97, +116,105,118,101,86,94,23,198,1,2,27,23,198,1,27,247,22,167,16,27,247, +22,168,16,27,250,22,156,16,23,201,2,11,32,0,88,148,8,36,39,44,11, +9,222,11,27,28,23,194,2,249,22,82,23,201,2,23,196,1,86,94,23,194, +1,11,27,28,23,199,2,28,23,194,2,11,27,250,22,156,16,23,203,2,11, +32,0,88,148,8,36,39,44,11,9,222,11,28,192,249,22,82,23,202,2,194, +11,11,27,28,23,195,2,23,195,2,23,194,2,27,28,23,196,2,23,196,2, +248,22,173,9,23,196,2,27,28,23,205,2,28,23,196,2,86,94,23,197,1, +23,196,2,248,22,173,9,23,198,1,86,94,23,197,1,11,27,28,23,195,2, +27,249,22,5,88,148,39,40,51,8,129,3,9,226,24,11,12,15,33,43,23, +203,2,27,28,23,198,2,11,193,28,192,192,28,193,28,23,198,2,28,249,22, +137,4,248,22,84,196,248,22,84,23,201,2,193,11,11,11,11,28,23,193,2, +86,105,23,213,1,23,212,1,23,206,1,23,205,1,23,204,1,23,203,1,23, +201,1,23,200,1,23,197,1,23,196,1,23,195,1,23,194,1,20,13,144,80, +144,60,41,40,250,80,144,8,24,42,40,249,22,31,11,80,144,8,26,41,40, +22,134,5,11,20,13,144,80,144,60,41,40,250,80,144,8,24,42,40,249,22, +31,11,80,144,8,26,41,40,22,183,5,28,248,22,184,15,23,206,2,23,205, +1,86,94,23,205,1,247,22,162,16,249,247,22,172,16,248,22,83,23,196,1, +23,218,1,86,94,23,193,1,27,28,23,195,2,27,249,22,5,88,148,39,40, +51,8,129,3,9,226,25,12,13,17,33,45,23,204,2,27,28,23,200,2,11, +193,28,192,192,28,193,28,199,28,249,22,137,4,248,22,84,196,248,22,84,202, +193,11,11,11,86,94,23,198,1,11,28,23,193,2,86,103,23,214,1,23,213, +1,23,207,1,23,206,1,23,205,1,23,202,1,23,201,1,23,197,1,23,196, +1,23,195,1,20,13,144,80,144,61,41,40,250,80,144,8,25,42,40,249,22, +31,11,80,144,8,27,41,40,22,134,5,23,207,1,20,13,144,80,144,61,41, +40,250,80,144,8,25,42,40,249,22,31,11,80,144,8,27,41,40,22,183,5, +28,248,22,184,15,23,207,2,23,206,1,86,94,23,206,1,247,22,162,16,249, +247,22,172,16,248,22,83,23,196,1,23,219,1,86,94,23,193,1,27,28,23, +197,2,27,249,22,5,20,20,94,88,148,39,40,51,8,128,3,9,226,26,13, +14,17,33,47,23,210,1,23,205,2,27,28,23,200,2,11,193,28,192,192,28, +193,28,23,200,2,28,249,22,137,4,248,22,84,196,248,22,84,23,203,2,193, +11,11,11,86,94,23,207,1,11,28,23,193,2,86,101,23,208,1,23,206,1, +23,205,1,23,203,1,23,202,1,23,198,1,23,197,1,23,196,1,86,94,27, +248,22,83,23,195,2,28,23,215,2,250,22,159,2,248,22,84,23,219,1,23, +219,1,250,22,92,23,199,1,11,23,211,2,12,20,13,144,80,144,8,23,41, +40,250,80,144,8,26,42,40,249,22,31,11,80,144,8,28,41,40,22,134,5, +11,20,13,144,80,144,8,23,41,40,250,80,144,8,26,42,40,249,22,31,11, +80,144,8,28,41,40,22,183,5,28,248,22,184,15,23,208,2,23,207,1,86, +94,23,207,1,247,22,162,16,249,247,22,181,5,248,22,175,20,23,196,1,23, +220,1,86,94,23,193,1,27,28,23,197,1,27,249,22,5,20,20,95,88,148, +39,40,51,8,128,3,9,226,27,14,15,19,33,49,23,212,1,23,207,1,23, +206,1,27,28,23,201,2,11,193,28,192,192,28,193,28,200,28,249,22,137,4, +248,22,84,196,248,22,84,203,193,11,11,11,86,97,23,209,1,23,204,1,23, +203,1,23,199,1,11,28,23,193,2,86,95,23,207,1,23,198,1,86,94,27, +248,22,83,23,195,2,28,23,216,2,250,22,159,2,248,22,84,23,220,1,23, +220,1,250,22,92,23,199,1,23,213,2,23,212,2,12,20,13,144,80,144,8, +24,41,40,250,80,144,8,27,42,40,249,22,31,11,80,144,8,29,41,40,22, +134,5,23,209,1,20,13,144,80,144,8,24,41,40,250,80,144,8,27,42,40, +249,22,31,11,80,144,8,29,41,40,22,183,5,28,248,22,184,15,23,209,2, +23,208,1,86,94,23,208,1,247,22,162,16,249,247,22,181,5,248,22,175,20, +23,196,1,23,221,1,86,96,23,216,1,23,215,1,23,193,1,28,28,248,22, +80,23,220,2,248,22,175,20,23,220,2,10,27,28,23,199,2,86,94,23,207, +1,23,208,1,86,94,23,208,1,23,207,1,28,28,248,22,80,23,221,2,248, +22,173,9,248,22,132,16,23,195,2,11,12,20,13,144,80,144,8,25,41,40, +250,80,144,8,28,42,40,249,22,31,11,80,144,8,30,41,40,22,134,5,28, +23,223,2,28,23,202,1,11,23,196,2,86,94,23,202,1,11,20,13,144,80, +144,8,25,41,40,250,80,144,8,28,42,40,249,22,31,11,80,144,8,30,41, +40,22,183,5,28,248,22,184,15,23,210,2,23,209,1,86,94,23,209,1,247, +22,162,16,249,247,22,181,5,23,195,1,23,222,1,12,28,23,194,2,250,22, +159,2,248,22,84,23,198,1,23,196,1,250,22,92,23,201,1,23,202,1,23, +203,1,12,27,249,22,131,9,80,144,42,50,41,249,22,132,4,248,22,128,4, +248,22,178,2,200,8,128,8,27,28,193,248,22,181,2,194,11,28,192,27,249, +22,103,198,195,28,192,248,22,84,193,11,11,27,249,22,132,4,248,22,128,4, +248,22,178,2,23,199,2,8,128,8,27,249,22,131,9,80,144,43,50,41,23, +196,2,250,22,132,9,80,144,44,50,41,23,197,1,248,22,180,2,249,22,82, +249,22,82,23,204,1,23,205,1,27,28,23,200,2,248,22,181,2,200,11,28, +192,192,9,32,54,88,149,8,38,42,54,11,2,30,39,223,48,33,69,32,55, +88,149,8,38,42,53,11,2,30,39,223,48,33,68,32,56,88,148,8,36,40, +53,11,2,31,222,33,67,32,57,88,149,8,38,42,53,11,2,30,39,223,48, +33,58,28,249,22,133,4,23,197,2,23,196,4,248,22,92,193,28,249,22,142, 9,7,47,249,22,163,7,23,197,2,23,199,2,249,22,82,250,22,181,7,23, 198,2,39,23,200,2,248,2,56,249,22,181,7,23,198,1,248,22,186,3,23, -201,1,250,2,64,195,23,197,4,248,22,186,3,198,28,249,22,133,4,23,197, -2,23,196,4,248,22,92,193,28,249,22,142,9,7,47,249,22,163,7,23,197, -2,23,199,2,249,22,82,250,22,181,7,23,198,2,39,23,200,2,27,249,22, -181,7,23,198,1,248,22,186,3,23,201,1,19,248,22,162,7,23,195,2,250, -2,60,23,197,1,23,196,4,39,2,27,248,22,186,3,23,197,1,28,249,22, -133,4,23,195,2,23,197,4,248,22,92,194,28,249,22,142,9,7,47,249,22, -163,7,23,198,2,23,197,2,249,22,82,250,22,181,7,23,199,2,39,23,198, -2,27,249,22,181,7,23,199,1,248,22,186,3,23,199,1,19,248,22,162,7, -23,195,2,250,2,64,23,197,1,23,196,4,39,2,27,248,22,186,3,23,195, -1,28,249,22,133,4,23,195,2,23,198,4,248,22,92,195,28,249,22,142,9, -7,47,249,22,163,7,23,199,2,23,197,2,249,22,82,250,22,181,7,23,200, -2,39,23,198,2,248,2,56,249,22,181,7,23,200,1,248,22,186,3,23,199, -1,250,2,59,197,23,199,4,248,22,186,3,196,19,248,22,162,7,23,195,2, -28,249,22,160,20,39,23,195,4,248,22,92,194,28,249,22,142,9,7,47,249, -22,163,7,23,198,2,39,249,22,82,250,22,181,7,23,199,2,39,39,27,249, -22,181,7,23,199,1,40,19,248,22,162,7,23,195,2,250,2,57,23,197,1, -23,196,4,39,2,28,249,22,160,20,40,23,195,4,248,22,92,194,28,249,22, -142,9,7,47,249,22,163,7,23,198,2,40,249,22,82,250,22,181,7,23,199, -2,39,40,248,2,56,249,22,181,7,23,199,1,41,250,2,59,196,23,196,4, -41,2,28,249,22,133,4,23,197,2,23,196,4,248,22,92,193,28,249,22,142, -9,7,47,249,22,163,7,23,197,2,23,199,2,249,22,82,250,22,181,7,23, -198,2,39,23,200,2,248,2,56,249,22,181,7,23,198,1,248,22,186,3,23, -201,1,250,2,55,195,23,197,4,248,22,186,3,198,28,249,22,133,4,23,197, -2,23,196,4,248,22,92,193,28,249,22,142,9,7,47,249,22,163,7,23,197, -2,23,199,2,249,22,82,250,22,181,7,23,198,2,39,23,200,2,27,249,22, -181,7,23,198,1,248,22,186,3,23,201,1,19,248,22,162,7,23,195,2,250, -2,55,23,197,1,23,196,4,39,2,27,248,22,186,3,23,197,1,28,249,22, -133,4,23,195,2,23,197,4,248,22,92,194,28,249,22,142,9,7,47,249,22, -163,7,23,198,2,23,197,2,249,22,82,250,22,181,7,23,199,2,39,23,198, -2,248,2,56,249,22,181,7,23,199,1,248,22,186,3,23,199,1,250,2,54, -196,23,198,4,248,22,186,3,196,32,70,88,148,39,40,58,11,2,31,222,33, -71,28,248,22,90,248,22,84,23,195,2,249,22,7,9,248,22,175,20,23,196, -1,90,144,41,11,89,146,41,39,11,27,248,22,176,20,23,197,2,28,248,22, -90,248,22,84,23,195,2,249,22,7,9,248,22,175,20,195,90,144,41,11,89, -146,41,39,11,27,248,22,176,20,196,28,248,22,90,248,22,84,23,195,2,249, -22,7,9,248,22,175,20,195,90,144,41,11,89,146,41,39,11,248,2,70,248, -22,176,20,196,249,22,7,249,22,82,248,22,175,20,199,196,195,249,22,7,249, -22,82,248,22,175,20,199,196,195,249,22,7,249,22,82,248,22,175,20,23,200, -1,23,197,1,23,196,1,27,19,248,22,162,7,23,196,2,250,2,54,23,198, -1,23,196,4,39,2,28,23,195,1,192,28,248,22,90,248,22,84,23,195,2, -249,22,7,9,248,22,175,20,23,196,1,27,248,22,176,20,23,195,2,90,144, -41,11,89,146,41,39,11,28,248,22,90,248,22,84,23,197,2,249,22,7,9, -248,22,175,20,23,198,1,27,248,22,176,20,23,197,2,90,144,41,11,89,146, -41,39,11,28,248,22,90,248,22,84,23,197,2,249,22,7,9,248,22,175,20, -197,90,144,41,11,89,146,41,39,11,248,2,70,248,22,176,20,198,249,22,7, -249,22,82,248,22,175,20,201,196,195,249,22,7,249,22,82,248,22,175,20,23, -203,1,196,195,249,22,7,249,22,82,248,22,175,20,23,201,1,23,197,1,23, -196,1,248,22,150,12,252,22,168,10,248,22,168,4,23,200,2,248,22,164,4, -23,200,2,248,22,165,4,23,200,2,248,22,166,4,23,200,2,248,22,167,4, -23,200,1,28,24,194,2,12,20,13,144,80,144,39,41,40,80,143,39,59,89, -146,40,40,10,249,22,136,5,21,94,2,32,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,175,9,23,197,2,80,143,42,55,86,94,23, -195,1,80,143,40,56,27,248,22,159,5,23,197,2,27,28,248,22,80,23,195, -2,248,22,175,20,23,195,1,23,194,1,28,248,22,184,15,23,194,2,90,144, -42,11,89,146,42,39,11,248,22,141,16,23,197,1,86,95,20,18,144,11,80, -143,45,55,199,20,18,144,11,80,143,45,56,192,192,11,86,94,23,195,1,11, -28,23,193,2,192,86,94,23,193,1,27,247,22,183,5,28,23,193,2,192,86, -94,23,193,1,247,22,162,16,90,144,42,11,89,146,42,39,11,248,22,141,16, -23,198,2,86,95,23,195,1,23,193,1,28,249,22,177,16,0,11,35,114,120, -34,91,46,93,115,115,36,34,248,22,189,15,23,197,1,249,80,144,44,61,42, -23,199,1,2,26,196,249,80,144,41,57,42,195,10,249,22,12,23,196,1,80, -144,41,54,41,86,96,28,248,22,157,5,23,196,2,12,250,22,188,11,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,152,14,23,197,2,10,12,250, -22,188,11,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,161,2,80,144,44,44,41,248,22,138,17,247, -22,151,14,11,27,28,23,194,2,23,194,1,86,94,23,194,1,27,249,22,82, -247,22,141,2,247,22,141,2,86,94,250,22,159,2,80,144,46,44,41,248,22, -138,17,247,22,151,14,195,192,86,94,250,22,159,2,248,22,83,23,197,2,23, -200,2,70,100,101,99,108,97,114,101,100,28,23,198,2,27,28,248,22,80,248, -22,159,5,23,200,2,248,22,158,5,248,22,83,248,22,159,5,23,201,1,23, -198,1,27,250,22,161,2,80,144,47,44,41,248,22,138,17,23,204,1,11,28, -23,193,2,27,250,22,161,2,248,22,84,23,198,1,23,198,2,11,28,23,193, -2,250,22,159,2,248,22,176,20,23,200,1,23,198,1,23,196,1,12,12,12, -86,94,251,22,145,12,247,22,149,12,67,101,114,114,111,114,6,69,69,100,101, -102,97,117,108,116,32,109,111,100,117,108,101,32,110,97,109,101,32,114,101,115, -111,108,118,101,114,32,99,97,108,108,101,100,32,119,105,116,104,32,116,104,114, -101,101,32,97,114,103,117,109,101,110,116,115,32,40,100,101,112,114,101,99,97, -116,101,100,41,11,251,24,197,1,23,198,1,23,199,1,23,200,1,10,32,81, -88,148,39,43,57,11,2,31,222,33,82,28,248,22,90,23,197,2,28,248,22, -90,195,193,249,22,82,195,248,22,98,197,28,249,22,177,9,248,22,83,23,199, -2,2,34,28,248,22,90,23,196,2,86,95,23,196,1,23,195,1,250,22,184, -11,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,93,2,35,28,249,22,177,9,23,202,2,2,36,23,200,1,28,248, -22,184,15,23,201,2,23,200,1,249,22,92,28,248,22,66,23,203,2,2,5, -2,37,23,202,1,23,199,1,251,2,81,196,197,248,22,84,199,248,22,176,20, -200,251,2,81,196,197,249,22,82,248,22,175,20,202,200,248,22,176,20,200,251, -2,81,197,196,9,197,27,250,22,182,7,27,28,23,198,2,28,247,22,137,12, -248,80,144,47,58,42,23,199,2,11,11,28,192,192,6,29,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,6,2,2,58,32,250,22,188,16,0,7,35,114,120,34,92,110, -34,23,203,1,249,22,143,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,203,2,248,22,180,13,28, -23,195,2,251,22,188,12,23,198,1,247,22,27,248,22,92,23,200,1,23,200, -1,86,94,23,195,1,250,22,151,13,23,197,1,247,22,27,23,199,1,19,248, -22,162,7,194,28,249,22,164,20,23,195,4,42,28,249,22,175,9,7,46,249, -22,163,7,197,249,22,189,3,23,199,4,42,28,28,249,22,175,9,7,115,249, -22,163,7,197,249,22,189,3,23,199,4,41,249,22,175,9,7,115,249,22,163, -7,197,249,22,189,3,23,199,4,40,11,249,22,182,7,250,22,181,7,198,39, -249,22,189,3,23,200,4,42,2,39,193,193,193,2,28,249,22,165,7,194,2, -36,2,27,28,249,22,165,7,194,2,34,64,117,112,192,0,8,35,114,120,34, -91,46,93,34,32,88,88,148,8,36,40,50,11,2,31,222,33,89,28,248,22, -90,23,194,2,9,250,22,93,6,4,4,10,32,32,32,248,22,188,15,248,22, -106,23,198,2,248,2,88,248,22,176,20,23,198,1,28,249,22,177,9,248,22, -84,23,200,2,23,196,1,28,249,22,175,9,248,22,175,20,23,200,1,23,198, -1,251,22,184,11,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,197,1,249,22,1,22,182,7,248,2,88, -248,22,98,23,203,1,12,12,247,23,193,1,250,22,162,4,11,196,195,20,13, -144,80,144,49,53,41,249,22,82,249,22,82,23,206,1,23,201,1,23,203,1, -20,13,144,80,144,49,41,40,252,80,144,54,42,40,249,22,31,11,80,144,56, -41,40,22,133,5,23,204,2,22,135,5,248,28,23,199,2,20,20,94,88,148, -8,36,40,49,11,9,223,6,33,92,23,199,1,86,94,23,199,1,22,7,28, -248,22,66,23,201,2,23,200,1,28,28,248,22,80,23,201,2,249,22,175,9, -248,22,175,20,23,203,2,2,32,11,23,200,1,86,94,23,200,1,28,248,22, -157,5,23,206,2,27,248,22,159,5,23,207,2,28,248,22,66,193,249,22,92, -2,5,194,192,23,205,2,249,247,22,182,5,23,198,1,27,248,22,70,248,22, -188,15,23,203,1,28,23,198,2,28,250,22,161,2,248,22,175,20,23,207,1, -23,205,1,11,249,22,82,11,199,249,22,82,194,199,192,86,96,28,248,22,167, -5,23,196,2,12,28,248,22,160,4,23,198,2,250,22,186,11,11,6,15,15, -98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,23,200,2,250,22,188, -11,2,22,2,33,23,198,2,28,28,23,196,2,248,22,157,5,23,197,2,10, -12,250,22,188,11,2,22,6,31,31,40,111,114,47,99,32,35,102,32,114,101, -115,111,108,118,101,100,45,109,111,100,117,108,101,45,112,97,116,104,63,41,23, -199,2,28,28,23,197,2,248,22,160,4,23,198,2,10,12,250,22,188,11,2, -22,6,17,17,40,111,114,47,99,32,35,102,32,115,121,110,116,97,120,63,41, -23,200,2,27,32,0,88,148,39,41,50,11,78,102,108,97,116,116,101,110,45, -115,117,98,45,112,97,116,104,222,33,83,28,28,248,22,80,23,197,2,249,22, -175,9,248,22,175,20,23,199,2,2,5,11,86,98,23,199,1,23,198,1,23, -197,1,23,194,1,23,193,1,248,22,158,5,248,22,105,23,198,1,28,28,248, -22,80,23,197,2,28,249,22,175,9,248,22,175,20,23,199,2,2,35,28,248, -22,80,248,22,105,23,198,2,249,22,175,9,248,22,109,23,199,2,2,5,11, -11,11,86,97,23,199,1,23,198,1,23,197,1,23,194,1,248,22,158,5,249, -23,196,1,248,22,122,23,200,2,248,22,107,23,200,1,28,28,248,22,80,23, -197,2,28,249,22,175,9,248,22,175,20,23,199,2,2,35,28,28,249,22,177, -9,248,22,105,23,199,2,2,36,10,249,22,177,9,248,22,105,23,199,2,2, -34,28,23,197,2,27,248,22,159,5,23,199,2,28,248,22,66,193,10,28,248, -22,80,193,248,22,66,248,22,175,20,194,11,11,11,11,11,86,96,23,199,1, -23,198,1,23,194,1,27,248,22,159,5,23,199,1,248,22,158,5,249,23,197, -1,28,248,22,80,23,197,2,248,22,175,20,23,197,2,23,196,2,27,28,249, -22,177,9,248,22,105,23,204,2,2,34,248,22,176,20,201,248,22,107,201,28, -248,22,80,23,198,2,249,22,97,248,22,176,20,199,194,192,28,28,248,22,80, -23,197,2,249,22,175,9,248,22,175,20,23,199,2,2,38,11,86,94,23,193, -1,86,94,248,80,144,42,8,28,42,23,195,2,253,24,200,1,23,202,1,23, -203,1,23,204,1,23,205,1,11,80,143,47,59,28,28,248,22,80,23,197,2, -28,249,22,175,9,248,22,175,20,23,199,2,2,35,28,248,22,80,248,22,105, -23,198,2,249,22,175,9,248,22,109,23,199,2,2,38,11,11,11,86,94,23, -193,1,86,94,248,80,144,42,8,28,42,23,195,2,253,24,200,1,248,22,105, -23,203,2,23,203,1,23,204,1,23,205,1,248,22,107,23,203,1,80,143,47, -59,86,94,23,194,1,27,88,148,8,36,40,57,8,240,0,0,8,0,1,19, -115,104,111,119,45,99,111,108,108,101,99,116,105,111,110,45,101,114,114,225,3, -4,6,33,84,27,32,0,88,148,8,36,40,53,11,69,115,115,45,62,114,107, -116,222,33,85,27,28,248,22,80,23,200,2,28,249,22,175,9,2,35,248,22, -175,20,23,202,2,27,248,22,105,23,201,2,28,28,249,22,177,9,23,195,2, -2,36,10,249,22,177,9,23,195,2,2,34,86,94,23,193,1,28,23,201,2, -27,248,22,159,5,23,203,2,28,248,22,80,193,248,22,175,20,193,192,250,22, -184,11,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,203,2,192,23,199,2,23,199,2,27, -28,248,22,80,23,201,2,28,249,22,175,9,2,35,248,22,175,20,23,203,2, -27,28,28,28,249,22,177,9,248,22,105,23,204,2,2,36,10,249,22,177,9, -248,22,105,23,204,2,2,34,23,202,2,11,27,248,22,159,5,23,204,2,27, -28,249,22,177,9,248,22,105,23,206,2,2,34,248,22,176,20,23,204,1,248, -22,107,23,204,1,28,248,22,80,23,195,2,249,23,202,1,248,22,175,20,23, -197,2,249,22,97,248,22,176,20,23,199,1,23,197,1,249,23,202,1,23,196, -1,23,195,1,249,23,200,1,2,36,28,249,22,177,9,248,22,105,23,206,2, -2,34,248,22,176,20,23,204,1,248,22,107,23,204,1,28,248,22,80,193,248, -22,176,20,193,11,86,95,23,200,1,23,197,1,11,86,95,23,200,1,23,197, -1,11,27,28,248,22,66,23,196,2,86,94,23,196,1,27,248,80,144,48,51, -42,249,22,82,23,199,2,248,22,138,17,247,22,151,14,28,23,193,2,192,86, -94,23,193,1,90,144,41,11,89,146,41,39,11,249,80,144,51,57,42,248,22, -73,23,201,2,11,27,28,248,22,90,23,195,2,2,40,249,22,182,7,23,197, -2,2,39,252,80,144,55,8,23,42,23,206,1,28,248,22,90,23,200,2,23, -200,1,86,94,23,200,1,248,22,83,23,200,2,28,248,22,90,23,200,2,86, -94,23,199,1,9,248,22,84,23,200,1,23,198,1,10,28,248,22,159,7,23, -196,2,86,94,23,197,1,27,248,80,144,48,8,29,42,23,204,2,27,248,80, -144,49,51,42,249,22,82,23,200,2,23,197,2,28,23,193,2,192,86,94,23, -193,1,90,144,41,11,89,146,41,39,11,249,80,144,52,57,42,23,201,2,11, -28,248,22,90,23,194,2,86,94,23,193,1,249,22,138,16,23,198,1,248,23, -203,1,23,197,1,250,22,1,22,138,16,23,199,1,249,22,97,249,22,2,32, -0,88,148,8,36,40,47,11,9,222,33,86,23,200,1,248,22,92,248,23,207, -1,23,201,1,28,248,22,184,15,23,196,2,86,95,23,197,1,23,196,1,248, -80,144,47,8,30,42,248,22,148,16,28,248,22,145,16,23,198,2,23,197,2, -249,22,146,16,23,199,2,248,80,144,51,8,29,42,23,207,2,28,249,22,175, -9,248,22,83,23,198,2,2,32,27,248,80,144,48,51,42,249,22,82,23,199, -2,248,22,138,17,247,22,151,14,28,23,193,2,192,86,94,23,193,1,90,144, -41,11,89,146,41,39,11,249,80,144,51,57,42,248,22,105,23,201,2,11,27, -28,248,22,90,248,22,107,23,201,2,28,248,22,90,23,195,2,249,22,181,16, -2,87,23,197,2,11,10,27,28,23,194,2,248,23,202,1,23,197,2,28,248, -22,90,23,196,2,86,94,23,201,1,2,40,28,249,22,181,16,2,87,23,198, -2,248,23,202,1,23,197,2,86,94,23,201,1,249,22,182,7,23,198,2,2, -39,27,28,23,195,1,86,94,23,197,1,249,22,97,28,248,22,90,248,22,107, -23,205,2,21,93,6,5,5,109,122,108,105,98,249,22,1,22,97,249,22,2, -80,144,58,8,31,42,248,22,107,23,208,2,23,198,1,28,248,22,90,23,197, -2,86,94,23,196,1,248,22,92,23,198,1,86,94,23,197,1,23,196,1,252, -80,144,57,8,23,42,23,208,1,248,22,83,23,199,2,248,22,176,20,23,199, -1,23,199,1,10,86,95,23,197,1,23,196,1,28,249,22,175,9,248,22,175, -20,23,198,2,2,37,248,80,144,47,8,30,42,248,22,148,16,249,22,146,16, -248,22,150,16,248,22,105,23,201,2,248,80,144,51,8,29,42,23,207,2,12, -86,94,28,28,248,22,184,15,23,194,2,10,248,22,190,8,23,194,2,12,28, -23,203,2,250,22,186,11,69,114,101,113,117,105,114,101,249,22,143,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,83,23,199,2,6,0,0,23,206,2,250,22,188,11,2,22,2,33, -23,198,2,27,28,248,22,190,8,23,195,2,249,22,131,9,23,196,2,39,249, -22,148,16,248,22,149,16,23,197,2,11,27,28,248,22,190,8,23,196,2,249, -22,131,9,23,197,2,40,248,80,144,49,8,24,42,23,195,2,90,144,42,11, -89,146,42,39,11,28,248,22,190,8,23,199,2,250,22,7,2,41,249,22,131, -9,23,203,2,41,2,41,248,22,141,16,23,198,2,86,95,23,195,1,23,193, -1,27,28,248,22,190,8,23,200,2,249,22,131,9,23,201,2,42,249,80,144, -54,61,42,23,197,2,5,0,27,28,248,22,190,8,23,201,2,249,22,131,9, -23,202,2,43,248,22,158,5,23,200,2,27,250,22,161,2,80,144,57,44,41, -248,22,138,17,247,22,151,14,11,27,28,23,194,2,23,194,1,86,94,23,194, -1,27,249,22,82,247,22,141,2,247,22,141,2,86,94,250,22,159,2,80,144, -59,44,41,248,22,138,17,247,22,151,14,195,192,27,28,23,204,2,248,22,158, -5,249,22,82,248,22,159,5,23,200,2,23,207,2,23,196,2,86,95,28,23, -214,2,28,250,22,161,2,248,22,83,23,198,2,195,11,86,96,23,213,1,23, -204,1,23,194,1,12,27,251,22,31,11,80,144,61,53,41,9,28,248,22,15, -80,144,8,23,54,41,80,144,61,54,41,247,22,17,27,248,22,138,17,247,22, -151,14,86,94,249,22,3,88,148,8,36,40,57,11,9,226,2,3,12,13,33, -90,23,196,2,248,28,248,22,15,80,144,60,54,41,32,0,88,148,39,40,45, -11,9,222,33,91,80,144,59,8,32,42,20,20,98,88,148,39,39,8,25,8, -240,12,64,0,0,9,233,20,1,2,4,6,7,11,12,14,15,23,33,93,23, -216,1,23,207,1,23,197,1,23,195,1,23,194,1,86,96,23,213,1,23,204, -1,23,194,1,12,28,28,248,22,190,8,23,204,1,86,94,23,214,1,11,28, -23,214,1,28,248,22,159,7,23,206,2,10,28,248,22,66,23,206,2,10,28, -248,22,80,23,206,2,249,22,175,9,248,22,175,20,23,208,2,2,32,11,11, -249,80,144,58,52,42,28,248,22,159,7,23,208,2,249,22,82,23,209,1,248, -80,144,61,8,29,42,23,217,1,86,94,23,214,1,249,22,82,23,209,1,248, -22,138,17,247,22,151,14,252,22,128,9,23,209,1,23,208,1,23,206,1,23, -204,1,23,203,1,12,192,86,96,20,18,144,11,80,143,39,59,248,80,144,40, -8,27,40,249,22,31,11,80,144,42,41,40,248,22,132,5,80,144,40,60,41, -248,22,182,5,80,144,40,40,42,248,22,150,15,80,144,40,48,42,20,18,144, -11,80,143,39,59,248,80,144,40,8,27,40,249,22,31,11,80,144,42,41,40, -20,18,144,11,80,143,39,59,248,80,144,40,8,27,40,249,22,31,11,80,144, -42,41,40,145,40,9,20,122,145,2,1,39,16,1,11,16,0,20,27,15,56, -9,2,2,2,2,29,11,11,11,11,11,11,11,9,9,11,11,11,10,42,80, -143,39,39,20,122,145,2,1,44,16,28,2,3,2,4,30,2,6,1,20,112, -97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,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,4,30,2,7,74,112,97,116,104,45,115,116,114, -105,110,103,63,42,196,15,2,8,30,2,7,73,114,101,114,111,111,116,45,112, -97,116,104,44,196,16,30,2,7,77,112,97,116,104,45,97,100,100,45,115,117, -102,102,105,120,44,196,12,2,9,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,7,1,19,112,97, -116,104,45,114,101,112,108,97,99,101,45,115,117,102,102,105,120,44,196,14,30, -2,7,75,102,105,110,100,45,99,111,108,45,102,105,108,101,49,196,4,30,2, -7,78,110,111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,42,196,11, -2,23,2,24,30,2,6,76,114,101,112,97,114,97,109,101,116,101,114,105,122, -101,11,7,16,0,40,42,39,16,0,39,16,16,2,15,2,16,2,8,2,12, -2,17,2,18,2,11,2,4,2,10,2,3,2,20,2,13,2,14,2,9,2, -19,2,22,55,11,11,11,16,3,2,23,2,21,2,24,16,3,11,11,11,16, -3,2,23,2,21,2,24,42,42,40,12,11,11,16,0,16,0,16,0,39,39, -11,12,11,11,16,0,16,0,16,0,39,39,16,24,20,15,16,2,248,22,186, -8,71,115,111,45,115,117,102,102,105,120,80,144,39,39,40,20,15,16,2,88, -148,39,41,8,39,8,189,3,2,4,223,0,33,50,80,144,39,40,40,20,15, -16,2,32,0,88,148,8,36,44,55,11,2,9,222,33,51,80,144,39,47,40, -20,15,16,2,20,28,143,32,0,88,148,8,36,40,45,11,2,10,222,192,32, -0,88,148,8,36,40,45,11,2,10,222,192,80,144,39,48,40,20,15,16,2, -247,22,144,2,80,144,39,44,40,20,15,16,2,8,128,8,80,144,39,49,40, -20,15,16,2,249,22,191,8,8,128,8,11,80,144,39,50,40,20,15,16,2, -88,148,8,36,40,53,8,128,32,2,13,223,0,33,52,80,144,39,51,40,20, -15,16,2,88,148,8,36,41,57,8,128,32,2,14,223,0,33,53,80,144,39, -52,40,20,15,16,2,247,22,78,80,144,39,53,40,20,15,16,2,248,22,16, -76,109,111,100,117,108,101,45,108,111,97,100,105,110,103,80,144,39,54,40,20, -15,16,2,11,80,143,39,55,20,15,16,2,11,80,143,39,56,20,15,16,2, -32,0,88,148,39,41,60,11,2,19,222,33,72,80,144,39,57,40,20,15,16, -2,32,0,88,148,8,36,40,52,11,2,20,222,33,73,80,144,39,58,40,20, -15,16,2,11,80,143,39,59,20,15,16,2,88,149,8,34,40,48,8,240,4, -0,16,0,1,21,112,114,101,112,45,112,108,97,110,101,116,45,114,101,115,111, -108,118,101,114,33,40,224,1,0,33,74,80,144,39,8,28,42,20,15,16,2, -88,148,39,40,53,8,240,0,0,3,0,69,103,101,116,45,100,105,114,223,0, -33,75,80,144,39,8,29,42,20,15,16,2,88,148,39,40,52,8,240,0,0, -64,0,74,112,97,116,104,45,115,115,45,62,114,107,116,223,0,33,76,80,144, -39,8,30,42,20,15,16,2,88,148,8,36,40,48,8,240,0,0,4,0,9, -223,0,33,77,80,144,39,8,31,42,20,15,16,2,88,148,39,40,48,8,240, -0,128,0,0,9,223,0,33,78,80,144,39,8,32,42,20,15,16,2,27,11, -20,19,143,39,90,144,40,10,89,146,40,39,10,20,26,96,2,22,88,148,8, -36,41,57,8,32,9,224,2,1,33,79,88,148,39,42,52,11,9,223,0,33, -80,88,148,39,43,8,34,16,4,8,240,44,240,0,0,8,240,220,241,0,0, -40,39,9,224,2,1,33,94,207,80,144,39,60,40,20,15,16,2,88,148,39, -39,48,16,2,8,134,8,8,176,32,2,23,223,0,33,95,80,144,39,8,25, -40,20,15,16,2,20,28,143,88,148,8,36,39,48,16,2,43,8,144,32,2, -24,223,0,33,96,88,148,8,36,39,48,16,2,43,8,144,32,2,24,223,0, -33,97,80,144,39,8,26,40,96,29,94,2,5,70,35,37,107,101,114,110,101, -108,11,29,94,2,5,71,35,37,109,105,110,45,115,116,120,11,2,7,2,6, -9,9,9,39,9,0}; - EVAL_ONE_SIZED_STR((char *)expr, 9812); +201,1,250,2,57,195,23,197,4,248,22,186,3,198,32,59,88,149,8,38,42, +55,11,2,30,39,223,48,33,66,32,60,88,149,8,38,42,54,11,2,30,39, +223,48,33,63,32,61,88,149,8,38,42,53,11,2,30,39,223,48,33,62,28, +249,22,133,4,23,197,2,23,196,4,248,22,92,193,28,249,22,142,9,7,47, +249,22,163,7,23,197,2,23,199,2,249,22,82,250,22,181,7,23,198,2,39, +23,200,2,248,2,56,249,22,181,7,23,198,1,248,22,186,3,23,201,1,250, +2,61,195,23,197,4,248,22,186,3,198,28,249,22,133,4,23,197,2,23,196, +4,248,22,92,193,28,249,22,142,9,7,47,249,22,163,7,23,197,2,23,199, +2,249,22,82,250,22,181,7,23,198,2,39,23,200,2,27,249,22,181,7,23, +198,1,248,22,186,3,23,201,1,19,248,22,162,7,23,195,2,250,2,61,23, +197,1,23,196,4,39,2,27,248,22,186,3,23,197,1,28,249,22,133,4,23, +195,2,23,197,4,248,22,92,194,28,249,22,142,9,7,47,249,22,163,7,23, +198,2,23,197,2,249,22,82,250,22,181,7,23,199,2,39,23,198,2,248,2, +56,249,22,181,7,23,199,1,248,22,186,3,23,199,1,250,2,60,196,23,198, +4,248,22,186,3,196,32,64,88,149,8,38,42,53,11,2,30,39,223,48,33, +65,28,249,22,133,4,23,197,2,23,196,4,248,22,92,193,28,249,22,142,9, +7,47,249,22,163,7,23,197,2,23,199,2,249,22,82,250,22,181,7,23,198, +2,39,23,200,2,248,2,56,249,22,181,7,23,198,1,248,22,186,3,23,201, +1,250,2,64,195,23,197,4,248,22,186,3,198,28,249,22,133,4,23,197,2, +23,196,4,248,22,92,193,28,249,22,142,9,7,47,249,22,163,7,23,197,2, +23,199,2,249,22,82,250,22,181,7,23,198,2,39,23,200,2,27,249,22,181, +7,23,198,1,248,22,186,3,23,201,1,19,248,22,162,7,23,195,2,250,2, +60,23,197,1,23,196,4,39,2,27,248,22,186,3,23,197,1,28,249,22,133, +4,23,195,2,23,197,4,248,22,92,194,28,249,22,142,9,7,47,249,22,163, +7,23,198,2,23,197,2,249,22,82,250,22,181,7,23,199,2,39,23,198,2, +27,249,22,181,7,23,199,1,248,22,186,3,23,199,1,19,248,22,162,7,23, +195,2,250,2,64,23,197,1,23,196,4,39,2,27,248,22,186,3,23,195,1, +28,249,22,133,4,23,195,2,23,198,4,248,22,92,195,28,249,22,142,9,7, +47,249,22,163,7,23,199,2,23,197,2,249,22,82,250,22,181,7,23,200,2, +39,23,198,2,248,2,56,249,22,181,7,23,200,1,248,22,186,3,23,199,1, +250,2,59,197,23,199,4,248,22,186,3,196,19,248,22,162,7,23,195,2,28, +249,22,160,20,39,23,195,4,248,22,92,194,28,249,22,142,9,7,47,249,22, +163,7,23,198,2,39,249,22,82,250,22,181,7,23,199,2,39,39,27,249,22, +181,7,23,199,1,40,19,248,22,162,7,23,195,2,250,2,57,23,197,1,23, +196,4,39,2,28,249,22,160,20,40,23,195,4,248,22,92,194,28,249,22,142, +9,7,47,249,22,163,7,23,198,2,40,249,22,82,250,22,181,7,23,199,2, +39,40,248,2,56,249,22,181,7,23,199,1,41,250,2,59,196,23,196,4,41, +2,28,249,22,133,4,23,197,2,23,196,4,248,22,92,193,28,249,22,142,9, +7,47,249,22,163,7,23,197,2,23,199,2,249,22,82,250,22,181,7,23,198, +2,39,23,200,2,248,2,56,249,22,181,7,23,198,1,248,22,186,3,23,201, +1,250,2,55,195,23,197,4,248,22,186,3,198,28,249,22,133,4,23,197,2, +23,196,4,248,22,92,193,28,249,22,142,9,7,47,249,22,163,7,23,197,2, +23,199,2,249,22,82,250,22,181,7,23,198,2,39,23,200,2,27,249,22,181, +7,23,198,1,248,22,186,3,23,201,1,19,248,22,162,7,23,195,2,250,2, +55,23,197,1,23,196,4,39,2,27,248,22,186,3,23,197,1,28,249,22,133, +4,23,195,2,23,197,4,248,22,92,194,28,249,22,142,9,7,47,249,22,163, +7,23,198,2,23,197,2,249,22,82,250,22,181,7,23,199,2,39,23,198,2, +248,2,56,249,22,181,7,23,199,1,248,22,186,3,23,199,1,250,2,54,196, +23,198,4,248,22,186,3,196,32,70,88,148,39,40,58,11,2,31,222,33,71, +28,248,22,90,248,22,84,23,195,2,249,22,7,9,248,22,175,20,23,196,1, +90,144,41,11,89,146,41,39,11,27,248,22,176,20,23,197,2,28,248,22,90, +248,22,84,23,195,2,249,22,7,9,248,22,175,20,195,90,144,41,11,89,146, +41,39,11,27,248,22,176,20,196,28,248,22,90,248,22,84,23,195,2,249,22, +7,9,248,22,175,20,195,90,144,41,11,89,146,41,39,11,248,2,70,248,22, +176,20,196,249,22,7,249,22,82,248,22,175,20,199,196,195,249,22,7,249,22, +82,248,22,175,20,199,196,195,249,22,7,249,22,82,248,22,175,20,23,200,1, +23,197,1,23,196,1,27,19,248,22,162,7,23,196,2,250,2,54,23,198,1, +23,196,4,39,2,28,23,195,1,192,28,248,22,90,248,22,84,23,195,2,249, +22,7,9,248,22,175,20,23,196,1,27,248,22,176,20,23,195,2,90,144,41, +11,89,146,41,39,11,28,248,22,90,248,22,84,23,197,2,249,22,7,9,248, +22,175,20,23,198,1,27,248,22,176,20,23,197,2,90,144,41,11,89,146,41, +39,11,28,248,22,90,248,22,84,23,197,2,249,22,7,9,248,22,175,20,197, +90,144,41,11,89,146,41,39,11,248,2,70,248,22,176,20,198,249,22,7,249, +22,82,248,22,175,20,201,196,195,249,22,7,249,22,82,248,22,175,20,23,203, +1,196,195,249,22,7,249,22,82,248,22,175,20,23,201,1,23,197,1,23,196, +1,248,22,150,12,252,22,168,10,248,22,168,4,23,200,2,248,22,164,4,23, +200,2,248,22,165,4,23,200,2,248,22,166,4,23,200,2,248,22,167,4,23, +200,1,28,24,194,2,12,20,13,144,80,144,39,41,40,80,143,39,59,89,146, +40,40,10,249,22,136,5,21,94,2,32,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,175,9,23,197,2,80,143,42,55,86,94,23,195, +1,80,143,40,56,27,248,22,159,5,23,197,2,27,28,248,22,80,23,195,2, +248,22,175,20,23,195,1,23,194,1,28,248,22,184,15,23,194,2,90,144,42, +11,89,146,42,39,11,248,22,141,16,23,197,1,86,95,20,18,144,11,80,143, +45,55,199,20,18,144,11,80,143,45,56,192,192,11,86,94,23,195,1,11,28, +23,193,2,192,86,94,23,193,1,27,247,22,183,5,28,23,193,2,192,86,94, +23,193,1,247,22,162,16,90,144,42,11,89,146,42,39,11,248,22,141,16,23, +198,2,86,95,23,195,1,23,193,1,28,249,22,177,16,0,11,35,114,120,34, +91,46,93,115,115,36,34,248,22,189,15,23,197,1,249,80,144,44,61,42,23, +199,1,2,26,196,249,80,144,41,57,42,195,10,249,22,12,23,196,1,80,144, +41,54,41,86,96,28,248,22,157,5,23,196,2,12,250,22,188,11,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,152,14,23,197,2,10,12,250,22, +188,11,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,161,2,80,144,44,44,41,248,22,138,17,247,22, +151,14,11,27,28,23,194,2,23,194,1,86,94,23,194,1,27,249,22,82,247, +22,141,2,247,22,141,2,86,94,250,22,159,2,80,144,46,44,41,248,22,138, +17,247,22,151,14,195,192,86,94,250,22,159,2,248,22,83,23,197,2,23,200, +2,70,100,101,99,108,97,114,101,100,28,23,198,2,27,28,248,22,80,248,22, +159,5,23,200,2,248,22,158,5,248,22,83,248,22,159,5,23,201,1,23,198, +1,27,250,22,161,2,80,144,47,44,41,248,22,138,17,23,204,1,11,28,23, +193,2,27,250,22,161,2,248,22,84,23,198,1,23,198,2,11,28,23,193,2, +250,22,159,2,248,22,176,20,23,200,1,23,198,1,23,196,1,12,12,12,86, +94,251,22,145,12,247,22,149,12,67,101,114,114,111,114,6,69,69,100,101,102, +97,117,108,116,32,109,111,100,117,108,101,32,110,97,109,101,32,114,101,115,111, +108,118,101,114,32,99,97,108,108,101,100,32,119,105,116,104,32,116,104,114,101, +101,32,97,114,103,117,109,101,110,116,115,32,40,100,101,112,114,101,99,97,116, +101,100,41,11,251,24,197,1,23,198,1,23,199,1,23,200,1,10,32,81,88, +148,39,43,57,11,2,31,222,33,82,28,248,22,90,23,197,2,28,248,22,90, +195,193,249,22,82,195,248,22,98,197,28,249,22,177,9,248,22,83,23,199,2, +2,34,28,248,22,90,23,196,2,86,95,23,196,1,23,195,1,250,22,184,11, +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,93,2,35,28,249,22,177,9,23,202,2,2,36,23,200,1,28,248,22, +184,15,23,201,2,23,200,1,249,22,92,28,248,22,66,23,203,2,2,5,2, +37,23,202,1,23,199,1,251,2,81,196,197,248,22,84,199,248,22,176,20,200, +251,2,81,196,197,249,22,82,248,22,175,20,202,200,248,22,176,20,200,251,2, +81,197,196,9,197,27,250,22,182,7,27,28,23,198,2,28,247,22,137,12,248, +80,144,47,58,42,23,199,2,11,11,28,192,192,6,29,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,6,2,2,58,32,250,22,188,16,0,7,35,114,120,34,92,110,34, +23,203,1,249,22,143,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,203,2,248,22,180,13,28,23, +195,2,251,22,188,12,23,198,1,247,22,27,248,22,92,23,200,1,23,200,1, +86,94,23,195,1,250,22,151,13,23,197,1,247,22,27,23,199,1,19,248,22, +162,7,194,28,249,22,164,20,23,195,4,42,28,249,22,175,9,7,46,249,22, +163,7,197,249,22,189,3,23,199,4,42,28,28,249,22,175,9,7,115,249,22, +163,7,197,249,22,189,3,23,199,4,41,249,22,175,9,7,115,249,22,163,7, +197,249,22,189,3,23,199,4,40,11,249,22,182,7,250,22,181,7,198,39,249, +22,189,3,23,200,4,42,2,39,193,193,193,2,28,249,22,165,7,194,2,36, +2,27,28,249,22,165,7,194,2,34,64,117,112,192,0,8,35,114,120,34,91, +46,93,34,32,88,88,148,8,36,40,50,11,2,31,222,33,89,28,248,22,90, +23,194,2,9,250,22,93,6,4,4,10,32,32,32,248,22,188,15,248,22,106, +23,198,2,248,2,88,248,22,176,20,23,198,1,28,249,22,177,9,248,22,84, +23,200,2,23,196,1,28,249,22,175,9,248,22,175,20,23,200,1,23,198,1, +251,22,184,11,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,197,1,249,22,1,22,182,7,248,2,88,248, +22,98,23,203,1,12,12,247,23,193,1,250,22,162,4,11,196,195,20,13,144, +80,144,49,53,41,249,22,82,249,22,82,23,206,1,23,201,1,23,203,1,20, +13,144,80,144,49,41,40,252,80,144,54,42,40,249,22,31,11,80,144,56,41, +40,22,133,5,23,204,2,22,135,5,248,28,23,199,2,20,20,94,88,148,8, +36,40,49,11,9,223,6,33,92,23,199,1,86,94,23,199,1,22,7,28,248, +22,66,23,201,2,23,200,1,28,28,248,22,80,23,201,2,249,22,175,9,248, +22,175,20,23,203,2,2,32,11,23,200,1,86,94,23,200,1,28,248,22,157, +5,23,206,2,27,248,22,159,5,23,207,2,28,248,22,66,193,249,22,92,2, +5,194,192,23,205,2,249,247,22,182,5,23,198,1,27,248,22,70,248,22,188, +15,23,203,1,28,23,198,2,28,250,22,161,2,248,22,175,20,23,207,1,23, +205,1,11,249,22,82,11,199,249,22,82,194,199,192,86,96,28,248,22,167,5, +23,196,2,12,28,248,22,160,4,23,198,2,250,22,186,11,11,6,15,15,98, +97,100,32,109,111,100,117,108,101,32,112,97,116,104,23,200,2,250,22,188,11, +2,22,2,33,23,198,2,28,28,23,196,2,248,22,157,5,23,197,2,10,12, +250,22,188,11,2,22,6,31,31,40,111,114,47,99,32,35,102,32,114,101,115, +111,108,118,101,100,45,109,111,100,117,108,101,45,112,97,116,104,63,41,23,199, +2,28,28,23,197,2,248,22,160,4,23,198,2,10,12,250,22,188,11,2,22, +6,17,17,40,111,114,47,99,32,35,102,32,115,121,110,116,97,120,63,41,23, +200,2,27,32,0,88,148,39,41,50,11,78,102,108,97,116,116,101,110,45,115, +117,98,45,112,97,116,104,222,33,83,28,28,248,22,80,23,197,2,249,22,175, +9,248,22,175,20,23,199,2,2,5,11,86,98,23,199,1,23,198,1,23,197, +1,23,194,1,23,193,1,248,22,158,5,248,22,105,23,198,1,28,28,248,22, +80,23,197,2,28,249,22,175,9,248,22,175,20,23,199,2,2,35,28,248,22, +80,248,22,105,23,198,2,249,22,175,9,248,22,109,23,199,2,2,5,11,11, +11,86,97,23,199,1,23,198,1,23,197,1,23,194,1,248,22,158,5,249,23, +196,1,248,22,122,23,200,2,248,22,107,23,200,1,28,28,248,22,80,23,197, +2,28,249,22,175,9,248,22,175,20,23,199,2,2,35,28,28,249,22,177,9, +248,22,105,23,199,2,2,36,10,249,22,177,9,248,22,105,23,199,2,2,34, +28,23,197,2,27,248,22,159,5,23,199,2,28,248,22,66,193,10,28,248,22, +80,193,248,22,66,248,22,175,20,194,11,11,11,11,11,86,96,23,199,1,23, +198,1,23,194,1,27,248,22,159,5,23,199,1,248,22,158,5,249,23,197,1, +28,248,22,80,23,197,2,248,22,175,20,23,197,2,23,196,2,27,28,249,22, +177,9,248,22,105,23,204,2,2,34,248,22,176,20,201,248,22,107,201,28,248, +22,80,23,198,2,249,22,97,248,22,176,20,199,194,192,28,28,248,22,80,23, +197,2,249,22,175,9,248,22,175,20,23,199,2,2,38,11,86,94,23,193,1, +86,94,248,80,144,42,8,28,42,23,195,2,253,24,200,1,23,202,1,23,203, +1,23,204,1,23,205,1,11,80,143,47,59,28,28,248,22,80,23,197,2,28, +249,22,175,9,248,22,175,20,23,199,2,2,35,28,248,22,80,248,22,105,23, +198,2,249,22,175,9,248,22,109,23,199,2,2,38,11,11,11,86,94,23,193, +1,86,94,248,80,144,42,8,28,42,23,195,2,253,24,200,1,248,22,105,23, +203,2,23,203,1,23,204,1,23,205,1,248,22,107,23,203,1,80,143,47,59, +86,94,23,194,1,27,88,148,8,36,40,57,8,240,0,0,8,0,1,19,115, +104,111,119,45,99,111,108,108,101,99,116,105,111,110,45,101,114,114,225,3,4, +6,33,84,27,32,0,88,148,8,36,40,53,11,69,115,115,45,62,114,107,116, +222,33,85,27,28,248,22,80,23,200,2,28,249,22,175,9,2,35,248,22,175, +20,23,202,2,27,248,22,105,23,201,2,28,28,249,22,177,9,23,195,2,2, +36,10,249,22,177,9,23,195,2,2,34,86,94,23,193,1,28,23,201,2,27, +248,22,159,5,23,203,2,28,248,22,80,193,248,22,175,20,193,192,250,22,184, +11,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,203,2,192,23,199,2,23,199,2,27,28, +248,22,80,23,201,2,28,249,22,175,9,2,35,248,22,175,20,23,203,2,27, +28,28,28,249,22,177,9,248,22,105,23,204,2,2,36,10,249,22,177,9,248, +22,105,23,204,2,2,34,23,202,2,11,27,248,22,159,5,23,204,2,27,28, +249,22,177,9,248,22,105,23,206,2,2,34,248,22,176,20,23,204,1,248,22, +107,23,204,1,28,248,22,80,23,195,2,249,23,202,1,248,22,175,20,23,197, +2,249,22,97,248,22,176,20,23,199,1,23,197,1,249,23,202,1,23,196,1, +23,195,1,249,23,200,1,2,36,28,249,22,177,9,248,22,105,23,206,2,2, +34,248,22,176,20,23,204,1,248,22,107,23,204,1,28,248,22,80,193,248,22, +176,20,193,11,86,95,23,200,1,23,197,1,11,86,95,23,200,1,23,197,1, +11,27,28,248,22,66,23,196,2,86,94,23,196,1,27,248,80,144,48,51,42, +249,22,82,23,199,2,248,22,138,17,247,22,151,14,28,23,193,2,192,86,94, +23,193,1,90,144,41,11,89,146,41,39,11,249,80,144,51,57,42,248,22,73, +23,201,2,11,27,28,248,22,90,23,195,2,2,40,249,22,182,7,23,197,2, +2,39,252,80,144,55,8,23,42,23,206,1,28,248,22,90,23,200,2,23,200, +1,86,94,23,200,1,248,22,83,23,200,2,28,248,22,90,23,200,2,86,94, +23,199,1,9,248,22,84,23,200,1,23,198,1,10,28,248,22,159,7,23,196, +2,86,94,23,197,1,27,248,80,144,48,8,29,42,23,204,2,27,248,80,144, +49,51,42,249,22,82,23,200,2,23,197,2,28,23,193,2,192,86,94,23,193, +1,90,144,41,11,89,146,41,39,11,249,80,144,52,57,42,23,201,2,11,28, +248,22,90,23,194,2,86,94,23,193,1,249,22,138,16,23,198,1,248,23,203, +1,23,197,1,250,22,1,22,138,16,23,199,1,249,22,97,249,22,2,32,0, +88,148,8,36,40,47,11,9,222,33,86,23,200,1,248,22,92,248,23,207,1, +23,201,1,28,248,22,184,15,23,196,2,86,95,23,197,1,23,196,1,248,80, +144,47,8,30,42,248,22,148,16,28,248,22,145,16,23,198,2,23,197,2,249, +22,146,16,23,199,2,248,80,144,51,8,29,42,23,207,2,28,249,22,175,9, +248,22,83,23,198,2,2,32,27,248,80,144,48,51,42,249,22,82,23,199,2, +248,22,138,17,247,22,151,14,28,23,193,2,192,86,94,23,193,1,90,144,41, +11,89,146,41,39,11,249,80,144,51,57,42,248,22,105,23,201,2,11,27,28, +248,22,90,248,22,107,23,201,2,28,248,22,90,23,195,2,249,22,181,16,2, +87,23,197,2,11,10,27,28,23,194,2,248,23,202,1,23,197,2,28,248,22, +90,23,196,2,86,94,23,201,1,2,40,28,249,22,181,16,2,87,23,198,2, +248,23,202,1,23,197,2,86,94,23,201,1,249,22,182,7,23,198,2,2,39, +27,28,23,195,1,86,94,23,197,1,249,22,97,28,248,22,90,248,22,107,23, +205,2,21,93,6,5,5,109,122,108,105,98,249,22,1,22,97,249,22,2,80, +144,58,8,31,42,248,22,107,23,208,2,23,198,1,28,248,22,90,23,197,2, +86,94,23,196,1,248,22,92,23,198,1,86,94,23,197,1,23,196,1,252,80, +144,57,8,23,42,23,208,1,248,22,83,23,199,2,248,22,176,20,23,199,1, +23,199,1,10,86,95,23,197,1,23,196,1,28,249,22,175,9,248,22,175,20, +23,198,2,2,37,248,80,144,47,8,30,42,248,22,148,16,249,22,146,16,248, +22,150,16,248,22,105,23,201,2,248,80,144,51,8,29,42,23,207,2,12,86, +94,28,28,248,22,184,15,23,194,2,10,248,22,190,8,23,194,2,12,28,23, +203,2,250,22,186,11,69,114,101,113,117,105,114,101,249,22,143,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,83,23,199,2,6,0,0,23,206,2,250,22,188,11,2,22,2,33,23, +198,2,27,28,248,22,190,8,23,195,2,249,22,131,9,23,196,2,39,249,22, +148,16,248,22,149,16,23,197,2,11,27,28,248,22,190,8,23,196,2,249,22, +131,9,23,197,2,40,248,80,144,49,8,24,42,23,195,2,90,144,42,11,89, +146,42,39,11,28,248,22,190,8,23,199,2,250,22,7,2,41,249,22,131,9, +23,203,2,41,2,41,248,22,141,16,23,198,2,86,95,23,195,1,23,193,1, +27,28,248,22,190,8,23,200,2,249,22,131,9,23,201,2,42,249,80,144,54, +61,42,23,197,2,5,0,27,28,248,22,190,8,23,201,2,249,22,131,9,23, +202,2,43,248,22,158,5,23,200,2,27,250,22,161,2,80,144,57,44,41,248, +22,138,17,247,22,151,14,11,27,28,23,194,2,23,194,1,86,94,23,194,1, +27,249,22,82,247,22,141,2,247,22,141,2,86,94,250,22,159,2,80,144,59, +44,41,248,22,138,17,247,22,151,14,195,192,27,28,23,204,2,248,22,158,5, +249,22,82,248,22,159,5,23,200,2,23,207,2,23,196,2,86,95,28,23,214, +2,28,250,22,161,2,248,22,83,23,198,2,195,11,86,96,23,213,1,23,204, +1,23,194,1,12,27,251,22,31,11,80,144,61,53,41,9,28,248,22,15,80, +144,8,23,54,41,80,144,61,54,41,247,22,17,27,248,22,138,17,247,22,151, +14,86,94,249,22,3,88,148,8,36,40,57,11,9,226,2,3,12,13,33,90, +23,196,2,248,28,248,22,15,80,144,60,54,41,32,0,88,148,39,40,45,11, +9,222,33,91,80,144,59,8,32,42,20,20,98,88,148,39,39,8,25,8,240, +12,64,0,0,9,233,20,1,2,4,6,7,11,12,14,15,23,33,93,23,216, +1,23,207,1,23,197,1,23,195,1,23,194,1,86,96,23,213,1,23,204,1, +23,194,1,12,28,28,248,22,190,8,23,204,1,86,94,23,214,1,11,28,23, +214,1,28,248,22,159,7,23,206,2,10,28,248,22,66,23,206,2,10,28,248, +22,80,23,206,2,249,22,175,9,248,22,175,20,23,208,2,2,32,11,11,249, +80,144,58,52,42,28,248,22,159,7,23,208,2,249,22,82,23,209,1,248,80, +144,61,8,29,42,23,217,1,86,94,23,214,1,249,22,82,23,209,1,248,22, +138,17,247,22,151,14,252,22,128,9,23,209,1,23,208,1,23,206,1,23,204, +1,23,203,1,12,192,86,96,20,18,144,11,80,143,39,59,248,80,144,40,8, +27,40,249,22,31,11,80,144,42,41,40,248,22,132,5,80,144,40,60,41,248, +22,182,5,80,144,40,40,42,248,22,150,15,80,144,40,48,42,20,18,144,11, +80,143,39,59,248,80,144,40,8,27,40,249,22,31,11,80,144,42,41,40,20, +18,144,11,80,143,39,59,248,80,144,40,8,27,40,249,22,31,11,80,144,42, +41,40,145,40,9,20,122,145,2,1,39,16,1,11,16,0,20,27,15,56,9, +2,2,2,2,29,11,11,11,11,11,11,11,9,9,11,11,11,10,42,80,143, +39,39,20,122,145,2,1,44,16,28,2,3,2,4,30,2,6,1,20,112,97, +114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,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,4,30,2,7,74,112,97,116,104,45,115,116,114,105, +110,103,63,42,196,15,2,8,30,2,7,73,114,101,114,111,111,116,45,112,97, +116,104,44,196,16,30,2,7,1,18,112,97,116,104,45,97,100,100,45,101,120, +116,101,110,115,105,111,110,44,196,12,2,9,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,7,1, +22,112,97,116,104,45,114,101,112,108,97,99,101,45,101,120,116,101,110,115,105, +111,110,44,196,14,30,2,7,75,102,105,110,100,45,99,111,108,45,102,105,108, +101,49,196,4,30,2,7,78,110,111,114,109,97,108,45,99,97,115,101,45,112, +97,116,104,42,196,11,2,23,2,24,30,2,6,76,114,101,112,97,114,97,109, +101,116,101,114,105,122,101,11,7,16,0,40,42,39,16,0,39,16,16,2,15, +2,16,2,8,2,12,2,17,2,18,2,11,2,4,2,10,2,3,2,20,2, +13,2,14,2,9,2,19,2,22,55,11,11,11,16,3,2,23,2,21,2,24, +16,3,11,11,11,16,3,2,23,2,21,2,24,42,42,40,12,11,11,16,0, +16,0,16,0,39,39,11,12,11,11,16,0,16,0,16,0,39,39,16,24,20, +15,16,2,248,22,186,8,71,115,111,45,115,117,102,102,105,120,80,144,39,39, +40,20,15,16,2,88,148,39,41,8,39,8,189,3,2,4,223,0,33,50,80, +144,39,40,40,20,15,16,2,32,0,88,148,8,36,44,55,11,2,9,222,33, +51,80,144,39,47,40,20,15,16,2,20,28,143,32,0,88,148,8,36,40,45, +11,2,10,222,192,32,0,88,148,8,36,40,45,11,2,10,222,192,80,144,39, +48,40,20,15,16,2,247,22,144,2,80,144,39,44,40,20,15,16,2,8,128, +8,80,144,39,49,40,20,15,16,2,249,22,191,8,8,128,8,11,80,144,39, +50,40,20,15,16,2,88,148,8,36,40,53,8,128,32,2,13,223,0,33,52, +80,144,39,51,40,20,15,16,2,88,148,8,36,41,57,8,128,32,2,14,223, +0,33,53,80,144,39,52,40,20,15,16,2,247,22,78,80,144,39,53,40,20, +15,16,2,248,22,16,76,109,111,100,117,108,101,45,108,111,97,100,105,110,103, +80,144,39,54,40,20,15,16,2,11,80,143,39,55,20,15,16,2,11,80,143, +39,56,20,15,16,2,32,0,88,148,39,41,60,11,2,19,222,33,72,80,144, +39,57,40,20,15,16,2,32,0,88,148,8,36,40,52,11,2,20,222,33,73, +80,144,39,58,40,20,15,16,2,11,80,143,39,59,20,15,16,2,88,149,8, +34,40,48,8,240,4,0,16,0,1,21,112,114,101,112,45,112,108,97,110,101, +116,45,114,101,115,111,108,118,101,114,33,40,224,1,0,33,74,80,144,39,8, +28,42,20,15,16,2,88,148,39,40,53,8,240,0,0,3,0,69,103,101,116, +45,100,105,114,223,0,33,75,80,144,39,8,29,42,20,15,16,2,88,148,39, +40,52,8,240,0,0,64,0,74,112,97,116,104,45,115,115,45,62,114,107,116, +223,0,33,76,80,144,39,8,30,42,20,15,16,2,88,148,8,36,40,48,8, +240,0,0,4,0,9,223,0,33,77,80,144,39,8,31,42,20,15,16,2,88, +148,39,40,48,8,240,0,128,0,0,9,223,0,33,78,80,144,39,8,32,42, +20,15,16,2,27,11,20,19,143,39,90,144,40,10,89,146,40,39,10,20,26, +96,2,22,88,148,8,36,41,57,8,32,9,224,2,1,33,79,88,148,39,42, +52,11,9,223,0,33,80,88,148,39,43,8,34,16,4,8,240,44,240,0,0, +8,240,220,241,0,0,40,39,9,224,2,1,33,94,207,80,144,39,60,40,20, +15,16,2,88,148,39,39,48,16,2,8,134,8,8,176,32,2,23,223,0,33, +95,80,144,39,8,25,40,20,15,16,2,20,28,143,88,148,8,36,39,48,16, +2,43,8,144,32,2,24,223,0,33,96,88,148,8,36,39,48,16,2,43,8, +144,32,2,24,223,0,33,97,80,144,39,8,26,40,96,29,94,2,5,70,35, +37,107,101,114,110,101,108,11,29,94,2,5,71,35,37,109,105,110,45,115,116, +120,11,2,7,2,6,9,9,9,39,9,0}; + EVAL_ONE_SIZED_STR((char *)expr, 9818); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,54,46,52,46,48,46,49,53,84,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,1,0,0,8,0,18, -0,24,0,38,0,52,0,64,0,84,0,98,0,113,0,126,0,131,0,135,0, -147,0,231,0,238,0,8,1,0,0,199,1,0,0,3,1,5,105,110,115,112, -48,71,35,37,98,117,105,108,116,105,110,67,113,117,111,116,101,29,94,2,3, -70,35,37,107,101,114,110,101,108,11,29,94,2,3,70,35,37,101,120,112,111, -98,115,11,29,94,2,3,68,35,37,98,111,111,116,11,29,94,2,3,76,35, -37,112,108,97,99,101,45,115,116,114,117,99,116,11,29,94,2,3,70,35,37, -112,97,114,97,109,122,11,29,94,2,3,71,35,37,110,101,116,119,111,114,107, -11,29,94,2,3,69,35,37,117,116,105,108,115,11,38,11,93,2,12,36,12, -0,39,38,13,93,143,16,3,39,2,14,2,2,39,36,14,1,150,40,143,2, -15,16,4,2,4,39,39,2,1,143,2,15,16,4,2,5,39,39,2,1,143, -2,15,16,4,2,6,39,39,2,1,143,2,15,16,4,2,7,39,39,2,1, -143,2,15,16,4,2,8,39,39,2,1,143,2,15,16,4,2,9,39,39,2, -1,143,2,15,16,4,2,10,39,39,2,1,16,0,38,15,143,2,14,2,11, -18,143,16,2,143,10,16,3,9,2,11,2,13,143,11,16,3,9,9,2,13, -16,3,9,9,9,145,40,9,20,122,145,2,1,39,16,1,11,16,0,20,27, -15,56,9,2,2,2,2,29,11,11,11,11,11,11,11,9,9,11,11,11,33, -16,40,80,143,39,39,20,122,145,2,1,39,16,0,16,0,40,42,39,16,0, -39,16,0,39,11,11,11,16,0,16,0,16,0,39,39,40,12,11,11,16,0, -16,0,16,0,39,39,11,12,11,11,16,0,16,0,16,0,39,39,16,0,104, -2,4,2,5,29,94,2,3,71,35,37,102,111,114,101,105,103,110,11,29,94, -2,3,70,35,37,117,110,115,97,102,101,11,29,94,2,3,71,35,37,102,108, -102,120,110,117,109,11,2,6,2,7,2,8,2,9,2,10,29,94,2,3,69, -35,37,112,108,97,99,101,11,29,94,2,3,71,35,37,102,117,116,117,114,101, -115,11,9,9,9,39,9,0}; - EVAL_ONE_SIZED_STR((char *)expr, 532); + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,54,46,53,46,48,46,51,84,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,17,0,0,0,1,0,0,8,0,18,0, +24,0,38,0,52,0,64,0,84,0,98,0,113,0,126,0,131,0,135,0,147, +0,231,0,238,0,8,1,0,0,199,1,0,0,3,1,5,105,110,115,112,48, +71,35,37,98,117,105,108,116,105,110,67,113,117,111,116,101,29,94,2,3,70, +35,37,107,101,114,110,101,108,11,29,94,2,3,70,35,37,101,120,112,111,98, +115,11,29,94,2,3,68,35,37,98,111,111,116,11,29,94,2,3,76,35,37, +112,108,97,99,101,45,115,116,114,117,99,116,11,29,94,2,3,70,35,37,112, +97,114,97,109,122,11,29,94,2,3,71,35,37,110,101,116,119,111,114,107,11, +29,94,2,3,69,35,37,117,116,105,108,115,11,38,11,93,2,12,36,12,0, +39,38,13,93,143,16,3,39,2,14,2,2,39,36,14,1,150,40,143,2,15, +16,4,2,4,39,39,2,1,143,2,15,16,4,2,5,39,39,2,1,143,2, +15,16,4,2,6,39,39,2,1,143,2,15,16,4,2,7,39,39,2,1,143, +2,15,16,4,2,8,39,39,2,1,143,2,15,16,4,2,9,39,39,2,1, +143,2,15,16,4,2,10,39,39,2,1,16,0,38,15,143,2,14,2,11,18, +143,16,2,143,10,16,3,9,2,11,2,13,143,11,16,3,9,9,2,13,16, +3,9,9,9,145,40,9,20,122,145,2,1,39,16,1,11,16,0,20,27,15, +56,9,2,2,2,2,29,11,11,11,11,11,11,11,9,9,11,11,11,33,16, +40,80,143,39,39,20,122,145,2,1,39,16,0,16,0,40,42,39,16,0,39, +16,0,39,11,11,11,16,0,16,0,16,0,39,39,40,12,11,11,16,0,16, +0,16,0,39,39,11,12,11,11,16,0,16,0,16,0,39,39,16,0,104,2, +4,2,5,29,94,2,3,71,35,37,102,111,114,101,105,103,110,11,29,94,2, +3,70,35,37,117,110,115,97,102,101,11,29,94,2,3,71,35,37,102,108,102, +120,110,117,109,11,2,6,2,7,2,8,2,9,2,10,29,94,2,3,69,35, +37,112,108,97,99,101,11,29,94,2,3,71,35,37,102,117,116,117,114,101,115, +11,9,9,9,39,9,0}; + EVAL_ONE_SIZED_STR((char *)expr, 531); } diff --git a/racket/src/racket/src/schvers.h b/racket/src/racket/src/schvers.h index 94ecf921ed..74cf2eb3ce 100644 --- a/racket/src/racket/src/schvers.h +++ b/racket/src/racket/src/schvers.h @@ -13,12 +13,12 @@ consistently.) */ -#define MZSCHEME_VERSION "6.5.0.2" +#define MZSCHEME_VERSION "6.5.0.3" #define MZSCHEME_VERSION_X 6 #define MZSCHEME_VERSION_Y 5 #define MZSCHEME_VERSION_Z 0 -#define MZSCHEME_VERSION_W 2 +#define MZSCHEME_VERSION_W 3 #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/racket/src/racket/src/startup.inc b/racket/src/racket/src/startup.inc index 5191bd96c0..1443cf9201 100644 --- a/racket/src/racket/src/startup.inc +++ b/racket/src/racket/src/startup.inc @@ -147,8 +147,8 @@ "(#%require '#%min-stx '#%paramz)" "(#%provide path-string?" " normal-case-path" -" path-replace-suffix" -" path-add-suffix" +" path-replace-extension" +" path-add-extension" " reroot-path" " find-col-file" " collection-path" @@ -754,7 +754,7 @@ "(lambda(dir path check-compiled?)" "(or(file-exists?(build-path dir path))" "(and check-compiled?" -" (let ((try-path (path-add-suffix path #\".zo\"))" +" (let ((try-path (path-add-extension path #\".zo\"))" "(modes(use-compiled-file-paths))" "(roots(current-compiled-file-roots)))" "(ormap(lambda(d)" @@ -767,7 +767,7 @@ "(else(reroot-path p d))))))" " modes))" " roots))))))" -"(define-values(check-suffix-call)" +"(define-values(check-extension-call)" "(lambda(s sfx who)" "(unless(or(path-for-some-system? s)" "(path-string? s))" @@ -776,27 +776,22 @@ " (raise-argument-error who \"(or/c string? bytes?)\" 1 s sfx))" "(let-values(((base name dir?)(split-path s)))" "(when(not base)" -" (raise-mismatch-error who \"cannot add a suffix to a root path: \" s))" +" (raise-mismatch-error who \"cannot add an extension to a root path: \" s))" "(values base name))))" -"(define-values(path-adjust-suffix)" +"(define-values(path-adjust-extension)" "(lambda(name sep rest-bytes s sfx)" -"(let-values(((base name)(check-suffix-call s sfx name)))" +"(let-values(((base name)(check-extension-call s sfx name)))" "(define bs(path-element->bytes name))" "(define finish" "(lambda(i sep i2)" "(bytes->path-element" -"(let((res(bytes-append" +"(bytes-append" "(subbytes bs 0 i)" " sep" "(rest-bytes bs i2)" "(if(string? sfx)" "(string->bytes/locale sfx(char->integer #\\?))" -" sfx))))" -"(if(zero?(bytes-length res))" -"(raise-arguments-error 'path-replace-suffix" -" \"removing suffix makes path element empty\"" -" \"given path\" s)" -" res))" +" sfx))" "(if(path-for-some-system? s)" "(path-convention-type s)" "(system-path-convention-type)))))" @@ -805,19 +800,20 @@ "(if(zero? i)" " (finish (bytes-length bs) #\"\" (bytes-length bs))" "(let-values(((i)(sub1 i)))" -"(if(eq?(char->integer #\\.)(bytes-ref bs i))" +"(if(and(not(zero? i))" +"(eq?(char->integer #\\.)(bytes-ref bs i)))" "(finish i sep(add1 i))" "(loop i)))))))" "(loop(bytes-length bs)))))" "(if(path-for-some-system? base)" "(build-path base new-name)" " new-name)))))" -"(define-values(path-replace-suffix)" +"(define-values(path-replace-extension)" "(lambda(s sfx)" -" (path-adjust-suffix 'path-replace-suffix #\"\" (lambda (bs i) #\"\") s sfx)))" -"(define-values(path-add-suffix)" +" (path-adjust-extension 'path-replace-extension #\"\" (lambda (bs i) #\"\") s sfx)))" +"(define-values(path-add-extension)" "(lambda(s sfx)" -" (path-adjust-suffix 'path-replace-suffix #\"_\" subbytes s sfx)))" +" (path-adjust-extension 'path-add-extension #\"_\" subbytes s sfx)))" "(define-values(load/use-compiled)" "(lambda(f)((current-load/use-compiled) f #f)))" "(define-values(find-library-collection-paths)" @@ -990,18 +986,18 @@ " \"native\"" "(system-library-subpath)" "(if rep-sfx?" -"(path-add-suffix" +"(path-add-extension" " file" " dll-suffix)" " file)))))" "(zo(lambda(root-dir compiled-dir)" "(build-path(reroot base root-dir)" " compiled-dir" -" (path-add-suffix file #\".zo\"))))" +" (path-add-extension file #\".zo\"))))" "(alt-zo(lambda(root-dir compiled-dir)" "(build-path(reroot base root-dir)" " compiled-dir" -" (path-add-suffix alt-file #\".zo\"))))" +" (path-add-extension alt-file #\".zo\"))))" "(so(get-so file #t))" "(alt-so(get-so alt-file #t))" "(try-main?(or main-path-d(not alt-path-d)))" @@ -1251,7 +1247,7 @@ "(path-ss->rkt(lambda(p)" "(let-values(((base name dir?)(split-path p)))" " (if (regexp-match #rx\"[.]ss$\" (path->bytes name))" -" (path-replace-suffix p #\".rkt\")" +" (path-replace-extension p #\".rkt\")" " p))))" "(s(if(and(pair? s)(eq? 'submod(car s)))" "(let((v(cadr s)))" @@ -1377,7 +1373,7 @@ "(split-path filename))))" "(let*((no-sfx(if(vector? s-parsed)" "(vector-ref s-parsed 3)" -" (path-replace-suffix name #\"\"))))" +" (path-replace-extension name #\"\"))))" "(let*((root-modname(if(vector? s-parsed)" "(vector-ref s-parsed 4)" "(make-resolved-module-path filename)))" diff --git a/racket/src/racket/src/startup.rktl b/racket/src/racket/src/startup.rktl index 79320b2e43..06165a0dde 100644 --- a/racket/src/racket/src/startup.rktl +++ b/racket/src/racket/src/startup.rktl @@ -195,8 +195,8 @@ (#%provide path-string? normal-case-path - path-replace-suffix - path-add-suffix + path-replace-extension + path-add-extension reroot-path find-col-file collection-path @@ -886,7 +886,7 @@ (lambda (dir path check-compiled?) (or (file-exists? (build-path dir path)) (and check-compiled? - (let ([try-path (path-add-suffix path #".zo")] + (let ([try-path (path-add-extension path #".zo")] [modes (use-compiled-file-paths)] [roots (current-compiled-file-roots)]) (ormap (lambda (d) @@ -900,7 +900,7 @@ modes)) roots)))))) - (define-values (check-suffix-call) + (define-values (check-extension-call) (lambda (s sfx who) (unless (or (path-for-some-system? s) (path-string? s)) @@ -909,28 +909,23 @@ (raise-argument-error who "(or/c string? bytes?)" 1 s sfx)) (let-values ([(base name dir?) (split-path s)]) (when (not base) - (raise-mismatch-error who "cannot add a suffix to a root path: " s)) + (raise-mismatch-error who "cannot add an extension to a root path: " s)) (values base name)))) - (define-values (path-adjust-suffix) + (define-values (path-adjust-extension) (lambda (name sep rest-bytes s sfx) - (let-values ([(base name) (check-suffix-call s sfx name)]) + (let-values ([(base name) (check-extension-call s sfx name)]) (define bs (path-element->bytes name)) (define finish (lambda (i sep i2) (bytes->path-element - (let ([res (bytes-append - (subbytes bs 0 i) - sep - (rest-bytes bs i2) - (if (string? sfx) - (string->bytes/locale sfx (char->integer #\?)) - sfx))]) - (if (zero? (bytes-length res)) - (raise-arguments-error 'path-replace-suffix - "removing suffix makes path element empty" - "given path" s) - res)) + (bytes-append + (subbytes bs 0 i) + sep + (rest-bytes bs i2) + (if (string? sfx) + (string->bytes/locale sfx (char->integer #\?)) + sfx)) (if (path-for-some-system? s) (path-convention-type s) (system-path-convention-type))))) @@ -939,7 +934,8 @@ (if (zero? i) (finish (bytes-length bs) #"" (bytes-length bs)) (let-values ([(i) (sub1 i)]) - (if (eq? (char->integer #\.) (bytes-ref bs i)) + (if (and (not (zero? i)) + (eq? (char->integer #\.) (bytes-ref bs i))) (finish i sep (add1 i)) (loop i)))))]) (loop (bytes-length bs)))]) @@ -947,13 +943,13 @@ (build-path base new-name) new-name))))) - (define-values (path-replace-suffix) + (define-values (path-replace-extension) (lambda (s sfx) - (path-adjust-suffix 'path-replace-suffix #"" (lambda (bs i) #"") s sfx))) + (path-adjust-extension 'path-replace-extension #"" (lambda (bs i) #"") s sfx))) - (define-values (path-add-suffix) + (define-values (path-add-extension) (lambda (s sfx) - (path-adjust-suffix 'path-replace-suffix #"_" subbytes s sfx))) + (path-adjust-extension 'path-add-extension #"_" subbytes s sfx))) (define-values (load/use-compiled) (lambda (f) ((current-load/use-compiled) f #f))) @@ -1146,18 +1142,18 @@ "native" (system-library-subpath) (if rep-sfx? - (path-add-suffix + (path-add-extension file dll-suffix) file))))] [zo (lambda (root-dir compiled-dir) (build-path (reroot base root-dir) compiled-dir - (path-add-suffix file #".zo")))] + (path-add-extension file #".zo")))] [alt-zo (lambda (root-dir compiled-dir) (build-path (reroot base root-dir) compiled-dir - (path-add-suffix alt-file #".zo")))] + (path-add-extension alt-file #".zo")))] [so (get-so file #t)] [alt-so (get-so alt-file #t)] [try-main? (or main-path-d (not alt-path-d))] @@ -1427,7 +1423,7 @@ [path-ss->rkt (lambda (p) (let-values ([(base name dir?) (split-path p)]) (if (regexp-match #rx"[.]ss$" (path->bytes name)) - (path-replace-suffix p #".rkt") + (path-replace-extension p #".rkt") p)))] [s (if (and (pair? s) (eq? 'submod (car s))) (let ([v (cadr s)]) @@ -1559,7 +1555,7 @@ (split-path filename))]) (let* ([no-sfx (if (vector? s-parsed) (vector-ref s-parsed 3) - (path-replace-suffix name #""))]) + (path-replace-extension name #""))]) (let* ([root-modname (if (vector? s-parsed) (vector-ref s-parsed 4) (make-resolved-module-path filename))]