From 56423f330e3079f16ea0e31fd289551551095a2f Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 16 Jun 2011 11:57:08 -0600 Subject: [PATCH] `procedure-arity-includes?' reports #f for keyword-requiring procs by default; a new optional argument restores the old behavior (but the default behavior is consistent with the old docs and with the vast majority of existing uses) The implementation is ugly for performance reasons. A new primitive `prop:arity-incomplete' property determines when to return #f for `procedure-arity-includes?' in default mode. A nicer implementation would be to redefine `procedure-arity-includes?' at the kw-proc level, but the bytecode optimizer's and JIT's treatment of the built-in `procedure-arity-includes?' is important. The implementation choice could be revisited after cross-module inlining is implemented. Closes PR 11978 --- collects/racket/contract/private/arrow.rkt | 6 +- collects/racket/private/kw.rkt | 4 +- collects/racket/private/pre-base.rkt | 3 +- collects/scheme/mzscheme.rkt | 3 +- .../scribblings/reference/procedures.scrbl | 12 +- collects/tests/racket/basic.rktl | 2 +- collects/tests/racket/procs.rktl | 16 +- src/racket/src/cstartup.inc | 831 +++++++++--------- src/racket/src/fun.c | 33 +- src/racket/src/schminc.h | 2 +- src/racket/src/schpriv.h | 2 + src/racket/src/schvers.h | 4 +- src/racket/src/struct.c | 7 + 13 files changed, 475 insertions(+), 450 deletions(-) diff --git a/collects/racket/contract/private/arrow.rkt b/collects/racket/contract/private/arrow.rkt index 63f6eb4ca8..679323ec60 100644 --- a/collects/racket/contract/private/arrow.rkt +++ b/collects/racket/contract/private/arrow.rkt @@ -425,7 +425,7 @@ v4 todo: (and (procedure? x) (if (base->-dom-rest/c ctc) (procedure-accepts-and-more? x l) - (procedure-arity-includes? x l)) + (procedure-arity-includes? x l #t)) (keywords-match (base->-mandatory-kwds ctc) (base->-optional-kwds ctc) x) #t)))) @@ -1720,8 +1720,8 @@ v4 todo: (define (procedure-arity-includes?/optionals f base optionals) (cond - [(zero? optionals) (procedure-arity-includes? f base)] - [else (and (procedure-arity-includes? f (+ base optionals)) + [(zero? optionals) (procedure-arity-includes? f base #t)] + [else (and (procedure-arity-includes? f (+ base optionals) #t) (procedure-arity-includes?/optionals f base (- optionals 1)))])) (define (keywords-match mandatory-kwds optional-kwds val) diff --git a/collects/racket/private/kw.rkt b/collects/racket/private/kw.rkt index 9ccbe3d208..1e57916213 100644 --- a/collects/racket/private/kw.rkt +++ b/collects/racket/private/kw.rkt @@ -145,7 +145,9 @@ (list (cons prop:arity-string generate-arity-string) (cons prop:named-keyword-procedure - (cons name fail-proc))) + (cons name fail-proc)) + (cons prop:incomplete-arity + #t)) (current-inspector) fail-proc)]) mk)) diff --git a/collects/racket/private/pre-base.rkt b/collects/racket/private/pre-base.rkt index 050bd886a7..a3eb687d0b 100644 --- a/collects/racket/private/pre-base.rkt +++ b/collects/racket/private/pre-base.rkt @@ -134,7 +134,8 @@ procedure-arity procedure-reduce-arity raise-arity-error procedure->method procedure-rename chaperone-procedure impersonate-procedure - assq assv assoc) + assq assv assoc + prop:incomplete-arity) (all-from "reqprov.rkt") (all-from-except "for.rkt" define-in-vector-like diff --git a/collects/scheme/mzscheme.rkt b/collects/scheme/mzscheme.rkt index c34b97add4..14c88355ea 100644 --- a/collects/scheme/mzscheme.rkt +++ b/collects/scheme/mzscheme.rkt @@ -63,7 +63,8 @@ hash-iterate-first hash-iterate-next hash-iterate-value hash-iterate-key log-message log-level? make-logger logger? current-logger logger-name - make-log-receiver log-receiver?) + make-log-receiver log-receiver? + prop:incomplete-arity) (rename syntax->datum syntax-object->datum) (rename datum->syntax datum->syntax-object) (rename free-identifier=? module-identifier=?) diff --git a/collects/scribblings/reference/procedures.scrbl b/collects/scribblings/reference/procedures.scrbl index fa07bdf85d..4afe9b18d0 100644 --- a/collects/scribblings/reference/procedures.scrbl +++ b/collects/scribblings/reference/procedures.scrbl @@ -168,15 +168,21 @@ elements. (procedure-arity (case-lambda [(x) 0] [(x y) 1])) ]} -@defproc[(procedure-arity-includes? [proc procedure?] [k exact-nonnegative-integer?]) +@defproc[(procedure-arity-includes? [proc procedure?] + [k exact-nonnegative-integer?] + [kws-ok? any/c #f]) boolean?]{ -Returns @scheme[#t] if the procedure can accept @scheme[k] arguments -when no keyword arguments are supplied, @scheme[#f] otherwise. +Returns @scheme[#t] if the procedure can accept @scheme[k] by-position +arguments, @scheme[#f] otherwise. If @racket[kws-ok?] is @racket[#f], +the result is @racket[#t] only if @racket[proc] has no required +keyword arguments. @mz-examples[ (procedure-arity-includes? cons 2) (procedure-arity-includes? display 3) +(procedure-arity-includes? (lambda (x #:y y) x) 1) +(procedure-arity-includes? (lambda (x #:y y) x) 1 #t) ]} @defproc[(procedure-reduce-arity [proc procedure?] diff --git a/collects/tests/racket/basic.rktl b/collects/tests/racket/basic.rktl index eb409e2af2..b970b995f3 100644 --- a/collects/tests/racket/basic.rktl +++ b/collects/tests/racket/basic.rktl @@ -1992,7 +1992,7 @@ (err/rt-test (procedure-arity-includes? cons 1.0)) (err/rt-test (procedure-arity-includes? 'cons 1)) -(arity-test procedure-arity-includes? 2 2) +(arity-test procedure-arity-includes? 2 3) (newline) (display ";testing scheme 4 functions; ") diff --git a/collects/tests/racket/procs.rktl b/collects/tests/racket/procs.rktl index ad5060609e..18d91ed949 100644 --- a/collects/tests/racket/procs.rktl +++ b/collects/tests/racket/procs.rktl @@ -93,7 +93,7 @@ ((arity-at-least-value a) . <= . 1)) (and (list? a) (ormap loop a))))]) - (test 1-ok? procedure-arity-includes? (car p) 1) + (test 1-ok? procedure-arity-includes? (car p) 1 #t) ;; While we're here test renaming, etc.: (test 'other object-name (procedure-rename (car p) 'other)) (test (procedure-arity (car p)) procedure-arity (procedure-rename (car p) 'other)) @@ -165,10 +165,10 @@ (let ([p (car p)]) (let-values ([(req allowed) (procedure-keywords p)]) (if (null? allowed) - (if (procedure-arity-includes? p 1) + (if (procedure-arity-includes? p 1 #t) (list (procedure-reduce-arity p 1) 1 req allowed p) (list (procedure-reduce-arity p '()) '() req allowed p)) - (if (procedure-arity-includes? p 1) + (if (procedure-arity-includes? p 1 #t) (list (procedure-reduce-keyword-arity p 1 req allowed) 1 req allowed p) (list (procedure-reduce-keyword-arity p '() req allowed) '() req allowed p)))))) procs) @@ -177,10 +177,10 @@ (let ([p (car p)]) (let-values ([(req allowed) (procedure-keywords p)]) (if (null? allowed) - (if (procedure-arity-includes? p 0) + (if (procedure-arity-includes? p 0 #t) (list (procedure-reduce-arity p 0) 0 req allowed p) (list (procedure-reduce-arity p '()) '() req allowed p)) - (if (procedure-arity-includes? p 0) + (if (procedure-arity-includes? p 0 #t) (list (procedure-reduce-keyword-arity p 0 req allowed) 0 req allowed p) (list (procedure-reduce-keyword-arity p '() req allowed) '() req allowed p)))))) procs) @@ -188,8 +188,7 @@ (map (lambda (p) (let ([p (car p)]) (let-values ([(req allowed) (procedure-keywords p)]) - (if (and (procedure-arity-includes? p 1) - (null? req)) + (if (procedure-arity-includes? p 1) (list* (procedure-reduce-arity p 1) 1 '() '() p (if (null? allowed) null @@ -200,8 +199,7 @@ (map (lambda (p) (let ([p (car p)]) (let-values ([(req allowed) (procedure-keywords p)]) - (if (and (procedure-arity-includes? p 0) - (null? req)) + (if (procedure-arity-includes? p 0) (list (procedure-reduce-arity p 0) 0 '() '() p) (list (procedure-reduce-arity p '()) '() '() '() p))))) procs) diff --git a/src/racket/src/cstartup.inc b/src/racket/src/cstartup.inc index 8349c0f7e0..d993d240b4 100644 --- a/src/racket/src/cstartup.inc +++ b/src/racket/src/cstartup.inc @@ -1,45 +1,45 @@ { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,49,46,53,0,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,49,46,54,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,51,0,0,0,1,0,0,10,0,13,0,22, -0,29,0,33,0,40,0,44,0,49,0,52,0,57,0,70,0,75,0,82,0, +0,26,0,31,0,38,0,45,0,50,0,55,0,59,0,72,0,79,0,82,0, 88,0,102,0,116,0,119,0,125,0,129,0,131,0,142,0,144,0,158,0,165, 0,187,0,189,0,203,0,14,1,43,1,54,1,65,1,75,1,111,1,144,1, 177,1,236,1,46,2,124,2,190,2,195,2,215,2,108,3,128,3,180,3,246, 3,131,4,17,5,69,5,92,5,171,5,0,0,119,7,0,0,69,35,37,109, -105,110,45,115,116,120,29,11,11,68,104,101,114,101,45,115,116,120,66,108,101, -116,114,101,99,63,108,101,116,66,100,101,102,105,110,101,63,97,110,100,64,108, -101,116,42,62,111,114,64,119,104,101,110,72,112,97,114,97,109,101,116,101,114, -105,122,101,64,99,111,110,100,66,117,110,108,101,115,115,65,113,117,111,116,101, +105,110,45,115,116,120,29,11,11,68,104,101,114,101,45,115,116,120,63,108,101, +116,64,99,111,110,100,66,117,110,108,101,115,115,66,100,101,102,105,110,101,64, +119,104,101,110,64,108,101,116,42,63,97,110,100,72,112,97,114,97,109,101,116, +101,114,105,122,101,66,108,101,116,114,101,99,62,111,114,65,113,117,111,116,101, 29,94,2,14,68,35,37,107,101,114,110,101,108,11,29,94,2,14,68,35,37, 112,97,114,97,109,122,11,62,105,102,65,98,101,103,105,110,63,115,116,120,61, 115,70,108,101,116,45,118,97,108,117,101,115,61,120,73,108,101,116,114,101,99, 45,118,97,108,117,101,115,66,108,97,109,98,100,97,1,20,112,97,114,97,109, 101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,61,118,73,100,101,102, -105,110,101,45,118,97,108,117,101,115,97,36,11,8,240,235,83,0,0,95,159, -2,16,36,36,159,2,15,36,36,159,2,15,36,36,16,20,2,5,2,2,2, -6,2,2,2,7,2,2,2,9,2,2,2,8,2,2,2,4,2,2,2,10, -2,2,2,11,2,2,2,12,2,2,2,13,2,2,97,37,11,8,240,235,83, +105,110,101,45,118,97,108,117,101,115,97,36,11,8,240,115,85,0,0,95,159, +2,16,36,36,159,2,15,36,36,159,2,15,36,36,16,20,2,4,2,2,2, +6,2,2,2,7,2,2,2,8,2,2,2,9,2,2,2,10,2,2,2,5, +2,2,2,11,2,2,2,12,2,2,2,13,2,2,97,37,11,8,240,115,85, 0,0,93,159,2,15,36,37,16,2,2,3,161,2,2,37,2,3,2,2,2, -3,96,11,11,8,240,235,83,0,0,16,0,96,38,11,8,240,235,83,0,0, +3,96,38,11,8,240,115,85,0,0,16,0,96,11,11,8,240,115,85,0,0, 16,0,13,16,4,36,29,11,11,2,2,11,18,16,2,99,64,104,101,114,101, -8,32,8,31,8,30,8,29,8,28,93,8,224,242,83,0,0,95,9,8,224, -242,83,0,0,2,2,27,248,22,155,4,195,249,22,148,4,80,158,39,36,251, +8,32,8,31,8,30,8,29,8,28,93,8,224,122,85,0,0,95,9,8,224, +122,85,0,0,2,2,27,248,22,155,4,195,249,22,148,4,80,158,39,36,251, 22,83,2,17,248,22,98,199,12,249,22,73,2,18,248,22,100,201,27,248,22, 155,4,195,249,22,148,4,80,158,39,36,251,22,83,2,17,248,22,98,199,249, 22,73,2,18,248,22,100,201,12,27,248,22,75,248,22,155,4,196,28,248,22, 81,193,20,14,159,37,36,37,28,248,22,81,248,22,75,194,248,22,74,193,249, -22,148,4,80,158,39,36,251,22,83,2,17,248,22,74,199,249,22,73,2,7, +22,148,4,80,158,39,36,251,22,83,2,17,248,22,74,199,249,22,73,2,10, 248,22,75,201,11,18,16,2,101,10,8,32,8,31,8,30,8,29,8,28,16, -4,11,11,2,19,3,1,8,101,110,118,49,51,55,49,57,16,4,11,11,2, -20,3,1,8,101,110,118,49,51,55,50,48,93,8,224,243,83,0,0,95,9, -8,224,243,83,0,0,2,2,27,248,22,75,248,22,155,4,196,28,248,22,81, +4,11,11,2,19,3,1,8,101,110,118,49,52,48,54,56,16,4,11,11,2, +20,3,1,8,101,110,118,49,52,48,54,57,93,8,224,123,85,0,0,95,9, +8,224,123,85,0,0,2,2,27,248,22,75,248,22,155,4,196,28,248,22,81, 193,20,14,159,37,36,37,28,248,22,81,248,22,75,194,248,22,74,193,249,22, 148,4,80,158,39,36,250,22,83,2,21,248,22,83,249,22,83,248,22,83,2, -22,248,22,74,201,251,22,83,2,17,2,22,2,22,249,22,73,2,9,248,22, +22,248,22,74,201,251,22,83,2,17,2,22,2,22,249,22,73,2,13,248,22, 75,204,18,16,2,101,11,8,32,8,31,8,30,8,29,8,28,16,4,11,11, -2,19,3,1,8,101,110,118,49,51,55,50,50,16,4,11,11,2,20,3,1, -8,101,110,118,49,51,55,50,51,93,8,224,244,83,0,0,95,9,8,224,244, -83,0,0,2,2,248,22,155,4,193,27,248,22,155,4,194,249,22,73,248,22, +2,19,3,1,8,101,110,118,49,52,48,55,49,16,4,11,11,2,20,3,1, +8,101,110,118,49,52,48,55,50,93,8,224,124,85,0,0,95,9,8,224,124, +85,0,0,2,2,248,22,155,4,193,27,248,22,155,4,194,249,22,73,248,22, 83,248,22,74,196,248,22,75,195,27,248,22,75,248,22,155,4,23,197,1,249, 22,148,4,80,158,39,36,28,248,22,58,248,22,149,4,248,22,74,23,198,2, 27,249,22,2,32,0,88,163,8,36,37,43,11,9,222,33,40,248,22,155,4, @@ -53,7 +53,7 @@ 36,37,47,11,9,222,33,43,248,22,155,4,248,22,74,201,248,22,75,198,27, 248,22,75,248,22,155,4,196,27,248,22,155,4,248,22,74,195,249,22,148,4, 80,158,40,36,28,248,22,81,195,250,22,84,2,21,9,248,22,75,199,250,22, -83,2,5,248,22,83,248,22,74,199,250,22,84,2,8,248,22,75,201,248,22, +83,2,4,248,22,83,248,22,74,199,250,22,84,2,9,248,22,75,201,248,22, 75,202,27,248,22,75,248,22,155,4,23,197,1,27,249,22,1,22,87,249,22, 2,22,155,4,248,22,155,4,248,22,74,199,249,22,148,4,80,158,40,36,251, 22,83,1,22,119,105,116,104,45,99,111,110,116,105,110,117,97,116,105,111,110, @@ -64,13 +64,13 @@ 248,22,155,4,196,28,248,22,81,193,20,14,159,37,36,37,249,22,148,4,80, 158,39,36,27,248,22,155,4,248,22,74,197,28,249,22,135,9,62,61,62,248, 22,149,4,248,22,98,196,250,22,83,2,21,248,22,83,249,22,83,21,93,2, -26,248,22,74,199,250,22,84,2,12,249,22,83,2,26,249,22,83,248,22,107, +26,248,22,74,199,250,22,84,2,5,249,22,83,2,26,249,22,83,248,22,107, 203,2,26,248,22,75,202,251,22,83,2,17,28,249,22,135,9,248,22,149,4, 248,22,74,200,64,101,108,115,101,10,248,22,74,197,250,22,84,2,21,9,248, -22,75,200,249,22,73,2,12,248,22,75,202,100,8,32,8,31,8,30,8,29, -8,28,16,4,11,11,2,19,3,1,8,101,110,118,49,51,55,52,53,16,4, -11,11,2,20,3,1,8,101,110,118,49,51,55,52,54,93,8,224,245,83,0, -0,18,16,2,158,94,10,64,118,111,105,100,8,48,95,9,8,224,245,83,0, +22,75,200,249,22,73,2,5,248,22,75,202,100,8,32,8,31,8,30,8,29, +8,28,16,4,11,11,2,19,3,1,8,101,110,118,49,52,48,57,52,16,4, +11,11,2,20,3,1,8,101,110,118,49,52,48,57,53,93,8,224,125,85,0, +0,18,16,2,158,94,10,64,118,111,105,100,8,48,95,9,8,224,125,85,0, 0,2,2,27,248,22,75,248,22,155,4,196,249,22,148,4,80,158,39,36,28, 248,22,58,248,22,149,4,248,22,74,197,250,22,83,2,27,248,22,83,248,22, 74,199,248,22,98,198,27,248,22,149,4,248,22,74,197,250,22,83,2,27,248, @@ -82,25 +82,25 @@ 11,11,11,16,10,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11, 2,12,2,13,36,46,37,11,11,11,16,0,16,0,16,0,36,36,11,11,11, 11,16,0,16,0,16,0,36,36,16,11,16,5,2,3,20,14,159,36,36,36, -36,20,112,159,36,16,0,16,1,33,33,10,16,5,2,13,88,163,8,36,37, +36,20,112,159,36,16,0,16,1,33,33,10,16,5,2,6,88,163,8,36,37, 53,37,9,223,0,33,34,36,20,112,159,36,16,1,2,3,16,0,11,16,5, -2,10,88,163,8,36,37,53,37,9,223,0,33,35,36,20,112,159,36,16,1, -2,3,16,0,11,16,5,2,7,88,163,8,36,37,53,37,9,223,0,33,36, -36,20,112,159,36,16,1,2,3,16,1,33,37,11,16,5,2,9,88,163,8, +2,8,88,163,8,36,37,53,37,9,223,0,33,35,36,20,112,159,36,16,1, +2,3,16,0,11,16,5,2,10,88,163,8,36,37,53,37,9,223,0,33,36, +36,20,112,159,36,16,1,2,3,16,1,33,37,11,16,5,2,13,88,163,8, 36,37,56,37,9,223,0,33,38,36,20,112,159,36,16,1,2,3,16,1,33, -39,11,16,5,2,5,88,163,8,36,37,58,37,9,223,0,33,42,36,20,112, -159,36,16,1,2,3,16,0,11,16,5,2,4,88,163,8,36,37,53,37,9, -223,0,33,44,36,20,112,159,36,16,1,2,3,16,0,11,16,5,2,8,88, +39,11,16,5,2,4,88,163,8,36,37,58,37,9,223,0,33,42,36,20,112, +159,36,16,1,2,3,16,0,11,16,5,2,12,88,163,8,36,37,53,37,9, +223,0,33,44,36,20,112,159,36,16,1,2,3,16,0,11,16,5,2,9,88, 163,8,36,37,54,37,9,223,0,33,45,36,20,112,159,36,16,1,2,3,16, 0,11,16,5,2,11,88,163,8,36,37,55,37,9,223,0,33,46,36,20,112, -159,36,16,1,2,3,16,0,11,16,5,2,12,88,163,8,36,37,58,37,9, +159,36,16,1,2,3,16,0,11,16,5,2,5,88,163,8,36,37,58,37,9, 223,0,33,47,36,20,112,159,36,16,1,2,3,16,1,33,49,11,16,5,2, -6,88,163,8,36,37,54,37,9,223,0,33,50,36,20,112,159,36,16,1,2, +7,88,163,8,36,37,54,37,9,223,0,33,50,36,20,112,159,36,16,1,2, 3,16,0,11,16,0,94,2,15,2,16,93,2,15,9,9,36,0}; EVAL_ONE_SIZED_STR((char *)expr, 2054); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,49,46,53,0,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,49,46,54,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,82,0,0,0,1,0,0,8,0,21,0,26, 0,43,0,58,0,76,0,92,0,106,0,128,0,146,0,166,0,182,0,200,0, 231,0,4,1,26,1,40,1,46,1,60,1,65,1,75,1,83,1,111,1,143, @@ -140,411 +140,411 @@ 11,11,80,76,84,67,79,76,76,69,67,84,83,6,0,0,6,0,0,69,97, 100,100,111,110,45,100,105,114,6,8,8,99,111,108,108,101,99,116,115,72,99, 111,108,108,101,99,116,115,45,100,105,114,5,0,5,0,27,20,13,159,80,159, -37,52,38,250,80,159,40,53,38,249,22,27,11,80,159,42,52,38,22,178,13, +37,52,38,250,80,159,40,53,38,249,22,27,11,80,159,42,52,38,22,179,13, 10,248,22,185,5,23,196,2,28,248,22,184,6,23,194,2,12,86,94,248,22, 143,9,23,194,1,27,20,13,159,80,159,38,52,38,250,80,159,41,53,38,249, -22,27,11,80,159,43,52,38,22,178,13,10,248,22,185,5,23,197,2,28,248, +22,27,11,80,159,43,52,38,22,179,13,10,248,22,185,5,23,197,2,28,248, 22,184,6,23,194,2,12,86,94,248,22,143,9,23,194,1,27,20,13,159,80, -159,39,52,38,250,80,159,42,53,38,249,22,27,11,80,159,44,52,38,22,178, +159,39,52,38,250,80,159,42,53,38,249,22,27,11,80,159,44,52,38,22,179, 13,10,248,22,185,5,23,198,2,28,248,22,184,6,23,194,2,12,86,94,248, 22,143,9,23,194,1,248,80,159,40,57,37,197,28,248,22,81,23,195,2,9, -27,248,22,74,23,196,2,27,28,248,22,164,14,23,195,2,23,194,1,28,248, -22,163,14,23,195,2,249,22,165,14,23,196,1,250,80,158,43,50,248,22,180, -14,2,21,11,10,250,80,158,41,50,248,22,180,14,2,21,23,197,1,10,28, -23,193,2,249,22,73,248,22,167,14,249,22,165,14,23,198,1,247,22,181,14, +27,248,22,74,23,196,2,27,28,248,22,165,14,23,195,2,23,194,1,28,248, +22,164,14,23,195,2,249,22,166,14,23,196,1,250,80,158,43,50,248,22,181, +14,2,21,11,10,250,80,158,41,50,248,22,181,14,2,21,23,197,1,10,28, +23,193,2,249,22,73,248,22,168,14,249,22,166,14,23,198,1,247,22,182,14, 27,248,22,75,23,200,1,28,248,22,81,23,194,2,9,27,248,22,74,23,195, -2,27,28,248,22,164,14,23,195,2,23,194,1,28,248,22,163,14,23,195,2, -249,22,165,14,23,196,1,250,80,158,48,50,248,22,180,14,2,21,11,10,250, -80,158,46,50,248,22,180,14,2,21,23,197,1,10,28,23,193,2,249,22,73, -248,22,167,14,249,22,165,14,23,198,1,247,22,181,14,248,80,159,46,56,37, +2,27,28,248,22,165,14,23,195,2,23,194,1,28,248,22,164,14,23,195,2, +249,22,166,14,23,196,1,250,80,158,48,50,248,22,181,14,2,21,11,10,250, +80,158,46,50,248,22,181,14,2,21,23,197,1,10,28,23,193,2,249,22,73, +248,22,168,14,249,22,166,14,23,198,1,247,22,182,14,248,80,159,46,56,37, 248,22,75,23,199,1,86,94,23,193,1,248,80,159,44,56,37,248,22,75,23, 197,1,86,94,23,193,1,27,248,22,75,23,198,1,28,248,22,81,23,194,2, -9,27,248,22,74,23,195,2,27,28,248,22,164,14,23,195,2,23,194,1,28, -248,22,163,14,23,195,2,249,22,165,14,23,196,1,250,80,158,46,50,248,22, -180,14,2,21,11,10,250,80,158,44,50,248,22,180,14,2,21,23,197,1,10, -28,23,193,2,249,22,73,248,22,167,14,249,22,165,14,23,198,1,247,22,181, +9,27,248,22,74,23,195,2,27,28,248,22,165,14,23,195,2,23,194,1,28, +248,22,164,14,23,195,2,249,22,166,14,23,196,1,250,80,158,46,50,248,22, +181,14,2,21,11,10,250,80,158,44,50,248,22,181,14,2,21,23,197,1,10, +28,23,193,2,249,22,73,248,22,168,14,249,22,166,14,23,198,1,247,22,182, 14,248,80,159,44,56,37,248,22,75,23,199,1,248,80,159,42,56,37,248,22, 75,196,28,248,22,81,23,195,2,9,27,248,22,74,23,196,2,27,28,248,22, -164,14,23,195,2,23,194,1,28,248,22,163,14,23,195,2,249,22,165,14,23, -196,1,250,80,158,43,50,248,22,180,14,2,21,11,10,250,80,158,41,50,248, -22,180,14,2,21,23,197,1,10,28,23,193,2,249,22,73,248,22,167,14,249, -22,165,14,23,198,1,247,22,181,14,248,80,159,41,55,37,248,22,75,23,200, +165,14,23,195,2,23,194,1,28,248,22,164,14,23,195,2,249,22,166,14,23, +196,1,250,80,158,43,50,248,22,181,14,2,21,11,10,250,80,158,41,50,248, +22,181,14,2,21,23,197,1,10,28,23,193,2,249,22,73,248,22,168,14,249, +22,166,14,23,198,1,247,22,182,14,248,80,159,41,55,37,248,22,75,23,200, 1,248,80,159,39,55,37,248,22,75,197,28,248,22,81,23,195,2,9,27,248, -22,74,23,196,2,27,28,248,22,164,14,23,195,2,23,194,1,28,248,22,163, -14,23,195,2,249,22,165,14,23,196,1,250,80,158,43,50,248,22,180,14,2, -21,11,10,250,80,158,41,50,248,22,180,14,2,21,23,197,1,10,28,23,193, -2,249,22,73,248,22,167,14,249,22,165,14,23,198,1,247,22,181,14,248,80, +22,74,23,196,2,27,28,248,22,165,14,23,195,2,23,194,1,28,248,22,164, +14,23,195,2,249,22,166,14,23,196,1,250,80,158,43,50,248,22,181,14,2, +21,11,10,250,80,158,41,50,248,22,181,14,2,21,23,197,1,10,28,23,193, +2,249,22,73,248,22,168,14,249,22,166,14,23,198,1,247,22,182,14,248,80, 159,41,54,37,248,22,75,23,200,1,248,80,159,39,54,37,248,22,75,197,27, -248,22,140,14,23,195,2,28,23,193,2,192,86,94,23,193,1,28,248,22,189, -6,23,195,2,27,248,22,162,14,195,28,192,192,248,22,163,14,195,11,86,94, -28,28,248,22,141,14,23,195,2,10,28,248,22,140,14,23,195,2,10,28,248, -22,189,6,23,195,2,28,248,22,162,14,23,195,2,10,248,22,163,14,23,195, +248,22,141,14,23,195,2,28,23,193,2,192,86,94,23,193,1,28,248,22,189, +6,23,195,2,27,248,22,163,14,195,28,192,192,248,22,164,14,195,11,86,94, +28,28,248,22,142,14,23,195,2,10,28,248,22,141,14,23,195,2,10,28,248, +22,189,6,23,195,2,28,248,22,163,14,23,195,2,10,248,22,164,14,23,195, 2,11,12,250,22,171,9,76,110,111,114,109,97,108,45,112,97,116,104,45,99, 97,115,101,6,42,42,112,97,116,104,32,40,102,111,114,32,97,110,121,32,115, 121,115,116,101,109,41,32,111,114,32,118,97,108,105,100,45,112,97,116,104,32, -115,116,114,105,110,103,23,197,2,28,28,248,22,141,14,23,195,2,249,22,135, -9,248,22,142,14,23,197,2,2,22,249,22,135,9,247,22,147,8,2,22,27, -28,248,22,189,6,23,196,2,23,195,2,248,22,137,8,248,22,145,14,23,197, -2,28,249,22,131,15,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,189,6,195,248,22,148,14, -195,194,27,248,22,164,7,23,195,1,249,22,149,14,248,22,140,8,250,22,139, -15,0,6,35,114,120,34,47,34,28,249,22,131,15,0,22,35,114,120,34,91, +115,116,114,105,110,103,23,197,2,28,28,248,22,142,14,23,195,2,249,22,135, +9,248,22,143,14,23,197,2,2,22,249,22,135,9,247,22,147,8,2,22,27, +28,248,22,189,6,23,196,2,23,195,2,248,22,137,8,248,22,146,14,23,197, +2,28,249,22,132,15,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,189,6,195,248,22,149,14, +195,194,27,248,22,164,7,23,195,1,249,22,150,14,248,22,140,8,250,22,140, +15,0,6,35,114,120,34,47,34,28,249,22,132,15,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,139,15,0,19,35,114,120,34,91,32,46,93,43,40,91,47,92, +199,1,250,22,140,15,0,19,35,114,120,34,91,32,46,93,43,40,91,47,92, 92,93,42,41,36,34,23,202,1,6,2,2,92,49,80,159,44,37,38,2,22, -28,248,22,189,6,194,248,22,148,14,194,193,86,94,28,28,248,22,140,14,23, -195,2,10,28,248,22,189,6,23,195,2,28,248,22,162,14,23,195,2,10,248, -22,163,14,23,195,2,11,12,250,22,171,9,23,196,2,2,23,23,197,2,28, -248,22,162,14,23,195,2,12,248,22,154,12,249,22,160,11,248,22,154,7,250, -22,173,7,2,24,23,200,1,23,201,1,247,22,23,86,94,28,28,248,22,140, -14,23,195,2,10,28,248,22,189,6,23,195,2,28,248,22,162,14,23,195,2, -10,248,22,163,14,23,195,2,11,12,250,22,171,9,23,196,2,2,23,23,197, -2,28,248,22,162,14,23,195,2,12,248,22,154,12,249,22,160,11,248,22,154, +28,248,22,189,6,194,248,22,149,14,194,193,86,94,28,28,248,22,141,14,23, +195,2,10,28,248,22,189,6,23,195,2,28,248,22,163,14,23,195,2,10,248, +22,164,14,23,195,2,11,12,250,22,171,9,23,196,2,2,23,23,197,2,28, +248,22,163,14,23,195,2,12,248,22,155,12,249,22,161,11,248,22,154,7,250, +22,173,7,2,24,23,200,1,23,201,1,247,22,23,86,94,28,28,248,22,141, +14,23,195,2,10,28,248,22,189,6,23,195,2,28,248,22,163,14,23,195,2, +10,248,22,164,14,23,195,2,11,12,250,22,171,9,23,196,2,2,23,23,197, +2,28,248,22,163,14,23,195,2,12,248,22,155,12,249,22,161,11,248,22,154, 7,250,22,173,7,2,24,23,200,1,23,201,1,247,22,23,86,94,86,94,28, -28,248,22,140,14,23,195,2,10,28,248,22,189,6,23,195,2,28,248,22,162, -14,23,195,2,10,248,22,163,14,23,195,2,11,12,250,22,171,9,195,2,23, -23,197,2,28,248,22,162,14,23,195,2,12,248,22,154,12,249,22,160,11,248, +28,248,22,141,14,23,195,2,10,28,248,22,189,6,23,195,2,28,248,22,163, +14,23,195,2,10,248,22,164,14,23,195,2,11,12,250,22,171,9,195,2,23, +23,197,2,28,248,22,163,14,23,195,2,12,248,22,155,12,249,22,161,11,248, 22,154,7,250,22,173,7,2,24,199,23,201,1,247,22,23,249,22,3,88,163, -8,36,37,50,11,9,223,2,33,47,196,86,94,28,28,248,22,140,14,23,194, -2,10,28,248,22,189,6,23,194,2,28,248,22,162,14,23,194,2,10,248,22, -163,14,23,194,2,11,12,250,22,171,9,2,7,2,23,23,196,2,28,248,22, -162,14,23,194,2,12,248,22,154,12,249,22,160,11,248,22,154,7,250,22,173, +8,36,37,50,11,9,223,2,33,47,196,86,94,28,28,248,22,141,14,23,194, +2,10,28,248,22,189,6,23,194,2,28,248,22,163,14,23,194,2,10,248,22, +164,14,23,194,2,11,12,250,22,171,9,2,7,2,23,23,196,2,28,248,22, +163,14,23,194,2,12,248,22,155,12,249,22,161,11,248,22,154,7,250,22,173, 7,2,24,2,7,23,200,1,247,22,23,32,50,88,163,8,36,41,56,11,2, 26,222,33,51,28,248,22,81,23,197,2,86,94,23,196,1,28,23,197,2,196, -86,94,23,197,1,248,22,154,12,249,22,129,12,251,22,173,7,2,25,2,7, -28,248,22,81,23,203,2,86,94,23,202,1,23,201,1,250,22,1,22,158,14, -23,204,1,23,205,1,23,200,1,247,22,23,27,249,22,158,14,248,22,74,23, -200,2,23,197,2,28,248,22,153,14,23,194,2,27,250,22,1,22,158,14,23, -197,1,199,28,248,22,153,14,193,192,252,2,50,199,200,201,248,22,75,203,203, +86,94,23,197,1,248,22,155,12,249,22,130,12,251,22,173,7,2,25,2,7, +28,248,22,81,23,203,2,86,94,23,202,1,23,201,1,250,22,1,22,159,14, +23,204,1,23,205,1,23,200,1,247,22,23,27,249,22,159,14,248,22,74,23, +200,2,23,197,2,28,248,22,154,14,23,194,2,27,250,22,1,22,159,14,23, +197,1,199,28,248,22,154,14,193,192,252,2,50,199,200,201,248,22,75,203,203, 252,2,50,198,199,200,248,22,75,202,202,86,94,86,94,86,94,28,28,248,22, -140,14,23,194,2,10,28,248,22,189,6,23,194,2,28,248,22,162,14,23,194, -2,10,248,22,163,14,23,194,2,11,12,250,22,171,9,2,7,2,23,23,196, -2,28,248,22,162,14,23,194,2,12,248,22,154,12,249,22,160,11,248,22,154, +141,14,23,194,2,10,28,248,22,189,6,23,194,2,28,248,22,163,14,23,194, +2,10,248,22,164,14,23,194,2,11,12,250,22,171,9,2,7,2,23,23,196, +2,28,248,22,163,14,23,194,2,12,248,22,155,12,249,22,161,11,248,22,154, 7,250,22,173,7,2,24,2,7,23,200,2,247,22,23,249,22,3,32,0,88, -163,8,36,37,49,11,9,222,33,49,23,196,2,27,247,22,182,14,28,248,22, -81,23,194,2,248,22,154,12,249,22,129,12,251,22,173,7,2,25,2,7,28, -248,22,81,23,203,2,86,94,23,202,1,23,201,1,250,22,1,22,158,14,23, -204,1,23,205,1,23,200,1,247,22,23,27,249,22,158,14,248,22,74,23,197, -2,23,197,2,28,248,22,153,14,23,194,2,27,250,22,1,22,158,14,23,197, -1,199,28,248,22,153,14,193,192,252,2,50,199,200,201,248,22,75,200,11,252, -2,50,198,199,200,248,22,75,199,11,86,94,28,28,248,22,140,14,23,194,2, -10,28,248,22,189,6,23,194,2,28,248,22,162,14,23,194,2,10,248,22,163, -14,23,194,2,11,12,250,22,171,9,2,9,2,23,23,196,2,28,248,22,162, -14,23,194,2,12,248,22,154,12,249,22,160,11,248,22,154,7,250,22,173,7, +163,8,36,37,49,11,9,222,33,49,23,196,2,27,247,22,183,14,28,248,22, +81,23,194,2,248,22,155,12,249,22,130,12,251,22,173,7,2,25,2,7,28, +248,22,81,23,203,2,86,94,23,202,1,23,201,1,250,22,1,22,159,14,23, +204,1,23,205,1,23,200,1,247,22,23,27,249,22,159,14,248,22,74,23,197, +2,23,197,2,28,248,22,154,14,23,194,2,27,250,22,1,22,159,14,23,197, +1,199,28,248,22,154,14,193,192,252,2,50,199,200,201,248,22,75,200,11,252, +2,50,198,199,200,248,22,75,199,11,86,94,28,28,248,22,141,14,23,194,2, +10,28,248,22,189,6,23,194,2,28,248,22,163,14,23,194,2,10,248,22,164, +14,23,194,2,11,12,250,22,171,9,2,9,2,23,23,196,2,28,248,22,163, +14,23,194,2,12,248,22,155,12,249,22,161,11,248,22,154,7,250,22,173,7, 2,24,2,9,23,200,1,247,22,23,32,54,88,163,8,36,42,59,11,2,26, 222,33,55,28,248,22,81,23,198,2,86,95,23,197,1,23,194,1,28,23,198, -2,197,86,94,23,198,1,248,22,154,12,249,22,129,12,251,22,173,7,2,25, +2,197,86,94,23,198,1,248,22,155,12,249,22,130,12,251,22,173,7,2,25, 2,9,28,248,22,81,23,204,2,86,94,23,203,1,23,202,1,250,22,1,22, -158,14,23,205,1,23,206,1,23,200,1,247,22,23,27,249,22,158,14,248,22, -74,23,201,2,23,198,2,28,248,22,153,14,23,194,2,27,250,22,1,22,158, -14,23,197,1,23,201,2,28,248,22,153,14,23,194,2,28,23,196,2,28,28, -248,22,152,14,249,22,158,14,195,198,10,27,28,248,22,140,14,197,248,22,144, +159,14,23,205,1,23,206,1,23,200,1,247,22,23,27,249,22,159,14,248,22, +74,23,201,2,23,198,2,28,248,22,154,14,23,194,2,27,250,22,1,22,159, +14,23,197,1,23,201,2,28,248,22,154,14,23,194,2,28,23,196,2,28,28, +248,22,153,14,249,22,159,14,195,198,10,27,28,248,22,141,14,197,248,22,145, 14,197,196,27,248,22,128,7,23,195,2,27,28,249,22,188,3,23,196,2,40, 28,249,22,131,7,2,27,249,22,147,7,23,199,2,249,22,176,3,23,200,2, 40,249,22,148,7,250,22,147,7,23,200,1,36,249,22,176,3,23,201,1,40, -2,28,86,95,23,195,1,23,194,1,11,11,28,23,193,2,248,22,152,14,249, -22,158,14,198,23,196,1,11,192,253,2,54,200,201,202,203,248,22,75,205,28, +2,28,86,95,23,195,1,23,194,1,11,11,28,23,193,2,248,22,153,14,249, +22,159,14,198,23,196,1,11,192,253,2,54,200,201,202,203,248,22,75,205,28, 205,205,198,192,253,2,54,200,201,202,203,248,22,75,205,205,253,2,54,199,200, -201,202,248,22,75,204,204,86,95,86,94,28,28,248,22,140,14,193,10,28,248, -22,189,6,193,28,248,22,162,14,193,10,248,22,163,14,193,11,12,250,22,171, -9,2,9,2,23,195,28,248,22,162,14,193,12,248,22,154,12,249,22,160,11, +201,202,248,22,75,204,204,86,95,86,94,28,28,248,22,141,14,193,10,28,248, +22,189,6,193,28,248,22,163,14,193,10,248,22,164,14,193,11,12,250,22,171, +9,2,9,2,23,195,28,248,22,163,14,193,12,248,22,155,12,249,22,161,11, 248,22,154,7,250,22,173,7,2,24,2,9,199,247,22,23,86,94,86,94,28, -28,248,22,140,14,23,195,2,10,28,248,22,189,6,23,195,2,28,248,22,162, -14,23,195,2,10,248,22,163,14,23,195,2,11,12,250,22,171,9,2,9,2, -23,23,197,2,28,248,22,162,14,23,195,2,12,248,22,154,12,249,22,160,11, +28,248,22,141,14,23,195,2,10,28,248,22,189,6,23,195,2,28,248,22,163, +14,23,195,2,10,248,22,164,14,23,195,2,11,12,250,22,171,9,2,9,2, +23,23,197,2,28,248,22,163,14,23,195,2,12,248,22,155,12,249,22,161,11, 248,22,154,7,250,22,173,7,2,24,2,9,23,201,2,247,22,23,249,22,3, -32,0,88,163,8,36,37,49,11,9,222,33,53,23,197,2,249,22,158,14,27, -247,22,182,14,253,2,54,23,199,2,201,23,203,1,23,204,1,23,199,1,11, +32,0,88,163,8,36,37,49,11,9,222,33,53,23,197,2,249,22,159,14,27, +247,22,183,14,253,2,54,23,199,2,201,23,203,1,23,204,1,23,199,1,11, 194,32,57,88,163,36,44,8,29,11,2,26,222,33,58,28,248,22,81,23,200, 2,86,95,23,199,1,23,198,1,28,23,200,2,199,86,94,23,200,1,248,23, 196,1,251,22,173,7,2,25,23,199,1,28,248,22,81,23,203,2,86,94,23, -202,1,23,201,1,250,22,1,22,158,14,23,204,1,23,205,1,23,198,1,27, -249,22,158,14,248,22,74,23,203,2,23,199,2,28,248,22,153,14,23,194,2, -27,250,22,1,22,158,14,23,197,1,23,202,2,28,248,22,153,14,23,194,2, -28,23,200,2,28,28,248,22,152,14,249,22,158,14,23,196,2,23,203,2,10, -27,28,248,22,140,14,23,202,2,248,22,144,14,23,202,2,23,201,2,27,248, +202,1,23,201,1,250,22,1,22,159,14,23,204,1,23,205,1,23,198,1,27, +249,22,159,14,248,22,74,23,203,2,23,199,2,28,248,22,154,14,23,194,2, +27,250,22,1,22,159,14,23,197,1,23,202,2,28,248,22,154,14,23,194,2, +28,23,200,2,28,28,248,22,153,14,249,22,159,14,23,196,2,23,203,2,10, +27,28,248,22,141,14,23,202,2,248,22,145,14,23,202,2,23,201,2,27,248, 22,128,7,23,195,2,27,28,249,22,188,3,23,196,2,40,28,249,22,131,7, 2,27,249,22,147,7,23,199,2,249,22,176,3,23,200,2,40,249,22,148,7, 250,22,147,7,23,200,1,36,249,22,176,3,23,201,1,40,2,28,86,95,23, -195,1,23,194,1,11,11,28,23,193,2,248,22,152,14,249,22,158,14,23,199, +195,1,23,194,1,11,11,28,23,193,2,248,22,153,14,249,22,159,14,23,199, 2,23,196,1,11,192,27,248,22,75,23,203,1,27,28,23,204,2,86,94,23, 195,1,23,204,1,86,94,23,204,1,23,195,1,28,248,22,81,23,195,2,86, 95,23,202,1,23,194,1,28,23,193,2,192,86,94,23,193,1,248,23,200,1, 251,22,173,7,2,25,23,203,1,28,248,22,81,23,207,2,86,94,23,206,1, -23,205,1,250,22,1,22,158,14,23,208,1,23,209,1,23,202,1,27,249,22, -158,14,248,22,74,23,198,2,23,203,2,28,248,22,153,14,23,194,2,27,250, -22,1,22,158,14,23,197,1,23,206,2,28,248,22,153,14,23,194,2,28,23, -204,2,28,28,248,22,152,14,249,22,158,14,195,206,10,27,28,248,22,140,14, -205,248,22,144,14,205,204,27,248,22,128,7,23,195,2,27,28,249,22,188,3, +23,205,1,250,22,1,22,159,14,23,208,1,23,209,1,23,202,1,27,249,22, +159,14,248,22,74,23,198,2,23,203,2,28,248,22,154,14,23,194,2,27,250, +22,1,22,159,14,23,197,1,23,206,2,28,248,22,154,14,23,194,2,28,23, +204,2,28,28,248,22,153,14,249,22,159,14,195,206,10,27,28,248,22,141,14, +205,248,22,145,14,205,204,27,248,22,128,7,23,195,2,27,28,249,22,188,3, 23,196,2,40,28,249,22,131,7,2,27,249,22,147,7,23,199,2,249,22,176, 3,23,200,2,40,249,22,148,7,250,22,147,7,23,200,1,36,249,22,176,3, 23,201,1,40,2,28,86,95,23,195,1,23,194,1,11,11,28,23,193,2,248, -22,152,14,249,22,158,14,198,23,196,1,11,192,26,8,2,57,206,23,15,23, +22,153,14,249,22,159,14,198,23,196,1,11,192,26,8,2,57,206,23,15,23, 16,23,17,23,18,23,19,248,22,75,204,28,202,202,200,192,26,8,2,57,206, 23,15,23,16,23,17,23,18,23,19,248,22,75,204,202,26,8,2,57,205,206, 23,15,23,16,23,17,23,18,248,22,75,203,201,192,27,248,22,75,23,203,1, 28,248,22,81,23,194,2,86,95,23,201,1,23,193,1,28,23,203,2,202,86, 94,23,203,1,248,23,199,1,251,22,173,7,2,25,23,202,1,28,248,22,81, -23,206,2,86,94,23,205,1,23,204,1,250,22,1,22,158,14,23,207,1,23, -208,1,23,201,1,27,249,22,158,14,248,22,74,23,197,2,23,202,2,28,248, -22,153,14,23,194,2,27,250,22,1,22,158,14,23,197,1,23,205,2,28,248, -22,153,14,23,194,2,28,23,203,2,28,28,248,22,152,14,249,22,158,14,195, -205,10,27,28,248,22,140,14,204,248,22,144,14,204,203,27,248,22,128,7,23, +23,206,2,86,94,23,205,1,23,204,1,250,22,1,22,159,14,23,207,1,23, +208,1,23,201,1,27,249,22,159,14,248,22,74,23,197,2,23,202,2,28,248, +22,154,14,23,194,2,27,250,22,1,22,159,14,23,197,1,23,205,2,28,248, +22,154,14,23,194,2,28,23,203,2,28,28,248,22,153,14,249,22,159,14,195, +205,10,27,28,248,22,141,14,204,248,22,145,14,204,203,27,248,22,128,7,23, 195,2,27,28,249,22,188,3,23,196,2,40,28,249,22,131,7,2,27,249,22, 147,7,23,199,2,249,22,176,3,23,200,2,40,249,22,148,7,250,22,147,7, 23,200,1,36,249,22,176,3,23,201,1,40,2,28,86,95,23,195,1,23,194, -1,11,11,28,23,193,2,248,22,152,14,249,22,158,14,198,23,196,1,11,192, +1,11,11,28,23,193,2,248,22,153,14,249,22,159,14,198,23,196,1,11,192, 26,8,2,57,205,206,23,15,23,16,23,17,23,18,248,22,75,203,28,23,20, 23,20,200,192,26,8,2,57,205,206,23,15,23,16,23,17,23,18,248,22,75, 203,23,20,26,8,2,57,204,205,206,23,15,23,16,23,17,248,22,75,202,23, 19,86,94,23,193,1,27,248,22,75,23,202,1,28,248,22,81,23,194,2,86, 95,23,200,1,23,193,1,28,23,202,2,201,86,94,23,202,1,248,23,198,1, 251,22,173,7,2,25,23,201,1,28,248,22,81,23,205,2,86,94,23,204,1, -23,203,1,250,22,1,22,158,14,23,206,1,23,207,1,23,200,1,27,249,22, -158,14,248,22,74,23,197,2,23,201,2,28,248,22,153,14,23,194,2,27,250, -22,1,22,158,14,23,197,1,23,204,2,28,248,22,153,14,23,194,2,28,23, -202,2,28,28,248,22,152,14,249,22,158,14,195,204,10,27,28,248,22,140,14, -203,248,22,144,14,203,202,27,248,22,128,7,23,195,2,27,28,249,22,188,3, +23,203,1,250,22,1,22,159,14,23,206,1,23,207,1,23,200,1,27,249,22, +159,14,248,22,74,23,197,2,23,201,2,28,248,22,154,14,23,194,2,27,250, +22,1,22,159,14,23,197,1,23,204,2,28,248,22,154,14,23,194,2,28,23, +202,2,28,28,248,22,153,14,249,22,159,14,195,204,10,27,28,248,22,141,14, +203,248,22,145,14,203,202,27,248,22,128,7,23,195,2,27,28,249,22,188,3, 23,196,2,40,28,249,22,131,7,2,27,249,22,147,7,23,199,2,249,22,176, 3,23,200,2,40,249,22,148,7,250,22,147,7,23,200,1,36,249,22,176,3, 23,201,1,40,2,28,86,95,23,195,1,23,194,1,11,11,28,23,193,2,248, -22,152,14,249,22,158,14,198,23,196,1,11,192,26,8,2,57,204,205,206,23, +22,153,14,249,22,159,14,198,23,196,1,11,192,26,8,2,57,204,205,206,23, 15,23,16,23,17,248,22,75,203,28,23,19,23,19,200,192,26,8,2,57,204, 205,206,23,15,23,16,23,17,248,22,75,203,23,19,26,8,2,57,203,204,205, -206,23,15,23,16,248,22,75,202,23,18,27,247,22,182,14,28,248,22,81,23, +206,23,15,23,16,248,22,75,202,23,18,27,247,22,183,14,28,248,22,81,23, 194,2,86,94,23,198,1,248,23,196,1,251,22,173,7,2,25,23,199,1,28, -248,22,81,23,203,2,86,94,23,202,1,23,201,1,250,22,1,22,158,14,23, -204,1,23,205,1,23,198,1,27,249,22,158,14,248,22,74,23,197,2,23,199, -2,28,248,22,153,14,23,194,2,27,250,22,1,22,158,14,23,197,1,23,202, -2,28,248,22,153,14,23,194,2,28,23,200,2,28,28,248,22,152,14,249,22, -158,14,195,202,10,27,28,248,22,140,14,201,248,22,144,14,201,200,27,248,22, +248,22,81,23,203,2,86,94,23,202,1,23,201,1,250,22,1,22,159,14,23, +204,1,23,205,1,23,198,1,27,249,22,159,14,248,22,74,23,197,2,23,199, +2,28,248,22,154,14,23,194,2,27,250,22,1,22,159,14,23,197,1,23,202, +2,28,248,22,154,14,23,194,2,28,23,200,2,28,28,248,22,153,14,249,22, +159,14,195,202,10,27,28,248,22,141,14,201,248,22,145,14,201,200,27,248,22, 128,7,23,195,2,27,28,249,22,188,3,23,196,2,40,28,249,22,131,7,2, 27,249,22,147,7,23,199,2,249,22,176,3,23,200,2,40,249,22,148,7,250, 22,147,7,23,200,1,36,249,22,176,3,23,201,1,40,2,28,86,95,23,195, -1,23,194,1,11,11,28,23,193,2,248,22,152,14,249,22,158,14,198,23,196, +1,23,194,1,11,11,28,23,193,2,248,22,153,14,249,22,159,14,198,23,196, 1,11,192,26,8,2,57,202,203,204,205,206,23,15,248,22,75,203,200,192,26, 8,2,57,202,203,204,205,206,23,15,248,22,75,203,11,26,8,2,57,201,202, -203,204,205,206,248,22,75,202,11,86,95,28,28,248,22,141,14,23,194,2,10, -28,248,22,140,14,23,194,2,10,28,248,22,189,6,23,194,2,28,248,22,162, -14,23,194,2,10,248,22,163,14,23,194,2,11,12,252,22,171,9,23,200,2, +203,204,205,206,248,22,75,202,11,86,95,28,28,248,22,142,14,23,194,2,10, +28,248,22,141,14,23,194,2,10,28,248,22,189,6,23,194,2,28,248,22,163, +14,23,194,2,10,248,22,164,14,23,194,2,11,12,252,22,171,9,23,200,2, 2,29,36,23,198,2,23,199,2,28,28,248,22,189,6,23,195,2,10,248,22, 178,7,23,195,2,86,94,23,194,1,12,252,22,171,9,23,200,2,2,30,37, -23,198,2,23,199,1,90,159,39,11,89,161,39,36,11,248,22,161,14,23,197, +23,198,2,23,199,1,90,159,39,11,89,161,39,36,11,248,22,162,14,23,197, 2,86,94,23,195,1,86,94,28,192,12,250,22,172,9,23,201,1,2,31,23, 199,1,249,22,7,194,195,90,159,38,11,89,161,38,36,11,86,95,28,28,248, -22,141,14,23,196,2,10,28,248,22,140,14,23,196,2,10,28,248,22,189,6, -23,196,2,28,248,22,162,14,23,196,2,10,248,22,163,14,23,196,2,11,12, +22,142,14,23,196,2,10,28,248,22,141,14,23,196,2,10,28,248,22,189,6, +23,196,2,28,248,22,163,14,23,196,2,10,248,22,164,14,23,196,2,11,12, 252,22,171,9,2,11,2,29,36,23,200,2,23,201,2,28,28,248,22,189,6, 23,197,2,10,248,22,178,7,23,197,2,12,252,22,171,9,2,11,2,30,37, -23,200,2,23,201,2,90,159,39,11,89,161,39,36,11,248,22,161,14,23,199, +23,200,2,23,201,2,90,159,39,11,89,161,39,36,11,248,22,162,14,23,199, 2,86,94,23,195,1,86,94,28,192,12,250,22,172,9,2,11,2,31,23,201, -2,249,22,7,194,195,27,249,22,150,14,250,22,138,15,0,20,35,114,120,35, -34,40,63,58,91,46,93,91,94,46,93,42,124,41,36,34,248,22,146,14,23, +2,249,22,7,194,195,27,249,22,151,14,250,22,139,15,0,20,35,114,120,35, +34,40,63,58,91,46,93,91,94,46,93,42,124,41,36,34,248,22,147,14,23, 201,1,28,248,22,189,6,23,203,2,249,22,140,8,23,204,1,8,63,23,202, -1,28,248,22,141,14,23,199,2,248,22,142,14,23,199,1,86,94,23,198,1, -247,22,143,14,28,248,22,140,14,194,249,22,158,14,195,194,192,90,159,38,11, -89,161,38,36,11,86,95,28,28,248,22,141,14,23,196,2,10,28,248,22,140, -14,23,196,2,10,28,248,22,189,6,23,196,2,28,248,22,162,14,23,196,2, -10,248,22,163,14,23,196,2,11,12,252,22,171,9,2,12,2,29,36,23,200, +1,28,248,22,142,14,23,199,2,248,22,143,14,23,199,1,86,94,23,198,1, +247,22,144,14,28,248,22,141,14,194,249,22,159,14,195,194,192,90,159,38,11, +89,161,38,36,11,86,95,28,28,248,22,142,14,23,196,2,10,28,248,22,141, +14,23,196,2,10,28,248,22,189,6,23,196,2,28,248,22,163,14,23,196,2, +10,248,22,164,14,23,196,2,11,12,252,22,171,9,2,12,2,29,36,23,200, 2,23,201,2,28,28,248,22,189,6,23,197,2,10,248,22,178,7,23,197,2, 12,252,22,171,9,2,12,2,30,37,23,200,2,23,201,2,90,159,39,11,89, -161,39,36,11,248,22,161,14,23,199,2,86,94,23,195,1,86,94,28,192,12, -250,22,172,9,2,12,2,31,23,201,2,249,22,7,194,195,27,249,22,150,14, -249,22,190,7,250,22,139,15,0,9,35,114,120,35,34,91,46,93,34,248,22, -146,14,23,203,1,6,1,1,95,28,248,22,189,6,23,202,2,249,22,140,8, -23,203,1,8,63,23,201,1,28,248,22,141,14,23,199,2,248,22,142,14,23, -199,1,86,94,23,198,1,247,22,143,14,28,248,22,140,14,194,249,22,158,14, -195,194,192,249,247,22,154,5,194,11,27,247,22,184,14,249,80,158,39,49,28, +161,39,36,11,248,22,162,14,23,199,2,86,94,23,195,1,86,94,28,192,12, +250,22,172,9,2,12,2,31,23,201,2,249,22,7,194,195,27,249,22,151,14, +249,22,190,7,250,22,140,15,0,9,35,114,120,35,34,91,46,93,34,248,22, +147,14,23,203,1,6,1,1,95,28,248,22,189,6,23,202,2,249,22,140,8, +23,203,1,8,63,23,201,1,28,248,22,142,14,23,199,2,248,22,143,14,23, +199,1,86,94,23,198,1,247,22,144,14,28,248,22,141,14,194,249,22,159,14, +195,194,192,249,247,22,154,5,194,11,27,247,22,185,14,249,80,158,39,49,28, 23,195,2,27,248,22,145,8,2,32,28,192,192,2,33,2,34,27,28,23,196, -1,250,22,158,14,248,22,180,14,2,35,247,22,143,8,2,36,11,27,248,80, -159,42,54,37,250,22,87,9,248,22,83,248,22,180,14,2,37,9,28,193,249, -22,73,195,194,192,27,247,22,184,14,249,80,158,39,49,28,23,195,2,27,248, -22,145,8,2,32,28,192,192,2,33,2,34,27,28,23,196,1,250,22,158,14, -248,22,180,14,2,35,247,22,143,8,2,36,11,27,248,80,159,42,55,37,250, -22,87,23,203,1,248,22,83,248,22,180,14,2,37,9,28,193,249,22,73,195, -194,192,27,247,22,184,14,249,80,158,39,49,28,23,195,2,27,248,22,145,8, -2,32,28,192,192,2,33,2,34,27,28,23,196,1,250,22,158,14,248,22,180, +1,250,22,159,14,248,22,181,14,2,35,247,22,143,8,2,36,11,27,248,80, +159,42,54,37,250,22,87,9,248,22,83,248,22,181,14,2,37,9,28,193,249, +22,73,195,194,192,27,247,22,185,14,249,80,158,39,49,28,23,195,2,27,248, +22,145,8,2,32,28,192,192,2,33,2,34,27,28,23,196,1,250,22,159,14, +248,22,181,14,2,35,247,22,143,8,2,36,11,27,248,80,159,42,55,37,250, +22,87,23,203,1,248,22,83,248,22,181,14,2,37,9,28,193,249,22,73,195, +194,192,27,247,22,185,14,249,80,158,39,49,28,23,195,2,27,248,22,145,8, +2,32,28,192,192,2,33,2,34,27,28,23,196,1,250,22,159,14,248,22,181, 14,2,35,247,22,143,8,2,36,11,27,248,80,159,42,56,37,250,22,87,23, -203,1,248,22,83,248,22,180,14,2,37,23,204,1,28,193,249,22,73,195,194, +203,1,248,22,83,248,22,181,14,2,37,23,204,1,28,193,249,22,73,195,194, 192,32,67,88,163,8,36,39,8,45,11,2,20,222,33,69,0,8,35,114,120, -35,34,92,34,34,27,249,22,191,14,23,197,2,23,198,2,28,23,193,2,86, +35,34,92,34,34,27,249,22,128,15,23,197,2,23,198,2,28,23,193,2,86, 94,23,196,1,27,248,22,98,23,195,2,27,27,248,22,107,23,197,1,27,249, -22,191,14,23,201,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22, -98,23,195,2,27,27,248,22,107,23,197,1,27,249,22,191,14,23,205,2,23, +22,128,15,23,201,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22, +98,23,195,2,27,27,248,22,107,23,197,1,27,249,22,128,15,23,205,2,23, 196,2,28,23,193,2,86,94,23,194,1,27,248,22,98,23,195,2,27,27,248, -22,107,23,197,1,27,249,22,191,14,23,209,2,23,196,2,28,23,193,2,86, +22,107,23,197,1,27,249,22,128,15,23,209,2,23,196,2,28,23,193,2,86, 94,23,194,1,27,248,22,98,23,195,2,27,27,248,22,107,23,197,1,27,249, -22,191,14,23,213,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22, -98,23,195,2,27,27,248,22,107,23,197,1,27,249,22,191,14,23,217,2,23, +22,128,15,23,213,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22, +98,23,195,2,27,27,248,22,107,23,197,1,27,249,22,128,15,23,217,2,23, 196,2,28,23,193,2,86,94,23,194,1,27,248,22,98,23,195,2,27,27,248, -22,107,23,197,1,27,249,22,191,14,23,221,2,23,196,2,28,23,193,2,86, +22,107,23,197,1,27,249,22,128,15,23,221,2,23,196,2,28,23,193,2,86, 94,23,194,1,27,248,22,98,23,195,2,27,27,248,22,107,23,197,1,27,249, -22,191,14,23,224,33,0,0,0,2,23,196,2,28,23,193,2,86,94,23,194, +22,128,15,23,224,33,0,0,0,2,23,196,2,28,23,193,2,86,94,23,194, 1,27,248,22,98,23,195,2,27,250,2,67,23,224,35,0,0,0,2,23,224, 36,0,0,0,1,248,22,107,23,199,1,28,249,22,186,7,23,196,2,2,38, -249,22,87,23,224,34,0,0,0,2,194,249,22,73,248,22,149,14,28,249,22, -135,9,247,22,147,8,2,22,250,22,139,15,2,68,23,200,1,2,39,23,197, +249,22,87,23,224,34,0,0,0,2,194,249,22,73,248,22,150,14,28,249,22, +135,9,247,22,147,8,2,22,250,22,140,15,2,68,23,200,1,2,39,23,197, 1,194,86,95,23,223,1,23,193,1,28,249,22,186,7,23,196,2,2,38,249, -22,87,23,224,32,0,0,0,2,9,249,22,73,248,22,149,14,28,249,22,135, -9,247,22,147,8,2,22,250,22,139,15,2,68,23,200,1,2,39,23,197,1, +22,87,23,224,32,0,0,0,2,9,249,22,73,248,22,150,14,28,249,22,135, +9,247,22,147,8,2,22,250,22,140,15,2,68,23,200,1,2,39,23,197,1, 9,28,249,22,186,7,23,196,2,2,38,249,22,87,23,222,2,194,249,22,73, -248,22,149,14,28,249,22,135,9,247,22,147,8,2,22,250,22,139,15,2,68, +248,22,150,14,28,249,22,135,9,247,22,147,8,2,22,250,22,140,15,2,68, 23,200,1,2,39,23,197,1,194,86,94,23,193,1,28,249,22,186,7,23,196, -2,2,38,249,22,87,23,220,2,9,249,22,73,248,22,149,14,28,249,22,135, -9,247,22,147,8,2,22,250,22,139,15,2,68,23,200,1,2,39,23,197,1, +2,2,38,249,22,87,23,220,2,9,249,22,73,248,22,150,14,28,249,22,135, +9,247,22,147,8,2,22,250,22,140,15,2,68,23,200,1,2,39,23,197,1, 9,28,249,22,186,7,23,196,2,2,38,249,22,87,23,218,2,194,249,22,73, -248,22,149,14,28,249,22,135,9,247,22,147,8,2,22,250,22,139,15,2,68, +248,22,150,14,28,249,22,135,9,247,22,147,8,2,22,250,22,140,15,2,68, 23,200,1,2,39,23,197,1,194,86,94,23,193,1,28,249,22,186,7,23,196, -2,2,38,249,22,87,23,216,2,9,249,22,73,248,22,149,14,28,249,22,135, -9,247,22,147,8,2,22,250,22,139,15,2,68,23,200,1,2,39,23,197,1, +2,2,38,249,22,87,23,216,2,9,249,22,73,248,22,150,14,28,249,22,135, +9,247,22,147,8,2,22,250,22,140,15,2,68,23,200,1,2,39,23,197,1, 9,28,249,22,186,7,23,196,2,2,38,249,22,87,23,214,2,194,249,22,73, -248,22,149,14,28,249,22,135,9,247,22,147,8,2,22,250,22,139,15,2,68, +248,22,150,14,28,249,22,135,9,247,22,147,8,2,22,250,22,140,15,2,68, 23,200,1,2,39,23,197,1,194,86,94,23,193,1,28,249,22,186,7,23,196, -2,2,38,249,22,87,23,212,2,9,249,22,73,248,22,149,14,28,249,22,135, -9,247,22,147,8,2,22,250,22,139,15,2,68,23,200,1,2,39,23,197,1, +2,2,38,249,22,87,23,212,2,9,249,22,73,248,22,150,14,28,249,22,135, +9,247,22,147,8,2,22,250,22,140,15,2,68,23,200,1,2,39,23,197,1, 9,28,249,22,186,7,23,196,2,2,38,249,22,87,23,210,2,194,249,22,73, -248,22,149,14,28,249,22,135,9,247,22,147,8,2,22,250,22,139,15,2,68, +248,22,150,14,28,249,22,135,9,247,22,147,8,2,22,250,22,140,15,2,68, 23,200,1,2,39,23,197,1,194,86,94,23,193,1,28,249,22,186,7,23,196, -2,2,38,249,22,87,23,208,2,9,249,22,73,248,22,149,14,28,249,22,135, -9,247,22,147,8,2,22,250,22,139,15,2,68,23,200,1,2,39,23,197,1, +2,2,38,249,22,87,23,208,2,9,249,22,73,248,22,150,14,28,249,22,135, +9,247,22,147,8,2,22,250,22,140,15,2,68,23,200,1,2,39,23,197,1, 9,28,249,22,186,7,23,196,2,2,38,249,22,87,23,206,2,194,249,22,73, -248,22,149,14,28,249,22,135,9,247,22,147,8,2,22,250,22,139,15,2,68, +248,22,150,14,28,249,22,135,9,247,22,147,8,2,22,250,22,140,15,2,68, 23,200,1,2,39,23,197,1,194,86,94,23,193,1,28,249,22,186,7,23,196, -2,2,38,249,22,87,23,204,2,9,249,22,73,248,22,149,14,28,249,22,135, -9,247,22,147,8,2,22,250,22,139,15,2,68,23,200,1,2,39,23,197,1, +2,2,38,249,22,87,23,204,2,9,249,22,73,248,22,150,14,28,249,22,135, +9,247,22,147,8,2,22,250,22,140,15,2,68,23,200,1,2,39,23,197,1, 9,28,249,22,186,7,23,196,2,2,38,249,22,87,23,202,2,194,249,22,73, -248,22,149,14,28,249,22,135,9,247,22,147,8,2,22,250,22,139,15,2,68, +248,22,150,14,28,249,22,135,9,247,22,147,8,2,22,250,22,140,15,2,68, 23,200,1,2,39,23,197,1,194,86,94,23,193,1,28,249,22,186,7,23,196, -2,2,38,249,22,87,23,200,2,9,249,22,73,248,22,149,14,28,249,22,135, -9,247,22,147,8,2,22,250,22,139,15,2,68,23,200,1,2,39,23,197,1, +2,2,38,249,22,87,23,200,2,9,249,22,73,248,22,150,14,28,249,22,135, +9,247,22,147,8,2,22,250,22,140,15,2,68,23,200,1,2,39,23,197,1, 9,28,249,22,186,7,23,196,2,2,38,249,22,87,197,194,86,94,23,196,1, -249,22,73,248,22,149,14,28,249,22,135,9,247,22,147,8,2,22,250,22,139, +249,22,73,248,22,150,14,28,249,22,135,9,247,22,147,8,2,22,250,22,140, 15,2,68,23,200,1,2,39,23,197,1,194,86,94,23,193,1,28,249,22,186, 7,23,198,2,2,38,249,22,87,195,9,86,94,23,194,1,249,22,73,248,22, -149,14,28,249,22,135,9,247,22,147,8,2,22,250,22,139,15,2,68,23,202, +150,14,28,249,22,135,9,247,22,147,8,2,22,250,22,140,15,2,68,23,202, 1,2,39,23,199,1,9,86,95,28,28,248,22,178,7,23,195,2,10,248,22, 189,6,23,195,2,12,250,22,171,9,2,15,6,21,21,98,121,116,101,32,115, 116,114,105,110,103,32,111,114,32,115,116,114,105,110,103,23,197,2,28,28,248, -22,82,23,196,2,249,22,4,22,140,14,23,197,2,11,12,250,22,171,9,2, +22,82,23,196,2,249,22,4,22,141,14,23,197,2,11,12,250,22,171,9,2, 15,6,13,13,108,105,115,116,32,111,102,32,112,97,116,104,115,23,198,2,27, 28,248,22,189,6,23,196,2,248,22,139,8,23,196,1,23,195,1,27,249,22, -191,14,23,197,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22,98, -23,195,2,27,27,248,22,107,23,197,1,27,249,22,191,14,23,201,2,23,196, +128,15,23,197,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22,98, +23,195,2,27,27,248,22,107,23,197,1,27,249,22,128,15,23,201,2,23,196, 2,28,23,193,2,86,94,23,194,1,27,248,22,98,23,195,2,27,27,248,22, -107,23,197,1,27,249,22,191,14,23,205,2,23,196,2,28,23,193,2,86,94, +107,23,197,1,27,249,22,128,15,23,205,2,23,196,2,28,23,193,2,86,94, 23,194,1,27,248,22,98,23,195,2,27,27,248,22,107,23,197,1,27,249,22, -191,14,23,209,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22,98, -23,195,2,27,27,248,22,107,23,197,1,27,249,22,191,14,23,213,2,23,196, +128,15,23,209,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22,98, +23,195,2,27,27,248,22,107,23,197,1,27,249,22,128,15,23,213,2,23,196, 2,28,23,193,2,86,94,23,194,1,27,248,22,98,23,195,2,27,27,248,22, -107,23,197,1,27,249,22,191,14,23,217,2,23,196,2,28,23,193,2,86,94, +107,23,197,1,27,249,22,128,15,23,217,2,23,196,2,28,23,193,2,86,94, 23,194,1,27,248,22,98,23,195,2,27,27,248,22,107,23,197,1,27,249,22, -191,14,23,221,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22,98, -23,195,2,27,27,248,22,107,23,197,1,27,249,22,191,14,23,224,33,0,0, +128,15,23,221,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22,98, +23,195,2,27,27,248,22,107,23,197,1,27,249,22,128,15,23,224,33,0,0, 0,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22,98,23,195,2, 27,250,2,67,23,224,38,0,0,0,2,23,224,36,0,0,0,1,248,22,107, 23,199,1,28,249,22,186,7,23,196,2,2,38,249,22,87,23,224,37,0,0, -0,2,194,249,22,73,248,22,149,14,28,249,22,135,9,247,22,147,8,2,22, -250,22,139,15,2,68,23,200,1,2,39,23,197,1,194,86,95,23,223,1,23, +0,2,194,249,22,73,248,22,150,14,28,249,22,135,9,247,22,147,8,2,22, +250,22,140,15,2,68,23,200,1,2,39,23,197,1,194,86,95,23,223,1,23, 193,1,28,249,22,186,7,23,196,2,2,38,249,22,87,23,224,35,0,0,0, -2,9,249,22,73,248,22,149,14,28,249,22,135,9,247,22,147,8,2,22,250, -22,139,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22,186,7,23,196, -2,2,38,249,22,87,23,224,33,0,0,0,2,194,249,22,73,248,22,149,14, -28,249,22,135,9,247,22,147,8,2,22,250,22,139,15,2,68,23,200,1,2, +2,9,249,22,73,248,22,150,14,28,249,22,135,9,247,22,147,8,2,22,250, +22,140,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22,186,7,23,196, +2,2,38,249,22,87,23,224,33,0,0,0,2,194,249,22,73,248,22,150,14, +28,249,22,135,9,247,22,147,8,2,22,250,22,140,15,2,68,23,200,1,2, 39,23,197,1,194,86,94,23,193,1,28,249,22,186,7,23,196,2,2,38,249, -22,87,23,223,2,9,249,22,73,248,22,149,14,28,249,22,135,9,247,22,147, -8,2,22,250,22,139,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22, -186,7,23,196,2,2,38,249,22,87,23,221,2,194,249,22,73,248,22,149,14, -28,249,22,135,9,247,22,147,8,2,22,250,22,139,15,2,68,23,200,1,2, +22,87,23,223,2,9,249,22,73,248,22,150,14,28,249,22,135,9,247,22,147, +8,2,22,250,22,140,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22, +186,7,23,196,2,2,38,249,22,87,23,221,2,194,249,22,73,248,22,150,14, +28,249,22,135,9,247,22,147,8,2,22,250,22,140,15,2,68,23,200,1,2, 39,23,197,1,194,86,94,23,193,1,28,249,22,186,7,23,196,2,2,38,249, -22,87,23,219,2,9,249,22,73,248,22,149,14,28,249,22,135,9,247,22,147, -8,2,22,250,22,139,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22, -186,7,23,196,2,2,38,249,22,87,23,217,2,194,249,22,73,248,22,149,14, -28,249,22,135,9,247,22,147,8,2,22,250,22,139,15,2,68,23,200,1,2, +22,87,23,219,2,9,249,22,73,248,22,150,14,28,249,22,135,9,247,22,147, +8,2,22,250,22,140,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22, +186,7,23,196,2,2,38,249,22,87,23,217,2,194,249,22,73,248,22,150,14, +28,249,22,135,9,247,22,147,8,2,22,250,22,140,15,2,68,23,200,1,2, 39,23,197,1,194,86,94,23,193,1,28,249,22,186,7,23,196,2,2,38,249, -22,87,23,215,2,9,249,22,73,248,22,149,14,28,249,22,135,9,247,22,147, -8,2,22,250,22,139,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22, -186,7,23,196,2,2,38,249,22,87,23,213,2,194,249,22,73,248,22,149,14, -28,249,22,135,9,247,22,147,8,2,22,250,22,139,15,2,68,23,200,1,2, +22,87,23,215,2,9,249,22,73,248,22,150,14,28,249,22,135,9,247,22,147, +8,2,22,250,22,140,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22, +186,7,23,196,2,2,38,249,22,87,23,213,2,194,249,22,73,248,22,150,14, +28,249,22,135,9,247,22,147,8,2,22,250,22,140,15,2,68,23,200,1,2, 39,23,197,1,194,86,94,23,193,1,28,249,22,186,7,23,196,2,2,38,249, -22,87,23,211,2,9,249,22,73,248,22,149,14,28,249,22,135,9,247,22,147, -8,2,22,250,22,139,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22, -186,7,23,196,2,2,38,249,22,87,23,209,2,194,249,22,73,248,22,149,14, -28,249,22,135,9,247,22,147,8,2,22,250,22,139,15,2,68,23,200,1,2, +22,87,23,211,2,9,249,22,73,248,22,150,14,28,249,22,135,9,247,22,147, +8,2,22,250,22,140,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22, +186,7,23,196,2,2,38,249,22,87,23,209,2,194,249,22,73,248,22,150,14, +28,249,22,135,9,247,22,147,8,2,22,250,22,140,15,2,68,23,200,1,2, 39,23,197,1,194,86,94,23,193,1,28,249,22,186,7,23,196,2,2,38,249, -22,87,23,207,2,9,249,22,73,248,22,149,14,28,249,22,135,9,247,22,147, -8,2,22,250,22,139,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22, -186,7,23,196,2,2,38,249,22,87,23,205,2,194,249,22,73,248,22,149,14, -28,249,22,135,9,247,22,147,8,2,22,250,22,139,15,2,68,23,200,1,2, +22,87,23,207,2,9,249,22,73,248,22,150,14,28,249,22,135,9,247,22,147, +8,2,22,250,22,140,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22, +186,7,23,196,2,2,38,249,22,87,23,205,2,194,249,22,73,248,22,150,14, +28,249,22,135,9,247,22,147,8,2,22,250,22,140,15,2,68,23,200,1,2, 39,23,197,1,194,86,94,23,193,1,28,249,22,186,7,23,196,2,2,38,249, -22,87,23,203,2,9,249,22,73,248,22,149,14,28,249,22,135,9,247,22,147, -8,2,22,250,22,139,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22, +22,87,23,203,2,9,249,22,73,248,22,150,14,28,249,22,135,9,247,22,147, +8,2,22,250,22,140,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22, 186,7,23,196,2,2,38,249,22,87,200,194,86,94,23,199,1,249,22,73,248, -22,149,14,28,249,22,135,9,247,22,147,8,2,22,250,22,139,15,2,68,23, +22,150,14,28,249,22,135,9,247,22,147,8,2,22,250,22,140,15,2,68,23, 200,1,2,39,23,197,1,194,86,94,23,193,1,28,249,22,186,7,23,196,2, -2,38,249,22,87,198,9,86,94,23,197,1,249,22,73,248,22,149,14,28,249, -22,135,9,247,22,147,8,2,22,250,22,139,15,2,68,23,200,1,2,39,23, +2,38,249,22,87,198,9,86,94,23,197,1,249,22,73,248,22,150,14,28,249, +22,135,9,247,22,147,8,2,22,250,22,140,15,2,68,23,200,1,2,39,23, 197,1,9,32,71,88,163,8,36,39,53,11,70,102,111,117,110,100,45,101,120, 101,99,222,33,74,32,72,88,163,8,36,40,58,11,64,110,101,120,116,222,33, -73,27,248,22,166,14,23,196,2,28,249,22,137,9,23,195,2,23,197,1,11, -28,248,22,162,14,23,194,2,27,249,22,158,14,23,197,1,23,196,1,28,23, -197,2,90,159,39,11,89,161,39,36,11,248,22,161,14,23,197,2,86,95,23, -195,1,23,194,1,27,28,23,202,2,27,248,22,166,14,23,199,2,28,249,22, -137,9,23,195,2,23,200,2,11,28,248,22,162,14,23,194,2,250,2,71,23, -205,2,23,206,2,249,22,158,14,23,200,2,23,198,1,250,2,71,23,205,2, +73,27,248,22,167,14,23,196,2,28,249,22,137,9,23,195,2,23,197,1,11, +28,248,22,163,14,23,194,2,27,249,22,159,14,23,197,1,23,196,1,28,23, +197,2,90,159,39,11,89,161,39,36,11,248,22,162,14,23,197,2,86,95,23, +195,1,23,194,1,27,28,23,202,2,27,248,22,167,14,23,199,2,28,249,22, +137,9,23,195,2,23,200,2,11,28,248,22,163,14,23,194,2,250,2,71,23, +205,2,23,206,2,249,22,159,14,23,200,2,23,198,1,250,2,71,23,205,2, 23,206,2,23,196,1,11,28,23,193,2,192,86,94,23,193,1,27,28,248,22, -140,14,23,196,2,27,249,22,158,14,23,198,2,23,205,2,28,28,248,22,153, -14,193,10,248,22,152,14,193,192,11,11,28,23,193,2,192,86,94,23,193,1, -28,23,203,2,11,27,248,22,166,14,23,200,2,28,249,22,137,9,23,195,2, -23,201,1,11,28,248,22,162,14,23,194,2,250,2,71,23,206,1,23,207,1, -249,22,158,14,23,201,1,23,198,1,250,2,71,205,206,195,192,86,94,23,194, -1,28,23,196,2,90,159,39,11,89,161,39,36,11,248,22,161,14,23,197,2, -86,95,23,195,1,23,194,1,27,28,23,201,2,27,248,22,166,14,23,199,2, -28,249,22,137,9,23,195,2,23,200,2,11,28,248,22,162,14,23,194,2,250, -2,71,23,204,2,23,205,2,249,22,158,14,23,200,2,23,198,1,250,2,71, +141,14,23,196,2,27,249,22,159,14,23,198,2,23,205,2,28,28,248,22,154, +14,193,10,248,22,153,14,193,192,11,11,28,23,193,2,192,86,94,23,193,1, +28,23,203,2,11,27,248,22,167,14,23,200,2,28,249,22,137,9,23,195,2, +23,201,1,11,28,248,22,163,14,23,194,2,250,2,71,23,206,1,23,207,1, +249,22,159,14,23,201,1,23,198,1,250,2,71,205,206,195,192,86,94,23,194, +1,28,23,196,2,90,159,39,11,89,161,39,36,11,248,22,162,14,23,197,2, +86,95,23,195,1,23,194,1,27,28,23,201,2,27,248,22,167,14,23,199,2, +28,249,22,137,9,23,195,2,23,200,2,11,28,248,22,163,14,23,194,2,250, +2,71,23,204,2,23,205,2,249,22,159,14,23,200,2,23,198,1,250,2,71, 23,204,2,23,205,2,23,196,1,11,28,23,193,2,192,86,94,23,193,1,27, -28,248,22,140,14,23,196,2,27,249,22,158,14,23,198,2,23,204,2,28,28, -248,22,153,14,193,10,248,22,152,14,193,192,11,11,28,23,193,2,192,86,94, -23,193,1,28,23,202,2,11,27,248,22,166,14,23,200,2,28,249,22,137,9, -23,195,2,23,201,1,11,28,248,22,162,14,23,194,2,250,2,71,23,205,1, -23,206,1,249,22,158,14,23,201,1,23,198,1,250,2,71,204,205,195,192,28, -23,193,2,90,159,39,11,89,161,39,36,11,248,22,161,14,23,199,2,86,95, +28,248,22,141,14,23,196,2,27,249,22,159,14,23,198,2,23,204,2,28,28, +248,22,154,14,193,10,248,22,153,14,193,192,11,11,28,23,193,2,192,86,94, +23,193,1,28,23,202,2,11,27,248,22,167,14,23,200,2,28,249,22,137,9, +23,195,2,23,201,1,11,28,248,22,163,14,23,194,2,250,2,71,23,205,1, +23,206,1,249,22,159,14,23,201,1,23,198,1,250,2,71,204,205,195,192,28, +23,193,2,90,159,39,11,89,161,39,36,11,248,22,162,14,23,199,2,86,95, 23,195,1,23,194,1,27,28,23,198,2,251,2,72,23,198,2,23,203,2,23, -201,2,23,202,2,11,28,23,193,2,192,86,94,23,193,1,27,28,248,22,140, -14,195,27,249,22,158,14,197,200,28,28,248,22,153,14,193,10,248,22,152,14, +201,2,23,202,2,11,28,23,193,2,192,86,94,23,193,1,27,28,248,22,141, +14,195,27,249,22,159,14,197,200,28,28,248,22,154,14,193,10,248,22,153,14, 193,192,11,11,28,192,192,28,198,11,251,2,72,198,203,201,202,194,32,75,88, 163,8,36,40,58,11,2,20,222,33,76,28,248,22,81,23,197,2,11,27,248, -22,165,14,248,22,74,23,199,2,27,249,22,158,14,23,196,1,23,197,2,28, -248,22,152,14,23,194,2,250,2,71,198,199,195,86,94,23,193,1,27,248,22, -75,23,200,1,28,248,22,81,23,194,2,11,27,248,22,165,14,248,22,74,23, -196,2,27,249,22,158,14,23,196,1,23,200,2,28,248,22,152,14,23,194,2, +22,166,14,248,22,74,23,199,2,27,249,22,159,14,23,196,1,23,197,2,28, +248,22,153,14,23,194,2,250,2,71,198,199,195,86,94,23,193,1,27,248,22, +75,23,200,1,28,248,22,81,23,194,2,11,27,248,22,166,14,248,22,74,23, +196,2,27,249,22,159,14,23,196,1,23,200,2,28,248,22,153,14,23,194,2, 250,2,71,201,202,195,86,94,23,193,1,27,248,22,75,23,197,1,28,248,22, -81,23,194,2,11,27,248,22,165,14,248,22,74,195,27,249,22,158,14,23,196, -1,202,28,248,22,152,14,193,250,2,71,204,205,195,251,2,75,204,205,206,248, -22,75,199,86,95,28,28,248,22,140,14,23,195,2,10,28,248,22,189,6,23, -195,2,28,248,22,162,14,23,195,2,10,248,22,163,14,23,195,2,11,12,250, +81,23,194,2,11,27,248,22,166,14,248,22,74,195,27,249,22,159,14,23,196, +1,202,28,248,22,153,14,193,250,2,71,204,205,195,251,2,75,204,205,206,248, +22,75,199,86,95,28,28,248,22,141,14,23,195,2,10,28,248,22,189,6,23, +195,2,28,248,22,163,14,23,195,2,10,248,22,164,14,23,195,2,11,12,250, 22,171,9,2,16,6,25,25,112,97,116,104,32,111,114,32,115,116,114,105,110, 103,32,40,115,97,110,115,32,110,117,108,41,23,197,2,28,28,23,195,2,28, -28,248,22,140,14,23,196,2,10,28,248,22,189,6,23,196,2,28,248,22,162, -14,23,196,2,10,248,22,163,14,23,196,2,11,248,22,162,14,23,196,2,11, +28,248,22,141,14,23,196,2,10,28,248,22,189,6,23,196,2,28,248,22,163, +14,23,196,2,10,248,22,164,14,23,196,2,11,248,22,163,14,23,196,2,11, 10,12,250,22,171,9,2,16,6,29,29,35,102,32,111,114,32,114,101,108,97, 116,105,118,101,32,112,97,116,104,32,111,114,32,115,116,114,105,110,103,23,198, -2,28,28,248,22,162,14,23,195,2,90,159,39,11,89,161,39,36,11,248,22, -161,14,23,198,2,249,22,135,9,194,68,114,101,108,97,116,105,118,101,11,27, +2,28,28,248,22,163,14,23,195,2,90,159,39,11,89,161,39,36,11,248,22, +162,14,23,198,2,249,22,135,9,194,68,114,101,108,97,116,105,118,101,11,27, 248,22,145,8,6,4,4,80,65,84,72,27,28,23,194,2,27,249,80,159,41, 49,38,23,197,1,9,28,249,22,135,9,247,22,147,8,2,22,249,22,73,248, -22,149,14,5,1,46,194,192,86,94,23,194,1,9,28,248,22,81,23,194,2, -11,27,248,22,165,14,248,22,74,23,196,2,27,249,22,158,14,23,196,1,23, -200,2,28,248,22,152,14,23,194,2,250,2,71,201,202,195,86,94,23,193,1, -27,248,22,75,23,197,1,28,248,22,81,23,194,2,11,27,248,22,165,14,248, -22,74,23,196,2,27,249,22,158,14,23,196,1,23,203,2,28,248,22,152,14, +22,150,14,5,1,46,194,192,86,94,23,194,1,9,28,248,22,81,23,194,2, +11,27,248,22,166,14,248,22,74,23,196,2,27,249,22,159,14,23,196,1,23, +200,2,28,248,22,153,14,23,194,2,250,2,71,201,202,195,86,94,23,193,1, +27,248,22,75,23,197,1,28,248,22,81,23,194,2,11,27,248,22,166,14,248, +22,74,23,196,2,27,249,22,159,14,23,196,1,23,203,2,28,248,22,153,14, 23,194,2,250,2,71,204,205,195,86,94,23,193,1,27,248,22,75,23,197,1, -28,248,22,81,23,194,2,11,27,248,22,165,14,248,22,74,195,27,249,22,158, -14,23,196,1,205,28,248,22,152,14,193,250,2,71,23,15,23,16,195,251,2, -75,23,15,23,16,23,17,248,22,75,199,27,248,22,165,14,23,196,1,28,248, -22,152,14,193,250,2,71,198,199,195,11,250,80,159,39,50,37,196,197,11,250, +28,248,22,81,23,194,2,11,27,248,22,166,14,248,22,74,195,27,249,22,159, +14,23,196,1,205,28,248,22,153,14,193,250,2,71,23,15,23,16,195,251,2, +75,23,15,23,16,23,17,248,22,75,199,27,248,22,166,14,23,196,1,28,248, +22,153,14,193,250,2,71,198,199,195,11,250,80,159,39,50,37,196,197,11,250, 80,159,39,50,37,196,11,11,86,94,249,22,178,6,247,22,150,5,195,248,22, 140,6,249,22,128,4,36,249,22,176,3,197,198,27,28,23,197,2,86,95,23, -196,1,23,195,1,23,197,1,86,94,23,197,1,27,248,22,180,14,2,21,27, +196,1,23,195,1,23,197,1,86,94,23,197,1,27,248,22,181,14,2,21,27, 250,80,159,42,50,37,23,197,1,11,11,27,248,22,131,4,23,199,1,27,28, 23,194,2,23,194,1,86,94,23,194,1,36,27,248,22,131,4,23,202,1,27, 28,23,194,2,23,194,1,86,94,23,194,1,36,249,22,181,5,23,199,1,20, @@ -582,7 +582,7 @@ 15,16,2,20,25,96,2,14,88,163,36,36,53,8,240,0,32,4,0,9,223, 0,33,64,88,163,36,37,54,8,240,0,32,8,0,9,223,0,33,65,88,163, 36,38,55,8,240,0,32,16,0,9,223,0,33,66,80,159,36,48,37,20,15, -16,2,27,248,22,187,14,248,22,139,8,27,28,249,22,135,9,247,22,147,8, +16,2,27,248,22,188,14,248,22,139,8,27,28,249,22,135,9,247,22,147,8, 2,22,6,1,1,59,6,1,1,58,250,22,173,7,6,14,14,40,91,94,126, 97,93,42,41,126,97,40,46,42,41,23,196,2,23,196,1,88,163,8,36,38, 8,46,11,2,15,223,0,33,70,80,159,36,49,37,20,15,16,2,20,25,96, @@ -595,7 +595,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 10323); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,49,46,53,0,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,49,46,54,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,12,0,0,0,1,0,0,15,0,40,0,57, 0,75,0,97,0,120,0,140,0,162,0,169,0,176,0,183,0,0,0,181,1, 0,0,74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,1,23,115,116, @@ -613,7 +613,7 @@ 39,36,11,11,11,16,5,2,3,2,7,2,8,2,4,2,2,16,5,11,11, 11,11,11,16,5,2,3,2,7,2,8,2,4,2,2,41,41,37,11,11,11, 16,0,16,0,16,0,36,36,11,11,11,11,16,0,16,0,16,0,36,36,16, -0,16,2,20,15,16,6,253,22,168,10,2,3,11,38,36,11,248,22,83,249, +0,16,2,20,15,16,6,253,22,169,10,2,3,11,38,36,11,248,22,83,249, 22,73,22,159,10,88,163,36,37,45,44,9,223,9,33,9,80,159,36,36,37, 80,159,36,37,37,80,159,36,38,37,80,159,36,39,37,80,159,36,40,37,20, 15,16,3,249,22,7,88,163,36,37,45,44,9,223,2,33,10,88,163,36,37, @@ -622,14 +622,14 @@ EVAL_ONE_SIZED_STR((char *)expr, 502); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,49,46,53,0,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,49,46,54,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,60,0,0,0,1,0,0,7,0,18,0,45, 0,51,0,64,0,73,0,80,0,102,0,124,0,150,0,162,0,180,0,200,0, 212,0,228,0,251,0,7,1,38,1,45,1,50,1,55,1,60,1,65,1,70, 1,79,1,84,1,88,1,96,1,105,1,113,1,174,1,21,2,42,2,63,2, 93,2,123,2,181,2,239,2,32,3,81,3,15,9,34,9,48,9,206,9,220, 9,150,11,244,13,111,14,117,14,131,14,158,14,178,14,238,14,69,15,71,15, -140,15,152,21,187,21,210,21,0,0,219,24,0,0,66,35,37,98,111,111,116, +140,15,152,21,204,21,227,21,0,0,236,24,0,0,66,35,37,98,111,111,116, 70,100,108,108,45,115,117,102,102,105,120,1,25,100,101,102,97,117,108,116,45, 108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,65,113,117,111, 116,101,29,94,2,4,67,35,37,117,116,105,108,115,11,68,35,37,112,97,114, @@ -647,49 +647,49 @@ 64,98,111,111,116,64,115,101,97,108,64,115,97,109,101,5,3,46,122,111,5, 3,46,122,111,6,6,6,110,97,116,105,118,101,64,108,111,111,112,63,108,105, 98,67,105,103,110,111,114,101,100,249,22,14,195,80,159,38,46,38,249,80,159, -38,49,37,195,10,90,159,39,11,89,161,39,36,11,248,22,161,14,197,86,95, -23,195,1,23,193,1,28,249,22,191,14,0,11,35,114,120,34,91,46,93,115, -115,36,34,248,22,145,14,23,197,1,249,80,159,41,53,38,198,5,4,46,114, +38,49,37,195,10,90,159,39,11,89,161,39,36,11,248,22,162,14,197,86,95, +23,195,1,23,193,1,28,249,22,128,15,0,11,35,114,120,34,91,46,93,115, +115,36,34,248,22,146,14,23,197,1,249,80,159,41,53,38,198,5,4,46,114, 107,116,196,27,28,23,195,2,28,249,22,135,9,23,197,2,80,158,39,47,86, -94,23,195,1,80,158,37,48,27,248,22,133,5,23,197,2,28,248,22,140,14, -23,194,2,90,159,39,11,89,161,39,36,11,248,22,161,14,23,197,1,86,95, +94,23,195,1,80,158,37,48,27,248,22,133,5,23,197,2,28,248,22,141,14, +23,194,2,90,159,39,11,89,161,39,36,11,248,22,162,14,23,197,1,86,95, 20,18,159,11,80,158,41,47,198,20,18,159,11,80,158,41,48,192,192,11,11, -28,23,193,2,192,86,94,23,193,1,27,247,22,155,5,28,192,192,247,22,181, -14,250,22,158,14,23,197,1,23,199,1,249,80,159,43,39,38,23,198,1,2, -23,250,22,158,14,23,197,1,23,199,1,249,80,159,43,39,38,23,198,1,2, -24,252,22,158,14,23,199,1,23,201,1,2,25,247,22,148,8,249,80,159,45, -39,38,23,200,1,80,159,45,36,38,252,22,158,14,23,199,1,23,201,1,2, +28,23,193,2,192,86,94,23,193,1,27,247,22,155,5,28,192,192,247,22,182, +14,250,22,159,14,23,197,1,23,199,1,249,80,159,43,39,38,23,198,1,2, +23,250,22,159,14,23,197,1,23,199,1,249,80,159,43,39,38,23,198,1,2, +24,252,22,159,14,23,199,1,23,201,1,2,25,247,22,148,8,249,80,159,45, +39,38,23,200,1,80,159,45,36,38,252,22,159,14,23,199,1,23,201,1,2, 25,247,22,148,8,249,80,159,45,39,38,23,200,1,80,159,45,36,38,27,252, -22,158,14,23,200,1,23,202,1,2,25,247,22,148,8,249,80,159,46,39,38, -23,201,1,80,159,46,36,38,27,250,22,175,14,196,11,32,0,88,163,8,36, -36,41,11,9,222,11,28,192,249,22,73,195,194,11,27,252,22,158,14,23,200, +22,159,14,23,200,1,23,202,1,2,25,247,22,148,8,249,80,159,46,39,38, +23,201,1,80,159,46,36,38,27,250,22,176,14,196,11,32,0,88,163,8,36, +36,41,11,9,222,11,28,192,249,22,73,195,194,11,27,252,22,159,14,23,200, 1,23,202,1,2,25,247,22,148,8,249,80,159,46,39,38,23,201,1,80,159, -46,36,38,27,250,22,175,14,196,11,32,0,88,163,8,36,36,41,11,9,222, -11,28,192,249,22,73,195,194,11,27,250,22,158,14,23,198,1,23,200,1,249, -80,159,44,39,38,23,199,1,2,23,27,250,22,175,14,196,11,32,0,88,163, -8,36,36,41,11,9,222,11,28,192,249,22,73,195,194,11,27,250,22,158,14, -23,198,1,23,200,1,249,80,159,44,39,38,23,199,1,2,24,27,250,22,175, +46,36,38,27,250,22,176,14,196,11,32,0,88,163,8,36,36,41,11,9,222, +11,28,192,249,22,73,195,194,11,27,250,22,159,14,23,198,1,23,200,1,249, +80,159,44,39,38,23,199,1,2,23,27,250,22,176,14,196,11,32,0,88,163, +8,36,36,41,11,9,222,11,28,192,249,22,73,195,194,11,27,250,22,159,14, +23,198,1,23,200,1,249,80,159,44,39,38,23,199,1,2,24,27,250,22,176, 14,196,11,32,0,88,163,8,36,36,41,11,9,222,11,28,192,249,22,73,195, 194,11,86,94,28,248,80,159,37,38,38,23,195,2,12,250,22,171,9,77,108, 111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,6,25,25,112,97, 116,104,32,111,114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,114,105, -110,103,23,197,2,90,159,46,11,89,161,37,36,11,28,248,22,164,14,23,205, -2,23,204,2,27,247,22,155,5,28,23,193,2,249,22,165,14,23,207,2,23, -195,1,23,205,2,89,161,39,37,11,248,22,161,14,23,205,1,86,94,23,196, -1,89,161,38,40,11,28,23,205,2,27,248,22,145,14,23,197,2,27,248,22, +110,103,23,197,2,90,159,46,11,89,161,37,36,11,28,248,22,165,14,23,205, +2,23,204,2,27,247,22,155,5,28,23,193,2,249,22,166,14,23,207,2,23, +195,1,23,205,2,89,161,39,37,11,248,22,162,14,23,205,1,86,94,23,196, +1,89,161,38,40,11,28,23,205,2,27,248,22,146,14,23,197,2,27,248,22, 183,7,23,195,2,28,28,249,22,188,3,23,195,2,40,249,22,186,7,5,4, 46,114,107,116,249,22,189,7,23,198,2,249,22,176,3,23,199,2,40,11,249, -22,7,23,199,2,248,22,149,14,249,22,190,7,250,22,189,7,23,202,1,36, +22,7,23,199,2,248,22,150,14,249,22,190,7,250,22,189,7,23,202,1,36, 249,22,176,3,23,203,1,40,5,3,46,115,115,249,22,7,23,199,2,11,249, 22,7,23,197,2,11,89,161,37,42,11,28,249,22,135,9,23,199,2,23,197, -2,23,193,2,249,22,158,14,23,196,2,23,199,2,89,161,37,43,11,28,23, +2,23,193,2,249,22,159,14,23,196,2,23,199,2,89,161,37,43,11,28,23, 198,2,28,249,22,135,9,23,200,2,23,197,1,23,193,1,86,94,23,193,1, -249,22,158,14,23,196,2,23,200,2,86,94,23,195,1,11,89,161,37,44,11, +249,22,159,14,23,196,2,23,200,2,86,94,23,195,1,11,89,161,37,44,11, 28,249,22,135,9,23,196,2,68,114,101,108,97,116,105,118,101,86,94,23,194, -1,2,22,23,194,1,89,161,37,45,11,247,22,183,14,27,250,22,175,14,23, +1,2,22,23,194,1,89,161,37,45,11,247,22,184,14,27,250,22,176,14,23, 203,2,11,32,0,88,163,8,36,36,41,11,9,222,11,27,28,23,194,2,249, 22,73,23,203,2,23,196,1,86,94,23,194,1,11,27,28,23,203,2,28,23, -194,2,11,27,250,22,175,14,23,207,2,11,32,0,88,163,8,36,36,41,11, +194,2,11,27,250,22,176,14,23,207,2,11,32,0,88,163,8,36,36,41,11, 9,222,11,28,192,249,22,73,23,206,2,194,11,11,27,28,23,195,2,23,195, 2,23,194,2,27,88,163,36,37,50,44,62,122,111,225,15,13,9,33,33,27, 88,163,36,37,50,44,66,97,108,116,45,122,111,225,16,14,11,33,34,27,88, @@ -704,8 +704,8 @@ 23,198,1,23,196,1,23,195,1,23,194,1,20,13,159,80,159,57,40,38,250, 80,159,8,24,41,38,249,22,27,11,80,159,8,26,40,38,22,176,4,11,20, 13,159,80,159,57,40,38,250,80,159,8,24,41,38,249,22,27,11,80,159,8, -26,40,38,22,155,5,28,248,22,140,14,23,216,2,23,215,1,86,94,23,215, -1,247,22,181,14,249,247,22,186,14,248,22,74,195,23,25,86,94,23,193,1, +26,40,38,22,155,5,28,248,22,141,14,23,216,2,23,215,1,86,94,23,215, +1,247,22,182,14,249,247,22,187,14,248,22,74,195,23,25,86,94,23,193,1, 27,28,23,195,2,28,23,197,1,27,249,22,5,88,163,8,36,37,53,45,9, 225,25,23,20,33,38,23,217,2,27,28,23,204,2,11,193,28,192,192,28,193, 28,203,28,249,22,188,3,248,22,75,196,248,22,75,206,193,11,11,11,11,86, @@ -713,8 +713,8 @@ 209,1,23,201,1,23,200,1,23,199,1,23,196,1,23,195,1,20,13,159,80, 159,58,40,38,250,80,159,8,25,41,38,249,22,27,11,80,159,8,27,40,38, 22,176,4,23,215,1,20,13,159,80,159,58,40,38,250,80,159,8,25,41,38, -249,22,27,11,80,159,8,27,40,38,22,155,5,28,248,22,140,14,23,217,2, -23,216,1,86,94,23,216,1,247,22,181,14,249,247,22,186,14,248,22,74,195, +249,22,27,11,80,159,8,27,40,38,22,155,5,28,248,22,141,14,23,217,2, +23,216,1,86,94,23,216,1,247,22,182,14,249,247,22,187,14,248,22,74,195, 23,26,86,94,23,193,1,27,28,23,197,2,28,23,201,1,27,249,22,5,20, 20,94,88,163,8,36,37,51,44,9,225,26,24,20,33,39,23,213,1,23,218, 2,27,28,23,204,2,11,193,28,192,192,28,193,28,23,204,2,28,249,22,188, @@ -723,8 +723,8 @@ 23,211,1,23,202,1,23,200,1,23,197,1,23,196,1,20,13,159,80,159,59, 40,38,250,80,159,8,26,41,38,249,22,27,11,80,159,8,28,40,38,22,176, 4,11,20,13,159,80,159,59,40,38,250,80,159,8,26,41,38,249,22,27,11, -80,159,8,28,40,38,22,155,5,28,248,22,140,14,23,218,2,23,217,1,86, -94,23,217,1,247,22,181,14,249,247,22,153,5,248,22,74,195,23,27,86,94, +80,159,8,28,40,38,22,155,5,28,248,22,141,14,23,218,2,23,217,1,86, +94,23,217,1,247,22,182,14,249,247,22,153,5,248,22,74,195,23,27,86,94, 23,193,1,27,28,23,197,1,28,23,201,1,27,249,22,5,20,20,94,88,163, 8,36,37,51,44,9,225,27,25,22,33,40,23,215,1,23,219,1,27,28,23, 205,2,11,193,28,192,192,28,193,28,204,28,249,22,188,3,248,22,75,196,248, @@ -732,21 +732,21 @@ 1,11,28,23,193,2,86,95,23,213,1,23,198,1,20,13,159,80,159,8,24, 40,38,250,80,159,8,27,41,38,249,22,27,11,80,159,8,29,40,38,22,176, 4,23,217,1,20,13,159,80,159,8,24,40,38,250,80,159,8,27,41,38,249, -22,27,11,80,159,8,29,40,38,22,155,5,28,248,22,140,14,23,219,2,23, -218,1,86,94,23,218,1,247,22,181,14,249,247,22,153,5,248,22,74,195,23, +22,27,11,80,159,8,29,40,38,22,155,5,28,248,22,141,14,23,219,2,23, +218,1,86,94,23,218,1,247,22,182,14,249,247,22,153,5,248,22,74,195,23, 28,86,94,23,193,1,27,28,23,199,2,86,94,23,215,1,23,214,1,86,94, 23,214,1,23,215,1,20,13,159,80,159,8,25,40,38,250,80,159,8,28,41, 38,249,22,27,11,80,159,8,30,40,38,22,176,4,28,23,30,28,23,202,1, 11,195,86,94,23,202,1,11,20,13,159,80,159,8,25,40,38,250,80,159,8, -28,41,38,249,22,27,11,80,159,8,30,40,38,22,155,5,28,248,22,140,14, -23,220,2,23,219,1,86,94,23,219,1,247,22,181,14,249,247,22,153,5,194, +28,41,38,249,22,27,11,80,159,8,30,40,38,22,155,5,28,248,22,141,14, +23,220,2,23,219,1,86,94,23,219,1,247,22,182,14,249,247,22,153,5,194, 23,29,0,17,35,114,120,34,94,40,46,42,63,41,47,40,46,42,41,36,34, -32,43,88,163,8,36,37,59,11,2,26,222,33,44,27,249,22,191,14,2,42, +32,43,88,163,8,36,37,59,11,2,26,222,33,44,27,249,22,128,15,2,42, 23,196,2,28,23,193,2,86,94,23,194,1,249,22,73,248,22,98,23,196,2, -27,248,22,107,23,197,1,27,249,22,191,14,2,42,23,196,2,28,23,193,2, +27,248,22,107,23,197,1,27,249,22,128,15,2,42,23,196,2,28,23,193,2, 86,94,23,194,1,249,22,73,248,22,98,23,196,2,27,248,22,107,23,197,1, -27,249,22,191,14,2,42,23,196,2,28,23,193,2,86,94,23,194,1,249,22, -73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,191,14,2,42, +27,249,22,128,15,2,42,23,196,2,28,23,193,2,86,94,23,194,1,249,22, +73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,128,15,2,42, 23,196,2,28,23,193,2,86,94,23,194,1,249,22,73,248,22,98,23,196,2, 248,2,43,248,22,107,23,197,1,248,22,83,194,248,22,83,194,248,22,83,194, 248,22,83,194,32,45,88,163,36,37,8,40,11,2,26,222,33,46,28,248,22, @@ -771,12 +771,12 @@ 195,249,22,7,249,22,73,248,22,74,200,196,195,249,22,7,249,22,73,248,22, 74,201,196,195,249,22,7,249,22,73,248,22,74,200,196,195,249,22,7,249,22, 73,248,22,74,201,196,195,249,22,7,249,22,73,248,22,74,200,196,195,27,27, -249,22,191,14,2,42,23,197,2,28,23,193,2,86,94,23,195,1,249,22,73, -248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,191,14,2,42,23, +249,22,128,15,2,42,23,197,2,28,23,193,2,86,94,23,195,1,249,22,73, +248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,128,15,2,42,23, 196,2,28,23,193,2,86,94,23,194,1,249,22,73,248,22,98,23,196,2,27, -248,22,107,23,197,1,27,249,22,191,14,2,42,23,196,2,28,23,193,2,86, +248,22,107,23,197,1,27,249,22,128,15,2,42,23,196,2,28,23,193,2,86, 94,23,194,1,249,22,73,248,22,98,23,196,2,27,248,22,107,23,197,1,27, -249,22,191,14,2,42,23,196,2,28,23,193,2,86,94,23,194,1,249,22,73, +249,22,128,15,2,42,23,196,2,28,23,193,2,86,94,23,194,1,249,22,73, 248,22,98,23,196,2,248,2,43,248,22,107,23,197,1,248,22,83,194,248,22, 83,194,248,22,83,194,248,22,83,195,28,23,195,1,192,28,248,22,81,248,22, 75,23,195,2,249,22,7,9,248,22,74,195,27,248,22,75,194,90,159,38,11, @@ -802,9 +802,9 @@ 74,202,196,195,249,22,7,249,22,73,248,22,74,200,196,195,86,95,28,248,22, 131,5,195,12,250,22,171,9,2,18,6,20,20,114,101,115,111,108,118,101,100, 45,109,111,100,117,108,101,45,112,97,116,104,197,28,24,193,2,248,24,194,1, -195,86,94,23,193,1,12,27,250,22,153,2,80,159,41,43,38,248,22,152,15, -247,22,182,12,11,27,28,23,194,2,193,86,94,23,194,1,27,247,22,133,2, -86,94,250,22,151,2,80,159,43,43,38,248,22,152,15,247,22,182,12,195,192, +195,86,94,23,193,1,12,27,250,22,153,2,80,159,41,43,38,248,22,153,15, +247,22,183,12,11,27,28,23,194,2,193,86,94,23,194,1,27,247,22,133,2, +86,94,250,22,151,2,80,159,43,43,38,248,22,153,15,247,22,183,12,195,192, 250,22,151,2,195,199,66,97,116,116,97,99,104,251,211,197,198,199,10,28,192, 250,22,170,9,11,196,195,248,22,168,9,194,28,249,22,131,7,194,6,1,1, 46,2,22,28,249,22,131,7,194,6,2,2,46,46,62,117,112,192,32,52,88, @@ -816,10 +816,10 @@ 251,22,168,9,2,18,6,28,28,99,121,99,108,101,32,105,110,32,108,111,97, 100,105,110,103,32,97,116,32,126,46,115,58,32,126,46,115,23,200,1,249,22, 2,22,75,248,22,88,249,22,73,23,206,1,23,202,1,12,12,247,192,20,13, -159,80,159,40,45,38,249,22,73,248,22,152,15,247,22,182,12,23,197,1,20, +159,80,159,40,45,38,249,22,73,248,22,153,15,247,22,183,12,23,197,1,20, 13,159,80,159,40,40,38,250,80,159,43,41,38,249,22,27,11,80,159,45,40, -38,22,175,4,23,196,1,249,247,22,154,5,23,198,1,248,22,61,248,22,144, -14,23,198,1,86,94,28,28,248,22,140,14,23,196,2,10,248,22,139,5,23, +38,22,175,4,23,196,1,249,247,22,154,5,23,198,1,248,22,61,248,22,145, +14,23,198,1,86,94,28,28,248,22,141,14,23,196,2,10,248,22,139,5,23, 196,2,12,28,23,197,2,250,22,170,9,11,6,15,15,98,97,100,32,109,111, 100,117,108,101,32,112,97,116,104,23,200,2,250,22,171,9,2,18,6,19,19, 109,111,100,117,108,101,45,112,97,116,104,32,111,114,32,112,97,116,104,23,198, @@ -833,57 +833,57 @@ 50,86,94,23,193,1,27,88,163,8,36,37,46,11,79,115,104,111,119,45,99, 111,108,108,101,99,116,105,111,110,45,101,114,114,223,5,33,50,27,28,248,22, 58,23,198,2,27,250,22,153,2,80,159,43,44,38,249,22,73,23,203,2,247, -22,182,14,11,28,23,193,2,192,86,94,23,193,1,90,159,38,11,89,161,38, +22,183,14,11,28,23,193,2,192,86,94,23,193,1,90,159,38,11,89,161,38, 36,11,249,80,159,44,49,37,248,22,64,23,203,2,11,27,28,248,22,81,23, 195,2,6,8,8,109,97,105,110,46,114,107,116,249,22,148,7,23,197,2,6, 4,4,46,114,107,116,27,252,80,159,49,54,38,2,18,23,204,1,28,248,22, 81,23,201,2,23,201,1,86,94,23,201,1,248,22,74,23,201,2,28,248,22, 81,23,201,2,86,94,23,200,1,9,248,22,75,23,201,1,23,199,2,249,22, -158,14,23,195,1,23,196,1,28,248,22,189,6,23,198,2,86,94,23,194,1, +159,14,23,195,1,23,196,1,28,248,22,189,6,23,198,2,86,94,23,194,1, 27,248,80,159,41,59,37,23,200,2,27,250,22,153,2,80,159,44,44,38,249, 22,73,23,204,2,23,199,2,11,28,23,193,2,192,86,94,23,193,1,90,159, 38,11,89,161,38,36,11,249,80,159,45,49,37,23,203,2,11,250,22,1,22, -158,14,23,199,1,249,22,87,249,22,2,32,0,88,163,8,36,37,44,11,9, -222,33,51,23,200,1,248,22,83,248,2,52,23,201,1,28,248,22,140,14,23, -198,2,86,94,23,194,1,28,248,22,163,14,23,198,2,248,80,159,40,8,24, -37,248,22,167,14,23,199,2,248,22,83,6,26,26,32,40,97,32,112,97,116, +159,14,23,199,1,249,22,87,249,22,2,32,0,88,163,8,36,37,44,11,9, +222,33,51,23,200,1,248,22,83,248,2,52,23,201,1,28,248,22,141,14,23, +198,2,86,94,23,194,1,28,248,22,164,14,23,198,2,248,80,159,40,8,24, +37,248,22,168,14,23,199,2,248,22,83,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,135,9,248,22,74,23,200,2,2,27,27,250,22,153,2,80,159,43,44,38, -249,22,73,23,203,2,247,22,182,14,11,28,23,193,2,192,86,94,23,193,1, +249,22,73,23,203,2,247,22,183,14,11,28,23,193,2,192,86,94,23,193,1, 90,159,39,11,89,161,38,36,11,249,80,159,45,49,37,248,22,98,23,204,2, 11,89,161,37,38,11,28,248,22,81,248,22,100,23,203,2,28,248,22,81,23, -194,2,249,22,131,15,0,8,35,114,120,34,91,46,93,34,23,196,2,11,10, +194,2,249,22,132,15,0,8,35,114,120,34,91,46,93,34,23,196,2,11,10, 27,28,23,196,2,248,2,52,23,196,2,28,248,22,81,23,195,2,6,8,8, -109,97,105,110,46,114,107,116,28,249,22,131,15,0,8,35,114,120,34,91,46, +109,97,105,110,46,114,107,116,28,249,22,132,15,0,8,35,114,120,34,91,46, 93,34,23,197,2,248,2,52,23,196,2,249,22,148,7,23,197,2,6,4,4, 46,114,107,116,27,28,23,197,1,86,94,23,196,1,249,22,87,28,248,22,81, 248,22,100,23,207,2,21,93,6,5,5,109,122,108,105,98,249,22,1,22,87, 249,22,2,80,159,51,8,25,37,248,22,100,23,210,2,23,197,1,28,248,22, 81,23,196,2,86,94,23,195,1,248,22,83,23,197,1,86,94,23,196,1,23, 195,1,27,252,80,159,51,54,38,2,18,23,206,1,248,22,74,23,200,2,248, -22,75,23,200,1,23,200,2,249,22,158,14,23,195,1,23,197,1,28,249,22, +22,75,23,200,1,23,200,2,249,22,159,14,23,195,1,23,197,1,28,249,22, 135,9,248,22,74,23,200,2,64,102,105,108,101,248,80,159,40,8,24,37,248, -22,167,14,249,22,165,14,248,22,169,14,248,22,98,23,203,2,248,80,159,44, -59,37,23,203,2,12,86,94,28,28,248,22,140,14,23,194,2,10,248,22,150, +22,168,14,249,22,166,14,248,22,170,14,248,22,98,23,203,2,248,80,159,44, +59,37,23,203,2,12,86,94,28,28,248,22,141,14,23,194,2,10,248,22,150, 8,23,194,2,86,94,23,199,1,12,28,23,199,2,250,22,170,9,67,114,101, 113,117,105,114,101,249,22,173,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,74,23,199,2,6,0,0, 23,202,1,86,94,23,199,1,250,22,171,9,2,18,249,22,173,7,6,13,13, 109,111,100,117,108,101,32,112,97,116,104,126,97,28,23,198,2,248,22,74,23, 199,2,6,0,0,23,200,2,27,28,248,22,150,8,23,195,2,249,22,155,8, -23,196,2,36,249,22,167,14,248,22,168,14,23,197,2,11,27,28,248,22,150, +23,196,2,36,249,22,168,14,248,22,169,14,23,197,2,11,27,28,248,22,150, 8,23,196,2,249,22,155,8,23,197,2,37,248,80,159,42,55,38,23,195,2, 90,159,39,11,89,161,39,36,11,28,248,22,150,8,23,199,2,250,22,7,2, -28,249,22,155,8,23,203,2,38,2,28,248,22,161,14,23,198,2,86,95,23, +28,249,22,155,8,23,203,2,38,2,28,248,22,162,14,23,198,2,86,95,23, 195,1,23,193,1,27,28,248,22,150,8,23,200,2,249,22,155,8,23,201,2, 39,249,80,159,47,53,38,23,197,2,5,0,27,28,248,22,150,8,23,201,2, 249,22,155,8,23,202,2,40,248,22,132,5,23,200,2,27,27,250,22,153,2, -80,159,51,43,38,248,22,152,15,247,22,182,12,11,28,23,193,2,192,86,94, +80,159,51,43,38,248,22,153,15,247,22,183,12,11,28,23,193,2,192,86,94, 23,193,1,27,247,22,133,2,86,94,250,22,151,2,80,159,52,43,38,248,22, -152,15,247,22,182,12,195,192,86,95,28,23,208,1,27,250,22,153,2,23,197, +153,15,247,22,183,12,195,192,86,95,28,23,208,1,27,250,22,153,2,23,197, 2,197,11,28,23,193,1,12,86,95,27,27,28,248,22,17,80,159,51,46,38, 80,159,50,46,38,247,22,19,250,22,25,248,22,23,23,197,2,80,159,53,45, -38,23,196,1,27,248,22,152,15,247,22,182,12,249,22,3,20,20,94,88,163, +38,23,196,1,27,248,22,153,15,247,22,183,12,249,22,3,20,20,94,88,163, 8,36,37,55,11,9,226,12,11,2,3,33,54,23,195,1,23,196,1,248,28, 248,22,17,80,159,50,46,38,32,0,88,163,36,37,42,11,9,222,33,55,80, 159,49,8,26,37,88,163,36,36,51,8,176,8,9,227,13,9,8,4,3,33, @@ -891,52 +891,53 @@ 28,248,22,189,6,23,206,2,10,28,248,22,58,23,206,2,10,28,248,22,71, 23,206,2,249,22,135,9,248,22,74,23,208,2,2,27,11,250,22,151,2,80, 159,50,44,38,28,248,22,189,6,23,209,2,249,22,73,23,210,1,248,80,159, -53,59,37,23,212,1,86,94,23,209,1,249,22,73,23,210,1,247,22,182,14, +53,59,37,23,212,1,86,94,23,209,1,249,22,73,23,210,1,247,22,183,14, 252,22,152,8,23,208,1,23,207,1,23,205,1,23,203,1,201,12,193,86,96, -247,80,159,36,57,37,248,22,174,4,80,159,37,51,38,248,22,154,5,80,159, -37,37,37,248,22,173,13,80,159,37,42,37,20,18,159,11,80,158,36,50,248, -80,159,37,58,38,249,22,27,11,80,159,39,52,38,159,36,20,112,159,36,16, -1,11,16,0,20,26,145,2,1,2,1,29,11,11,11,11,11,10,38,80,158, -36,36,20,112,159,40,16,23,2,2,2,3,30,2,5,72,112,97,116,104,45, -115,116,114,105,110,103,63,11,30,2,5,75,112,97,116,104,45,97,100,100,45, -115,117,102,102,105,120,8,30,2,7,2,8,5,30,2,7,1,23,101,120,116, -101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,3, -2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16,2,17,2,18,30, -2,19,2,8,5,30,2,5,79,112,97,116,104,45,114,101,112,108,97,99,101, -45,115,117,102,102,105,120,10,30,2,5,73,102,105,110,100,45,99,111,108,45, -102,105,108,101,3,30,2,5,76,110,111,114,109,97,108,45,99,97,115,101,45, -112,97,116,104,7,2,20,2,21,30,2,19,74,114,101,112,97,114,97,109,101, -116,101,114,105,122,101,6,16,0,16,0,36,16,0,36,16,11,2,12,2,13, -2,10,2,11,2,14,2,15,2,3,2,9,2,2,2,16,2,18,47,11,11, -39,36,11,11,11,16,3,2,20,2,17,2,21,16,3,11,11,11,16,3,2, -20,2,17,2,21,39,39,37,11,11,11,16,0,16,0,16,0,36,36,11,11, -11,11,16,0,16,0,16,0,36,36,16,0,16,18,20,15,16,2,88,163,36, -37,45,8,128,16,9,223,0,33,29,80,159,36,8,26,37,20,15,16,2,88, -163,8,36,37,45,8,128,128,9,223,0,33,30,80,159,36,8,25,37,20,15, -16,2,88,163,36,37,49,8,240,0,0,2,0,72,112,97,116,104,45,115,115, -45,62,114,107,116,223,0,33,31,80,159,36,8,24,37,20,15,16,2,88,163, -36,37,49,8,128,96,67,103,101,116,45,100,105,114,223,0,33,32,80,159,36, -59,37,20,15,16,2,248,22,147,8,69,115,111,45,115,117,102,102,105,120,80, -159,36,36,37,20,15,16,2,88,163,36,38,8,38,8,61,2,3,223,0,33, -41,80,159,36,37,37,20,15,16,2,32,0,88,163,8,36,37,42,11,2,9, -222,192,80,159,36,42,37,20,15,16,2,247,22,136,2,80,159,36,43,37,20, -15,16,2,247,22,135,2,80,159,36,44,37,20,15,16,2,247,22,69,80,159, -36,45,37,20,15,16,2,248,22,18,74,109,111,100,117,108,101,45,108,111,97, -100,105,110,103,80,159,36,46,37,20,15,16,2,11,80,158,36,47,20,15,16, -2,11,80,158,36,48,20,15,16,2,32,0,88,163,36,38,8,42,11,2,16, -222,33,47,80,159,36,49,37,20,15,16,2,11,80,158,36,50,20,15,16,2, -90,159,38,10,89,161,37,36,10,11,89,161,37,37,10,20,25,96,2,18,88, -163,8,36,37,51,8,128,2,9,224,2,0,33,48,88,163,36,39,49,11,9, -223,1,33,49,88,163,36,40,8,29,8,240,176,103,143,7,9,224,2,0,33, -57,208,80,159,36,51,37,20,15,16,2,88,163,36,36,43,8,240,66,128,32, -0,2,20,223,0,33,58,80,159,36,56,37,20,15,16,2,88,163,8,36,36, -45,8,240,0,64,65,0,2,21,223,0,33,59,80,159,36,57,37,96,29,94, -2,4,68,35,37,107,101,114,110,101,108,11,29,94,2,4,69,35,37,109,105, -110,45,115,116,120,11,2,5,2,19,9,9,9,36,0}; - EVAL_ONE_SIZED_STR((char *)expr, 6524); +20,18,159,11,80,158,36,50,248,80,159,37,58,38,249,22,27,11,80,159,39, +52,38,248,22,174,4,80,159,37,51,38,248,22,154,5,80,159,37,37,37,248, +22,174,13,80,159,37,42,37,20,18,159,11,80,158,36,50,248,80,159,37,58, +38,249,22,27,11,80,159,39,52,38,159,36,20,112,159,36,16,1,11,16,0, +20,26,145,2,1,2,1,29,11,11,11,11,11,10,38,80,158,36,36,20,112, +159,40,16,23,2,2,2,3,30,2,5,72,112,97,116,104,45,115,116,114,105, +110,103,63,11,30,2,5,75,112,97,116,104,45,97,100,100,45,115,117,102,102, +105,120,8,30,2,7,2,8,5,30,2,7,1,23,101,120,116,101,110,100,45, +112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,3,2,9,2,10, +2,11,2,12,2,13,2,14,2,15,2,16,2,17,2,18,30,2,19,2,8, +5,30,2,5,79,112,97,116,104,45,114,101,112,108,97,99,101,45,115,117,102, +102,105,120,10,30,2,5,73,102,105,110,100,45,99,111,108,45,102,105,108,101, +3,30,2,5,76,110,111,114,109,97,108,45,99,97,115,101,45,112,97,116,104, +7,2,20,2,21,30,2,19,74,114,101,112,97,114,97,109,101,116,101,114,105, +122,101,6,16,0,16,0,36,16,0,36,16,11,2,12,2,13,2,10,2,11, +2,14,2,15,2,3,2,9,2,2,2,16,2,18,47,11,11,39,36,11,11, +11,16,3,2,20,2,17,2,21,16,3,11,11,11,16,3,2,20,2,17,2, +21,39,39,37,11,11,11,16,0,16,0,16,0,36,36,11,11,11,11,16,0, +16,0,16,0,36,36,16,0,16,18,20,15,16,2,88,163,36,37,45,8,128, +16,9,223,0,33,29,80,159,36,8,26,37,20,15,16,2,88,163,8,36,37, +45,8,128,128,9,223,0,33,30,80,159,36,8,25,37,20,15,16,2,88,163, +36,37,49,8,240,0,0,2,0,72,112,97,116,104,45,115,115,45,62,114,107, +116,223,0,33,31,80,159,36,8,24,37,20,15,16,2,88,163,36,37,49,8, +128,96,67,103,101,116,45,100,105,114,223,0,33,32,80,159,36,59,37,20,15, +16,2,248,22,147,8,69,115,111,45,115,117,102,102,105,120,80,159,36,36,37, +20,15,16,2,88,163,36,38,8,38,8,61,2,3,223,0,33,41,80,159,36, +37,37,20,15,16,2,32,0,88,163,8,36,37,42,11,2,9,222,192,80,159, +36,42,37,20,15,16,2,247,22,136,2,80,159,36,43,37,20,15,16,2,247, +22,135,2,80,159,36,44,37,20,15,16,2,247,22,69,80,159,36,45,37,20, +15,16,2,248,22,18,74,109,111,100,117,108,101,45,108,111,97,100,105,110,103, +80,159,36,46,37,20,15,16,2,11,80,158,36,47,20,15,16,2,11,80,158, +36,48,20,15,16,2,32,0,88,163,36,38,8,42,11,2,16,222,33,47,80, +159,36,49,37,20,15,16,2,11,80,158,36,50,20,15,16,2,27,11,20,19, +158,36,90,159,37,10,89,161,37,36,10,20,25,96,2,18,88,163,8,36,37, +51,8,128,2,9,224,2,1,33,48,88,163,36,39,49,11,9,223,0,33,49, +88,163,36,40,8,29,8,240,176,103,143,7,9,224,2,1,33,57,207,80,159, +36,51,37,20,15,16,2,88,163,36,36,45,8,240,66,192,65,0,2,20,223, +0,33,58,80,159,36,56,37,20,15,16,2,88,163,8,36,36,45,8,240,0, +64,65,0,2,21,223,0,33,59,80,159,36,57,37,96,29,94,2,4,68,35, +37,107,101,114,110,101,108,11,29,94,2,4,69,35,37,109,105,110,45,115,116, +120,11,2,5,2,19,9,9,9,36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 6541); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,49,46,53,0,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,49,46,54,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,11,0,0,0,1,0,0,10,0,16,0,29, 0,44,0,58,0,78,0,90,0,104,0,118,0,170,0,0,0,100,1,0,0, 69,35,37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2,2,67, @@ -944,7 +945,7 @@ 107,11,29,94,2,2,68,35,37,112,97,114,97,109,122,11,29,94,2,2,74, 35,37,112,108,97,99,101,45,115,116,114,117,99,116,11,29,94,2,2,66,35, 37,98,111,111,116,11,29,94,2,2,68,35,37,101,120,112,111,98,115,11,29, -94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,87,85,0, +94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,223,86,0, 0,100,159,2,3,36,36,159,2,4,36,36,159,2,5,36,36,159,2,6,36, 36,159,2,7,36,36,159,2,8,36,36,159,2,9,36,36,159,2,9,36,36, 16,0,159,36,20,112,159,36,16,1,11,16,0,20,26,145,2,1,2,1,29, diff --git a/src/racket/src/fun.c b/src/racket/src/fun.c index 64aa03cea0..9564a8281d 100644 --- a/src/racket/src/fun.c +++ b/src/racket/src/fun.c @@ -501,7 +501,7 @@ scheme_init_fun (Scheme_Env *env) o = scheme_make_folding_prim(scheme_procedure_arity_includes, "procedure-arity-includes?", - 2, 2, 1); + 2, 3, 1); SCHEME_PRIM_PROC_FLAGS(o) |= SCHEME_PRIM_IS_BINARY_INLINED; scheme_procedure_arity_includes_proc = o; scheme_add_global_constant("procedure-arity-includes?", o, env); @@ -1854,7 +1854,7 @@ static Scheme_Object *clone_arity(Scheme_Object *a, int delta) return a; } -static Scheme_Object *get_or_check_arity(Scheme_Object *p, intptr_t a, Scheme_Object *bign) +static Scheme_Object *get_or_check_arity(Scheme_Object *p, intptr_t a, Scheme_Object *bign, int inc_ok) /* a == -1 => get arity a == -2 => check for allowing bignum */ { @@ -1932,6 +1932,10 @@ static Scheme_Object *get_or_check_arity(Scheme_Object *p, intptr_t a, Scheme_Ob return first; } else if (type == scheme_proc_struct_type) { int is_method; + if (!inc_ok + && scheme_no_arity_property + && scheme_struct_type_property_ref(scheme_no_arity_property, p)) + return scheme_false; if (scheme_reduced_procedure_struct && scheme_is_struct_instance(scheme_reduced_procedure_struct, p)) { if (a >= 0) { @@ -2183,7 +2187,7 @@ static Scheme_Object *get_or_check_arity(Scheme_Object *p, intptr_t a, Scheme_Ob Scheme_Object *scheme_get_or_check_arity(Scheme_Object *p, intptr_t a) { - return get_or_check_arity(p, a, NULL); + return get_or_check_arity(p, a, NULL, 1); } int scheme_check_proc_arity2(const char *where, int a, @@ -2200,7 +2204,7 @@ int scheme_check_proc_arity2(const char *where, int a, if (false_ok && SCHEME_FALSEP(p)) return 1; - if (!SCHEME_PROCP(p) || SCHEME_FALSEP(get_or_check_arity(p, a, NULL))) { + if (!SCHEME_PROCP(p) || SCHEME_FALSEP(get_or_check_arity(p, a, NULL, 1))) { if (where) { char buffer[60]; @@ -2522,7 +2526,7 @@ static Scheme_Object *object_name(int argc, Scheme_Object **argv) Scheme_Object *scheme_arity(Scheme_Object *p) { - return get_or_check_arity(p, -1, NULL); + return get_or_check_arity(p, -1, NULL, 1); } static Scheme_Object *procedure_arity(int argc, Scheme_Object *argv[]) @@ -2530,7 +2534,7 @@ static Scheme_Object *procedure_arity(int argc, Scheme_Object *argv[]) if (!SCHEME_PROCP(argv[0])) scheme_wrong_type("procedure-arity", "procedure", 0, argc, argv); - return get_or_check_arity(argv[0], -1, NULL); + return get_or_check_arity(argv[0], -1, NULL, 1); } static Scheme_Object *procedure_arity_p(int argc, Scheme_Object *argv[]) @@ -2569,6 +2573,7 @@ static Scheme_Object *procedure_arity_p(int argc, Scheme_Object *argv[]) Scheme_Object *scheme_procedure_arity_includes(int argc, Scheme_Object *argv[]) { intptr_t n; + int inc_ok; if (!SCHEME_PROCP(argv[0])) scheme_wrong_type("procedure-arity-includes?", "procedure", 0, argc, argv); @@ -2576,7 +2581,9 @@ Scheme_Object *scheme_procedure_arity_includes(int argc, Scheme_Object *argv[]) n = scheme_extract_index("procedure-arity-includes?", 1, argc, argv, -2, 0); /* -2 means a bignum */ - return get_or_check_arity(argv[0], n, argv[1]); + inc_ok = ((argc > 2) && SCHEME_TRUEP(argv[2])); + + return get_or_check_arity(argv[0], n, argv[1], inc_ok); } static int is_arity(Scheme_Object *a, int at_least_ok, int list_ok) @@ -2788,7 +2795,7 @@ static Scheme_Object *procedure_reduce_arity(int argc, Scheme_Object *argv[]) a bit complicated, because both the source and target can be lists that include arity-at-least records. */ - orig = get_or_check_arity(argv[0], -1, NULL); + orig = get_or_check_arity(argv[0], -1, NULL, 1); aty = clone_arity(argv[1], 0); if (!is_subarity(aty, orig)) { @@ -2816,7 +2823,7 @@ static Scheme_Object *procedure_rename(int argc, Scheme_Object *argv[]) p = scheme_rename_struct_proc(argv[0], argv[1]); if (p) return p; - aty = get_or_check_arity(argv[0], -1, NULL); + aty = get_or_check_arity(argv[0], -1, NULL, 1); return make_reduced_proc(argv[0], aty, argv[1], NULL); } @@ -2828,7 +2835,7 @@ static Scheme_Object *procedure_to_method(int argc, Scheme_Object *argv[]) if (!SCHEME_PROCP(argv[0])) scheme_wrong_type("procedure->method", "procedure", 0, argc, argv); - aty = get_or_check_arity(argv[0], -1, NULL); + aty = get_or_check_arity(argv[0], -1, NULL, 1); return make_reduced_proc(argv[0], aty, NULL, scheme_true); } @@ -2957,8 +2964,8 @@ static Scheme_Object *do_chaperone_procedure(const char *name, const char *whati if (!SCHEME_PROCP(argv[1])) scheme_wrong_type(name, "procedure", 1, argc, argv); - orig = get_or_check_arity(val, -1, NULL); - naya = get_or_check_arity(argv[1], -1, NULL); + orig = get_or_check_arity(val, -1, NULL, 1); + naya = get_or_check_arity(argv[1], -1, NULL, 1); if (!is_subarity(orig, naya)) scheme_raise_exn(MZEXN_FAIL_CONTRACT, @@ -8331,7 +8338,7 @@ static Scheme_Object *time_apply(int argc, Scheme_Object *argv[]) num_rands++; } - if (SCHEME_FALSEP(get_or_check_arity(argv[0], num_rands, NULL))) { + if (SCHEME_FALSEP(get_or_check_arity(argv[0], num_rands, NULL, 1))) { char *s; intptr_t aelen; diff --git a/src/racket/src/schminc.h b/src/racket/src/schminc.h index 1d31e05be0..aac25e7e72 100644 --- a/src/racket/src/schminc.h +++ b/src/racket/src/schminc.h @@ -13,7 +13,7 @@ #define USE_COMPILED_STARTUP 1 -#define EXPECTED_PRIM_COUNT 1022 +#define EXPECTED_PRIM_COUNT 1023 #define EXPECTED_UNSAFE_COUNT 76 #define EXPECTED_FLFXNUM_COUNT 68 #define EXPECTED_FUTURES_COUNT 11 diff --git a/src/racket/src/schpriv.h b/src/racket/src/schpriv.h index cd86638035..3e3d4bf6d7 100644 --- a/src/racket/src/schpriv.h +++ b/src/racket/src/schpriv.h @@ -406,6 +406,8 @@ extern Scheme_Object *scheme_impersonator_of_property; extern Scheme_Object *scheme_app_mark_impersonator_property; +extern Scheme_Object *scheme_no_arity_property; + extern Scheme_Object *scheme_reduced_procedure_struct; /*========================================================================*/ diff --git a/src/racket/src/schvers.h b/src/racket/src/schvers.h index 9e0b98f9a0..fb18538e73 100644 --- a/src/racket/src/schvers.h +++ b/src/racket/src/schvers.h @@ -13,12 +13,12 @@ consistently.) */ -#define MZSCHEME_VERSION "5.1.1.5" +#define MZSCHEME_VERSION "5.1.1.6" #define MZSCHEME_VERSION_X 5 #define MZSCHEME_VERSION_Y 1 #define MZSCHEME_VERSION_Z 1 -#define MZSCHEME_VERSION_W 5 +#define MZSCHEME_VERSION_W 6 #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W) diff --git a/src/racket/src/struct.c b/src/racket/src/struct.c index 0af4bc59b8..72128a1a4d 100644 --- a/src/racket/src/struct.c +++ b/src/racket/src/struct.c @@ -32,6 +32,7 @@ READ_ONLY Scheme_Object *scheme_source_property; READ_ONLY Scheme_Object *scheme_input_port_property; READ_ONLY Scheme_Object *scheme_output_port_property; READ_ONLY Scheme_Object *scheme_equal_property; +READ_ONLY Scheme_Object *scheme_no_arity_property; READ_ONLY Scheme_Object *scheme_impersonator_of_property; READ_ONLY Scheme_Object *scheme_make_struct_type_proc; READ_ONLY Scheme_Object *scheme_current_inspector_proc; @@ -337,6 +338,12 @@ scheme_init_struct (Scheme_Env *env) scheme_add_global_constant("prop:procedure", proc_property, env); } + { + REGISTER_SO(scheme_no_arity_property); + scheme_no_arity_property = scheme_make_struct_type_property(scheme_intern_symbol("incomplete-arity")); + scheme_add_global_constant("prop:incomplete-arity", scheme_no_arity_property, env); + } + { guard = scheme_make_prim_w_arity(check_equal_property_value_ok, "guard-for-prop:equal+hash",