Ah, well. Unless magic happens, I choose the Rays, because seriously?

I may have a love for the NL, but forget the Phillies.

Just glad LA got knocked out first so we didn't have to hear about Manny
making it and Boston not.

svn: r12050
This commit is contained in:
Stevie Strickland 2008-10-17 02:08:29 +00:00
commit 8668c6301b
37 changed files with 989 additions and 605 deletions

View File

@ -266,6 +266,7 @@
(define (decompile-lam expr globs stack) (define (decompile-lam expr globs stack)
(match expr (match expr
[(struct closure (lam gen-id)) (decompile-lam lam globs stack)]
[(struct lam (name flags num-params rest? closure-map max-let-depth body)) [(struct lam (name flags num-params rest? closure-map max-let-depth body))
(let ([vars (for/list ([i (in-range num-params)]) (let ([vars (for/list ([i (in-range num-params)])
(gensym (format "arg~a-" i)))] (gensym (format "arg~a-" i)))]

View File

@ -453,7 +453,8 @@
(for ([zo-file source-files]) (for ([zo-file source-files])
(let ([zo-file (path->complete-path zo-file)]) (let ([zo-file (path->complete-path zo-file)])
(let-values ([(base name dir?) (split-path zo-file)]) (let-values ([(base name dir?) (split-path zo-file)])
(parameterize ([current-load-relative-directory base]) (parameterize ([current-load-relative-directory base]
[print-graph #t])
(pretty-print (pretty-print
(decompile (decompile
(call-with-input-file* (call-with-input-file*

View File

@ -306,7 +306,7 @@
;; not sure if it's really unsigned ;; not sure if it's really unsigned
(integer-bytes->integer (read-bytes 4 p) #f #f)) (integer-bytes->integer (read-bytes 4 p) #f #f))
(define-struct cport ([pos #:mutable] orig-port size bytes symtab shared-offsets)) (define-struct cport ([pos #:mutable] orig-port size bytes symtab shared-offsets decoded rns))
(define (cp-getc cp) (define (cp-getc cp)
(begin-with-definitions (begin-with-definitions
@ -426,6 +426,124 @@
(define-struct not-ready ()) (define-struct not-ready ())
;; ----------------------------------------
;; Synatx unmarshaling
(define-form-struct wrapped (datum wraps certs))
(define (decode-stx cp v)
(if (integer? v)
(let-values ([(v2 decoded?) (unmarshal-stx-get cp v)])
(if decoded?
v2
(let ([v2 (decode-stx cp v2)])
(unmarshal-stx-set! cp v v2)
v2)))
(let loop ([v v])
(let-values ([(cert-marks v encoded-wraps)
(match v
[`#((,datum . ,wraps) ,cert-marks) (values cert-marks datum wraps)]
[`(,datum . ,wraps) (values #f datum wraps)]
[else (error 'decode-wraps "bad datum+wrap: ~e" v)])])
(let* ([wraps (decode-wraps cp encoded-wraps)]
[add-wrap (lambda (v) (make-wrapped v wraps cert-marks))])
(cond
[(pair? v)
(if (eq? #t (car v))
;; Share decoded wraps with all nested parts.
(let loop ([v (cdr v)])
(cond
[(pair? v)
(let ploop ([v v])
(cond
[(null? v) null]
[(pair? v) (add-wrap (cons (loop (car v)) (ploop (cdr v))))]
[else (loop v)]))]
[(box? v) (add-wrap (box (loop (unbox v))))]
[(vector? v)
(add-wrap (list->vector (map loop (vector->list v))))]
[(prefab-struct-key v)
=> (lambda (k)
(add-wrap
(apply
make-prefab-struct
k
(map loop (cdr (vector->list (struct->vector v)))))))]
[else (add-wrap v)]))
;; Decode sub-elements that have their own wraps:
(let-values ([(v counter) (if (exact-integer? (car v))
(values (cdr v) (car v))
(values v -1))])
(add-wrap
(let ploop ([v v][counter counter])
(cond
[(null? v) null]
[(or (not (pair? v)) (zero? counter)) (loop v)]
[(pair? v) (cons (loop (car v))
(ploop (cdr v) (sub1 counter)))])))))]
[(box? v) (add-wrap (box (loop (unbox v))))]
[(vector? v)
(add-wrap (list->vector (map loop (vector->list v))))]
[(prefab-struct-key v)
=> (lambda (k)
(add-wrap
(apply
make-prefab-struct
k
(map loop (cdr (vector->list (struct->vector v)))))))]
[else (add-wrap v)]))))))
(define (decode-wraps cp w)
(if (integer? w)
(let-values ([(w2 decoded?) (unmarshal-stx-get cp w)])
(if decoded?
w2
(let ([w2 (decode-wraps cp w2)])
(unmarshal-stx-set! cp w w2)
w2)))
(map (lambda (a)
(let aloop ([a a])
(cond
[(integer? a)
(let-values ([(a2 decoded?) (unmarshal-stx-get cp a)])
(if decoded?
a2
(let ([a2 (aloop a2)])
(unmarshal-stx-set! cp a a2)
a2)))]
[(and (pair? a) (null? (cdr a)) (number? (car a)))
;; a mark
(string->symbol (format "mark~a" (car a)))]
[(vector? a)
`(#%decode-lexical-rename ,a)]
[(pair? a)
`(#%decode-module-rename ,a)]
[(boolean? a)
`(#%top-level-rename ,a)]
[(symbol? a)
'(#%mark-barrier)]
[(box? a)
`(#%phase-shift ,(unbox a))]
[else (error 'decode-wraps "bad wrap element: ~e" a)])))
w)))
(define (unmarshal-stx-get cp pos)
(if (pos . >= . (vector-length (cport-symtab cp)))
(values `(#%bad-index ,pos) #t)
(let ([v (vector-ref (cport-symtab cp) pos)])
(if (not-ready? v)
(let ([save-pos (cport-pos cp)])
(set-cport-pos! cp (vector-ref (cport-shared-offsets cp) (sub1 pos)))
(let ([v (read-compact cp)])
(vector-set! (cport-symtab cp) pos v)
(set-cport-pos! cp save-pos)
(values v #f)))
(values v (vector-ref (cport-decoded cp) pos))))))
(define (unmarshal-stx-set! cp pos v)
(vector-set! (cport-symtab cp) pos v)
(vector-set! (cport-decoded cp) pos #t))
;; ---------------------------------------- ;; ----------------------------------------
;; Main parsing loop ;; Main parsing loop
@ -535,7 +653,7 @@
[(marshalled) (read-marshalled (read-compact-number cp) cp)] [(marshalled) (read-marshalled (read-compact-number cp) cp)]
[(stx) [(stx)
(let ([v (make-reader-graph (read-compact cp))]) (let ([v (make-reader-graph (read-compact cp))])
(make-stx v))] (make-stx (decode-stx cp v)))]
[(local local-unbox) [(local local-unbox)
(let ([c (read-compact-number cp)] (let ([c (read-compact-number cp)]
[unbox? (eq? cpt-tag 'local-unbox)]) [unbox? (eq? cpt-tag 'local-unbox)])
@ -666,7 +784,7 @@
(define symtab (make-vector symtabsize (make-not-ready))) (define symtab (make-vector symtabsize (make-not-ready)))
(define cp (make-cport 0 port size* rst symtab so*)) (define cp (make-cport 0 port size* rst symtab so* (make-vector symtabsize #f) (make-hash)))
(for/list ([i (in-range 1 symtabsize)]) (for/list ([i (in-range 1 symtabsize)])
(when (not-ready? (vector-ref symtab i)) (when (not-ready? (vector-ref symtab i))
(set-cport-pos! cp (vector-ref so* (sub1 i))) (set-cport-pos! cp (vector-ref so* (sub1 i)))

View File

@ -320,7 +320,9 @@
(provide add-header-line!) (provide add-header-line!)
(define (add-header-line! line) (define (add-header-line! line)
(let ([new (list line)] [cur (thread-cell-ref added-lines)]) (let ([new (list line)] [cur (thread-cell-ref added-lines)])
(if cur (append cur new) (thread-cell-set! added-lines new)))) (if cur
(set-box! cur (append (unbox cur) new))
(thread-cell-set! added-lines (box new)))))
(define ((wrap-evaluator eval) expr) (define ((wrap-evaluator eval) expr)
(define unknown "unknown") (define unknown "unknown")
@ -477,7 +479,7 @@
(prefix-line (user-substs user student-line))) (prefix-line (user-substs user student-line)))
(for-each prefix-line/substs extra-lines) (for-each prefix-line/substs extra-lines)
(for-each prefix-line/substs (for-each prefix-line/substs
(or (thread-cell-ref added-lines) '())) (unbox (or (thread-cell-ref added-lines) (box '()))))
(display submission-text)))) (display submission-text))))
(define submission-text (define submission-text
(and create-text? (and create-text?
@ -697,6 +699,15 @@
(error* "your code failed a test: ~e evaluated to ~e, expecting ~e" (error* "your code failed a test: ~e evaluated to ~e, expecting ~e"
(->disp 'expr) (->disp val) (->disp result))))])) (->disp 'expr) (->disp val) (->disp result))))]))
(provide !test/exn)
(define-syntax (!test/exn stx)
(syntax-case stx ()
[(_ test-exp)
#`(with-handlers ([exn:fail? (lambda (exn) #t)])
((submission-eval) `test-exp)
(error* "expected exception on test expression: ~v"
(->disp 'test-exp)))]))
(provide !all-covered) (provide !all-covered)
(define coverage-checked (make-thread-cell #f)) (define coverage-checked (make-thread-cell #f))
(define (!all-covered . proc) (define (!all-covered . proc)

View File

@ -542,10 +542,39 @@
((current-timeout-control) msg)) ((current-timeout-control) msg))
(define (with-watcher w proc) (define (with-watcher w proc)
(let ([session-cust (make-custodian)] (define session-cust (make-custodian))
[session-channel (make-channel)] (define session-channel (make-channel))
[timeout #f] (define timeout #f)
[status-box (box #f)]) (define status-box (box #f))
(define (watch-loop timed-out?)
(cond [(sync/timeout 3 session-thread)
(let* ([status (unbox status-box)]
[status (if status (format " while ~a" status) "")])
(log-line "session killed ~a~a"
(if timed-out? "(timeout) " "(memory)")
status)
(write+flush
w (format "handin terminated due to ~a ~a~a"
(if timed-out? "time limit" "excessive memory use")
"(program doesn't terminate?)"
status))
(close-output-port w)
(channel-put session-channel 'done))]
[(let ([t timeout]) ; grab value to avoid races
(and t ((current-inexact-milliseconds) . > . t)))
;; Shutdown here to get the handin-terminated error
;; message, instead of relying on a timeout at the
;; run-server level
(custodian-shutdown-all session-cust)
(watch-loop #t)]
[else (collect-garbage)
(log-line "running ~a ~a"
(current-memory-use session-cust)
(if no-limit-warning?
"(total)"
(list (current-memory-use orig-custodian)
(current-memory-use))))
(watch-loop #f)]))
(define (timeout-control msg) (define (timeout-control msg)
(if (rational? msg) (if (rational? msg)
(set! timeout (+ (current-inexact-milliseconds) (* 1000 msg))) (set! timeout (+ (current-inexact-milliseconds) (* 1000 msg)))
@ -559,47 +588,16 @@
(with-handlers ([exn:fail:unsupported? (with-handlers ([exn:fail:unsupported?
(lambda (x) (lambda (x)
(set! no-limit-warning? #t) (set! no-limit-warning? #t)
(log-line "WARNING: per-session memory limit not supported by MrEd"))]) (log-line "WARNING: per-session memory limit ~a"
(custodian-limit-memory session-cust "not supported by MrEd"))])
(get-conf 'session-memory-limit) (custodian-limit-memory
session-cust))) session-cust (get-conf 'session-memory-limit) session-cust)))
(let ([watcher (let ([watcher
(parameterize ([current-custodian orig-custodian]) (parameterize ([current-custodian orig-custodian])
(thread (thread
(lambda () (lambda ()
(let ([session-thread (channel-get session-channel)]) (let ([session-thread (channel-get session-channel)])
(let loop ([timed-out? #f]) (watch-loop #f)))))])
(cond
[(sync/timeout 3 session-thread)
(let* ([status (unbox status-box)]
[status (if status
(format " while ~a" status)
"")])
(log-line "session killed ~a~a"
(if timed-out? "(timeout) " "(memory)")
status)
(write+flush
w (format "handin terminated due to ~a (program doesn't terminate?)~a"
(if timed-out? "time limit" "excessive memory use")
status))
(close-output-port w)
(channel-put session-channel 'done))]
[(let ([t timeout]) ; grab value to avoid races
(and t ((current-inexact-milliseconds) . > . t)))
;; Shutdown here to get the handin-terminated error
;; message, instead of relying on a timeout at the
;; run-server level
(custodian-shutdown-all session-cust)
(loop #t)]
[else
(collect-garbage)
(log-line "running ~a ~a"
(current-memory-use session-cust)
(if no-limit-warning?
"(total)"
(list (current-memory-use orig-custodian)
(current-memory-use))))
(loop #f)]))))))])
;; Run proc in a thread under session-cust: ;; Run proc in a thread under session-cust:
(let ([session-thread (let ([session-thread
(parameterize ([current-custodian session-cust] (parameterize ([current-custodian session-cust]
@ -613,7 +611,7 @@
(channel-put session-channel 'done-normal))))]) (channel-put session-channel 'done-normal))))])
(channel-put session-channel session-thread) (channel-put session-channel session-thread)
;; Wait until the proc is done or killed (and kill is reported): ;; Wait until the proc is done or killed (and kill is reported):
(channel-get session-channel))))) (channel-get session-channel))))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

View File

@ -9,18 +9,18 @@
(require scheme/private/define-struct) (require scheme/private/define-struct)
(provide (struct var-info (syntax? exported? id)) (provide (struct var-info (syntax? exported? id))
(struct signature (siginfo vars val-defs stx-defs)) (struct signature (siginfo vars val-defs stx-defs orig-binder))
(rename build-siginfo make-siginfo) (rename build-siginfo make-siginfo)
siginfo-names siginfo-ctime-ids siginfo-rtime-ids siginfo-subtype siginfo-names siginfo-ctime-ids siginfo-rtime-ids siginfo-subtype
(struct signature-form (f)) (struct signature-form (f))
(struct unit-info (unit-id import-sig-ids export-sig-ids)) (struct unit-info (unit-id import-sig-ids export-sig-ids orig-binder))
(struct link-record (linkid tag sigid siginfo)) (struct link-record (linkid tag sigid siginfo))
unprocess-link-record-bind unprocess-link-record-use unprocess-link-record-bind unprocess-link-record-use
set!-trans-extract do-identifier set!-trans-extract do-identifier
process-tagged-import process-tagged-export process-tagged-import process-tagged-export
lookup-signature lookup-def-unit make-id-mapper make-id-mappers sig-names sig-int-names sig-ext-names lookup-signature lookup-def-unit make-id-mapper make-id-mappers sig-names sig-int-names sig-ext-names
map-sig split-requires apply-mac complete-exports complete-imports check-duplicate-subs map-sig split-requires apply-mac complete-exports complete-imports check-duplicate-subs
process-spec process-spec2) process-spec)
(define-syntax (apply-mac stx) (define-syntax (apply-mac stx)
(syntax-case stx () (syntax-case stx ()
@ -101,8 +101,9 @@
;; (make-signature siginfo ;; (make-signature siginfo
;; (listof identifier) ;; (listof identifier)
;; (listof (cons (listof identifier) syntax-object)) ;; (listof (cons (listof identifier) syntax-object))
;; (listof (cons (listof identifier) syntax-object))) ;; (listof (cons (listof identifier) syntax-object))
(define-struct/proc signature (siginfo vars val-defs stx-defs) ;; identifier)
(define-struct/proc signature (siginfo vars val-defs stx-defs orig-binder)
(lambda (_ stx) (lambda (_ stx)
(parameterize ((error-syntax stx)) (parameterize ((error-syntax stx))
(raise-stx-err "illegal use of signature name")))) (raise-stx-err "illegal use of signature name"))))
@ -113,8 +114,8 @@
(parameterize ((error-syntax stx)) (parameterize ((error-syntax stx))
(raise-stx-err "illegal use of signature form")))) (raise-stx-err "illegal use of signature form"))))
;; (make-unit-info identifier (listof (cons symbol identifier)) (listof (cons symbol identifier))) ;; (make-unit-info identifier (listof (cons symbol identifier)) (listof (cons symbol identifier)) identifier)
(define-struct/proc unit-info (unit-id import-sig-ids export-sig-ids deps) (define-struct/proc unit-info (unit-id import-sig-ids export-sig-ids deps orig-binder)
(lambda (struct stx) (lambda (struct stx)
(with-syntax ((u (unit-info-unit-id struct))) (with-syntax ((u (unit-info-unit-id struct)))
(syntax-case stx (set!) (syntax-case stx (set!)
@ -223,13 +224,22 @@
sig))) sig)))
;; do-identifier : identifier (box (cons identifier siginfo)) -> sig ;; do-identifier : identifier (box (cons identifier siginfo)) -> sig
(define (do-identifier spec res) (define (do-identifier spec res bind?)
(let* ((sig (lookup-signature spec)) (let* ((sig (lookup-signature spec))
(vars (signature-vars sig)) (vars (signature-vars sig))
(vals (signature-val-defs sig)) (vals (signature-val-defs sig))
(stxs (signature-stx-defs sig))) (stxs (signature-stx-defs sig))
(delta-introduce (if bind?
(let ([f (make-syntax-delta-introducer
spec
(signature-orig-binder sig))])
(lambda (id) (syntax-local-introduce (f id))))
values)))
(set-box! res (cons spec (signature-siginfo sig))) (set-box! res (cons spec (signature-siginfo sig)))
(map-sig intro-o-shadow (map-sig (lambda (id)
(syntax-local-introduce
(syntax-local-get-shadower
(delta-introduce id))))
syntax-local-introduce syntax-local-introduce
(list (map cons vars vars) (list (map cons vars vars)
(map (map
@ -257,10 +267,6 @@
(define (sig-ext-names sig) (define (sig-ext-names sig)
(map cdr (sig-names sig))) (map cdr (sig-names sig)))
;; intro-o-shadow : identifier -> identifier
(define (intro-o-shadow id)
(syntax-local-introduce (syntax-local-get-shadower id)))
;; map-def : (identifier -> identifier) (syntax-object -> syntax-object) def -> def ;; map-def : (identifier -> identifier) (syntax-object -> syntax-object) def -> def
(define (map-def f g def) (define (map-def f g def)
(cons (map (lambda (x) (cons (map (lambda (x)
@ -297,46 +303,46 @@
;; process-tagged-import/export : syntax-object boolean -> tagged-sig ;; process-tagged-import/export : syntax-object boolean -> tagged-sig
(define (process-tagged-import/export spec import?) (define (process-tagged-import/export spec import? bind?)
(define res (box #f)) (define res (box #f))
(check-tagged-spec-syntax spec import? identifier?) (check-tagged-spec-syntax spec import? identifier?)
(syntax-case spec (tag) (syntax-case spec (tag)
((tag sym spec) ((tag sym spec)
(let ([s (process-import/export #'spec res)]) (let ([s (process-import/export #'spec res bind?)])
(list (cons (syntax-e #'sym) (cdr (unbox res))) (list (cons (syntax-e #'sym) (cdr (unbox res)))
(cons (syntax-e #'sym) (car (unbox res))) (cons (syntax-e #'sym) (car (unbox res)))
s))) s)))
((tag . _) ((tag . _)
(raise-stx-err "expected (tag symbol <import/export-spec>)" spec)) (raise-stx-err "expected (tag symbol <import/export-spec>)" spec))
(_ (let ([s (process-import/export spec res)]) (_ (let ([s (process-import/export spec res bind?)])
(list (cons #f (cdr (unbox res))) (list (cons #f (cdr (unbox res)))
(cons #f (car (unbox res))) (cons #f (car (unbox res)))
s))))) s)))))
;; process-import/export : syntax-object (box (cons identifier) siginfo) -> sig ;; process-import/export : syntax-object (box (cons identifier) siginfo) -> sig
(define (process-import/export spec res) (define (process-import/export spec res bind?)
(syntax-case spec (only except prefix rename) (syntax-case spec (only except prefix rename)
(_ (_
(identifier? spec) (identifier? spec)
(do-identifier spec res)) (do-identifier spec res bind?))
((only sub-spec id ...) ((only sub-spec id ...)
(do-only/except (process-import/export #'sub-spec res) (do-only/except (process-import/export #'sub-spec res bind?)
(syntax->list #'(id ...)) (syntax->list #'(id ...))
(lambda (x) x) (lambda (x) x)
(lambda (id) (lambda (id)
(car (generate-temporaries #`(#,id)))))) (car (generate-temporaries #`(#,id))))))
((except sub-spec id ...) ((except sub-spec id ...)
(do-only/except (process-import/export #'sub-spec res) (do-only/except (process-import/export #'sub-spec res bind?)
(syntax->list #'(id ...)) (syntax->list #'(id ...))
(lambda (id) (lambda (id)
(car (generate-temporaries #`(#,id)))) (car (generate-temporaries #`(#,id))))
(lambda (x) x))) (lambda (x) x)))
((prefix pid sub-spec) ((prefix pid sub-spec)
(do-prefix (process-import/export #'sub-spec res) #'pid)) (do-prefix (process-import/export #'sub-spec res bind?) #'pid))
((rename sub-spec (internal external) ...) ((rename sub-spec (internal external) ...)
(let* ((sig-res (let* ((sig-res
(do-rename (process-import/export #'sub-spec res) (do-rename (process-import/export #'sub-spec res bind?)
#'(internal ...) #'(internal ...)
#'(external ...))) #'(external ...)))
(dup (check-duplicate-identifier (sig-int-names sig-res)))) (dup (check-duplicate-identifier (sig-int-names sig-res))))
@ -347,21 +353,14 @@
sig-res)))) sig-res))))
(define (process-tagged-import spec) (define (process-tagged-import spec)
(process-tagged-import/export spec #t)) (process-tagged-import/export spec #t #t))
(define (process-tagged-export spec) (define (process-tagged-export spec)
(process-tagged-import/export spec #f)) (process-tagged-import/export spec #f #t))
;; process-spec : syntax-object -> sig ;; process-spec : syntax-object -> sig
(define (process-spec spec) (define (process-spec spec)
(check-tagged-spec-syntax spec #f identifier?) (check-tagged-spec-syntax spec #f identifier?)
(process-import/export spec (box #f))) (process-import/export spec (box #f) #t))
;; process-spec2 : syntax-object -> identifier?
(define (process-spec2 spec)
(define b (box #f))
(check-tagged-spec-syntax spec #t identifier?)
(process-import/export spec b)
(car (unbox b)))
; ;; extract-siginfo : (union import-spec export-spec) -> ??? ; ;; extract-siginfo : (union import-spec export-spec) -> ???

View File

@ -221,7 +221,8 @@
(list (cons (list (quote-syntax sid) ...) (list (cons (list (quote-syntax sid) ...)
((syntax-local-certifier) ((syntax-local-certifier)
(quote-syntax sbody))) (quote-syntax sbody)))
...)))))))) ...)
(quote-syntax #,sigid))))))))
(else (else
(syntax-case (car sig-exprs) (define-values define-syntaxes) (syntax-case (car sig-exprs) (define-values define-syntaxes)
(x (x
@ -1274,7 +1275,8 @@
(make-unit-info ((syntax-local-certifier) (quote-syntax u)) (make-unit-info ((syntax-local-certifier) (quote-syntax u))
(list (cons 'itag (quote-syntax isig)) ...) (list (cons 'itag (quote-syntax isig)) ...)
(list (cons 'etag (quote-syntax esig)) ...) (list (cons 'etag (quote-syntax esig)) ...)
(list (cons 'deptag (quote-syntax deptag)) ...)))))))))) (list (cons 'deptag (quote-syntax deptag)) ...)
(quote-syntax name))))))))))
((_) ((_)
(raise-stx-err err-msg)))) (raise-stx-err err-msg))))
@ -1356,9 +1358,12 @@
(define-syntax/err-param (define-values/invoke-unit/infer stx) (define-syntax/err-param (define-values/invoke-unit/infer stx)
(syntax-case stx () (syntax-case stx ()
((_ u) ((_ u)
(let ((ui (lookup-def-unit #'u))) (let* ((ui (lookup-def-unit #'u))
(with-syntax (((sig ...) (map unprocess-tagged-id (unit-info-export-sig-ids ui))) (unprocess (let ([i (make-syntax-delta-introducer #'u (unit-info-orig-binder ui))])
((isig ...) (map unprocess-tagged-id (unit-info-import-sig-ids ui)))) (lambda (p)
(unprocess-tagged-id (cons (car p) (i (cdr p))))))))
(with-syntax (((sig ...) (map unprocess (unit-info-export-sig-ids ui)))
((isig ...) (map unprocess (unit-info-import-sig-ids ui))))
(quasisyntax/loc stx (quasisyntax/loc stx
(define-values/invoke-unit u (import isig ...) (export sig ...)))))) (define-values/invoke-unit u (import isig ...) (export sig ...))))))
((_) ((_)
@ -1437,19 +1442,23 @@
s)) s))
(apply make-link-record l)) (apply make-link-record l))
(define (process-tagged-sigid sid) (define ((process-tagged-sigid introducer) sid)
(make-link-record (car sid) #f (cdr sid) (signature-siginfo (lookup-signature (cdr sid))))) (make-link-record (car sid) #f (introducer (cdr sid)) (signature-siginfo (lookup-signature (cdr sid)))))
(syntax-case stx () (syntax-case stx ()
(((import ...) (((import ...)
(export ...) (export ...)
(((out ...) u l ...) ...)) (((out ...) u l ...) ...))
(let* ([units (map lookup-def-unit (syntax->list #'(u ...)))] (let* ([us (syntax->list #'(u ...))]
[units (map lookup-def-unit us)]
[import-sigs (map process-signature [import-sigs (map process-signature
(syntax->list #'(import ...)))] (syntax->list #'(import ...)))]
[sig-introducers (map (lambda (unit u)
(make-syntax-delta-introducer u (unit-info-orig-binder unit)))
units us)]
[sub-outs [sub-outs
(map (map
(lambda (outs unit) (lambda (outs unit sig-introducer)
(define o (define o
(map (map
(lambda (clause) (lambda (clause)
@ -1457,10 +1466,11 @@
(make-link-record (car c) (cadr c) (cddr c) (make-link-record (car c) (cadr c) (cddr c)
(signature-siginfo (lookup-signature (cddr c))))) (signature-siginfo (lookup-signature (cddr c)))))
(syntax->list outs))) (syntax->list outs)))
(complete-exports (map process-tagged-sigid (unit-info-export-sig-ids unit)) (complete-exports (map (process-tagged-sigid sig-introducer) (unit-info-export-sig-ids unit))
o)) o))
(syntax->list #'((out ...) ...)) (syntax->list #'((out ...) ...))
units)] units
sig-introducers)]
[link-defs (append import-sigs (apply append sub-outs))]) [link-defs (append import-sigs (apply append sub-outs))])
(define lnk-table (make-bound-identifier-mapping)) (define lnk-table (make-bound-identifier-mapping))
@ -1486,7 +1496,7 @@
(let ([sub-ins (let ([sub-ins
(map (map
(lambda (ins unit unit-stx) (lambda (ins unit sig-introducer unit-stx)
(define is (syntax->list ins)) (define is (syntax->list ins))
(define lrs (define lrs
(map (map
@ -1510,12 +1520,13 @@
is) is)
(complete-imports sig-table (complete-imports sig-table
lrs lrs
(map process-tagged-sigid (map (process-tagged-sigid sig-introducer)
(unit-info-import-sig-ids unit)) (unit-info-import-sig-ids unit))
unit-stx)) unit-stx))
(syntax->list #'((l ...) ...)) (syntax->list #'((l ...) ...))
units units
(syntax->list #'(u ...)))] sig-introducers
us)]
[exports [exports
(map (map
(lambda (e) (lambda (e)

View File

@ -1 +1 @@
#lang scheme/base (provide stamp) (define stamp "13oct2008") #lang scheme/base (provide stamp) (define stamp "16oct2008")

View File

@ -467,12 +467,12 @@ it around flattened out.
(define (do-contract-name name/c name/dc list-of-subcontracts fields attrs) (define (do-contract-name name/c name/dc list-of-subcontracts fields attrs)
(cond (cond
[(and (andmap contract? list-of-subcontracts) (not attrs)) [(and (andmap name-pred? list-of-subcontracts) (not attrs))
(apply build-compound-type-name name/c list-of-subcontracts)] (apply build-compound-type-name name/c list-of-subcontracts)]
[else [else
(let ([fields (let ([fields
(map (λ (field ctc) (map (λ (field ctc)
(if (contract? ctc) (if (name-pred? ctc)
(build-compound-type-name field ctc) (build-compound-type-name field ctc)
(build-compound-type-name field '...))) (build-compound-type-name field '...)))
fields fields

View File

@ -143,7 +143,7 @@
;; returns #f if the argument could not be coerced to a contract ;; returns #f if the argument could not be coerced to a contract
(define (coerce-contract/f x) (define (coerce-contract/f x)
(cond (cond
[(contract? x) x] [(proj-pred? x) x]
[(and (procedure? x) (procedure-arity-includes? x 1)) [(and (procedure? x) (procedure-arity-includes? x 1))
(make-predicate-contract (or (object-name x) '???) x)] (make-predicate-contract (or (object-name x) '???) x)]
[(or (symbol? x) (boolean? x) (char? x) (null? x)) (make-eq-contract x)] [(or (symbol? x) (boolean? x) (char? x) (null? x)) (make-eq-contract x)]
@ -363,7 +363,7 @@
(let ([ctc (coerce-contract 'contract-name ctc)]) (let ([ctc (coerce-contract 'contract-name ctc)])
((name-get ctc) ctc))) ((name-get ctc) ctc)))
(define (contract? x) (proj-pred? x)) (define (contract? x) (and (coerce-contract/f x) #t))
(define (contract-proc ctc) ((proj-get ctc) ctc)) (define (contract-proc ctc) ((proj-get ctc) ctc))
(define (check-flat-contract predicate) (coerce-flat-contract 'flat-contract predicate)) (define (check-flat-contract predicate) (coerce-flat-contract 'flat-contract predicate))
@ -381,7 +381,7 @@
'()] '()]
[else (let ([sub (car subs)]) [else (let ([sub (car subs)])
(cond (cond
[(contract? sub) [(name-pred? sub)
(let ([mk-sub-name (contract-name sub)]) (let ([mk-sub-name (contract-name sub)])
`(,mk-sub-name ,@(loop (cdr subs))))] `(,mk-sub-name ,@(loop (cdr subs))))]
[else `(,sub ,@(loop (cdr subs)))]))]))) [else `(,sub ,@(loop (cdr subs)))]))])))

View File

@ -948,17 +948,12 @@ improve method arity mismatch contract violation error messages?
(syntax (make-proj-contract (syntax (make-proj-contract
'(recursive-contract arg) '(recursive-contract arg)
(λ (pos-blame neg-blame src str) (λ (pos-blame neg-blame src str)
(let ([proc (contract-proc arg)]) (let ([ctc (coerce-contract 'recursive-contract arg)])
(let ([proc (contract-proc ctc)])
(λ (val) (λ (val)
((proc pos-blame neg-blame src str) val)))) ((proc pos-blame neg-blame src str) val)))))
#f))])) #f))]))
(define (check-contract ctc)
(unless (contract? ctc)
(error 'recursive-contract "expected a contract, got ~e" ctc))
ctc)
; ;
; ;
; ;

View File

@ -12,7 +12,9 @@
scheme/stxparam scheme/stxparam
scheme/serialize scheme/serialize
setup/main-collects setup/main-collects
(for-syntax scheme/base) (for-syntax scheme/base
syntax/boundmap
syntax/kerncase)
(for-label scheme/base (for-label scheme/base
scheme/class)) scheme/class))
@ -739,13 +741,16 @@
[(_ [[proto result] ...] desc ...) [(_ [[proto result] ...] desc ...)
(defproc* #:mode procedure #:within #f [[proto result] ...] desc ...)] (defproc* #:mode procedure #:within #f [[proto result] ...] desc ...)]
[(_ #:mode m #:within cl [[proto result] ...] desc ...) [(_ #:mode m #:within cl [[proto result] ...] desc ...)
(with-togetherable-scheme-variables
()
([proc proto] ...)
(*defproc 'm (quote-syntax/loc cl) (*defproc 'm (quote-syntax/loc cl)
(list (extract-proc-id proto) ...) (list (extract-proc-id proto) ...)
'[proto ...] '[proto ...]
(list (arg-contracts proto) ...) (list (arg-contracts proto) ...)
(list (arg-defaults proto) ...) (list (arg-defaults proto) ...)
(list (lambda () (result-contract result)) ...) (list (lambda () (result-contract result)) ...)
(lambda () (list desc ...)))])) (lambda () (list desc ...))))]))
(define-syntax defstruct (define-syntax defstruct
(syntax-rules () (syntax-rules ()
[(_ name fields #:mutable #:inspector #f desc ...) [(_ name fields #:mutable #:inspector #f desc ...)
@ -762,10 +767,13 @@
(**defstruct name fields #t #f desc ...)])) (**defstruct name fields #t #f desc ...)]))
(define-syntax-rule (**defstruct name ([field field-contract] ...) immutable? (define-syntax-rule (**defstruct name ([field field-contract] ...) immutable?
transparent? desc ...) transparent? desc ...)
(with-togetherable-scheme-variables
()
()
(*defstruct (quote-syntax/loc name) 'name (*defstruct (quote-syntax/loc name) 'name
'([field field-contract] ...) '([field field-contract] ...)
(list (lambda () (schemeblock0 field-contract)) ...) (list (lambda () (schemeblock0 field-contract)) ...)
immutable? transparent? (lambda () (list desc ...)))) immutable? transparent? (lambda () (list desc ...)))))
(define-syntax (defform*/subs stx) (define-syntax (defform*/subs stx)
(syntax-case stx () (syntax-case stx ()
[(_ #:id defined-id #:literals (lit ...) [spec spec1 ...] [(_ #:id defined-id #:literals (lit ...) [spec spec1 ...]
@ -783,7 +791,11 @@
spec spec
spec)] spec)]
[_ spec])))]) [_ spec])))])
#'(*defforms (quote-syntax/loc defined-id) '(lit ...) #'(with-togetherable-scheme-variables
(lit ...)
([form spec] [form spec1] ...
[non-term (non-term-id non-term-form ...)] ...)
(*defforms (quote-syntax/loc defined-id)
'(spec spec1 ...) '(spec spec1 ...)
(list (lambda (x) (schemeblock0/form new-spec)) (list (lambda (x) (schemeblock0/form new-spec))
(lambda (ignored) (schemeblock0/form spec1)) ...) (lambda (ignored) (schemeblock0/form spec1)) ...)
@ -792,7 +804,7 @@
(lambda () (schemeblock0/form non-term-form)) (lambda () (schemeblock0/form non-term-form))
...) ...)
...) ...)
(lambda () (list desc ...))))] (lambda () (list desc ...)))))]
[(fm #:id id [spec spec1 ...] ([non-term-id non-term-form ...] ...) [(fm #:id id [spec spec1 ...] ([non-term-id non-term-form ...] ...)
desc ...) desc ...)
#'(fm #:id id #:literals () [spec spec1 ...] #'(fm #:id id #:literals () [spec spec1 ...]
@ -839,46 +851,60 @@
(define-syntax (defform/none stx) (define-syntax (defform/none stx)
(syntax-case stx () (syntax-case stx ()
[(_ #:literals (lit ...) spec desc ...) [(_ #:literals (lit ...) spec desc ...)
#'(*defforms #f '(lit ...) #'(with-togetherable-scheme-variables
(lit ...)
([form spec])
(*defforms #f
'(spec) (list (lambda (ignored) (schemeblock0/form spec))) '(spec) (list (lambda (ignored) (schemeblock0/form spec)))
null null null null
(lambda () (list desc ...)))] (lambda () (list desc ...))))]
[(_ spec desc ...) [(_ spec desc ...)
#'(defform/none #:literals () spec desc ...)])) #'(defform/none #:literals () spec desc ...)]))
(define-syntax (defidform stx) (define-syntax (defidform stx)
(syntax-case stx () (syntax-case stx ()
[(_ spec-id desc ...) [(_ spec-id desc ...)
#'(*defforms (quote-syntax/loc spec-id) null #'(with-togetherable-scheme-variables
()
()
(*defforms (quote-syntax/loc spec-id)
'(spec-id) '(spec-id)
(list (lambda (x) (make-omitable-paragraph (list x)))) (list (lambda (x) (make-omitable-paragraph (list x))))
null null
null null
(lambda () (list desc ...)))])) (lambda () (list desc ...))))]))
(define-syntax (defsubform stx) (define-syntax (defsubform stx)
(syntax-case stx () (syntax-case stx ()
[(_ . rest) #'(into-blockquote (defform . rest))])) [(_ . rest) #'(into-blockquote (defform . rest))]))
(define-syntax (defsubform* stx) (define-syntax (defsubform* stx)
(syntax-case stx () (syntax-case stx ()
[(_ . rest) #'(into-blockquote (defform* . rest))])) [(_ . rest) #'(into-blockquote (defform* . rest))]))
(define-syntax specsubform (define-syntax spec?form/subs
(syntax-rules () (syntax-rules ()
[(_ #:literals (lit ...) spec desc ...) [(_ has-kw? #:literals (lit ...) spec ([non-term-id non-term-form ...] ...)
(*specsubform 'spec #f '(lit ...) (lambda () (schemeblock0/form spec))
null null (lambda () (list desc ...)))]
[(_ spec desc ...)
(*specsubform 'spec #f null (lambda () (schemeblock0/form spec))
null null (lambda () (list desc ...)))]))
(define-syntax specsubform/subs
(syntax-rules ()
[(_ #:literals (lit ...) spec ([non-term-id non-term-form ...] ...)
desc ...) desc ...)
(*specsubform 'spec #f '(lit ...) (lambda () (schemeblock0/form spec)) (with-scheme-variables
(lit ...)
([form/maybe (has-kw? spec)]
[non-term (non-term-id non-term-form ...)] ...)
(*specsubform 'spec '(lit ...) (lambda () (schemeblock0/form spec))
'((non-term-id non-term-form ...) ...) '((non-term-id non-term-form ...) ...)
(list (list (lambda () (scheme non-term-id)) (list (list (lambda () (scheme non-term-id))
(lambda () (schemeblock0/form non-term-form)) (lambda () (schemeblock0/form non-term-form))
...) ...)
...) ...)
(lambda () (list desc ...)))] (lambda () (list desc ...))))]))
(define-syntax specsubform
(syntax-rules ()
[(_ #:literals (lit ...) spec desc ...)
(spec?form/subs #f #:literals (lit ...) spec () desc ...)]
[(_ spec desc ...)
(specsubform #:literals () spec desc ...)]))
(define-syntax specsubform/subs
(syntax-rules ()
[(_ #:literals (lit ...) spec ([non-term-id non-term-form ...] ...)
desc ...)
(spec?form/subs #f #:literals (lit ...) spec ([non-term-id non-term-form ...] ...)
desc ...)]
[(_ spec subs desc ...) [(_ spec subs desc ...)
(specsubform/subs #:literals () spec subs desc ...)])) (specsubform/subs #:literals () spec subs desc ...)]))
(define-syntax-rule (specspecsubform spec desc ...) (define-syntax-rule (specspecsubform spec desc ...)
@ -888,37 +914,37 @@
(define-syntax specform (define-syntax specform
(syntax-rules () (syntax-rules ()
[(_ #:literals (lit ...) spec desc ...) [(_ #:literals (lit ...) spec desc ...)
(*specsubform 'spec #t '(lit ...) (lambda () (schemeblock0/form spec)) (spec?form/subs #t #:literals (lit ...) spec () desc ...)]
null null (lambda () (list desc ...)))]
[(_ spec desc ...) [(_ spec desc ...)
(*specsubform 'spec #t null (lambda () (schemeblock0/form spec)) (specform #:literals () spec desc ...)]))
null null (lambda () (list desc ...)))]))
(define-syntax specform/subs (define-syntax specform/subs
(syntax-rules () (syntax-rules ()
[(_ #:literals (lit ...) spec ([non-term-id non-term-form ...] ...) [(_ #:literals (lit ...) spec ([non-term-id non-term-form ...] ...)
desc ...) desc ...)
(*specsubform 'spec #t (spec?form/subs #t #:literals (lit ...) spec ([non-term-id non-term-form ...] ...)
'(lit ...) desc ...)]
(lambda () (schemeblock0/form spec))
'((non-term-id non-term-form ...) ...)
(list (list (lambda () (scheme non-term-id))
(lambda () (schemeblock0/form non-term-form))
...)
...)
(lambda () (list desc ...)))]
[(_ spec ([non-term-id non-term-form ...] ...) desc ...) [(_ spec ([non-term-id non-term-form ...] ...) desc ...)
(specform/subs #:literals () spec ([non-term-id non-term-form ...] ...) (specform/subs #:literals () spec ([non-term-id non-term-form ...] ...)
desc ...)])) desc ...)]))
(define-syntax-rule (specsubform/inline spec desc ...) (define-syntax-rule (specsubform/inline spec desc ...)
(*specsubform 'spec #f null #f null null (lambda () (list desc ...)))) (with-scheme-variables
()
([form/maybe (#f spec)])
(*specsubform 'spec null #f null null (lambda () (list desc ...)))))
(define-syntax-rule (defthing id result desc ...) (define-syntax-rule (defthing id result desc ...)
(with-togetherable-scheme-variables
()
()
(*defthing (list (quote-syntax/loc id)) (list 'id) #f (*defthing (list (quote-syntax/loc id)) (list 'id) #f
(list (schemeblock0 result)) (list (schemeblock0 result))
(lambda () (list desc ...)))) (lambda () (list desc ...)))))
(define-syntax-rule (defthing* ([id result] ...) desc ...) (define-syntax-rule (defthing* ([id result] ...) desc ...)
(with-togetherable-scheme-variables
()
()
(*defthing (list (quote-syntax/loc id) ...) (list 'id ...) #f (*defthing (list (quote-syntax/loc id) ...) (list 'id ...) #f
(list (schemeblock0 result) ...) (list (schemeblock0 result) ...)
(lambda () (list desc ...)))) (lambda () (list desc ...)))))
(define-syntax-rule (defparam id arg contract desc ...) (define-syntax-rule (defparam id arg contract desc ...)
(defproc* ([(id) contract] [(id [arg contract]) void?]) desc ...)) (defproc* ([(id) contract] [(id [arg contract]) void?]) desc ...))
(define-syntax-rule (defparam* id arg in-contract out-contract desc ...) (define-syntax-rule (defparam* id arg in-contract out-contract desc ...)
@ -928,20 +954,26 @@
(define-syntax schemegrammar (define-syntax schemegrammar
(syntax-rules () (syntax-rules ()
[(_ #:literals (lit ...) id clause ...) [(_ #:literals (lit ...) id clause ...)
(with-scheme-variables
(lit ...)
([non-term (id clause ...)])
(*schemegrammar '(lit ...) (*schemegrammar '(lit ...)
'(id clause ...) '(id clause ...)
(lambda () (lambda ()
(list (list (scheme id) (list (list (scheme id)
(schemeblock0/form clause) ...))))] (schemeblock0/form clause) ...)))))]
[(_ id clause ...) (schemegrammar #:literals () id clause ...)])) [(_ id clause ...) (schemegrammar #:literals () id clause ...)]))
(define-syntax schemegrammar* (define-syntax schemegrammar*
(syntax-rules () (syntax-rules ()
[(_ #:literals (lit ...) [id clause ...] ...) [(_ #:literals (lit ...) [id clause ...] ...)
(with-scheme-variables
(lit ...)
([non-term (id clause ...)] ...)
(*schemegrammar '(lit ...) (*schemegrammar '(lit ...)
'(id ... clause ... ...) '(id ... clause ... ...)
(lambda () (lambda ()
(list (list (scheme id) (schemeblock0/form clause) ...) (list (list (scheme id) (schemeblock0/form clause) ...)
...)))] ...))))]
[(_ [id clause ...] ...) [(_ [id clause ...] ...)
(schemegrammar* #:literals () [id clause ...] ...)])) (schemegrammar* #:literals () [id clause ...] ...)]))
(define-syntax-rule (var id) (define-syntax-rule (var id)
@ -949,6 +981,75 @@
(define-syntax-rule (svar id) (define-syntax-rule (svar id)
(*var 'id)) (*var 'id))
(define-syntax (with-togetherable-scheme-variables stx)
(syntax-case stx ()
[(_ . rest)
;; Make it transparent, so deftogether is allowed to pull it apart
(syntax-property
(syntax/loc stx
(with-togetherable-scheme-variables* . rest))
'certify-mode
'transparent)]))
(define-syntax-rule (with-togetherable-scheme-variables* . rest)
(with-scheme-variables . rest))
(define-syntax (with-scheme-variables stx)
(syntax-case stx ()
[(_ lits ([kind s-exp] ...) body)
(let ([ht (make-bound-identifier-mapping)]
[lits (syntax->datum #'lits)])
(for-each (lambda (kind s-exp)
(case (syntax-e kind)
[(proc)
(for-each
(lambda (arg)
(if (identifier? arg)
(unless (or (eq? (syntax-e arg) '...)
(eq? (syntax-e arg) '...+)
(memq (syntax-e arg) lits))
(bound-identifier-mapping-put! ht arg #t))
(syntax-case arg ()
[(kw arg . rest)
(keyword? (syntax-e #'kw))
(bound-identifier-mapping-put! ht #'arg #t)]
[(arg . rest)
(identifier? #'arg)
(bound-identifier-mapping-put! ht #'arg #t)])))
(cdr (syntax->list s-exp)))]
[(form form/maybe non-term)
(let loop ([form (case (syntax-e kind)
[(form) (if (identifier? s-exp)
null
(cdr (syntax-e s-exp)))]
[(form/maybe)
(syntax-case s-exp ()
[(#f form) #'form]
[(#t (id . form)) #'form])]
[(non-term) s-exp])])
(if (identifier? form)
(unless (or (eq? (syntax-e form) '...)
(eq? (syntax-e form) '...+)
(eq? (syntax-e form) '?)
(memq (syntax-e form) lits))
(bound-identifier-mapping-put! ht form #t))
(syntax-case form (unsyntax)
[(unsyntax _) (void)]
[(a . b) (loop #'a) (loop #'b)]
[#(a ...) (loop #'(a ...))]
[_ (void)])))]
[else
(raise-syntax-error
#f
"unknown variable mode"
stx
kind)]))
(syntax->list #'(kind ...))
(syntax->list #'(s-exp ...)))
(with-syntax ([(id ...) (bound-identifier-mapping-map ht (lambda (k v) k))])
#'(parameterize ([current-variable-list '(id ...)])
body)))]))
(define (defthing/proc id contract descs) (define (defthing/proc id contract descs)
(*defthing (list id) (list (syntax-e id)) #f (list contract) (*defthing (list id) (list (syntax-e id)) #f (list contract)
(lambda () descs))) (lambda () descs)))
@ -1009,7 +1110,7 @@
(lambda (render part ri) (lambda (render part ri)
(proc (or (get-exporting-libraries render part ri) null))))) (proc (or (get-exporting-libraries render part ri) null)))))
(define-struct (box-splice splice) (var-list)) (define-struct (box-splice splice) ())
(define (*deftogether boxes body-thunk) (define (*deftogether boxes body-thunk)
(make-splice (make-splice
@ -1029,12 +1130,33 @@
"together" "together"
(table-flowss (car (splice-run box)))))))) (table-flowss (car (splice-run box))))))))
boxes)) boxes))
(parameterize ([current-variable-list (body-thunk))))
(append-map box-splice-var-list boxes)])
(body-thunk)))))
(define-syntax-rule (deftogether (box ...) . body) (define-syntax (deftogether stx)
(*deftogether (list box ...) (lambda () (list . body)))) (syntax-case stx ()
[(_ (def ...) . body)
(with-syntax ([((_ (lit ...) (var ...) decl) ...)
(map (lambda (def)
(let ([exp-def (local-expand
def
'expression
(cons
#'with-togetherable-scheme-variables*
(kernel-form-identifier-list)))])
(syntax-case exp-def (with-togetherable-scheme-variables*)
[(with-togetherable-scheme-variables* lits vars decl)
exp-def]
[_
(raise-syntax-error
#f
"sub-form is not a documentation form that can be combined"
stx
def)])))
(syntax->list #'(def ...)))])
#'(with-togetherable-scheme-variables
(lit ... ...)
(var ... ...)
(*deftogether (list decl ...) (lambda () (list . body)))))]))
(define-struct arg (define-struct arg
(special? kw id optional? starts-optional? ends-optional? num-closers)) (special? kw id optional? starts-optional? ends-optional? num-closers))
@ -1365,7 +1487,6 @@
(define var-list (define var-list
(filter-map (lambda (a) (and (not (arg-special? a)) (arg-id a))) (filter-map (lambda (a) (and (not (arg-special? a)) (arg-id a)))
(append* all-args))) (append* all-args)))
(parameterize ([current-variable-list var-list])
(make-box-splice (make-box-splice
(cons (cons
(make-table (make-table
@ -1379,8 +1500,7 @@
(cons #f (loop (cdr ps) accum))] (cons #f (loop (cdr ps) accum))]
[else (cons #t (loop (cdr ps) [else (cons #t (loop (cdr ps)
(cons (extract-id (car ps)) accum)))])))) (cons (extract-id (car ps)) accum)))]))))
(content-thunk)) (content-thunk))))
var-list)))
(define (make-target-element* inner-make-target-element stx-id content wrappers) (define (make-target-element* inner-make-target-element stx-id content wrappers)
(if (null? wrappers) (if (null? wrappers)
@ -1577,8 +1697,7 @@
(make-flow (list (field-contract))))))))] (make-flow (list (field-contract))))))))]
[else null])) [else null]))
fields field-contracts))) fields field-contracts)))
(content-thunk)) (content-thunk))))
null))
(define (*defthing stx-ids names form? result-contracts content-thunk) (define (*defthing stx-ids names form? result-contracts content-thunk)
(make-box-splice (make-box-splice
@ -1623,24 +1742,12 @@
result-contract result-contract
(make-omitable-paragraph (list result-contract))))))))))) (make-omitable-paragraph (list result-contract)))))))))))
stx-ids names result-contracts)) stx-ids names result-contracts))
(content-thunk)) (content-thunk))))
null))
(define (meta-symbol? s) (memq s '(... ...+ ?))) (define (meta-symbol? s) (memq s '(... ...+ ?)))
(define (*defforms kw-id lits forms form-procs subs sub-procs content-thunk) (define (*defforms kw-id forms form-procs subs sub-procs content-thunk)
(define var-list (parameterize ([current-meta-list '(... ...+)])
(let loop ([form (cons forms subs)])
(cond [(symbol? form)
(if (or (meta-symbol? form)
(and kw-id (eq? form (syntax-e kw-id)))
(memq form lits))
null
(list form))]
[(pair? form) (append (loop (car form)) (loop (cdr form)))]
[else null])))
(parameterize ([current-variable-list var-list]
[current-meta-list '(... ...+)])
(make-box-splice (make-box-splice
(cons (cons
(make-table (make-table
@ -1689,23 +1796,10 @@
(*schemerawgrammars "specgrammar" (*schemerawgrammars "specgrammar"
(map car l) (map car l)
(map cdr l)))))))))) (map cdr l))))))))))
(content-thunk)) (content-thunk)))))
var-list)))
(define (*specsubform form has-kw? lits form-thunk subs sub-procs content-thunk) (define (*specsubform form lits form-thunk subs sub-procs content-thunk)
(parameterize ([current-variable-list (parameterize ([current-meta-list '(... ...+)])
(append (let loop ([form (cons (if has-kw? (cdr form) form)
subs)])
(cond
[(symbol? form) (if (or (meta-symbol? form)
(memq form lits))
null
(list form))]
[(pair? form) (append (loop (car form))
(loop (cdr form)))]
[else null]))
(current-variable-list))]
[current-meta-list '(... ...+)])
(make-blockquote (make-blockquote
"leftindent" "leftindent"
(cons (cons
@ -1754,15 +1848,6 @@
(*schemerawgrammars style (list nonterm) (list (cons clause1 clauses)))) (*schemerawgrammars style (list nonterm) (list (cons clause1 clauses))))
(define (*schemegrammar lits s-expr clauseses-thunk) (define (*schemegrammar lits s-expr clauseses-thunk)
(parameterize ([current-variable-list
(let loop ([form s-expr])
(cond
[(symbol? form) (if (memq form lits)
null
(list form))]
[(pair? form) (append (loop (car form))
(loop (cdr form)))]
[else null]))])
(let ([l (clauseses-thunk)]) (let ([l (clauseses-thunk)])
(*schemerawgrammars #f (*schemerawgrammars #f
(map (lambda (x) (map (lambda (x)
@ -1770,7 +1855,7 @@
(list (hspace 2) (list (hspace 2)
(car x)))) (car x))))
l) l)
(map cdr l))))) (map cdr l))))
(define (*var id) (define (*var id)
(to-element (*var-sym id))) (to-element (*var-sym id)))
@ -2425,16 +2510,22 @@
signature-desc) signature-desc)
(define-syntax-rule (defsignature name (super ...) body ...) (define-syntax-rule (defsignature name (super ...) body ...)
(with-togetherable-scheme-variables
()
()
(*defsignature (quote-syntax name) (*defsignature (quote-syntax name)
(list (quote-syntax super) ...) (list (quote-syntax super) ...)
(lambda () (list body ...)) (lambda () (list body ...))
#t)) #t)))
(define-syntax-rule (defsignature/splice name (super ...) body ...) (define-syntax-rule (defsignature/splice name (super ...) body ...)
(with-togetherable-scheme-variables
()
()
(*defsignature (quote-syntax name) (*defsignature (quote-syntax name)
(list (quote-syntax super) ...) (list (quote-syntax super) ...)
(lambda () (list body ...)) (lambda () (list body ...))
#f)) #f)))
(define-struct sig-desc (in)) (define-struct sig-desc (in))
(define (signature-desc . l) (define (signature-desc . l)

View File

@ -25,7 +25,7 @@ Sometimes, a bitmap object creation fails in a low-level manner. In
[width (integer-in 1 10000)] [width (integer-in 1 10000)]
[height (integer-in 1 10000)]))]{ [height (integer-in 1 10000)]))]{
When @scheme[with] and @scheme[height] are provided: Creates a new When @scheme[width] and @scheme[height] are provided: Creates a new
bitmap. If @scheme[monochrome?] is @scheme[#f], the bitmap matches bitmap. If @scheme[monochrome?] is @scheme[#f], the bitmap matches
the display depth of the screen. The initial content of the bitmap is the display depth of the screen. The initial content of the bitmap is
undefined. undefined.

View File

@ -391,7 +391,7 @@ fast-clause [id fast-seq]
] ]
@schemegrammar[ @schemegrammar[
#:literals [in-range in-naturals in-list in-vector in-string in-bytes stop-before stop-after] #:literals [in-range in-naturals in-list in-vector in-string in-bytes in-value stop-before stop-after]
fast-seq (in-range expr expr) fast-seq (in-range expr expr)
(in-range expr expr expr) (in-range expr expr expr)
(in-naturals) (in-naturals)

View File

@ -144,7 +144,8 @@ such macros, the programmer much use the more general
@scheme[define-syntax] form along with the @scheme[syntax-rules] @scheme[define-syntax] form along with the @scheme[syntax-rules]
transformer form: transformer form:
@specform[(define-syntax id @specform[#:literals (syntax-rules)
(define-syntax id
(syntax-rules (literal-id ...) (syntax-rules (literal-id ...)
[pattern template] [pattern template]
...))] ...))]
@ -260,7 +261,8 @@ clock 3)] expands to @scheme[(put-clock! 3)].
The @scheme[syntax-id-rules] form is like @scheme[syntax-rules], but The @scheme[syntax-id-rules] form is like @scheme[syntax-rules], but
it creates a transformer that acts as an identifier macro: it creates a transformer that acts as an identifier macro:
@specform[(define-syntax id @specform[#:literals (syntax-id-rules)
(define-syntax id
(syntax-id-rules (literal-id ...) (syntax-id-rules (literal-id ...)
[pattern template] [pattern template]
...))] ...))]

View File

@ -310,7 +310,7 @@ checking will not terminate.}
@defform[(flat-murec-contract ([id flat-contract-expr ...] ...) body ...+)]{ @defform[(flat-murec-contract ([id flat-contract-expr ...] ...) body ...+)]{
A generalization of @scheme[flat-rec-contracts] for defining several A generalization of @scheme[flat-rec-contract] for defining several
mutually recursive flat contracts simultaneously. Each @scheme[id] is mutually recursive flat contracts simultaneously. Each @scheme[id] is
visible in the entire @scheme[flat-murec-contract] form, and the visible in the entire @scheme[flat-murec-contract] form, and the
result of the final @scheme[body] is the result of the entire form.} result of the final @scheme[body] is the result of the entire form.}
@ -1045,9 +1045,9 @@ raised by the contract system.}
@defproc[(contract? [v any/c]) boolean?]{ @defproc[(contract? [v any/c]) boolean?]{
Returns @scheme[#t] if its argument is a contract (ie, constructed Returns @scheme[#t] if its argument is a contract (i.e., constructed
with one of the combinators described in this section), @scheme[#f] with one of the combinators described in this section or a value that
otherwise.} can be used as a contract) and @scheme[#f] otherwise.}
@defproc[(flat-contract? [v any/c]) boolean?]{ @defproc[(flat-contract? [v any/c]) boolean?]{

View File

@ -440,6 +440,20 @@ mark}. Multiple applications of the same
@scheme[make-syntax-introducer] result procedure use the same mark, @scheme[make-syntax-introducer] result procedure use the same mark,
and different result procedures use distinct marks.} and different result procedures use distinct marks.}
@defproc[(make-syntax-delta-introducer [ext-stx syntax?] [base-stx syntax?])
(syntax? . -> . syntax?)]{
Produces a procedure that behaves like
@scheme[syntax-local-introduce], but using the @tech{syntax
marks} of @scheme[ext-stx] that are not shared with @scheme[base-stx].
This procedure is useful when @scheme[_m-id] has a transformer binding
that records some @scheme[_orig-id], and a use of @scheme[_m-id]
introduces a binding of @scheme[_orig-id]. In that case, the
@tech{syntax marks} in the use of @scheme[_m-id] since the binding of
@scheme[_m-id] should be transferred to the binding instance of
@scheme[_orig-id], so that it captures uses with the same lexical
context as the use of @scheme[_m-id].}
@defproc[(syntax-local-transforming-module-provides?) boolean?]{ @defproc[(syntax-local-transforming-module-provides?) boolean?]{

View File

@ -91,7 +91,7 @@ time is a portion of the time reported by
@defproc[(time-apply [proc procedure?] @defproc[(time-apply [proc procedure?]
[arg any/c] ...) [lst list?])
(values list? (values list?
exact-integer? exact-integer?
exact-integer? exact-integer?

View File

@ -110,8 +110,12 @@ basic properties of images.
For the composition of images, you must know about @emph{pinholes}. Each For the composition of images, you must know about @emph{pinholes}. Each
image, including primitive ones, come with a pinhole. For images created image, including primitive ones, come with a pinhole. For images created
with the above primitives, the pinhole is at the center of the shape except with the above primitives, the pinhole is at the center of the shape except
for those created from @scheme[line] and @scheme[text], which have pinholes for those created from @scheme[line] and @scheme[text].
at the top left. The pinhole can be moved, of course, and compositions The @scheme[text] function puts the pinhole at the upper left corner of
the image, and @scheme[line] puts the pinhole at the beginning of the line
(meaning that if the first two arguments to @scheme[line] are positive,
the pinhole is also in the upper left corner).
The pinhole can be moved, of course, and compositions
locate pinholes according to their own rules. When in doubt you can always locate pinholes according to their own rules. When in doubt you can always
find out where the pinhole is and place it where convenient. find out where the pinhole is and place it where convenient.

View File

@ -263,7 +263,7 @@
(define (build-test-engine) (define (build-test-engine)
(let ([engine (make-object scheme-test%)]) (let ([engine (make-object scheme-test%)])
(send engine setup-info 'check-require) (send engine setup-info 'test-check)
engine)) engine))
(define (insert-test test-info test) (send test-info add-test test)) (define (insert-test test-info test) (send test-info add-test test))

View File

@ -26,6 +26,27 @@
(set! drscheme-frame df) (set! drscheme-frame df)
(set! src-editor ed)) (set! src-editor ed))
(define (docked?)
(and drscheme-frame
(get-preference 'test:test-window:docked?
(lambda () (put-preferences '(test:test-window:docked?) '(#f)) #f))))
(define/public (report-success)
(when current-rep
(unless current-tab
(set! current-tab (send (send current-rep get-definitions-text) get-tab)))
(unless drscheme-frame
(set! drscheme-frame (send current-rep get-top-level-window)))
(let ([curr-win (and current-tab (send current-tab get-test-window))]
[content (make-object (editor:standard-style-list-mixin text%))])
(send this insert-test-results content test-info src-editor)
(send content lock #t)
(when curr-win (send curr-win update-editor content))
(when current-tab (send current-tab current-test-editor content))
(when (and curr-win (docked?))
(send drscheme-frame display-test-panel content)
(send curr-win show #f)))))
(define/public (display-results) (define/public (display-results)
(let* ([curr-win (and current-tab (send current-tab get-test-window))] (let* ([curr-win (and current-tab (send current-tab get-test-window))]
[window (or curr-win (make-object test-window%))] [window (or curr-win (make-object test-window%))]
@ -48,12 +69,7 @@
(send drscheme-frame deregister-test-window window) (send drscheme-frame deregister-test-window window)
(send current-tab current-test-window #f) (send current-tab current-test-window #f)
(send current-tab current-test-editor #f))))) (send current-tab current-test-editor #f)))))
(if (and drscheme-frame (if (docked?)
(get-preference 'test:test-window:docked?
(lambda ()
(put-preferences '(test:test-window:docked?)
'(#f))
#f)))
(send drscheme-frame display-test-panel content) (send drscheme-frame display-test-panel content)
(send window show #t)))) (send window show #t))))
@ -79,31 +95,33 @@
[(= failed-tests total-tests) "0 tests passed.\n"] [(= failed-tests total-tests) "0 tests passed.\n"]
[else (format "~a of the ~a tests failed.\n\n" failed-tests total-tests)]))))] [else (format "~a of the ~a tests failed.\n\n" failed-tests total-tests)]))))]
[check-outcomes [check-outcomes
(lambda (zero-message) (lambda (zero-message ck)
(send editor insert (send editor insert
(cond (cond
[(zero? total-checks) zero-message] [(zero? total-checks) zero-message]
[(= 1 total-checks) "Ran 1 check.\n"] [(= 1 total-checks) (format "Ran 1 ~a.\n" ck)]
[else (format "Ran ~a checks.\n" total-checks)])) [else (format "Ran ~a ~as.\n" total-checks ck)]))
(when (> total-checks 0) (when (> total-checks 0)
(send editor insert (send editor insert
(cond (cond
[(and (zero? failed-checks) (= 1 total-checks)) [(and (zero? failed-checks) (= 1 total-checks))
"Check passed!\n\n"] (format "The ~a passed!\n\n" ck)]
[(zero? failed-checks) "All checks passed!\n\n"] [(zero? failed-checks) (format "All ~as passed!\n\n" ck)]
[(= failed-checks total-checks) "0 checks passed.\n"] [(= failed-checks total-checks) (format "0 ~as passed.\n" ck)]
[else (format "~a of the ~a checks failed.\n\n" [else (format "~a of the ~a ~as failed.\n\n"
failed-checks total-checks)]))))]) failed-checks ck total-checks)]))))])
(case style (case style
[(test-require) [(test-require)
(test-outcomes "This program must be tested!\n") (test-outcomes "This program must be tested!\n")
(check-outcomes "This program is unchecked!\n")] (check-outcomes "This program is unchecked!\n" "check")]
[(check-require) [(check-require)
(check-outcomes "This program is unchecked!\n")] (check-outcomes "This program is unchecked!\n" "check")]
[(test-basic) [(test-basic)
(test-outcomes "") (test-outcomes "")
(check-outcomes "")] (check-outcomes "" "check")]
[else (check-outcomes "")]) [(test-check)
(check-outcomes "This program must be tested.\n" "test")]
[else (check-outcomes "" "check")])
(unless (and (zero? total-checks) (zero? total-tests)) (unless (and (zero? total-checks) (zero? total-tests))
(inner (display-check-failures (send test-info failed-checks) (inner (display-check-failures (send test-info failed-checks)

View File

@ -75,6 +75,8 @@
(failed-check-src failed-check)) (failed-check-src failed-check))
(printf "~a" "\n"))) (printf "~a" "\n")))
(define/public (report-success) (void))
(define/public (next-line) (printf "~a" "\n\t")) (define/public (next-line) (printf "~a" "\n\t"))
;; make-link: (listof (U string snip%)) src -> void ;; make-link: (listof (U string snip%)) src -> void
@ -130,24 +132,27 @@
(when (test-execute) (when (test-execute)
(unless test-display (setup-display #f #f)) (unless test-display (setup-display #f #f))
(let ([result (send test-info summarize-results)]) (let ([result (send test-info summarize-results)])
(send test-display install-info test-info)
(case result (case result
[(no-tests) (send this display-untested port)] [(no-tests) (send this display-untested port)]
[(all-passed) (send this display-success port)] [(all-passed) (send this display-success port display-event-space)]
[(mixed-results) [(mixed-results)
(send this display-results display-rep display-event-space)])))) (send this display-results display-rep display-event-space)]))))
(define/public (display-success port) (define/public (display-success port event)
(when event
(parameterize ([(dynamic-require 'scheme/gui 'current-eventspace) event])
((dynamic-require 'scheme/gui 'queue-callback)
(lambda () (send test-display report-success)))))
(unless (test-silence) (unless (test-silence)
(fprintf port "All tests passed!~n"))) (fprintf port "All tests passed!~n")))
(define/public (display-untested port) (define/public (display-untested port)
(unless (test-silence) (unless (test-silence)
(fprintf port "This program should be tested.~n"))) (fprintf port "This program should be tested.~n")))
(define/public (display-results rep event-space) (define/public (display-results rep event-space)
(send test-display install-info test-info)
(cond (cond
[(and rep event-space) [(and rep event-space)
(parameterize ([(dynamic-require 'scheme/gui 'current-eventspace) (parameterize ([(dynamic-require 'scheme/gui 'current-eventspace) event-space])
event-space])
((dynamic-require 'scheme/gui 'queue-callback) ((dynamic-require 'scheme/gui 'queue-callback)
(lambda () (send rep display-test-results test-display))))] (lambda () (send rep display-test-results test-display))))]
[event-space [event-space

View File

@ -3942,6 +3942,13 @@
f))]) f))])
((((contract ctc f 'pos 'neg) 1) 2) 3)))) ((((contract ctc f 'pos 'neg) 1) 2) 3))))
(test/spec-passed
'recursive-contract5
'(contract (recursive-contract #f)
#f
'pos
'neg))
; ;
@ -4754,6 +4761,9 @@ so that propagation occurs.
(define-struct s (a b)) (define-struct s (a b))
(struct/c s any/c any/c))) (struct/c s any/c any/c)))
(ctest #t contract? 1)
(ctest #t contract? (-> 1 1))
(test-flat-contract '(and/c number? integer?) 1 3/2) (test-flat-contract '(and/c number? integer?) 1 3/2)
(test-flat-contract '(not/c integer?) #t 1) (test-flat-contract '(not/c integer?) #t 1)

View File

@ -406,7 +406,7 @@
[else (build 'primitive e)])) [else (build 'primitive e)]))
(define: (initial-table [name : atom]) : atom (define: (initial-table [name : atom]) : atom
(error)) (error 'fail))
(define: (*identifier [e : atom] [tbl : table]) : SExp (define: (*identifier [e : atom] [tbl : table]) : SExp
(lookup-in-table e tbl initial-table)) (lookup-in-table e tbl initial-table))
@ -420,10 +420,10 @@
[(#t #f cons car cdr null? eq? atom? zero? add1 sub1 number?) *const] [(#t #f cons car cdr null? eq? atom? zero? add1 sub1 number?) *const]
[else *identifier])])) [else *identifier])]))
(define: (*quote [a : atom] [t : table]) : SExp (error)) (define: (*quote [a : atom] [t : table]) : SExp (error 'fail))
(define: (*lambda [a : atom] [t : table]) : SExp (error)) (define: (*lambda [a : atom] [t : table]) : SExp (error 'fail))
(define: (*cond [a : atom] [t : table]) : SExp (error)) (define: (*cond [a : atom] [t : table]) : SExp (error 'fail))
(define: (*application [a : atom] [t : table]) : SExp (error)) (define: (*application [a : atom] [t : table]) : SExp (error 'fail))
(define: (list->action [e : (list-of SExp)]) : action (define: (list->action [e : (list-of SExp)]) : action
(cond* (cond*

View File

@ -1640,3 +1640,40 @@
(define x 19)) (define x 19))
(test '(3 4 19 18) (test '(3 4 19 18)
(invoke-unit (compound-unit/infer (import) (export) (link u2 u1))))) (invoke-unit (compound-unit/infer (import) (export) (link u2 u1)))))
(define-signature sig^ (u-a))
(define unit@
(unit
(import)
(export sig^)
(define u-a 'zero)))
(define-syntax (use-unit stx)
(syntax-case stx ()
[(_)
#'(let ()
(define-values/invoke-unit unit@ (import) (export sig^))
u-a)]))
(define-syntax (use-unit-badly1 stx)
(syntax-case stx ()
[(_ u-a)
#'(let ()
(define-values/invoke-unit unit@ (import) (export sig^))
u-a)]))
(define-syntax (use-unit-badly2 stx)
(syntax-case stx ()
[(_ sig^)
#'(let ()
(define-values/invoke-unit unit@ (import) (export sig^))
u-a)]))
(test 'zero (use-unit))
(test-runtime-error exn:fail:contract:variable? "context mismatch; no u-a"
(use-unit-badly1 u-a))
(test-runtime-error exn:fail:contract:variable? "context mismatch; no u-a"
(use-unit-badly2 sig^))

View File

@ -211,8 +211,11 @@
(add-type-name-reference #'id) (add-type-name-reference #'id)
;(printf "found a type name ~a~n" #'id) ;(printf "found a type name ~a~n" #'id)
(make-Name #'id)] (make-Name #'id)]
[(eq? '-> (syntax-e #'id))
(tc-error/delayed "Incorrect use of -> type constructor")
Univ]
[else [else
(tc-error/delayed "unbound type name ~a" (syntax-e #'id)) (tc-error/delayed "Unbound type name ~a" (syntax-e #'id))
Univ])] Univ])]
[(All . rest) (eq? (syntax-e #'All) 'All) (tc-error "All: bad syntax")] [(All . rest) (eq? (syntax-e #'All) 'All) (tc-error "All: bad syntax")]

View File

@ -160,24 +160,28 @@ This file defines two sorts of primitives. All of them are provided into any mod
(syntax-property #'arg 'type-ascription #'ty)])) (syntax-property #'arg 'type-ascription #'ty)]))
(define-syntax (: stx) (define-syntax (: stx)
(let ([stx* (define stx*
;; make it possible to add another colon after the id for clarity ;; make it possible to add another colon after the id for clarity
;; and in that case, a `->' on the RHS does not need to be
;; explicitly parenthesized
(syntax-case stx (:) (syntax-case stx (:)
[(: id : x ...)
(ormap (lambda (x) (eq? '-> (syntax-e x))) (syntax->list #'(x ...)))
(syntax/loc stx (: id (x ...)))]
[(: id : . more) (syntax/loc stx (: id . more))] [(: id : . more) (syntax/loc stx (: id . more))]
[_ stx])]) [_ stx]))
(define (err str . sub)
(apply raise-syntax-error '|type declaration| str stx sub))
(syntax-case stx* () (syntax-case stx* ()
[(_ id ty) [(_ id ty)
(identifier? #'id) (identifier? #'id)
(syntax-property (syntax-property (internal (syntax/loc stx (:-internal id ty)))
(internal (syntax/loc stx (:-internal id ty)))
'disappeared-use #'id)] 'disappeared-use #'id)]
[(_ id ty) [(_ id x ...)
(raise-syntax-error '|type declaration| "can only annotate identifiers with types" (case (length (syntax->list #'(x ...)))
stx #'id)] [(1) (err "can only annotate identifiers with types" #'id)]
[(_ _ _ _ . _) [(0) (err "missing type")]
(raise-syntax-error '|type declaration| "too many arguments" stx)] [else (err "bad syntax (multiple types after identifier)")])]))
[(_ _)
(raise-syntax-error '|type declaration| "too few arguments" stx)])))
(define-syntax (inst stx) (define-syntax (inst stx)
(syntax-case stx (:) (syntax-case stx (:)

View File

@ -1,5 +1,5 @@
{ {
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,49,46,50,50,0,0,0,1,0,0,6,0,9,0, static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,49,46,51,50,0,0,0,1,0,0,6,0,9,0,
13,0,26,0,29,0,34,0,41,0,46,0,51,0,58,0,65,0,69,0,78, 13,0,26,0,29,0,34,0,41,0,46,0,51,0,58,0,65,0,69,0,78,
0,84,0,98,0,112,0,115,0,119,0,121,0,132,0,134,0,148,0,155,0, 0,84,0,98,0,112,0,115,0,119,0,121,0,132,0,134,0,148,0,155,0,
177,0,179,0,193,0,253,0,23,1,32,1,41,1,51,1,68,1,107,1,146, 177,0,179,0,193,0,253,0,23,1,32,1,41,1,51,1,68,1,107,1,146,
@ -59,10 +59,10 @@
115,101,116,45,102,105,114,115,116,11,2,24,201,250,22,74,2,20,9,248,22, 115,101,116,45,102,105,114,115,116,11,2,24,201,250,22,74,2,20,9,248,22,
65,203,27,248,22,65,248,22,132,4,23,197,1,28,248,22,71,23,194,2,20, 65,203,27,248,22,65,248,22,132,4,23,197,1,28,248,22,71,23,194,2,20,
15,159,36,35,36,249,22,189,3,80,158,38,35,27,248,22,132,4,248,22,64, 15,159,36,35,36,249,22,189,3,80,158,38,35,27,248,22,132,4,248,22,64,
23,198,2,28,249,22,160,8,62,61,62,248,22,190,3,248,22,88,23,197,2, 23,198,2,28,249,22,161,8,62,61,62,248,22,190,3,248,22,88,23,197,2,
250,22,73,2,20,248,22,73,249,22,73,21,93,2,25,248,22,64,199,250,22, 250,22,73,2,20,248,22,73,249,22,73,21,93,2,25,248,22,64,199,250,22,
74,2,8,249,22,73,2,25,249,22,73,248,22,97,203,2,25,248,22,65,202, 74,2,8,249,22,73,2,25,249,22,73,248,22,97,203,2,25,248,22,65,202,
251,22,73,2,17,28,249,22,160,8,248,22,190,3,248,22,64,23,201,2,64, 251,22,73,2,17,28,249,22,161,8,248,22,190,3,248,22,64,23,201,2,64,
101,108,115,101,10,248,22,64,23,198,2,250,22,74,2,20,9,248,22,65,23, 101,108,115,101,10,248,22,64,23,198,2,250,22,74,2,20,9,248,22,65,23,
201,1,249,22,63,2,8,248,22,65,23,203,1,99,8,31,8,30,8,29,8, 201,1,249,22,63,2,8,248,22,65,23,203,1,99,8,31,8,30,8,29,8,
28,8,27,16,4,11,11,2,18,3,1,7,101,110,118,57,57,56,50,16,4, 28,8,27,16,4,11,11,2,18,3,1,7,101,110,118,57,57,56,50,16,4,
@ -99,7 +99,7 @@
EVAL_ONE_SIZED_STR((char *)expr, 2032); EVAL_ONE_SIZED_STR((char *)expr, 2032);
} }
{ {
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,49,46,50,60,0,0,0,1,0,0,3,0,16,0, static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,49,46,51,60,0,0,0,1,0,0,3,0,16,0,
21,0,38,0,53,0,71,0,87,0,97,0,115,0,135,0,151,0,169,0,200, 21,0,38,0,53,0,71,0,87,0,97,0,115,0,135,0,151,0,169,0,200,
0,229,0,251,0,9,1,15,1,29,1,34,1,44,1,52,1,80,1,112,1, 0,229,0,251,0,9,1,15,1,29,1,34,1,44,1,52,1,80,1,112,1,
157,1,202,1,226,1,9,2,11,2,68,2,158,3,199,3,33,5,137,5,241, 157,1,202,1,226,1,9,2,11,2,68,2,158,3,199,3,33,5,137,5,241,
@ -131,177 +131,177 @@
111,114,32,98,121,116,101,32,115,116,114,105,110,103,6,36,36,99,97,110,110, 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, 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,158,36,50, 114,111,111,116,32,112,97,116,104,58,32,5,0,27,20,14,159,80,158,36,50,
250,80,158,39,51,249,22,27,11,80,158,41,50,22,176,12,10,248,22,153,5, 250,80,158,39,51,249,22,27,11,80,158,41,50,22,177,12,10,248,22,154,5,
23,196,2,28,248,22,150,6,23,194,2,12,87,94,248,22,163,8,23,194,1, 23,196,2,28,248,22,151,6,23,194,2,12,87,94,248,22,164,8,23,194,1,
248,80,159,37,53,36,195,28,248,22,71,23,195,2,9,27,248,22,64,23,196, 248,80,159,37,53,36,195,28,248,22,71,23,195,2,9,27,248,22,64,23,196,
2,27,28,248,22,157,13,23,195,2,23,194,1,28,248,22,156,13,23,195,2, 2,27,28,248,22,158,13,23,195,2,23,194,1,28,248,22,157,13,23,195,2,
249,22,158,13,23,196,1,250,80,158,42,48,248,22,172,13,2,20,11,10,250, 249,22,159,13,23,196,1,250,80,158,42,48,248,22,173,13,2,20,11,10,250,
80,158,40,48,248,22,172,13,2,20,23,197,1,10,28,23,193,2,249,22,63, 80,158,40,48,248,22,173,13,2,20,23,197,1,10,28,23,193,2,249,22,63,
248,22,160,13,249,22,158,13,23,198,1,247,22,173,13,27,248,22,65,23,200, 248,22,161,13,249,22,159,13,23,198,1,247,22,174,13,27,248,22,65,23,200,
1,28,248,22,71,23,194,2,9,27,248,22,64,23,195,2,27,28,248,22,157, 1,28,248,22,71,23,194,2,9,27,248,22,64,23,195,2,27,28,248,22,158,
13,23,195,2,23,194,1,28,248,22,156,13,23,195,2,249,22,158,13,23,196, 13,23,195,2,23,194,1,28,248,22,157,13,23,195,2,249,22,159,13,23,196,
1,250,80,158,47,48,248,22,172,13,2,20,11,10,250,80,158,45,48,248,22, 1,250,80,158,47,48,248,22,173,13,2,20,11,10,250,80,158,45,48,248,22,
172,13,2,20,23,197,1,10,28,23,193,2,249,22,63,248,22,160,13,249,22, 173,13,2,20,23,197,1,10,28,23,193,2,249,22,63,248,22,161,13,249,22,
158,13,23,198,1,247,22,173,13,248,80,159,45,52,36,248,22,65,23,199,1, 159,13,23,198,1,247,22,174,13,248,80,159,45,52,36,248,22,65,23,199,1,
87,94,23,193,1,248,80,159,43,52,36,248,22,65,23,197,1,87,94,23,193, 87,94,23,193,1,248,80,159,43,52,36,248,22,65,23,197,1,87,94,23,193,
1,27,248,22,65,23,198,1,28,248,22,71,23,194,2,9,27,248,22,64,23, 1,27,248,22,65,23,198,1,28,248,22,71,23,194,2,9,27,248,22,64,23,
195,2,27,28,248,22,157,13,23,195,2,23,194,1,28,248,22,156,13,23,195, 195,2,27,28,248,22,158,13,23,195,2,23,194,1,28,248,22,157,13,23,195,
2,249,22,158,13,23,196,1,250,80,158,45,48,248,22,172,13,2,20,11,10, 2,249,22,159,13,23,196,1,250,80,158,45,48,248,22,173,13,2,20,11,10,
250,80,158,43,48,248,22,172,13,2,20,23,197,1,10,28,23,193,2,249,22, 250,80,158,43,48,248,22,173,13,2,20,23,197,1,10,28,23,193,2,249,22,
63,248,22,160,13,249,22,158,13,23,198,1,247,22,173,13,248,80,159,43,52, 63,248,22,161,13,249,22,159,13,23,198,1,247,22,174,13,248,80,159,43,52,
36,248,22,65,23,199,1,248,80,159,41,52,36,248,22,65,196,27,248,22,133, 36,248,22,65,23,199,1,248,80,159,41,52,36,248,22,65,196,27,248,22,134,
13,23,195,2,28,23,193,2,192,87,94,23,193,1,28,248,22,155,6,23,195, 13,23,195,2,28,23,193,2,192,87,94,23,193,1,28,248,22,156,6,23,195,
2,27,248,22,155,13,195,28,192,192,248,22,156,13,195,11,87,94,28,28,248, 2,27,248,22,156,13,195,28,192,192,248,22,157,13,195,11,87,94,28,28,248,
22,134,13,23,195,2,10,27,248,22,133,13,23,196,2,28,23,193,2,192,87, 22,135,13,23,195,2,10,27,248,22,134,13,23,196,2,28,23,193,2,192,87,
94,23,193,1,28,248,22,155,6,23,196,2,27,248,22,155,13,23,197,2,28, 94,23,193,1,28,248,22,156,6,23,196,2,27,248,22,156,13,23,197,2,28,
23,193,2,192,87,94,23,193,1,248,22,156,13,23,197,2,11,12,250,22,190, 23,193,2,192,87,94,23,193,1,248,22,157,13,23,197,2,11,12,250,22,191,
8,76,110,111,114,109,97,108,45,112,97,116,104,45,99,97,115,101,6,42,42, 8,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, 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, 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,13,23,195,2,249,22,160,8,248,22,135,13,23, 23,197,2,28,28,248,22,135,13,23,195,2,249,22,161,8,248,22,136,13,23,
197,2,2,21,249,22,160,8,247,22,174,7,2,21,27,28,248,22,155,6,23, 197,2,2,21,249,22,161,8,247,22,175,7,2,21,27,28,248,22,156,6,23,
196,2,23,195,2,248,22,164,7,248,22,138,13,23,197,2,28,249,22,185,13, 196,2,23,195,2,248,22,165,7,248,22,139,13,23,197,2,28,249,22,186,13,
0,21,35,114,120,34,94,91,92,92,93,91,92,92,93,91,63,93,91,92,92, 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,155,6,195,248,22,141,13,195,194,27,248,22,130, 93,34,23,195,2,28,248,22,156,6,195,248,22,142,13,195,194,27,248,22,131,
7,23,195,1,249,22,142,13,248,22,167,7,250,22,191,13,0,6,35,114,120, 7,23,195,1,249,22,143,13,248,22,168,7,250,22,128,14,0,6,35,114,120,
34,47,34,28,249,22,185,13,0,22,35,114,120,34,91,47,92,92,93,91,46, 34,47,34,28,249,22,186,13,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,191,13, 32,93,43,91,47,92,92,93,42,36,34,23,201,2,23,199,1,250,22,128,14,
0,19,35,114,120,34,91,32,46,93,43,40,91,47,92,92,93,42,41,36,34, 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,158,43,36,2,21,28,248,22,155,6,194,248, 23,202,1,6,2,2,92,49,80,158,43,36,2,21,28,248,22,156,6,194,248,
22,141,13,194,193,87,94,28,27,248,22,133,13,23,196,2,28,23,193,2,192, 22,142,13,194,193,87,94,28,27,248,22,134,13,23,196,2,28,23,193,2,192,
87,94,23,193,1,28,248,22,155,6,23,196,2,27,248,22,155,13,23,197,2, 87,94,23,193,1,28,248,22,156,6,23,196,2,27,248,22,156,13,23,197,2,
28,23,193,2,192,87,94,23,193,1,248,22,156,13,23,197,2,11,12,250,22, 28,23,193,2,192,87,94,23,193,1,248,22,157,13,23,197,2,11,12,250,22,
190,8,23,196,2,2,22,23,197,2,28,248,22,155,13,23,195,2,12,248,22, 191,8,23,196,2,2,22,23,197,2,28,248,22,156,13,23,195,2,12,248,22,
152,11,249,22,161,10,248,22,184,6,250,22,139,7,2,23,23,200,1,23,201, 153,11,249,22,162,10,248,22,185,6,250,22,140,7,2,23,23,200,1,23,201,
1,247,22,23,87,94,28,27,248,22,133,13,23,196,2,28,23,193,2,192,87, 1,247,22,23,87,94,28,27,248,22,134,13,23,196,2,28,23,193,2,192,87,
94,23,193,1,28,248,22,155,6,23,196,2,27,248,22,155,13,23,197,2,28, 94,23,193,1,28,248,22,156,6,23,196,2,27,248,22,156,13,23,197,2,28,
23,193,2,192,87,94,23,193,1,248,22,156,13,23,197,2,11,12,250,22,190, 23,193,2,192,87,94,23,193,1,248,22,157,13,23,197,2,11,12,250,22,191,
8,23,196,2,2,22,23,197,2,28,248,22,155,13,23,195,2,12,248,22,152, 8,23,196,2,2,22,23,197,2,28,248,22,156,13,23,195,2,12,248,22,153,
11,249,22,161,10,248,22,184,6,250,22,139,7,2,23,23,200,1,23,201,1, 11,249,22,162,10,248,22,185,6,250,22,140,7,2,23,23,200,1,23,201,1,
247,22,23,87,94,87,94,28,27,248,22,133,13,23,196,2,28,23,193,2,192, 247,22,23,87,94,87,94,28,27,248,22,134,13,23,196,2,28,23,193,2,192,
87,94,23,193,1,28,248,22,155,6,23,196,2,27,248,22,155,13,23,197,2, 87,94,23,193,1,28,248,22,156,6,23,196,2,27,248,22,156,13,23,197,2,
28,23,193,2,192,87,94,23,193,1,248,22,156,13,23,197,2,11,12,250,22, 28,23,193,2,192,87,94,23,193,1,248,22,157,13,23,197,2,11,12,250,22,
190,8,195,2,22,23,197,2,28,248,22,155,13,23,195,2,12,248,22,152,11, 191,8,195,2,22,23,197,2,28,248,22,156,13,23,195,2,12,248,22,153,11,
249,22,161,10,248,22,184,6,250,22,139,7,2,23,199,23,201,1,247,22,23, 249,22,162,10,248,22,185,6,250,22,140,7,2,23,199,23,201,1,247,22,23,
249,22,3,89,162,8,44,36,49,9,223,2,33,34,196,248,22,152,11,249,22, 249,22,3,89,162,8,44,36,49,9,223,2,33,34,196,248,22,153,11,249,22,
191,10,23,196,1,247,22,23,87,94,250,80,159,38,39,36,2,7,196,197,251, 128,11,23,196,1,247,22,23,87,94,250,80,159,38,39,36,2,7,196,197,251,
80,159,39,41,36,2,7,32,0,89,162,8,44,36,44,9,222,33,36,197,198, 80,159,39,41,36,2,7,32,0,89,162,8,44,36,44,9,222,33,36,197,198,
32,38,89,162,43,41,58,65,99,108,111,111,112,222,33,39,28,248,22,71,23, 32,38,89,162,43,41,58,65,99,108,111,111,112,222,33,39,28,248,22,71,23,
199,2,87,94,23,198,1,248,23,196,1,251,22,139,7,2,24,23,199,1,28, 199,2,87,94,23,198,1,248,23,196,1,251,22,140,7,2,24,23,199,1,28,
248,22,71,23,203,2,87,94,23,202,1,23,201,1,250,22,1,22,151,13,23, 248,22,71,23,203,2,87,94,23,202,1,23,201,1,250,22,1,22,152,13,23,
204,1,23,205,1,23,198,1,27,249,22,151,13,248,22,64,23,202,2,23,199, 204,1,23,205,1,23,198,1,27,249,22,152,13,248,22,64,23,202,2,23,199,
2,28,248,22,146,13,23,194,2,27,250,22,1,22,151,13,23,197,1,23,202, 2,28,248,22,147,13,23,194,2,27,250,22,1,22,152,13,23,197,1,23,202,
2,28,248,22,146,13,23,194,2,192,87,94,23,193,1,27,248,22,65,23,202, 2,28,248,22,147,13,23,194,2,192,87,94,23,193,1,27,248,22,65,23,202,
1,28,248,22,71,23,194,2,87,94,23,193,1,248,23,199,1,251,22,139,7, 1,28,248,22,71,23,194,2,87,94,23,193,1,248,23,199,1,251,22,140,7,
2,24,23,202,1,28,248,22,71,23,206,2,87,94,23,205,1,23,204,1,250, 2,24,23,202,1,28,248,22,71,23,206,2,87,94,23,205,1,23,204,1,250,
22,1,22,151,13,23,207,1,23,208,1,23,201,1,27,249,22,151,13,248,22, 22,1,22,152,13,23,207,1,23,208,1,23,201,1,27,249,22,152,13,248,22,
64,23,197,2,23,202,2,28,248,22,146,13,23,194,2,27,250,22,1,22,151, 64,23,197,2,23,202,2,28,248,22,147,13,23,194,2,27,250,22,1,22,152,
13,23,197,1,204,28,248,22,146,13,193,192,253,2,38,203,204,205,206,23,15, 13,23,197,1,204,28,248,22,147,13,193,192,253,2,38,203,204,205,206,23,15,
248,22,65,201,253,2,38,202,203,204,205,206,248,22,65,200,87,94,23,193,1, 248,22,65,201,253,2,38,202,203,204,205,206,248,22,65,200,87,94,23,193,1,
27,248,22,65,23,201,1,28,248,22,71,23,194,2,87,94,23,193,1,248,23, 27,248,22,65,23,201,1,28,248,22,71,23,194,2,87,94,23,193,1,248,23,
198,1,251,22,139,7,2,24,23,201,1,28,248,22,71,23,205,2,87,94,23, 198,1,251,22,140,7,2,24,23,201,1,28,248,22,71,23,205,2,87,94,23,
204,1,23,203,1,250,22,1,22,151,13,23,206,1,23,207,1,23,200,1,27, 204,1,23,203,1,250,22,1,22,152,13,23,206,1,23,207,1,23,200,1,27,
249,22,151,13,248,22,64,23,197,2,23,201,2,28,248,22,146,13,23,194,2, 249,22,152,13,248,22,64,23,197,2,23,201,2,28,248,22,147,13,23,194,2,
27,250,22,1,22,151,13,23,197,1,203,28,248,22,146,13,193,192,253,2,38, 27,250,22,1,22,152,13,23,197,1,203,28,248,22,147,13,193,192,253,2,38,
202,203,204,205,206,248,22,65,201,253,2,38,201,202,203,204,205,248,22,65,200, 202,203,204,205,206,248,22,65,201,253,2,38,201,202,203,204,205,248,22,65,200,
27,247,22,174,13,253,2,38,198,199,200,201,202,198,87,95,28,28,248,22,134, 27,247,22,175,13,253,2,38,198,199,200,201,202,198,87,95,28,28,248,22,135,
13,23,194,2,10,27,248,22,133,13,23,195,2,28,23,193,2,192,87,94,23, 13,23,194,2,10,27,248,22,134,13,23,195,2,28,23,193,2,192,87,94,23,
193,1,28,248,22,155,6,23,195,2,27,248,22,155,13,23,196,2,28,23,193, 193,1,28,248,22,156,6,23,195,2,27,248,22,156,13,23,196,2,28,23,193,
2,192,87,94,23,193,1,248,22,156,13,23,196,2,11,12,252,22,190,8,23, 2,192,87,94,23,193,1,248,22,157,13,23,196,2,11,12,252,22,191,8,23,
200,2,2,25,35,23,198,2,23,199,2,28,28,248,22,155,6,23,195,2,10, 200,2,2,25,35,23,198,2,23,199,2,28,28,248,22,156,6,23,195,2,10,
248,22,143,7,23,195,2,87,94,23,194,1,12,252,22,190,8,23,200,2,2, 248,22,144,7,23,195,2,87,94,23,194,1,12,252,22,191,8,23,200,2,2,
26,36,23,198,2,23,199,1,91,159,38,11,90,161,38,35,11,248,22,154,13, 26,36,23,198,2,23,199,1,91,159,38,11,90,161,38,35,11,248,22,155,13,
23,197,2,87,94,23,195,1,87,94,28,192,12,250,22,191,8,23,201,1,2, 23,197,2,87,94,23,195,1,87,94,28,192,12,250,22,128,9,23,201,1,2,
27,23,199,1,249,22,7,194,195,91,159,37,11,90,161,37,35,11,87,95,28, 27,23,199,1,249,22,7,194,195,91,159,37,11,90,161,37,35,11,87,95,28,
28,248,22,134,13,23,196,2,10,27,248,22,133,13,23,197,2,28,23,193,2, 28,248,22,135,13,23,196,2,10,27,248,22,134,13,23,197,2,28,23,193,2,
192,87,94,23,193,1,28,248,22,155,6,23,197,2,27,248,22,155,13,23,198, 192,87,94,23,193,1,28,248,22,156,6,23,197,2,27,248,22,156,13,23,198,
2,28,23,193,2,192,87,94,23,193,1,248,22,156,13,23,198,2,11,12,252, 2,28,23,193,2,192,87,94,23,193,1,248,22,157,13,23,198,2,11,12,252,
22,190,8,2,10,2,25,35,23,200,2,23,201,2,28,28,248,22,155,6,23, 22,191,8,2,10,2,25,35,23,200,2,23,201,2,28,28,248,22,156,6,23,
197,2,10,248,22,143,7,23,197,2,12,252,22,190,8,2,10,2,26,36,23, 197,2,10,248,22,144,7,23,197,2,12,252,22,191,8,2,10,2,26,36,23,
200,2,23,201,2,91,159,38,11,90,161,38,35,11,248,22,154,13,23,199,2, 200,2,23,201,2,91,159,38,11,90,161,38,35,11,248,22,155,13,23,199,2,
87,94,23,195,1,87,94,28,23,193,2,12,250,22,191,8,2,10,2,27,23, 87,94,23,195,1,87,94,28,23,193,2,12,250,22,128,9,2,10,2,27,23,
201,2,249,22,7,23,195,1,23,196,1,27,249,22,143,13,250,22,190,13,0, 201,2,249,22,7,23,195,1,23,196,1,27,249,22,144,13,250,22,191,13,0,
18,35,114,120,35,34,40,91,46,93,91,94,46,93,42,124,41,36,34,248,22, 18,35,114,120,35,34,40,91,46,93,91,94,46,93,42,124,41,36,34,248,22,
139,13,23,201,1,28,248,22,155,6,23,203,2,249,22,167,7,23,204,1,8, 140,13,23,201,1,28,248,22,156,6,23,203,2,249,22,168,7,23,204,1,8,
63,23,202,1,28,248,22,134,13,23,199,2,248,22,135,13,23,199,1,87,94, 63,23,202,1,28,248,22,135,13,23,199,2,248,22,136,13,23,199,1,87,94,
23,198,1,247,22,136,13,28,248,22,133,13,194,249,22,151,13,195,194,192,91, 23,198,1,247,22,137,13,28,248,22,134,13,194,249,22,152,13,195,194,192,91,
159,37,11,90,161,37,35,11,87,95,28,28,248,22,134,13,23,196,2,10,27, 159,37,11,90,161,37,35,11,87,95,28,28,248,22,135,13,23,196,2,10,27,
248,22,133,13,23,197,2,28,23,193,2,192,87,94,23,193,1,28,248,22,155, 248,22,134,13,23,197,2,28,23,193,2,192,87,94,23,193,1,28,248,22,156,
6,23,197,2,27,248,22,155,13,23,198,2,28,23,193,2,192,87,94,23,193, 6,23,197,2,27,248,22,156,13,23,198,2,28,23,193,2,192,87,94,23,193,
1,248,22,156,13,23,198,2,11,12,252,22,190,8,2,11,2,25,35,23,200, 1,248,22,157,13,23,198,2,11,12,252,22,191,8,2,11,2,25,35,23,200,
2,23,201,2,28,28,248,22,155,6,23,197,2,10,248,22,143,7,23,197,2, 2,23,201,2,28,28,248,22,156,6,23,197,2,10,248,22,144,7,23,197,2,
12,252,22,190,8,2,11,2,26,36,23,200,2,23,201,2,91,159,38,11,90, 12,252,22,191,8,2,11,2,26,36,23,200,2,23,201,2,91,159,38,11,90,
161,38,35,11,248,22,154,13,23,199,2,87,94,23,195,1,87,94,28,23,193, 161,38,35,11,248,22,155,13,23,199,2,87,94,23,195,1,87,94,28,23,193,
2,12,250,22,191,8,2,11,2,27,23,201,2,249,22,7,23,195,1,23,196, 2,12,250,22,128,9,2,11,2,27,23,201,2,249,22,7,23,195,1,23,196,
1,27,249,22,143,13,249,22,153,7,250,22,191,13,0,9,35,114,120,35,34, 1,27,249,22,144,13,249,22,154,7,250,22,128,14,0,9,35,114,120,35,34,
91,46,93,34,248,22,139,13,23,203,1,6,1,1,95,28,248,22,155,6,23, 91,46,93,34,248,22,140,13,23,203,1,6,1,1,95,28,248,22,156,6,23,
202,2,249,22,167,7,23,203,1,8,63,23,201,1,28,248,22,134,13,23,199, 202,2,249,22,168,7,23,203,1,8,63,23,201,1,28,248,22,135,13,23,199,
2,248,22,135,13,23,199,1,87,94,23,198,1,247,22,136,13,28,248,22,133, 2,248,22,136,13,23,199,1,87,94,23,198,1,247,22,137,13,28,248,22,134,
13,194,249,22,151,13,195,194,192,249,247,22,186,4,194,11,249,80,158,37,46, 13,194,249,22,152,13,195,194,192,249,247,22,187,4,194,11,249,80,158,37,46,
9,9,249,80,158,37,46,195,9,27,247,22,176,13,249,80,158,38,47,28,23, 9,9,249,80,158,37,46,195,9,27,247,22,177,13,249,80,158,38,47,28,23,
195,2,27,248,22,172,7,6,11,11,80,76,84,67,79,76,76,69,67,84,83, 195,2,27,248,22,173,7,6,11,11,80,76,84,67,79,76,76,69,67,84,83,
28,192,192,6,0,0,6,0,0,27,28,23,196,1,250,22,151,13,248,22,172, 28,192,192,6,0,0,6,0,0,27,28,23,196,1,250,22,152,13,248,22,173,
13,69,97,100,100,111,110,45,100,105,114,247,22,170,7,6,8,8,99,111,108, 13,69,97,100,100,111,110,45,100,105,114,247,22,171,7,6,8,8,99,111,108,
108,101,99,116,115,11,27,248,80,159,41,52,36,250,22,77,23,203,1,248,22, 108,101,99,116,115,11,27,248,80,159,41,52,36,250,22,77,23,203,1,248,22,
73,248,22,172,13,72,99,111,108,108,101,99,116,115,45,100,105,114,23,204,1, 73,248,22,173,13,72,99,111,108,108,101,99,116,115,45,100,105,114,23,204,1,
28,23,194,2,249,22,63,23,196,1,23,195,1,192,32,48,89,162,8,44,38, 28,23,194,2,249,22,63,23,196,1,23,195,1,192,32,48,89,162,8,44,38,
54,2,19,222,33,49,27,249,22,183,13,23,197,2,23,198,2,28,23,193,2, 54,2,19,222,33,49,27,249,22,184,13,23,197,2,23,198,2,28,23,193,2,
87,94,23,196,1,27,248,22,88,23,195,2,27,27,248,22,97,23,197,1,27, 87,94,23,196,1,27,248,22,88,23,195,2,27,27,248,22,97,23,197,1,27,
249,22,183,13,23,201,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248, 249,22,184,13,23,201,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,
22,88,23,195,2,27,250,2,48,23,203,2,23,204,1,248,22,97,23,199,1, 22,88,23,195,2,27,250,2,48,23,203,2,23,204,1,248,22,97,23,199,1,
28,249,22,149,7,23,196,2,2,28,249,22,77,23,202,2,194,249,22,63,248, 28,249,22,150,7,23,196,2,2,28,249,22,77,23,202,2,194,249,22,63,248,
22,142,13,23,197,1,23,195,1,87,95,23,199,1,23,193,1,28,249,22,149, 22,143,13,23,197,1,23,195,1,87,95,23,199,1,23,193,1,28,249,22,150,
7,23,196,2,2,28,249,22,77,23,200,2,9,249,22,63,248,22,142,13,23, 7,23,196,2,2,28,249,22,77,23,200,2,9,249,22,63,248,22,143,13,23,
197,1,9,28,249,22,149,7,23,196,2,2,28,249,22,77,197,194,87,94,23, 197,1,9,28,249,22,150,7,23,196,2,2,28,249,22,77,197,194,87,94,23,
196,1,249,22,63,248,22,142,13,23,197,1,194,87,94,23,193,1,28,249,22, 196,1,249,22,63,248,22,143,13,23,197,1,194,87,94,23,193,1,28,249,22,
149,7,23,198,2,2,28,249,22,77,195,9,87,94,23,194,1,249,22,63,248, 150,7,23,198,2,2,28,249,22,77,195,9,87,94,23,194,1,249,22,63,248,
22,142,13,23,199,1,9,87,95,28,28,248,22,143,7,194,10,248,22,155,6, 22,143,13,23,199,1,9,87,95,28,28,248,22,144,7,194,10,248,22,156,6,
194,12,250,22,190,8,2,14,6,21,21,98,121,116,101,32,115,116,114,105,110, 194,12,250,22,191,8,2,14,6,21,21,98,121,116,101,32,115,116,114,105,110,
103,32,111,114,32,115,116,114,105,110,103,196,28,28,248,22,72,195,249,22,4, 103,32,111,114,32,115,116,114,105,110,103,196,28,28,248,22,72,195,249,22,4,
22,133,13,196,11,12,250,22,190,8,2,14,6,13,13,108,105,115,116,32,111, 22,134,13,196,11,12,250,22,191,8,2,14,6,13,13,108,105,115,116,32,111,
102,32,112,97,116,104,115,197,250,2,48,197,195,28,248,22,155,6,197,248,22, 102,32,112,97,116,104,115,197,250,2,48,197,195,28,248,22,156,6,197,248,22,
166,7,197,196,32,51,89,162,8,44,39,57,2,19,222,33,54,32,52,89,162, 167,7,197,196,32,51,89,162,8,44,39,57,2,19,222,33,54,32,52,89,162,
8,44,38,54,70,102,111,117,110,100,45,101,120,101,99,222,33,53,28,23,193, 8,44,38,54,70,102,111,117,110,100,45,101,120,101,99,222,33,53,28,23,193,
2,91,159,38,11,90,161,38,35,11,248,22,154,13,23,199,2,87,95,23,195, 2,91,159,38,11,90,161,38,35,11,248,22,155,13,23,199,2,87,95,23,195,
1,23,194,1,27,28,23,198,2,27,248,22,159,13,23,201,2,28,249,22,162, 1,23,194,1,27,28,23,198,2,27,248,22,160,13,23,201,2,28,249,22,163,
8,23,195,2,23,202,2,11,28,248,22,155,13,23,194,2,250,2,52,23,201, 8,23,195,2,23,202,2,11,28,248,22,156,13,23,194,2,250,2,52,23,201,
2,23,202,2,249,22,151,13,23,200,2,23,198,1,250,2,52,23,201,2,23, 2,23,202,2,249,22,152,13,23,200,2,23,198,1,250,2,52,23,201,2,23,
202,2,23,196,1,11,28,23,193,2,192,87,94,23,193,1,27,28,248,22,133, 202,2,23,196,1,11,28,23,193,2,192,87,94,23,193,1,27,28,248,22,134,
13,23,196,2,27,249,22,151,13,23,198,2,23,201,2,28,28,248,22,146,13, 13,23,196,2,27,249,22,152,13,23,198,2,23,201,2,28,28,248,22,147,13,
193,10,248,22,145,13,193,192,11,11,28,23,193,2,192,87,94,23,193,1,28, 193,10,248,22,146,13,193,192,11,11,28,23,193,2,192,87,94,23,193,1,28,
23,199,2,11,27,248,22,159,13,23,202,2,28,249,22,162,8,23,195,2,23, 23,199,2,11,27,248,22,160,13,23,202,2,28,249,22,163,8,23,195,2,23,
203,1,11,28,248,22,155,13,23,194,2,250,2,52,23,202,1,23,203,1,249, 203,1,11,28,248,22,156,13,23,194,2,250,2,52,23,202,1,23,203,1,249,
22,151,13,23,201,1,23,198,1,250,2,52,201,202,195,194,28,248,22,71,23, 22,152,13,23,201,1,23,198,1,250,2,52,201,202,195,194,28,248,22,71,23,
197,2,11,27,248,22,158,13,248,22,64,23,199,2,27,249,22,151,13,23,196, 197,2,11,27,248,22,159,13,248,22,64,23,199,2,27,249,22,152,13,23,196,
1,23,197,2,28,248,22,145,13,23,194,2,250,2,52,198,199,195,87,94,23, 1,23,197,2,28,248,22,146,13,23,194,2,250,2,52,198,199,195,87,94,23,
193,1,27,248,22,65,23,200,1,28,248,22,71,23,194,2,11,27,248,22,158, 193,1,27,248,22,65,23,200,1,28,248,22,71,23,194,2,11,27,248,22,159,
13,248,22,64,23,196,2,27,249,22,151,13,23,196,1,23,200,2,28,248,22, 13,248,22,64,23,196,2,27,249,22,152,13,23,196,1,23,200,2,28,248,22,
145,13,23,194,2,250,2,52,201,202,195,87,94,23,193,1,27,248,22,65,23, 146,13,23,194,2,250,2,52,201,202,195,87,94,23,193,1,27,248,22,65,23,
197,1,28,248,22,71,23,194,2,11,27,248,22,158,13,248,22,64,195,27,249, 197,1,28,248,22,71,23,194,2,11,27,248,22,159,13,248,22,64,195,27,249,
22,151,13,23,196,1,202,28,248,22,145,13,193,250,2,52,204,205,195,251,2, 22,152,13,23,196,1,202,28,248,22,146,13,193,250,2,52,204,205,195,251,2,
51,204,205,206,248,22,65,199,87,95,28,27,248,22,133,13,23,196,2,28,23, 51,204,205,206,248,22,65,199,87,95,28,27,248,22,134,13,23,196,2,28,23,
193,2,192,87,94,23,193,1,28,248,22,155,6,23,196,2,27,248,22,155,13, 193,2,192,87,94,23,193,1,28,248,22,156,6,23,196,2,27,248,22,156,13,
23,197,2,28,23,193,2,192,87,94,23,193,1,248,22,156,13,23,197,2,11, 23,197,2,28,23,193,2,192,87,94,23,193,1,248,22,157,13,23,197,2,11,
12,250,22,190,8,2,15,6,25,25,112,97,116,104,32,111,114,32,115,116,114, 12,250,22,191,8,2,15,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, 105,110,103,32,40,115,97,110,115,32,110,117,108,41,23,197,2,28,28,23,195,
2,28,27,248,22,133,13,23,197,2,28,23,193,2,192,87,94,23,193,1,28, 2,28,27,248,22,134,13,23,197,2,28,23,193,2,192,87,94,23,193,1,28,
248,22,155,6,23,197,2,27,248,22,155,13,23,198,2,28,23,193,2,192,87, 248,22,156,6,23,197,2,27,248,22,156,13,23,198,2,28,23,193,2,192,87,
94,23,193,1,248,22,156,13,23,198,2,11,248,22,155,13,23,196,2,11,10, 94,23,193,1,248,22,157,13,23,198,2,11,248,22,156,13,23,196,2,11,10,
12,250,22,190,8,2,15,6,29,29,35,102,32,111,114,32,114,101,108,97,116, 12,250,22,191,8,2,15,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, 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,13,23,195,2,91,159,38,11,90,161,38,35,11,248,22,154, 28,28,248,22,156,13,23,195,2,91,159,38,11,90,161,38,35,11,248,22,155,
13,23,198,2,249,22,160,8,194,68,114,101,108,97,116,105,118,101,11,27,248, 13,23,198,2,249,22,161,8,194,68,114,101,108,97,116,105,118,101,11,27,248,
22,172,7,6,4,4,80,65,84,72,251,2,51,23,199,1,23,200,1,23,201, 22,173,7,6,4,4,80,65,84,72,251,2,51,23,199,1,23,200,1,23,201,
1,28,23,197,2,27,249,80,158,43,47,23,200,1,9,28,249,22,160,8,247, 1,28,23,197,2,27,249,80,158,43,47,23,200,1,9,28,249,22,161,8,247,
22,174,7,2,21,249,22,63,248,22,142,13,5,1,46,23,195,1,192,9,27, 22,175,7,2,21,249,22,63,248,22,143,13,5,1,46,23,195,1,192,9,27,
248,22,158,13,23,196,1,28,248,22,145,13,193,250,2,52,198,199,195,11,250, 248,22,159,13,23,196,1,28,248,22,146,13,193,250,2,52,198,199,195,11,250,
80,158,38,48,196,197,11,250,80,158,38,48,196,11,11,87,94,249,22,146,6, 80,158,38,48,196,197,11,250,80,158,38,48,196,11,11,87,94,249,22,147,6,
247,22,182,4,195,248,22,172,5,249,22,169,3,35,249,22,153,3,197,198,27, 247,22,183,4,195,248,22,173,5,249,22,169,3,35,249,22,153,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, 28,23,197,2,87,95,23,196,1,23,195,1,23,197,1,87,94,23,197,1,27,
248,22,172,13,2,20,27,249,80,158,40,48,23,196,1,11,27,27,248,22,172, 248,22,173,13,2,20,27,249,80,158,40,48,23,196,1,11,27,27,248,22,172,
3,23,200,1,28,192,192,35,27,27,248,22,172,3,23,202,1,28,192,192,35, 3,23,200,1,28,192,192,35,27,27,248,22,172,3,23,202,1,28,192,192,35,
249,22,149,5,23,197,1,83,158,39,20,97,95,89,162,8,44,35,47,9,224, 249,22,150,5,23,197,1,83,158,39,20,97,95,89,162,8,44,35,47,9,224,
3,2,33,58,23,195,1,23,196,1,27,248,22,134,5,23,195,1,248,80,159, 3,2,33,58,23,195,1,23,196,1,27,248,22,135,5,23,195,1,248,80,159,
38,53,36,193,159,35,20,103,159,35,16,1,65,98,101,103,105,110,16,0,83, 38,53,36,193,159,35,20,103,159,35,16,1,65,98,101,103,105,110,16,0,83,
158,41,20,100,138,67,35,37,117,116,105,108,115,2,1,11,11,10,10,42,80, 158,41,20,100,138,67,35,37,117,116,105,108,115,2,1,11,11,10,10,42,80,
158,35,35,20,103,159,37,16,17,30,2,1,2,2,193,30,2,1,2,3,193, 158,35,35,20,103,159,37,16,17,30,2,1,2,2,193,30,2,1,2,3,193,
@ -319,7 +319,7 @@
0,16,0,16,0,35,35,16,0,16,17,83,158,35,16,2,89,162,43,36,48, 0,16,0,16,0,35,35,16,0,16,17,83,158,35,16,2,89,162,43,36,48,
2,19,223,0,33,29,80,159,35,53,36,83,158,35,16,2,89,162,8,44,36, 2,19,223,0,33,29,80,159,35,53,36,83,158,35,16,2,89,162,8,44,36,
55,2,19,223,0,33,30,80,159,35,52,36,83,158,35,16,2,32,0,89,162, 55,2,19,223,0,33,30,80,159,35,52,36,83,158,35,16,2,32,0,89,162,
43,36,44,2,2,222,33,31,80,159,35,35,36,83,158,35,16,2,249,22,157, 43,36,44,2,2,222,33,31,80,159,35,35,36,83,158,35,16,2,249,22,158,
6,7,92,7,92,80,159,35,36,36,83,158,35,16,2,89,162,43,36,53,2, 6,7,92,7,92,80,159,35,36,36,83,158,35,16,2,89,162,43,36,53,2,
4,223,0,33,32,80,159,35,37,36,83,158,35,16,2,32,0,89,162,8,44, 4,223,0,33,32,80,159,35,37,36,83,158,35,16,2,32,0,89,162,8,44,
37,49,2,5,222,33,33,80,159,35,38,36,83,158,35,16,2,32,0,89,162, 37,49,2,5,222,33,33,80,159,35,38,36,83,158,35,16,2,32,0,89,162,
@ -332,8 +332,8 @@
35,16,2,32,0,89,162,43,36,43,2,12,222,33,44,80,159,35,45,36,83, 35,16,2,32,0,89,162,43,36,43,2,12,222,33,44,80,159,35,45,36,83,
158,35,16,2,83,158,38,20,96,96,2,13,89,162,43,35,43,9,223,0,33, 158,35,16,2,83,158,38,20,96,96,2,13,89,162,43,35,43,9,223,0,33,
45,89,162,43,36,44,9,223,0,33,46,89,162,43,37,54,9,223,0,33,47, 45,89,162,43,36,44,9,223,0,33,46,89,162,43,37,54,9,223,0,33,47,
80,159,35,46,36,83,158,35,16,2,27,248,22,179,13,248,22,166,7,27,28, 80,159,35,46,36,83,158,35,16,2,27,248,22,180,13,248,22,167,7,27,28,
249,22,160,8,247,22,174,7,2,21,6,1,1,59,6,1,1,58,250,22,139, 249,22,161,8,247,22,175,7,2,21,6,1,1,59,6,1,1,58,250,22,140,
7,6,14,14,40,91,94,126,97,93,42,41,126,97,40,46,42,41,23,196,2, 7,6,14,14,40,91,94,126,97,93,42,41,126,97,40,46,42,41,23,196,2,
23,196,1,89,162,8,44,37,47,2,14,223,0,33,50,80,159,35,47,36,83, 23,196,1,89,162,8,44,37,47,2,14,223,0,33,50,80,159,35,47,36,83,
158,35,16,2,83,158,38,20,96,96,2,15,89,162,8,44,38,53,9,223,0, 158,35,16,2,83,158,38,20,96,96,2,15,89,162,8,44,38,53,9,223,0,
@ -344,7 +344,7 @@
EVAL_ONE_SIZED_STR((char *)expr, 5080); EVAL_ONE_SIZED_STR((char *)expr, 5080);
} }
{ {
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,49,46,50,8,0,0,0,1,0,0,6,0,19,0, static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,49,46,51,8,0,0,0,1,0,0,6,0,19,0,
34,0,48,0,62,0,76,0,111,0,0,0,255,0,0,0,65,113,117,111,116, 34,0,48,0,62,0,76,0,111,0,0,0,255,0,0,0,65,113,117,111,116,
101,29,94,2,1,67,35,37,117,116,105,108,115,11,29,94,2,1,69,35,37, 101,29,94,2,1,67,35,37,117,116,105,108,115,11,29,94,2,1,69,35,37,
110,101,116,119,111,114,107,11,29,94,2,1,68,35,37,112,97,114,97,109,122, 110,101,116,119,111,114,107,11,29,94,2,1,68,35,37,112,97,114,97,109,122,
@ -361,7 +361,7 @@
EVAL_ONE_SIZED_STR((char *)expr, 292); EVAL_ONE_SIZED_STR((char *)expr, 292);
} }
{ {
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,49,46,50,52,0,0,0,1,0,0,3,0,14,0, static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,49,46,51,52,0,0,0,1,0,0,3,0,14,0,
41,0,47,0,60,0,74,0,96,0,122,0,134,0,152,0,172,0,184,0,200, 41,0,47,0,60,0,74,0,96,0,122,0,134,0,152,0,172,0,184,0,200,
0,223,0,3,1,8,1,13,1,18,1,23,1,54,1,58,1,66,1,74,1, 0,223,0,3,1,8,1,13,1,18,1,23,1,54,1,58,1,66,1,74,1,
82,1,185,1,230,1,250,1,29,2,64,2,98,2,108,2,155,2,165,2,172, 82,1,185,1,230,1,250,1,29,2,64,2,98,2,108,2,155,2,165,2,172,
@ -383,31 +383,31 @@
64,108,111,111,112,1,29,115,116,97,110,100,97,114,100,45,109,111,100,117,108, 64,108,111,111,112,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,63,108,105,98,67,105, 101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,63,108,105,98,67,105,
103,110,111,114,101,100,249,22,14,195,80,158,37,45,249,80,159,37,48,36,195, 103,110,111,114,101,100,249,22,14,195,80,158,37,45,249,80,159,37,48,36,195,
10,27,28,23,195,2,28,249,22,160,8,23,197,2,80,158,38,46,87,94,23, 10,27,28,23,195,2,28,249,22,161,8,23,197,2,80,158,38,46,87,94,23,
195,1,80,158,36,47,27,248,22,169,4,23,197,2,28,248,22,133,13,23,194, 195,1,80,158,36,47,27,248,22,170,4,23,197,2,28,248,22,134,13,23,194,
2,91,159,38,11,90,161,38,35,11,248,22,154,13,23,197,1,87,95,83,160, 2,91,159,38,11,90,161,38,35,11,248,22,155,13,23,197,1,87,95,83,160,
37,11,80,158,40,46,198,83,160,37,11,80,158,40,47,192,192,11,11,28,23, 37,11,80,158,40,46,198,83,160,37,11,80,158,40,47,192,192,11,11,28,23,
193,2,192,87,94,23,193,1,27,247,22,187,4,28,192,192,247,22,173,13,20, 193,2,192,87,94,23,193,1,27,247,22,188,4,28,192,192,247,22,174,13,20,
14,159,80,158,35,39,250,80,158,38,40,249,22,27,11,80,158,40,39,22,187, 14,159,80,158,35,39,250,80,158,38,40,249,22,27,11,80,158,40,39,22,188,
4,28,248,22,133,13,23,198,2,23,197,1,87,94,23,197,1,247,22,173,13, 4,28,248,22,134,13,23,198,2,23,197,1,87,94,23,197,1,247,22,174,13,
247,194,250,22,151,13,23,197,1,23,199,1,249,80,158,42,38,23,198,1,2, 247,194,250,22,152,13,23,197,1,23,199,1,249,80,158,42,38,23,198,1,2,
18,252,22,151,13,23,199,1,23,201,1,6,6,6,110,97,116,105,118,101,247, 18,252,22,152,13,23,199,1,23,201,1,6,6,6,110,97,116,105,118,101,247,
22,175,7,249,80,158,44,38,23,200,1,80,158,44,35,87,94,23,194,1,27, 22,176,7,249,80,158,44,38,23,200,1,80,158,44,35,87,94,23,194,1,27,
23,194,1,27,250,22,168,13,196,11,32,0,89,162,8,44,35,40,9,222,11, 23,194,1,27,250,22,169,13,196,11,32,0,89,162,8,44,35,40,9,222,11,
28,192,249,22,63,195,194,11,27,248,23,195,1,23,196,1,27,250,22,168,13, 28,192,249,22,63,195,194,11,27,248,23,195,1,23,196,1,27,250,22,169,13,
196,11,32,0,89,162,8,44,35,40,9,222,11,28,192,249,22,63,195,194,11, 196,11,32,0,89,162,8,44,35,40,9,222,11,28,192,249,22,63,195,194,11,
249,247,22,178,13,248,22,64,195,195,27,250,22,151,13,23,198,1,23,200,1, 249,247,22,179,13,248,22,64,195,195,27,250,22,152,13,23,198,1,23,200,1,
249,80,158,43,38,23,199,1,2,18,27,250,22,168,13,196,11,32,0,89,162, 249,80,158,43,38,23,199,1,2,18,27,250,22,169,13,196,11,32,0,89,162,
8,44,35,40,9,222,11,28,192,249,22,63,195,194,11,249,247,22,185,4,248, 8,44,35,40,9,222,11,28,192,249,22,63,195,194,11,249,247,22,186,4,248,
22,64,195,195,249,247,22,185,4,194,195,87,94,28,248,80,158,36,37,23,195, 22,64,195,195,249,247,22,186,4,194,195,87,94,28,248,80,158,36,37,23,195,
2,12,250,22,190,8,77,108,111,97,100,47,117,115,101,45,99,111,109,112,105, 2,12,250,22,191,8,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, 108,101,100,6,25,25,112,97,116,104,32,111,114,32,118,97,108,105,100,45,112,
97,116,104,32,115,116,114,105,110,103,23,197,2,91,159,41,11,90,161,36,35, 97,116,104,32,115,116,114,105,110,103,23,197,2,91,159,41,11,90,161,36,35,
11,28,248,22,157,13,23,201,2,23,200,1,27,247,22,187,4,28,23,193,2, 11,28,248,22,158,13,23,201,2,23,200,1,27,247,22,188,4,28,23,193,2,
249,22,158,13,23,203,1,23,195,1,200,90,161,38,36,11,248,22,154,13,23, 249,22,159,13,23,203,1,23,195,1,200,90,161,38,36,11,248,22,155,13,23,
194,2,87,94,23,196,1,90,161,36,39,11,28,249,22,160,8,23,196,2,68, 194,2,87,94,23,196,1,90,161,36,39,11,28,249,22,161,8,23,196,2,68,
114,101,108,97,116,105,118,101,87,94,23,194,1,2,17,23,194,1,90,161,36, 114,101,108,97,116,105,118,101,87,94,23,194,1,2,17,23,194,1,90,161,36,
40,11,247,22,175,13,27,89,162,43,36,49,62,122,111,225,7,5,3,33,27, 40,11,247,22,176,13,27,89,162,43,36,49,62,122,111,225,7,5,3,33,27,
27,89,162,43,36,51,9,225,8,6,4,33,28,27,249,22,5,89,162,8,44, 27,89,162,43,36,51,9,225,8,6,4,33,28,27,249,22,5,89,162,8,44,
36,47,9,223,5,33,29,23,203,2,27,28,23,195,2,27,249,22,5,83,158, 36,47,9,223,5,33,29,23,203,2,27,28,23,195,2,27,249,22,5,83,158,
39,20,97,94,89,162,8,44,36,47,9,223,5,33,30,23,198,1,23,205,2, 39,20,97,94,89,162,8,44,36,47,9,223,5,33,30,23,198,1,23,205,2,
@ -420,11 +420,11 @@
199,193,11,11,11,11,28,192,249,80,159,48,54,36,203,89,162,43,35,45,9, 199,193,11,11,11,11,28,192,249,80,159,48,54,36,203,89,162,43,35,45,9,
224,15,2,33,33,249,80,159,48,54,36,203,89,162,43,35,44,9,224,15,7, 224,15,2,33,33,249,80,159,48,54,36,203,89,162,43,35,44,9,224,15,7,
33,34,32,36,89,162,8,44,36,54,2,19,222,33,38,0,17,35,114,120,34, 33,34,32,36,89,162,8,44,36,54,2,19,222,33,38,0,17,35,114,120,34,
94,40,46,42,63,41,47,40,46,42,41,36,34,27,249,22,183,13,2,37,23, 94,40,46,42,63,41,47,40,46,42,41,36,34,27,249,22,184,13,2,37,23,
196,2,28,23,193,2,87,94,23,194,1,249,22,63,248,22,88,23,196,2,27, 196,2,28,23,193,2,87,94,23,194,1,249,22,63,248,22,88,23,196,2,27,
248,22,97,23,197,1,27,249,22,183,13,2,37,23,196,2,28,23,193,2,87, 248,22,97,23,197,1,27,249,22,184,13,2,37,23,196,2,28,23,193,2,87,
94,23,194,1,249,22,63,248,22,88,23,196,2,27,248,22,97,23,197,1,27, 94,23,194,1,249,22,63,248,22,88,23,196,2,27,248,22,97,23,197,1,27,
249,22,183,13,2,37,23,196,2,28,23,193,2,87,94,23,194,1,249,22,63, 249,22,184,13,2,37,23,196,2,28,23,193,2,87,94,23,194,1,249,22,63,
248,22,88,23,196,2,248,2,36,248,22,97,23,197,1,248,22,73,194,248,22, 248,22,88,23,196,2,248,2,36,248,22,97,23,197,1,248,22,73,194,248,22,
73,194,248,22,73,194,32,39,89,162,43,36,54,2,19,222,33,40,28,248,22, 73,194,248,22,73,194,32,39,89,162,43,36,54,2,19,222,33,40,28,248,22,
71,248,22,65,23,195,2,249,22,7,9,248,22,64,195,91,159,37,11,90,161, 71,248,22,65,23,195,2,249,22,7,9,248,22,64,195,91,159,37,11,90,161,
@ -435,96 +435,96 @@
249,22,7,249,22,63,248,22,64,23,200,1,23,197,1,23,196,1,249,22,7, 249,22,7,249,22,63,248,22,64,23,200,1,23,197,1,23,196,1,249,22,7,
249,22,63,248,22,64,23,200,1,23,197,1,23,196,1,249,22,7,249,22,63, 249,22,63,248,22,64,23,200,1,23,197,1,23,196,1,249,22,7,249,22,63,
248,22,64,23,200,1,23,197,1,195,27,248,2,36,23,195,1,28,194,192,248, 248,22,64,23,200,1,23,197,1,195,27,248,2,36,23,195,1,28,194,192,248,
2,39,193,87,95,28,248,22,167,4,195,12,250,22,190,8,2,20,6,20,20, 2,39,193,87,95,28,248,22,168,4,195,12,250,22,191,8,2,20,6,20,20,
114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45,112,97,116,104,197, 114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45,112,97,116,104,197,
28,24,193,2,248,24,194,1,195,87,94,23,193,1,12,27,27,250,22,137,2, 28,24,193,2,248,24,194,1,195,87,94,23,193,1,12,27,27,250,22,137,2,
80,158,41,42,248,22,139,14,247,22,180,11,11,28,23,193,2,192,87,94,23, 80,158,41,42,248,22,140,14,247,22,181,11,11,28,23,193,2,192,87,94,23,
193,1,27,247,22,121,87,94,250,22,135,2,80,158,42,42,248,22,139,14,247, 193,1,27,247,22,121,87,94,250,22,135,2,80,158,42,42,248,22,140,14,247,
22,180,11,195,192,250,22,135,2,195,198,66,97,116,116,97,99,104,251,211,197, 22,181,11,195,192,250,22,135,2,195,198,66,97,116,116,97,99,104,251,211,197,
198,199,10,28,192,250,22,189,8,11,196,195,248,22,187,8,194,28,249,22,161, 198,199,10,28,192,250,22,190,8,11,196,195,248,22,188,8,194,28,249,22,162,
6,194,6,1,1,46,2,17,28,249,22,161,6,194,6,2,2,46,46,62,117, 6,194,6,1,1,46,2,17,28,249,22,162,6,194,6,2,2,46,46,62,117,
112,192,28,249,22,162,8,248,22,65,23,200,2,23,197,1,28,249,22,160,8, 112,192,28,249,22,163,8,248,22,65,23,200,2,23,197,1,28,249,22,161,8,
248,22,64,23,200,2,23,196,1,251,22,187,8,2,20,6,26,26,99,121,99, 248,22,64,23,200,2,23,196,1,251,22,188,8,2,20,6,26,26,99,121,99,
108,101,32,105,110,32,108,111,97,100,105,110,103,32,97,116,32,126,101,58,32, 108,101,32,105,110,32,108,111,97,100,105,110,103,32,97,116,32,126,101,58,32,
126,101,23,200,1,249,22,2,22,65,248,22,78,249,22,63,23,206,1,23,202, 126,101,23,200,1,249,22,2,22,65,248,22,78,249,22,63,23,206,1,23,202,
1,12,12,247,192,20,14,159,80,158,39,44,249,22,63,247,22,180,11,23,197, 1,12,12,247,192,20,14,159,80,158,39,44,249,22,63,247,22,181,11,23,197,
1,20,14,159,80,158,39,39,250,80,158,42,40,249,22,27,11,80,158,44,39, 1,20,14,159,80,158,39,39,250,80,158,42,40,249,22,27,11,80,158,44,39,
22,149,4,23,196,1,249,247,22,186,4,23,198,1,248,22,52,248,22,137,13, 22,150,4,23,196,1,249,247,22,187,4,23,198,1,248,22,52,248,22,138,13,
23,198,1,87,94,28,28,248,22,133,13,23,197,2,10,248,22,173,4,23,197, 23,198,1,87,94,28,28,248,22,134,13,23,197,2,10,248,22,174,4,23,197,
2,12,28,23,198,2,250,22,189,8,11,6,15,15,98,97,100,32,109,111,100, 2,12,28,23,198,2,250,22,190,8,11,6,15,15,98,97,100,32,109,111,100,
117,108,101,32,112,97,116,104,23,201,2,250,22,190,8,2,20,6,19,19,109, 117,108,101,32,112,97,116,104,23,201,2,250,22,191,8,2,20,6,19,19,109,
111,100,117,108,101,45,112,97,116,104,32,111,114,32,112,97,116,104,23,199,2, 111,100,117,108,101,45,112,97,116,104,32,111,114,32,112,97,116,104,23,199,2,
28,28,248,22,61,23,197,2,249,22,160,8,248,22,64,23,199,2,2,4,11, 28,28,248,22,61,23,197,2,249,22,161,8,248,22,64,23,199,2,2,4,11,
248,22,168,4,248,22,88,197,28,28,248,22,61,23,197,2,249,22,160,8,248, 248,22,169,4,248,22,88,197,28,28,248,22,61,23,197,2,249,22,161,8,248,
22,64,23,199,2,66,112,108,97,110,101,116,11,87,94,28,207,12,20,14,159, 22,64,23,199,2,66,112,108,97,110,101,116,11,87,94,28,207,12,20,14,159,
80,158,37,39,250,80,158,40,40,249,22,27,11,80,158,42,39,22,180,11,23, 80,158,37,39,250,80,158,40,40,249,22,27,11,80,158,42,39,22,181,11,23,
197,1,90,161,36,35,10,249,22,150,4,21,94,2,21,6,18,18,112,108,97, 197,1,90,161,36,35,10,249,22,151,4,21,94,2,21,6,18,18,112,108,97,
110,101,116,47,114,101,115,111,108,118,101,114,46,115,115,1,27,112,108,97,110, 110,101,116,47,114,101,115,111,108,118,101,114,46,115,115,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,116,45,109,111,100,117,108,101,45,110,97,109,101,45,114,101,115,111,108,118,
101,114,12,251,211,199,200,201,202,87,94,23,193,1,27,89,162,8,44,36,45, 101,114,12,251,211,199,200,201,202,87,94,23,193,1,27,89,162,8,44,36,45,
79,115,104,111,119,45,99,111,108,108,101,99,116,105,111,110,45,101,114,114,223, 79,115,104,111,119,45,99,111,108,108,101,99,116,105,111,110,45,101,114,114,223,
6,33,44,27,28,248,22,51,23,199,2,27,250,22,137,2,80,158,43,43,249, 6,33,44,27,28,248,22,51,23,199,2,27,250,22,137,2,80,158,43,43,249,
22,63,23,204,2,247,22,174,13,11,28,23,193,2,192,87,94,23,193,1,91, 22,63,23,204,2,247,22,175,13,11,28,23,193,2,192,87,94,23,193,1,91,
159,37,11,90,161,37,35,11,249,80,159,44,48,36,248,22,54,23,204,2,11, 159,37,11,90,161,37,35,11,249,80,159,44,48,36,248,22,54,23,204,2,11,
27,251,80,158,47,50,2,20,23,202,1,28,248,22,71,23,199,2,23,199,2, 27,251,80,158,47,50,2,20,23,202,1,28,248,22,71,23,199,2,23,199,2,
248,22,64,23,199,2,28,248,22,71,23,199,2,9,248,22,65,23,199,2,249, 248,22,64,23,199,2,28,248,22,71,23,199,2,9,248,22,65,23,199,2,249,
22,151,13,23,195,1,28,248,22,71,23,197,1,87,94,23,197,1,6,7,7, 22,152,13,23,195,1,28,248,22,71,23,197,1,87,94,23,197,1,6,7,7,
109,97,105,110,46,115,115,249,22,178,6,23,199,1,6,3,3,46,115,115,28, 109,97,105,110,46,115,115,249,22,179,6,23,199,1,6,3,3,46,115,115,28,
248,22,155,6,23,199,2,87,94,23,194,1,27,248,80,159,41,55,36,23,201, 248,22,156,6,23,199,2,87,94,23,194,1,27,248,80,159,41,55,36,23,201,
2,27,250,22,137,2,80,158,44,43,249,22,63,23,205,2,23,199,2,11,28, 2,27,250,22,137,2,80,158,44,43,249,22,63,23,205,2,23,199,2,11,28,
23,193,2,192,87,94,23,193,1,91,159,37,11,90,161,37,35,11,249,80,159, 23,193,2,192,87,94,23,193,1,91,159,37,11,90,161,37,35,11,249,80,159,
45,48,36,23,204,2,11,250,22,1,22,151,13,23,199,1,249,22,77,249,22, 45,48,36,23,204,2,11,250,22,1,22,152,13,23,199,1,249,22,77,249,22,
2,32,0,89,162,8,44,36,43,9,222,33,45,23,200,1,248,22,73,23,200, 2,32,0,89,162,8,44,36,43,9,222,33,45,23,200,1,248,22,73,23,200,
1,28,248,22,133,13,23,199,2,87,94,23,194,1,28,248,22,156,13,23,199, 1,28,248,22,134,13,23,199,2,87,94,23,194,1,28,248,22,157,13,23,199,
2,23,198,2,248,22,73,6,26,26,32,40,97,32,112,97,116,104,32,109,117, 2,23,198,2,248,22,73,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,160,8,248, 115,116,32,98,101,32,97,98,115,111,108,117,116,101,41,28,249,22,161,8,248,
22,64,23,201,2,2,21,27,250,22,137,2,80,158,43,43,249,22,63,23,204, 22,64,23,201,2,2,21,27,250,22,137,2,80,158,43,43,249,22,63,23,204,
2,247,22,174,13,11,28,23,193,2,192,87,94,23,193,1,91,159,38,11,90, 2,247,22,175,13,11,28,23,193,2,192,87,94,23,193,1,91,159,38,11,90,
161,37,35,11,249,80,159,45,48,36,248,22,88,23,205,2,11,90,161,36,37, 161,37,35,11,249,80,159,45,48,36,248,22,88,23,205,2,11,90,161,36,37,
11,28,248,22,71,248,22,90,23,204,2,28,248,22,71,23,194,2,249,22,185, 11,28,248,22,71,248,22,90,23,204,2,28,248,22,71,23,194,2,249,22,186,
13,0,8,35,114,120,34,91,46,93,34,23,196,2,11,10,27,27,28,23,197, 13,0,8,35,114,120,34,91,46,93,34,23,196,2,11,10,27,27,28,23,197,
2,249,22,77,28,248,22,71,248,22,90,23,208,2,21,93,6,5,5,109,122, 2,249,22,77,28,248,22,71,248,22,90,23,208,2,21,93,6,5,5,109,122,
108,105,98,249,22,1,22,77,249,22,2,80,159,51,56,36,248,22,90,23,211, 108,105,98,249,22,1,22,77,249,22,2,80,159,51,56,36,248,22,90,23,211,
2,23,197,2,28,248,22,71,23,196,2,248,22,73,23,197,2,23,195,2,251, 2,23,197,2,28,248,22,71,23,196,2,248,22,73,23,197,2,23,195,2,251,
80,158,49,50,2,20,23,204,1,248,22,64,23,198,2,248,22,65,23,198,1, 80,158,49,50,2,20,23,204,1,248,22,64,23,198,2,248,22,65,23,198,1,
249,22,151,13,23,195,1,28,23,198,1,87,94,23,196,1,23,197,1,28,248, 249,22,152,13,23,195,1,28,23,198,1,87,94,23,196,1,23,197,1,28,248,
22,71,23,197,1,87,94,23,197,1,6,7,7,109,97,105,110,46,115,115,28, 22,71,23,197,1,87,94,23,197,1,6,7,7,109,97,105,110,46,115,115,28,
249,22,185,13,0,8,35,114,120,34,91,46,93,34,23,199,2,23,197,1,249, 249,22,186,13,0,8,35,114,120,34,91,46,93,34,23,199,2,23,197,1,249,
22,178,6,23,199,1,6,3,3,46,115,115,28,249,22,160,8,248,22,64,23, 22,179,6,23,199,1,6,3,3,46,115,115,28,249,22,161,8,248,22,64,23,
201,2,64,102,105,108,101,249,22,158,13,248,22,162,13,248,22,88,23,202,2, 201,2,64,102,105,108,101,249,22,159,13,248,22,163,13,248,22,88,23,202,2,
248,80,159,42,55,36,23,202,2,12,87,94,28,28,248,22,133,13,23,194,2, 248,80,159,42,55,36,23,202,2,12,87,94,28,28,248,22,134,13,23,194,2,
10,248,22,177,7,23,194,2,87,94,23,200,1,12,28,23,200,2,250,22,189, 10,248,22,178,7,23,194,2,87,94,23,200,1,12,28,23,200,2,250,22,190,
8,67,114,101,113,117,105,114,101,249,22,139,7,6,17,17,98,97,100,32,109, 8,67,114,101,113,117,105,114,101,249,22,140,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,64,23,199, 111,100,117,108,101,32,112,97,116,104,126,97,28,23,198,2,248,22,64,23,199,
2,6,0,0,23,203,1,87,94,23,200,1,250,22,190,8,2,20,249,22,139, 2,6,0,0,23,203,1,87,94,23,200,1,250,22,191,8,2,20,249,22,140,
7,6,13,13,109,111,100,117,108,101,32,112,97,116,104,126,97,28,23,198,2, 7,6,13,13,109,111,100,117,108,101,32,112,97,116,104,126,97,28,23,198,2,
248,22,64,23,199,2,6,0,0,23,201,2,27,28,248,22,177,7,23,195,2, 248,22,64,23,199,2,6,0,0,23,201,2,27,28,248,22,178,7,23,195,2,
249,22,182,7,23,196,2,35,249,22,160,13,248,22,161,13,23,197,2,11,27, 249,22,183,7,23,196,2,35,249,22,161,13,248,22,162,13,23,197,2,11,27,
28,248,22,177,7,23,196,2,249,22,182,7,23,197,2,36,248,80,158,42,51, 28,248,22,178,7,23,196,2,249,22,183,7,23,197,2,36,248,80,158,42,51,
23,195,2,91,159,38,11,90,161,38,35,11,28,248,22,177,7,23,199,2,250, 23,195,2,91,159,38,11,90,161,38,35,11,28,248,22,178,7,23,199,2,250,
22,7,2,22,249,22,182,7,23,203,2,37,2,22,248,22,154,13,23,198,2, 22,7,2,22,249,22,183,7,23,203,2,37,2,22,248,22,155,13,23,198,2,
87,95,23,195,1,23,193,1,27,28,248,22,177,7,23,200,2,249,22,182,7, 87,95,23,195,1,23,193,1,27,28,248,22,178,7,23,200,2,249,22,183,7,
23,201,2,38,249,80,158,47,52,23,197,2,5,0,27,28,248,22,177,7,23, 23,201,2,38,249,80,158,47,52,23,197,2,5,0,27,28,248,22,178,7,23,
201,2,249,22,182,7,23,202,2,39,248,22,168,4,23,200,2,27,27,250,22, 201,2,249,22,183,7,23,202,2,39,248,22,169,4,23,200,2,27,27,250,22,
137,2,80,158,51,42,248,22,139,14,247,22,180,11,11,28,23,193,2,192,87, 137,2,80,158,51,42,248,22,140,14,247,22,181,11,11,28,23,193,2,192,87,
94,23,193,1,27,247,22,121,87,94,250,22,135,2,80,158,52,42,248,22,139, 94,23,193,1,27,247,22,121,87,94,250,22,135,2,80,158,52,42,248,22,140,
14,247,22,180,11,195,192,87,95,28,23,209,1,27,250,22,137,2,23,197,2, 14,247,22,181,11,195,192,87,95,28,23,209,1,27,250,22,137,2,23,197,2,
197,11,28,23,193,1,12,87,95,27,27,28,248,22,17,80,158,51,45,80,158, 197,11,28,23,193,1,12,87,95,27,27,28,248,22,17,80,158,51,45,80,158,
50,45,247,22,19,250,22,25,248,22,23,23,197,2,80,158,53,44,23,196,1, 50,45,247,22,19,250,22,25,248,22,23,23,197,2,80,158,53,44,23,196,1,
27,247,22,180,11,249,22,3,83,158,39,20,97,94,89,162,8,44,36,54,9, 27,247,22,181,11,249,22,3,83,158,39,20,97,94,89,162,8,44,36,54,9,
226,12,11,2,3,33,46,23,195,1,23,196,1,248,28,248,22,17,80,158,50, 226,12,11,2,3,33,46,23,195,1,23,196,1,248,28,248,22,17,80,158,50,
45,32,0,89,162,43,36,41,9,222,33,47,80,159,49,57,36,89,162,43,35, 45,32,0,89,162,43,36,41,9,222,33,47,80,159,49,57,36,89,162,43,35,
50,9,227,14,9,8,4,3,33,48,250,22,135,2,23,197,1,197,10,12,28, 50,9,227,14,9,8,4,3,33,48,250,22,135,2,23,197,1,197,10,12,28,
28,248,22,177,7,23,202,1,11,27,248,22,155,6,23,208,2,28,192,192,28, 28,248,22,178,7,23,202,1,11,27,248,22,156,6,23,208,2,28,192,192,28,
248,22,61,23,208,2,249,22,160,8,248,22,64,23,210,2,2,21,11,250,22, 248,22,61,23,208,2,249,22,161,8,248,22,64,23,210,2,2,21,11,250,22,
135,2,80,158,50,43,28,248,22,155,6,23,210,2,249,22,63,23,211,1,248, 135,2,80,158,50,43,28,248,22,156,6,23,210,2,249,22,63,23,211,1,248,
80,159,53,55,36,23,213,1,87,94,23,210,1,249,22,63,23,211,1,247,22, 80,159,53,55,36,23,213,1,87,94,23,210,1,249,22,63,23,211,1,247,22,
174,13,252,22,179,7,23,208,1,23,207,1,23,205,1,23,203,1,201,12,193, 175,13,252,22,180,7,23,208,1,23,207,1,23,205,1,23,203,1,201,12,193,
91,159,37,10,90,161,36,35,10,11,90,161,36,36,10,83,158,38,20,96,96, 91,159,37,10,90,161,36,35,10,11,90,161,36,36,10,83,158,38,20,96,96,
2,20,89,162,8,44,36,50,9,224,2,0,33,42,89,162,43,38,48,9,223, 2,20,89,162,8,44,36,50,9,224,2,0,33,42,89,162,43,38,48,9,223,
1,33,43,89,162,43,39,8,30,9,225,2,3,0,33,49,208,87,95,248,22, 1,33,43,89,162,43,39,8,30,9,225,2,3,0,33,49,208,87,95,248,22,
148,4,248,80,158,37,49,247,22,180,11,248,22,186,4,80,158,36,36,248,22, 149,4,248,80,158,37,49,247,22,181,11,248,22,187,4,80,158,36,36,248,22,
171,12,80,159,36,41,36,159,35,20,103,159,35,16,1,65,98,101,103,105,110, 172,12,80,159,36,41,36,159,35,20,103,159,35,16,1,65,98,101,103,105,110,
16,0,83,158,41,20,100,138,66,35,37,98,111,111,116,2,1,11,11,10,10, 16,0,83,158,41,20,100,138,66,35,37,98,111,111,116,2,1,11,11,10,10,
36,80,158,35,35,20,103,159,39,16,19,30,2,1,2,2,193,30,2,1,2, 36,80,158,35,35,20,103,159,39,16,19,30,2,1,2,2,193,30,2,1,2,
3,193,30,2,5,72,112,97,116,104,45,115,116,114,105,110,103,63,10,30,2, 3,193,30,2,5,72,112,97,116,104,45,115,116,114,105,110,103,63,10,30,2,
@ -545,7 +545,7 @@
44,9,223,0,33,24,80,159,35,56,36,83,158,35,16,2,89,162,43,36,48, 44,9,223,0,33,24,80,159,35,56,36,83,158,35,16,2,89,162,43,36,48,
67,103,101,116,45,100,105,114,223,0,33,25,80,159,35,55,36,83,158,35,16, 67,103,101,116,45,100,105,114,223,0,33,25,80,159,35,55,36,83,158,35,16,
2,89,162,43,37,48,68,119,105,116,104,45,100,105,114,223,0,33,26,80,159, 2,89,162,43,37,48,68,119,105,116,104,45,100,105,114,223,0,33,26,80,159,
35,54,36,83,158,35,16,2,248,22,174,7,69,115,111,45,115,117,102,102,105, 35,54,36,83,158,35,16,2,248,22,175,7,69,115,111,45,115,117,102,102,105,
120,80,159,35,35,36,83,158,35,16,2,89,162,43,37,59,2,3,223,0,33, 120,80,159,35,35,36,83,158,35,16,2,89,162,43,37,59,2,3,223,0,33,
35,80,159,35,36,36,83,158,35,16,2,32,0,89,162,8,44,36,41,2,7, 35,80,159,35,36,36,83,158,35,16,2,32,0,89,162,8,44,36,41,2,7,
222,192,80,159,35,41,36,83,158,35,16,2,247,22,124,80,159,35,42,36,83, 222,192,80,159,35,41,36,83,158,35,16,2,247,22,124,80,159,35,42,36,83,

View File

@ -13,7 +13,7 @@
#define USE_COMPILED_STARTUP 1 #define USE_COMPILED_STARTUP 1
#define EXPECTED_PRIM_COUNT 935 #define EXPECTED_PRIM_COUNT 936
#ifdef MZSCHEME_SOMETHING_OMITTED #ifdef MZSCHEME_SOMETHING_OMITTED
# undef USE_COMPILED_STARTUP # undef USE_COMPILED_STARTUP

View File

@ -13,12 +13,12 @@
consistently.) consistently.)
*/ */
#define MZSCHEME_VERSION "4.1.1.2" #define MZSCHEME_VERSION "4.1.1.3"
#define MZSCHEME_VERSION_X 4 #define MZSCHEME_VERSION_X 4
#define MZSCHEME_VERSION_Y 1 #define MZSCHEME_VERSION_Y 1
#define MZSCHEME_VERSION_Z 1 #define MZSCHEME_VERSION_Z 1
#define MZSCHEME_VERSION_W 2 #define MZSCHEME_VERSION_W 3
#define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y)
#define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)

View File

@ -55,6 +55,7 @@ static Scheme_Object *syntax_original_p(int argc, Scheme_Object **argv);
static Scheme_Object *syntax_property(int argc, Scheme_Object **argv); static Scheme_Object *syntax_property(int argc, Scheme_Object **argv);
static Scheme_Object *syntax_property_keys(int argc, Scheme_Object **argv); static Scheme_Object *syntax_property_keys(int argc, Scheme_Object **argv);
static Scheme_Object *syntax_track_origin(int argc, Scheme_Object **argv); static Scheme_Object *syntax_track_origin(int argc, Scheme_Object **argv);
static Scheme_Object *syntax_transfer_intro(int argc, Scheme_Object **argv);
static Scheme_Object *bound_eq(int argc, Scheme_Object **argv); static Scheme_Object *bound_eq(int argc, Scheme_Object **argv);
static Scheme_Object *module_eq(int argc, Scheme_Object **argv); static Scheme_Object *module_eq(int argc, Scheme_Object **argv);
@ -449,6 +450,12 @@ void scheme_init_stx(Scheme_Env *env)
3, 3), 3, 3),
env); env);
scheme_add_global_constant("make-syntax-delta-introducer",
scheme_make_immed_prim(syntax_transfer_intro,
"make-syntax-delta-introducer",
2, 2),
env);
scheme_add_global_constant("bound-identifier=?", scheme_add_global_constant("bound-identifier=?",
scheme_make_immed_prim(bound_eq, scheme_make_immed_prim(bound_eq,
"bound-identifier=?", "bound-identifier=?",
@ -6761,6 +6768,61 @@ static Scheme_Object *syntax_track_origin(int argc, Scheme_Object **argv)
return scheme_stx_track(argv[0], argv[1], argv[2]); return scheme_stx_track(argv[0], argv[1], argv[2]);
} }
static Scheme_Object *delta_introducer(int argc, struct Scheme_Object *argv[], Scheme_Object *p)
{
Scheme_Object *r, *delta;
r = argv[0];
if (!SCHEME_STXP(r))
scheme_wrong_type("delta-introducer", "syntax", 0, argc, argv);
delta = SCHEME_PRIM_CLOSURE_ELS(p)[0];
for(; !SCHEME_NULLP(delta); delta = SCHEME_CDR(delta)) {
r = scheme_add_remove_mark(r, SCHEME_CAR(delta));
}
return r;
}
static Scheme_Object *syntax_transfer_intro(int argc, Scheme_Object **argv)
{
Scheme_Object *m1, *m2, *delta, *a[1];
int l1, l2;
if (!SCHEME_STXP(argv[0]))
scheme_wrong_type("make-syntax-delta-introducer", "syntax", 0, argc, argv);
if (!SCHEME_STXP(argv[1]))
scheme_wrong_type("make-syntax-delta-introducer", "syntax", 1, argc, argv);
m1 = scheme_stx_extract_marks(argv[0]);
m2 = scheme_stx_extract_marks(argv[1]);
l1 = scheme_list_length(m1);
l2 = scheme_list_length(m2);
delta = scheme_null;
while (l1 > l2) {
delta = CONS(SCHEME_CAR(m1), delta);
m1 = SCHEME_CDR(m1);
l1--;
}
if (!scheme_equal(m1, m2)) {
/* tails don't match, so keep all marks */
while (l1) {
delta = CONS(SCHEME_CAR(m1), delta);
m1 = SCHEME_CDR(m1);
l1--;
}
}
a[0] = delta;
return scheme_make_prim_closure_w_arity(delta_introducer, 1, a, "delta-introducer", 1, 1);
}
static Scheme_Object *bound_eq(int argc, Scheme_Object **argv) static Scheme_Object *bound_eq(int argc, Scheme_Object **argv)
{ {
Scheme_Object *phase; Scheme_Object *phase;

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity <assemblyIdentity
version="4.1.1.2" version="4.1.1.3"
processorArchitecture="X86" processorArchitecture="X86"
name="Org.PLT-Scheme.MrEd" name="Org.PLT-Scheme.MrEd"
type="win32" type="win32"

View File

@ -20,8 +20,8 @@ APPLICATION ICON DISCARDABLE "mred.ico"
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 4,1,1,2 FILEVERSION 4,1,1,3
PRODUCTVERSION 4,1,1,2 PRODUCTVERSION 4,1,1,3
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -39,11 +39,11 @@ BEGIN
VALUE "CompanyName", "PLT Scheme Inc.\0" VALUE "CompanyName", "PLT Scheme Inc.\0"
VALUE "FileDescription", "PLT Scheme GUI application\0" VALUE "FileDescription", "PLT Scheme GUI application\0"
VALUE "InternalName", "MrEd\0" VALUE "InternalName", "MrEd\0"
VALUE "FileVersion", "4, 1, 1, 2\0" VALUE "FileVersion", "4, 1, 1, 3\0"
VALUE "LegalCopyright", "Copyright © 1995-2008\0" VALUE "LegalCopyright", "Copyright © 1995-2008\0"
VALUE "OriginalFilename", "MrEd.exe\0" VALUE "OriginalFilename", "MrEd.exe\0"
VALUE "ProductName", "PLT Scheme\0" VALUE "ProductName", "PLT Scheme\0"
VALUE "ProductVersion", "4, 1, 1, 2\0" VALUE "ProductVersion", "4, 1, 1, 3\0"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"

View File

@ -53,8 +53,8 @@ END
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 4,1,1,2 FILEVERSION 4,1,1,3
PRODUCTVERSION 4,1,1,2 PRODUCTVERSION 4,1,1,3
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -70,12 +70,12 @@ BEGIN
BLOCK "040904b0" BLOCK "040904b0"
BEGIN BEGIN
VALUE "FileDescription", "MzCOM Module" VALUE "FileDescription", "MzCOM Module"
VALUE "FileVersion", "4, 1, 1, 2" VALUE "FileVersion", "4, 1, 1, 3"
VALUE "InternalName", "MzCOM" VALUE "InternalName", "MzCOM"
VALUE "LegalCopyright", "Copyright 2000-2008 PLT (Paul Steckler)" VALUE "LegalCopyright", "Copyright 2000-2008 PLT (Paul Steckler)"
VALUE "OriginalFilename", "MzCOM.EXE" VALUE "OriginalFilename", "MzCOM.EXE"
VALUE "ProductName", "MzCOM Module" VALUE "ProductName", "MzCOM Module"
VALUE "ProductVersion", "4, 1, 1, 2" VALUE "ProductVersion", "4, 1, 1, 3"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"

View File

@ -1,19 +1,19 @@
HKCR HKCR
{ {
MzCOM.MzObj.4.1.1.2 = s 'MzObj Class' MzCOM.MzObj.4.1.1.3 = s 'MzObj Class'
{ {
CLSID = s '{A3B0AF9E-2AB0-11D4-B6D2-0060089002FE}' CLSID = s '{A3B0AF9E-2AB0-11D4-B6D2-0060089002FE}'
} }
MzCOM.MzObj = s 'MzObj Class' MzCOM.MzObj = s 'MzObj Class'
{ {
CLSID = s '{A3B0AF9E-2AB0-11D4-B6D2-0060089002FE}' CLSID = s '{A3B0AF9E-2AB0-11D4-B6D2-0060089002FE}'
CurVer = s 'MzCOM.MzObj.4.1.1.2' CurVer = s 'MzCOM.MzObj.4.1.1.3'
} }
NoRemove CLSID NoRemove CLSID
{ {
ForceRemove {A3B0AF9E-2AB0-11D4-B6D2-0060089002FE} = s 'MzObj Class' ForceRemove {A3B0AF9E-2AB0-11D4-B6D2-0060089002FE} = s 'MzObj Class'
{ {
ProgID = s 'MzCOM.MzObj.4.1.1.2' ProgID = s 'MzCOM.MzObj.4.1.1.3'
VersionIndependentProgID = s 'MzCOM.MzObj' VersionIndependentProgID = s 'MzCOM.MzObj'
ForceRemove 'Programmable' ForceRemove 'Programmable'
LocalServer32 = s '%MODULE%' LocalServer32 = s '%MODULE%'

View File

@ -29,8 +29,8 @@ APPLICATION ICON DISCARDABLE "mzscheme.ico"
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 4,1,1,2 FILEVERSION 4,1,1,3
PRODUCTVERSION 4,1,1,2 PRODUCTVERSION 4,1,1,3
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -48,11 +48,11 @@ BEGIN
VALUE "CompanyName", "PLT Scheme Inc.\0" VALUE "CompanyName", "PLT Scheme Inc.\0"
VALUE "FileDescription", "PLT Scheme application\0" VALUE "FileDescription", "PLT Scheme application\0"
VALUE "InternalName", "MzScheme\0" VALUE "InternalName", "MzScheme\0"
VALUE "FileVersion", "4, 1, 1, 2\0" VALUE "FileVersion", "4, 1, 1, 3\0"
VALUE "LegalCopyright", "Copyright <20>© 1995-2008\0" VALUE "LegalCopyright", "Copyright <20>© 1995-2008\0"
VALUE "OriginalFilename", "mzscheme.exe\0" VALUE "OriginalFilename", "mzscheme.exe\0"
VALUE "ProductName", "PLT Scheme\0" VALUE "ProductName", "PLT Scheme\0"
VALUE "ProductVersion", "4, 1, 1, 2\0" VALUE "ProductVersion", "4, 1, 1, 3\0"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"

View File

@ -22,8 +22,8 @@ APPLICATION ICON DISCARDABLE "mzstart.ico"
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 4,1,1,2 FILEVERSION 4,1,1,3
PRODUCTVERSION 4,1,1,2 PRODUCTVERSION 4,1,1,3
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -45,7 +45,7 @@ BEGIN
#ifdef MZSTART #ifdef MZSTART
VALUE "FileDescription", "PLT Scheme Launcher\0" VALUE "FileDescription", "PLT Scheme Launcher\0"
#endif #endif
VALUE "FileVersion", "4, 1, 1, 2\0" VALUE "FileVersion", "4, 1, 1, 3\0"
#ifdef MRSTART #ifdef MRSTART
VALUE "InternalName", "mrstart\0" VALUE "InternalName", "mrstart\0"
#endif #endif
@ -60,7 +60,7 @@ BEGIN
VALUE "OriginalFilename", "MzStart.exe\0" VALUE "OriginalFilename", "MzStart.exe\0"
#endif #endif
VALUE "ProductName", "PLT Scheme\0" VALUE "ProductName", "PLT Scheme\0"
VALUE "ProductVersion", "4, 1, 1, 2\0" VALUE "ProductVersion", "4, 1, 1, 3\0"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"