From 05cfffdf9e13b6868a19384e88bcb9331f9631f1 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 27 Oct 2010 07:54:33 -0600 Subject: [PATCH] v5.4.99.1, `executable-yield-handler', and `make-bitmap' etc. --- collects/2htdp/private/image-more.rkt | 20 +- collects/frtime/frp-snip.rkt | 2 +- collects/frtime/scribblings/frtime.scrbl | 2 +- collects/mred/mred-sig.rkt | 5 +- collects/mred/mred.rkt | 3 + collects/mred/private/gdi.rkt | 3 +- collects/mred/private/wx/cocoa/queue.rkt | 16 +- collects/mred/private/wx/common/queue.rkt | 9 + collects/mred/private/wxme/snip.rkt | 5 +- collects/mrlib/image-core.rkt | 62 +- collects/mrlib/private/regmk.rkt | 13 +- collects/racket/draw.rkt | 8 +- collects/racket/draw/private/bitmap.rkt | 39 +- collects/scribblings/gui/bitmap-class.scrbl | 21 +- collects/scribblings/gui/bitmap-funcs.scrbl | 40 + collects/scribblings/gui/draw-funcs.scrbl | 1 + collects/scribblings/gui/gui.scrbl | 7 +- collects/scribblings/reference/exit.scrbl | 15 + collects/waterworld/waterworld.rkt | 10 +- doc/release-notes/racket/Draw_and_GUI_5_5.txt | 186 +- src/gracket/grmain.c | 32 - src/racket/cmdline.inc | 32 +- src/racket/include/scheme.h | 2 + src/racket/src/cstartup.inc | 1763 +++++++++-------- src/racket/src/error.c | 24 + src/racket/src/schminc.h | 2 +- src/racket/src/schvers.h | 6 +- 27 files changed, 1235 insertions(+), 1093 deletions(-) create mode 100644 collects/scribblings/gui/bitmap-funcs.scrbl diff --git a/collects/2htdp/private/image-more.rkt b/collects/2htdp/private/image-more.rkt index 4cd621a3e8..b1b511c864 100644 --- a/collects/2htdp/private/image-more.rkt +++ b/collects/2htdp/private/image-more.rkt @@ -617,11 +617,11 @@ (rotated-rectangular-bounding-box w h (text-angle atomic-shape)))] [(flip? atomic-shape) (let* ([bitmap (flip-shape atomic-shape)] - [bb (bitmap-raw-bitmap bitmap)]) + [bb (ibitmap-raw-bitmap bitmap)]) (let-values ([(l t r b) - (rotated-rectangular-bounding-box (* (send bb get-width) (bitmap-x-scale bitmap)) - (* (send bb get-height) (bitmap-y-scale bitmap)) - (bitmap-angle bitmap))]) + (rotated-rectangular-bounding-box (* (send bb get-width) (ibitmap-x-scale bitmap)) + (* (send bb get-height) (ibitmap-y-scale bitmap)) + (ibitmap-angle bitmap))]) (values l t r b)))] [else (fprintf (current-error-port) "using bad bounding box for ~s\n" atomic-shape) @@ -707,14 +707,14 @@ (let ([bitmap (flip-shape atomic-shape)] [flipped? (flip-flipped? atomic-shape)]) (make-flip flipped? - (make-bitmap (bitmap-raw-bitmap bitmap) - (bitmap-raw-mask bitmap) + (make-bitmap (ibitmap-raw-bitmap bitmap) + (ibitmap-raw-mask bitmap) (bring-between (if flipped? - (+ (bitmap-angle bitmap) θ) - (- (bitmap-angle bitmap) θ)) + (+ (ibitmap-angle bitmap) θ) + (- (ibitmap-angle bitmap) θ)) 360) - (bitmap-x-scale bitmap) - (bitmap-y-scale bitmap) + (ibitmap-x-scale bitmap) + (ibitmap-y-scale bitmap) (make-hash))))])) ;; rotate-point : point angle -> point diff --git a/collects/frtime/frp-snip.rkt b/collects/frtime/frp-snip.rkt index bac8af91a1..09e0c449e5 100644 --- a/collects/frtime/frp-snip.rkt +++ b/collects/frtime/frp-snip.rkt @@ -15,7 +15,7 @@ any-nested-reactivity? raise-reactivity) ;; GRacket require - (except-in mred send-event)) + mred) (define drs-eventspace #f) diff --git a/collects/frtime/scribblings/frtime.scrbl b/collects/frtime/scribblings/frtime.scrbl index 25f0b73f5d..8daf0d50da 100644 --- a/collects/frtime/scribblings/frtime.scrbl +++ b/collects/frtime/scribblings/frtime.scrbl @@ -2,7 +2,7 @@ @(require scribble/manual (for-label scheme scheme/class - (except-in scheme/gui/base send-event) + scheme/gui/base (only-in frtime undefined undefined? behavior? event? signal? seconds milliseconds never-e new-cell set-cell! event-receiver send-event diff --git a/collects/mred/mred-sig.rkt b/collects/mred/mred-sig.rkt index 47e3727f1b..989e0ace3c 100644 --- a/collects/mred/mred-sig.rkt +++ b/collects/mred/mred-sig.rkt @@ -118,11 +118,13 @@ label->plain-label labelled-menu-item<%> list-box% list-control<%> +make-bitmap make-eventspace +make-gl-bitmap make-gui-empty-namespace make-gui-namespace +make-monochrome-bitmap make-screen-bitmap -make-gl-bitmap map-command-as-meta-key menu% menu-bar% @@ -156,6 +158,7 @@ put-file queue-callback radio-box% readable-snip<%> +read-bitmap read-editor-global-footer read-editor-global-header read-editor-version diff --git a/collects/mred/mred.rkt b/collects/mred/mred.rkt index f9aa039310..5fdbb4e1cb 100644 --- a/collects/mred/mred.rkt +++ b/collects/mred/mred.rkt @@ -102,6 +102,9 @@ begin-busy-cursor bell bitmap% + make-bitmap + read-bitmap + make-monochrome-bitmap brush% brush-list% editor-data% diff --git a/collects/mred/private/gdi.rkt b/collects/mred/private/gdi.rkt index 767e1f6f30..7ef08bcc45 100644 --- a/collects/mred/private/gdi.rkt +++ b/collects/mred/private/gdi.rkt @@ -8,7 +8,8 @@ "wx.ss" "te.rkt" "mrtop.ss" - "mrcanvas.ss") + "mrcanvas.ss" + "syntax.rkt") (provide register-collecting-blit unregister-collecting-blit diff --git a/collects/mred/private/wx/cocoa/queue.rkt b/collects/mred/private/wx/cocoa/queue.rkt index 10d68f7cf8..3175273d74 100644 --- a/collects/mred/private/wx/cocoa/queue.rkt +++ b/collects/mred/private/wx/cocoa/queue.rkt @@ -54,9 +54,23 @@ (tellv app finishLaunching) +;; In case we were started in an executable without a bundle, +;; explicitly register with the dock so the application can receive +;; keyboard events. +;; This technique is not sanctioned by Apple --- I found the code in SDL. +(define-cstruct _CPSProcessSerNum ([lo _uint32] [hi _uint32])) +(define-appserv CPSGetCurrentProcess (_fun _CPSProcessSerNum-pointer -> _int) + #:fail (lambda () (lambda args 1))) +(define-appserv CPSEnableForegroundOperation (_fun _CPSProcessSerNum-pointer _int _int _int _int -> _int) + #:fail (lambda () #f)) +(let ([psn (make-CPSProcessSerNum 0 0)]) + (when (zero? (CPSGetCurrentProcess psn)) + (void (CPSEnableForegroundOperation psn #x03 #x3C #x2C #x1103)))) + (define app-delegate (tell (tell MyApplicationDelegate alloc) init)) (tellv app setDelegate: app-delegate) -(tellv app activateIgnoringOtherApps: #:type _BOOL #t) +(unless (scheme_register_process_global "Racket-GUI-no-front" #f) + (tellv app activateIgnoringOtherApps: #:type _BOOL #t)) ;; For some reason, nextEventMatchingMask:... gets stuck if the ;; display changes, and it doesn't even send the diff --git a/collects/mred/private/wx/common/queue.rkt b/collects/mred/private/wx/common/queue.rkt index b54cbd3534..2d0e577625 100644 --- a/collects/mred/private/wx/common/queue.rkt +++ b/collects/mred/private/wx/common/queue.rkt @@ -498,3 +498,12 @@ (send e set-wait-cursor-mode #f)))))) (define (is-busy?) (positive? (eventspace-wait-cursor-count (current-eventspace)))) + +;; ---------------------------------------- + +;; Before exiting, wait until frames are closed, etc.: +(executable-yield-handler + (let ([old-eyh (executable-yield-handler)]) + (lambda (v) + (yield main-eventspace) + (old-eyh v)))) diff --git a/collects/mred/private/wxme/snip.rkt b/collects/mred/private/wxme/snip.rkt index 4608211af7..13e3d58fbc 100644 --- a/collects/mred/private/wxme/snip.rkt +++ b/collects/mred/private/wxme/snip.rkt @@ -1023,10 +1023,7 @@ (send f jump-to end))))))) (def/public (load-file [(make-or-false path-string?) [name #f]] - [(symbol-in unknown unknown/mask gif gif/mask - jpeg png png/mask - xbm xpm bmp pict) - [kind 'unknown]] + [image-type? [kind 'unknown]] [bool? [rel-path? #f]] [bool? [inline? #t]]) (do-set-bitmap #f #f #f) diff --git a/collects/mrlib/image-core.rkt b/collects/mrlib/image-core.rkt index ee1a0578cc..e93bf5d89f 100644 --- a/collects/mrlib/image-core.rkt +++ b/collects/mrlib/image-core.rkt @@ -117,10 +117,10 @@ has been moved out). ;; - flip ;; a bitmap is: -;; - (make-bitmap (is-a?/c bitmap%) angle positive-real -;; hash[(list boolean[flip] number[x-scale] number[y-scale] number[angle]) -o> (cons (is-a?/c bitmap%) (is-a?/c bitmap%)]) +;; - (make-ibitmap (is-a?/c bitmap%) angle positive-real +;; hash[(list boolean[flip] number[x-scale] number[y-scale] number[angle]) -o> (cons (is-a?/c bitmap%) (is-a?/c bitmap%)]) ;; NOTE: bitmap copying needs to happen in 'write' and 'read' methods -(define-struct/reg-mk bitmap (raw-bitmap raw-mask angle x-scale y-scale cache) +(define-struct/reg-mk ibitmap #:reflect-id bitmap (raw-bitmap raw-mask angle x-scale y-scale cache) #:omit-define-syntaxes #:transparent #:property prop:custom-write (λ (x y z) (bitmap-write x y z))) @@ -404,7 +404,7 @@ has been moved out). (or (polygon? shape) (line-segment? shape) (curve-segment? shape) - (bitmap? shape) + (ibitmap? shape) (np-atomic-shape? shape))) (define (np-atomic-shape? shape) @@ -412,7 +412,7 @@ has been moved out). (text? shape) (and (flip? shape) (boolean? (flip-flipped? shape)) - (bitmap? (flip-shape shape))))) + (ibitmap? (flip-shape shape))))) ;; normalize-shape : shape -> normalized-shape ;; normalizes 'shape', calling 'f' on each atomic shape in the normalized shape. @@ -490,8 +490,8 @@ has been moved out). (if bottom (make-overlay bottom this-one) this-one))] - [(or (bitmap? shape) (np-atomic-shape? shape)) - (let ([shape (if (bitmap? shape) + [(or (ibitmap? shape) (np-atomic-shape? shape)) + (let ([shape (if (ibitmap? shape) (make-flip #f shape) shape)]) (let ([this-one @@ -532,12 +532,12 @@ has been moved out). [else (let ([bitmap (flip-shape shape)]) (make-flip (flip-flipped? shape) - (make-bitmap (bitmap-raw-bitmap bitmap) - (bitmap-raw-mask bitmap) - (bitmap-angle bitmap) - (* x-scale (bitmap-x-scale bitmap)) - (* y-scale (bitmap-y-scale bitmap)) - (bitmap-cache bitmap))))])])) + (make-ibitmap (ibitmap-raw-bitmap bitmap) + (ibitmap-raw-mask bitmap) + (ibitmap-angle bitmap) + (* x-scale (ibitmap-x-scale bitmap)) + (* y-scale (ibitmap-y-scale bitmap)) + (ibitmap-cache bitmap))))])])) (define (scale-color color x-scale y-scale) (cond @@ -875,34 +875,34 @@ the mask bitmap and the original bitmap are all together in a single bytes! (define (get-rendered-bitmap flip-bitmap) (let ([key (get-bitmap-cache-key flip-bitmap)]) (calc-rendered-bitmap flip-bitmap key) - (car (hash-ref (bitmap-cache (flip-shape flip-bitmap)) + (car (hash-ref (ibitmap-cache (flip-shape flip-bitmap)) key)))) (define (get-rendered-mask flip-bitmap) (let ([key (get-bitmap-cache-key flip-bitmap)]) (calc-rendered-bitmap flip-bitmap key) - (cdr (hash-ref (bitmap-cache (flip-shape flip-bitmap)) + (cdr (hash-ref (ibitmap-cache (flip-shape flip-bitmap)) key)))) (define (get-bitmap-cache-key flip-bitmap) (let ([bm (flip-shape flip-bitmap)]) (list (flip-flipped? flip-bitmap) - (bitmap-x-scale bm) - (bitmap-y-scale bm) - (bitmap-angle bm)))) + (ibitmap-x-scale bm) + (ibitmap-y-scale bm) + (ibitmap-angle bm)))) (define (calc-rendered-bitmap flip-bitmap key) (let ([bitmap (flip-shape flip-bitmap)]) (cond - [(hash-ref (bitmap-cache bitmap) key #f) => (λ (x) x)] + [(hash-ref (ibitmap-cache bitmap) key #f) => (λ (x) x)] [else (let ([flipped? (flip-flipped? flip-bitmap)]) - (define-values (orig-bitmap-obj orig-mask-obj) (values (bitmap-raw-bitmap bitmap) - (bitmap-raw-mask bitmap))) + (define-values (orig-bitmap-obj orig-mask-obj) (values (ibitmap-raw-bitmap bitmap) + (ibitmap-raw-mask bitmap))) (define-values (bitmap-obj mask-obj) (cond - [(<= (* (bitmap-x-scale bitmap) - (bitmap-y-scale bitmap)) + [(<= (* (ibitmap-x-scale bitmap) + (ibitmap-y-scale bitmap)) 1) ;; since we prefer to rotate big things, we rotate first (let-values ([(bitmap-obj mask-obj) (do-rotate bitmap orig-bitmap-obj orig-mask-obj flipped?)]) @@ -912,16 +912,16 @@ the mask bitmap and the original bitmap are all together in a single bytes! (let-values ([(bitmap-obj mask-obj) (do-scale bitmap orig-bitmap-obj orig-mask-obj)]) (do-rotate bitmap bitmap-obj mask-obj flipped?))])) (define pair (cons bitmap-obj mask-obj)) - (hash-set! (bitmap-cache bitmap) key pair) + (hash-set! (ibitmap-cache bitmap) key pair) pair)]))) (define (do-rotate bitmap bitmap-obj mask-obj flip?) (cond - [(and (not flip?) (zero? (bitmap-angle bitmap))) + [(and (not flip?) (zero? (ibitmap-angle bitmap))) ;; don't rotate anything in this case. (values bitmap-obj mask-obj)] [else - (let ([θ (degrees->radians (bitmap-angle bitmap))]) + (let ([θ (degrees->radians (ibitmap-angle bitmap))]) (let-values ([(bytes w h) (bitmap->bytes bitmap-obj mask-obj)]) (let-values ([(rotated-bytes rotated-w rotated-h) (rotate-bytes bytes w h θ)]) @@ -933,8 +933,8 @@ the mask bitmap and the original bitmap are all together in a single bytes! (values bm mask)))))])) (define (do-scale bitmap orig-bm orig-mask) - (let ([x-scale (bitmap-x-scale bitmap)] - [y-scale (bitmap-y-scale bitmap)]) + (let ([x-scale (ibitmap-x-scale bitmap)] + [y-scale (ibitmap-y-scale bitmap)]) (cond [(and (= 1 x-scale) (= 1 y-scale)) ;; no need to scale in this case @@ -1081,7 +1081,7 @@ the mask bitmap and the original bitmap are all together in a single bytes! [h (send bm get-height)]) (make-image (make-translate (/ w 2) (/ h 2) - (make-bitmap bm mask-bm 0 1 1 (make-hash))) + (make-ibitmap bm mask-bm 0 1 1 (make-hash))) (make-bb w h h) #f))) @@ -1125,8 +1125,8 @@ the mask bitmap and the original bitmap are all together in a single bytes! curve-segment-color make-pen pen? pen-color pen-width pen-style pen-cap pen-join pen - make-bitmap bitmap? bitmap-raw-bitmap bitmap-raw-mask bitmap-angle bitmap-x-scale bitmap-y-scale - bitmap-cache + make-ibitmap ibitmap? ibitmap-raw-bitmap ibitmap-raw-mask ibitmap-angle ibitmap-x-scale ibitmap-y-scale + ibitmap-cache make-flip flip? flip-flipped? flip-shape diff --git a/collects/mrlib/private/regmk.rkt b/collects/mrlib/private/regmk.rkt index 171f0622c2..bf5d8bf1ff 100644 --- a/collects/mrlib/private/regmk.rkt +++ b/collects/mrlib/private/regmk.rkt @@ -10,14 +10,15 @@ (define-syntax (define-struct/reg-mk stx) (syntax-case stx () - [(_ id . rest) + [(_ id #:reflect-id reflect-id rest ...) (let ([build-name - (λ (fmt) - (datum->syntax #'id (string->symbol (format fmt (syntax->datum #'id)))))]) + (λ (fmt id) + (datum->syntax id (string->symbol (format fmt (syntax->datum id)))))]) #`(begin - (define-struct id . rest) - (add-id-constructor-pair '#,(build-name "struct:~a") - #,(build-name "make-~a"))))])) + (define-struct id rest ... #:reflection-name 'reflect-id) + (add-id-constructor-pair '#,(build-name "struct:~a" #'reflect-id) + #,(build-name "make-~a" #'id))))] + [(_ id . rest) #'(define-struct/reg-mk id #:reflect-id id . rest)])) (define (id->constructor id) (let ([line (assoc id id-constructor-pairs)]) diff --git a/collects/racket/draw.rkt b/collects/racket/draw.rkt index 73a79bcba6..e9c4403e81 100644 --- a/collects/racket/draw.rkt +++ b/collects/racket/draw.rkt @@ -23,7 +23,6 @@ pen% pen-list% the-pen-list brush% brush-list% the-brush-list region% - bitmap% dc-path% dc<%> bitmap-dc% @@ -31,4 +30,9 @@ ps-setup% current-ps-setup get-face-list gl-config% - gl-context<%>) + gl-context<%> + + bitmap% + make-bitmap + read-bitmap + make-monochrome-bitmap) diff --git a/collects/racket/draw/private/bitmap.rkt b/collects/racket/draw/private/bitmap.rkt index 92656eb1d0..8ca3d5cf3c 100644 --- a/collects/racket/draw/private/bitmap.rkt +++ b/collects/racket/draw/private/bitmap.rkt @@ -15,7 +15,10 @@ "color.rkt") (provide bitmap% - make-alternate-bitmap-kind) + make-bitmap + read-bitmap + make-monochrome-bitmap + (protect-out make-alternate-bitmap-kind)) ;; FIXME: there must be some way to abstract over all many of the ;; ARGB/RGBA/BGRA iterations. @@ -26,7 +29,7 @@ get-alphas-as-mask set-alphas-as-mask) -(define (kind-symbol? s) +(define (bitmap-file-kind-symbol? s) (memq s '(unknown unknown/mask unknown/alpha gif gif/mask gif/alpha jpeg jpeg/alpha @@ -36,7 +39,7 @@ bmp bmp/alpha pict))) -(define (save-kind-symbol? s) +(define (bitmap-save-kind-symbol? s) (memq s '(png jpeg gif xbm xpm bmp))) (define (quality-integer? i) @@ -88,8 +91,8 @@ (alternate-bitmap-kind-width a) (alternate-bitmap-kind-height a) #f #t #f #f)] - [([exact-nonnegative-integer? w] - [exact-nonnegative-integer? h] + [([exact-positive-integer? w] + [exact-positive-integer? h] [any? [b&w? #f]] [any? [alpha? #f]]) (values @@ -113,7 +116,7 @@ s) #f)] [([(make-alts path-string? input-port?) filename] - [kind-symbol? [kind 'unknown]] + [bitmap-file-kind-symbol? [kind 'unknown]] [(make-or-false color%) [bg-color #f]] [any? [complain-on-failure? #f]]) (let-values ([(s b&w?) (do-load-bitmap filename kind bg-color complain-on-failure?)] @@ -155,8 +158,8 @@ mask-bm) (values #f 0 0 #f #f #f #f))))] [([bytes? bstr] - [exact-nonnegative-integer? w] - [exact-nonnegative-integer? h]) + [exact-positive-integer? w] + [exact-positive-integer? h]) (let ([bw (quotient (+ w 7) 8)]) (unless ((bytes-length bstr) . >= . (* h bw)) (error (init-name 'bitmap%) @@ -218,7 +221,7 @@ (define/public (adjust-lock delta) (set! locked (+ locked delta))) (def/public (load-bitmap [(make-alts path-string? input-port?) in] - [kind-symbol? [kind 'unknown]] + [bitmap-file-kind-symbol? [kind 'unknown]] [(make-or-false color%) [bg #f]] [any? [complain-on-failure? #f]]) (check-alternate 'load-bitmap) @@ -432,7 +435,7 @@ (send bm release-bitmap-storage))) (def/public (save-file [(make-alts path-string? output-port?) out] - [save-kind-symbol? [kind 'unknown]] + [bitmap-save-kind-symbol? [kind 'unknown]] [quality-integer? [quality 75]]) (check-ok 'save-file) (if alt? @@ -743,3 +746,19 @@ (cairo_surface_mark_dirty s)))) )) + +(define/top (make-bitmap [exact-positive-integer? w] + [exact-positive-integer? h] + [any? [alpha? #t]]) + (make-object bitmap% w h #f alpha?)) + +(define/top (read-bitmap [path-string? filename] + [bitmap-file-kind-symbol? [kind 'unknown/alpha]]) + (make-object bitmap% filename kind)) + +(define/top (make-monochrome-bitmap [exact-positive-integer? w] + [exact-positive-integer? h] + [(make-or-false bytes?) [bits #f]]) + (if bits + (make-object bitmap% bits w h) + (make-object bitmap% w h #t))) \ No newline at end of file diff --git a/collects/scribblings/gui/bitmap-class.scrbl b/collects/scribblings/gui/bitmap-class.scrbl index 408224977f..1c2de5586b 100644 --- a/collects/scribblings/gui/bitmap-class.scrbl +++ b/collects/scribblings/gui/bitmap-class.scrbl @@ -13,8 +13,8 @@ Sometimes, a bitmap object creation fails in a low-level manner. In bitmaps (otherwise, @|MismatchExn|). -@defconstructor*/make[(([width (integer-in 1 10000)] - [height (integer-in 1 10000)] +@defconstructor*/make[(([width exact-positive-integer?] + [height exact-positive-integer?] [monochrome? any/c #f] [alpha? any/c #f]) ([in (or/c path-string? input-port?)] @@ -27,8 +27,13 @@ Sometimes, a bitmap object creation fails in a low-level manner. In 'unknown] [bg-color (or/c (is-a?/c color%) false/c) #f]) ([bits bytes?] - [width (integer-in 1 10000)] - [height (integer-in 1 10000)]))]{ + [width exact-positive-integer?] + [height exact-positive-integer?]))]{ + +The @racket[make-bitmap], @racket[make-monchrome-bitmap], and + @racket[read-bitmap] functions are preferred over using + @racket[make-object] with @racket[bitmap%], because the functions are + less overloaded and provide more useful defaults. When @scheme[width] and @scheme[height] are provided: Creates a new bitmap. If @scheme[monochrome?] is true, the bitmap is monochrome; if @@ -57,8 +62,8 @@ When a @scheme[bits] byte string is provided: Creates a monochrome @defmethod[(get-argb-pixels [x real?] [y real?] - [width (integer-in 1 10000)] - [height (integer-in 1 10000)] + [width exact-nonnegative-integer?] + [height exact-nonnegative-integer?] [pixels (and/c bytes? mutable?)] [alpha? any/c #f]) void?]{ @@ -87,7 +92,7 @@ Returns a copy of this bitmap's requested OpenGL configuration. See } @defmethod[(get-height) - (integer-in 1 10000)]{ + exact-positive-integer?]{ Gets the height of the bitmap in pixels. @@ -130,7 +135,7 @@ Unlike an alpha channel, the mask bitmap is @italic{not} used } @defmethod[(get-width) - (integer-in 1 10000)]{ + exact-positive-integer?]{ Gets the width of the bitmap in pixels. diff --git a/collects/scribblings/gui/bitmap-funcs.scrbl b/collects/scribblings/gui/bitmap-funcs.scrbl new file mode 100644 index 0000000000..5490a9646f --- /dev/null +++ b/collects/scribblings/gui/bitmap-funcs.scrbl @@ -0,0 +1,40 @@ +#lang scribble/doc +@(require "common.ss") + +@title{Bitmaps} + + +@defproc[(make-bitmap [width exact-positive-integer?] + [height exact-positive-integer?] + [alpha? any/c #t]) + (is-a?/c bitmap%)]{ + +Returns @racket[(make-object bitmap% width height #f alpha?)], but +this procedure is preferred because it defaults @racket[alpha?] in a +more useful way.} + + +@defproc[(make-monochrome-bitmap [width exact-positive-integer?] + [height exact-positive-integer?] + [bits (or/c bytes? #f) #f]) + (is-a?/c bitmap%)]{ + +Returns @racket[(make-object bitmap% width height #t)] if +@racket[bits] is @racket[#f], or @racket[(make-object bitmap% bits +width height)] otherwise. This procedure is preferred to using +@racket[make-object] on @racket[bitmap%] because it is less +overloaded.} + + +@defproc[(read-bitmap [in (or path-string? input-port?)] + [kind (one-of/c 'unknown 'unknown/mask 'unknown/alpha + 'gif 'gif/mask 'gif/alpha + 'jpeg 'jpeg/alpha + 'png 'png/mask 'png/alpha + 'xbm 'xbm/alpha 'xpm 'xpm/alpha + 'bmp 'bmp/alpha) + 'unknown/alpha]) + (is-a?/c bitmap%)]{ + +Returns @racket[(make-object bitmap% in kind)], but this procedure is +preferred because it defaults @racket[kind] in a more useful way.} diff --git a/collects/scribblings/gui/draw-funcs.scrbl b/collects/scribblings/gui/draw-funcs.scrbl index 37a3f4e790..1960f7684c 100644 --- a/collects/scribblings/gui/draw-funcs.scrbl +++ b/collects/scribblings/gui/draw-funcs.scrbl @@ -8,4 +8,5 @@ @include-section["global-draw-funcs.scrbl"] @include-section["post-script-funcs.scrbl"] @include-section["draw-list-funcs.scrbl"] +@include-section["bitmap-funcs.scrbl"] @include-section["font-funcs.scrbl"] diff --git a/collects/scribblings/gui/gui.scrbl b/collects/scribblings/gui/gui.scrbl index 707b101721..3fced25bbe 100644 --- a/collects/scribblings/gui/gui.scrbl +++ b/collects/scribblings/gui/gui.scrbl @@ -7,14 +7,9 @@ @declare-exporting[racket/gui/base racket/gui #:use-sources (mred)] -This reference manual describes the GUI toolbox that is part of Racket - and whose core is implemented by the GRacket executable. - @defmodule*/no-declare[(racket/gui/base)]{The @racketmodname[racket/gui/base] library provides all of the class, -interface, and procedure bindings defined in this manual. At run time, -this library needs primitive graphics support that the GRacket executable -provides; this library cannot run inside the Racket executable.} +interface, and procedure bindings defined in this manual.} @defmodulelang*/no-declare[(racket/gui)]{The @racketmodname[racket/gui] language combines all bindings of the diff --git a/collects/scribblings/reference/exit.scrbl b/collects/scribblings/reference/exit.scrbl index 7e17cebd80..a4e52da7e8 100644 --- a/collects/scribblings/reference/exit.scrbl +++ b/collects/scribblings/reference/exit.scrbl @@ -21,3 +21,18 @@ argument is used as the OS-level exit code if it is an exact integer between @racket[1] and @racket[255] (which normally means ``failure''); otherwise, the exit code is @racket[0], (which normally means ``success'').} + + +@defparam[executable-yield-handler proc ((integer-in 0 255) . -> . any)]{ + +A parameter that determines a procedure to be called as the Racket +process is about to exit normally. The procedure associated with this +parameter is not call when @racket[exit] (or, more precisely, the +defauly @tech{exit handler}) is used to exit early. The argument to +the handler is the status code that is returned to the system on exit. +The default executable-yield handler simply returns @|void-const|. + +The @racketmodname[scheme/gui/base] library sets this parameter to +wait until all frames are closed, timers stopped, and queued events +handled in the main eventspace. See @racketmodname[scheme/gui/base] +for more information.} diff --git a/collects/waterworld/waterworld.rkt b/collects/waterworld/waterworld.rkt index 8664d4a8a2..4ecaef6995 100644 --- a/collects/waterworld/waterworld.rkt +++ b/collects/waterworld/waterworld.rkt @@ -79,16 +79,16 @@ (define *checking-message* "Considering your move ...") - (define (make-bitmap s) + (define (make-wbitmap s) (make-object bitmap% (build-path (collection-path "waterworld") s) 'gif)) (define *jolly-bitmap* #f) (define *jolly-ce-bitmap* #f) - (define *jolly-large-bitmap* (make-bitmap "jolly-large.gif")) - (define *jolly-small-bitmap* (make-bitmap "jolly-small.gif")) - (define *jolly-large-ce-bitmap* (make-bitmap "jolly-large-ce.gif")) - (define *jolly-small-ce-bitmap* (make-bitmap "jolly-small-ce.gif")) + (define *jolly-large-bitmap* (make-wbitmap "jolly-large.gif")) + (define *jolly-small-bitmap* (make-wbitmap "jolly-small.gif")) + (define *jolly-large-ce-bitmap* (make-wbitmap "jolly-large-ce.gif")) + (define *jolly-small-ce-bitmap* (make-wbitmap "jolly-small-ce.gif")) (define *jolly-small-desc* (list *jolly-small-bitmap* *jolly-small-ce-bitmap* 16 16)) (define *jolly-large-desc* (list *jolly-large-bitmap* *jolly-large-ce-bitmap* 23 27)) diff --git a/doc/release-notes/racket/Draw_and_GUI_5_5.txt b/doc/release-notes/racket/Draw_and_GUI_5_5.txt index 356bc7e7b1..f7f4fd1145 100644 --- a/doc/release-notes/racket/Draw_and_GUI_5_5.txt +++ b/doc/release-notes/racket/Draw_and_GUI_5_5.txt @@ -1,96 +1,130 @@ -Changes: +GRacket, Racket, Drawing, and GUIs +---------------------------------- - * The drawing portion of the old GUI toolbox is now available as a - separate layer: `racket/draw'. This layer can be used from plain - Racket independent of the `racket/gui' library, although - `racket/gui' re-exports `racket/draw'. +Version 5.5 includes two major changes to the Racket drawing and GUI +API: - The `racket/draw' library is built on top of the widely used Cairo - drawing library and Pango text-rendering library. + * The drawing portion of the GUI toolbox is now available as a + separate layer: `racket/draw'. This layer can be used independent + of the `racket/gui/base' library, although `racket/gui' re-exports + `racket/draw'. - * Drawing to a bitmap may not produce the same results as drawing to - a canvas. Use the `make-screen-bitmap' function (from `racket/gui') - or the `make-bitmap' method of `canvas%' to obtain a bitmap that - uses the same drawing algorithms as a canvas. + (The `racket/draw' library is built on top of the widely used Cairo + drawing library and Pango text-rendering library.) - Drawing to a canvas always draws into a bitmap that is kept - offscreen and periodically flushed onto the screen. The new - `suspend-flush' and `resume-flush' methods of `canvas%' provide - some control over the timing of the flushes, which in many cases - avoids the need for (additional) double buffering of canvas - content. + * The GRacket executable is no longer strictly necessary for running + GUI programs; the `racket/gui/base' library can be used from + Racket. - * A color bitmap can have an alpha channel, instead of just a mask - bitmap. When drawing a bitmap, alpha channels are used more - consistently and automatically than mask bitmaps. More - significantly, drawing into a bitmap with an alpha channel - preserves the drawn alphas; for example, drawing a line in the - middle of an empty bitmap produces an image with non-zero alpha - only at the drawn line. + The GRacket executable still offers some additional GUI-specific + functiontality however. Most notably, GRacket is a GUI application + under Windows (as opposed to a console application, which is + launched slightly differently by the OS), GRacket is a bundle under + Mac OS X (so the dock icon is the Racket logo, for example), and + GRacket manages single-instance mode for Windows and X. - Create a bitmap with an alpha channel by supplying #t as the new - `alpha?' argument to the `bitmap%' constructor, or by loading an - image with a type like 'unknown/alpha insteda of 'unknown or - 'unknown/mask. +The drawing and GUI libraries have also changed in further small ways. - A newly created `bitmap%' has an empty content (i.e., white with - zero alpha), insteda of unspecified content. - Images can be read into a `bitmap%' from from input ports, instead - of requiring a file path. +Bitmaps +------- - * A `dc<%>' supports additional drawing transformations: a rotation - (via `set-rotation') and a general transformation matrix (via - `set-initial-matrix'). Scaling factors can be negative, which - corresponds to flipping the direction of drawing. +Drawing to a bitmap may not produce the same results as drawing to a +canvas. Use the `make-screen-bitmap' function (from `racket/gui') or +the `make-bitmap' method of `canvas%' to obtain a bitmap that uses the +same drawing algorithms as a canvas. - A transformation matrix has the form `(vector xx xy yx yy x0 y0)', - where a point (x1, y1) is transformed to a point (x2, y2) with x2 = - xx*x1 + yx*y1 + x0 and y2 = xy*x1 + yy*y1 + y0, which is the usual - convention. +A color bitmap can have an alpha channel, instead of just a mask +bitmap. When drawing a bitmap, alpha channels are used more +consistently and automatically than mask bitmaps. More significantly, +drawing into a bitmap with an alpha channel preserves the drawn +alphas; for example, drawing a line in the middle of an empty bitmap +produces an image with non-zero alpha only at the drawn line. - New methods `translate', `scale', `rotate', and `transform' - simplify adding a further translation, scaling, rotation, or - arbitrary matrix transformation on top of the current - transformation. The new `get-translation' and `set-translation' - methods help to capture and restore transformation settings. +Only bitmaps created with the new `make-gl-bitmap' function support +OpenGL drawing. - The old translation and scaling transformations apply after the - initial matrix. The new rotation transformation applies after the - other transformations. This layering is redundant, since all - transformations can be expressed in a single matrix, but it is - backward-compatibile. Methods like `get-translation', - `set-translation', `scale', etc. help hide the reundancy. +Use the new `make-bitmap', `read-bitmap', `make-monochrome-bitmap', +`make-screen-bitmap', and `make-gl-bitmap' functions to create +bitmaps, instead of using `make-object' with `bitmap%'. The new +constructors are less overloaded and provide more modern defaults +(such as alpha channels by default). - The alpha value of a `dc<%>' (as set by `set-alpha') is used for - all drawing operations, including drawing a bitmap. +Image formats can be read into a `bitmap%' from from input ports, +instead of requiring a file path. A newly created bitmap has an empty +content (i.e., white with zero alpha), instead of unspecified content. - The `draw-bitmap' and `draw-bitmap-section' methods now smooth - bitmaps while scaling, so the `draw-bitmap-section-smooth' method - of `bitmap-dc%' simply calls `draw-bitmap-section'. - * A `region%' can be created as independent of any `dc<%>', in which - cases it uses the drawing context's current transformation at the - time that it is installed as a clipping region. +Canvases +-------- - * The old 'xor mode for pens and brushes is no longer available - (since it is not supported by Cairo). +Drawing to a canvas always draws into a bitmap that is kept offscreen +and periodically flushed onto the screen. The new `suspend-flush' and +`resume-flush' methods of `canvas%' provide some control over the +timing of the flushes, which in many cases avoids the need for +(additional) double buffering of canvas content. - * The `draw-caret' argument to a `snip%' or `editor<%>' `draw' or - `refresh' method can be a pair, which indicates that the caret is - owned by an enclosing display and the selection spans the snip or - editor. In that case, the snip or editor should refrain from - drawing a background for the selected region, and it should draw - the foreground in the color specified by - `get-highlight-text-color', if any. +OpenGL drawing in a canvas requires supplying 'gl as a style when +creating the `canvas%' instance. OpenGL and normal dc<%> drawing no +longer mix reliably in a canvas. - * OpenGL drawing in a canvas requires supplying 'gl as a style when - creating the `canvas%' instance. OpenGL and normal dc<%> drawing no - longer mix reliably in a canvas. - OpenG drawing to a bitmap requires a bitmap created with - `make-gl-bitmap'. +Drawing-Context Transformations +------------------------------- - * The `write-resource, `get-reource', and `send-event' functions have - been removed from `racket/gui/base'. If there is any demand for the - removed functionality, it will be implemented in a new library. +A `dc<%>' instance supports rotation (via `set-rotation'), negative +scaling factors for flipping, and a general transformation matrix (via +`set-initial-matrix'). A transformation matrix has the form `(vector +xx xy yx yy x0 y0)', where a point (x1, y1) is transformed to a point +(x2, y2) with x2 = xx*x1 + yx*y1 + x0 and y2 = xy*x1 + yy*y1 + y0, +which is the usual convention. + +New methods `translate', `scale', `rotate', and `transform' simplify +adding a further translation, scaling, rotation, or arbitrary matrix +transformation on top of the current transformation. The new +`get-translation' and `set-translation' methods help to capture and +restore transformation settings. + +The old translation and scaling transformations apply after the +initial matrix. The new rotation transformation applies after the +other transformations. This layering is redundant, since all +transformations can be expressed in a single matrix, but it is +backward-compatibile. Methods like `get-translation', +`set-translation', `scale', etc. help hide the reundancy. + + +Others Drawing-Context Changes +------------------------------ + +The alpha value of a `dc<%>' (as set by `set-alpha') is used for all +drawing operations, including drawing a bitmap. + +The `draw-bitmap' and `draw-bitmap-section' methods now smooth bitmaps +while scaling, so the `draw-bitmap-section-smooth' method of +`bitmap-dc%' simply calls `draw-bitmap-section'. + +A `region%' can be created as independent of any `dc<%>', in which +cases it uses the drawing context's current transformation at the time +that it is installed as a clipping region. + +The old 'xor mode for pens and brushes is no longer available (since +it is not supported by Cairo). + + +Editor Changes +-------------- + +The `draw-caret' argument to a `snip%' or `editor<%>' `draw' or +`refresh' method can be a pair, which indicates that the caret is +owned by an enclosing display and the selection spans the snip or +editor. In that case, the snip or editor should refrain from drawing a +background for the selected region, and it should draw the foreground +in the color specified by `get-highlight-text-color', if any. + + +Removed Functions +----------------- + +The `write-resource, `get-reource', and `send-event' functions have +been removed from `racket/gui/base'. If there is any demand for the +removed functionality, it will be implemented in a new library. diff --git a/src/gracket/grmain.c b/src/gracket/grmain.c index 7ddf74002c..04fafb187c 100644 --- a/src/gracket/grmain.c +++ b/src/gracket/grmain.c @@ -45,12 +45,9 @@ static void pre_filter_cmdline_arguments(int *argc, char ***argv); #define INITIAL_BIN_TYPE "ri" #define CMDLINE_STDIO_FLAG -#define YIELD_BEFORE_EXIT #define INITIAL_NAMESPACE_MODULE "scheme/gui/init" #define GRAPHICAL_REPL -static void yield_indefinitely(); - # include "../racket/main.c" static char *get_gr_init_filename(Scheme_Env *env) @@ -76,35 +73,6 @@ static char *get_gr_init_filename(Scheme_Env *env) return s; } -static void yield_indefinitely() -{ -#ifdef MZ_PRECISE_GC - void *dummy; -#endif - mz_jmp_buf * volatile save, newbuf; - Scheme_Thread * volatile p; - Scheme_Object *a[2], *yld; - - p = scheme_get_current_thread(); - save = p->error_buf; - p->error_buf = &newbuf; - - if (!scheme_setjmp(newbuf)) { - a[0] = scheme_intern_symbol("mred/mred"); - a[1] = scheme_intern_symbol("yield"); - yld = scheme_dynamic_require(2, a); - - a[0] = scheme_intern_symbol("wait"); - scheme_apply(yld, 1, a); - } - - p->error_buf = save; - -#ifdef MZ_PRECISE_GC - dummy = NULL; /* makes xform think that dummy is live, so we get a __gc_var_stack__ */ -#endif -} - /***********************************************************************/ /* Win32 handling */ /***********************************************************************/ diff --git a/src/racket/cmdline.inc b/src/racket/cmdline.inc index 001a31dbb7..f81ddc352b 100644 --- a/src/racket/cmdline.inc +++ b/src/racket/cmdline.inc @@ -150,7 +150,7 @@ typedef struct { int use_repl; int script_mode; #endif -#ifdef YIELD_BEFORE_EXIT +#ifndef NO_YIELD_BEFORE_EXIT int add_yield; #endif #ifdef CMDLINE_STDIO_FLAG @@ -433,7 +433,7 @@ static int finish_cmd_line_run(FinishArgs *fa, Repl_Proc repl) exit_val = 0; } else { exit_val = 1; -#ifdef YIELD_BEFORE_EXIT +#ifndef NO_YIELD_BEFORE_EXIT fa->a->add_yield = 0; #endif } @@ -441,15 +441,18 @@ static int finish_cmd_line_run(FinishArgs *fa, Repl_Proc repl) } #endif /* DONT_RUN_REP */ -#ifdef YIELD_BEFORE_EXIT +#ifndef NO_YIELD_BEFORE_EXIT if (fa->a->add_yield) { mz_jmp_buf * volatile save, newbuf; Scheme_Thread * volatile p; + Scheme_Object *yh, *yha[1]; p = scheme_get_current_thread(); save = p->error_buf; p->error_buf = &newbuf; if (!scheme_setjmp(newbuf)) { - yield_indefinitely(); + yh = scheme_get_param(scheme_current_config(), MZCONFIG_EXE_YIELD_HANDLER); + yha[0] = scheme_make_integer(exit_val); + scheme_apply(yh, 1, yha); } p->error_buf = save; } @@ -564,7 +567,7 @@ static int run_from_cmd_line(int argc, char *_argv[], #if !defined(DONT_LOAD_INIT_FILE) || !defined(DONT_PARSE_COMMAND_LINE) int no_init_file = 0; #endif -#ifdef YIELD_BEFORE_EXIT +#ifndef NO_YIELD_BEFORE_EXIT int add_yield = 1; #endif #ifdef CMDLINE_STDIO_FLAG @@ -800,9 +803,9 @@ static int run_from_cmd_line(int argc, char *_argv[], else if (!strcmp("--stdio", argv[0])) argv[0] = "-z"; else if (!strcmp("--back", argv[0])) - argv[0] = "-G"; + argv[0] = "-K"; # endif -# ifdef YIELD_BEFORE_EXIT +# ifndef NO_YIELD_BEFORE_EXIT else if (!strcmp("--no-yield", argv[0])) argv[0] = "-V"; # endif @@ -988,7 +991,7 @@ static int run_from_cmd_line(int argc, char *_argv[], case 'v': show_vers = 1; break; -#ifdef YIELD_BEFORE_EXIT +#ifndef NO_YIELD_BEFORE_EXIT case 'V': show_vers = 1; add_yield = 0; @@ -1022,6 +1025,7 @@ static int run_from_cmd_line(int argc, char *_argv[], break; case 'K': no_front = 1; + was_config_flag = 1; break; #endif #ifdef USE_OSKIT_CONSOLE @@ -1212,12 +1216,14 @@ static int run_from_cmd_line(int argc, char *_argv[], fa->a->use_repl = use_repl; fa->a->script_mode = script_mode; #endif -#ifdef YIELD_BEFORE_EXIT +#ifndef NO_YIELD_BEFORE_EXIT fa->a->add_yield = add_yield; #endif #ifdef CMDLINE_STDIO_FLAG fa->a->alternate_rep = alternate_rep; fa->a->no_front = no_front; + if (no_front) + scheme_register_process_global("Racket-GUI-no-front", (void *)0x1); #endif fa->init_lib = init_lib; fa->global_env = global_env; @@ -1256,8 +1262,8 @@ static int run_from_cmd_line(int argc, char *_argv[], # ifdef CMDLINE_STDIO_FLAG " -K, --back : Don't bring application to the foreground (Mac OS X)\n" # endif -# ifdef YIELD_BEFORE_EXIT - " -V, --no-yield : Don't `(yield 'wait)'\n" +# ifndef NO_YIELD_BEFORE_EXIT + " -V, --no-yield : Skip `((executable-yield-handler) )' on exit\n" # endif " Configuration options:\n" " -c, --no-compiled : Disable loading of compiled files\n" @@ -1298,8 +1304,8 @@ static int run_from_cmd_line(int argc, char *_argv[], " 3. Evaluate/load expressions/files in order, until first error\n" " 4. Load \"" INIT_FILENAME "\" [when -i]\n" " 5. Run read-eval-print loop [when -i]\n" -# ifdef YIELD_BEFORE_EXIT - " 6. Run `(yield 'wait)' [unless -V]\n" +# ifndef NO_YIELD_BEFORE_EXIT + " 6. Run `((executable-yield-handler) )' [unless -V]\n" # endif ); PRINTF(prog, BANNER); diff --git a/src/racket/include/scheme.h b/src/racket/include/scheme.h index 365160cc4d..96b0fa63d0 100644 --- a/src/racket/include/scheme.h +++ b/src/racket/include/scheme.h @@ -1231,6 +1231,8 @@ enum { MZCONFIG_ERROR_ESCAPE_HANDLER, + MZCONFIG_EXE_YIELD_HANDLER, + MZCONFIG_ALLOW_SET_UNDEFINED, MZCONFIG_COMPILE_MODULE_CONSTS, MZCONFIG_USE_JIT, diff --git a/src/racket/src/cstartup.inc b/src/racket/src/cstartup.inc index 424d6a6dba..d2c125481a 100644 --- a/src/racket/src/cstartup.inc +++ b/src/racket/src/cstartup.inc @@ -1,663 +1,660 @@ { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,48,46,49,46,56,51,0,0,0,1,0,0,10,0,13,0, -22,0,27,0,30,0,37,0,50,0,57,0,61,0,68,0,73,0,78,0,82, -0,88,0,102,0,116,0,119,0,125,0,129,0,131,0,142,0,144,0,158,0, -165,0,187,0,189,0,203,0,14,1,43,1,54,1,65,1,75,1,111,1,144, -1,177,1,236,1,46,2,124,2,190,2,195,2,215,2,106,3,126,3,177,3, -243,3,128,4,14,5,66,5,89,5,168,5,0,0,109,7,0,0,69,35,37, -109,105,110,45,115,116,120,29,11,11,68,104,101,114,101,45,115,116,120,64,99, -111,110,100,62,111,114,66,108,101,116,114,101,99,72,112,97,114,97,109,101,116, -101,114,105,122,101,66,117,110,108,101,115,115,63,108,101,116,66,100,101,102,105, -110,101,64,119,104,101,110,64,108,101,116,42,63,97,110,100,65,113,117,111,116, -101,29,94,2,14,68,35,37,107,101,114,110,101,108,11,29,94,2,14,68,35, -37,112,97,114,97,109,122,11,62,105,102,65,98,101,103,105,110,63,115,116,120, -61,115,70,108,101,116,45,118,97,108,117,101,115,61,120,73,108,101,116,114,101, -99,45,118,97,108,117,101,115,66,108,97,109,98,100,97,1,20,112,97,114,97, -109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,61,118,73,100,101, -102,105,110,101,45,118,97,108,117,101,115,97,36,11,8,240,151,85,0,0,95, -159,2,16,36,36,159,2,15,36,36,159,2,15,36,36,16,20,2,4,2,2, -2,6,2,2,2,7,2,2,2,8,2,2,2,9,2,2,2,10,2,2,2, -11,2,2,2,5,2,2,2,12,2,2,2,13,2,2,97,37,11,8,240,151, -85,0,0,93,159,2,15,36,37,16,2,2,3,161,2,2,37,2,3,2,2, -2,3,96,11,11,8,240,151,85,0,0,16,0,96,38,11,8,240,151,85,0, -0,16,0,13,16,4,36,29,11,11,2,2,11,18,16,2,99,64,104,101,114, -101,8,32,8,31,8,30,8,29,8,28,93,8,224,158,85,0,0,95,9,8, -224,158,85,0,0,2,2,27,248,22,151,4,195,249,22,144,4,80,158,39,36, -251,22,82,2,17,248,22,97,199,12,249,22,72,2,18,248,22,99,201,27,248, -22,151,4,195,249,22,144,4,80,158,39,36,251,22,82,2,17,248,22,97,199, -249,22,72,2,18,248,22,99,201,12,27,248,22,74,248,22,151,4,196,28,248, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,52,46,57,57,46,49,51,0,0,0,1,0,0,10,0,13, +0,22,0,27,0,30,0,37,0,50,0,57,0,61,0,68,0,73,0,78,0, +82,0,88,0,102,0,116,0,119,0,125,0,129,0,131,0,142,0,144,0,158, +0,165,0,187,0,189,0,203,0,14,1,43,1,54,1,65,1,75,1,111,1, +144,1,177,1,236,1,46,2,124,2,190,2,195,2,215,2,106,3,126,3,177, +3,243,3,128,4,14,5,66,5,89,5,168,5,0,0,109,7,0,0,69,35, +37,109,105,110,45,115,116,120,29,11,11,68,104,101,114,101,45,115,116,120,64, +99,111,110,100,62,111,114,66,108,101,116,114,101,99,72,112,97,114,97,109,101, +116,101,114,105,122,101,66,117,110,108,101,115,115,63,108,101,116,66,100,101,102, +105,110,101,64,119,104,101,110,64,108,101,116,42,63,97,110,100,65,113,117,111, +116,101,29,94,2,14,68,35,37,107,101,114,110,101,108,11,29,94,2,14,68, +35,37,112,97,114,97,109,122,11,62,105,102,65,98,101,103,105,110,63,115,116, +120,61,115,70,108,101,116,45,118,97,108,117,101,115,61,120,73,108,101,116,114, +101,99,45,118,97,108,117,101,115,66,108,97,109,98,100,97,1,20,112,97,114, +97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,61,118,73,100, +101,102,105,110,101,45,118,97,108,117,101,115,97,36,11,8,240,88,83,0,0, +95,159,2,16,36,36,159,2,15,36,36,159,2,15,36,36,16,20,2,4,2, +2,2,6,2,2,2,7,2,2,2,8,2,2,2,9,2,2,2,10,2,2, +2,11,2,2,2,5,2,2,2,12,2,2,2,13,2,2,97,37,11,8,240, +88,83,0,0,93,159,2,15,36,37,16,2,2,3,161,2,2,37,2,3,2, +2,2,3,96,38,11,8,240,88,83,0,0,16,0,96,11,11,8,240,88,83, +0,0,16,0,13,16,4,36,29,11,11,2,2,11,18,16,2,99,64,104,101, +114,101,8,32,8,31,8,30,8,29,8,28,93,8,224,95,83,0,0,95,9, +8,224,95,83,0,0,2,2,27,248,22,151,4,195,249,22,144,4,80,158,39, +36,251,22,82,2,17,248,22,97,199,12,249,22,72,2,18,248,22,99,201,27, +248,22,151,4,195,249,22,144,4,80,158,39,36,251,22,82,2,17,248,22,97, +199,249,22,72,2,18,248,22,99,201,12,27,248,22,74,248,22,151,4,196,28, +248,22,80,193,20,15,159,37,36,37,28,248,22,80,248,22,74,194,248,22,73, +193,249,22,144,4,80,158,39,36,251,22,82,2,17,248,22,73,199,249,22,72, +2,13,248,22,74,201,11,18,16,2,101,10,8,32,8,31,8,30,8,29,8, +28,16,4,11,11,2,19,3,1,8,101,110,118,49,51,51,48,49,16,4,11, +11,2,20,3,1,8,101,110,118,49,51,51,48,50,93,8,224,96,83,0,0, +95,9,8,224,96,83,0,0,2,2,27,248,22,74,248,22,151,4,196,28,248, 22,80,193,20,15,159,37,36,37,28,248,22,80,248,22,74,194,248,22,73,193, -249,22,144,4,80,158,39,36,251,22,82,2,17,248,22,73,199,249,22,72,2, -13,248,22,74,201,11,18,16,2,101,10,8,32,8,31,8,30,8,29,8,28, -16,4,11,11,2,19,3,1,8,101,110,118,49,51,51,48,54,16,4,11,11, -2,20,3,1,8,101,110,118,49,51,51,48,55,93,8,224,159,85,0,0,95, -9,8,224,159,85,0,0,2,2,27,248,22,74,248,22,151,4,196,28,248,22, -80,193,20,15,159,37,36,37,28,248,22,80,248,22,74,194,248,22,73,193,249, -22,144,4,80,158,39,36,250,22,82,2,21,248,22,82,249,22,82,248,22,82, -2,22,248,22,73,201,251,22,82,2,17,2,22,2,22,249,22,72,2,5,248, -22,74,204,18,16,2,101,11,8,32,8,31,8,30,8,29,8,28,16,4,11, -11,2,19,3,1,8,101,110,118,49,51,51,48,57,16,4,11,11,2,20,3, -1,8,101,110,118,49,51,51,49,48,93,8,224,160,85,0,0,95,9,8,224, -160,85,0,0,2,2,248,22,151,4,193,27,248,22,151,4,194,249,22,72,248, +249,22,144,4,80,158,39,36,250,22,82,2,21,248,22,82,249,22,82,248,22, +82,2,22,248,22,73,201,251,22,82,2,17,2,22,2,22,249,22,72,2,5, +248,22,74,204,18,16,2,101,11,8,32,8,31,8,30,8,29,8,28,16,4, +11,11,2,19,3,1,8,101,110,118,49,51,51,48,52,16,4,11,11,2,20, +3,1,8,101,110,118,49,51,51,48,53,93,8,224,97,83,0,0,95,9,8, +224,97,83,0,0,2,2,248,22,151,4,193,27,248,22,151,4,194,249,22,72, +248,22,82,248,22,73,196,248,22,74,195,27,248,22,74,248,22,151,4,23,197, +1,249,22,144,4,80,158,39,36,28,248,22,57,248,22,145,4,248,22,73,23, +198,2,27,249,22,2,32,0,89,162,8,44,37,43,9,222,33,40,248,22,151, +4,248,22,97,23,200,2,250,22,82,2,23,248,22,82,249,22,82,248,22,82, +248,22,73,23,204,2,250,22,83,2,24,249,22,2,22,73,23,204,2,248,22, +99,23,206,2,249,22,72,248,22,73,23,202,1,249,22,2,22,97,23,200,1, +250,22,83,2,21,249,22,2,32,0,89,162,8,44,37,47,9,222,33,41,248, +22,151,4,248,22,73,201,248,22,74,198,27,248,22,151,4,194,249,22,72,248, 22,82,248,22,73,196,248,22,74,195,27,248,22,74,248,22,151,4,23,197,1, -249,22,144,4,80,158,39,36,28,248,22,57,248,22,145,4,248,22,73,23,198, -2,27,249,22,2,32,0,89,162,8,44,37,43,9,222,33,40,248,22,151,4, -248,22,97,23,200,2,250,22,82,2,23,248,22,82,249,22,82,248,22,82,248, -22,73,23,204,2,250,22,83,2,24,249,22,2,22,73,23,204,2,248,22,99, -23,206,2,249,22,72,248,22,73,23,202,1,249,22,2,22,97,23,200,1,250, -22,83,2,21,249,22,2,32,0,89,162,8,44,37,47,9,222,33,41,248,22, -151,4,248,22,73,201,248,22,74,198,27,248,22,151,4,194,249,22,72,248,22, -82,248,22,73,196,248,22,74,195,27,248,22,74,248,22,151,4,23,197,1,249, -22,144,4,80,158,39,36,250,22,83,2,23,249,22,2,32,0,89,162,8,44, -37,47,9,222,33,43,248,22,151,4,248,22,73,201,248,22,74,198,27,248,22, -74,248,22,151,4,196,27,248,22,151,4,248,22,73,195,249,22,144,4,80,158, -40,36,28,248,22,80,195,250,22,83,2,21,9,248,22,74,199,250,22,82,2, -9,248,22,82,248,22,73,199,250,22,83,2,12,248,22,74,201,248,22,74,202, -27,248,22,74,248,22,151,4,23,197,1,27,249,22,1,22,86,249,22,2,22, -151,4,248,22,151,4,248,22,73,199,249,22,144,4,80,158,40,36,251,22,82, -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,83,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,201,250,22,83,2,21,9,248,22,74,203,27,248,22,74,248,22, -151,4,196,28,248,22,80,193,20,15,159,37,36,37,249,22,144,4,80,158,39, -36,27,248,22,151,4,248,22,73,197,28,249,22,128,9,62,61,62,248,22,145, -4,248,22,97,196,250,22,82,2,21,248,22,82,249,22,82,21,93,2,26,248, -22,73,199,250,22,83,2,4,249,22,82,2,26,249,22,82,248,22,106,203,2, -26,248,22,74,202,251,22,82,2,17,28,249,22,128,9,248,22,145,4,248,22, -73,200,64,101,108,115,101,10,248,22,73,197,250,22,83,2,21,9,248,22,74, -200,249,22,72,2,4,248,22,74,202,100,8,32,8,31,8,30,8,29,8,28, -16,4,11,11,2,19,3,1,8,101,110,118,49,51,51,51,50,16,4,11,11, -2,20,3,1,8,101,110,118,49,51,51,51,51,93,8,224,161,85,0,0,18, -16,2,158,94,10,64,118,111,105,100,8,48,95,9,8,224,161,85,0,0,2, -2,27,248,22,74,248,22,151,4,196,249,22,144,4,80,158,39,36,28,248,22, -57,248,22,145,4,248,22,73,197,250,22,82,2,27,248,22,82,248,22,73,199, -248,22,97,198,27,248,22,145,4,248,22,73,197,250,22,82,2,27,248,22,82, -248,22,73,197,250,22,83,2,24,248,22,74,199,248,22,74,202,159,36,20,105, -159,36,16,1,11,16,0,83,158,42,20,103,145,2,1,2,1,2,2,11,11, -11,10,36,80,158,36,36,20,105,159,36,16,0,16,0,16,1,2,3,37,16, -0,36,16,0,36,11,11,39,36,11,11,11,16,10,2,4,2,5,2,6,2, -7,2,8,2,9,2,10,2,11,2,12,2,13,16,10,11,11,11,11,11,11, -11,11,11,11,16,10,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2, -11,2,12,2,13,36,46,37,11,11,11,16,0,16,0,16,0,36,36,11,11, -11,11,16,0,16,0,16,0,36,36,16,11,16,5,2,3,20,15,159,36,36, -36,36,20,105,159,36,16,0,16,1,33,33,10,16,5,2,8,89,162,8,44, -37,53,9,223,0,33,34,36,20,105,159,36,16,1,2,3,16,0,11,16,5, -2,11,89,162,8,44,37,53,9,223,0,33,35,36,20,105,159,36,16,1,2, -3,16,0,11,16,5,2,13,89,162,8,44,37,53,9,223,0,33,36,36,20, -105,159,36,16,1,2,3,16,1,33,37,11,16,5,2,5,89,162,8,44,37, -56,9,223,0,33,38,36,20,105,159,36,16,1,2,3,16,1,33,39,11,16, -5,2,9,89,162,8,44,37,58,9,223,0,33,42,36,20,105,159,36,16,1, -2,3,16,0,11,16,5,2,6,89,162,8,44,37,53,9,223,0,33,44,36, -20,105,159,36,16,1,2,3,16,0,11,16,5,2,12,89,162,8,44,37,54, -9,223,0,33,45,36,20,105,159,36,16,1,2,3,16,0,11,16,5,2,7, -89,162,8,44,37,55,9,223,0,33,46,36,20,105,159,36,16,1,2,3,16, -0,11,16,5,2,4,89,162,8,44,37,58,9,223,0,33,47,36,20,105,159, -36,16,1,2,3,16,1,33,49,11,16,5,2,10,89,162,8,44,37,54,9, -223,0,33,50,36,20,105,159,36,16,1,2,3,16,0,11,16,0,94,2,15, -2,16,93,2,15,9,9,36,0}; - EVAL_ONE_SIZED_STR((char *)expr, 2024); +249,22,144,4,80,158,39,36,250,22,83,2,23,249,22,2,32,0,89,162,8, +44,37,47,9,222,33,43,248,22,151,4,248,22,73,201,248,22,74,198,27,248, +22,74,248,22,151,4,196,27,248,22,151,4,248,22,73,195,249,22,144,4,80, +158,40,36,28,248,22,80,195,250,22,83,2,21,9,248,22,74,199,250,22,82, +2,9,248,22,82,248,22,73,199,250,22,83,2,12,248,22,74,201,248,22,74, +202,27,248,22,74,248,22,151,4,23,197,1,27,249,22,1,22,86,249,22,2, +22,151,4,248,22,151,4,248,22,73,199,249,22,144,4,80,158,40,36,251,22, +82,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,83,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,201,250,22,83,2,21,9,248,22,74,203,27,248,22,74,248, +22,151,4,196,28,248,22,80,193,20,15,159,37,36,37,249,22,144,4,80,158, +39,36,27,248,22,151,4,248,22,73,197,28,249,22,128,9,62,61,62,248,22, +145,4,248,22,97,196,250,22,82,2,21,248,22,82,249,22,82,21,93,2,26, +248,22,73,199,250,22,83,2,4,249,22,82,2,26,249,22,82,248,22,106,203, +2,26,248,22,74,202,251,22,82,2,17,28,249,22,128,9,248,22,145,4,248, +22,73,200,64,101,108,115,101,10,248,22,73,197,250,22,83,2,21,9,248,22, +74,200,249,22,72,2,4,248,22,74,202,100,8,32,8,31,8,30,8,29,8, +28,16,4,11,11,2,19,3,1,8,101,110,118,49,51,51,50,55,16,4,11, +11,2,20,3,1,8,101,110,118,49,51,51,50,56,93,8,224,98,83,0,0, +18,16,2,158,94,10,64,118,111,105,100,8,48,95,9,8,224,98,83,0,0, +2,2,27,248,22,74,248,22,151,4,196,249,22,144,4,80,158,39,36,28,248, +22,57,248,22,145,4,248,22,73,197,250,22,82,2,27,248,22,82,248,22,73, +199,248,22,97,198,27,248,22,145,4,248,22,73,197,250,22,82,2,27,248,22, +82,248,22,73,197,250,22,83,2,24,248,22,74,199,248,22,74,202,159,36,20, +105,159,36,16,1,11,16,0,83,158,42,20,103,145,2,1,2,1,2,2,11, +11,11,10,36,80,158,36,36,20,105,159,36,16,0,16,0,16,1,2,3,37, +16,0,36,16,0,36,11,11,39,36,11,11,11,16,10,2,4,2,5,2,6, +2,7,2,8,2,9,2,10,2,11,2,12,2,13,16,10,11,11,11,11,11, +11,11,11,11,11,16,10,2,4,2,5,2,6,2,7,2,8,2,9,2,10, +2,11,2,12,2,13,36,46,37,11,11,11,16,0,16,0,16,0,36,36,11, +11,11,11,16,0,16,0,16,0,36,36,16,11,16,5,2,3,20,15,159,36, +36,36,36,20,105,159,36,16,0,16,1,33,33,10,16,5,2,8,89,162,8, +44,37,53,9,223,0,33,34,36,20,105,159,36,16,1,2,3,16,0,11,16, +5,2,11,89,162,8,44,37,53,9,223,0,33,35,36,20,105,159,36,16,1, +2,3,16,0,11,16,5,2,13,89,162,8,44,37,53,9,223,0,33,36,36, +20,105,159,36,16,1,2,3,16,1,33,37,11,16,5,2,5,89,162,8,44, +37,56,9,223,0,33,38,36,20,105,159,36,16,1,2,3,16,1,33,39,11, +16,5,2,9,89,162,8,44,37,58,9,223,0,33,42,36,20,105,159,36,16, +1,2,3,16,0,11,16,5,2,6,89,162,8,44,37,53,9,223,0,33,44, +36,20,105,159,36,16,1,2,3,16,0,11,16,5,2,12,89,162,8,44,37, +54,9,223,0,33,45,36,20,105,159,36,16,1,2,3,16,0,11,16,5,2, +7,89,162,8,44,37,55,9,223,0,33,46,36,20,105,159,36,16,1,2,3, +16,0,11,16,5,2,4,89,162,8,44,37,58,9,223,0,33,47,36,20,105, +159,36,16,1,2,3,16,1,33,49,11,16,5,2,10,89,162,8,44,37,54, +9,223,0,33,50,36,20,105,159,36,16,1,2,3,16,0,11,16,0,94,2, +15,2,16,93,2,15,9,9,36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 2025); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,48,46,49,46,56,72,0,0,0,1,0,0,8,0,21,0, -26,0,43,0,58,0,76,0,92,0,106,0,128,0,146,0,166,0,182,0,200, -0,231,0,4,1,26,1,40,1,46,1,60,1,65,1,75,1,83,1,111,1, -143,1,188,1,194,1,201,1,207,1,252,1,20,2,59,2,61,2,227,2,61, -4,102,4,175,5,5,6,91,6,190,6,18,7,31,7,164,7,137,8,221,8, -234,8,255,9,202,10,215,10,107,15,122,16,11,17,252,17,234,18,241,18,249, -18,1,19,126,19,140,19,125,21,226,23,248,23,8,24,212,25,59,26,73,26, -155,27,92,29,101,29,110,29,136,29,9,30,0,0,28,33,0,0,67,35,37, -117,116,105,108,115,72,112,97,116,104,45,115,116,114,105,110,103,63,64,98,115, -98,115,76,110,111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,74,45, -99,104,101,99,107,45,114,101,108,112,97,116,104,77,45,99,104,101,99,107,45, -99,111,108,108,101,99,116,105,111,110,75,99,111,108,108,101,99,116,105,111,110, -45,112,97,116,104,73,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,77, -99,104,101,99,107,45,115,117,102,102,105,120,45,99,97,108,108,79,112,97,116, -104,45,114,101,112,108,97,99,101,45,115,117,102,102,105,120,75,112,97,116,104, -45,97,100,100,45,115,117,102,102,105,120,77,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,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,20,102,105,110,100,45,101,120,101,99,117,116,97,98,108, -101,45,112,97,116,104,73,101,109,98,101,100,100,101,100,45,108,111,97,100,65, -113,117,111,116,101,29,94,2,18,68,35,37,112,97,114,97,109,122,11,64,108, -111,111,112,69,101,120,101,99,45,102,105,108,101,67,119,105,110,100,111,119,115, -6,25,25,112,97,116,104,32,111,114,32,118,97,108,105,100,45,112,97,116,104, -32,115,116,114,105,110,103,6,29,29,126,97,58,32,105,110,118,97,108,105,100, -32,114,101,108,97,116,105,118,101,32,112,97,116,104,58,32,126,115,6,42,42, -126,97,58,32,99,111,108,108,101,99,116,105,111,110,32,110,111,116,32,102,111, -117,110,100,58,32,126,115,32,105,110,32,97,110,121,32,111,102,58,32,126,115, -65,99,108,111,111,112,6,4,4,46,114,107,116,6,3,3,46,115,115,6,42, -42,112,97,116,104,32,40,102,111,114,32,97,110,121,32,115,121,115,116,101,109, -41,32,111,114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,114,105,110, -103,6,21,21,115,116,114,105,110,103,32,111,114,32,98,121,116,101,32,115,116, -114,105,110,103,6,36,36,99,97,110,110,111,116,32,97,100,100,32,97,32,115, -117,102,102,105,120,32,116,111,32,97,32,114,111,111,116,32,112,97,116,104,58, -32,5,0,27,20,14,159,80,159,37,52,38,250,80,159,40,53,38,249,22,27, -11,80,159,42,52,38,22,170,13,10,248,22,180,5,23,196,2,28,248,22,177, -6,23,194,2,12,87,94,248,22,136,9,23,194,1,27,20,14,159,80,159,38, -52,38,250,80,159,41,53,38,249,22,27,11,80,159,43,52,38,22,170,13,10, -248,22,180,5,23,197,2,28,248,22,177,6,23,194,2,12,87,94,248,22,136, -9,23,194,1,27,20,14,159,80,159,39,52,38,250,80,159,42,53,38,249,22, -27,11,80,159,44,52,38,22,170,13,10,248,22,180,5,23,198,2,28,248,22, -177,6,23,194,2,12,87,94,248,22,136,9,23,194,1,248,80,159,40,55,37, -197,28,248,22,80,23,195,2,9,27,248,22,73,23,196,2,27,28,248,22,156, -14,23,195,2,23,194,1,28,248,22,155,14,23,195,2,249,22,157,14,23,196, -1,250,80,158,43,50,248,22,172,14,2,21,11,10,250,80,158,41,50,248,22, -172,14,2,21,23,197,1,10,28,23,193,2,249,22,72,248,22,159,14,249,22, -157,14,23,198,1,247,22,173,14,27,248,22,74,23,200,1,28,248,22,80,23, -194,2,9,27,248,22,73,23,195,2,27,28,248,22,156,14,23,195,2,23,194, -1,28,248,22,155,14,23,195,2,249,22,157,14,23,196,1,250,80,158,48,50, -248,22,172,14,2,21,11,10,250,80,158,46,50,248,22,172,14,2,21,23,197, -1,10,28,23,193,2,249,22,72,248,22,159,14,249,22,157,14,23,198,1,247, -22,173,14,248,80,159,46,54,37,248,22,74,23,199,1,87,94,23,193,1,248, -80,159,44,54,37,248,22,74,23,197,1,87,94,23,193,1,27,248,22,74,23, -198,1,28,248,22,80,23,194,2,9,27,248,22,73,23,195,2,27,28,248,22, -156,14,23,195,2,23,194,1,28,248,22,155,14,23,195,2,249,22,157,14,23, -196,1,250,80,158,46,50,248,22,172,14,2,21,11,10,250,80,158,44,50,248, -22,172,14,2,21,23,197,1,10,28,23,193,2,249,22,72,248,22,159,14,249, -22,157,14,23,198,1,247,22,173,14,248,80,159,44,54,37,248,22,74,23,199, -1,248,80,159,42,54,37,248,22,74,196,27,248,22,132,14,23,195,2,28,23, -193,2,192,87,94,23,193,1,28,248,22,182,6,23,195,2,27,248,22,154,14, -195,28,192,192,248,22,155,14,195,11,87,94,28,28,248,22,133,14,23,195,2, -10,28,248,22,132,14,23,195,2,10,28,248,22,182,6,23,195,2,28,248,22, -154,14,23,195,2,10,248,22,155,14,23,195,2,11,12,250,22,164,9,76,110, -111,114,109,97,108,45,112,97,116,104,45,99,97,115,101,6,42,42,112,97,116, -104,32,40,102,111,114,32,97,110,121,32,115,121,115,116,101,109,41,32,111,114, -32,118,97,108,105,100,45,112,97,116,104,32,115,116,114,105,110,103,23,197,2, -28,28,248,22,133,14,23,195,2,249,22,128,9,248,22,134,14,23,197,2,2, -22,249,22,128,9,247,22,140,8,2,22,27,28,248,22,182,6,23,196,2,23, -195,2,248,22,130,8,248,22,137,14,23,197,2,28,249,22,187,14,0,21,35, -114,120,34,94,91,92,92,93,91,92,92,93,91,63,93,91,92,92,93,34,23, -195,2,28,248,22,182,6,195,248,22,140,14,195,194,27,248,22,157,7,23,195, -1,249,22,141,14,248,22,133,8,250,22,131,15,0,6,35,114,120,34,47,34, -28,249,22,187,14,0,22,35,114,120,34,91,47,92,92,93,91,46,32,93,43, -91,47,92,92,93,42,36,34,23,201,2,23,199,1,250,22,131,15,0,19,35, -114,120,34,91,32,46,93,43,40,91,47,92,92,93,42,41,36,34,23,202,1, -6,2,2,92,49,80,159,44,37,38,2,22,28,248,22,182,6,194,248,22,140, -14,194,193,87,94,28,28,248,22,132,14,23,195,2,10,28,248,22,182,6,23, -195,2,28,248,22,154,14,23,195,2,10,248,22,155,14,23,195,2,11,12,250, -22,164,9,23,196,2,2,23,23,197,2,28,248,22,154,14,23,195,2,12,248, -22,146,12,249,22,152,11,248,22,147,7,250,22,166,7,2,24,23,200,1,23, -201,1,247,22,23,87,94,28,28,248,22,132,14,23,195,2,10,28,248,22,182, -6,23,195,2,28,248,22,154,14,23,195,2,10,248,22,155,14,23,195,2,11, -12,250,22,164,9,23,196,2,2,23,23,197,2,28,248,22,154,14,23,195,2, -12,248,22,146,12,249,22,152,11,248,22,147,7,250,22,166,7,2,24,23,200, -1,23,201,1,247,22,23,87,94,87,94,28,28,248,22,132,14,23,195,2,10, -28,248,22,182,6,23,195,2,28,248,22,154,14,23,195,2,10,248,22,155,14, -23,195,2,11,12,250,22,164,9,195,2,23,23,197,2,28,248,22,154,14,23, -195,2,12,248,22,146,12,249,22,152,11,248,22,147,7,250,22,166,7,2,24, -199,23,201,1,247,22,23,249,22,3,89,162,8,44,37,50,9,223,2,33,38, -196,87,94,28,28,248,22,132,14,23,194,2,10,28,248,22,182,6,23,194,2, -28,248,22,154,14,23,194,2,10,248,22,155,14,23,194,2,11,12,250,22,164, -9,2,7,2,23,23,196,2,28,248,22,154,14,23,194,2,12,248,22,146,12, -249,22,152,11,248,22,147,7,250,22,166,7,2,24,2,7,23,200,1,247,22, -23,32,41,89,162,8,44,41,56,2,26,222,33,42,28,248,22,80,23,197,2, -87,94,23,196,1,28,23,197,2,196,87,94,23,197,1,248,22,146,12,249,22, -185,11,251,22,166,7,2,25,2,7,28,248,22,80,23,203,2,87,94,23,202, -1,23,201,1,250,22,1,22,150,14,23,204,1,23,205,1,23,200,1,247,22, -23,27,249,22,150,14,248,22,73,23,200,2,23,197,2,28,248,22,145,14,23, -194,2,27,250,22,1,22,150,14,23,197,1,199,28,248,22,145,14,193,192,252, -2,41,199,200,201,248,22,74,203,203,252,2,41,198,199,200,248,22,74,202,202, -87,94,87,94,87,94,28,28,248,22,132,14,23,194,2,10,28,248,22,182,6, -23,194,2,28,248,22,154,14,23,194,2,10,248,22,155,14,23,194,2,11,12, -250,22,164,9,2,7,2,23,23,196,2,28,248,22,154,14,23,194,2,12,248, -22,146,12,249,22,152,11,248,22,147,7,250,22,166,7,2,24,2,7,23,200, -2,247,22,23,249,22,3,32,0,89,162,8,44,37,49,9,222,33,40,23,196, -2,27,247,22,174,14,28,248,22,80,23,194,2,248,22,146,12,249,22,185,11, -251,22,166,7,2,25,2,7,28,248,22,80,23,203,2,87,94,23,202,1,23, -201,1,250,22,1,22,150,14,23,204,1,23,205,1,23,200,1,247,22,23,27, -249,22,150,14,248,22,73,23,197,2,23,197,2,28,248,22,145,14,23,194,2, -27,250,22,1,22,150,14,23,197,1,199,28,248,22,145,14,193,192,252,2,41, -199,200,201,248,22,74,200,11,252,2,41,198,199,200,248,22,74,199,11,87,94, -28,28,248,22,132,14,23,194,2,10,28,248,22,182,6,23,194,2,28,248,22, -154,14,23,194,2,10,248,22,155,14,23,194,2,11,12,250,22,164,9,2,9, -2,23,23,196,2,28,248,22,154,14,23,194,2,12,248,22,146,12,249,22,152, -11,248,22,147,7,250,22,166,7,2,24,2,9,23,200,1,247,22,23,32,45, -89,162,8,44,42,59,2,26,222,33,46,28,248,22,80,23,198,2,87,95,23, -197,1,23,194,1,28,23,198,2,197,87,94,23,198,1,248,22,146,12,249,22, -185,11,251,22,166,7,2,25,2,9,28,248,22,80,23,204,2,87,94,23,203, -1,23,202,1,250,22,1,22,150,14,23,205,1,23,206,1,23,200,1,247,22, -23,27,249,22,150,14,248,22,73,23,201,2,23,198,2,28,248,22,145,14,23, -194,2,27,250,22,1,22,150,14,23,197,1,23,201,2,28,248,22,145,14,23, -194,2,28,23,196,2,28,28,248,22,144,14,249,22,150,14,195,198,10,27,28, -248,22,132,14,197,248,22,136,14,197,196,27,248,22,185,6,23,195,2,27,28, -249,22,184,3,23,196,2,40,28,249,22,188,6,2,27,249,22,140,7,23,199, -2,249,22,172,3,23,200,2,40,249,22,141,7,250,22,140,7,23,200,1,36, -249,22,172,3,23,201,1,40,2,28,87,95,23,195,1,23,194,1,11,11,28, -23,193,2,248,22,144,14,249,22,150,14,198,23,196,1,11,192,253,2,45,200, -201,202,203,248,22,74,205,28,205,205,198,192,253,2,45,200,201,202,203,248,22, -74,205,205,253,2,45,199,200,201,202,248,22,74,204,204,87,95,87,94,28,28, -248,22,132,14,193,10,28,248,22,182,6,193,28,248,22,154,14,193,10,248,22, -155,14,193,11,12,250,22,164,9,2,9,2,23,195,28,248,22,154,14,193,12, -248,22,146,12,249,22,152,11,248,22,147,7,250,22,166,7,2,24,2,9,199, -247,22,23,87,94,87,94,28,28,248,22,132,14,23,195,2,10,28,248,22,182, -6,23,195,2,28,248,22,154,14,23,195,2,10,248,22,155,14,23,195,2,11, -12,250,22,164,9,2,9,2,23,23,197,2,28,248,22,154,14,23,195,2,12, -248,22,146,12,249,22,152,11,248,22,147,7,250,22,166,7,2,24,2,9,23, -201,2,247,22,23,249,22,3,32,0,89,162,8,44,37,49,9,222,33,44,23, -197,2,249,22,150,14,27,247,22,174,14,253,2,45,23,199,2,201,23,203,1, -23,204,1,23,199,1,11,194,32,48,89,162,44,44,8,29,2,26,222,33,49, -28,248,22,80,23,200,2,87,95,23,199,1,23,198,1,28,23,200,2,199,87, -94,23,200,1,248,23,196,1,251,22,166,7,2,25,23,199,1,28,248,22,80, -23,203,2,87,94,23,202,1,23,201,1,250,22,1,22,150,14,23,204,1,23, -205,1,23,198,1,27,249,22,150,14,248,22,73,23,203,2,23,199,2,28,248, -22,145,14,23,194,2,27,250,22,1,22,150,14,23,197,1,23,202,2,28,248, -22,145,14,23,194,2,28,23,200,2,28,28,248,22,144,14,249,22,150,14,23, -196,2,23,203,2,10,27,28,248,22,132,14,23,202,2,248,22,136,14,23,202, -2,23,201,2,27,248,22,185,6,23,195,2,27,28,249,22,184,3,23,196,2, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,52,46,57,57,46,49,72,0,0,0,1,0,0,8,0,21, +0,26,0,43,0,58,0,76,0,92,0,106,0,128,0,146,0,166,0,182,0, +200,0,231,0,4,1,26,1,40,1,46,1,60,1,65,1,75,1,83,1,111, +1,143,1,188,1,194,1,201,1,207,1,252,1,20,2,59,2,61,2,227,2, +61,4,102,4,175,5,5,6,91,6,190,6,18,7,31,7,164,7,137,8,221, +8,234,8,255,9,202,10,215,10,107,15,122,16,11,17,252,17,234,18,241,18, +249,18,1,19,126,19,140,19,125,21,226,23,248,23,8,24,212,25,59,26,73, +26,155,27,92,29,101,29,110,29,136,29,9,30,0,0,28,33,0,0,67,35, +37,117,116,105,108,115,72,112,97,116,104,45,115,116,114,105,110,103,63,64,98, +115,98,115,76,110,111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,74, +45,99,104,101,99,107,45,114,101,108,112,97,116,104,77,45,99,104,101,99,107, +45,99,111,108,108,101,99,116,105,111,110,75,99,111,108,108,101,99,116,105,111, +110,45,112,97,116,104,73,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, +77,99,104,101,99,107,45,115,117,102,102,105,120,45,99,97,108,108,79,112,97, +116,104,45,114,101,112,108,97,99,101,45,115,117,102,102,105,120,75,112,97,116, +104,45,97,100,100,45,115,117,102,102,105,120,77,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,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,20,102,105,110,100,45,101,120,101,99,117,116,97,98, +108,101,45,112,97,116,104,73,101,109,98,101,100,100,101,100,45,108,111,97,100, +65,113,117,111,116,101,29,94,2,18,68,35,37,112,97,114,97,109,122,11,64, +108,111,111,112,69,101,120,101,99,45,102,105,108,101,67,119,105,110,100,111,119, +115,6,25,25,112,97,116,104,32,111,114,32,118,97,108,105,100,45,112,97,116, +104,32,115,116,114,105,110,103,6,29,29,126,97,58,32,105,110,118,97,108,105, +100,32,114,101,108,97,116,105,118,101,32,112,97,116,104,58,32,126,115,6,42, +42,126,97,58,32,99,111,108,108,101,99,116,105,111,110,32,110,111,116,32,102, +111,117,110,100,58,32,126,115,32,105,110,32,97,110,121,32,111,102,58,32,126, +115,65,99,108,111,111,112,6,4,4,46,114,107,116,6,3,3,46,115,115,6, +42,42,112,97,116,104,32,40,102,111,114,32,97,110,121,32,115,121,115,116,101, +109,41,32,111,114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,114,105, +110,103,6,21,21,115,116,114,105,110,103,32,111,114,32,98,121,116,101,32,115, +116,114,105,110,103,6,36,36,99,97,110,110,111,116,32,97,100,100,32,97,32, +115,117,102,102,105,120,32,116,111,32,97,32,114,111,111,116,32,112,97,116,104, +58,32,5,0,27,20,14,159,80,159,37,52,38,250,80,159,40,53,38,249,22, +27,11,80,159,42,52,38,22,171,13,10,248,22,180,5,23,196,2,28,248,22, +177,6,23,194,2,12,87,94,248,22,136,9,23,194,1,27,20,14,159,80,159, +38,52,38,250,80,159,41,53,38,249,22,27,11,80,159,43,52,38,22,171,13, +10,248,22,180,5,23,197,2,28,248,22,177,6,23,194,2,12,87,94,248,22, +136,9,23,194,1,27,20,14,159,80,159,39,52,38,250,80,159,42,53,38,249, +22,27,11,80,159,44,52,38,22,171,13,10,248,22,180,5,23,198,2,28,248, +22,177,6,23,194,2,12,87,94,248,22,136,9,23,194,1,248,80,159,40,55, +37,197,28,248,22,80,23,195,2,9,27,248,22,73,23,196,2,27,28,248,22, +157,14,23,195,2,23,194,1,28,248,22,156,14,23,195,2,249,22,158,14,23, +196,1,250,80,158,43,50,248,22,173,14,2,21,11,10,250,80,158,41,50,248, +22,173,14,2,21,23,197,1,10,28,23,193,2,249,22,72,248,22,160,14,249, +22,158,14,23,198,1,247,22,174,14,27,248,22,74,23,200,1,28,248,22,80, +23,194,2,9,27,248,22,73,23,195,2,27,28,248,22,157,14,23,195,2,23, +194,1,28,248,22,156,14,23,195,2,249,22,158,14,23,196,1,250,80,158,48, +50,248,22,173,14,2,21,11,10,250,80,158,46,50,248,22,173,14,2,21,23, +197,1,10,28,23,193,2,249,22,72,248,22,160,14,249,22,158,14,23,198,1, +247,22,174,14,248,80,159,46,54,37,248,22,74,23,199,1,87,94,23,193,1, +248,80,159,44,54,37,248,22,74,23,197,1,87,94,23,193,1,27,248,22,74, +23,198,1,28,248,22,80,23,194,2,9,27,248,22,73,23,195,2,27,28,248, +22,157,14,23,195,2,23,194,1,28,248,22,156,14,23,195,2,249,22,158,14, +23,196,1,250,80,158,46,50,248,22,173,14,2,21,11,10,250,80,158,44,50, +248,22,173,14,2,21,23,197,1,10,28,23,193,2,249,22,72,248,22,160,14, +249,22,158,14,23,198,1,247,22,174,14,248,80,159,44,54,37,248,22,74,23, +199,1,248,80,159,42,54,37,248,22,74,196,27,248,22,133,14,23,195,2,28, +23,193,2,192,87,94,23,193,1,28,248,22,182,6,23,195,2,27,248,22,155, +14,195,28,192,192,248,22,156,14,195,11,87,94,28,28,248,22,134,14,23,195, +2,10,28,248,22,133,14,23,195,2,10,28,248,22,182,6,23,195,2,28,248, +22,155,14,23,195,2,10,248,22,156,14,23,195,2,11,12,250,22,164,9,76, +110,111,114,109,97,108,45,112,97,116,104,45,99,97,115,101,6,42,42,112,97, +116,104,32,40,102,111,114,32,97,110,121,32,115,121,115,116,101,109,41,32,111, +114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,114,105,110,103,23,197, +2,28,28,248,22,134,14,23,195,2,249,22,128,9,248,22,135,14,23,197,2, +2,22,249,22,128,9,247,22,140,8,2,22,27,28,248,22,182,6,23,196,2, +23,195,2,248,22,130,8,248,22,138,14,23,197,2,28,249,22,188,14,0,21, +35,114,120,34,94,91,92,92,93,91,92,92,93,91,63,93,91,92,92,93,34, +23,195,2,28,248,22,182,6,195,248,22,141,14,195,194,27,248,22,157,7,23, +195,1,249,22,142,14,248,22,133,8,250,22,132,15,0,6,35,114,120,34,47, +34,28,249,22,188,14,0,22,35,114,120,34,91,47,92,92,93,91,46,32,93, +43,91,47,92,92,93,42,36,34,23,201,2,23,199,1,250,22,132,15,0,19, +35,114,120,34,91,32,46,93,43,40,91,47,92,92,93,42,41,36,34,23,202, +1,6,2,2,92,49,80,159,44,37,38,2,22,28,248,22,182,6,194,248,22, +141,14,194,193,87,94,28,28,248,22,133,14,23,195,2,10,28,248,22,182,6, +23,195,2,28,248,22,155,14,23,195,2,10,248,22,156,14,23,195,2,11,12, +250,22,164,9,23,196,2,2,23,23,197,2,28,248,22,155,14,23,195,2,12, +248,22,147,12,249,22,153,11,248,22,147,7,250,22,166,7,2,24,23,200,1, +23,201,1,247,22,23,87,94,28,28,248,22,133,14,23,195,2,10,28,248,22, +182,6,23,195,2,28,248,22,155,14,23,195,2,10,248,22,156,14,23,195,2, +11,12,250,22,164,9,23,196,2,2,23,23,197,2,28,248,22,155,14,23,195, +2,12,248,22,147,12,249,22,153,11,248,22,147,7,250,22,166,7,2,24,23, +200,1,23,201,1,247,22,23,87,94,87,94,28,28,248,22,133,14,23,195,2, +10,28,248,22,182,6,23,195,2,28,248,22,155,14,23,195,2,10,248,22,156, +14,23,195,2,11,12,250,22,164,9,195,2,23,23,197,2,28,248,22,155,14, +23,195,2,12,248,22,147,12,249,22,153,11,248,22,147,7,250,22,166,7,2, +24,199,23,201,1,247,22,23,249,22,3,89,162,8,44,37,50,9,223,2,33, +38,196,87,94,28,28,248,22,133,14,23,194,2,10,28,248,22,182,6,23,194, +2,28,248,22,155,14,23,194,2,10,248,22,156,14,23,194,2,11,12,250,22, +164,9,2,7,2,23,23,196,2,28,248,22,155,14,23,194,2,12,248,22,147, +12,249,22,153,11,248,22,147,7,250,22,166,7,2,24,2,7,23,200,1,247, +22,23,32,41,89,162,8,44,41,56,2,26,222,33,42,28,248,22,80,23,197, +2,87,94,23,196,1,28,23,197,2,196,87,94,23,197,1,248,22,147,12,249, +22,186,11,251,22,166,7,2,25,2,7,28,248,22,80,23,203,2,87,94,23, +202,1,23,201,1,250,22,1,22,151,14,23,204,1,23,205,1,23,200,1,247, +22,23,27,249,22,151,14,248,22,73,23,200,2,23,197,2,28,248,22,146,14, +23,194,2,27,250,22,1,22,151,14,23,197,1,199,28,248,22,146,14,193,192, +252,2,41,199,200,201,248,22,74,203,203,252,2,41,198,199,200,248,22,74,202, +202,87,94,87,94,87,94,28,28,248,22,133,14,23,194,2,10,28,248,22,182, +6,23,194,2,28,248,22,155,14,23,194,2,10,248,22,156,14,23,194,2,11, +12,250,22,164,9,2,7,2,23,23,196,2,28,248,22,155,14,23,194,2,12, +248,22,147,12,249,22,153,11,248,22,147,7,250,22,166,7,2,24,2,7,23, +200,2,247,22,23,249,22,3,32,0,89,162,8,44,37,49,9,222,33,40,23, +196,2,27,247,22,175,14,28,248,22,80,23,194,2,248,22,147,12,249,22,186, +11,251,22,166,7,2,25,2,7,28,248,22,80,23,203,2,87,94,23,202,1, +23,201,1,250,22,1,22,151,14,23,204,1,23,205,1,23,200,1,247,22,23, +27,249,22,151,14,248,22,73,23,197,2,23,197,2,28,248,22,146,14,23,194, +2,27,250,22,1,22,151,14,23,197,1,199,28,248,22,146,14,193,192,252,2, +41,199,200,201,248,22,74,200,11,252,2,41,198,199,200,248,22,74,199,11,87, +94,28,28,248,22,133,14,23,194,2,10,28,248,22,182,6,23,194,2,28,248, +22,155,14,23,194,2,10,248,22,156,14,23,194,2,11,12,250,22,164,9,2, +9,2,23,23,196,2,28,248,22,155,14,23,194,2,12,248,22,147,12,249,22, +153,11,248,22,147,7,250,22,166,7,2,24,2,9,23,200,1,247,22,23,32, +45,89,162,8,44,42,59,2,26,222,33,46,28,248,22,80,23,198,2,87,95, +23,197,1,23,194,1,28,23,198,2,197,87,94,23,198,1,248,22,147,12,249, +22,186,11,251,22,166,7,2,25,2,9,28,248,22,80,23,204,2,87,94,23, +203,1,23,202,1,250,22,1,22,151,14,23,205,1,23,206,1,23,200,1,247, +22,23,27,249,22,151,14,248,22,73,23,201,2,23,198,2,28,248,22,146,14, +23,194,2,27,250,22,1,22,151,14,23,197,1,23,201,2,28,248,22,146,14, +23,194,2,28,23,196,2,28,28,248,22,145,14,249,22,151,14,195,198,10,27, +28,248,22,133,14,197,248,22,137,14,197,196,27,248,22,185,6,23,195,2,27, +28,249,22,184,3,23,196,2,40,28,249,22,188,6,2,27,249,22,140,7,23, +199,2,249,22,172,3,23,200,2,40,249,22,141,7,250,22,140,7,23,200,1, +36,249,22,172,3,23,201,1,40,2,28,87,95,23,195,1,23,194,1,11,11, +28,23,193,2,248,22,145,14,249,22,151,14,198,23,196,1,11,192,253,2,45, +200,201,202,203,248,22,74,205,28,205,205,198,192,253,2,45,200,201,202,203,248, +22,74,205,205,253,2,45,199,200,201,202,248,22,74,204,204,87,95,87,94,28, +28,248,22,133,14,193,10,28,248,22,182,6,193,28,248,22,155,14,193,10,248, +22,156,14,193,11,12,250,22,164,9,2,9,2,23,195,28,248,22,155,14,193, +12,248,22,147,12,249,22,153,11,248,22,147,7,250,22,166,7,2,24,2,9, +199,247,22,23,87,94,87,94,28,28,248,22,133,14,23,195,2,10,28,248,22, +182,6,23,195,2,28,248,22,155,14,23,195,2,10,248,22,156,14,23,195,2, +11,12,250,22,164,9,2,9,2,23,23,197,2,28,248,22,155,14,23,195,2, +12,248,22,147,12,249,22,153,11,248,22,147,7,250,22,166,7,2,24,2,9, +23,201,2,247,22,23,249,22,3,32,0,89,162,8,44,37,49,9,222,33,44, +23,197,2,249,22,151,14,27,247,22,175,14,253,2,45,23,199,2,201,23,203, +1,23,204,1,23,199,1,11,194,32,48,89,162,44,44,8,29,2,26,222,33, +49,28,248,22,80,23,200,2,87,95,23,199,1,23,198,1,28,23,200,2,199, +87,94,23,200,1,248,23,196,1,251,22,166,7,2,25,23,199,1,28,248,22, +80,23,203,2,87,94,23,202,1,23,201,1,250,22,1,22,151,14,23,204,1, +23,205,1,23,198,1,27,249,22,151,14,248,22,73,23,203,2,23,199,2,28, +248,22,146,14,23,194,2,27,250,22,1,22,151,14,23,197,1,23,202,2,28, +248,22,146,14,23,194,2,28,23,200,2,28,28,248,22,145,14,249,22,151,14, +23,196,2,23,203,2,10,27,28,248,22,133,14,23,202,2,248,22,137,14,23, +202,2,23,201,2,27,248,22,185,6,23,195,2,27,28,249,22,184,3,23,196, +2,40,28,249,22,188,6,2,27,249,22,140,7,23,199,2,249,22,172,3,23, +200,2,40,249,22,141,7,250,22,140,7,23,200,1,36,249,22,172,3,23,201, +1,40,2,28,87,95,23,195,1,23,194,1,11,11,28,23,193,2,248,22,145, +14,249,22,151,14,23,199,2,23,196,1,11,192,27,248,22,74,23,203,1,27, +28,23,204,2,87,94,23,195,1,23,204,1,87,94,23,204,1,23,195,1,28, +248,22,80,23,195,2,87,95,23,202,1,23,194,1,28,23,193,2,192,87,94, +23,193,1,248,23,200,1,251,22,166,7,2,25,23,203,1,28,248,22,80,23, +207,2,87,94,23,206,1,23,205,1,250,22,1,22,151,14,23,208,1,23,209, +1,23,202,1,27,249,22,151,14,248,22,73,23,198,2,23,203,2,28,248,22, +146,14,23,194,2,27,250,22,1,22,151,14,23,197,1,23,206,2,28,248,22, +146,14,23,194,2,28,23,204,2,28,28,248,22,145,14,249,22,151,14,195,206, +10,27,28,248,22,133,14,205,248,22,137,14,205,204,27,248,22,185,6,23,195, +2,27,28,249,22,184,3,23,196,2,40,28,249,22,188,6,2,27,249,22,140, +7,23,199,2,249,22,172,3,23,200,2,40,249,22,141,7,250,22,140,7,23, +200,1,36,249,22,172,3,23,201,1,40,2,28,87,95,23,195,1,23,194,1, +11,11,28,23,193,2,248,22,145,14,249,22,151,14,198,23,196,1,11,192,26, +8,2,48,206,23,15,23,16,23,17,23,18,23,19,248,22,74,204,28,202,202, +200,192,26,8,2,48,206,23,15,23,16,23,17,23,18,23,19,248,22,74,204, +202,26,8,2,48,205,206,23,15,23,16,23,17,23,18,248,22,74,203,201,192, +27,248,22,74,23,203,1,28,248,22,80,23,194,2,87,95,23,201,1,23,193, +1,28,23,203,2,202,87,94,23,203,1,248,23,199,1,251,22,166,7,2,25, +23,202,1,28,248,22,80,23,206,2,87,94,23,205,1,23,204,1,250,22,1, +22,151,14,23,207,1,23,208,1,23,201,1,27,249,22,151,14,248,22,73,23, +197,2,23,202,2,28,248,22,146,14,23,194,2,27,250,22,1,22,151,14,23, +197,1,23,205,2,28,248,22,146,14,23,194,2,28,23,203,2,28,28,248,22, +145,14,249,22,151,14,195,205,10,27,28,248,22,133,14,204,248,22,137,14,204, +203,27,248,22,185,6,23,195,2,27,28,249,22,184,3,23,196,2,40,28,249, +22,188,6,2,27,249,22,140,7,23,199,2,249,22,172,3,23,200,2,40,249, +22,141,7,250,22,140,7,23,200,1,36,249,22,172,3,23,201,1,40,2,28, +87,95,23,195,1,23,194,1,11,11,28,23,193,2,248,22,145,14,249,22,151, +14,198,23,196,1,11,192,26,8,2,48,205,206,23,15,23,16,23,17,23,18, +248,22,74,203,28,23,20,23,20,200,192,26,8,2,48,205,206,23,15,23,16, +23,17,23,18,248,22,74,203,23,20,26,8,2,48,204,205,206,23,15,23,16, +23,17,248,22,74,202,23,19,87,94,23,193,1,27,248,22,74,23,202,1,28, +248,22,80,23,194,2,87,95,23,200,1,23,193,1,28,23,202,2,201,87,94, +23,202,1,248,23,198,1,251,22,166,7,2,25,23,201,1,28,248,22,80,23, +205,2,87,94,23,204,1,23,203,1,250,22,1,22,151,14,23,206,1,23,207, +1,23,200,1,27,249,22,151,14,248,22,73,23,197,2,23,201,2,28,248,22, +146,14,23,194,2,27,250,22,1,22,151,14,23,197,1,23,204,2,28,248,22, +146,14,23,194,2,28,23,202,2,28,28,248,22,145,14,249,22,151,14,195,204, +10,27,28,248,22,133,14,203,248,22,137,14,203,202,27,248,22,185,6,23,195, +2,27,28,249,22,184,3,23,196,2,40,28,249,22,188,6,2,27,249,22,140, +7,23,199,2,249,22,172,3,23,200,2,40,249,22,141,7,250,22,140,7,23, +200,1,36,249,22,172,3,23,201,1,40,2,28,87,95,23,195,1,23,194,1, +11,11,28,23,193,2,248,22,145,14,249,22,151,14,198,23,196,1,11,192,26, +8,2,48,204,205,206,23,15,23,16,23,17,248,22,74,203,28,23,19,23,19, +200,192,26,8,2,48,204,205,206,23,15,23,16,23,17,248,22,74,203,23,19, +26,8,2,48,203,204,205,206,23,15,23,16,248,22,74,202,23,18,27,247,22, +175,14,28,248,22,80,23,194,2,87,94,23,198,1,248,23,196,1,251,22,166, +7,2,25,23,199,1,28,248,22,80,23,203,2,87,94,23,202,1,23,201,1, +250,22,1,22,151,14,23,204,1,23,205,1,23,198,1,27,249,22,151,14,248, +22,73,23,197,2,23,199,2,28,248,22,146,14,23,194,2,27,250,22,1,22, +151,14,23,197,1,23,202,2,28,248,22,146,14,23,194,2,28,23,200,2,28, +28,248,22,145,14,249,22,151,14,195,202,10,27,28,248,22,133,14,201,248,22, +137,14,201,200,27,248,22,185,6,23,195,2,27,28,249,22,184,3,23,196,2, 40,28,249,22,188,6,2,27,249,22,140,7,23,199,2,249,22,172,3,23,200, 2,40,249,22,141,7,250,22,140,7,23,200,1,36,249,22,172,3,23,201,1, -40,2,28,87,95,23,195,1,23,194,1,11,11,28,23,193,2,248,22,144,14, -249,22,150,14,23,199,2,23,196,1,11,192,27,248,22,74,23,203,1,27,28, -23,204,2,87,94,23,195,1,23,204,1,87,94,23,204,1,23,195,1,28,248, -22,80,23,195,2,87,95,23,202,1,23,194,1,28,23,193,2,192,87,94,23, -193,1,248,23,200,1,251,22,166,7,2,25,23,203,1,28,248,22,80,23,207, -2,87,94,23,206,1,23,205,1,250,22,1,22,150,14,23,208,1,23,209,1, -23,202,1,27,249,22,150,14,248,22,73,23,198,2,23,203,2,28,248,22,145, -14,23,194,2,27,250,22,1,22,150,14,23,197,1,23,206,2,28,248,22,145, -14,23,194,2,28,23,204,2,28,28,248,22,144,14,249,22,150,14,195,206,10, -27,28,248,22,132,14,205,248,22,136,14,205,204,27,248,22,185,6,23,195,2, -27,28,249,22,184,3,23,196,2,40,28,249,22,188,6,2,27,249,22,140,7, -23,199,2,249,22,172,3,23,200,2,40,249,22,141,7,250,22,140,7,23,200, -1,36,249,22,172,3,23,201,1,40,2,28,87,95,23,195,1,23,194,1,11, -11,28,23,193,2,248,22,144,14,249,22,150,14,198,23,196,1,11,192,26,8, -2,48,206,23,15,23,16,23,17,23,18,23,19,248,22,74,204,28,202,202,200, -192,26,8,2,48,206,23,15,23,16,23,17,23,18,23,19,248,22,74,204,202, -26,8,2,48,205,206,23,15,23,16,23,17,23,18,248,22,74,203,201,192,27, -248,22,74,23,203,1,28,248,22,80,23,194,2,87,95,23,201,1,23,193,1, -28,23,203,2,202,87,94,23,203,1,248,23,199,1,251,22,166,7,2,25,23, -202,1,28,248,22,80,23,206,2,87,94,23,205,1,23,204,1,250,22,1,22, -150,14,23,207,1,23,208,1,23,201,1,27,249,22,150,14,248,22,73,23,197, -2,23,202,2,28,248,22,145,14,23,194,2,27,250,22,1,22,150,14,23,197, -1,23,205,2,28,248,22,145,14,23,194,2,28,23,203,2,28,28,248,22,144, -14,249,22,150,14,195,205,10,27,28,248,22,132,14,204,248,22,136,14,204,203, -27,248,22,185,6,23,195,2,27,28,249,22,184,3,23,196,2,40,28,249,22, -188,6,2,27,249,22,140,7,23,199,2,249,22,172,3,23,200,2,40,249,22, -141,7,250,22,140,7,23,200,1,36,249,22,172,3,23,201,1,40,2,28,87, -95,23,195,1,23,194,1,11,11,28,23,193,2,248,22,144,14,249,22,150,14, -198,23,196,1,11,192,26,8,2,48,205,206,23,15,23,16,23,17,23,18,248, -22,74,203,28,23,20,23,20,200,192,26,8,2,48,205,206,23,15,23,16,23, -17,23,18,248,22,74,203,23,20,26,8,2,48,204,205,206,23,15,23,16,23, -17,248,22,74,202,23,19,87,94,23,193,1,27,248,22,74,23,202,1,28,248, -22,80,23,194,2,87,95,23,200,1,23,193,1,28,23,202,2,201,87,94,23, -202,1,248,23,198,1,251,22,166,7,2,25,23,201,1,28,248,22,80,23,205, -2,87,94,23,204,1,23,203,1,250,22,1,22,150,14,23,206,1,23,207,1, -23,200,1,27,249,22,150,14,248,22,73,23,197,2,23,201,2,28,248,22,145, -14,23,194,2,27,250,22,1,22,150,14,23,197,1,23,204,2,28,248,22,145, -14,23,194,2,28,23,202,2,28,28,248,22,144,14,249,22,150,14,195,204,10, -27,28,248,22,132,14,203,248,22,136,14,203,202,27,248,22,185,6,23,195,2, -27,28,249,22,184,3,23,196,2,40,28,249,22,188,6,2,27,249,22,140,7, -23,199,2,249,22,172,3,23,200,2,40,249,22,141,7,250,22,140,7,23,200, -1,36,249,22,172,3,23,201,1,40,2,28,87,95,23,195,1,23,194,1,11, -11,28,23,193,2,248,22,144,14,249,22,150,14,198,23,196,1,11,192,26,8, -2,48,204,205,206,23,15,23,16,23,17,248,22,74,203,28,23,19,23,19,200, -192,26,8,2,48,204,205,206,23,15,23,16,23,17,248,22,74,203,23,19,26, -8,2,48,203,204,205,206,23,15,23,16,248,22,74,202,23,18,27,247,22,174, -14,28,248,22,80,23,194,2,87,94,23,198,1,248,23,196,1,251,22,166,7, -2,25,23,199,1,28,248,22,80,23,203,2,87,94,23,202,1,23,201,1,250, -22,1,22,150,14,23,204,1,23,205,1,23,198,1,27,249,22,150,14,248,22, -73,23,197,2,23,199,2,28,248,22,145,14,23,194,2,27,250,22,1,22,150, -14,23,197,1,23,202,2,28,248,22,145,14,23,194,2,28,23,200,2,28,28, -248,22,144,14,249,22,150,14,195,202,10,27,28,248,22,132,14,201,248,22,136, -14,201,200,27,248,22,185,6,23,195,2,27,28,249,22,184,3,23,196,2,40, -28,249,22,188,6,2,27,249,22,140,7,23,199,2,249,22,172,3,23,200,2, -40,249,22,141,7,250,22,140,7,23,200,1,36,249,22,172,3,23,201,1,40, -2,28,87,95,23,195,1,23,194,1,11,11,28,23,193,2,248,22,144,14,249, -22,150,14,198,23,196,1,11,192,26,8,2,48,202,203,204,205,206,23,15,248, -22,74,203,200,192,26,8,2,48,202,203,204,205,206,23,15,248,22,74,203,11, -26,8,2,48,201,202,203,204,205,206,248,22,74,202,11,87,95,28,28,248,22, -133,14,23,194,2,10,28,248,22,132,14,23,194,2,10,28,248,22,182,6,23, -194,2,28,248,22,154,14,23,194,2,10,248,22,155,14,23,194,2,11,12,252, -22,164,9,23,200,2,2,29,36,23,198,2,23,199,2,28,28,248,22,182,6, -23,195,2,10,248,22,171,7,23,195,2,87,94,23,194,1,12,252,22,164,9, -23,200,2,2,30,37,23,198,2,23,199,1,91,159,39,11,90,161,39,36,11, -248,22,153,14,23,197,2,87,94,23,195,1,87,94,28,192,12,250,22,165,9, -23,201,1,2,31,23,199,1,249,22,7,194,195,91,159,38,11,90,161,38,36, -11,87,95,28,28,248,22,133,14,23,196,2,10,28,248,22,132,14,23,196,2, -10,28,248,22,182,6,23,196,2,28,248,22,154,14,23,196,2,10,248,22,155, -14,23,196,2,11,12,252,22,164,9,2,11,2,29,36,23,200,2,23,201,2, -28,28,248,22,182,6,23,197,2,10,248,22,171,7,23,197,2,12,252,22,164, -9,2,11,2,30,37,23,200,2,23,201,2,91,159,39,11,90,161,39,36,11, -248,22,153,14,23,199,2,87,94,23,195,1,87,94,28,192,12,250,22,165,9, -2,11,2,31,23,201,2,249,22,7,194,195,27,249,22,142,14,250,22,130,15, -0,20,35,114,120,35,34,40,63,58,91,46,93,91,94,46,93,42,124,41,36, -34,248,22,138,14,23,201,1,28,248,22,182,6,23,203,2,249,22,133,8,23, -204,1,8,63,23,202,1,28,248,22,133,14,23,199,2,248,22,134,14,23,199, -1,87,94,23,198,1,247,22,135,14,28,248,22,132,14,194,249,22,150,14,195, -194,192,91,159,38,11,90,161,38,36,11,87,95,28,28,248,22,133,14,23,196, -2,10,28,248,22,132,14,23,196,2,10,28,248,22,182,6,23,196,2,28,248, -22,154,14,23,196,2,10,248,22,155,14,23,196,2,11,12,252,22,164,9,2, -12,2,29,36,23,200,2,23,201,2,28,28,248,22,182,6,23,197,2,10,248, -22,171,7,23,197,2,12,252,22,164,9,2,12,2,30,37,23,200,2,23,201, -2,91,159,39,11,90,161,39,36,11,248,22,153,14,23,199,2,87,94,23,195, -1,87,94,28,192,12,250,22,165,9,2,12,2,31,23,201,2,249,22,7,194, -195,27,249,22,142,14,249,22,183,7,250,22,131,15,0,9,35,114,120,35,34, -91,46,93,34,248,22,138,14,23,203,1,6,1,1,95,28,248,22,182,6,23, -202,2,249,22,133,8,23,203,1,8,63,23,201,1,28,248,22,133,14,23,199, -2,248,22,134,14,23,199,1,87,94,23,198,1,247,22,135,14,28,248,22,132, -14,194,249,22,150,14,195,194,192,249,247,22,149,5,194,11,249,80,159,38,48, -37,9,9,249,80,159,38,48,37,195,9,27,247,22,176,14,249,80,158,39,49, -28,23,195,2,27,248,22,138,8,6,11,11,80,76,84,67,79,76,76,69,67, -84,83,28,192,192,6,0,0,6,0,0,27,28,23,196,1,250,22,150,14,248, -22,172,14,69,97,100,100,111,110,45,100,105,114,247,22,136,8,6,8,8,99, -111,108,108,101,99,116,115,11,27,248,80,159,42,54,37,250,22,86,23,203,1, -248,22,82,248,22,172,14,72,99,111,108,108,101,99,116,115,45,100,105,114,23, -204,1,28,193,249,22,72,195,194,192,32,58,89,162,8,44,39,8,31,2,20, -222,33,59,27,249,22,183,14,23,197,2,23,198,2,28,23,193,2,87,94,23, -196,1,27,248,22,97,23,195,2,27,27,248,22,106,23,197,1,27,249,22,183, -14,23,201,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,22,97,23, -195,2,27,27,248,22,106,23,197,1,27,249,22,183,14,23,205,2,23,196,2, -28,23,193,2,87,94,23,194,1,27,248,22,97,23,195,2,27,27,248,22,106, -23,197,1,27,249,22,183,14,23,209,2,23,196,2,28,23,193,2,87,94,23, -194,1,27,248,22,97,23,195,2,27,27,248,22,106,23,197,1,27,249,22,183, -14,23,213,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,22,97,23, -195,2,27,250,2,58,23,215,2,23,216,1,248,22,106,23,199,1,28,249,22, -179,7,23,196,2,2,32,249,22,86,23,214,2,194,249,22,72,248,22,141,14, -23,197,1,194,87,95,23,211,1,23,193,1,28,249,22,179,7,23,196,2,2, -32,249,22,86,23,212,2,9,249,22,72,248,22,141,14,23,197,1,9,28,249, -22,179,7,23,196,2,2,32,249,22,86,23,210,2,194,249,22,72,248,22,141, -14,23,197,1,194,87,94,23,193,1,28,249,22,179,7,23,196,2,2,32,249, -22,86,23,208,2,9,249,22,72,248,22,141,14,23,197,1,9,28,249,22,179, -7,23,196,2,2,32,249,22,86,23,206,2,194,249,22,72,248,22,141,14,23, -197,1,194,87,94,23,193,1,28,249,22,179,7,23,196,2,2,32,249,22,86, -23,204,2,9,249,22,72,248,22,141,14,23,197,1,9,28,249,22,179,7,23, -196,2,2,32,249,22,86,23,202,2,194,249,22,72,248,22,141,14,23,197,1, -194,87,94,23,193,1,28,249,22,179,7,23,196,2,2,32,249,22,86,23,200, -2,9,249,22,72,248,22,141,14,23,197,1,9,28,249,22,179,7,23,196,2, -2,32,249,22,86,197,194,87,94,23,196,1,249,22,72,248,22,141,14,23,197, -1,194,87,94,23,193,1,28,249,22,179,7,23,198,2,2,32,249,22,86,195, -9,87,94,23,194,1,249,22,72,248,22,141,14,23,199,1,9,87,95,28,28, -248,22,171,7,23,195,2,10,248,22,182,6,23,195,2,12,250,22,164,9,2, -15,6,21,21,98,121,116,101,32,115,116,114,105,110,103,32,111,114,32,115,116, -114,105,110,103,23,197,2,28,28,248,22,81,23,196,2,249,22,4,22,132,14, -23,197,2,11,12,250,22,164,9,2,15,6,13,13,108,105,115,116,32,111,102, -32,112,97,116,104,115,23,198,2,27,28,248,22,182,6,23,196,2,248,22,132, -8,23,196,1,23,195,1,27,249,22,183,14,23,197,2,23,196,2,28,23,193, -2,87,94,23,194,1,27,248,22,97,23,195,2,27,27,248,22,106,23,197,1, -27,249,22,183,14,23,201,2,23,196,2,28,23,193,2,87,94,23,194,1,27, -248,22,97,23,195,2,27,27,248,22,106,23,197,1,27,249,22,183,14,23,205, -2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,22,97,23,195,2,27, -27,248,22,106,23,197,1,27,249,22,183,14,23,209,2,23,196,2,28,23,193, -2,87,94,23,194,1,27,248,22,97,23,195,2,27,27,248,22,106,23,197,1, -27,249,22,183,14,23,213,2,23,196,2,28,23,193,2,87,94,23,194,1,27, -248,22,97,23,195,2,27,250,2,58,23,218,2,23,216,1,248,22,106,23,199, -1,28,249,22,179,7,23,196,2,2,32,249,22,86,23,217,2,194,249,22,72, -248,22,141,14,23,197,1,194,87,95,23,211,1,23,193,1,28,249,22,179,7, -23,196,2,2,32,249,22,86,23,215,2,9,249,22,72,248,22,141,14,23,197, -1,9,28,249,22,179,7,23,196,2,2,32,249,22,86,23,213,2,194,249,22, -72,248,22,141,14,23,197,1,194,87,94,23,193,1,28,249,22,179,7,23,196, -2,2,32,249,22,86,23,211,2,9,249,22,72,248,22,141,14,23,197,1,9, -28,249,22,179,7,23,196,2,2,32,249,22,86,23,209,2,194,249,22,72,248, -22,141,14,23,197,1,194,87,94,23,193,1,28,249,22,179,7,23,196,2,2, -32,249,22,86,23,207,2,9,249,22,72,248,22,141,14,23,197,1,9,28,249, -22,179,7,23,196,2,2,32,249,22,86,23,205,2,194,249,22,72,248,22,141, -14,23,197,1,194,87,94,23,193,1,28,249,22,179,7,23,196,2,2,32,249, -22,86,23,203,2,9,249,22,72,248,22,141,14,23,197,1,9,28,249,22,179, -7,23,196,2,2,32,249,22,86,200,194,87,94,23,199,1,249,22,72,248,22, -141,14,23,197,1,194,87,94,23,193,1,28,249,22,179,7,23,196,2,2,32, -249,22,86,198,9,87,94,23,197,1,249,22,72,248,22,141,14,23,197,1,9, -32,61,89,162,8,44,39,53,70,102,111,117,110,100,45,101,120,101,99,222,33, -64,32,62,89,162,8,44,40,58,64,110,101,120,116,222,33,63,27,248,22,158, -14,23,196,2,28,249,22,130,9,23,195,2,23,197,1,11,28,248,22,154,14, -23,194,2,27,249,22,150,14,23,197,1,23,196,1,28,23,197,2,91,159,39, -11,90,161,39,36,11,248,22,153,14,23,197,2,87,95,23,195,1,23,194,1, -27,28,23,202,2,27,248,22,158,14,23,199,2,28,249,22,130,9,23,195,2, -23,200,2,11,28,248,22,154,14,23,194,2,250,2,61,23,205,2,23,206,2, -249,22,150,14,23,200,2,23,198,1,250,2,61,23,205,2,23,206,2,23,196, -1,11,28,23,193,2,192,87,94,23,193,1,27,28,248,22,132,14,23,196,2, -27,249,22,150,14,23,198,2,23,205,2,28,28,248,22,145,14,193,10,248,22, -144,14,193,192,11,11,28,23,193,2,192,87,94,23,193,1,28,23,203,2,11, -27,248,22,158,14,23,200,2,28,249,22,130,9,23,195,2,23,201,1,11,28, -248,22,154,14,23,194,2,250,2,61,23,206,1,23,207,1,249,22,150,14,23, -201,1,23,198,1,250,2,61,205,206,195,192,87,94,23,194,1,28,23,196,2, -91,159,39,11,90,161,39,36,11,248,22,153,14,23,197,2,87,95,23,195,1, -23,194,1,27,28,23,201,2,27,248,22,158,14,23,199,2,28,249,22,130,9, -23,195,2,23,200,2,11,28,248,22,154,14,23,194,2,250,2,61,23,204,2, -23,205,2,249,22,150,14,23,200,2,23,198,1,250,2,61,23,204,2,23,205, -2,23,196,1,11,28,23,193,2,192,87,94,23,193,1,27,28,248,22,132,14, -23,196,2,27,249,22,150,14,23,198,2,23,204,2,28,28,248,22,145,14,193, -10,248,22,144,14,193,192,11,11,28,23,193,2,192,87,94,23,193,1,28,23, -202,2,11,27,248,22,158,14,23,200,2,28,249,22,130,9,23,195,2,23,201, -1,11,28,248,22,154,14,23,194,2,250,2,61,23,205,1,23,206,1,249,22, -150,14,23,201,1,23,198,1,250,2,61,204,205,195,192,28,23,193,2,91,159, -39,11,90,161,39,36,11,248,22,153,14,23,199,2,87,95,23,195,1,23,194, -1,27,28,23,198,2,251,2,62,23,198,2,23,203,2,23,201,2,23,202,2, -11,28,23,193,2,192,87,94,23,193,1,27,28,248,22,132,14,195,27,249,22, -150,14,197,200,28,28,248,22,145,14,193,10,248,22,144,14,193,192,11,11,28, -192,192,28,198,11,251,2,62,198,203,201,202,194,32,65,89,162,8,44,40,8, -31,2,20,222,33,66,28,248,22,80,23,197,2,11,27,248,22,157,14,248,22, -73,23,199,2,27,249,22,150,14,23,196,1,23,197,2,28,248,22,144,14,23, -194,2,250,2,61,198,199,195,87,94,23,193,1,27,248,22,74,23,200,1,28, -248,22,80,23,194,2,11,27,248,22,157,14,248,22,73,23,196,2,27,249,22, -150,14,23,196,1,23,200,2,28,248,22,144,14,23,194,2,250,2,61,201,202, +40,2,28,87,95,23,195,1,23,194,1,11,11,28,23,193,2,248,22,145,14, +249,22,151,14,198,23,196,1,11,192,26,8,2,48,202,203,204,205,206,23,15, +248,22,74,203,200,192,26,8,2,48,202,203,204,205,206,23,15,248,22,74,203, +11,26,8,2,48,201,202,203,204,205,206,248,22,74,202,11,87,95,28,28,248, +22,134,14,23,194,2,10,28,248,22,133,14,23,194,2,10,28,248,22,182,6, +23,194,2,28,248,22,155,14,23,194,2,10,248,22,156,14,23,194,2,11,12, +252,22,164,9,23,200,2,2,29,36,23,198,2,23,199,2,28,28,248,22,182, +6,23,195,2,10,248,22,171,7,23,195,2,87,94,23,194,1,12,252,22,164, +9,23,200,2,2,30,37,23,198,2,23,199,1,91,159,39,11,90,161,39,36, +11,248,22,154,14,23,197,2,87,94,23,195,1,87,94,28,192,12,250,22,165, +9,23,201,1,2,31,23,199,1,249,22,7,194,195,91,159,38,11,90,161,38, +36,11,87,95,28,28,248,22,134,14,23,196,2,10,28,248,22,133,14,23,196, +2,10,28,248,22,182,6,23,196,2,28,248,22,155,14,23,196,2,10,248,22, +156,14,23,196,2,11,12,252,22,164,9,2,11,2,29,36,23,200,2,23,201, +2,28,28,248,22,182,6,23,197,2,10,248,22,171,7,23,197,2,12,252,22, +164,9,2,11,2,30,37,23,200,2,23,201,2,91,159,39,11,90,161,39,36, +11,248,22,154,14,23,199,2,87,94,23,195,1,87,94,28,192,12,250,22,165, +9,2,11,2,31,23,201,2,249,22,7,194,195,27,249,22,143,14,250,22,131, +15,0,20,35,114,120,35,34,40,63,58,91,46,93,91,94,46,93,42,124,41, +36,34,248,22,139,14,23,201,1,28,248,22,182,6,23,203,2,249,22,133,8, +23,204,1,8,63,23,202,1,28,248,22,134,14,23,199,2,248,22,135,14,23, +199,1,87,94,23,198,1,247,22,136,14,28,248,22,133,14,194,249,22,151,14, +195,194,192,91,159,38,11,90,161,38,36,11,87,95,28,28,248,22,134,14,23, +196,2,10,28,248,22,133,14,23,196,2,10,28,248,22,182,6,23,196,2,28, +248,22,155,14,23,196,2,10,248,22,156,14,23,196,2,11,12,252,22,164,9, +2,12,2,29,36,23,200,2,23,201,2,28,28,248,22,182,6,23,197,2,10, +248,22,171,7,23,197,2,12,252,22,164,9,2,12,2,30,37,23,200,2,23, +201,2,91,159,39,11,90,161,39,36,11,248,22,154,14,23,199,2,87,94,23, +195,1,87,94,28,192,12,250,22,165,9,2,12,2,31,23,201,2,249,22,7, +194,195,27,249,22,143,14,249,22,183,7,250,22,132,15,0,9,35,114,120,35, +34,91,46,93,34,248,22,139,14,23,203,1,6,1,1,95,28,248,22,182,6, +23,202,2,249,22,133,8,23,203,1,8,63,23,201,1,28,248,22,134,14,23, +199,2,248,22,135,14,23,199,1,87,94,23,198,1,247,22,136,14,28,248,22, +133,14,194,249,22,151,14,195,194,192,249,247,22,149,5,194,11,249,80,159,38, +48,37,9,9,249,80,159,38,48,37,195,9,27,247,22,177,14,249,80,158,39, +49,28,23,195,2,27,248,22,138,8,6,11,11,80,76,84,67,79,76,76,69, +67,84,83,28,192,192,6,0,0,6,0,0,27,28,23,196,1,250,22,151,14, +248,22,173,14,69,97,100,100,111,110,45,100,105,114,247,22,136,8,6,8,8, +99,111,108,108,101,99,116,115,11,27,248,80,159,42,54,37,250,22,86,23,203, +1,248,22,82,248,22,173,14,72,99,111,108,108,101,99,116,115,45,100,105,114, +23,204,1,28,193,249,22,72,195,194,192,32,58,89,162,8,44,39,8,31,2, +20,222,33,59,27,249,22,184,14,23,197,2,23,198,2,28,23,193,2,87,94, +23,196,1,27,248,22,97,23,195,2,27,27,248,22,106,23,197,1,27,249,22, +184,14,23,201,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,22,97, +23,195,2,27,27,248,22,106,23,197,1,27,249,22,184,14,23,205,2,23,196, +2,28,23,193,2,87,94,23,194,1,27,248,22,97,23,195,2,27,27,248,22, +106,23,197,1,27,249,22,184,14,23,209,2,23,196,2,28,23,193,2,87,94, +23,194,1,27,248,22,97,23,195,2,27,27,248,22,106,23,197,1,27,249,22, +184,14,23,213,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,22,97, +23,195,2,27,250,2,58,23,215,2,23,216,1,248,22,106,23,199,1,28,249, +22,179,7,23,196,2,2,32,249,22,86,23,214,2,194,249,22,72,248,22,142, +14,23,197,1,194,87,95,23,211,1,23,193,1,28,249,22,179,7,23,196,2, +2,32,249,22,86,23,212,2,9,249,22,72,248,22,142,14,23,197,1,9,28, +249,22,179,7,23,196,2,2,32,249,22,86,23,210,2,194,249,22,72,248,22, +142,14,23,197,1,194,87,94,23,193,1,28,249,22,179,7,23,196,2,2,32, +249,22,86,23,208,2,9,249,22,72,248,22,142,14,23,197,1,9,28,249,22, +179,7,23,196,2,2,32,249,22,86,23,206,2,194,249,22,72,248,22,142,14, +23,197,1,194,87,94,23,193,1,28,249,22,179,7,23,196,2,2,32,249,22, +86,23,204,2,9,249,22,72,248,22,142,14,23,197,1,9,28,249,22,179,7, +23,196,2,2,32,249,22,86,23,202,2,194,249,22,72,248,22,142,14,23,197, +1,194,87,94,23,193,1,28,249,22,179,7,23,196,2,2,32,249,22,86,23, +200,2,9,249,22,72,248,22,142,14,23,197,1,9,28,249,22,179,7,23,196, +2,2,32,249,22,86,197,194,87,94,23,196,1,249,22,72,248,22,142,14,23, +197,1,194,87,94,23,193,1,28,249,22,179,7,23,198,2,2,32,249,22,86, +195,9,87,94,23,194,1,249,22,72,248,22,142,14,23,199,1,9,87,95,28, +28,248,22,171,7,23,195,2,10,248,22,182,6,23,195,2,12,250,22,164,9, +2,15,6,21,21,98,121,116,101,32,115,116,114,105,110,103,32,111,114,32,115, +116,114,105,110,103,23,197,2,28,28,248,22,81,23,196,2,249,22,4,22,133, +14,23,197,2,11,12,250,22,164,9,2,15,6,13,13,108,105,115,116,32,111, +102,32,112,97,116,104,115,23,198,2,27,28,248,22,182,6,23,196,2,248,22, +132,8,23,196,1,23,195,1,27,249,22,184,14,23,197,2,23,196,2,28,23, +193,2,87,94,23,194,1,27,248,22,97,23,195,2,27,27,248,22,106,23,197, +1,27,249,22,184,14,23,201,2,23,196,2,28,23,193,2,87,94,23,194,1, +27,248,22,97,23,195,2,27,27,248,22,106,23,197,1,27,249,22,184,14,23, +205,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,22,97,23,195,2, +27,27,248,22,106,23,197,1,27,249,22,184,14,23,209,2,23,196,2,28,23, +193,2,87,94,23,194,1,27,248,22,97,23,195,2,27,27,248,22,106,23,197, +1,27,249,22,184,14,23,213,2,23,196,2,28,23,193,2,87,94,23,194,1, +27,248,22,97,23,195,2,27,250,2,58,23,218,2,23,216,1,248,22,106,23, +199,1,28,249,22,179,7,23,196,2,2,32,249,22,86,23,217,2,194,249,22, +72,248,22,142,14,23,197,1,194,87,95,23,211,1,23,193,1,28,249,22,179, +7,23,196,2,2,32,249,22,86,23,215,2,9,249,22,72,248,22,142,14,23, +197,1,9,28,249,22,179,7,23,196,2,2,32,249,22,86,23,213,2,194,249, +22,72,248,22,142,14,23,197,1,194,87,94,23,193,1,28,249,22,179,7,23, +196,2,2,32,249,22,86,23,211,2,9,249,22,72,248,22,142,14,23,197,1, +9,28,249,22,179,7,23,196,2,2,32,249,22,86,23,209,2,194,249,22,72, +248,22,142,14,23,197,1,194,87,94,23,193,1,28,249,22,179,7,23,196,2, +2,32,249,22,86,23,207,2,9,249,22,72,248,22,142,14,23,197,1,9,28, +249,22,179,7,23,196,2,2,32,249,22,86,23,205,2,194,249,22,72,248,22, +142,14,23,197,1,194,87,94,23,193,1,28,249,22,179,7,23,196,2,2,32, +249,22,86,23,203,2,9,249,22,72,248,22,142,14,23,197,1,9,28,249,22, +179,7,23,196,2,2,32,249,22,86,200,194,87,94,23,199,1,249,22,72,248, +22,142,14,23,197,1,194,87,94,23,193,1,28,249,22,179,7,23,196,2,2, +32,249,22,86,198,9,87,94,23,197,1,249,22,72,248,22,142,14,23,197,1, +9,32,61,89,162,8,44,39,53,70,102,111,117,110,100,45,101,120,101,99,222, +33,64,32,62,89,162,8,44,40,58,64,110,101,120,116,222,33,63,27,248,22, +159,14,23,196,2,28,249,22,130,9,23,195,2,23,197,1,11,28,248,22,155, +14,23,194,2,27,249,22,151,14,23,197,1,23,196,1,28,23,197,2,91,159, +39,11,90,161,39,36,11,248,22,154,14,23,197,2,87,95,23,195,1,23,194, +1,27,28,23,202,2,27,248,22,159,14,23,199,2,28,249,22,130,9,23,195, +2,23,200,2,11,28,248,22,155,14,23,194,2,250,2,61,23,205,2,23,206, +2,249,22,151,14,23,200,2,23,198,1,250,2,61,23,205,2,23,206,2,23, +196,1,11,28,23,193,2,192,87,94,23,193,1,27,28,248,22,133,14,23,196, +2,27,249,22,151,14,23,198,2,23,205,2,28,28,248,22,146,14,193,10,248, +22,145,14,193,192,11,11,28,23,193,2,192,87,94,23,193,1,28,23,203,2, +11,27,248,22,159,14,23,200,2,28,249,22,130,9,23,195,2,23,201,1,11, +28,248,22,155,14,23,194,2,250,2,61,23,206,1,23,207,1,249,22,151,14, +23,201,1,23,198,1,250,2,61,205,206,195,192,87,94,23,194,1,28,23,196, +2,91,159,39,11,90,161,39,36,11,248,22,154,14,23,197,2,87,95,23,195, +1,23,194,1,27,28,23,201,2,27,248,22,159,14,23,199,2,28,249,22,130, +9,23,195,2,23,200,2,11,28,248,22,155,14,23,194,2,250,2,61,23,204, +2,23,205,2,249,22,151,14,23,200,2,23,198,1,250,2,61,23,204,2,23, +205,2,23,196,1,11,28,23,193,2,192,87,94,23,193,1,27,28,248,22,133, +14,23,196,2,27,249,22,151,14,23,198,2,23,204,2,28,28,248,22,146,14, +193,10,248,22,145,14,193,192,11,11,28,23,193,2,192,87,94,23,193,1,28, +23,202,2,11,27,248,22,159,14,23,200,2,28,249,22,130,9,23,195,2,23, +201,1,11,28,248,22,155,14,23,194,2,250,2,61,23,205,1,23,206,1,249, +22,151,14,23,201,1,23,198,1,250,2,61,204,205,195,192,28,23,193,2,91, +159,39,11,90,161,39,36,11,248,22,154,14,23,199,2,87,95,23,195,1,23, +194,1,27,28,23,198,2,251,2,62,23,198,2,23,203,2,23,201,2,23,202, +2,11,28,23,193,2,192,87,94,23,193,1,27,28,248,22,133,14,195,27,249, +22,151,14,197,200,28,28,248,22,146,14,193,10,248,22,145,14,193,192,11,11, +28,192,192,28,198,11,251,2,62,198,203,201,202,194,32,65,89,162,8,44,40, +8,31,2,20,222,33,66,28,248,22,80,23,197,2,11,27,248,22,158,14,248, +22,73,23,199,2,27,249,22,151,14,23,196,1,23,197,2,28,248,22,145,14, +23,194,2,250,2,61,198,199,195,87,94,23,193,1,27,248,22,74,23,200,1, +28,248,22,80,23,194,2,11,27,248,22,158,14,248,22,73,23,196,2,27,249, +22,151,14,23,196,1,23,200,2,28,248,22,145,14,23,194,2,250,2,61,201, +202,195,87,94,23,193,1,27,248,22,74,23,197,1,28,248,22,80,23,194,2, +11,27,248,22,158,14,248,22,73,23,196,2,27,249,22,151,14,23,196,1,23, +203,2,28,248,22,145,14,23,194,2,250,2,61,204,205,195,87,94,23,193,1, +27,248,22,74,23,197,1,28,248,22,80,23,194,2,11,27,248,22,158,14,248, +22,73,23,196,2,27,249,22,151,14,23,196,1,23,206,2,28,248,22,145,14, +23,194,2,250,2,61,23,15,23,16,195,87,94,23,193,1,27,248,22,74,23, +197,1,28,248,22,80,23,194,2,11,27,248,22,158,14,248,22,73,23,196,2, +27,249,22,151,14,23,196,1,23,209,2,28,248,22,145,14,23,194,2,250,2, +61,23,18,23,19,195,87,94,23,193,1,27,248,22,74,23,197,1,28,248,22, +80,23,194,2,11,27,248,22,158,14,248,22,73,195,27,249,22,151,14,23,196, +1,23,19,28,248,22,145,14,193,250,2,61,23,21,23,22,195,251,2,65,23, +21,23,22,23,23,248,22,74,199,87,95,28,28,248,22,133,14,23,195,2,10, +28,248,22,182,6,23,195,2,28,248,22,155,14,23,195,2,10,248,22,156,14, +23,195,2,11,12,250,22,164,9,2,16,6,25,25,112,97,116,104,32,111,114, +32,115,116,114,105,110,103,32,40,115,97,110,115,32,110,117,108,41,23,197,2, +28,28,23,195,2,28,28,248,22,133,14,23,196,2,10,28,248,22,182,6,23, +196,2,28,248,22,155,14,23,196,2,10,248,22,156,14,23,196,2,11,248,22, +155,14,23,196,2,11,10,12,250,22,164,9,2,16,6,29,29,35,102,32,111, +114,32,114,101,108,97,116,105,118,101,32,112,97,116,104,32,111,114,32,115,116, +114,105,110,103,23,198,2,28,28,248,22,155,14,23,195,2,91,159,39,11,90, +161,39,36,11,248,22,154,14,23,198,2,249,22,128,9,194,68,114,101,108,97, +116,105,118,101,11,27,248,22,138,8,6,4,4,80,65,84,72,27,28,23,194, +2,27,249,80,159,41,49,38,23,197,1,9,28,249,22,128,9,247,22,140,8, +2,22,249,22,72,248,22,142,14,5,1,46,194,192,87,94,23,194,1,9,28, +248,22,80,23,194,2,11,27,248,22,158,14,248,22,73,23,196,2,27,249,22, +151,14,23,196,1,23,200,2,28,248,22,145,14,23,194,2,250,2,61,201,202, 195,87,94,23,193,1,27,248,22,74,23,197,1,28,248,22,80,23,194,2,11, -27,248,22,157,14,248,22,73,23,196,2,27,249,22,150,14,23,196,1,23,203, -2,28,248,22,144,14,23,194,2,250,2,61,204,205,195,87,94,23,193,1,27, -248,22,74,23,197,1,28,248,22,80,23,194,2,11,27,248,22,157,14,248,22, -73,23,196,2,27,249,22,150,14,23,196,1,23,206,2,28,248,22,144,14,23, -194,2,250,2,61,23,15,23,16,195,87,94,23,193,1,27,248,22,74,23,197, -1,28,248,22,80,23,194,2,11,27,248,22,157,14,248,22,73,23,196,2,27, -249,22,150,14,23,196,1,23,209,2,28,248,22,144,14,23,194,2,250,2,61, -23,18,23,19,195,87,94,23,193,1,27,248,22,74,23,197,1,28,248,22,80, -23,194,2,11,27,248,22,157,14,248,22,73,195,27,249,22,150,14,23,196,1, -23,19,28,248,22,144,14,193,250,2,61,23,21,23,22,195,251,2,65,23,21, -23,22,23,23,248,22,74,199,87,95,28,28,248,22,132,14,23,195,2,10,28, -248,22,182,6,23,195,2,28,248,22,154,14,23,195,2,10,248,22,155,14,23, -195,2,11,12,250,22,164,9,2,16,6,25,25,112,97,116,104,32,111,114,32, -115,116,114,105,110,103,32,40,115,97,110,115,32,110,117,108,41,23,197,2,28, -28,23,195,2,28,28,248,22,132,14,23,196,2,10,28,248,22,182,6,23,196, -2,28,248,22,154,14,23,196,2,10,248,22,155,14,23,196,2,11,248,22,154, -14,23,196,2,11,10,12,250,22,164,9,2,16,6,29,29,35,102,32,111,114, -32,114,101,108,97,116,105,118,101,32,112,97,116,104,32,111,114,32,115,116,114, -105,110,103,23,198,2,28,28,248,22,154,14,23,195,2,91,159,39,11,90,161, -39,36,11,248,22,153,14,23,198,2,249,22,128,9,194,68,114,101,108,97,116, -105,118,101,11,27,248,22,138,8,6,4,4,80,65,84,72,27,28,23,194,2, -27,249,80,159,41,49,38,23,197,1,9,28,249,22,128,9,247,22,140,8,2, -22,249,22,72,248,22,141,14,5,1,46,194,192,87,94,23,194,1,9,28,248, -22,80,23,194,2,11,27,248,22,157,14,248,22,73,23,196,2,27,249,22,150, -14,23,196,1,23,200,2,28,248,22,144,14,23,194,2,250,2,61,201,202,195, -87,94,23,193,1,27,248,22,74,23,197,1,28,248,22,80,23,194,2,11,27, -248,22,157,14,248,22,73,23,196,2,27,249,22,150,14,23,196,1,23,203,2, -28,248,22,144,14,23,194,2,250,2,61,204,205,195,87,94,23,193,1,27,248, -22,74,23,197,1,28,248,22,80,23,194,2,11,27,248,22,157,14,248,22,73, -195,27,249,22,150,14,23,196,1,205,28,248,22,144,14,193,250,2,61,23,15, -23,16,195,251,2,65,23,15,23,16,23,17,248,22,74,199,27,248,22,157,14, -23,196,1,28,248,22,144,14,193,250,2,61,198,199,195,11,250,80,159,39,50, -37,196,197,11,250,80,159,39,50,37,196,11,11,87,94,249,22,173,6,247,22, -145,5,195,248,22,135,6,249,22,188,3,36,249,22,172,3,197,198,27,28,23, -197,2,87,95,23,196,1,23,195,1,23,197,1,87,94,23,197,1,27,248,22, -172,14,2,21,27,249,80,159,41,50,37,23,196,1,11,27,248,22,191,3,23, -199,1,27,28,23,194,2,23,194,1,87,94,23,194,1,36,27,248,22,191,3, -23,202,1,27,28,23,194,2,23,194,1,87,94,23,194,1,36,249,22,176,5, -23,199,1,83,158,40,20,100,95,89,162,8,44,36,48,9,224,4,2,33,70, -23,195,1,23,197,1,27,248,22,161,5,23,195,1,248,80,159,39,55,37,193, +27,248,22,158,14,248,22,73,23,196,2,27,249,22,151,14,23,196,1,23,203, +2,28,248,22,145,14,23,194,2,250,2,61,204,205,195,87,94,23,193,1,27, +248,22,74,23,197,1,28,248,22,80,23,194,2,11,27,248,22,158,14,248,22, +73,195,27,249,22,151,14,23,196,1,205,28,248,22,145,14,193,250,2,61,23, +15,23,16,195,251,2,65,23,15,23,16,23,17,248,22,74,199,27,248,22,158, +14,23,196,1,28,248,22,145,14,193,250,2,61,198,199,195,11,250,80,159,39, +50,37,196,197,11,250,80,159,39,50,37,196,11,11,87,94,249,22,173,6,247, +22,145,5,195,248,22,135,6,249,22,188,3,36,249,22,172,3,197,198,27,28, +23,197,2,87,95,23,196,1,23,195,1,23,197,1,87,94,23,197,1,27,248, +22,173,14,2,21,27,249,80,159,41,50,37,23,196,1,11,27,248,22,191,3, +23,199,1,27,28,23,194,2,23,194,1,87,94,23,194,1,36,27,248,22,191, +3,23,202,1,27,28,23,194,2,23,194,1,87,94,23,194,1,36,249,22,176, +5,23,199,1,83,158,40,20,100,95,89,162,8,44,36,48,9,224,4,2,33, +70,23,195,1,23,197,1,27,248,22,161,5,23,195,1,248,80,159,39,55,37, +193,159,36,20,105,159,36,16,1,11,16,0,83,158,42,20,103,145,2,1,2, +1,29,11,11,11,11,11,10,43,80,158,36,36,20,105,159,38,16,18,2,2, +2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2, +13,2,14,2,15,2,16,2,17,30,2,19,1,20,112,97,114,97,109,101,116, +101,114,105,122,97,116,105,111,110,45,107,101,121,4,30,2,19,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, +3,16,0,16,0,36,16,0,36,16,4,2,6,2,5,2,3,2,10,40,11, +11,39,36,11,11,11,16,12,2,9,2,7,2,17,2,8,2,16,2,14,2, +13,2,4,2,12,2,15,2,11,2,2,16,12,11,11,11,11,11,11,11,11, +11,11,11,11,16,12,2,9,2,7,2,17,2,8,2,16,2,14,2,13,2, +4,2,12,2,15,2,11,2,2,48,48,37,11,11,11,16,0,16,0,16,0, +36,36,11,11,11,11,16,0,16,0,16,0,36,36,16,0,16,18,83,158,36, +16,2,89,162,8,44,37,51,2,20,223,0,33,33,80,159,36,55,37,83,158, +36,16,2,89,162,8,44,37,56,2,20,223,0,33,34,80,159,36,54,37,83, +158,36,16,2,32,0,89,162,44,37,45,2,2,222,33,35,80,159,36,36,37, +83,158,36,16,2,249,22,184,6,7,92,7,92,80,159,36,37,37,83,158,36, +16,2,89,162,44,37,54,2,4,223,0,33,36,80,159,36,38,37,83,158,36, +16,2,32,0,89,162,8,44,38,50,2,5,222,33,37,80,159,36,39,37,83, +158,36,16,2,32,0,89,162,8,44,39,51,2,6,222,33,39,80,159,36,40, +37,83,158,36,16,2,32,0,89,162,8,45,38,54,2,7,222,33,43,80,159, +36,41,37,83,158,36,16,2,32,0,89,162,45,39,53,2,9,222,33,47,80, +159,36,43,37,83,158,36,16,2,32,0,89,162,44,41,59,2,8,222,33,50, +80,159,36,42,37,83,158,36,16,2,32,0,89,162,44,39,50,2,10,222,33, +51,80,159,36,44,37,83,158,36,16,2,32,0,89,162,44,38,53,2,11,222, +33,52,80,159,36,45,37,83,158,36,16,2,32,0,89,162,44,38,54,2,12, +222,33,53,80,159,36,46,37,83,158,36,16,2,32,0,89,162,44,37,44,2, +13,222,33,54,80,159,36,47,37,83,158,36,16,2,83,158,39,20,99,96,2, +14,89,162,44,36,44,9,223,0,33,55,89,162,44,37,45,9,223,0,33,56, +89,162,44,38,55,9,223,0,33,57,80,159,36,48,37,83,158,36,16,2,27, +248,22,180,14,248,22,132,8,27,28,249,22,128,9,247,22,140,8,2,22,6, +1,1,59,6,1,1,58,250,22,166,7,6,14,14,40,91,94,126,97,93,42, +41,126,97,40,46,42,41,23,196,2,23,196,1,89,162,8,44,38,8,32,2, +15,223,0,33,60,80,159,36,49,37,83,158,36,16,2,83,158,39,20,99,96, +2,16,89,162,8,44,39,8,24,9,223,0,33,67,89,162,44,38,47,9,223, +0,33,68,89,162,44,37,46,9,223,0,33,69,80,159,36,50,37,83,158,36, +16,2,89,162,8,44,39,54,2,17,223,0,33,71,80,159,36,51,37,94,29, +94,2,18,68,35,37,107,101,114,110,101,108,11,29,94,2,18,69,35,37,109, +105,110,45,115,116,120,11,9,9,9,36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 8642); + } + { + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,52,46,57,57,46,49,9,0,0,0,1,0,0,10,0,16, +0,29,0,44,0,58,0,72,0,86,0,128,0,0,0,57,1,0,0,69,35, +37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2,2,67,35,37, +117,116,105,108,115,11,29,94,2,2,69,35,37,110,101,116,119,111,114,107,11, +29,94,2,2,68,35,37,112,97,114,97,109,122,11,29,94,2,2,68,35,37, +101,120,112,111,98,115,11,29,94,2,2,68,35,37,107,101,114,110,101,108,11, +97,36,11,8,240,237,83,0,0,98,159,2,3,36,36,159,2,4,36,36,159, +2,5,36,36,159,2,6,36,36,159,2,7,36,36,159,2,7,36,36,16,0, 159,36,20,105,159,36,16,1,11,16,0,83,158,42,20,103,145,2,1,2,1, -29,11,11,11,11,11,10,43,80,158,36,36,20,105,159,38,16,18,2,2,2, -3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13, -2,14,2,15,2,16,2,17,30,2,19,1,20,112,97,114,97,109,101,116,101, -114,105,122,97,116,105,111,110,45,107,101,121,4,30,2,19,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,3, -16,0,16,0,36,16,0,36,16,4,2,6,2,5,2,3,2,10,40,11,11, -39,36,11,11,11,16,12,2,9,2,7,2,17,2,8,2,16,2,14,2,13, -2,4,2,12,2,15,2,11,2,2,16,12,11,11,11,11,11,11,11,11,11, -11,11,11,16,12,2,9,2,7,2,17,2,8,2,16,2,14,2,13,2,4, -2,12,2,15,2,11,2,2,48,48,37,11,11,11,16,0,16,0,16,0,36, -36,11,11,11,11,16,0,16,0,16,0,36,36,16,0,16,18,83,158,36,16, -2,89,162,8,44,37,51,2,20,223,0,33,33,80,159,36,55,37,83,158,36, -16,2,89,162,8,44,37,56,2,20,223,0,33,34,80,159,36,54,37,83,158, -36,16,2,32,0,89,162,44,37,45,2,2,222,33,35,80,159,36,36,37,83, -158,36,16,2,249,22,184,6,7,92,7,92,80,159,36,37,37,83,158,36,16, -2,89,162,44,37,54,2,4,223,0,33,36,80,159,36,38,37,83,158,36,16, -2,32,0,89,162,8,44,38,50,2,5,222,33,37,80,159,36,39,37,83,158, -36,16,2,32,0,89,162,8,44,39,51,2,6,222,33,39,80,159,36,40,37, -83,158,36,16,2,32,0,89,162,8,45,38,54,2,7,222,33,43,80,159,36, -41,37,83,158,36,16,2,32,0,89,162,45,39,53,2,9,222,33,47,80,159, -36,43,37,83,158,36,16,2,32,0,89,162,44,41,59,2,8,222,33,50,80, -159,36,42,37,83,158,36,16,2,32,0,89,162,44,39,50,2,10,222,33,51, -80,159,36,44,37,83,158,36,16,2,32,0,89,162,44,38,53,2,11,222,33, -52,80,159,36,45,37,83,158,36,16,2,32,0,89,162,44,38,54,2,12,222, -33,53,80,159,36,46,37,83,158,36,16,2,32,0,89,162,44,37,44,2,13, -222,33,54,80,159,36,47,37,83,158,36,16,2,83,158,39,20,99,96,2,14, -89,162,44,36,44,9,223,0,33,55,89,162,44,37,45,9,223,0,33,56,89, -162,44,38,55,9,223,0,33,57,80,159,36,48,37,83,158,36,16,2,27,248, -22,179,14,248,22,132,8,27,28,249,22,128,9,247,22,140,8,2,22,6,1, -1,59,6,1,1,58,250,22,166,7,6,14,14,40,91,94,126,97,93,42,41, -126,97,40,46,42,41,23,196,2,23,196,1,89,162,8,44,38,8,32,2,15, -223,0,33,60,80,159,36,49,37,83,158,36,16,2,83,158,39,20,99,96,2, -16,89,162,8,44,39,8,24,9,223,0,33,67,89,162,44,38,47,9,223,0, -33,68,89,162,44,37,46,9,223,0,33,69,80,159,36,50,37,83,158,36,16, -2,89,162,8,44,39,54,2,17,223,0,33,71,80,159,36,51,37,94,29,94, -2,18,68,35,37,107,101,114,110,101,108,11,29,94,2,18,69,35,37,109,105, -110,45,115,116,120,11,9,9,9,36,0}; - EVAL_ONE_SIZED_STR((char *)expr, 8641); +29,11,11,11,11,11,18,96,11,44,44,44,36,80,158,36,36,20,105,159,36, +16,0,16,0,16,0,36,16,0,36,16,0,36,11,11,39,36,11,11,11,16, +0,16,0,16,0,36,36,37,11,11,11,16,0,16,0,16,0,36,36,11,11, +11,11,16,0,16,0,16,0,36,36,16,0,16,0,102,2,7,2,6,29,94, +2,2,69,35,37,102,111,114,101,105,103,110,11,29,94,2,2,68,35,37,117, +110,115,97,102,101,11,29,94,2,2,69,35,37,102,108,102,120,110,117,109,11, +2,5,2,4,2,3,29,94,2,2,67,35,37,112,108,97,99,101,11,29,94, +2,2,69,35,37,102,117,116,117,114,101,115,11,9,9,9,36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 353); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,48,46,49,46,56,9,0,0,0,1,0,0,10,0,16,0, -29,0,44,0,58,0,72,0,86,0,128,0,0,0,57,1,0,0,69,35,37, -98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2,2,67,35,37,117, -116,105,108,115,11,29,94,2,2,69,35,37,110,101,116,119,111,114,107,11,29, -94,2,2,68,35,37,112,97,114,97,109,122,11,29,94,2,2,68,35,37,101, -120,112,111,98,115,11,29,94,2,2,68,35,37,107,101,114,110,101,108,11,97, -36,11,8,240,44,86,0,0,98,159,2,3,36,36,159,2,4,36,36,159,2, -5,36,36,159,2,6,36,36,159,2,7,36,36,159,2,7,36,36,16,0,159, -36,20,105,159,36,16,1,11,16,0,83,158,42,20,103,145,2,1,2,1,29, -11,11,11,11,11,18,96,11,44,44,44,36,80,158,36,36,20,105,159,36,16, -0,16,0,16,0,36,16,0,36,16,0,36,11,11,39,36,11,11,11,16,0, -16,0,16,0,36,36,37,11,11,11,16,0,16,0,16,0,36,36,11,11,11, -11,16,0,16,0,16,0,36,36,16,0,16,0,102,2,7,2,6,29,94,2, -2,69,35,37,102,111,114,101,105,103,110,11,29,94,2,2,68,35,37,117,110, -115,97,102,101,11,29,94,2,2,69,35,37,102,108,102,120,110,117,109,11,2, -5,2,4,2,3,29,94,2,2,67,35,37,112,108,97,99,101,11,29,94,2, -2,69,35,37,102,117,116,117,114,101,115,11,9,9,9,36,0}; - EVAL_ONE_SIZED_STR((char *)expr, 352); - } - { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,48,46,49,46,56,74,0,0,0,1,0,0,7,0,18,0, -45,0,51,0,64,0,73,0,80,0,102,0,124,0,150,0,162,0,180,0,200, -0,212,0,228,0,251,0,7,1,38,1,45,1,50,1,55,1,60,1,65,1, -70,1,79,1,84,1,88,1,94,1,101,1,107,1,115,1,124,1,145,1,166, -1,196,1,226,1,27,2,84,2,132,2,180,2,110,8,129,8,142,8,44,9, -57,9,243,10,81,13,204,13,210,13,224,13,237,13,79,15,92,15,211,15,224, -15,66,17,79,17,198,17,225,17,238,17,251,17,93,19,106,19,225,19,238,19, -101,20,109,20,196,20,198,20,11,21,57,29,109,29,132,29,0,0,38,32,0, -0,66,35,37,98,111,111,116,70,100,108,108,45,115,117,102,102,105,120,1,25, -100,101,102,97,117,108,116,45,108,111,97,100,47,117,115,101,45,99,111,109,112, -105,108,101,100,65,113,117,111,116,101,29,94,2,4,67,35,37,117,116,105,108, -115,11,68,35,37,112,97,114,97,109,122,29,94,2,4,2,6,11,1,20,112, -97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,1,20, -100,101,102,97,117,108,116,45,114,101,97,100,101,114,45,103,117,97,114,100,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,71,45,112,97,116,104,45,99,97,99,104,101,77,45,108,111,97, -100,105,110,103,45,102,105,108,101,110,97,109,101,79,45,108,111,97,100,105,110, -103,45,112,114,111,109,112,116,45,116,97,103,71,45,112,114,101,118,45,114,101, -108,116,111,75,45,112,114,101,118,45,114,101,108,116,111,45,100,105,114,1,21, -115,112,108,105,116,45,114,101,108,97,116,105,118,101,45,115,116,114,105,110,103, -71,111,114,105,103,45,112,97,114,97,109,122,1,29,115,116,97,110,100,97,114, -100,45,109,111,100,117,108,101,45,110,97,109,101,45,114,101,115,111,108,118,101, -114,29,94,2,4,2,6,11,64,98,111,111,116,64,115,101,97,108,64,115,97, -109,101,5,3,46,122,111,5,3,46,122,111,6,6,6,110,97,116,105,118,101, -64,108,111,111,112,63,108,105,98,6,3,3,46,115,115,6,4,4,46,114,107, -116,5,4,46,114,107,116,67,105,103,110,111,114,101,100,249,22,14,195,80,159, -38,46,38,250,22,150,14,23,197,1,23,199,1,249,80,159,43,39,38,23,198, -1,2,23,250,22,150,14,23,197,1,23,199,1,249,80,159,43,39,38,23,198, -1,2,24,252,22,150,14,23,199,1,23,201,1,2,25,247,22,141,8,249,80, -159,45,39,38,23,200,1,80,159,45,36,38,252,22,150,14,23,199,1,23,201, -1,2,25,247,22,141,8,249,80,159,45,39,38,23,200,1,80,159,45,36,38, -27,252,22,150,14,23,200,1,23,202,1,2,25,247,22,141,8,249,80,159,46, -39,38,23,201,1,80,159,46,36,38,27,250,22,167,14,196,11,32,0,89,162, -8,44,36,41,9,222,11,28,192,249,22,72,195,194,11,27,252,22,150,14,23, -200,1,23,202,1,2,25,247,22,141,8,249,80,159,46,39,38,23,201,1,80, -159,46,36,38,27,250,22,167,14,196,11,32,0,89,162,8,44,36,41,9,222, -11,28,192,249,22,72,195,194,11,27,250,22,150,14,23,198,1,23,200,1,249, -80,159,44,39,38,23,199,1,2,23,27,250,22,167,14,196,11,32,0,89,162, -8,44,36,41,9,222,11,28,192,249,22,72,195,194,11,27,250,22,150,14,23, -198,1,23,200,1,249,80,159,44,39,38,23,199,1,2,24,27,250,22,167,14, -196,11,32,0,89,162,8,44,36,41,9,222,11,28,192,249,22,72,195,194,11, -87,94,28,248,80,159,37,38,38,23,195,2,12,250,22,164,9,77,108,111,97, -100,47,117,115,101,45,99,111,109,112,105,108,101,100,6,25,25,112,97,116,104, -32,111,114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,114,105,110,103, -23,197,2,91,159,46,11,90,161,37,36,11,28,248,22,156,14,23,205,2,23, -204,2,27,247,22,150,5,28,23,193,2,249,22,157,14,23,207,2,23,195,1, -23,205,2,90,161,39,37,11,248,22,153,14,23,205,1,87,94,23,196,1,90, -161,38,40,11,28,23,205,2,27,248,22,137,14,23,197,2,27,248,22,176,7, -23,195,2,28,28,249,22,184,3,23,195,2,40,249,22,179,7,5,4,46,114, -107,116,249,22,182,7,23,198,2,249,22,172,3,23,199,2,40,11,249,22,7, -23,199,2,248,22,141,14,249,22,183,7,250,22,182,7,23,202,1,36,249,22, -172,3,23,203,1,40,5,3,46,115,115,249,22,7,23,199,2,11,249,22,7, -23,197,2,11,90,161,37,42,11,28,249,22,128,9,23,199,2,23,197,2,23, -193,2,249,22,150,14,23,196,2,23,199,2,90,161,37,43,11,28,23,198,2, -28,249,22,128,9,23,200,2,23,197,1,23,193,1,87,94,23,193,1,249,22, -150,14,23,196,2,23,200,2,87,94,23,195,1,11,90,161,37,44,11,28,249, -22,128,9,23,196,2,68,114,101,108,97,116,105,118,101,87,94,23,194,1,2, -22,23,194,1,90,161,37,45,11,247,22,175,14,27,250,22,167,14,23,203,2, -11,32,0,89,162,8,44,36,41,9,222,11,27,28,23,194,2,249,22,72,23, -203,2,23,196,1,87,94,23,194,1,11,27,28,23,203,2,28,23,194,2,11, -27,250,22,167,14,23,207,2,11,32,0,89,162,8,44,36,41,9,222,11,28, -192,249,22,72,23,206,2,194,11,11,27,28,23,195,2,23,195,2,23,194,2, -27,89,162,44,37,50,62,122,111,225,15,13,9,33,33,27,89,162,44,37,50, -66,97,108,116,45,122,111,225,16,14,11,33,34,27,89,162,44,37,52,9,225, -17,15,11,33,35,27,89,162,44,37,52,9,225,18,16,13,33,36,27,28,23, -200,2,23,200,2,248,22,190,8,23,200,2,27,28,23,208,2,28,23,200,2, -87,94,23,201,1,23,200,2,248,22,190,8,23,202,1,11,27,28,23,195,2, -28,23,197,1,27,249,22,5,89,162,8,44,37,53,9,225,24,22,18,33,37, -23,216,2,27,28,23,202,2,11,193,28,192,192,28,193,28,23,202,2,28,249, -22,184,3,248,22,74,196,248,22,74,23,205,2,193,11,11,11,11,87,94,23, -197,1,11,28,23,193,2,87,105,23,213,1,23,211,1,23,210,1,23,209,1, -23,208,1,23,201,1,23,200,1,23,199,1,23,198,1,23,196,1,23,195,1, -23,194,1,20,14,159,80,159,57,40,38,250,80,159,8,24,41,38,249,22,27, -11,80,159,8,26,40,38,22,172,4,11,20,14,159,80,159,57,40,38,250,80, -159,8,24,41,38,249,22,27,11,80,159,8,26,40,38,22,150,5,28,248,22, -132,14,23,216,2,23,215,1,87,94,23,215,1,247,22,173,14,249,247,22,178, -14,248,22,73,195,23,25,87,94,23,193,1,27,28,23,195,2,28,23,197,1, -27,249,22,5,89,162,8,44,37,53,9,225,25,23,20,33,38,23,217,2,27, -28,23,204,2,11,193,28,192,192,28,193,28,203,28,249,22,184,3,248,22,74, -196,248,22,74,206,193,11,11,11,11,87,94,23,197,1,11,28,23,193,2,87, -102,23,214,1,23,211,1,23,210,1,23,209,1,23,201,1,23,200,1,23,199, -1,23,196,1,23,195,1,20,14,159,80,159,58,40,38,250,80,159,8,25,41, -38,249,22,27,11,80,159,8,27,40,38,22,172,4,23,215,1,20,14,159,80, -159,58,40,38,250,80,159,8,25,41,38,249,22,27,11,80,159,8,27,40,38, -22,150,5,28,248,22,132,14,23,217,2,23,216,1,87,94,23,216,1,247,22, -173,14,249,247,22,178,14,248,22,73,195,23,26,87,94,23,193,1,27,28,23, -197,2,28,23,201,1,27,249,22,5,83,158,40,20,100,94,89,162,8,44,37, -51,9,225,26,24,20,33,39,23,213,1,23,218,2,27,28,23,204,2,11,193, -28,192,192,28,193,28,23,204,2,28,249,22,184,3,248,22,74,196,248,22,74, -23,207,2,193,11,11,11,87,94,23,210,1,11,87,94,23,201,1,11,28,23, -193,2,87,101,23,215,1,23,213,1,23,212,1,23,211,1,23,202,1,23,200, -1,23,197,1,23,196,1,20,14,159,80,159,59,40,38,250,80,159,8,26,41, -38,249,22,27,11,80,159,8,28,40,38,22,172,4,11,20,14,159,80,159,59, -40,38,250,80,159,8,26,41,38,249,22,27,11,80,159,8,28,40,38,22,150, -5,28,248,22,132,14,23,218,2,23,217,1,87,94,23,217,1,247,22,173,14, -249,247,22,148,5,248,22,73,195,23,27,87,94,23,193,1,27,28,23,197,1, -28,23,201,1,27,249,22,5,83,158,40,20,100,94,89,162,8,44,37,51,9, -225,27,25,22,33,40,23,215,1,23,219,1,27,28,23,205,2,11,193,28,192, -192,28,193,28,204,28,249,22,184,3,248,22,74,196,248,22,74,23,15,193,11, -11,11,87,95,23,216,1,23,212,1,11,87,94,23,201,1,11,28,23,193,2, -87,95,23,213,1,23,198,1,20,14,159,80,159,8,24,40,38,250,80,159,8, -27,41,38,249,22,27,11,80,159,8,29,40,38,22,172,4,23,217,1,20,14, -159,80,159,8,24,40,38,250,80,159,8,27,41,38,249,22,27,11,80,159,8, -29,40,38,22,150,5,28,248,22,132,14,23,219,2,23,218,1,87,94,23,218, -1,247,22,173,14,249,247,22,148,5,248,22,73,195,23,28,87,94,23,193,1, -27,28,23,199,2,87,94,23,215,1,23,214,1,87,94,23,214,1,23,215,1, -20,14,159,80,159,8,25,40,38,250,80,159,8,28,41,38,249,22,27,11,80, -159,8,30,40,38,22,172,4,28,23,30,28,23,202,1,11,195,87,94,23,202, -1,11,20,14,159,80,159,8,25,40,38,250,80,159,8,28,41,38,249,22,27, -11,80,159,8,30,40,38,22,150,5,28,248,22,132,14,23,220,2,23,219,1, -87,94,23,219,1,247,22,173,14,249,247,22,148,5,194,23,29,0,17,35,114, -120,34,94,40,46,42,63,41,47,40,46,42,41,36,34,32,43,89,162,8,44, -37,59,2,26,222,33,44,27,249,22,183,14,2,42,23,196,2,28,23,193,2, -87,94,23,194,1,249,22,72,248,22,97,23,196,2,27,248,22,106,23,197,1, -27,249,22,183,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22, -72,248,22,97,23,196,2,27,248,22,106,23,197,1,27,249,22,183,14,2,42, -23,196,2,28,23,193,2,87,94,23,194,1,249,22,72,248,22,97,23,196,2, -27,248,22,106,23,197,1,27,249,22,183,14,2,42,23,196,2,28,23,193,2, -87,94,23,194,1,249,22,72,248,22,97,23,196,2,248,2,43,248,22,106,23, -197,1,248,22,82,194,248,22,82,194,248,22,82,194,248,22,82,194,32,45,89, -162,44,37,8,40,2,26,222,33,46,28,248,22,80,248,22,74,23,195,2,249, -22,7,9,248,22,73,195,27,248,22,74,194,91,159,38,11,90,161,38,36,11, -28,248,22,80,248,22,74,23,197,2,249,22,7,9,248,22,73,197,91,159,38, -11,90,161,38,36,11,27,248,22,74,198,28,248,22,80,248,22,74,23,195,2, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,52,46,57,57,46,49,74,0,0,0,1,0,0,7,0,18, +0,45,0,51,0,64,0,73,0,80,0,102,0,124,0,150,0,162,0,180,0, +200,0,212,0,228,0,251,0,7,1,38,1,45,1,50,1,55,1,60,1,65, +1,70,1,79,1,84,1,88,1,94,1,101,1,107,1,115,1,124,1,145,1, +166,1,196,1,226,1,27,2,84,2,132,2,180,2,110,8,129,8,142,8,44, +9,57,9,243,10,81,13,204,13,210,13,224,13,237,13,79,15,92,15,211,15, +224,15,66,17,79,17,198,17,225,17,238,17,251,17,93,19,106,19,225,19,238, +19,101,20,109,20,196,20,198,20,11,21,57,29,109,29,132,29,0,0,38,32, +0,0,66,35,37,98,111,111,116,70,100,108,108,45,115,117,102,102,105,120,1, +25,100,101,102,97,117,108,116,45,108,111,97,100,47,117,115,101,45,99,111,109, +112,105,108,101,100,65,113,117,111,116,101,29,94,2,4,67,35,37,117,116,105, +108,115,11,68,35,37,112,97,114,97,109,122,29,94,2,4,2,6,11,1,20, +112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,1, +20,100,101,102,97,117,108,116,45,114,101,97,100,101,114,45,103,117,97,114,100, +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,71,45,112,97,116,104,45,99,97,99,104,101,77,45,108,111, +97,100,105,110,103,45,102,105,108,101,110,97,109,101,79,45,108,111,97,100,105, +110,103,45,112,114,111,109,112,116,45,116,97,103,71,45,112,114,101,118,45,114, +101,108,116,111,75,45,112,114,101,118,45,114,101,108,116,111,45,100,105,114,1, +21,115,112,108,105,116,45,114,101,108,97,116,105,118,101,45,115,116,114,105,110, +103,71,111,114,105,103,45,112,97,114,97,109,122,1,29,115,116,97,110,100,97, +114,100,45,109,111,100,117,108,101,45,110,97,109,101,45,114,101,115,111,108,118, +101,114,29,94,2,4,2,6,11,64,98,111,111,116,64,115,101,97,108,64,115, +97,109,101,5,3,46,122,111,5,3,46,122,111,6,6,6,110,97,116,105,118, +101,64,108,111,111,112,63,108,105,98,6,3,3,46,115,115,6,4,4,46,114, +107,116,5,4,46,114,107,116,67,105,103,110,111,114,101,100,249,22,14,195,80, +159,38,46,38,250,22,151,14,23,197,1,23,199,1,249,80,159,43,39,38,23, +198,1,2,23,250,22,151,14,23,197,1,23,199,1,249,80,159,43,39,38,23, +198,1,2,24,252,22,151,14,23,199,1,23,201,1,2,25,247,22,141,8,249, +80,159,45,39,38,23,200,1,80,159,45,36,38,252,22,151,14,23,199,1,23, +201,1,2,25,247,22,141,8,249,80,159,45,39,38,23,200,1,80,159,45,36, +38,27,252,22,151,14,23,200,1,23,202,1,2,25,247,22,141,8,249,80,159, +46,39,38,23,201,1,80,159,46,36,38,27,250,22,168,14,196,11,32,0,89, +162,8,44,36,41,9,222,11,28,192,249,22,72,195,194,11,27,252,22,151,14, +23,200,1,23,202,1,2,25,247,22,141,8,249,80,159,46,39,38,23,201,1, +80,159,46,36,38,27,250,22,168,14,196,11,32,0,89,162,8,44,36,41,9, +222,11,28,192,249,22,72,195,194,11,27,250,22,151,14,23,198,1,23,200,1, +249,80,159,44,39,38,23,199,1,2,23,27,250,22,168,14,196,11,32,0,89, +162,8,44,36,41,9,222,11,28,192,249,22,72,195,194,11,27,250,22,151,14, +23,198,1,23,200,1,249,80,159,44,39,38,23,199,1,2,24,27,250,22,168, +14,196,11,32,0,89,162,8,44,36,41,9,222,11,28,192,249,22,72,195,194, +11,87,94,28,248,80,159,37,38,38,23,195,2,12,250,22,164,9,77,108,111, +97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,6,25,25,112,97,116, +104,32,111,114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,114,105,110, +103,23,197,2,91,159,46,11,90,161,37,36,11,28,248,22,157,14,23,205,2, +23,204,2,27,247,22,150,5,28,23,193,2,249,22,158,14,23,207,2,23,195, +1,23,205,2,90,161,39,37,11,248,22,154,14,23,205,1,87,94,23,196,1, +90,161,38,40,11,28,23,205,2,27,248,22,138,14,23,197,2,27,248,22,176, +7,23,195,2,28,28,249,22,184,3,23,195,2,40,249,22,179,7,5,4,46, +114,107,116,249,22,182,7,23,198,2,249,22,172,3,23,199,2,40,11,249,22, +7,23,199,2,248,22,142,14,249,22,183,7,250,22,182,7,23,202,1,36,249, +22,172,3,23,203,1,40,5,3,46,115,115,249,22,7,23,199,2,11,249,22, +7,23,197,2,11,90,161,37,42,11,28,249,22,128,9,23,199,2,23,197,2, +23,193,2,249,22,151,14,23,196,2,23,199,2,90,161,37,43,11,28,23,198, +2,28,249,22,128,9,23,200,2,23,197,1,23,193,1,87,94,23,193,1,249, +22,151,14,23,196,2,23,200,2,87,94,23,195,1,11,90,161,37,44,11,28, +249,22,128,9,23,196,2,68,114,101,108,97,116,105,118,101,87,94,23,194,1, +2,22,23,194,1,90,161,37,45,11,247,22,176,14,27,250,22,168,14,23,203, +2,11,32,0,89,162,8,44,36,41,9,222,11,27,28,23,194,2,249,22,72, +23,203,2,23,196,1,87,94,23,194,1,11,27,28,23,203,2,28,23,194,2, +11,27,250,22,168,14,23,207,2,11,32,0,89,162,8,44,36,41,9,222,11, +28,192,249,22,72,23,206,2,194,11,11,27,28,23,195,2,23,195,2,23,194, +2,27,89,162,44,37,50,62,122,111,225,15,13,9,33,33,27,89,162,44,37, +50,66,97,108,116,45,122,111,225,16,14,11,33,34,27,89,162,44,37,52,9, +225,17,15,11,33,35,27,89,162,44,37,52,9,225,18,16,13,33,36,27,28, +23,200,2,23,200,2,248,22,190,8,23,200,2,27,28,23,208,2,28,23,200, +2,87,94,23,201,1,23,200,2,248,22,190,8,23,202,1,11,27,28,23,195, +2,28,23,197,1,27,249,22,5,89,162,8,44,37,53,9,225,24,22,18,33, +37,23,216,2,27,28,23,202,2,11,193,28,192,192,28,193,28,23,202,2,28, +249,22,184,3,248,22,74,196,248,22,74,23,205,2,193,11,11,11,11,87,94, +23,197,1,11,28,23,193,2,87,105,23,213,1,23,211,1,23,210,1,23,209, +1,23,208,1,23,201,1,23,200,1,23,199,1,23,198,1,23,196,1,23,195, +1,23,194,1,20,14,159,80,159,57,40,38,250,80,159,8,24,41,38,249,22, +27,11,80,159,8,26,40,38,22,172,4,11,20,14,159,80,159,57,40,38,250, +80,159,8,24,41,38,249,22,27,11,80,159,8,26,40,38,22,150,5,28,248, +22,133,14,23,216,2,23,215,1,87,94,23,215,1,247,22,174,14,249,247,22, +179,14,248,22,73,195,23,25,87,94,23,193,1,27,28,23,195,2,28,23,197, +1,27,249,22,5,89,162,8,44,37,53,9,225,25,23,20,33,38,23,217,2, +27,28,23,204,2,11,193,28,192,192,28,193,28,203,28,249,22,184,3,248,22, +74,196,248,22,74,206,193,11,11,11,11,87,94,23,197,1,11,28,23,193,2, +87,102,23,214,1,23,211,1,23,210,1,23,209,1,23,201,1,23,200,1,23, +199,1,23,196,1,23,195,1,20,14,159,80,159,58,40,38,250,80,159,8,25, +41,38,249,22,27,11,80,159,8,27,40,38,22,172,4,23,215,1,20,14,159, +80,159,58,40,38,250,80,159,8,25,41,38,249,22,27,11,80,159,8,27,40, +38,22,150,5,28,248,22,133,14,23,217,2,23,216,1,87,94,23,216,1,247, +22,174,14,249,247,22,179,14,248,22,73,195,23,26,87,94,23,193,1,27,28, +23,197,2,28,23,201,1,27,249,22,5,83,158,40,20,100,94,89,162,8,44, +37,51,9,225,26,24,20,33,39,23,213,1,23,218,2,27,28,23,204,2,11, +193,28,192,192,28,193,28,23,204,2,28,249,22,184,3,248,22,74,196,248,22, +74,23,207,2,193,11,11,11,87,94,23,210,1,11,87,94,23,201,1,11,28, +23,193,2,87,101,23,215,1,23,213,1,23,212,1,23,211,1,23,202,1,23, +200,1,23,197,1,23,196,1,20,14,159,80,159,59,40,38,250,80,159,8,26, +41,38,249,22,27,11,80,159,8,28,40,38,22,172,4,11,20,14,159,80,159, +59,40,38,250,80,159,8,26,41,38,249,22,27,11,80,159,8,28,40,38,22, +150,5,28,248,22,133,14,23,218,2,23,217,1,87,94,23,217,1,247,22,174, +14,249,247,22,148,5,248,22,73,195,23,27,87,94,23,193,1,27,28,23,197, +1,28,23,201,1,27,249,22,5,83,158,40,20,100,94,89,162,8,44,37,51, +9,225,27,25,22,33,40,23,215,1,23,219,1,27,28,23,205,2,11,193,28, +192,192,28,193,28,204,28,249,22,184,3,248,22,74,196,248,22,74,23,15,193, +11,11,11,87,95,23,216,1,23,212,1,11,87,94,23,201,1,11,28,23,193, +2,87,95,23,213,1,23,198,1,20,14,159,80,159,8,24,40,38,250,80,159, +8,27,41,38,249,22,27,11,80,159,8,29,40,38,22,172,4,23,217,1,20, +14,159,80,159,8,24,40,38,250,80,159,8,27,41,38,249,22,27,11,80,159, +8,29,40,38,22,150,5,28,248,22,133,14,23,219,2,23,218,1,87,94,23, +218,1,247,22,174,14,249,247,22,148,5,248,22,73,195,23,28,87,94,23,193, +1,27,28,23,199,2,87,94,23,215,1,23,214,1,87,94,23,214,1,23,215, +1,20,14,159,80,159,8,25,40,38,250,80,159,8,28,41,38,249,22,27,11, +80,159,8,30,40,38,22,172,4,28,23,30,28,23,202,1,11,195,87,94,23, +202,1,11,20,14,159,80,159,8,25,40,38,250,80,159,8,28,41,38,249,22, +27,11,80,159,8,30,40,38,22,150,5,28,248,22,133,14,23,220,2,23,219, +1,87,94,23,219,1,247,22,174,14,249,247,22,148,5,194,23,29,0,17,35, +114,120,34,94,40,46,42,63,41,47,40,46,42,41,36,34,32,43,89,162,8, +44,37,59,2,26,222,33,44,27,249,22,184,14,2,42,23,196,2,28,23,193, +2,87,94,23,194,1,249,22,72,248,22,97,23,196,2,27,248,22,106,23,197, +1,27,249,22,184,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249, +22,72,248,22,97,23,196,2,27,248,22,106,23,197,1,27,249,22,184,14,2, +42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,72,248,22,97,23,196, +2,27,248,22,106,23,197,1,27,249,22,184,14,2,42,23,196,2,28,23,193, +2,87,94,23,194,1,249,22,72,248,22,97,23,196,2,248,2,43,248,22,106, +23,197,1,248,22,82,194,248,22,82,194,248,22,82,194,248,22,82,194,32,45, +89,162,44,37,8,40,2,26,222,33,46,28,248,22,80,248,22,74,23,195,2, 249,22,7,9,248,22,73,195,27,248,22,74,194,91,159,38,11,90,161,38,36, 11,28,248,22,80,248,22,74,23,197,2,249,22,7,9,248,22,73,197,91,159, 38,11,90,161,38,36,11,27,248,22,74,198,28,248,22,80,248,22,74,23,195, @@ -669,25 +666,25 @@ 91,159,38,11,90,161,38,36,11,27,248,22,74,198,28,248,22,80,248,22,74, 23,195,2,249,22,7,9,248,22,73,195,27,248,22,74,194,91,159,38,11,90, 161,38,36,11,28,248,22,80,248,22,74,23,197,2,249,22,7,9,248,22,73, -197,91,159,38,11,90,161,38,36,11,248,2,45,248,22,74,198,249,22,7,249, -22,72,248,22,73,201,196,195,249,22,7,249,22,72,248,22,73,200,196,195,249, -22,7,249,22,72,248,22,73,201,196,195,249,22,7,249,22,72,248,22,73,200, -196,195,249,22,7,249,22,72,248,22,73,201,196,195,249,22,7,249,22,72,248, -22,73,200,196,195,249,22,7,249,22,72,248,22,73,201,196,195,249,22,7,249, -22,72,248,22,73,200,196,195,249,22,7,249,22,72,248,22,73,201,196,195,249, -22,7,249,22,72,248,22,73,200,196,195,27,27,249,22,183,14,2,42,23,197, -2,28,23,193,2,87,94,23,195,1,249,22,72,248,22,97,23,196,2,27,248, -22,106,23,197,1,27,249,22,183,14,2,42,23,196,2,28,23,193,2,87,94, -23,194,1,249,22,72,248,22,97,23,196,2,27,248,22,106,23,197,1,27,249, -22,183,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,72,248, -22,97,23,196,2,27,248,22,106,23,197,1,27,249,22,183,14,2,42,23,196, -2,28,23,193,2,87,94,23,194,1,249,22,72,248,22,97,23,196,2,248,2, -43,248,22,106,23,197,1,248,22,82,194,248,22,82,194,248,22,82,194,248,22, -82,195,28,23,195,1,192,28,248,22,80,248,22,74,23,195,2,249,22,7,9, -248,22,73,195,27,248,22,74,194,91,159,38,11,90,161,38,36,11,28,248,22, -80,248,22,74,23,197,2,249,22,7,9,248,22,73,197,27,248,22,74,196,91, -159,38,11,90,161,38,36,11,28,248,22,80,248,22,74,23,197,2,249,22,7, -9,248,22,73,197,27,248,22,74,196,91,159,38,11,90,161,38,36,11,28,248, +197,91,159,38,11,90,161,38,36,11,27,248,22,74,198,28,248,22,80,248,22, +74,23,195,2,249,22,7,9,248,22,73,195,27,248,22,74,194,91,159,38,11, +90,161,38,36,11,28,248,22,80,248,22,74,23,197,2,249,22,7,9,248,22, +73,197,91,159,38,11,90,161,38,36,11,248,2,45,248,22,74,198,249,22,7, +249,22,72,248,22,73,201,196,195,249,22,7,249,22,72,248,22,73,200,196,195, +249,22,7,249,22,72,248,22,73,201,196,195,249,22,7,249,22,72,248,22,73, +200,196,195,249,22,7,249,22,72,248,22,73,201,196,195,249,22,7,249,22,72, +248,22,73,200,196,195,249,22,7,249,22,72,248,22,73,201,196,195,249,22,7, +249,22,72,248,22,73,200,196,195,249,22,7,249,22,72,248,22,73,201,196,195, +249,22,7,249,22,72,248,22,73,200,196,195,27,27,249,22,184,14,2,42,23, +197,2,28,23,193,2,87,94,23,195,1,249,22,72,248,22,97,23,196,2,27, +248,22,106,23,197,1,27,249,22,184,14,2,42,23,196,2,28,23,193,2,87, +94,23,194,1,249,22,72,248,22,97,23,196,2,27,248,22,106,23,197,1,27, +249,22,184,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,72, +248,22,97,23,196,2,27,248,22,106,23,197,1,27,249,22,184,14,2,42,23, +196,2,28,23,193,2,87,94,23,194,1,249,22,72,248,22,97,23,196,2,248, +2,43,248,22,106,23,197,1,248,22,82,194,248,22,82,194,248,22,82,194,248, +22,82,195,28,23,195,1,192,28,248,22,80,248,22,74,23,195,2,249,22,7, +9,248,22,73,195,27,248,22,74,194,91,159,38,11,90,161,38,36,11,28,248, 22,80,248,22,74,23,197,2,249,22,7,9,248,22,73,197,27,248,22,74,196, 91,159,38,11,90,161,38,36,11,28,248,22,80,248,22,74,23,197,2,249,22, 7,9,248,22,73,197,27,248,22,74,196,91,159,38,11,90,161,38,36,11,28, @@ -697,24 +694,24 @@ 28,248,22,80,248,22,74,23,197,2,249,22,7,9,248,22,73,197,27,248,22, 74,196,91,159,38,11,90,161,38,36,11,28,248,22,80,248,22,74,23,197,2, 249,22,7,9,248,22,73,197,27,248,22,74,196,91,159,38,11,90,161,38,36, -11,28,248,22,80,248,22,74,23,197,2,249,22,7,9,248,22,73,197,91,159, -38,11,90,161,38,36,11,248,2,45,248,22,74,198,249,22,7,249,22,72,248, -22,73,201,196,195,249,22,7,249,22,72,248,22,73,202,196,195,249,22,7,249, -22,72,248,22,73,202,196,195,249,22,7,249,22,72,248,22,73,202,196,195,249, -22,7,249,22,72,248,22,73,202,196,195,249,22,7,249,22,72,248,22,73,202, -196,195,249,22,7,249,22,72,248,22,73,202,196,195,249,22,7,249,22,72,248, -22,73,202,196,195,249,22,7,249,22,72,248,22,73,202,196,195,249,22,7,249, -22,72,248,22,73,200,196,195,87,95,28,248,22,190,4,195,12,250,22,164,9, -2,18,6,20,20,114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45, -112,97,116,104,197,28,24,193,2,248,24,194,1,195,87,94,23,193,1,12,27, -250,22,152,2,80,159,41,43,38,248,22,144,15,247,22,174,12,11,27,28,23, -194,2,193,87,94,23,194,1,27,247,22,132,2,87,94,250,22,150,2,80,159, -43,43,38,248,22,144,15,247,22,174,12,195,192,250,22,150,2,195,199,66,97, -116,116,97,99,104,251,211,197,198,199,10,28,192,250,22,163,9,11,196,195,248, -22,161,9,194,32,51,89,162,44,37,8,34,2,26,222,33,52,28,248,22,80, -248,22,74,23,195,2,249,22,7,9,248,22,73,195,27,248,22,74,194,91,159, -38,11,90,161,38,36,11,28,248,22,80,248,22,74,23,197,2,249,22,7,9, -248,22,73,197,91,159,38,11,90,161,38,36,11,27,248,22,74,198,28,248,22, +11,28,248,22,80,248,22,74,23,197,2,249,22,7,9,248,22,73,197,27,248, +22,74,196,91,159,38,11,90,161,38,36,11,28,248,22,80,248,22,74,23,197, +2,249,22,7,9,248,22,73,197,27,248,22,74,196,91,159,38,11,90,161,38, +36,11,28,248,22,80,248,22,74,23,197,2,249,22,7,9,248,22,73,197,91, +159,38,11,90,161,38,36,11,248,2,45,248,22,74,198,249,22,7,249,22,72, +248,22,73,201,196,195,249,22,7,249,22,72,248,22,73,202,196,195,249,22,7, +249,22,72,248,22,73,202,196,195,249,22,7,249,22,72,248,22,73,202,196,195, +249,22,7,249,22,72,248,22,73,202,196,195,249,22,7,249,22,72,248,22,73, +202,196,195,249,22,7,249,22,72,248,22,73,202,196,195,249,22,7,249,22,72, +248,22,73,202,196,195,249,22,7,249,22,72,248,22,73,202,196,195,249,22,7, +249,22,72,248,22,73,200,196,195,87,95,28,248,22,190,4,195,12,250,22,164, +9,2,18,6,20,20,114,101,115,111,108,118,101,100,45,109,111,100,117,108,101, +45,112,97,116,104,197,28,24,193,2,248,24,194,1,195,87,94,23,193,1,12, +27,250,22,152,2,80,159,41,43,38,248,22,145,15,247,22,175,12,11,27,28, +23,194,2,193,87,94,23,194,1,27,247,22,132,2,87,94,250,22,150,2,80, +159,43,43,38,248,22,145,15,247,22,175,12,195,192,250,22,150,2,195,199,66, +97,116,116,97,99,104,251,211,197,198,199,10,28,192,250,22,163,9,11,196,195, +248,22,161,9,194,32,51,89,162,44,37,8,34,2,26,222,33,52,28,248,22, 80,248,22,74,23,195,2,249,22,7,9,248,22,73,195,27,248,22,74,194,91, 159,38,11,90,161,38,36,11,28,248,22,80,248,22,74,23,197,2,249,22,7, 9,248,22,73,197,91,159,38,11,90,161,38,36,11,27,248,22,74,198,28,248, @@ -723,22 +720,22 @@ 7,9,248,22,73,197,91,159,38,11,90,161,38,36,11,27,248,22,74,198,28, 248,22,80,248,22,74,23,195,2,249,22,7,9,248,22,73,195,27,248,22,74, 194,91,159,38,11,90,161,38,36,11,28,248,22,80,248,22,74,23,197,2,249, -22,7,9,248,22,73,197,91,159,38,11,90,161,38,36,11,248,2,51,248,22, -74,198,249,22,7,249,22,72,248,22,73,201,196,195,249,22,7,249,22,72,248, -22,73,200,196,195,249,22,7,249,22,72,248,22,73,201,196,195,249,22,7,249, -22,72,248,22,73,200,196,195,249,22,7,249,22,72,248,22,73,201,196,195,249, -22,7,249,22,72,248,22,73,200,196,195,249,22,7,249,22,72,248,22,73,201, -196,195,249,22,7,249,22,72,248,22,73,200,196,195,32,53,89,162,8,44,37, -55,2,26,222,33,54,27,249,22,183,14,2,42,23,196,2,28,23,193,2,87, -94,23,194,1,249,22,72,248,22,97,23,196,2,27,248,22,106,23,197,1,27, -249,22,183,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,72, -248,22,97,23,196,2,27,248,22,106,23,197,1,27,249,22,183,14,2,42,23, -196,2,28,23,193,2,87,94,23,194,1,249,22,72,248,22,97,23,196,2,248, -2,53,248,22,106,23,197,1,248,22,82,194,248,22,82,194,248,22,82,194,32, -55,89,162,44,37,8,34,2,26,222,33,56,28,248,22,80,248,22,74,23,195, -2,249,22,7,9,248,22,73,195,27,248,22,74,194,91,159,38,11,90,161,38, -36,11,28,248,22,80,248,22,74,23,197,2,249,22,7,9,248,22,73,197,91, -159,38,11,90,161,38,36,11,27,248,22,74,198,28,248,22,80,248,22,74,23, +22,7,9,248,22,73,197,91,159,38,11,90,161,38,36,11,27,248,22,74,198, +28,248,22,80,248,22,74,23,195,2,249,22,7,9,248,22,73,195,27,248,22, +74,194,91,159,38,11,90,161,38,36,11,28,248,22,80,248,22,74,23,197,2, +249,22,7,9,248,22,73,197,91,159,38,11,90,161,38,36,11,248,2,51,248, +22,74,198,249,22,7,249,22,72,248,22,73,201,196,195,249,22,7,249,22,72, +248,22,73,200,196,195,249,22,7,249,22,72,248,22,73,201,196,195,249,22,7, +249,22,72,248,22,73,200,196,195,249,22,7,249,22,72,248,22,73,201,196,195, +249,22,7,249,22,72,248,22,73,200,196,195,249,22,7,249,22,72,248,22,73, +201,196,195,249,22,7,249,22,72,248,22,73,200,196,195,32,53,89,162,8,44, +37,55,2,26,222,33,54,27,249,22,184,14,2,42,23,196,2,28,23,193,2, +87,94,23,194,1,249,22,72,248,22,97,23,196,2,27,248,22,106,23,197,1, +27,249,22,184,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22, +72,248,22,97,23,196,2,27,248,22,106,23,197,1,27,249,22,184,14,2,42, +23,196,2,28,23,193,2,87,94,23,194,1,249,22,72,248,22,97,23,196,2, +248,2,53,248,22,106,23,197,1,248,22,82,194,248,22,82,194,248,22,82,194, +32,55,89,162,44,37,8,34,2,26,222,33,56,28,248,22,80,248,22,74,23, 195,2,249,22,7,9,248,22,73,195,27,248,22,74,194,91,159,38,11,90,161, 38,36,11,28,248,22,80,248,22,74,23,197,2,249,22,7,9,248,22,73,197, 91,159,38,11,90,161,38,36,11,27,248,22,74,198,28,248,22,80,248,22,74, @@ -747,24 +744,24 @@ 197,91,159,38,11,90,161,38,36,11,27,248,22,74,198,28,248,22,80,248,22, 74,23,195,2,249,22,7,9,248,22,73,195,27,248,22,74,194,91,159,38,11, 90,161,38,36,11,28,248,22,80,248,22,74,23,197,2,249,22,7,9,248,22, -73,197,91,159,38,11,90,161,38,36,11,248,2,55,248,22,74,198,249,22,7, -249,22,72,248,22,73,201,196,195,249,22,7,249,22,72,248,22,73,200,196,195, -249,22,7,249,22,72,248,22,73,201,196,195,249,22,7,249,22,72,248,22,73, -200,196,195,249,22,7,249,22,72,248,22,73,201,196,195,249,22,7,249,22,72, -248,22,73,200,196,195,249,22,7,249,22,72,248,22,73,201,196,195,249,22,7, -249,22,72,248,22,73,200,196,195,32,57,89,162,8,44,37,55,2,26,222,33, -58,27,249,22,183,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249, -22,72,248,22,97,23,196,2,27,248,22,106,23,197,1,27,249,22,183,14,2, -42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,72,248,22,97,23,196, -2,27,248,22,106,23,197,1,27,249,22,183,14,2,42,23,196,2,28,23,193, -2,87,94,23,194,1,249,22,72,248,22,97,23,196,2,248,2,57,248,22,106, -23,197,1,248,22,82,194,248,22,82,194,248,22,82,194,28,249,22,188,6,194, -6,1,1,46,2,22,28,249,22,188,6,194,6,2,2,46,46,62,117,112,192, -0,11,35,114,120,34,91,46,93,115,115,36,34,32,61,89,162,44,37,8,34, -2,26,222,33,62,28,248,22,80,248,22,74,23,195,2,249,22,7,9,248,22, -73,195,27,248,22,74,194,91,159,38,11,90,161,38,36,11,28,248,22,80,248, -22,74,23,197,2,249,22,7,9,248,22,73,197,91,159,38,11,90,161,38,36, -11,27,248,22,74,198,28,248,22,80,248,22,74,23,195,2,249,22,7,9,248, +73,197,91,159,38,11,90,161,38,36,11,27,248,22,74,198,28,248,22,80,248, +22,74,23,195,2,249,22,7,9,248,22,73,195,27,248,22,74,194,91,159,38, +11,90,161,38,36,11,28,248,22,80,248,22,74,23,197,2,249,22,7,9,248, +22,73,197,91,159,38,11,90,161,38,36,11,248,2,55,248,22,74,198,249,22, +7,249,22,72,248,22,73,201,196,195,249,22,7,249,22,72,248,22,73,200,196, +195,249,22,7,249,22,72,248,22,73,201,196,195,249,22,7,249,22,72,248,22, +73,200,196,195,249,22,7,249,22,72,248,22,73,201,196,195,249,22,7,249,22, +72,248,22,73,200,196,195,249,22,7,249,22,72,248,22,73,201,196,195,249,22, +7,249,22,72,248,22,73,200,196,195,32,57,89,162,8,44,37,55,2,26,222, +33,58,27,249,22,184,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1, +249,22,72,248,22,97,23,196,2,27,248,22,106,23,197,1,27,249,22,184,14, +2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,72,248,22,97,23, +196,2,27,248,22,106,23,197,1,27,249,22,184,14,2,42,23,196,2,28,23, +193,2,87,94,23,194,1,249,22,72,248,22,97,23,196,2,248,2,57,248,22, +106,23,197,1,248,22,82,194,248,22,82,194,248,22,82,194,28,249,22,188,6, +194,6,1,1,46,2,22,28,249,22,188,6,194,6,2,2,46,46,62,117,112, +192,0,11,35,114,120,34,91,46,93,115,115,36,34,32,61,89,162,44,37,8, +34,2,26,222,33,62,28,248,22,80,248,22,74,23,195,2,249,22,7,9,248, 22,73,195,27,248,22,74,194,91,159,38,11,90,161,38,36,11,28,248,22,80, 248,22,74,23,197,2,249,22,7,9,248,22,73,197,91,159,38,11,90,161,38, 36,11,27,248,22,74,198,28,248,22,80,248,22,74,23,195,2,249,22,7,9, @@ -773,166 +770,170 @@ 38,36,11,27,248,22,74,198,28,248,22,80,248,22,74,23,195,2,249,22,7, 9,248,22,73,195,27,248,22,74,194,91,159,38,11,90,161,38,36,11,28,248, 22,80,248,22,74,23,197,2,249,22,7,9,248,22,73,197,91,159,38,11,90, -161,38,36,11,248,2,61,248,22,74,198,249,22,7,249,22,72,248,22,73,201, -196,195,249,22,7,249,22,72,248,22,73,200,196,195,249,22,7,249,22,72,248, -22,73,201,196,195,249,22,7,249,22,72,248,22,73,200,196,195,249,22,7,249, -22,72,248,22,73,201,196,195,249,22,7,249,22,72,248,22,73,200,196,195,249, -22,7,249,22,72,248,22,73,201,196,195,249,22,7,249,22,72,248,22,73,200, -196,195,32,63,89,162,8,44,37,55,2,26,222,33,64,27,249,22,183,14,2, +161,38,36,11,27,248,22,74,198,28,248,22,80,248,22,74,23,195,2,249,22, +7,9,248,22,73,195,27,248,22,74,194,91,159,38,11,90,161,38,36,11,28, +248,22,80,248,22,74,23,197,2,249,22,7,9,248,22,73,197,91,159,38,11, +90,161,38,36,11,248,2,61,248,22,74,198,249,22,7,249,22,72,248,22,73, +201,196,195,249,22,7,249,22,72,248,22,73,200,196,195,249,22,7,249,22,72, +248,22,73,201,196,195,249,22,7,249,22,72,248,22,73,200,196,195,249,22,7, +249,22,72,248,22,73,201,196,195,249,22,7,249,22,72,248,22,73,200,196,195, +249,22,7,249,22,72,248,22,73,201,196,195,249,22,7,249,22,72,248,22,73, +200,196,195,32,63,89,162,8,44,37,55,2,26,222,33,64,27,249,22,184,14, +2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,72,248,22,97,23, +196,2,27,248,22,106,23,197,1,27,249,22,184,14,2,42,23,196,2,28,23, +193,2,87,94,23,194,1,249,22,72,248,22,97,23,196,2,27,248,22,106,23, +197,1,27,249,22,184,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1, +249,22,72,248,22,97,23,196,2,248,2,63,248,22,106,23,197,1,248,22,82, +194,248,22,82,194,248,22,82,194,32,65,89,162,8,44,37,55,2,26,222,33, +66,27,249,22,184,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249, +22,72,248,22,97,23,196,2,27,248,22,106,23,197,1,27,249,22,184,14,2, 42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,72,248,22,97,23,196, -2,27,248,22,106,23,197,1,27,249,22,183,14,2,42,23,196,2,28,23,193, -2,87,94,23,194,1,249,22,72,248,22,97,23,196,2,27,248,22,106,23,197, -1,27,249,22,183,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249, -22,72,248,22,97,23,196,2,248,2,63,248,22,106,23,197,1,248,22,82,194, -248,22,82,194,248,22,82,194,32,65,89,162,8,44,37,55,2,26,222,33,66, -27,249,22,183,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22, -72,248,22,97,23,196,2,27,248,22,106,23,197,1,27,249,22,183,14,2,42, -23,196,2,28,23,193,2,87,94,23,194,1,249,22,72,248,22,97,23,196,2, -27,248,22,106,23,197,1,27,249,22,183,14,2,42,23,196,2,28,23,193,2, -87,94,23,194,1,249,22,72,248,22,97,23,196,2,248,2,65,248,22,106,23, -197,1,248,22,82,194,248,22,82,194,248,22,82,194,27,248,2,65,23,195,1, -192,28,249,22,130,9,248,22,74,23,200,2,23,197,1,28,249,22,128,9,248, -22,73,23,200,2,23,196,1,251,22,161,9,2,18,6,28,28,99,121,99,108, -101,32,105,110,32,108,111,97,100,105,110,103,32,97,116,32,126,46,115,58,32, -126,46,115,23,200,1,249,22,2,22,74,248,22,87,249,22,72,23,206,1,23, -202,1,12,12,247,192,20,14,159,80,159,40,45,38,249,22,72,248,22,144,15, -247,22,174,12,23,197,1,20,14,159,80,159,40,40,38,250,80,159,43,41,38, -249,22,27,11,80,159,45,40,38,22,171,4,23,196,1,249,247,22,149,5,23, -198,1,248,22,60,248,22,136,14,23,198,1,87,94,28,28,248,22,132,14,23, -196,2,10,248,22,134,5,23,196,2,12,28,23,197,2,250,22,163,9,11,6, -15,15,98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,23,200,2,250, -22,164,9,2,18,6,19,19,109,111,100,117,108,101,45,112,97,116,104,32,111, -114,32,112,97,116,104,23,198,2,28,28,248,22,70,23,196,2,249,22,128,9, -248,22,73,23,198,2,2,4,11,248,22,191,4,248,22,97,196,28,28,248,22, -70,23,196,2,249,22,128,9,248,22,73,23,198,2,66,112,108,97,110,101,116, -11,87,94,28,207,12,20,14,159,80,159,37,52,38,80,158,37,50,90,161,37, -36,10,249,22,173,4,21,94,2,27,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,252, -212,199,200,201,202,80,158,42,50,87,94,23,193,1,27,89,162,8,44,37,46, -79,115,104,111,119,45,99,111,108,108,101,99,116,105,111,110,45,101,114,114,223, -5,33,50,27,28,248,22,57,23,198,2,27,250,22,152,2,80,159,43,44,38, -249,22,72,23,203,2,247,22,174,14,11,28,23,193,2,192,87,94,23,193,1, -91,159,38,11,90,161,38,36,11,27,248,22,63,23,202,2,248,2,51,248,2, -53,23,195,1,27,28,248,22,80,23,195,2,6,8,8,109,97,105,110,46,114, -107,116,249,22,141,7,23,197,2,6,4,4,46,114,107,116,27,252,80,159,49, -54,38,2,18,23,204,1,28,248,22,80,23,201,2,23,201,1,87,94,23,201, -1,248,22,73,23,201,2,28,248,22,80,23,201,2,87,94,23,200,1,9,248, -22,74,23,201,1,23,199,2,249,22,150,14,23,195,1,23,196,1,28,248,22, -182,6,23,198,2,87,94,23,194,1,27,28,23,199,2,28,249,22,128,9,23, -201,2,80,158,42,47,80,158,40,48,27,248,22,128,5,23,201,2,28,248,22, -132,14,23,194,2,91,159,39,11,90,161,39,36,11,248,22,153,14,23,197,1, -87,95,83,160,38,11,80,158,44,47,23,203,2,83,160,38,11,80,158,44,48, -192,192,11,11,27,28,23,194,2,23,194,1,87,94,23,194,1,27,247,22,150, -5,28,23,193,2,192,87,94,23,193,1,247,22,173,14,27,250,22,152,2,80, -159,45,44,38,249,22,72,23,205,2,23,199,2,11,28,23,193,2,192,87,94, -23,193,1,91,159,38,11,90,161,38,36,11,248,2,55,248,2,57,23,204,2, -250,22,1,22,150,14,23,199,1,249,22,86,249,22,2,32,0,89,162,8,44, -37,44,9,222,33,59,23,200,1,248,22,82,27,248,22,185,6,23,202,2,28, -249,22,184,3,194,39,28,249,22,188,6,2,28,249,22,140,7,204,249,22,172, -3,198,39,249,22,141,7,250,22,140,7,205,36,249,22,172,3,199,39,2,29, -200,200,28,248,22,132,14,23,198,2,87,94,23,194,1,28,248,22,155,14,23, -198,2,27,248,22,159,14,23,199,2,91,159,39,11,90,161,39,36,11,248,22, -153,14,23,197,2,87,95,23,195,1,23,193,1,28,249,22,183,14,2,60,248, -22,137,14,23,197,1,249,80,159,45,53,38,23,198,1,2,30,195,248,22,82, -6,26,26,32,40,97,32,112,97,116,104,32,109,117,115,116,32,98,101,32,97, -98,115,111,108,117,116,101,41,28,249,22,128,9,248,22,73,23,200,2,2,27, -27,250,22,152,2,80,159,43,44,38,249,22,72,23,203,2,247,22,174,14,11, -28,23,193,2,192,87,94,23,193,1,91,159,39,11,90,161,38,36,11,27,248, -22,97,23,203,2,248,2,61,248,2,63,23,195,1,90,161,37,38,11,28,248, -22,80,248,22,99,23,203,2,28,248,22,80,23,194,2,249,22,187,14,0,8, -35,114,120,34,91,46,93,34,23,196,2,11,10,27,28,23,196,2,27,248,22, -185,6,23,197,2,28,249,22,184,3,194,39,28,249,22,188,6,2,28,249,22, -140,7,23,200,2,249,22,172,3,198,39,249,22,141,7,250,22,140,7,23,201, -2,36,249,22,172,3,199,39,2,29,23,196,2,23,196,2,28,248,22,80,23, -195,2,6,8,8,109,97,105,110,46,114,107,116,28,249,22,187,14,0,8,35, -114,120,34,91,46,93,34,23,197,2,27,248,22,185,6,23,197,2,28,249,22, -184,3,194,39,28,249,22,188,6,2,28,249,22,140,7,23,200,2,249,22,172, -3,198,39,249,22,141,7,250,22,140,7,23,201,2,36,249,22,172,3,199,39, -2,29,23,196,2,23,196,2,249,22,141,7,23,197,2,6,4,4,46,114,107, -116,27,28,23,197,1,87,94,23,196,1,249,22,86,28,248,22,80,248,22,99, -23,207,2,21,93,6,5,5,109,122,108,105,98,249,22,1,22,86,249,22,2, -32,0,89,162,8,44,37,44,9,222,33,67,248,22,99,23,210,2,23,197,1, -28,248,22,80,23,196,2,87,94,23,195,1,248,22,82,23,197,1,87,94,23, -196,1,23,195,1,27,252,80,159,51,54,38,2,18,23,206,1,248,22,73,23, -200,2,248,22,74,23,200,1,23,200,2,249,22,150,14,23,195,1,23,197,1, -28,249,22,128,9,248,22,73,23,200,2,64,102,105,108,101,27,248,22,159,14, -249,22,157,14,248,22,161,14,248,22,97,23,203,2,27,28,23,203,2,28,249, -22,128,9,23,205,2,80,158,46,47,80,158,44,48,27,248,22,128,5,23,205, -2,28,248,22,132,14,23,194,2,91,159,39,11,90,161,39,36,11,248,22,153, -14,23,197,1,87,95,83,160,38,11,80,158,48,47,23,207,2,83,160,38,11, -80,158,48,48,192,192,11,11,28,23,193,2,192,87,94,23,193,1,27,247,22, -150,5,28,23,193,2,192,87,94,23,193,1,247,22,173,14,91,159,39,11,90, -161,39,36,11,248,22,153,14,23,197,2,87,95,23,195,1,23,193,1,28,249, -22,183,14,2,60,248,22,137,14,23,197,1,249,80,159,45,53,38,23,198,1, -2,30,195,12,87,94,28,28,248,22,132,14,23,194,2,10,248,22,143,8,23, -194,2,87,94,23,199,1,12,28,23,199,2,250,22,163,9,67,114,101,113,117, -105,114,101,249,22,166,7,6,17,17,98,97,100,32,109,111,100,117,108,101,32, -112,97,116,104,126,97,28,23,198,2,248,22,73,23,199,2,6,0,0,23,202, -1,87,94,23,199,1,250,22,164,9,2,18,249,22,166,7,6,13,13,109,111, -100,117,108,101,32,112,97,116,104,126,97,28,23,198,2,248,22,73,23,199,2, -6,0,0,23,200,2,27,28,248,22,143,8,23,195,2,249,22,148,8,23,196, -2,36,249,22,159,14,248,22,160,14,23,197,2,11,27,28,248,22,143,8,23, -196,2,249,22,148,8,23,197,2,37,248,80,159,42,55,38,23,195,2,91,159, -39,11,90,161,39,36,11,28,248,22,143,8,23,199,2,250,22,7,2,31,249, -22,148,8,23,203,2,38,2,31,248,22,153,14,23,198,2,87,95,23,195,1, -23,193,1,27,28,248,22,143,8,23,200,2,249,22,148,8,23,201,2,39,249, -80,159,47,53,38,23,197,2,5,0,27,28,248,22,143,8,23,201,2,249,22, -148,8,23,202,2,40,248,22,191,4,23,200,2,27,27,250,22,152,2,80,159, -51,43,38,248,22,144,15,247,22,174,12,11,28,23,193,2,192,87,94,23,193, -1,27,247,22,132,2,87,94,250,22,150,2,80,159,52,43,38,248,22,144,15, -247,22,174,12,195,192,87,95,28,23,208,1,27,250,22,152,2,23,197,2,197, -11,28,23,193,1,12,87,95,27,27,28,248,22,17,80,159,51,46,38,80,159, -50,46,38,247,22,19,250,22,25,248,22,23,23,197,2,80,159,53,45,38,23, -196,1,27,248,22,144,15,247,22,174,12,249,22,3,83,158,40,20,100,94,89, -162,8,44,37,55,9,226,12,11,2,3,33,68,23,195,1,23,196,1,248,28, -248,22,17,80,159,50,46,38,32,0,89,162,44,37,42,9,222,33,69,80,159, -49,59,37,89,162,44,36,51,9,227,13,9,8,4,3,33,70,250,22,150,2, -23,197,1,197,10,12,28,28,248,22,143,8,23,202,1,11,28,248,22,182,6, -23,206,2,10,28,248,22,57,23,206,2,10,28,248,22,70,23,206,2,249,22, -128,9,248,22,73,23,208,2,2,27,11,250,22,150,2,80,159,50,44,38,28, -248,22,182,6,23,209,2,249,22,72,23,210,1,27,28,23,212,2,28,249,22, -128,9,23,214,2,80,158,55,47,87,94,23,212,1,80,158,53,48,27,248,22, -128,5,23,214,2,28,248,22,132,14,23,194,2,91,159,39,11,90,161,39,36, -11,248,22,153,14,23,197,1,87,95,83,160,38,11,80,158,57,47,23,23,83, -160,38,11,80,158,57,48,192,192,11,11,28,23,193,2,192,87,94,23,193,1, -27,247,22,150,5,28,23,193,2,192,87,94,23,193,1,247,22,173,14,249,22, -72,23,210,1,247,22,174,14,252,22,145,8,23,208,1,23,207,1,23,205,1, -23,203,1,201,12,193,87,96,83,160,38,11,80,158,36,50,248,80,159,37,58, -38,249,22,27,11,80,159,39,52,38,248,22,170,4,80,159,37,51,38,248,22, -149,5,80,159,37,37,37,248,22,165,13,80,159,37,42,37,83,160,38,11,80, -158,36,50,248,80,159,37,58,38,249,22,27,11,80,159,39,52,38,159,36,20, -105,159,36,16,1,11,16,0,83,158,42,20,103,145,2,1,2,1,29,11,11, -11,11,11,10,38,80,158,36,36,20,105,159,37,16,23,2,2,2,3,30,2, -5,72,112,97,116,104,45,115,116,114,105,110,103,63,11,30,2,5,75,112,97, -116,104,45,97,100,100,45,115,117,102,102,105,120,8,30,2,7,2,8,4,30, -2,7,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,3,2,9,2,10,2,11,2,12,2,13,2,14,2,15, -2,16,2,17,2,18,30,2,19,2,8,4,30,2,5,79,112,97,116,104,45, -114,101,112,108,97,99,101,45,115,117,102,102,105,120,10,30,2,5,73,102,105, -110,100,45,99,111,108,45,102,105,108,101,3,30,2,5,76,110,111,114,109,97, -108,45,99,97,115,101,45,112,97,116,104,7,2,20,2,21,30,2,19,74,114, -101,112,97,114,97,109,101,116,101,114,105,122,101,5,16,0,16,0,36,16,0, -36,16,12,2,12,2,13,2,10,2,11,2,14,2,15,2,3,2,9,2,2, -2,17,2,16,2,18,48,11,11,39,36,11,11,11,16,2,2,20,2,21,16, -2,11,11,16,2,2,20,2,21,38,38,37,11,11,11,16,0,16,0,16,0, -36,36,11,11,11,11,16,0,16,0,16,0,36,36,16,0,16,15,83,158,36, -16,2,89,162,44,37,45,9,223,0,33,32,80,159,36,59,37,83,158,36,16, -2,248,22,140,8,69,115,111,45,115,117,102,102,105,120,80,159,36,36,37,83, -158,36,16,2,89,162,44,38,8,38,2,3,223,0,33,41,80,159,36,37,37, -83,158,36,16,2,32,0,89,162,8,44,37,42,2,9,222,192,80,159,36,42, -37,83,158,36,16,2,247,22,135,2,80,159,36,43,37,83,158,36,16,2,247, -22,134,2,80,159,36,44,37,83,158,36,16,2,247,22,68,80,159,36,45,37, -83,158,36,16,2,248,22,18,74,109,111,100,117,108,101,45,108,111,97,100,105, -110,103,80,159,36,46,37,83,158,36,16,2,11,80,158,36,47,83,158,36,16, -2,11,80,158,36,48,83,158,36,16,2,32,0,89,162,44,38,8,42,2,16, -222,33,47,80,159,36,49,37,83,158,36,16,2,11,80,158,36,50,83,158,36, -16,2,91,159,38,10,90,161,37,36,10,11,90,161,37,37,10,83,158,39,20, -99,96,2,18,89,162,8,44,37,51,9,224,2,0,33,48,89,162,44,39,49, -9,223,1,33,49,89,162,44,40,8,32,9,224,2,0,33,71,208,80,159,36, -51,37,83,158,36,16,2,89,162,44,36,45,2,20,223,0,33,72,80,159,36, -56,37,83,158,36,16,2,89,162,8,44,36,45,2,21,223,0,33,73,80,159, -36,57,37,96,29,94,2,4,68,35,37,107,101,114,110,101,108,11,29,94,2, -4,69,35,37,109,105,110,45,115,116,120,11,2,5,2,19,9,9,9,36,0}; - EVAL_ONE_SIZED_STR((char *)expr, 8399); +2,27,248,22,106,23,197,1,27,249,22,184,14,2,42,23,196,2,28,23,193, +2,87,94,23,194,1,249,22,72,248,22,97,23,196,2,248,2,65,248,22,106, +23,197,1,248,22,82,194,248,22,82,194,248,22,82,194,27,248,2,65,23,195, +1,192,28,249,22,130,9,248,22,74,23,200,2,23,197,1,28,249,22,128,9, +248,22,73,23,200,2,23,196,1,251,22,161,9,2,18,6,28,28,99,121,99, +108,101,32,105,110,32,108,111,97,100,105,110,103,32,97,116,32,126,46,115,58, +32,126,46,115,23,200,1,249,22,2,22,74,248,22,87,249,22,72,23,206,1, +23,202,1,12,12,247,192,20,14,159,80,159,40,45,38,249,22,72,248,22,145, +15,247,22,175,12,23,197,1,20,14,159,80,159,40,40,38,250,80,159,43,41, +38,249,22,27,11,80,159,45,40,38,22,171,4,23,196,1,249,247,22,149,5, +23,198,1,248,22,60,248,22,137,14,23,198,1,87,94,28,28,248,22,133,14, +23,196,2,10,248,22,134,5,23,196,2,12,28,23,197,2,250,22,163,9,11, +6,15,15,98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,23,200,2, +250,22,164,9,2,18,6,19,19,109,111,100,117,108,101,45,112,97,116,104,32, +111,114,32,112,97,116,104,23,198,2,28,28,248,22,70,23,196,2,249,22,128, +9,248,22,73,23,198,2,2,4,11,248,22,191,4,248,22,97,196,28,28,248, +22,70,23,196,2,249,22,128,9,248,22,73,23,198,2,66,112,108,97,110,101, +116,11,87,94,28,207,12,20,14,159,80,159,37,52,38,80,158,37,50,90,161, +37,36,10,249,22,173,4,21,94,2,27,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, +252,212,199,200,201,202,80,158,42,50,87,94,23,193,1,27,89,162,8,44,37, +46,79,115,104,111,119,45,99,111,108,108,101,99,116,105,111,110,45,101,114,114, +223,5,33,50,27,28,248,22,57,23,198,2,27,250,22,152,2,80,159,43,44, +38,249,22,72,23,203,2,247,22,175,14,11,28,23,193,2,192,87,94,23,193, +1,91,159,38,11,90,161,38,36,11,27,248,22,63,23,202,2,248,2,51,248, +2,53,23,195,1,27,28,248,22,80,23,195,2,6,8,8,109,97,105,110,46, +114,107,116,249,22,141,7,23,197,2,6,4,4,46,114,107,116,27,252,80,159, +49,54,38,2,18,23,204,1,28,248,22,80,23,201,2,23,201,1,87,94,23, +201,1,248,22,73,23,201,2,28,248,22,80,23,201,2,87,94,23,200,1,9, +248,22,74,23,201,1,23,199,2,249,22,151,14,23,195,1,23,196,1,28,248, +22,182,6,23,198,2,87,94,23,194,1,27,28,23,199,2,28,249,22,128,9, +23,201,2,80,158,42,47,80,158,40,48,27,248,22,128,5,23,201,2,28,248, +22,133,14,23,194,2,91,159,39,11,90,161,39,36,11,248,22,154,14,23,197, +1,87,95,83,160,38,11,80,158,44,47,23,203,2,83,160,38,11,80,158,44, +48,192,192,11,11,27,28,23,194,2,23,194,1,87,94,23,194,1,27,247,22, +150,5,28,23,193,2,192,87,94,23,193,1,247,22,174,14,27,250,22,152,2, +80,159,45,44,38,249,22,72,23,205,2,23,199,2,11,28,23,193,2,192,87, +94,23,193,1,91,159,38,11,90,161,38,36,11,248,2,55,248,2,57,23,204, +2,250,22,1,22,151,14,23,199,1,249,22,86,249,22,2,32,0,89,162,8, +44,37,44,9,222,33,59,23,200,1,248,22,82,27,248,22,185,6,23,202,2, +28,249,22,184,3,194,39,28,249,22,188,6,2,28,249,22,140,7,204,249,22, +172,3,198,39,249,22,141,7,250,22,140,7,205,36,249,22,172,3,199,39,2, +29,200,200,28,248,22,133,14,23,198,2,87,94,23,194,1,28,248,22,156,14, +23,198,2,27,248,22,160,14,23,199,2,91,159,39,11,90,161,39,36,11,248, +22,154,14,23,197,2,87,95,23,195,1,23,193,1,28,249,22,184,14,2,60, +248,22,138,14,23,197,1,249,80,159,45,53,38,23,198,1,2,30,195,248,22, +82,6,26,26,32,40,97,32,112,97,116,104,32,109,117,115,116,32,98,101,32, +97,98,115,111,108,117,116,101,41,28,249,22,128,9,248,22,73,23,200,2,2, +27,27,250,22,152,2,80,159,43,44,38,249,22,72,23,203,2,247,22,175,14, +11,28,23,193,2,192,87,94,23,193,1,91,159,39,11,90,161,38,36,11,27, +248,22,97,23,203,2,248,2,61,248,2,63,23,195,1,90,161,37,38,11,28, +248,22,80,248,22,99,23,203,2,28,248,22,80,23,194,2,249,22,188,14,0, +8,35,114,120,34,91,46,93,34,23,196,2,11,10,27,28,23,196,2,27,248, +22,185,6,23,197,2,28,249,22,184,3,194,39,28,249,22,188,6,2,28,249, +22,140,7,23,200,2,249,22,172,3,198,39,249,22,141,7,250,22,140,7,23, +201,2,36,249,22,172,3,199,39,2,29,23,196,2,23,196,2,28,248,22,80, +23,195,2,6,8,8,109,97,105,110,46,114,107,116,28,249,22,188,14,0,8, +35,114,120,34,91,46,93,34,23,197,2,27,248,22,185,6,23,197,2,28,249, +22,184,3,194,39,28,249,22,188,6,2,28,249,22,140,7,23,200,2,249,22, +172,3,198,39,249,22,141,7,250,22,140,7,23,201,2,36,249,22,172,3,199, +39,2,29,23,196,2,23,196,2,249,22,141,7,23,197,2,6,4,4,46,114, +107,116,27,28,23,197,1,87,94,23,196,1,249,22,86,28,248,22,80,248,22, +99,23,207,2,21,93,6,5,5,109,122,108,105,98,249,22,1,22,86,249,22, +2,32,0,89,162,8,44,37,44,9,222,33,67,248,22,99,23,210,2,23,197, +1,28,248,22,80,23,196,2,87,94,23,195,1,248,22,82,23,197,1,87,94, +23,196,1,23,195,1,27,252,80,159,51,54,38,2,18,23,206,1,248,22,73, +23,200,2,248,22,74,23,200,1,23,200,2,249,22,151,14,23,195,1,23,197, +1,28,249,22,128,9,248,22,73,23,200,2,64,102,105,108,101,27,248,22,160, +14,249,22,158,14,248,22,162,14,248,22,97,23,203,2,27,28,23,203,2,28, +249,22,128,9,23,205,2,80,158,46,47,80,158,44,48,27,248,22,128,5,23, +205,2,28,248,22,133,14,23,194,2,91,159,39,11,90,161,39,36,11,248,22, +154,14,23,197,1,87,95,83,160,38,11,80,158,48,47,23,207,2,83,160,38, +11,80,158,48,48,192,192,11,11,28,23,193,2,192,87,94,23,193,1,27,247, +22,150,5,28,23,193,2,192,87,94,23,193,1,247,22,174,14,91,159,39,11, +90,161,39,36,11,248,22,154,14,23,197,2,87,95,23,195,1,23,193,1,28, +249,22,184,14,2,60,248,22,138,14,23,197,1,249,80,159,45,53,38,23,198, +1,2,30,195,12,87,94,28,28,248,22,133,14,23,194,2,10,248,22,143,8, +23,194,2,87,94,23,199,1,12,28,23,199,2,250,22,163,9,67,114,101,113, +117,105,114,101,249,22,166,7,6,17,17,98,97,100,32,109,111,100,117,108,101, +32,112,97,116,104,126,97,28,23,198,2,248,22,73,23,199,2,6,0,0,23, +202,1,87,94,23,199,1,250,22,164,9,2,18,249,22,166,7,6,13,13,109, +111,100,117,108,101,32,112,97,116,104,126,97,28,23,198,2,248,22,73,23,199, +2,6,0,0,23,200,2,27,28,248,22,143,8,23,195,2,249,22,148,8,23, +196,2,36,249,22,160,14,248,22,161,14,23,197,2,11,27,28,248,22,143,8, +23,196,2,249,22,148,8,23,197,2,37,248,80,159,42,55,38,23,195,2,91, +159,39,11,90,161,39,36,11,28,248,22,143,8,23,199,2,250,22,7,2,31, +249,22,148,8,23,203,2,38,2,31,248,22,154,14,23,198,2,87,95,23,195, +1,23,193,1,27,28,248,22,143,8,23,200,2,249,22,148,8,23,201,2,39, +249,80,159,47,53,38,23,197,2,5,0,27,28,248,22,143,8,23,201,2,249, +22,148,8,23,202,2,40,248,22,191,4,23,200,2,27,27,250,22,152,2,80, +159,51,43,38,248,22,145,15,247,22,175,12,11,28,23,193,2,192,87,94,23, +193,1,27,247,22,132,2,87,94,250,22,150,2,80,159,52,43,38,248,22,145, +15,247,22,175,12,195,192,87,95,28,23,208,1,27,250,22,152,2,23,197,2, +197,11,28,23,193,1,12,87,95,27,27,28,248,22,17,80,159,51,46,38,80, +159,50,46,38,247,22,19,250,22,25,248,22,23,23,197,2,80,159,53,45,38, +23,196,1,27,248,22,145,15,247,22,175,12,249,22,3,83,158,40,20,100,94, +89,162,8,44,37,55,9,226,12,11,2,3,33,68,23,195,1,23,196,1,248, +28,248,22,17,80,159,50,46,38,32,0,89,162,44,37,42,9,222,33,69,80, +159,49,59,37,89,162,44,36,51,9,227,13,9,8,4,3,33,70,250,22,150, +2,23,197,1,197,10,12,28,28,248,22,143,8,23,202,1,11,28,248,22,182, +6,23,206,2,10,28,248,22,57,23,206,2,10,28,248,22,70,23,206,2,249, +22,128,9,248,22,73,23,208,2,2,27,11,250,22,150,2,80,159,50,44,38, +28,248,22,182,6,23,209,2,249,22,72,23,210,1,27,28,23,212,2,28,249, +22,128,9,23,214,2,80,158,55,47,87,94,23,212,1,80,158,53,48,27,248, +22,128,5,23,214,2,28,248,22,133,14,23,194,2,91,159,39,11,90,161,39, +36,11,248,22,154,14,23,197,1,87,95,83,160,38,11,80,158,57,47,23,23, +83,160,38,11,80,158,57,48,192,192,11,11,28,23,193,2,192,87,94,23,193, +1,27,247,22,150,5,28,23,193,2,192,87,94,23,193,1,247,22,174,14,249, +22,72,23,210,1,247,22,175,14,252,22,145,8,23,208,1,23,207,1,23,205, +1,23,203,1,201,12,193,87,96,83,160,38,11,80,158,36,50,248,80,159,37, +58,38,249,22,27,11,80,159,39,52,38,248,22,170,4,80,159,37,51,38,248, +22,149,5,80,159,37,37,37,248,22,166,13,80,159,37,42,37,83,160,38,11, +80,158,36,50,248,80,159,37,58,38,249,22,27,11,80,159,39,52,38,159,36, +20,105,159,36,16,1,11,16,0,83,158,42,20,103,145,2,1,2,1,29,11, +11,11,11,11,10,38,80,158,36,36,20,105,159,37,16,23,2,2,2,3,30, +2,5,72,112,97,116,104,45,115,116,114,105,110,103,63,11,30,2,5,75,112, +97,116,104,45,97,100,100,45,115,117,102,102,105,120,8,30,2,7,2,8,4, +30,2,7,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,3,2,9,2,10,2,11,2,12,2,13,2,14,2, +15,2,16,2,17,2,18,30,2,19,2,8,4,30,2,5,79,112,97,116,104, +45,114,101,112,108,97,99,101,45,115,117,102,102,105,120,10,30,2,5,73,102, +105,110,100,45,99,111,108,45,102,105,108,101,3,30,2,5,76,110,111,114,109, +97,108,45,99,97,115,101,45,112,97,116,104,7,2,20,2,21,30,2,19,74, +114,101,112,97,114,97,109,101,116,101,114,105,122,101,5,16,0,16,0,36,16, +0,36,16,12,2,12,2,13,2,10,2,11,2,14,2,15,2,3,2,9,2, +2,2,17,2,16,2,18,48,11,11,39,36,11,11,11,16,2,2,20,2,21, +16,2,11,11,16,2,2,20,2,21,38,38,37,11,11,11,16,0,16,0,16, +0,36,36,11,11,11,11,16,0,16,0,16,0,36,36,16,0,16,15,83,158, +36,16,2,89,162,44,37,45,9,223,0,33,32,80,159,36,59,37,83,158,36, +16,2,248,22,140,8,69,115,111,45,115,117,102,102,105,120,80,159,36,36,37, +83,158,36,16,2,89,162,44,38,8,38,2,3,223,0,33,41,80,159,36,37, +37,83,158,36,16,2,32,0,89,162,8,44,37,42,2,9,222,192,80,159,36, +42,37,83,158,36,16,2,247,22,135,2,80,159,36,43,37,83,158,36,16,2, +247,22,134,2,80,159,36,44,37,83,158,36,16,2,247,22,68,80,159,36,45, +37,83,158,36,16,2,248,22,18,74,109,111,100,117,108,101,45,108,111,97,100, +105,110,103,80,159,36,46,37,83,158,36,16,2,11,80,158,36,47,83,158,36, +16,2,11,80,158,36,48,83,158,36,16,2,32,0,89,162,44,38,8,42,2, +16,222,33,47,80,159,36,49,37,83,158,36,16,2,11,80,158,36,50,83,158, +36,16,2,91,159,38,10,90,161,37,36,10,11,90,161,37,37,10,83,158,39, +20,99,96,2,18,89,162,8,44,37,51,9,224,2,0,33,48,89,162,44,39, +49,9,223,1,33,49,89,162,44,40,8,32,9,224,2,0,33,71,208,80,159, +36,51,37,83,158,36,16,2,89,162,44,36,45,2,20,223,0,33,72,80,159, +36,56,37,83,158,36,16,2,89,162,8,44,36,45,2,21,223,0,33,73,80, +159,36,57,37,96,29,94,2,4,68,35,37,107,101,114,110,101,108,11,29,94, +2,4,69,35,37,109,105,110,45,115,116,120,11,2,5,2,19,9,9,9,36, +0}; + EVAL_ONE_SIZED_STR((char *)expr, 8400); } diff --git a/src/racket/src/error.c b/src/racket/src/error.c index 12e5e40b4e..91a19005de 100644 --- a/src/racket/src/error.c +++ b/src/racket/src/error.c @@ -71,6 +71,7 @@ ROSYM static Scheme_Object *def_err_val_proc; ROSYM static Scheme_Object *def_error_esc_proc; ROSYM static Scheme_Object *default_display_handler; ROSYM static Scheme_Object *emergency_display_handler; +ROSYM static Scheme_Object *def_exe_yield_proc; READ_ONLY Scheme_Object *scheme_def_exit_proc; READ_ONLY Scheme_Object *scheme_raise_arity_error_proc; @@ -90,6 +91,7 @@ static Scheme_Object *error_escape_handler(int, Scheme_Object *[]); static Scheme_Object *error_display_handler(int, Scheme_Object *[]); static Scheme_Object *error_value_string_handler(int, Scheme_Object *[]); static Scheme_Object *exit_handler(int, Scheme_Object *[]); +static Scheme_Object *exe_yield_handler(int, Scheme_Object *[]); static Scheme_Object *error_print_width(int, Scheme_Object *[]); static Scheme_Object *error_print_context_length(int, Scheme_Object *[]); static Scheme_Object *error_print_srcloc(int, Scheme_Object *[]); @@ -98,6 +100,7 @@ static Scheme_Object *def_error_display_proc(int, Scheme_Object *[]); static Scheme_Object *emergency_error_display_proc(int, Scheme_Object *[]); static Scheme_Object *def_error_value_string_proc(int, Scheme_Object *[]); static Scheme_Object *def_exit_handler_proc(int, Scheme_Object *[]); +static Scheme_Object *default_yield_handler(int, Scheme_Object *[]); static Scheme_Object *log_message(int argc, Scheme_Object *argv[]); static Scheme_Object *log_level_p(int argc, Scheme_Object *argv[]); @@ -570,6 +573,7 @@ void scheme_init_error(Scheme_Env *env) GLOBAL_PARAMETER("error-value->string-handler", error_value_string_handler, MZCONFIG_ERROR_PRINT_VALUE_HANDLER, env); GLOBAL_PARAMETER("error-escape-handler", error_escape_handler, MZCONFIG_ERROR_ESCAPE_HANDLER, env); GLOBAL_PARAMETER("exit-handler", exit_handler, MZCONFIG_EXIT_HANDLER, env); + GLOBAL_PARAMETER("executable-yield-handler", exe_yield_handler, MZCONFIG_EXE_YIELD_HANDLER, env); GLOBAL_PARAMETER("error-print-width", error_print_width, MZCONFIG_ERROR_PRINT_WIDTH, env); GLOBAL_PARAMETER("error-print-context-length", error_print_context_length, MZCONFIG_ERROR_PRINT_CONTEXT_LENGTH, env); GLOBAL_PARAMETER("error-print-source-location", error_print_srcloc, MZCONFIG_ERROR_PRINT_SRCLOC, env); @@ -620,6 +624,11 @@ void scheme_init_error(Scheme_Env *env) } scheme_add_global_constant("prop:arity-string", arity_property, env); + + REGISTER_SO(def_exe_yield_proc); + def_exe_yield_proc = scheme_make_prim_w_arity(default_yield_handler, + "default-executable-yield-handler", + 1, 1); } void scheme_init_logger() @@ -639,6 +648,7 @@ void scheme_init_error_config(void) scheme_set_root_param(MZCONFIG_EXIT_HANDLER, scheme_def_exit_proc); scheme_set_root_param(MZCONFIG_ERROR_DISPLAY_HANDLER, default_display_handler); scheme_set_root_param(MZCONFIG_ERROR_PRINT_VALUE_HANDLER, def_err_val_proc); + scheme_set_root_param(MZCONFIG_EXE_YIELD_HANDLER, def_exe_yield_proc); } void scheme_init_logger_config() { @@ -2569,6 +2579,20 @@ void scheme_immediate_exit(int status) exit(status); } +static Scheme_Object * +exe_yield_handler(int argc, Scheme_Object *argv[]) +{ + return scheme_param_config("exeuctable-yield-handler", + scheme_make_integer(MZCONFIG_EXE_YIELD_HANDLER), + argc, argv, + 1, NULL, NULL, 0); +} + +static Scheme_Object *default_yield_handler(int argc, Scheme_Object **argv) +{ + return scheme_void; +} + /***********************************************************************/ void update_want_level(Scheme_Logger *logger) diff --git a/src/racket/src/schminc.h b/src/racket/src/schminc.h index 91b4d53615..0243738db3 100644 --- a/src/racket/src/schminc.h +++ b/src/racket/src/schminc.h @@ -13,7 +13,7 @@ #define USE_COMPILED_STARTUP 1 -#define EXPECTED_PRIM_COUNT 1014 +#define EXPECTED_PRIM_COUNT 1015 #define EXPECTED_UNSAFE_COUNT 76 #define EXPECTED_FLFXNUM_COUNT 68 #define EXPECTED_FUTURES_COUNT 5 diff --git a/src/racket/src/schvers.h b/src/racket/src/schvers.h index 798f36c8dc..4098b74f6a 100644 --- a/src/racket/src/schvers.h +++ b/src/racket/src/schvers.h @@ -13,11 +13,11 @@ consistently.) */ -#define MZSCHEME_VERSION "5.0.2.1" +#define MZSCHEME_VERSION "5.4.99.1" #define MZSCHEME_VERSION_X 5 -#define MZSCHEME_VERSION_Y 0 -#define MZSCHEME_VERSION_Z 2 +#define MZSCHEME_VERSION_Y 4 +#define MZSCHEME_VERSION_Z 99 #define MZSCHEME_VERSION_W 1 #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y)