diff --git a/pkgs/drracket-pkgs/drracket/pkg/gui/by-installed.rkt b/pkgs/drracket-pkgs/drracket/pkg/gui/by-installed.rkt index cbe8204501..63792c007b 100644 --- a/pkgs/drracket-pkgs/drracket/pkg/gui/by-installed.rkt +++ b/pkgs/drracket-pkgs/drracket/pkg/gui/by-installed.rkt @@ -20,7 +20,6 @@ [else (case a [(installation) #t] - [(user) (eq? b 'shared)] [else #f])])) (define (ipkg "https://pkg.racket-lang.org\nhttps://planet-compat.racket-lang.org\n" - $ "raco pkg config -s --set catalogs http://localhost:9000" - $ "raco pkg config -s catalogs" =stdout> "http://localhost:9000\n" - - ;; shared value inherited as user: - $ "raco pkg config catalogs" =stdout> "http://localhost:9000\n" - - ;; user separate from shared: - $ "raco pkg config --set -u catalogs http://localhost:0999" - $ "raco pkg config -u catalogs" =stdout> "http://localhost:0999\n" - $ "raco pkg config -s catalogs" =stdout> "http://localhost:9000\n" + $ "raco pkg config -u --set catalogs http://localhost:9000" + $ "raco pkg config -u catalogs" =stdout> "http://localhost:9000\n" ;; can set default scope: - $ "raco pkg config --set -u default-scope shared" - $ "raco pkg config -u default-scope" =stdout> "shared\n" - $ "raco pkg config -s default-scope" =stdout> "user\n" + $ "raco pkg config --set -u default-scope installation" + $ "raco pkg config -u default-scope" =stdout> "installation\n" + $ "raco pkg config -i default-scope" =stdout> "user\n" $ "raco pkg config default-scope" =stdout> "user\n" - $ "raco pkg config catalogs" =stdout> "http://localhost:9000\n"))) + $ "raco pkg config -u catalogs" =stdout> "http://localhost:9000\n"))) diff --git a/pkgs/racket-pkgs/racket-test/tests/pkg/tests-remove.rkt b/pkgs/racket-pkgs/racket-test/tests/pkg/tests-remove.rkt index 72da6d4ba3..fa4385489f 100644 --- a/pkgs/racket-pkgs/racket-test/tests/pkg/tests-remove.rkt +++ b/pkgs/racket-pkgs/racket-test/tests/pkg/tests-remove.rkt @@ -20,7 +20,7 @@ (shelly-case "remove and show" (shelly-case "remove of not installed package fails" - $ "raco pkg show -u" =stdout> " [none]\n" + $ "raco pkg show -u -a" =stdout> " [none]\n" $ "raco pkg remove not-there" =exit> 1) (shelly-install "remove test" "test-pkgs/pkg-test1.zip") @@ -29,12 +29,12 @@ "pkg-test1 pkg-test1") (shelly-install "remove of dep fails" "test-pkgs/pkg-test1.zip" - $ "raco pkg show -u" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-test1 +[a-f0-9]+ +\\(file .+tests/pkg/test-pkgs/pkg-test1.zip\\)\n" + $ "raco pkg show -u -a" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-test1 +[a-f0-9]+ +\\(file .+tests/pkg/test-pkgs/pkg-test1.zip\\)\n" $ "raco pkg install test-pkgs/pkg-test2.zip" - $ "raco pkg show -u" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-test1 +[a-f0-9]+ +\\(file .+tests/pkg/test-pkgs/pkg-test1.zip\\)\npkg-test2 +[a-f0-9]+ +\\(file .+tests/pkg/test-pkgs/pkg-test2.zip\\)\n" + $ "raco pkg show -u -a" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-test1 +[a-f0-9]+ +\\(file .+tests/pkg/test-pkgs/pkg-test1.zip\\)\npkg-test2 +[a-f0-9]+ +\\(file .+tests/pkg/test-pkgs/pkg-test2.zip\\)\n" $ "raco pkg remove pkg-test1" =exit> 1 =stderr> #rx"pkg-test1 \\(required by: \\(pkg-test2\\)\\)" $ "raco pkg remove pkg-test2" - $ "raco pkg show -u" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-test1 +[a-f0-9]+ +\\(file .+tests/pkg/test-pkgs/pkg-test1.zip\\)\n") + $ "raco pkg show -u -a" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-test1 +[a-f0-9]+ +\\(file .+tests/pkg/test-pkgs/pkg-test1.zip\\)\n") (shelly-install "remove of dep can be forced" "test-pkgs/pkg-test1.zip" $ "raco pkg install test-pkgs/pkg-test2.zip" @@ -62,21 +62,21 @@ $ "racket -e '(require pkg-test1)'" =exit> 1 $ "racket -e '(require pkg-test2)'" =exit> 1 $ "raco pkg install --deps search-auto test-pkgs/pkg-test2.zip" =exit> 0 - $ "raco pkg show -u" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-test1\\* +[a-f0-9]+ +\\(catalog pkg-test1\\)\npkg-test2 +[a-f0-9]+ +\\(file .+tests/pkg/test-pkgs/pkg-test2.zip\\)\n" + $ "raco pkg show -u -a" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-test1\\* +[a-f0-9]+ +\\(catalog pkg-test1\\)\npkg-test2 +[a-f0-9]+ +\\(file .+tests/pkg/test-pkgs/pkg-test2.zip\\)\n" $ "racket -e '(require pkg-test1)'" =exit> 0 $ "racket -e '(require pkg-test2)'" =exit> 0 $ "racket -e '(require pkg-test2/contains-dep)'" =exit> 0 $ "raco pkg remove pkg-test2" - $ "raco pkg show -u" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-test1\\* +[a-f0-9]+ +\\(catalog pkg-test1\\)\n" + $ "raco pkg show -u -a" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-test1\\* +[a-f0-9]+ +\\(catalog pkg-test1\\)\n" $ "racket -e '(require pkg-test1)'" =exit> 0 $ "raco pkg remove --auto" - $ "raco pkg show -u" =stdout> " [none]\n" + $ "raco pkg show -u -a" =stdout> " [none]\n" $ "racket -e '(require pkg-test1)'" =exit> 1 $ "racket -e '(require pkg-test2)'" =exit> 1)) (with-fake-root (shelly-case "different scope error" - $ "raco pkg install --shared test-pkgs/pkg-test1.zip" =exit> 0 - $ "raco pkg remove pkg-test1" =exit> 1 - =stderr> #rx"package installed in a different scope: shared" - $ "raco pkg remove --shared pkg-test1"))))) + $ "raco pkg install test-pkgs/pkg-test1.zip" =exit> 0 + $ "raco pkg remove --installation pkg-test1" =exit> 1 + =stderr> #rx"package installed in a different scope: user" + $ "raco pkg remove pkg-test1"))))) diff --git a/pkgs/racket-pkgs/racket-test/tests/pkg/tests-update-auto.rkt b/pkgs/racket-pkgs/racket-test/tests/pkg/tests-update-auto.rkt index a9915c803f..a858ba0553 100644 --- a/pkgs/racket-pkgs/racket-test/tests/pkg/tests-update-auto.rkt +++ b/pkgs/racket-pkgs/racket-test/tests/pkg/tests-update-auto.rkt @@ -46,12 +46,12 @@ 'source "http://localhost:9999/pkg-a-first.plt")) $ "raco pkg install --deps search-auto pkg-b" =exit> 0 #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-a\\* +[a-f0-9]+ \\(catalog pkg-a\\)\npkg-b +[a-f0-9]+ +\\(catalog pkg-b\\)\n" + $ "raco pkg show -u -a" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-a\\* +[a-f0-9]+ \\(catalog pkg-a\\)\npkg-b +[a-f0-9]+ +\\(catalog pkg-b\\)\n" $ "racket -e '(require pkg-b)'" =exit> 43 $ "racket -e '(require pkg-a)'" =exit> 0 ;; remove auto doesn't do anything because everything is needed $ "raco pkg remove --auto" - $ "raco pkg show -u" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-a\\* +[a-f0-9]+ \\(catalog pkg-a\\)\npkg-b +[a-f0-9]+ +\\(catalog pkg-b\\)\n" + $ "raco pkg show -u -a" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-a\\* +[a-f0-9]+ \\(catalog pkg-a\\)\npkg-b +[a-f0-9]+ +\\(catalog pkg-b\\)\n" $ "racket -e '(require pkg-b)'" =exit> 43 $ "racket -e '(require pkg-a)'" =exit> 0 ;; pkg-a is now an auto @@ -63,9 +63,9 @@ $ "raco pkg update -a" =exit> 0 $ "racket -e '(require pkg-a)'" =exit> 43 $ "raco pkg remove pkg-b" - $ "raco pkg show -u" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-a\\* +[a-f0-9]+ +\\(catalog pkg-a\\)\n" + $ "raco pkg show -u -a" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-a\\* +[a-f0-9]+ +\\(catalog pkg-a\\)\n" $ "racket -e '(require pkg-b)'" =exit> 1 ;; pkg-a is now not needed $ "raco pkg remove --auto" - $ "raco pkg show -u" =stdout> " [none]\n" + $ "raco pkg show -u -a" =stdout> " [none]\n" $ "racket -e '(require pkg-a)'" =exit> 1))) diff --git a/pkgs/sandbox-lib/racket/sandbox.rkt b/pkgs/sandbox-lib/racket/sandbox.rkt index 42fe5287bd..bd26e361a1 100644 --- a/pkgs/sandbox-lib/racket/sandbox.rkt +++ b/pkgs/sandbox-lib/racket/sandbox.rkt @@ -930,13 +930,11 @@ #:when (file-exists? f)) (links #:root? #t #:file f))) (links #:root? #t #:user? #t) - (links #:root? #t #:shared? #t) (apply append (for/list ([f (get-links-search-files)] #:when (file-exists? f)) (map cdr (links #:file f #:with-path? #t)))) - (map cdr (links #:user? #t #:with-path? #t)) - (map cdr (links #:shared? #t #:with-path? #t)))) + (map cdr (links #:user? #t #:with-path? #t)))) (read-bytecode ,(PLANET-BASE-DIR)) (exists ,(find-system-path 'addon-dir)) (read ,(build-path (find-system-path 'addon-dir) "links.rktd")) diff --git a/racket/collects/pkg/lib.rkt b/racket/collects/pkg/lib.rkt index 19ea84c5ed..462a1bf4b8 100644 --- a/racket/collects/pkg/lib.rkt +++ b/racket/collects/pkg/lib.rkt @@ -35,7 +35,7 @@ (define current-pkg-scope (make-parameter 'user)) (define current-pkg-scope-version - (make-parameter (version))) + (make-parameter (get-installation-name))) (define current-pkg-error (make-parameter (lambda args (apply error 'pkg args)))) (define current-no-pkg-db @@ -409,13 +409,9 @@ (for*/hash ([dir (in-list (get-pkgs-search-dirs))] [(k v) (read-pkgs-db dir)]) (values k v))] - [(shared) - (define db (read-pkgs-db 'shared)) - (for/fold ([ht (merge-next-pkg-dbs 'installation)]) ([(k v) (in-hash db)]) - (hash-set ht k v))] [(user) (define db (read-pkgs-db 'user)) - (for/fold ([ht (merge-next-pkg-dbs 'shared)]) ([(k v) (in-hash db)]) + (for/fold ([ht (merge-next-pkg-dbs 'installation)]) ([(k v) (in-hash db)]) (hash-set ht k v))]))) (define (package-info pkg-name [fail? #t] #:db [given-db #f]) @@ -430,7 +426,6 @@ (pkg-not-installed pkg-name db)])) ;; return the current scope as a string -;; -> (or/c "user" "shared" "installation") (define (current-scope->string) (define scope (current-pkg-scope)) (cond @@ -446,22 +441,17 @@ (define user-db (parameterize ([current-pkg-scope 'user]) (read-pkg-db))) - (define shared-db - (parameterize ([current-pkg-scope 'shared]) - (read-pkg-db))) ;; see if the package is installed in any scope - (define-values (in-install? in-user? in-shared?) + (define-values (in-install? in-user?) (values (and (hash-ref installation-db pkg-name #f) "--installation") (and (hash-ref user-db pkg-name #f) - "--user") - (and (hash-ref shared-db pkg-name #f) - "--shared"))) + "--user"))) (define not-installed-msg - (cond [(or in-user? in-install? in-shared?) + (cond [(or in-user? in-install?) => (λ (scope-str) (~a "could not remove package\n" @@ -510,9 +500,7 @@ ;; Hard-wided: (get-default) ;; Enclosing: - (parameterize ([current-pkg-scope (if (eq? s 'user) - 'shared - 'installation)]) + (parameterize ([current-pkg-scope 'installation]) (read-pkg-cfg/def k)))] [else (match k @@ -535,7 +523,6 @@ (define (default-pkg-scope) (match (default-pkg-scope-as-string) ["installation" 'installation] - ["shared" 'shared] [else 'user])) (define (default-pkg-scope-as-string) (read-pkg-cfg/def 'default-scope)) @@ -568,7 +555,7 @@ (if (path? current-scope) (list current-scope) (member current-scope - (append '(user shared) + (append '(user) (let ([main (find-pkgs-dir)]) (for/list ([d (get-pkgs-search-dirs)]) (if (equal? d main) @@ -603,21 +590,17 @@ (define scope (current-pkg-scope)) (define user? (not (or (eq? scope 'installation) (path? scope)))) - (define shared? (and user? - (eq? (current-pkg-scope) 'shared))) (match orig-pkg [`(,(or 'link 'static-link) ,_) (links pkg-dir #:remove? #t #:user? user? - #:shared? shared? #:file (scope->links-file scope) #:root? (not (sc-pkg-info? pi)))] [_ (links pkg-dir #:remove? #t #:user? user? - #:shared? shared? #:file (scope->links-file scope) #:root? (not (sc-pkg-info? pi))) (delete-directory/files pkg-dir)])) @@ -1323,7 +1306,6 @@ #:name single-collect #:user? (not (or (eq? 'installation scope) (path? scope))) - #:shared? (eq? 'shared scope) #:file (scope->links-file scope) #:root? (not single-collect) #:static-root? (and (pair? orig-pkg) @@ -1641,11 +1623,11 @@ [(list* (and key "catalogs") val) (update-pkg-cfg! 'catalogs val)] [(list (and key "default-scope") val) - (unless (member val '("installation" "user" "shared")) + (unless (member val '("installation" "user")) (pkg-error (~a "invalid value for config key\n" " config key: ~a\n" " given value: ~a\n" - " valid values: installation, user, or shared") + " valid values: installation, user") key val)) (update-pkg-cfg! 'default-scope val)] @@ -1784,10 +1766,9 @@ (parameterize ([current-pkg-scope scope]) (with-pkg-lock/read-only (pkg-directory* dir-or-name)))) - (define dir (or (get-dir 'user) - (get-dir 'shared))) + (define dir (get-dir 'user)) (unless dir - (pkg-error (~a "package not installed in user or shared scope\n" + (pkg-error (~a "package not installed in user scope\n" " package name: ~a" (if (get-dir 'installation) "\n installed in scope: installation" @@ -2258,7 +2239,7 @@ (or/c #f 'fail 'force 'search-ask 'search-auto)) (define package-scope/c - (or/c 'installation 'user 'shared + (or/c 'installation 'user (and/c path? complete-path?))) (provide diff --git a/racket/collects/pkg/main.rkt b/racket/collects/pkg/main.rkt index 880e293809..b36cc88067 100644 --- a/racket/collects/pkg/main.rkt +++ b/racket/collects/pkg/main.rkt @@ -1,6 +1,5 @@ #lang racket/base -(require (only-in racket/base [version r:version]) - racket/function +(require racket/function racket/list raco/command-name setup/dirs @@ -31,15 +30,14 @@ (string->symbol (format "~a ~a" (short-program+command-name) cmd)) args)) -(define (call-with-package-scope who given-scope scope-dir installation shared user thunk) +(define (call-with-package-scope who given-scope scope-dir installation user thunk) (define scope (case given-scope - [(installation user shared) given-scope] + [(installation user) given-scope] [else (cond [installation 'installation] [user 'user] - [shared 'shared] [scope-dir (path->complete-path scope-dir)] [else (default-pkg-scope)])])) (parameterize ([current-pkg-scope scope] @@ -83,14 +81,12 @@ #:once-each [#:bool skip-installed () ("Skip a if already installed")] #:once-any - [(#:sym scope [installation user shared] #f) scope () + [(#:sym scope [installation user] #f) scope () ("Select package , one of" " installation: Install for all users of the Racket installation" - " user: Install as user- and version-specific" - " shared: Install as user-specific but shared for all Racket versions")] + " user: Install as user-specific for an installation version/name")] [#:bool installation ("-i") "Shorthand for `--scope installation'"] [#:bool user ("-u") "Shorthand for `--scope user'"] - [#:bool shared ("-s") "Shorthand for `--scope shared'"] [(#:str dir #f) scope-dir () "Install for package scope "] #:once-each [(#:str catalog #f) catalog () "Use instead of configured catalogs"] @@ -100,7 +96,7 @@ #:args pkg-source (call-with-package-scope 'install - scope scope-dir installation shared user + scope scope-dir installation user (lambda () (unless (or (not name) (package-source->name name)) ((current-pkg-error) (format "~e is an invalid package name" name))) @@ -135,14 +131,12 @@ " search-auto: like 'search-ask' but does not ask for permission to install")] [#:bool update-deps () "Check named packages' dependencies for updates"] #:once-any - [(#:sym scope [installation user shared] #f) scope () + [(#:sym scope [installation user] #f) scope () ("Select package scope, one of" " installation: Update only for all users of the Racket installation" - " user: Update only user- and version-specific packages" - " shared: Update only user-specific packages for all Racket versions")] + " user: Update only user-specific for an installation version/name")] [#:bool installation ("-i") "Shorthand for `--scope installation'"] [#:bool user ("-u") "Shorthand for `--scope user'"] - [#:bool shared ("-s") "Shorthand for `--scope shared'"] [(#:str dir #f) scope-dir () "Update for package scope "] #:once-any [#:bool source () ("Strip built elements of the package before installing")] @@ -154,7 +148,7 @@ #:args pkg (call-with-package-scope 'update - scope scope-dir installation shared user + scope scope-dir installation user (lambda () (define setup-collects (with-pkg-lock @@ -170,14 +164,12 @@ [#:bool force () "Force removal of packages"] [#:bool auto () "Remove automatically installed packages with no dependencies"] #:once-any - [(#:sym scope [installation user shared] #f) scope () + [(#:sym scope [installation user] #f) scope () ("Select package , one of" " installation: Remove packages for all users of the Racket installation" - " user: Remove user- and version-specific packages" - " shared: Remove user-specific packages for all Racket versions")] + " user: Remove user-specific for an installation version/name")] [#:bool installation ("-i") "Shorthand for `--scope installation'"] [#:bool user ("-u") "Shorthand for `--scope user'"] - [#:bool shared ("-s") "Shorthand for `--scope shared'"] [(#:str dir #f) scope-dir () "Remove for package scope "] #:once-each [#:bool no-setup () ("Don't run `raco setup' after changing packages (usually" @@ -186,7 +178,7 @@ #:args pkg (call-with-package-scope 'remove - scope scope-dir installation shared user + scope scope-dir installation user (lambda () (define setup-collects (with-pkg-lock @@ -200,24 +192,21 @@ [#:bool all ("-a") "Show auto-installed packages, too"] [#:bool dir ("-d") "Show the directory where the package is installed"] #:once-any - [(#:sym scope [installation user shared] #f) scope () + [(#:sym scope [installation user] #f) scope () ("Show only for package , one of" " installation: Show only for all users of the Racket installation" - " user: Show only user- and version-specific" - " shared: Show only user-specific for all Racket versions")] - [(#:str vers #f) version ("-v") "Show only user-specific for Racket "] + " user: Show only user-specific for an installation version/name")] + [(#:str vers #f) version ("-v") "Show user-specific for installation "] [#:bool installation ("-i") "Shorthand for `--scope installation'"] [#:bool user ("-u") "Shorthand for `--scope user'"] - [#:bool shared ("-s") "Shorthand for `--scope shared'"] [(#:str dir #f) scope-dir () "Show only for package scope "] #:args () (define only-mode (case scope - [(installation user shared) scope] + [(installation user) scope] [else (cond [scope-dir (path->complete-path scope-dir)] [installation 'installation] - [shared 'shared] [user 'user] [else (if version 'user #f)])])) (for ([mode (if only-mode @@ -228,18 +217,17 @@ (if (equal? d main) 'installation d)))) - '(shared user)))]) + '(user)))]) (when (or (equal? mode only-mode) (not only-mode)) (unless only-mode (printf "~a\n" (case mode [(installation) "Installation-wide:"] - [(shared) "User-specific, all-version:"] - [(user) (format "User-specific, version-specific (~a):" - (or version (r:version)))] + [(user) (format "User-specific for installation ~s:" + (or version (get-installation-name)))] [else (format "~a:" mode)]))) (parameterize ([current-pkg-scope mode] [current-pkg-error (pkg-error 'show)] - [current-pkg-scope-version (or version (r:version))]) + [current-pkg-scope-version (or version (get-installation-name))]) (with-pkg-lock/read-only (pkg-show (if only-mode "" " ") #:auto? all @@ -280,18 +268,16 @@ #:once-each [#:bool set () "Completely replace the value"] #:once-any - [(#:sym scope [installation user shared] #f) scope () + [(#:sym scope [installation user] #f) scope () ("Select configuration , one of" " installation: Operate on the installation-wide package configuration" - " user: Operate on the user-specific, version-specific package configuration" - " shared: Operate on the user-specific all-version package configuration")] + " user: Operate on the user-specific for an installation name")] [#:bool installation ("-i") "Shorthand for `--scope installation'"] [#:bool user ("-u") "Shorthand for `--scope user'"] - [#:bool shared ("-s") "Shorthand for `--scope shared'"] #:args key/val (call-with-package-scope 'config - scope #f installation shared user + scope #f installation user (lambda () (if set (with-pkg-lock diff --git a/racket/collects/pkg/path.rkt b/racket/collects/pkg/path.rkt index 727a50e86c..23177c6e4c 100644 --- a/racket/collects/pkg/path.rkt +++ b/racket/collects/pkg/path.rkt @@ -15,13 +15,12 @@ (define (check-scope who scope) (unless (or (eq? scope 'user) - (eq? scope 'shared) (eq? scope 'installation) (and (path? scope) (complete-path? scope))) (raise-argument-error who - "(or/c 'user 'shared 'installation (and/c path? complete-path?))" + "(or/c 'user 'installation (and/c path? complete-path?))" scope))) (define (get-pkgs-dir scope [user-version (version)]) @@ -33,7 +32,6 @@ (case scope [(installation) (find-pkgs-dir)] [(user) (find-user-pkgs-dir user-version)] - [(shared) (find-shared-pkgs-dir)] [else (error "unknown package scope")]))) (define (read-pkg-file-hash file) @@ -87,7 +85,7 @@ (define (build-path* l) (if (null? l) 'same (apply build-path l))) (for/fold ([pkg #f] [subpath #f] [collect #f]) - ([scope (in-list (list* 'user 'shared + ([scope (in-list (list* 'user (get-pkgs-search-dirs)))] #:when (not pkg)) (define d (or (and cache diff --git a/racket/collects/racket/HISTORY.txt b/racket/collects/racket/HISTORY.txt index 6820fbc0de..2df5022913 100644 --- a/racket/collects/racket/HISTORY.txt +++ b/racket/collects/racket/HISTORY.txt @@ -1,3 +1,8 @@ +Version 5.90.0.3 +Base user directoy paths on an installation name instead + of the Racket version string +Remove "shared" links and package scope + Version 5.90.0.2 Added #%declare Cross-phase persistent modules must be declared with diff --git a/racket/collects/setup/commands/link.rkt b/racket/collects/setup/commands/link.rkt index f48f4fe7e7..018836f103 100644 --- a/racket/collects/setup/commands/link.rkt +++ b/racket/collects/setup/commands/link.rkt @@ -14,7 +14,7 @@ (define show-mode (make-parameter #f)) (define install-only (make-parameter #f)) (define user-only (make-parameter #f)) -(define user-shared (make-parameter #f)) +(define user-version (make-parameter #f)) (define link-symbol (string->symbol (short-program+command-name))) @@ -42,16 +42,16 @@ [("-r" "--remove") "Remove links for the specified directories" (remove-mode #t)] #:once-any - [("-u" "--user") "Adjust/list user-specific, version-specific links" + [("-u" "--user") "Adjust/list user-specific links for an installation name/version" (user-only #t)] - [("-s" "--shared") "Adjust/list user-specific links" - (user-only #t) - (user-shared #t)] [("-i" "--installation") "Adjust/list installation-wide links" (install-only #t)] [("-f" "--file") file "Select an alternate link file" (link-file (path->complete-path file))] #:once-each + [("-v" "--version") vers "Adjust/list user-specific links for " + (user-only #t) + (user-version vers)] [("--repair") "Enable repair mode to fix existing links" (repair-mode #t)] #:args @@ -67,20 +67,19 @@ (and (null? dirs) (show-mode) (not (user-only)) - (not (user-shared)) (not (install-only)) (not (link-file)))) (when show-all? (printf "User-specific, version-specific links:\n")) -(define (go user? shared?) +(define (go user? vers) (apply links dirs #:root? (root-mode) #:static-root? (static-root-mode) #:user? user? - #:shared? shared? + #:user-version (or vers (get-installation-name)) #:file (link-file) #:name (link-name) #:version-regexp (link-version) @@ -92,15 +91,14 @@ (define l1 (go (not (install-only)) - (user-shared))) + (user-version))) (define l2 (if (and (not (or (user-only) - (user-shared) (install-only))) (remove-mode)) (append (go #f #f) - (go #t #t)) + (go #t (user-version))) null)) (when show-all? diff --git a/racket/collects/setup/dirs.rkt b/racket/collects/setup/dirs.rkt index 6aceb70b0c..417e47d7a7 100644 --- a/racket/collects/setup/dirs.rkt +++ b/racket/collects/setup/dirs.rkt @@ -84,17 +84,21 @@ (define-config config:3m-suffix '3m-suffix values) (define-config config:absolute-installation? 'absolute-installation? (lambda (x) (and x #t))) (define-config config:doc-search-url 'doc-search-url values) +(define-config config:installation-name 'installation-name values) (provide get-absolute-installation? get-cgc-suffix get-3m-suffix - get-doc-search-url) + get-doc-search-url + get-installation-name) (define (get-absolute-installation?) (force config:absolute-installation?)) (define (get-cgc-suffix) (force config:cgc-suffix)) (define (get-3m-suffix) (force config:3m-suffix)) (define (get-doc-search-url) (or (force config:doc-search-url) "http://docs.racket-lang.org")) +(define (get-installation-name) (or (force config:installation-name) + (version))) ;; ---------------------------------------- ;; "collects" @@ -112,7 +116,7 @@ (combine-search (force config:collects-search-dirs) (list (find-collects-dir)))) (define user-collects-dir - (delay (build-path (system-path* 'addon-dir) (version) "collects"))) + (delay (build-path (system-path* 'addon-dir) (get-installation-name) "collects"))) (define (find-user-collects-dir) (force user-collects-dir)) (define (get-collects-search-dirs) @@ -180,7 +184,7 @@ (define-finder provide config:id id get-false default) (provide user-id) (define user-dir - (delay (build-path (system-path* 'addon-dir) (version) default))) + (delay (build-path (system-path* 'addon-dir) (get-installation-name) default))) (define (user-id) (force user-dir)))])) @@ -361,12 +365,8 @@ get-pkgs-search-dirs (chain-to (lambda () (build-path (find-share-dir) "pkgs")))) -(provide find-user-pkgs-dir - find-shared-pkgs-dir) -(define (find-user-pkgs-dir [vers (version)]) +(provide find-user-pkgs-dir) +(define (find-user-pkgs-dir [vers (get-installation-name)]) (build-path (find-system-path 'addon-dir) vers "pkgs")) -(define (find-shared-pkgs-dir) - (build-path (find-system-path 'addon-dir) - "pkgs")) diff --git a/racket/collects/setup/link.rkt b/racket/collects/setup/link.rkt index 72c138b5b5..e9a809030b 100644 --- a/racket/collects/setup/link.rkt +++ b/racket/collects/setup/link.rkt @@ -7,10 +7,11 @@ (define (links #:error [error error] #:user? [user? #t] + #:user-version [user-version (and user? + (get-installation-name))] #:file [in-file #f] #:name [name #f] #:version-regexp [version-regexp #f] - #:shared? [shared? #f] #:root? [root? #f] #:static-root? [static-root? #f] #:remove? [remove? #f] @@ -28,10 +29,8 @@ (check-name name)) (define file (or in-file - (if (or user? shared?) - (if shared? - (build-path (find-system-path 'addon-dir) "links.rktd") - (build-path (find-system-path 'addon-dir) (version) "links.rktd")) + (if user? + (build-path (find-system-path 'addon-dir) user-version "links.rktd") (find-links-file)))) (define need-repair? #f) diff --git a/racket/collects/setup/setup-unit.rkt b/racket/collects/setup/setup-unit.rkt index 26f3ada59f..32162108c4 100644 --- a/racket/collects/setup/setup-unit.rkt +++ b/racket/collects/setup/setup-unit.rkt @@ -387,16 +387,15 @@ #:info-path info-path #:info-path-mode 'abs-in-relative #:omit-root 'dir)) - (for ([shared? (in-list '(#t #f))]) - (for ([c+p (in-list (links #:shared? shared? #:with-path? #t))]) - (cc! (list (string->path (car c+p))) - #:path (cdr c+p))) - (for ([cp (in-list (links #:shared? shared? #:root? #t))] - #:when (directory-exists? cp) - [collection (directory-list cp)] - #:unless (skip-collection-directory? collection) - #:when (directory-exists? (build-path cp collection))) - (cc! (list collection) #:path (build-path cp collection))))) + (for ([c+p (in-list (links #:with-path? #t))]) + (cc! (list (string->path (car c+p))) + #:path (cdr c+p))) + (for ([cp (in-list (links #:root? #t))] + #:when (directory-exists? cp) + [collection (directory-list cp)] + #:unless (skip-collection-directory? collection) + #:when (directory-exists? (build-path cp collection))) + (cc! (list collection) #:path (build-path cp collection)))) ;; `all-collections' lists all top-level collections (not from Planet): (define all-collections diff --git a/racket/src/racket/src/cstartup.inc b/racket/src/racket/src/cstartup.inc index 6e50fca29c..1f0ced084e 100644 --- a/racket/src/racket/src/cstartup.inc +++ b/racket/src/racket/src/cstartup.inc @@ -1,43 +1,43 @@ { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,57,48,46,48,46,49,84,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,57,48,46,48,46,51,84,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,51,0,0,0,1,0,0,10,0,14, -0,21,0,28,0,33,0,37,0,40,0,45,0,58,0,62,0,67,0,74,0, +0,27,0,31,0,38,0,42,0,49,0,54,0,61,0,66,0,69,0,74,0, 83,0,87,0,93,0,107,0,121,0,124,0,130,0,134,0,136,0,147,0,149, 0,163,0,170,0,192,0,194,0,208,0,19,1,48,1,59,1,70,1,96,1, 129,1,162,1,224,1,24,2,105,2,161,2,166,2,187,2,84,3,105,3,158, 3,225,3,114,4,2,5,56,5,67,5,150,5,0,0,113,7,0,0,69,35, -37,109,105,110,45,115,116,120,29,11,11,11,66,100,101,102,105,110,101,66,108, -101,116,114,101,99,64,108,101,116,42,63,97,110,100,62,111,114,64,119,104,101, -110,72,112,97,114,97,109,101,116,101,114,105,122,101,63,108,101,116,64,99,111, -110,100,66,117,110,108,101,115,115,68,104,101,114,101,45,115,116,120,29,11,11, +37,109,105,110,45,115,116,120,29,11,11,11,72,112,97,114,97,109,101,116,101, +114,105,122,101,63,97,110,100,66,100,101,102,105,110,101,63,108,101,116,66,117, +110,108,101,115,115,64,99,111,110,100,66,108,101,116,114,101,99,64,108,101,116, +42,62,111,114,64,119,104,101,110,68,104,101,114,101,45,115,116,120,29,11,11, 11,65,113,117,111,116,101,29,94,2,15,68,35,37,107,101,114,110,101,108,11, 29,94,2,15,68,35,37,112,97,114,97,109,122,11,62,105,102,65,98,101,103, 105,110,63,115,116,120,61,115,70,108,101,116,45,118,97,108,117,101,115,61,120, 73,108,101,116,114,101,99,45,118,97,108,117,101,115,66,108,97,109,98,100,97, 1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101, 121,61,118,73,100,101,102,105,110,101,45,118,97,108,117,101,115,97,36,11,8, -240,81,90,0,0,95,159,2,17,36,36,159,2,16,36,36,159,2,16,36,36, -16,20,2,3,2,2,2,4,2,2,2,5,2,2,2,6,2,2,2,7,2, -2,2,8,2,2,2,11,2,2,2,10,2,2,2,9,2,2,2,12,2,2, -97,37,11,8,240,81,90,0,0,93,159,2,16,36,37,16,2,2,13,161,2, -2,37,2,13,2,2,2,13,96,38,11,8,240,81,90,0,0,16,0,96,11, -11,8,240,81,90,0,0,16,0,18,98,64,104,101,114,101,13,16,6,36,2, +240,212,90,0,0,95,159,2,17,36,36,159,2,16,36,36,159,2,16,36,36, +16,20,2,8,2,2,2,4,2,2,2,5,2,2,2,6,2,2,2,7,2, +2,2,10,2,2,2,3,2,2,2,9,2,2,2,11,2,2,2,12,2,2, +97,37,11,8,240,212,90,0,0,93,159,2,16,36,37,16,2,2,13,161,2, +2,37,2,13,2,2,2,13,96,38,11,8,240,212,90,0,0,16,0,96,11, +11,8,240,212,90,0,0,16,0,18,98,64,104,101,114,101,13,16,6,36,2, 14,2,2,11,11,11,8,32,8,31,8,30,8,29,27,248,22,161,4,195,249, 22,154,4,80,158,39,36,251,22,89,2,18,248,22,101,199,12,249,22,79,2, 19,248,22,103,201,27,248,22,161,4,195,249,22,154,4,80,158,39,36,251,22, 89,2,18,248,22,101,199,249,22,79,2,19,248,22,103,201,12,27,248,22,81, 248,22,161,4,196,28,248,22,87,193,20,14,159,37,36,37,28,248,22,87,248, 22,81,194,248,22,136,18,193,249,22,154,4,80,158,39,36,251,22,89,2,18, -248,22,136,18,199,249,22,79,2,6,248,22,137,18,201,11,18,100,10,13,16, +248,22,136,18,199,249,22,79,2,4,248,22,137,18,201,11,18,100,10,13,16, 6,36,2,14,2,2,11,11,11,8,32,8,31,8,30,8,29,16,4,11,11, -2,20,3,1,8,101,110,118,49,55,53,55,51,16,4,11,11,2,21,3,1, -8,101,110,118,49,55,53,55,52,27,248,22,81,248,22,161,4,196,28,248,22, +2,20,3,1,8,101,110,118,49,55,54,50,57,16,4,11,11,2,21,3,1, +8,101,110,118,49,55,54,51,48,27,248,22,81,248,22,161,4,196,28,248,22, 87,193,20,14,159,37,36,37,28,248,22,87,248,22,81,194,248,22,136,18,193, 249,22,154,4,80,158,39,36,250,22,89,2,22,248,22,89,249,22,89,248,22, 89,2,23,248,22,136,18,201,251,22,89,2,18,2,23,2,23,249,22,79,2, -7,248,22,137,18,204,18,100,11,13,16,6,36,2,14,2,2,11,11,11,8, +11,248,22,137,18,204,18,100,11,13,16,6,36,2,14,2,2,11,11,11,8, 32,8,31,8,30,8,29,16,4,11,11,2,20,3,1,8,101,110,118,49,55, -53,55,54,16,4,11,11,2,21,3,1,8,101,110,118,49,55,53,55,55,248, +54,51,50,16,4,11,11,2,21,3,1,8,101,110,118,49,55,54,51,51,248, 22,161,4,193,27,248,22,161,4,194,249,22,79,248,22,89,248,22,80,196,248, 22,137,18,195,27,248,22,81,248,22,161,4,23,197,1,249,22,154,4,80,158, 39,36,28,248,22,64,248,22,155,4,248,22,80,23,198,2,27,249,22,2,32, @@ -52,7 +52,7 @@ 36,37,47,11,9,222,33,43,248,22,161,4,248,22,80,201,248,22,137,18,198, 27,248,22,81,248,22,161,4,196,27,248,22,161,4,248,22,80,195,249,22,154, 4,80,158,40,36,28,248,22,87,195,250,22,90,2,22,9,248,22,81,199,250, -22,89,2,10,248,22,89,248,22,80,199,250,22,90,2,5,248,22,137,18,201, +22,89,2,6,248,22,89,248,22,80,199,250,22,90,2,10,248,22,137,18,201, 248,22,81,202,27,248,22,81,248,22,161,4,23,197,1,27,249,22,1,22,93, 249,22,2,22,161,4,248,22,161,4,248,22,80,199,248,22,182,4,249,22,154, 4,80,158,41,36,251,22,89,1,22,119,105,116,104,45,99,111,110,116,105,110, @@ -63,13 +63,13 @@ 81,204,27,248,22,81,248,22,161,4,196,28,248,22,87,193,20,14,159,37,36, 37,249,22,154,4,80,158,39,36,27,248,22,161,4,248,22,80,197,28,249,22, 163,9,62,61,62,248,22,155,4,248,22,101,196,250,22,89,2,22,248,22,89, -249,22,89,21,93,2,27,248,22,80,199,250,22,90,2,11,249,22,89,2,27, +249,22,89,21,93,2,27,248,22,80,199,250,22,90,2,8,249,22,89,2,27, 249,22,89,248,22,110,203,2,27,248,22,81,202,251,22,89,2,18,28,249,22, 163,9,248,22,155,4,248,22,80,200,64,101,108,115,101,10,248,22,136,18,197, -250,22,90,2,22,9,248,22,137,18,200,249,22,79,2,11,248,22,81,202,99, +250,22,90,2,22,9,248,22,137,18,200,249,22,79,2,8,248,22,81,202,99, 13,16,6,36,2,14,2,2,11,11,11,8,32,8,31,8,30,8,29,16,4, -11,11,2,20,3,1,8,101,110,118,49,55,53,57,57,16,4,11,11,2,21, -3,1,8,101,110,118,49,55,54,48,48,18,158,94,10,64,118,111,105,100,8, +11,11,2,20,3,1,8,101,110,118,49,55,54,53,53,16,4,11,11,2,21, +3,1,8,101,110,118,49,55,54,53,54,18,158,94,10,64,118,111,105,100,8, 48,27,248,22,81,248,22,161,4,196,249,22,154,4,80,158,39,36,28,248,22, 64,248,22,155,4,248,22,80,197,250,22,89,2,28,248,22,89,248,22,136,18, 199,248,22,101,198,27,248,22,155,4,248,22,136,18,197,250,22,89,2,28,248, @@ -82,909 +82,905 @@ 2,11,2,12,36,46,37,16,0,36,16,1,2,13,37,11,11,11,16,0,16, 0,16,0,36,36,11,12,11,11,16,0,16,0,16,0,36,36,16,11,16,5, 11,20,15,16,2,20,14,159,36,36,37,80,158,36,36,36,20,114,159,36,16, -1,2,13,16,1,33,33,10,16,5,2,12,88,163,8,36,37,53,37,9,223, -0,33,34,36,20,114,159,36,16,1,2,13,16,0,11,16,5,2,8,88,163, +1,2,13,16,1,33,33,10,16,5,2,7,88,163,8,36,37,53,37,9,223, +0,33,34,36,20,114,159,36,16,1,2,13,16,0,11,16,5,2,12,88,163, 8,36,37,53,37,9,223,0,33,35,36,20,114,159,36,16,1,2,13,16,0, -11,16,5,2,6,88,163,8,36,37,53,37,9,223,0,33,36,36,20,114,159, -36,16,1,2,13,16,1,33,37,11,16,5,2,7,88,163,8,36,37,56,37, +11,16,5,2,4,88,163,8,36,37,53,37,9,223,0,33,36,36,20,114,159, +36,16,1,2,13,16,1,33,37,11,16,5,2,11,88,163,8,36,37,56,37, 9,223,0,33,38,36,20,114,159,36,16,1,2,13,16,1,33,39,11,16,5, -2,10,88,163,8,36,37,58,37,9,223,0,33,42,36,20,114,159,36,16,1, -2,13,16,0,11,16,5,2,4,88,163,8,36,37,53,37,9,223,0,33,44, -36,20,114,159,36,16,1,2,13,16,0,11,16,5,2,5,88,163,8,36,37, +2,6,88,163,8,36,37,58,37,9,223,0,33,42,36,20,114,159,36,16,1, +2,13,16,0,11,16,5,2,9,88,163,8,36,37,53,37,9,223,0,33,44, +36,20,114,159,36,16,1,2,13,16,0,11,16,5,2,10,88,163,8,36,37, 54,37,9,223,0,33,45,36,20,114,159,36,16,1,2,13,16,0,11,16,5, -2,9,88,163,8,36,37,56,37,9,223,0,33,46,36,20,114,159,36,16,1, -2,13,16,0,11,16,5,2,11,88,163,8,36,37,58,37,9,223,0,33,47, -36,20,114,159,36,16,1,2,13,16,1,33,49,11,16,5,2,3,88,163,8, +2,3,88,163,8,36,37,56,37,9,223,0,33,46,36,20,114,159,36,16,1, +2,13,16,0,11,16,5,2,8,88,163,8,36,37,58,37,9,223,0,33,47, +36,20,114,159,36,16,1,2,13,16,1,33,49,11,16,5,2,5,88,163,8, 36,37,54,37,9,223,0,33,50,36,20,114,159,36,16,1,2,13,16,0,11, 16,0,94,2,16,2,17,93,2,16,9,9,36,0}; EVAL_ONE_SIZED_STR((char *)expr, 2050); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,57,48,46,48,46,49,84,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,179,0,0,0,1,0,0,8,0,21, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,57,48,46,48,46,51,84,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,181,0,0,0,1,0,0,8,0,21, 0,26,0,43,0,55,0,77,0,106,0,150,0,156,0,165,0,172,0,187,0, -205,0,217,0,233,0,247,0,13,1,29,1,46,1,63,1,81,1,100,1,119, -1,135,1,152,1,167,1,206,1,240,1,2,2,14,2,21,2,34,2,47,2, -64,2,76,2,91,2,115,2,147,2,165,2,184,2,204,2,220,2,238,2,13, -3,27,3,44,3,88,3,96,3,101,3,145,3,152,3,162,3,177,3,186,3, -191,3,193,3,226,3,250,3,15,4,25,4,38,4,49,4,58,4,68,4,81, -4,91,4,97,4,142,4,147,4,159,4,162,4,166,4,190,4,229,4,232,4, -245,4,11,5,22,5,74,5,97,5,105,5,129,5,150,5,107,6,137,6,18, -10,41,10,58,10,6,12,109,12,123,12,27,13,215,14,224,14,233,14,247,14, -1,15,42,16,145,16,2,17,75,17,148,17,252,17,25,18,96,18,233,18,48, -19,2,20,153,20,239,20,35,21,132,22,236,22,42,23,229,24,253,24,29,26, -36,26,88,26,101,26,91,27,105,27,215,27,117,28,124,28,254,29,77,30,94, -30,212,30,177,31,237,31,244,31,124,32,178,32,197,32,147,33,163,33,183,34, -36,36,82,36,91,36,168,37,110,38,130,38,146,38,169,38,185,38,236,38,1, -39,21,39,41,39,98,39,77,42,140,43,43,44,59,44,211,46,84,49,99,49, -245,50,183,51,185,51,211,51,226,51,150,53,88,54,103,54,112,54,119,54,134, -55,149,56,44,59,156,59,14,60,28,62,234,62,10,63,140,63,0,0,170,70, -0,0,67,35,37,117,116,105,108,115,72,112,97,116,104,45,115,116,114,105,110, -103,63,64,98,115,98,115,76,110,111,114,109,97,108,45,99,97,115,101,45,112, -97,116,104,71,114,101,114,111,111,116,45,112,97,116,104,1,20,102,105,110,100, -45,101,120,101,99,117,116,97,98,108,101,45,112,97,116,104,1,27,112,97,116, -104,45,108,105,115,116,45,115,116,114,105,110,103,45,62,112,97,116,104,45,108, -105,115,116,1,42,99,97,108,108,45,119,105,116,104,45,100,101,102,97,117,108, -116,45,114,101,97,100,105,110,103,45,112,97,114,97,109,101,116,101,114,105,122, -97,116,105,111,110,65,113,117,111,116,101,68,35,37,112,97,114,97,109,122,29, -94,2,9,2,10,11,74,45,99,104,101,99,107,45,114,101,108,112,97,116,104, -77,45,99,104,101,99,107,45,99,111,108,108,101,99,116,105,111,110,71,45,99, -104,101,99,107,45,102,97,105,108,75,99,111,108,108,101,99,116,105,111,110,45, -112,97,116,104,73,102,105,110,100,45,99,111,108,45,102,105,108,101,1,20,99, -111,108,108,101,99,116,105,111,110,45,102,105,108,101,45,112,97,116,104,75,117, -115,101,114,45,108,105,110,107,115,45,112,97,116,104,76,117,115,101,114,45,108, -105,110,107,115,45,99,97,99,104,101,76,117,115,101,114,45,108,105,110,107,115, -45,115,116,97,109,112,77,115,104,97,114,101,100,45,108,105,110,107,115,45,112, -97,116,104,78,115,104,97,114,101,100,45,108,105,110,107,115,45,99,97,99,104, -101,78,115,104,97,114,101,100,45,108,105,110,107,115,45,115,116,97,109,112,75, -102,105,110,100,45,99,111,110,102,105,103,45,100,105,114,76,103,101,116,45,99, -111,110,102,105,103,45,116,97,98,108,101,74,99,111,101,114,99,101,45,116,111, -45,112,97,116,104,1,37,99,111,108,108,101,99,116,115,45,114,101,108,97,116, -105,118,101,45,112,97,116,104,45,62,99,111,109,112,108,101,116,101,45,112,97, -116,104,1,32,101,120,101,45,114,101,108,97,116,105,118,101,45,112,97,116,104, -45,62,99,111,109,112,108,101,116,101,45,112,97,116,104,77,97,100,100,45,99, -111,110,102,105,103,45,115,101,97,114,99,104,71,108,105,110,107,115,45,112,97, -116,104,115,29,94,2,9,2,10,11,72,108,105,110,107,115,45,99,97,99,104, -101,115,72,108,105,110,107,115,45,115,116,97,109,112,115,76,115,116,97,109,112, -45,112,114,111,109,112,116,45,116,97,103,71,102,105,108,101,45,62,115,116,97, -109,112,74,110,111,45,102,105,108,101,45,115,116,97,109,112,63,1,22,103,101, -116,45,108,105,110,107,101,100,45,99,111,108,108,101,99,116,105,111,110,115,1, -30,110,111,114,109,97,108,105,122,101,45,99,111,108,108,101,99,116,105,111,110, -45,114,101,102,101,114,101,110,99,101,77,99,104,101,99,107,45,115,117,102,102, -105,120,45,99,97,108,108,78,112,97,116,104,45,97,100,106,117,115,116,45,115, -117,102,102,105,120,79,112,97,116,104,45,114,101,112,108,97,99,101,45,115,117, -102,102,105,120,75,112,97,116,104,45,97,100,100,45,115,117,102,102,105,120,77, -108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,1,29,102,105, -110,100,45,108,105,98,114,97,114,121,45,99,111,108,108,101,99,116,105,111,110, -45,112,97,116,104,115,73,101,109,98,101,100,100,101,100,45,108,111,97,100,76, -110,111,114,109,97,108,45,112,97,116,104,45,99,97,115,101,6,41,41,40,111, -114,47,99,32,112,97,116,104,45,102,111,114,45,115,111,109,101,45,115,121,115, -116,101,109,63,32,112,97,116,104,45,115,116,114,105,110,103,63,41,67,119,105, -110,100,111,119,115,6,2,2,92,49,6,41,41,40,111,114,47,99,32,112,97, -116,104,45,115,116,114,105,110,103,63,32,112,97,116,104,45,102,111,114,45,115, -111,109,101,45,115,121,115,116,101,109,63,41,6,4,4,112,97,116,104,5,8, -92,92,63,92,82,69,76,92,6,12,12,112,97,116,104,45,115,116,114,105,110, -103,63,68,114,101,108,97,116,105,118,101,64,108,111,111,112,5,0,6,30,30, -40,112,114,111,99,101,100,117,114,101,45,97,114,105,116,121,45,105,110,99,108, -117,100,101,115,47,99,32,48,41,6,21,21,105,110,118,97,108,105,100,32,114, -101,108,97,116,105,118,101,32,112,97,116,104,6,18,18,40,97,110,121,47,99, -32,46,32,45,62,32,46,32,97,110,121,41,69,97,100,100,111,110,45,100,105, -114,6,10,10,108,105,110,107,115,46,114,107,116,100,70,99,111,110,102,105,103, -45,100,105,114,68,111,114,105,103,45,100,105,114,69,101,120,101,99,45,102,105, -108,101,72,99,111,108,108,101,99,116,115,45,100,105,114,69,102,115,45,99,104, -97,110,103,101,65,101,114,114,111,114,6,42,42,101,114,114,111,114,32,114,101, -97,100,105,110,103,32,99,111,108,108,101,99,116,105,111,110,32,108,105,110,107, -115,32,102,105,108,101,32,126,115,58,32,126,97,64,114,111,111,116,71,115,116, -97,116,105,99,45,114,111,111,116,6,0,0,6,1,1,47,6,21,21,40,111, -114,47,99,32,115,116,114,105,110,103,63,32,98,121,116,101,115,63,41,6,36, -36,99,97,110,110,111,116,32,97,100,100,32,97,32,115,117,102,102,105,120,32, -116,111,32,97,32,114,111,111,116,32,112,97,116,104,58,32,5,1,95,5,11, -80,76,84,67,79,76,76,69,67,84,83,1,20,99,111,108,108,101,99,116,115, -45,115,101,97,114,99,104,45,100,105,114,115,6,8,8,99,111,108,108,101,99, -116,115,27,248,22,154,15,23,195,2,28,23,193,2,192,86,94,23,193,1,28, -248,22,148,7,23,195,2,27,248,22,177,15,23,196,2,28,23,193,2,192,86, -94,23,193,1,248,22,178,15,23,196,1,11,0,21,35,114,120,34,94,91,92, -92,93,91,92,92,93,91,63,93,91,92,92,93,34,0,6,35,114,120,34,47, -34,0,22,35,114,120,34,91,47,92,92,93,91,46,32,93,43,91,47,92,92, -93,42,36,34,0,19,35,114,120,34,91,32,46,93,43,40,91,47,92,92,93, -42,41,36,34,86,94,28,28,248,22,155,15,23,195,2,10,28,248,22,154,15, -23,195,2,10,28,248,22,148,7,23,195,2,28,248,22,177,15,23,195,2,10, -248,22,178,15,23,195,2,11,12,250,22,172,11,2,46,2,47,23,197,2,28, -28,248,22,155,15,23,195,2,249,22,163,9,248,22,156,15,23,197,2,2,48, -249,22,163,9,247,22,175,8,2,48,27,28,248,22,148,7,23,196,2,23,195, -2,248,22,160,8,248,22,159,15,23,197,2,28,249,22,149,16,2,80,23,195, -2,86,94,23,193,1,28,248,22,148,7,23,196,2,248,22,162,15,23,196,1, -194,27,248,22,187,7,23,195,1,249,22,163,15,248,22,163,8,250,22,157,16, -2,81,28,249,22,149,16,2,82,23,201,2,23,199,1,250,22,157,16,2,83, -23,202,1,2,49,80,159,44,37,38,2,48,28,248,22,148,7,23,195,2,248, -22,162,15,23,195,1,193,0,28,35,114,120,34,94,92,92,92,92,92,92,92, -92,91,63,93,92,92,92,92,85,78,67,92,92,92,92,34,86,95,28,28,28, -248,22,154,15,23,195,2,10,28,248,22,148,7,23,195,2,28,248,22,177,15, -23,195,2,10,248,22,178,15,23,195,2,11,10,248,22,155,15,23,195,2,12, -252,22,172,11,2,5,2,50,36,23,199,2,23,200,2,28,28,28,248,22,154, -15,23,196,2,10,28,248,22,148,7,23,196,2,28,248,22,177,15,23,196,2, -10,248,22,178,15,23,196,2,11,10,248,22,155,15,23,196,2,12,252,22,172, -11,2,5,2,50,37,23,199,2,23,200,2,27,28,248,22,155,15,23,196,2, -248,22,156,15,23,196,2,247,22,157,15,86,95,28,28,248,22,179,15,23,196, -2,10,249,22,163,9,247,22,157,15,23,195,2,12,253,22,174,11,2,5,6, -54,54,112,97,116,104,32,105,115,32,110,111,116,32,99,111,109,112,108,101,116, -101,32,97,110,100,32,110,111,116,32,116,104,101,32,112,108,97,116,102,111,114, -109,39,115,32,99,111,110,118,101,110,116,105,111,110,2,51,23,201,2,6,24, -24,112,108,97,116,102,111,114,109,32,99,111,110,118,101,110,116,105,111,110,32, -116,121,112,101,247,22,157,15,28,249,22,163,9,28,248,22,155,15,23,199,2, -248,22,156,15,23,199,2,247,22,157,15,23,195,2,12,253,22,174,11,2,5, -6,37,37,103,105,118,101,110,32,112,97,116,104,115,32,117,115,101,32,100,105, -102,102,101,114,101,110,116,32,99,111,110,118,101,110,116,105,111,110,115,2,51, -23,201,2,6,9,9,114,111,111,116,32,112,97,116,104,23,202,2,27,27,248, -22,183,15,28,248,22,179,15,23,199,2,23,198,1,248,22,180,15,23,199,1, -86,94,28,28,248,22,155,15,23,194,2,10,28,248,22,154,15,23,194,2,10, -28,248,22,148,7,23,194,2,28,248,22,177,15,23,194,2,10,248,22,178,15, -23,194,2,11,12,250,22,172,11,2,46,2,47,23,196,2,28,28,248,22,155, -15,23,194,2,249,22,163,9,248,22,156,15,23,196,2,2,48,249,22,163,9, -247,22,175,8,2,48,27,28,248,22,148,7,23,195,2,23,194,2,248,22,160, -8,248,22,159,15,23,196,2,28,249,22,149,16,2,80,23,195,2,86,94,23, -193,1,28,248,22,148,7,23,195,2,248,22,162,15,23,195,1,193,27,248,22, -187,7,23,195,1,249,22,163,15,248,22,163,8,250,22,157,16,2,81,28,249, -22,149,16,2,82,23,201,2,23,199,1,250,22,157,16,2,83,23,202,1,2, -49,80,159,47,37,38,2,48,28,248,22,148,7,23,194,2,248,22,162,15,23, -194,1,192,27,248,22,159,15,23,195,2,28,249,22,163,9,23,197,2,64,117, -110,105,120,28,249,22,145,8,23,195,1,5,1,47,86,95,23,195,1,23,194, -1,28,248,22,155,15,23,199,2,197,248,22,162,15,23,199,1,249,22,172,15, -23,200,1,249,22,163,15,249,22,148,8,248,22,159,15,23,201,1,37,23,199, -1,28,249,22,163,9,23,197,2,2,48,249,22,172,15,23,200,1,249,22,163, -15,28,249,22,149,16,0,27,35,114,120,34,94,92,92,92,92,92,92,92,92, -91,63,93,92,92,92,92,91,97,45,122,93,58,34,23,199,2,251,22,149,8, -2,52,250,22,148,8,23,204,2,40,41,5,1,92,249,22,148,8,23,203,1, -42,28,249,22,149,16,2,85,23,199,2,249,22,149,8,2,52,249,22,148,8, -23,201,1,40,28,249,22,149,16,2,85,23,199,2,249,22,149,8,2,52,249, -22,148,8,23,201,1,40,28,249,22,149,16,0,14,35,114,120,34,94,92,92, -92,92,92,92,92,92,34,23,199,2,249,22,149,8,5,4,85,78,67,92,249, -22,148,8,23,201,1,38,28,249,22,149,16,0,12,35,114,120,34,94,91,97, -45,122,93,58,34,23,199,2,249,22,149,8,250,22,148,8,23,202,2,36,37, -249,22,148,8,23,201,1,38,86,94,23,197,1,12,23,199,1,12,32,87,88, -163,8,36,39,53,11,70,102,111,117,110,100,45,101,120,101,99,222,33,90,32, -88,88,163,8,36,40,58,11,64,110,101,120,116,222,33,89,27,248,22,181,15, -23,196,2,28,249,22,165,9,23,195,2,23,197,1,11,28,248,22,177,15,23, -194,2,27,249,22,172,15,23,197,1,23,196,1,28,23,197,2,90,159,39,11, -89,161,39,36,11,248,22,175,15,23,197,2,86,95,23,195,1,23,194,1,27, -28,23,202,2,27,248,22,181,15,23,199,2,28,249,22,165,9,23,195,2,23, -200,2,11,28,248,22,177,15,23,194,2,250,2,87,23,205,2,23,206,2,249, -22,172,15,23,200,2,23,198,1,250,2,87,23,205,2,23,206,2,23,196,1, -11,28,23,193,2,192,86,94,23,193,1,27,28,248,22,154,15,23,196,2,27, -249,22,172,15,23,198,2,23,205,2,28,28,248,22,167,15,193,10,248,22,166, -15,193,192,11,11,28,23,193,2,192,86,94,23,193,1,28,23,203,2,11,27, -248,22,181,15,23,200,2,28,249,22,165,9,23,195,2,23,201,1,11,28,248, -22,177,15,23,194,2,250,2,87,23,206,1,23,207,1,249,22,172,15,23,201, -1,23,198,1,250,2,87,205,206,195,192,86,94,23,194,1,28,23,196,2,90, -159,39,11,89,161,39,36,11,248,22,175,15,23,197,2,86,95,23,195,1,23, -194,1,27,28,23,201,2,27,248,22,181,15,23,199,2,28,249,22,165,9,23, -195,2,23,200,2,11,28,248,22,177,15,23,194,2,250,2,87,23,204,2,23, -205,2,249,22,172,15,23,200,2,23,198,1,250,2,87,23,204,2,23,205,2, -23,196,1,11,28,23,193,2,192,86,94,23,193,1,27,28,248,22,154,15,23, -196,2,27,249,22,172,15,23,198,2,23,204,2,28,28,248,22,167,15,193,10, -248,22,166,15,193,192,11,11,28,23,193,2,192,86,94,23,193,1,28,23,202, -2,11,27,248,22,181,15,23,200,2,28,249,22,165,9,23,195,2,23,201,1, -11,28,248,22,177,15,23,194,2,250,2,87,23,205,1,23,206,1,249,22,172, -15,23,201,1,23,198,1,250,2,87,204,205,195,192,28,23,193,2,90,159,39, -11,89,161,39,36,11,248,22,175,15,23,199,2,86,95,23,195,1,23,194,1, -27,28,23,198,2,251,2,88,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,154,15,195,27,249,22,172, -15,197,200,28,28,248,22,167,15,193,10,248,22,166,15,193,192,11,11,28,192, -192,28,198,11,251,2,88,198,203,201,202,194,32,91,88,163,8,36,40,58,11, -2,55,222,33,92,28,248,22,87,23,197,2,11,27,248,22,180,15,248,22,80, -23,199,2,27,249,22,172,15,23,196,1,23,197,2,28,248,22,166,15,23,194, -2,250,2,87,198,199,195,86,94,23,193,1,27,248,22,81,23,200,1,28,248, -22,87,23,194,2,11,27,248,22,180,15,248,22,80,23,196,2,27,249,22,172, -15,23,196,1,23,200,2,28,248,22,166,15,23,194,2,250,2,87,201,202,195, -86,94,23,193,1,27,248,22,81,23,197,1,28,248,22,87,23,194,2,11,27, -248,22,180,15,248,22,80,195,27,249,22,172,15,23,196,1,202,28,248,22,166, -15,193,250,2,87,204,205,195,251,2,91,204,205,206,248,22,81,199,86,95,28, +205,0,217,0,233,0,247,0,13,1,29,1,46,1,69,1,84,1,123,1,157, +1,175,1,191,1,198,1,210,1,226,1,243,1,4,2,17,2,30,2,47,2, +59,2,74,2,98,2,130,2,148,2,167,2,187,2,203,2,221,2,252,2,10, +3,27,3,71,3,79,3,84,3,128,3,135,3,145,3,160,3,169,3,174,3, +176,3,209,3,233,3,254,3,9,4,18,4,28,4,46,4,59,4,72,4,82, +4,92,4,98,4,143,4,148,4,160,4,163,4,167,4,191,4,230,4,233,4, +246,4,12,5,23,5,75,5,98,5,106,5,130,5,151,5,108,6,138,6,19, +10,42,10,59,10,7,12,110,12,124,12,28,13,216,14,225,14,234,14,248,14, +2,15,43,16,146,16,3,17,76,17,149,17,253,17,26,18,97,18,234,18,49, +19,3,20,154,20,240,20,36,21,49,21,60,21,157,22,5,23,67,23,254,24, +22,25,81,26,88,26,140,26,153,26,143,27,157,27,11,28,169,28,176,28,50, +30,127,30,144,30,246,30,168,31,228,31,235,31,115,32,169,32,188,32,138,33, +154,33,152,34,217,35,0,36,9,36,86,37,25,38,45,38,61,38,84,38,100, +38,151,38,172,38,192,38,212,38,13,39,248,41,17,43,176,43,192,43,88,46, +217,48,232,48,122,50,60,51,62,51,88,51,103,51,27,53,221,53,236,53,245, +53,252,53,9,55,22,56,169,58,42,59,173,59,202,61,152,62,184,62,58,63, +0,0,90,70,0,0,67,35,37,117,116,105,108,115,72,112,97,116,104,45,115, +116,114,105,110,103,63,64,98,115,98,115,76,110,111,114,109,97,108,45,99,97, +115,101,45,112,97,116,104,71,114,101,114,111,111,116,45,112,97,116,104,1,20, +102,105,110,100,45,101,120,101,99,117,116,97,98,108,101,45,112,97,116,104,1, +27,112,97,116,104,45,108,105,115,116,45,115,116,114,105,110,103,45,62,112,97, +116,104,45,108,105,115,116,1,42,99,97,108,108,45,119,105,116,104,45,100,101, +102,97,117,108,116,45,114,101,97,100,105,110,103,45,112,97,114,97,109,101,116, +101,114,105,122,97,116,105,111,110,65,113,117,111,116,101,68,35,37,112,97,114, +97,109,122,29,94,2,9,2,10,11,74,45,99,104,101,99,107,45,114,101,108, +112,97,116,104,77,45,99,104,101,99,107,45,99,111,108,108,101,99,116,105,111, +110,71,45,99,104,101,99,107,45,102,97,105,108,75,99,111,108,108,101,99,116, +105,111,110,45,112,97,116,104,73,102,105,110,100,45,99,111,108,45,102,105,108, +101,1,20,99,111,108,108,101,99,116,105,111,110,45,102,105,108,101,45,112,97, +116,104,75,102,105,110,100,45,99,111,110,102,105,103,45,100,105,114,76,103,101, +116,45,99,111,110,102,105,103,45,116,97,98,108,101,1,21,103,101,116,45,105, +110,115,116,97,108,108,97,116,105,111,110,45,110,97,109,101,74,99,111,101,114, +99,101,45,116,111,45,112,97,116,104,1,37,99,111,108,108,101,99,116,115,45, +114,101,108,97,116,105,118,101,45,112,97,116,104,45,62,99,111,109,112,108,101, +116,101,45,112,97,116,104,1,32,101,120,101,45,114,101,108,97,116,105,118,101, +45,112,97,116,104,45,62,99,111,109,112,108,101,116,101,45,112,97,116,104,77, +97,100,100,45,99,111,110,102,105,103,45,115,101,97,114,99,104,75,97,108,108, +45,108,105,110,107,115,45,112,97,116,104,115,29,94,2,9,2,10,11,71,108, +105,110,107,115,45,112,97,116,104,115,75,117,115,101,114,45,108,105,110,107,115, +45,112,97,116,104,76,117,115,101,114,45,108,105,110,107,115,45,99,97,99,104, +101,76,117,115,101,114,45,108,105,110,107,115,45,115,116,97,109,112,72,108,105, +110,107,115,45,99,97,99,104,101,115,72,108,105,110,107,115,45,115,116,97,109, +112,115,76,115,116,97,109,112,45,112,114,111,109,112,116,45,116,97,103,71,102, +105,108,101,45,62,115,116,97,109,112,74,110,111,45,102,105,108,101,45,115,116, +97,109,112,63,1,22,103,101,116,45,108,105,110,107,101,100,45,99,111,108,108, +101,99,116,105,111,110,115,1,30,110,111,114,109,97,108,105,122,101,45,99,111, +108,108,101,99,116,105,111,110,45,114,101,102,101,114,101,110,99,101,77,99,104, +101,99,107,45,115,117,102,102,105,120,45,99,97,108,108,78,112,97,116,104,45, +97,100,106,117,115,116,45,115,117,102,102,105,120,79,112,97,116,104,45,114,101, +112,108,97,99,101,45,115,117,102,102,105,120,75,112,97,116,104,45,97,100,100, +45,115,117,102,102,105,120,77,108,111,97,100,47,117,115,101,45,99,111,109,112, +105,108,101,100,1,29,102,105,110,100,45,108,105,98,114,97,114,121,45,99,111, +108,108,101,99,116,105,111,110,45,112,97,116,104,115,73,101,109,98,101,100,100, +101,100,45,108,111,97,100,76,110,111,114,109,97,108,45,112,97,116,104,45,99, +97,115,101,6,41,41,40,111,114,47,99,32,112,97,116,104,45,102,111,114,45, +115,111,109,101,45,115,121,115,116,101,109,63,32,112,97,116,104,45,115,116,114, +105,110,103,63,41,67,119,105,110,100,111,119,115,6,2,2,92,49,6,41,41, +40,111,114,47,99,32,112,97,116,104,45,115,116,114,105,110,103,63,32,112,97, +116,104,45,102,111,114,45,115,111,109,101,45,115,121,115,116,101,109,63,41,6, +4,4,112,97,116,104,5,8,92,92,63,92,82,69,76,92,6,12,12,112,97, +116,104,45,115,116,114,105,110,103,63,68,114,101,108,97,116,105,118,101,64,108, +111,111,112,5,0,6,30,30,40,112,114,111,99,101,100,117,114,101,45,97,114, +105,116,121,45,105,110,99,108,117,100,101,115,47,99,32,48,41,6,21,21,105, +110,118,97,108,105,100,32,114,101,108,97,116,105,118,101,32,112,97,116,104,6, +18,18,40,97,110,121,47,99,32,46,32,45,62,32,46,32,97,110,121,41,70, +99,111,110,102,105,103,45,100,105,114,68,111,114,105,103,45,100,105,114,69,101, +120,101,99,45,102,105,108,101,77,105,110,115,116,97,108,108,97,116,105,111,110, +45,110,97,109,101,72,99,111,108,108,101,99,116,115,45,100,105,114,6,10,10, +108,105,110,107,115,46,114,107,116,100,69,97,100,100,111,110,45,100,105,114,69, +102,115,45,99,104,97,110,103,101,65,101,114,114,111,114,6,42,42,101,114,114, +111,114,32,114,101,97,100,105,110,103,32,99,111,108,108,101,99,116,105,111,110, +32,108,105,110,107,115,32,102,105,108,101,32,126,115,58,32,126,97,64,114,111, +111,116,71,115,116,97,116,105,99,45,114,111,111,116,6,0,0,6,1,1,47, +6,21,21,40,111,114,47,99,32,115,116,114,105,110,103,63,32,98,121,116,101, +115,63,41,6,36,36,99,97,110,110,111,116,32,97,100,100,32,97,32,115,117, +102,102,105,120,32,116,111,32,97,32,114,111,111,116,32,112,97,116,104,58,32, +5,1,95,5,11,80,76,84,67,79,76,76,69,67,84,83,1,20,99,111,108, +108,101,99,116,115,45,115,101,97,114,99,104,45,100,105,114,115,6,8,8,99, +111,108,108,101,99,116,115,27,248,22,154,15,23,195,2,28,23,193,2,192,86, +94,23,193,1,28,248,22,148,7,23,195,2,27,248,22,177,15,23,196,2,28, +23,193,2,192,86,94,23,193,1,248,22,178,15,23,196,1,11,0,21,35,114, +120,34,94,91,92,92,93,91,92,92,93,91,63,93,91,92,92,93,34,0,6, +35,114,120,34,47,34,0,22,35,114,120,34,91,47,92,92,93,91,46,32,93, +43,91,47,92,92,93,42,36,34,0,19,35,114,120,34,91,32,46,93,43,40, +91,47,92,92,93,42,41,36,34,86,94,28,28,248,22,155,15,23,195,2,10, 28,248,22,154,15,23,195,2,10,28,248,22,148,7,23,195,2,28,248,22,177, -15,23,195,2,10,248,22,178,15,23,195,2,11,12,250,22,172,11,2,6,2, -53,23,197,2,28,28,23,195,2,28,28,248,22,154,15,23,196,2,10,28,248, -22,148,7,23,196,2,28,248,22,177,15,23,196,2,10,248,22,178,15,23,196, -2,11,248,22,177,15,23,196,2,11,10,12,250,22,172,11,2,6,6,45,45, -40,111,114,47,99,32,35,102,32,40,97,110,100,47,99,32,112,97,116,104,45, -115,116,114,105,110,103,63,32,114,101,108,97,116,105,118,101,45,112,97,116,104, -63,41,41,23,198,2,28,28,248,22,177,15,23,195,2,90,159,39,11,89,161, -39,36,11,248,22,175,15,23,198,2,249,22,163,9,194,2,54,11,27,249,22, -170,8,247,22,169,8,5,4,80,65,84,72,27,28,23,194,2,249,80,158,40, -41,249,22,160,8,23,198,1,7,63,9,86,94,23,194,1,9,27,28,249,22, -163,9,247,22,175,8,2,48,249,22,79,248,22,163,15,5,1,46,23,196,1, -23,194,1,28,248,22,87,23,194,2,11,27,248,22,180,15,248,22,80,23,196, -2,27,249,22,172,15,23,196,1,23,201,2,28,248,22,166,15,23,194,2,250, -2,87,202,203,195,86,94,23,193,1,27,248,22,81,23,197,1,28,248,22,87, -23,194,2,11,27,248,22,180,15,248,22,80,23,196,2,27,249,22,172,15,23, -196,1,23,204,2,28,248,22,166,15,23,194,2,250,2,87,205,206,195,86,94, -23,193,1,27,248,22,81,23,197,1,28,248,22,87,23,194,2,11,27,248,22, -180,15,248,22,80,195,27,249,22,172,15,23,196,1,206,28,248,22,166,15,193, -250,2,87,23,16,23,17,195,251,2,91,23,16,23,17,23,18,248,22,81,199, -27,248,22,180,15,23,196,1,28,248,22,166,15,193,250,2,87,198,199,195,11, -250,80,159,39,40,39,196,197,11,250,80,159,39,40,39,196,11,11,32,96,88, -163,8,36,39,57,11,2,55,222,33,98,0,8,35,114,120,35,34,92,34,34, -27,249,22,145,16,23,197,2,23,198,2,28,23,193,2,86,94,23,196,1,27, -248,22,101,23,195,2,27,27,248,22,110,23,197,1,27,249,22,145,16,23,201, -2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22,101,23,195,2,27, -250,2,96,23,203,2,23,204,1,248,22,110,23,199,1,28,249,22,145,8,23, -196,2,2,56,249,22,93,23,202,2,194,249,22,79,248,22,163,15,28,249,22, -163,9,247,22,175,8,2,48,250,22,157,16,2,97,23,200,1,2,56,23,197, -1,194,86,95,23,199,1,23,193,1,28,249,22,145,8,23,196,2,2,56,249, -22,93,23,200,2,9,249,22,79,248,22,163,15,28,249,22,163,9,247,22,175, -8,2,48,250,22,157,16,2,97,23,200,1,2,56,23,197,1,9,28,249,22, -145,8,23,196,2,2,56,249,22,93,197,194,86,94,23,196,1,249,22,79,248, -22,163,15,28,249,22,163,9,247,22,175,8,2,48,250,22,157,16,2,97,23, -200,1,2,56,23,197,1,194,86,94,23,193,1,28,249,22,145,8,23,198,2, -2,56,249,22,93,195,9,86,94,23,194,1,249,22,79,248,22,163,15,28,249, -22,163,9,247,22,175,8,2,48,250,22,157,16,2,97,23,202,1,2,56,23, -199,1,9,86,95,28,28,248,22,137,8,194,10,248,22,148,7,194,12,250,22, -172,11,2,7,6,21,21,40,111,114,47,99,32,98,121,116,101,115,63,32,115, -116,114,105,110,103,63,41,196,28,28,248,22,88,195,249,22,4,22,154,15,196, -11,12,250,22,172,11,2,7,6,14,14,40,108,105,115,116,111,102,32,112,97, -116,104,63,41,197,250,2,96,197,195,28,248,22,148,7,197,248,22,162,8,197, -196,28,28,248,22,0,23,195,2,249,22,50,23,196,2,36,11,20,13,159,80, -159,36,43,37,26,29,80,159,8,29,44,37,249,22,33,11,80,159,8,31,43, -37,22,188,14,10,22,189,14,10,22,190,14,10,22,129,15,10,22,128,15,11, -22,130,15,10,22,191,14,10,22,131,15,10,22,132,15,10,22,133,15,10,22, -134,15,10,22,135,15,11,22,136,15,10,22,186,14,11,247,23,194,1,250,22, -172,11,2,8,2,57,23,197,1,86,94,28,28,248,22,154,15,23,195,2,10, -28,248,22,148,7,23,195,2,28,248,22,177,15,23,195,2,10,248,22,178,15, -23,195,2,11,12,250,22,172,11,23,196,2,2,53,23,197,2,28,248,22,177, -15,23,195,2,12,251,22,174,11,23,197,1,2,58,2,51,23,198,1,86,94, -28,28,248,22,154,15,23,195,2,10,28,248,22,148,7,23,195,2,28,248,22, -177,15,23,195,2,10,248,22,178,15,23,195,2,11,12,250,22,172,11,23,196, -2,2,53,23,197,2,28,248,22,177,15,23,195,2,12,251,22,174,11,23,197, -1,2,58,2,51,23,198,1,86,94,86,94,28,28,248,22,154,15,23,195,2, -10,28,248,22,148,7,23,195,2,28,248,22,177,15,23,195,2,10,248,22,178, -15,23,195,2,11,12,250,22,172,11,23,196,2,2,53,23,197,2,28,248,22, -177,15,23,195,2,86,94,23,194,1,12,251,22,174,11,23,197,2,2,58,2, -51,23,198,1,249,22,3,20,20,94,88,163,8,36,37,47,11,9,223,2,33, -102,23,195,1,23,197,1,28,28,248,22,0,23,195,2,249,22,50,23,196,2, -37,11,12,250,22,172,11,23,196,1,2,59,23,197,1,86,94,28,28,248,22, -154,15,23,194,2,10,28,248,22,148,7,23,194,2,28,248,22,177,15,23,194, -2,10,248,22,178,15,23,194,2,11,12,250,22,172,11,2,15,2,53,23,196, -2,28,248,22,177,15,23,194,2,12,251,22,174,11,2,15,2,58,2,51,23, -197,1,86,95,86,94,86,94,28,28,248,22,154,15,23,196,2,10,28,248,22, -148,7,23,196,2,28,248,22,177,15,23,196,2,10,248,22,178,15,23,196,2, -11,12,250,22,172,11,2,15,2,53,23,198,2,28,248,22,177,15,23,196,2, -12,251,22,174,11,2,15,2,58,2,51,23,199,2,249,22,3,32,0,88,163, -8,36,37,46,11,9,222,33,105,23,198,2,28,28,248,22,0,23,195,2,249, -22,50,23,196,2,37,11,12,250,22,172,11,2,15,2,59,23,197,2,251,80, -158,40,49,23,198,1,23,199,1,23,200,1,11,86,94,28,28,248,22,154,15, -23,194,2,10,28,248,22,148,7,23,194,2,28,248,22,177,15,23,194,2,10, -248,22,178,15,23,194,2,11,12,250,22,172,11,2,17,2,53,23,196,2,28, -248,22,177,15,23,194,2,12,251,22,174,11,2,17,2,58,2,51,23,197,1, -86,96,86,94,28,28,248,22,154,15,23,196,2,10,28,248,22,148,7,23,196, -2,28,248,22,177,15,23,196,2,10,248,22,178,15,23,196,2,11,12,250,22, -172,11,2,17,2,53,23,198,2,28,248,22,177,15,23,196,2,12,251,22,174, -11,2,17,2,58,2,51,23,199,2,86,94,86,94,28,28,248,22,154,15,23, -197,2,10,28,248,22,148,7,23,197,2,28,248,22,177,15,23,197,2,10,248, -22,178,15,23,197,2,11,12,250,22,172,11,2,17,2,53,23,199,2,28,248, -22,177,15,23,197,2,12,251,22,174,11,2,17,2,58,2,51,23,200,2,249, -22,3,32,0,88,163,8,36,37,46,11,9,222,33,107,23,199,2,28,28,248, -22,0,23,195,2,249,22,50,23,196,2,37,11,12,250,22,172,11,2,17,2, -59,23,197,2,251,80,158,40,49,23,198,1,23,200,1,23,201,1,23,199,1, -27,248,22,131,16,2,62,28,248,22,179,15,23,194,2,192,27,28,248,22,177, -15,23,195,2,20,13,159,80,159,38,43,37,250,80,159,41,44,37,249,22,33, -11,80,159,43,43,37,22,132,16,248,22,131,16,2,63,27,248,22,131,16,2, -64,250,80,159,42,40,39,23,196,1,23,198,2,11,11,28,23,193,2,192,86, -94,23,193,1,27,249,22,180,15,27,248,22,131,16,2,64,250,80,159,45,40, -39,23,196,1,11,11,248,22,131,16,2,63,90,159,39,11,89,161,39,36,11, -248,22,175,15,23,197,1,86,95,23,195,1,23,194,1,249,22,180,15,23,200, -1,23,195,1,20,13,159,80,159,36,43,37,26,29,80,159,8,29,44,37,249, -22,33,11,80,159,8,31,43,37,22,188,14,10,22,189,14,10,22,190,14,10, -22,129,15,10,22,128,15,11,22,130,15,10,22,191,14,10,22,131,15,10,22, -132,15,10,22,133,15,10,22,134,15,10,22,135,15,11,22,136,15,10,22,186, -14,11,247,22,143,6,27,249,22,172,15,23,197,1,6,11,11,99,111,110,102, -105,103,46,114,107,116,100,27,28,248,22,166,15,23,195,2,249,22,135,6,23, -196,1,80,159,40,8,44,39,11,28,192,192,21,17,1,0,28,248,22,148,7, -23,195,2,27,248,22,162,15,23,196,1,28,248,22,179,15,23,194,2,192,249, -22,180,15,23,195,1,27,27,248,22,131,16,2,65,28,248,22,179,15,23,194, -2,192,28,248,22,178,15,23,194,2,249,22,180,15,23,195,1,249,22,180,15, -250,80,159,48,40,39,248,22,131,16,2,64,11,10,248,22,131,16,2,63,250, -80,159,44,40,39,248,22,131,16,2,64,23,196,1,10,28,23,193,2,192,86, -94,23,193,1,248,22,131,16,2,63,28,248,22,137,8,23,195,2,27,248,22, -163,15,23,196,1,28,248,22,179,15,23,194,2,192,249,22,180,15,23,195,1, -27,27,248,22,131,16,2,65,28,248,22,179,15,23,194,2,192,28,248,22,178, -15,23,194,2,249,22,180,15,23,195,1,249,22,180,15,250,80,159,48,40,39, -248,22,131,16,2,64,11,10,248,22,131,16,2,63,250,80,159,44,40,39,248, -22,131,16,2,64,23,196,1,10,28,23,193,2,192,86,94,23,193,1,248,22, -131,16,2,63,28,248,22,154,15,23,195,2,28,248,22,179,15,23,195,2,193, -249,22,180,15,23,196,1,27,27,248,22,131,16,2,65,28,248,22,179,15,23, -194,2,192,28,248,22,178,15,23,194,2,249,22,180,15,23,195,1,249,22,180, -15,250,80,159,47,40,39,248,22,131,16,2,64,11,10,248,22,131,16,2,63, -250,80,159,43,40,39,248,22,131,16,2,64,23,196,1,10,28,23,193,2,192, -86,94,23,193,1,248,22,131,16,2,63,193,28,248,22,179,15,23,195,2,193, -249,22,180,15,23,196,1,27,27,248,22,131,16,2,65,28,248,22,179,15,23, -194,2,192,28,248,22,178,15,23,194,2,249,22,180,15,23,195,1,249,22,180, -15,250,80,159,47,40,39,248,22,131,16,2,64,11,10,248,22,131,16,2,63, -250,80,159,43,40,39,248,22,131,16,2,64,23,196,1,10,28,23,193,2,192, -86,94,23,193,1,248,22,131,16,2,63,28,248,22,179,15,23,195,2,193,28, -248,22,178,15,23,195,2,249,22,180,15,23,196,1,249,22,180,15,250,80,159, -43,40,39,248,22,131,16,2,64,11,10,248,22,131,16,2,63,250,80,159,39, -40,39,248,22,131,16,2,64,196,10,28,248,22,87,23,196,2,9,28,248,22, -80,23,196,2,249,22,79,248,80,159,39,59,39,248,22,136,18,23,199,2,27, -248,22,137,18,23,199,1,28,248,22,87,23,194,2,9,28,248,22,80,23,194, -2,249,22,79,248,80,159,42,59,39,248,22,136,18,23,197,2,27,248,22,137, -18,23,197,1,28,248,22,87,23,194,2,9,28,248,22,80,23,194,2,249,22, -79,248,80,159,45,59,39,248,22,136,18,23,197,2,249,80,159,46,8,45,39, -23,204,1,248,22,137,18,23,198,1,249,22,93,23,202,2,249,80,159,46,8, -45,39,23,204,1,248,22,137,18,23,198,1,249,22,93,23,199,2,27,248,22, -137,18,23,197,1,28,248,22,87,23,194,2,9,28,248,22,80,23,194,2,249, -22,79,248,80,159,45,59,39,248,22,136,18,23,197,2,249,80,159,46,8,45, -39,23,204,1,248,22,137,18,23,198,1,249,22,93,23,202,2,249,80,159,46, -8,45,39,23,204,1,248,22,137,18,23,198,1,249,22,93,23,196,2,27,248, -22,137,18,23,199,1,28,248,22,87,23,194,2,9,28,248,22,80,23,194,2, -249,22,79,248,80,159,42,59,39,248,22,136,18,23,197,2,27,248,22,137,18, -23,197,1,28,248,22,87,23,194,2,9,28,248,22,80,23,194,2,249,22,79, -248,80,159,45,59,39,248,22,136,18,23,197,2,249,80,159,46,8,45,39,23, -204,1,248,22,137,18,23,198,1,249,22,93,23,202,2,249,80,159,46,8,45, -39,23,204,1,248,22,137,18,23,198,1,249,22,93,23,199,2,27,248,22,137, -18,23,197,1,28,248,22,87,23,194,2,9,28,248,22,80,23,194,2,249,22, -79,248,80,159,45,59,39,248,22,136,18,23,197,2,249,80,159,46,8,45,39, -23,204,1,248,22,137,18,23,198,1,249,22,93,23,202,2,249,80,159,46,8, -45,39,23,204,1,248,22,137,18,23,198,1,27,250,22,157,2,23,198,1,23, -199,1,11,28,192,249,80,159,39,8,45,39,198,194,196,27,27,248,22,131,16, -2,62,28,248,22,179,15,23,194,2,192,27,28,248,22,177,15,23,195,2,20, -13,159,80,159,39,43,37,250,80,159,42,44,37,249,22,33,11,80,159,44,43, -37,22,132,16,248,22,131,16,2,63,27,248,22,131,16,2,64,250,80,159,43, -40,39,23,196,1,23,198,2,11,11,28,23,193,2,192,86,94,23,193,1,27, -249,22,180,15,27,248,22,131,16,2,64,250,80,159,46,40,39,23,196,1,11, -11,248,22,131,16,2,63,90,159,39,11,89,161,39,36,11,248,22,175,15,23, -197,1,86,95,23,195,1,23,194,1,249,22,180,15,23,200,1,23,195,1,27, -248,80,159,39,58,39,23,195,1,27,248,80,159,40,59,39,27,250,22,157,2, -23,199,2,70,108,105,110,107,115,45,102,105,108,101,11,28,23,193,2,192,86, -94,23,193,1,249,22,172,15,27,250,22,157,2,23,202,2,69,115,104,97,114, -101,45,100,105,114,11,28,23,193,2,192,86,94,23,193,1,249,22,172,15,62, -117,112,6,5,5,115,104,97,114,101,2,61,248,22,186,8,250,80,159,43,8, -26,39,23,198,1,78,108,105,110,107,115,45,115,101,97,114,99,104,45,102,105, -108,101,115,248,22,89,23,198,1,248,22,162,13,23,194,1,249,22,16,80,159, -38,8,31,38,28,248,22,182,12,23,197,2,86,94,23,196,1,32,0,88,163, -8,36,36,41,11,9,222,11,20,20,94,88,163,8,36,36,43,11,9,223,3, -33,118,23,196,1,32,120,88,163,36,37,56,11,2,55,222,33,121,90,159,39, -11,89,161,39,36,11,248,22,175,15,23,197,1,86,95,23,195,1,23,194,1, -28,248,22,154,15,23,194,2,28,248,22,167,15,23,194,2,249,22,140,6,23, -195,1,32,0,88,163,8,36,36,41,11,9,222,11,90,159,39,11,89,161,39, -36,11,248,22,175,15,23,197,1,86,95,23,195,1,23,194,1,28,248,22,154, -15,23,194,2,28,248,22,167,15,23,194,2,249,22,140,6,23,195,1,32,0, -88,163,8,36,36,41,11,9,222,11,90,159,39,11,89,161,39,36,11,248,22, -175,15,23,197,1,86,95,23,195,1,23,194,1,28,248,22,154,15,23,194,2, -28,248,22,167,15,23,194,2,249,22,140,6,23,195,1,32,0,88,163,8,36, -36,41,11,9,222,11,90,159,39,11,89,161,39,36,11,248,22,175,15,23,197, -1,86,95,23,195,1,23,194,1,28,248,22,154,15,23,194,2,28,248,22,167, -15,23,194,2,249,22,140,6,23,195,1,32,0,88,163,8,36,36,41,11,9, -222,11,248,2,120,23,194,1,11,11,11,11,32,122,88,163,8,36,37,55,11, -2,55,222,33,123,27,249,22,158,6,8,128,128,23,196,2,28,248,22,143,7, -23,194,2,9,249,22,79,23,195,1,27,249,22,158,6,8,128,128,23,199,2, -28,248,22,143,7,23,194,2,9,249,22,79,23,195,1,27,249,22,158,6,8, -128,128,23,202,2,28,248,22,143,7,23,194,2,9,249,22,79,23,195,1,27, -249,22,158,6,8,128,128,23,205,2,28,248,22,143,7,23,194,2,9,249,22, -79,23,195,1,248,2,122,23,206,1,27,249,22,158,6,8,128,128,23,196,2, -28,248,22,137,8,23,194,2,28,249,22,129,4,248,22,142,8,23,196,2,8, -128,128,249,22,1,22,149,8,249,22,79,23,197,1,27,249,22,158,6,8,128, -128,23,201,2,28,248,22,143,7,23,194,2,9,249,22,79,23,195,1,27,249, -22,158,6,8,128,128,23,204,2,28,248,22,143,7,23,194,2,9,249,22,79, -23,195,1,27,249,22,158,6,8,128,128,23,207,2,28,248,22,143,7,23,194, -2,9,249,22,79,23,195,1,27,249,22,158,6,8,128,128,23,210,2,28,248, -22,143,7,23,194,2,9,249,22,79,23,195,1,248,2,122,23,211,1,192,192, -248,22,128,6,23,194,1,20,13,159,80,159,37,8,33,37,80,159,37,8,46, -39,27,28,249,22,183,8,248,22,175,8,2,66,38,90,159,39,11,89,161,39, -36,11,248,22,175,15,23,198,2,86,95,23,195,1,23,194,1,28,248,22,154, -15,23,194,2,28,248,22,167,15,23,194,2,249,22,140,6,23,195,1,32,0, -88,163,8,36,36,41,11,9,222,11,90,159,39,11,89,161,39,36,11,248,22, -175,15,23,197,1,86,95,23,195,1,23,194,1,28,248,22,154,15,23,194,2, -28,248,22,167,15,23,194,2,249,22,140,6,23,195,1,32,0,88,163,8,36, -36,41,11,9,222,11,90,159,39,11,89,161,39,36,11,248,22,175,15,23,197, -1,86,95,23,195,1,23,194,1,28,248,22,154,15,23,194,2,28,248,22,167, -15,23,194,2,249,22,140,6,23,195,1,32,0,88,163,8,36,36,41,11,9, -222,11,90,159,39,11,89,161,39,36,11,248,22,175,15,23,197,1,86,95,23, -195,1,23,194,1,28,248,22,154,15,23,194,2,28,248,22,167,15,23,194,2, -249,22,140,6,23,195,1,32,0,88,163,8,36,36,41,11,9,222,11,248,2, -120,23,194,1,11,11,11,11,11,28,248,22,166,15,23,195,2,27,28,249,22, -183,8,248,22,175,8,2,66,38,249,22,140,6,23,197,2,32,0,88,163,8, -36,36,41,11,9,222,11,11,86,94,28,23,194,2,248,22,142,6,23,195,1, -86,94,23,194,1,12,249,22,79,27,248,22,183,5,23,199,1,250,22,46,22, -37,88,163,36,36,8,24,11,9,223,3,33,124,20,20,94,88,163,36,36,43, -11,9,223,3,33,125,23,196,1,194,249,22,79,11,194,28,28,23,195,2,28, -248,22,81,23,196,2,248,22,161,9,249,22,157,14,36,248,22,137,18,23,199, -2,11,11,194,86,94,23,195,1,249,22,14,20,20,94,88,163,8,32,36,58, -16,4,36,8,240,0,128,0,0,8,240,2,64,0,0,36,9,224,2,3,33, -126,23,196,1,80,159,38,8,31,38,27,248,22,161,9,194,28,192,192,248,22, -161,9,248,22,80,195,86,94,28,248,22,139,12,23,199,2,27,247,22,131,12, -28,249,22,187,11,23,195,2,2,67,251,22,191,11,23,197,1,2,67,250,22, -132,8,2,68,28,23,202,1,86,95,23,204,1,23,203,1,80,159,48,51,38, -28,23,203,1,86,94,23,204,1,80,159,48,54,38,249,22,183,8,80,159,50, -8,27,38,23,206,1,248,22,135,12,23,207,2,247,22,29,12,12,28,248,22, -139,12,23,199,2,86,94,23,198,1,248,23,194,1,247,22,137,2,197,86,95, -28,248,22,139,12,23,200,2,27,247,22,131,12,28,249,22,187,11,23,195,2, -2,67,251,22,191,11,23,197,1,2,67,250,22,132,8,2,68,28,23,203,2, -80,159,49,51,38,28,23,204,2,80,159,49,54,38,249,22,183,8,80,159,51, -8,27,38,23,207,2,248,22,135,12,23,208,2,247,22,29,12,12,28,23,193, -2,28,23,195,1,86,95,23,197,1,23,196,1,86,94,20,18,159,11,80,158, -41,52,247,22,137,2,20,18,159,11,80,158,41,53,23,193,1,28,23,196,1, -86,94,23,197,1,86,94,20,18,159,11,80,158,41,55,247,22,137,2,20,18, -159,11,80,158,41,56,23,193,1,86,94,250,22,184,8,80,159,44,8,29,38, -23,200,2,247,22,137,2,250,22,184,8,80,159,44,8,30,38,23,200,1,23, -196,1,86,94,23,195,1,12,28,248,22,139,12,23,200,2,86,94,23,199,1, -248,23,195,1,247,22,137,2,198,20,20,94,248,22,143,6,23,194,2,28,248, -22,143,7,248,22,143,6,23,195,1,12,248,22,168,11,6,30,30,101,120,112, -101,99,116,101,100,32,97,32,115,105,110,103,108,101,32,83,45,101,120,112,114, -101,115,115,105,111,110,248,22,128,6,23,194,1,28,248,22,88,23,194,2,28, -28,249,22,189,3,38,248,22,92,23,196,2,10,249,22,189,3,39,248,22,92, -23,196,2,28,28,248,22,148,7,248,22,80,23,195,2,10,28,249,22,163,9, -2,69,248,22,136,18,23,196,2,10,249,22,163,9,2,70,248,22,136,18,23, -196,2,28,27,248,22,101,194,28,248,22,154,15,23,194,2,10,28,248,22,148, -7,23,194,2,28,248,22,177,15,23,194,2,10,248,22,178,15,23,194,1,11, -27,248,22,87,248,22,103,195,28,192,192,248,22,158,16,248,22,110,195,11,11, -11,11,28,248,22,167,15,249,22,172,15,23,196,2,23,198,2,27,248,22,67, -248,22,158,15,23,198,1,250,22,155,2,23,198,2,23,196,2,249,22,79,23, -199,1,250,22,157,2,23,203,1,23,201,1,9,12,250,22,155,2,23,197,1, -23,198,1,249,22,79,23,198,1,23,201,1,28,28,248,22,87,248,22,103,23, -197,2,10,249,22,149,16,248,22,110,23,198,2,247,22,166,8,27,248,22,182, -15,249,22,180,15,248,22,101,23,200,2,23,198,1,28,249,22,163,9,248,22, -80,23,199,2,2,70,86,94,23,196,1,249,22,3,20,20,94,88,163,8,36, -37,53,11,9,224,3,2,33,134,2,23,196,1,248,22,185,15,23,196,1,28, -249,22,163,9,248,22,136,18,23,199,2,2,69,86,94,23,196,1,86,94,28, -250,22,157,2,23,197,2,11,11,12,250,22,155,2,23,197,2,11,9,249,22, -161,2,23,196,2,20,20,95,88,163,8,36,38,50,11,9,224,3,2,33,135, -2,23,195,1,23,196,1,27,248,22,67,248,22,136,18,23,199,1,250,22,155, -2,23,198,2,23,196,2,249,22,79,248,22,128,2,23,200,1,250,22,157,2, -23,203,1,23,201,1,9,12,250,22,155,2,23,196,1,23,197,1,248,22,94, -23,199,1,27,28,28,23,194,2,248,22,161,9,248,22,80,23,196,2,10,9, -27,249,22,183,5,23,198,2,66,98,105,110,97,114,121,250,22,46,22,37,88, -163,8,36,36,44,11,9,223,3,33,131,2,20,20,94,88,163,36,36,43,11, -9,223,3,33,132,2,23,196,1,86,94,28,28,248,22,88,23,194,2,249,22, -4,32,0,88,163,8,36,37,45,11,9,222,33,133,2,23,195,2,11,12,248, -22,168,11,6,18,18,105,108,108,45,102,111,114,109,101,100,32,99,111,110,116, -101,110,116,27,247,22,137,2,27,90,159,39,11,89,161,39,36,11,248,22,175, -15,23,201,1,192,86,96,249,22,3,20,20,94,88,163,8,36,37,54,11,9, -224,2,3,33,136,2,23,195,1,23,197,1,249,22,161,2,195,88,163,8,36, -38,48,11,9,223,3,33,137,2,28,23,198,1,86,94,20,18,159,11,80,158, -44,52,193,20,18,159,11,80,158,44,53,195,28,23,199,1,86,94,20,18,159, -11,80,158,44,55,193,20,18,159,11,80,158,44,56,195,86,94,250,22,184,8, -80,159,47,8,29,38,23,203,2,196,250,22,184,8,80,159,47,8,30,38,23, -203,1,23,199,1,193,20,13,159,80,159,39,8,33,37,88,163,36,37,57,16, -2,8,240,0,128,0,0,8,132,32,9,227,3,2,1,0,4,33,129,2,27, -28,23,194,2,80,159,40,51,38,28,23,195,2,80,159,40,54,38,249,22,183, -8,80,159,42,8,27,38,23,198,2,27,28,23,195,2,80,158,41,53,28,23, -196,2,80,158,41,56,249,22,183,8,80,159,43,8,30,38,23,199,2,27,249, -80,159,44,8,32,39,23,197,2,23,196,2,28,249,22,165,9,23,195,2,23, -196,1,86,96,23,200,1,23,195,1,23,193,1,28,23,196,1,80,158,42,52, -28,23,197,1,80,158,42,55,249,22,183,8,80,159,44,8,29,38,23,200,1, -20,13,159,80,159,42,8,33,37,20,20,94,88,163,36,37,58,16,2,8,240, -0,128,0,0,8,240,31,104,0,0,9,228,6,5,4,3,7,0,33,130,2, -23,200,1,27,20,20,98,88,163,8,36,36,54,16,2,36,8,240,27,96,0, -0,9,228,7,6,5,4,3,1,33,138,2,23,194,1,23,196,1,23,197,1, -23,198,1,23,199,1,28,28,248,22,0,23,194,2,249,22,50,23,195,2,36, -11,20,13,159,80,159,43,43,37,26,29,80,159,8,36,44,37,249,22,33,11, -80,159,8,38,43,37,22,188,14,10,22,189,14,10,22,190,14,10,22,129,15, +15,23,195,2,10,248,22,178,15,23,195,2,11,12,250,22,172,11,2,45,2, +46,23,197,2,28,28,248,22,155,15,23,195,2,249,22,163,9,248,22,156,15, +23,197,2,2,47,249,22,163,9,247,22,175,8,2,47,27,28,248,22,148,7, +23,196,2,23,195,2,248,22,160,8,248,22,159,15,23,197,2,28,249,22,149, +16,2,80,23,195,2,86,94,23,193,1,28,248,22,148,7,23,196,2,248,22, +162,15,23,196,1,194,27,248,22,187,7,23,195,1,249,22,163,15,248,22,163, +8,250,22,157,16,2,81,28,249,22,149,16,2,82,23,201,2,23,199,1,250, +22,157,16,2,83,23,202,1,2,48,80,159,44,37,38,2,47,28,248,22,148, +7,23,195,2,248,22,162,15,23,195,1,193,0,28,35,114,120,34,94,92,92, +92,92,92,92,92,92,91,63,93,92,92,92,92,85,78,67,92,92,92,92,34, +86,95,28,28,28,248,22,154,15,23,195,2,10,28,248,22,148,7,23,195,2, +28,248,22,177,15,23,195,2,10,248,22,178,15,23,195,2,11,10,248,22,155, +15,23,195,2,12,252,22,172,11,2,5,2,49,36,23,199,2,23,200,2,28, +28,28,248,22,154,15,23,196,2,10,28,248,22,148,7,23,196,2,28,248,22, +177,15,23,196,2,10,248,22,178,15,23,196,2,11,10,248,22,155,15,23,196, +2,12,252,22,172,11,2,5,2,49,37,23,199,2,23,200,2,27,28,248,22, +155,15,23,196,2,248,22,156,15,23,196,2,247,22,157,15,86,95,28,28,248, +22,179,15,23,196,2,10,249,22,163,9,247,22,157,15,23,195,2,12,253,22, +174,11,2,5,6,54,54,112,97,116,104,32,105,115,32,110,111,116,32,99,111, +109,112,108,101,116,101,32,97,110,100,32,110,111,116,32,116,104,101,32,112,108, +97,116,102,111,114,109,39,115,32,99,111,110,118,101,110,116,105,111,110,2,50, +23,201,2,6,24,24,112,108,97,116,102,111,114,109,32,99,111,110,118,101,110, +116,105,111,110,32,116,121,112,101,247,22,157,15,28,249,22,163,9,28,248,22, +155,15,23,199,2,248,22,156,15,23,199,2,247,22,157,15,23,195,2,12,253, +22,174,11,2,5,6,37,37,103,105,118,101,110,32,112,97,116,104,115,32,117, +115,101,32,100,105,102,102,101,114,101,110,116,32,99,111,110,118,101,110,116,105, +111,110,115,2,50,23,201,2,6,9,9,114,111,111,116,32,112,97,116,104,23, +202,2,27,27,248,22,183,15,28,248,22,179,15,23,199,2,23,198,1,248,22, +180,15,23,199,1,86,94,28,28,248,22,155,15,23,194,2,10,28,248,22,154, +15,23,194,2,10,28,248,22,148,7,23,194,2,28,248,22,177,15,23,194,2, +10,248,22,178,15,23,194,2,11,12,250,22,172,11,2,45,2,46,23,196,2, +28,28,248,22,155,15,23,194,2,249,22,163,9,248,22,156,15,23,196,2,2, +47,249,22,163,9,247,22,175,8,2,47,27,28,248,22,148,7,23,195,2,23, +194,2,248,22,160,8,248,22,159,15,23,196,2,28,249,22,149,16,2,80,23, +195,2,86,94,23,193,1,28,248,22,148,7,23,195,2,248,22,162,15,23,195, +1,193,27,248,22,187,7,23,195,1,249,22,163,15,248,22,163,8,250,22,157, +16,2,81,28,249,22,149,16,2,82,23,201,2,23,199,1,250,22,157,16,2, +83,23,202,1,2,48,80,159,47,37,38,2,47,28,248,22,148,7,23,194,2, +248,22,162,15,23,194,1,192,27,248,22,159,15,23,195,2,28,249,22,163,9, +23,197,2,64,117,110,105,120,28,249,22,145,8,23,195,1,5,1,47,86,95, +23,195,1,23,194,1,28,248,22,155,15,23,199,2,197,248,22,162,15,23,199, +1,249,22,172,15,23,200,1,249,22,163,15,249,22,148,8,248,22,159,15,23, +201,1,37,23,199,1,28,249,22,163,9,23,197,2,2,47,249,22,172,15,23, +200,1,249,22,163,15,28,249,22,149,16,0,27,35,114,120,34,94,92,92,92, +92,92,92,92,92,91,63,93,92,92,92,92,91,97,45,122,93,58,34,23,199, +2,251,22,149,8,2,51,250,22,148,8,23,204,2,40,41,5,1,92,249,22, +148,8,23,203,1,42,28,249,22,149,16,2,85,23,199,2,249,22,149,8,2, +51,249,22,148,8,23,201,1,40,28,249,22,149,16,2,85,23,199,2,249,22, +149,8,2,51,249,22,148,8,23,201,1,40,28,249,22,149,16,0,14,35,114, +120,34,94,92,92,92,92,92,92,92,92,34,23,199,2,249,22,149,8,5,4, +85,78,67,92,249,22,148,8,23,201,1,38,28,249,22,149,16,0,12,35,114, +120,34,94,91,97,45,122,93,58,34,23,199,2,249,22,149,8,250,22,148,8, +23,202,2,36,37,249,22,148,8,23,201,1,38,86,94,23,197,1,12,23,199, +1,12,32,87,88,163,8,36,39,53,11,70,102,111,117,110,100,45,101,120,101, +99,222,33,90,32,88,88,163,8,36,40,58,11,64,110,101,120,116,222,33,89, +27,248,22,181,15,23,196,2,28,249,22,165,9,23,195,2,23,197,1,11,28, +248,22,177,15,23,194,2,27,249,22,172,15,23,197,1,23,196,1,28,23,197, +2,90,159,39,11,89,161,39,36,11,248,22,175,15,23,197,2,86,95,23,195, +1,23,194,1,27,28,23,202,2,27,248,22,181,15,23,199,2,28,249,22,165, +9,23,195,2,23,200,2,11,28,248,22,177,15,23,194,2,250,2,87,23,205, +2,23,206,2,249,22,172,15,23,200,2,23,198,1,250,2,87,23,205,2,23, +206,2,23,196,1,11,28,23,193,2,192,86,94,23,193,1,27,28,248,22,154, +15,23,196,2,27,249,22,172,15,23,198,2,23,205,2,28,28,248,22,167,15, +193,10,248,22,166,15,193,192,11,11,28,23,193,2,192,86,94,23,193,1,28, +23,203,2,11,27,248,22,181,15,23,200,2,28,249,22,165,9,23,195,2,23, +201,1,11,28,248,22,177,15,23,194,2,250,2,87,23,206,1,23,207,1,249, +22,172,15,23,201,1,23,198,1,250,2,87,205,206,195,192,86,94,23,194,1, +28,23,196,2,90,159,39,11,89,161,39,36,11,248,22,175,15,23,197,2,86, +95,23,195,1,23,194,1,27,28,23,201,2,27,248,22,181,15,23,199,2,28, +249,22,165,9,23,195,2,23,200,2,11,28,248,22,177,15,23,194,2,250,2, +87,23,204,2,23,205,2,249,22,172,15,23,200,2,23,198,1,250,2,87,23, +204,2,23,205,2,23,196,1,11,28,23,193,2,192,86,94,23,193,1,27,28, +248,22,154,15,23,196,2,27,249,22,172,15,23,198,2,23,204,2,28,28,248, +22,167,15,193,10,248,22,166,15,193,192,11,11,28,23,193,2,192,86,94,23, +193,1,28,23,202,2,11,27,248,22,181,15,23,200,2,28,249,22,165,9,23, +195,2,23,201,1,11,28,248,22,177,15,23,194,2,250,2,87,23,205,1,23, +206,1,249,22,172,15,23,201,1,23,198,1,250,2,87,204,205,195,192,28,23, +193,2,90,159,39,11,89,161,39,36,11,248,22,175,15,23,199,2,86,95,23, +195,1,23,194,1,27,28,23,198,2,251,2,88,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,154,15, +195,27,249,22,172,15,197,200,28,28,248,22,167,15,193,10,248,22,166,15,193, +192,11,11,28,192,192,28,198,11,251,2,88,198,203,201,202,194,32,91,88,163, +8,36,40,58,11,2,54,222,33,92,28,248,22,87,23,197,2,11,27,248,22, +180,15,248,22,80,23,199,2,27,249,22,172,15,23,196,1,23,197,2,28,248, +22,166,15,23,194,2,250,2,87,198,199,195,86,94,23,193,1,27,248,22,81, +23,200,1,28,248,22,87,23,194,2,11,27,248,22,180,15,248,22,80,23,196, +2,27,249,22,172,15,23,196,1,23,200,2,28,248,22,166,15,23,194,2,250, +2,87,201,202,195,86,94,23,193,1,27,248,22,81,23,197,1,28,248,22,87, +23,194,2,11,27,248,22,180,15,248,22,80,195,27,249,22,172,15,23,196,1, +202,28,248,22,166,15,193,250,2,87,204,205,195,251,2,91,204,205,206,248,22, +81,199,86,95,28,28,248,22,154,15,23,195,2,10,28,248,22,148,7,23,195, +2,28,248,22,177,15,23,195,2,10,248,22,178,15,23,195,2,11,12,250,22, +172,11,2,6,2,52,23,197,2,28,28,23,195,2,28,28,248,22,154,15,23, +196,2,10,28,248,22,148,7,23,196,2,28,248,22,177,15,23,196,2,10,248, +22,178,15,23,196,2,11,248,22,177,15,23,196,2,11,10,12,250,22,172,11, +2,6,6,45,45,40,111,114,47,99,32,35,102,32,40,97,110,100,47,99,32, +112,97,116,104,45,115,116,114,105,110,103,63,32,114,101,108,97,116,105,118,101, +45,112,97,116,104,63,41,41,23,198,2,28,28,248,22,177,15,23,195,2,90, +159,39,11,89,161,39,36,11,248,22,175,15,23,198,2,249,22,163,9,194,2, +53,11,27,249,22,170,8,247,22,169,8,5,4,80,65,84,72,27,28,23,194, +2,249,80,158,40,41,249,22,160,8,23,198,1,7,63,9,86,94,23,194,1, +9,27,28,249,22,163,9,247,22,175,8,2,47,249,22,79,248,22,163,15,5, +1,46,23,196,1,23,194,1,28,248,22,87,23,194,2,11,27,248,22,180,15, +248,22,80,23,196,2,27,249,22,172,15,23,196,1,23,201,2,28,248,22,166, +15,23,194,2,250,2,87,202,203,195,86,94,23,193,1,27,248,22,81,23,197, +1,28,248,22,87,23,194,2,11,27,248,22,180,15,248,22,80,23,196,2,27, +249,22,172,15,23,196,1,23,204,2,28,248,22,166,15,23,194,2,250,2,87, +205,206,195,86,94,23,193,1,27,248,22,81,23,197,1,28,248,22,87,23,194, +2,11,27,248,22,180,15,248,22,80,195,27,249,22,172,15,23,196,1,206,28, +248,22,166,15,193,250,2,87,23,16,23,17,195,251,2,91,23,16,23,17,23, +18,248,22,81,199,27,248,22,180,15,23,196,1,28,248,22,166,15,193,250,2, +87,198,199,195,11,250,80,159,39,40,39,196,197,11,250,80,159,39,40,39,196, +11,11,32,96,88,163,8,36,39,57,11,2,54,222,33,98,0,8,35,114,120, +35,34,92,34,34,27,249,22,145,16,23,197,2,23,198,2,28,23,193,2,86, +94,23,196,1,27,248,22,101,23,195,2,27,27,248,22,110,23,197,1,27,249, +22,145,16,23,201,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22, +101,23,195,2,27,250,2,96,23,203,2,23,204,1,248,22,110,23,199,1,28, +249,22,145,8,23,196,2,2,55,249,22,93,23,202,2,194,249,22,79,248,22, +163,15,28,249,22,163,9,247,22,175,8,2,47,250,22,157,16,2,97,23,200, +1,2,55,23,197,1,194,86,95,23,199,1,23,193,1,28,249,22,145,8,23, +196,2,2,55,249,22,93,23,200,2,9,249,22,79,248,22,163,15,28,249,22, +163,9,247,22,175,8,2,47,250,22,157,16,2,97,23,200,1,2,55,23,197, +1,9,28,249,22,145,8,23,196,2,2,55,249,22,93,197,194,86,94,23,196, +1,249,22,79,248,22,163,15,28,249,22,163,9,247,22,175,8,2,47,250,22, +157,16,2,97,23,200,1,2,55,23,197,1,194,86,94,23,193,1,28,249,22, +145,8,23,198,2,2,55,249,22,93,195,9,86,94,23,194,1,249,22,79,248, +22,163,15,28,249,22,163,9,247,22,175,8,2,47,250,22,157,16,2,97,23, +202,1,2,55,23,199,1,9,86,95,28,28,248,22,137,8,194,10,248,22,148, +7,194,12,250,22,172,11,2,7,6,21,21,40,111,114,47,99,32,98,121,116, +101,115,63,32,115,116,114,105,110,103,63,41,196,28,28,248,22,88,195,249,22, +4,22,154,15,196,11,12,250,22,172,11,2,7,6,14,14,40,108,105,115,116, +111,102,32,112,97,116,104,63,41,197,250,2,96,197,195,28,248,22,148,7,197, +248,22,162,8,197,196,28,28,248,22,0,23,195,2,249,22,50,23,196,2,36, +11,20,13,159,80,159,36,43,37,26,29,80,159,8,29,44,37,249,22,33,11, +80,159,8,31,43,37,22,188,14,10,22,189,14,10,22,190,14,10,22,129,15, 10,22,128,15,11,22,130,15,10,22,191,14,10,22,131,15,10,22,132,15,10, 22,133,15,10,22,134,15,10,22,135,15,11,22,136,15,10,22,186,14,11,247, -23,193,1,250,22,172,11,2,8,2,57,23,196,1,248,22,9,20,20,96,88, -163,36,37,8,45,16,4,8,240,128,129,0,0,8,240,31,104,0,0,39,36, -9,226,1,4,3,2,33,139,2,23,195,1,23,196,1,23,197,1,0,7,35, -114,120,34,47,43,34,28,248,22,148,7,23,195,2,27,249,22,147,16,2,141, -2,23,197,2,28,23,193,2,28,249,22,189,3,248,22,100,23,196,2,248,22, -179,3,248,22,151,7,23,199,2,249,22,7,250,22,170,7,23,200,1,36,248, -22,100,23,199,1,23,198,1,249,22,7,250,22,170,7,23,200,2,36,248,22, -100,23,199,2,249,22,79,249,22,170,7,23,201,1,248,22,102,23,200,1,23, -200,1,249,22,7,23,197,1,23,198,1,90,159,39,11,89,161,39,36,11,248, -22,175,15,23,198,1,86,94,23,195,1,28,249,22,163,9,23,195,2,2,54, -86,94,23,193,1,249,22,7,23,196,1,23,200,1,27,249,22,79,23,197,1, -23,201,1,28,248,22,148,7,23,195,2,27,249,22,147,16,2,141,2,23,197, -2,28,23,193,2,28,249,22,189,3,248,22,100,23,196,2,248,22,179,3,248, -22,151,7,23,199,2,249,22,7,250,22,170,7,23,200,1,36,248,22,100,23, -199,1,23,196,1,249,22,7,250,22,170,7,23,200,2,36,248,22,100,23,199, -2,249,22,79,249,22,170,7,23,201,1,248,22,102,23,200,1,23,198,1,249, -22,7,23,197,1,23,196,1,90,159,39,11,89,161,39,36,11,248,22,175,15, -23,198,1,86,94,23,195,1,28,249,22,163,9,23,195,2,2,54,86,94,23, -193,1,249,22,7,23,196,1,23,198,1,249,80,159,45,8,36,39,194,249,22, -79,197,199,28,249,22,129,4,23,197,2,248,22,182,8,80,159,39,8,27,38, -9,27,250,80,159,40,8,35,39,11,11,23,199,2,250,22,93,250,22,157,2, -23,199,2,23,201,2,9,250,22,157,2,23,199,1,11,9,27,248,22,178,3, -23,201,1,28,249,22,129,4,23,195,2,248,22,182,8,80,159,44,8,27,38, -9,27,250,80,159,45,8,35,39,11,11,23,197,2,250,22,93,250,22,157,2, -23,199,2,23,206,2,9,250,22,157,2,23,199,1,11,9,27,248,22,178,3, -23,199,1,28,249,22,129,4,23,195,2,248,22,182,8,80,159,49,8,27,38, -9,27,250,80,159,50,8,35,39,11,11,23,197,2,250,22,93,250,22,157,2, -23,199,2,23,211,2,9,250,22,157,2,23,199,1,11,9,249,80,159,52,8, -47,39,23,210,1,248,22,178,3,23,200,1,32,144,2,88,163,36,43,8,31, -11,65,99,108,111,111,112,222,33,153,2,32,145,2,88,163,8,36,37,47,11, -2,55,222,33,148,2,32,146,2,88,163,36,37,43,11,69,116,111,45,115,116, -114,105,110,103,222,33,147,2,28,248,22,154,15,23,194,2,248,22,158,15,23, -194,1,192,28,248,22,87,248,22,81,23,195,2,248,22,89,248,2,146,2,248, -22,136,18,23,196,1,250,22,90,248,2,146,2,248,22,136,18,23,198,2,2, -72,248,2,145,2,248,22,137,18,23,198,1,250,22,132,8,6,7,7,10,32, -126,97,32,126,97,6,1,1,32,23,196,1,249,22,132,8,6,6,6,10,32, -32,32,126,97,248,22,131,2,23,196,1,32,151,2,88,163,36,38,48,11,66, -102,105,108,116,101,114,222,33,152,2,28,248,22,87,23,195,2,9,28,248,23, -194,2,248,22,80,23,196,2,249,22,79,248,22,136,18,23,197,2,249,2,151, -2,23,197,1,248,22,137,18,23,199,1,249,2,151,2,23,195,1,248,22,137, -18,23,197,1,28,248,22,87,23,199,2,86,94,23,198,1,28,23,199,2,86, -97,23,196,1,23,195,1,23,194,1,23,193,1,28,23,197,2,249,22,172,15, -23,201,1,23,199,1,198,27,28,248,22,87,23,197,2,2,71,249,22,1,22, -171,7,248,2,145,2,23,199,2,248,23,198,1,251,22,132,8,6,70,70,99, -111,108,108,101,99,116,105,111,110,32,110,111,116,32,102,111,117,110,100,10,32, -32,99,111,108,108,101,99,116,105,111,110,58,32,126,115,10,32,32,105,110,32, -99,111,108,108,101,99,116,105,111,110,32,100,105,114,101,99,116,111,114,105,101, -115,58,126,97,126,97,28,248,22,87,23,202,1,248,2,146,2,23,201,1,250, -22,171,7,248,2,146,2,23,204,1,2,72,23,201,2,249,22,1,22,171,7, -249,22,2,32,0,88,163,8,36,37,45,11,9,222,33,149,2,27,248,22,92, -23,205,2,27,248,22,92,247,22,134,16,28,249,22,190,3,249,22,181,3,23, -198,2,23,197,2,41,23,205,2,249,22,93,247,22,134,16,248,22,89,249,22, -132,8,6,50,50,46,46,46,32,91,126,97,32,97,100,100,105,116,105,111,110, -97,108,32,108,105,110,107,101,100,32,97,110,100,32,112,97,99,107,97,103,101, -32,100,105,114,101,99,116,111,114,105,101,115,93,249,22,181,3,23,201,1,23, -200,1,28,249,22,5,22,130,2,23,201,2,250,22,132,8,6,49,49,10,32, -32,32,115,117,98,45,99,111,108,108,101,99,116,105,111,110,58,32,126,115,10, -32,32,105,110,32,112,97,114,101,110,116,32,100,105,114,101,99,116,111,114,105, -101,115,58,126,97,23,201,1,249,22,1,22,171,7,249,22,2,32,0,88,163, -8,36,37,45,11,9,222,33,150,2,249,2,151,2,22,130,2,23,208,1,86, -95,23,199,1,23,198,1,2,71,27,248,22,80,23,200,2,27,28,248,22,154, -15,23,195,2,249,22,172,15,23,196,1,23,198,2,248,22,131,2,23,195,1, -28,28,248,22,154,15,248,22,80,23,202,2,248,22,167,15,23,194,2,10,27, -250,22,1,22,172,15,23,197,1,23,201,2,28,28,248,22,87,23,199,2,10, -248,22,167,15,23,194,2,28,23,200,2,28,28,248,22,166,15,249,22,172,15, -23,196,2,23,203,2,10,27,28,248,22,154,15,23,202,2,248,22,158,15,23, -202,2,23,201,2,19,248,22,151,7,23,195,2,27,28,249,22,129,4,23,196, -4,40,28,249,22,154,7,6,4,4,46,114,107,116,249,22,170,7,23,199,2, -249,22,181,3,23,200,4,40,249,22,171,7,250,22,170,7,23,200,1,36,249, -22,181,3,23,201,4,40,6,3,3,46,115,115,86,94,23,195,1,11,11,28, -23,193,2,248,22,166,15,249,22,172,15,23,199,2,23,196,1,11,2,86,99, -23,202,1,23,201,1,23,199,1,23,198,1,23,197,1,23,196,1,28,23,200, -2,249,22,172,15,23,195,1,23,202,1,192,254,2,144,2,202,203,204,205,206, -248,22,81,23,16,28,23,16,23,16,199,28,23,200,2,249,22,172,15,23,195, -1,23,202,1,192,254,2,144,2,202,203,204,205,206,248,22,81,23,16,23,16, -254,2,144,2,201,202,203,204,205,248,22,81,23,15,23,15,90,159,38,11,89, -161,38,36,11,249,80,159,40,8,36,39,23,199,1,23,200,1,27,248,22,67, -28,248,22,154,15,195,248,22,158,15,195,194,27,247,22,138,16,27,250,22,93, -28,23,197,2,28,247,22,137,16,249,22,93,27,250,80,159,50,8,35,39,10, -11,36,249,22,93,250,22,157,2,23,198,2,23,206,2,9,250,22,157,2,23, -198,1,11,9,27,250,80,159,50,8,35,39,11,10,36,249,22,93,250,22,157, -2,23,198,2,23,206,2,9,250,22,157,2,23,198,1,11,9,9,9,28,23, -197,1,28,249,22,129,4,36,248,22,182,8,80,159,47,8,27,38,86,94,23, -198,1,9,27,250,80,159,48,8,35,39,11,11,36,250,22,93,250,22,157,2, -23,199,2,23,205,2,9,250,22,157,2,23,199,1,11,9,28,249,22,129,4, -37,248,22,182,8,80,159,51,8,27,38,9,27,250,80,159,52,8,35,39,11, -11,37,250,22,93,250,22,157,2,23,199,2,23,209,2,9,250,22,157,2,23, -199,1,11,9,28,249,22,129,4,38,248,22,182,8,80,159,55,8,27,38,9, -27,250,80,159,56,8,35,39,11,11,38,250,22,93,250,22,157,2,23,199,2, -23,213,2,9,250,22,157,2,23,199,1,11,9,249,80,159,58,8,47,39,23, -212,1,39,9,247,22,134,16,254,2,144,2,199,202,203,205,23,16,199,11,86, -95,28,28,248,22,155,15,23,194,2,10,28,248,22,154,15,23,194,2,10,28, -248,22,148,7,23,194,2,28,248,22,177,15,23,194,2,10,248,22,178,15,23, -194,2,11,12,252,22,172,11,23,200,2,2,47,36,23,198,2,23,199,2,28, -28,248,22,148,7,23,195,2,10,248,22,137,8,23,195,2,86,94,23,194,1, -12,252,22,172,11,23,200,2,2,73,37,23,198,2,23,199,1,90,159,39,11, -89,161,39,36,11,248,22,175,15,23,197,2,86,94,23,195,1,86,94,28,23, -193,2,86,95,23,198,1,23,196,1,12,250,22,175,11,23,201,1,2,74,23, -199,1,249,22,7,23,195,1,23,196,1,32,156,2,88,163,36,42,8,24,11, -2,55,222,33,157,2,28,248,22,130,4,23,199,2,86,95,23,198,1,23,194, -1,19,248,22,142,8,23,195,2,19,248,22,142,8,23,196,2,249,22,164,15, -251,22,149,8,250,22,148,8,23,204,2,36,23,203,4,2,56,249,23,205,1, -23,203,1,23,201,4,28,248,22,148,7,23,206,2,249,22,163,8,23,207,1, -8,63,23,205,1,28,248,22,155,15,23,201,2,248,22,156,15,23,201,1,86, -94,23,200,1,247,22,157,15,2,2,27,248,22,179,3,23,200,1,28,249,22, -163,9,8,46,249,22,143,8,23,198,2,23,197,2,27,248,22,178,3,23,195, -2,249,22,164,15,251,22,149,8,250,22,148,8,23,204,2,36,23,203,1,23, -202,1,249,23,205,1,23,203,1,23,201,1,28,248,22,148,7,23,206,2,249, -22,163,8,23,207,1,8,63,23,205,1,28,248,22,155,15,23,201,2,248,22, -156,15,23,201,1,86,94,23,200,1,247,22,157,15,28,248,22,130,4,23,194, -2,86,95,23,195,1,23,193,1,19,248,22,142,8,23,196,2,19,248,22,142, -8,23,197,2,249,22,164,15,251,22,149,8,250,22,148,8,23,205,2,36,23, -203,4,2,56,249,23,206,1,23,204,1,23,201,4,28,248,22,148,7,23,207, -2,249,22,163,8,23,208,1,8,63,23,206,1,28,248,22,155,15,23,202,2, -248,22,156,15,23,202,1,86,94,23,201,1,247,22,157,15,2,2,27,248,22, -179,3,23,195,1,28,249,22,163,9,8,46,249,22,143,8,23,199,2,23,197, -2,27,248,22,178,3,23,195,2,249,22,164,15,251,22,149,8,250,22,148,8, -23,205,2,36,23,203,1,23,203,1,249,23,206,1,23,204,1,23,201,1,28, -248,22,148,7,23,207,2,249,22,163,8,23,208,1,8,63,23,206,1,28,248, -22,155,15,23,202,2,248,22,156,15,23,202,1,86,94,23,201,1,247,22,157, -15,28,248,22,130,4,23,194,2,86,95,23,196,1,23,193,1,19,248,22,142, -8,23,197,2,19,248,22,142,8,23,198,2,249,22,164,15,251,22,149,8,250, -22,148,8,23,206,2,36,23,203,4,2,56,249,23,207,1,23,205,1,23,201, -4,28,248,22,148,7,23,208,2,249,22,163,8,23,209,1,8,63,23,207,1, -28,248,22,155,15,23,203,2,248,22,156,15,23,203,1,86,94,23,202,1,247, -22,157,15,2,2,27,248,22,179,3,23,195,1,28,249,22,163,9,8,46,249, -22,143,8,23,200,2,23,197,2,27,248,22,178,3,23,195,2,249,22,164,15, -251,22,149,8,250,22,148,8,23,206,2,36,23,203,1,23,204,1,249,23,207, -1,23,205,1,23,201,1,28,248,22,148,7,23,208,2,249,22,163,8,23,209, -1,8,63,23,207,1,28,248,22,155,15,23,203,2,248,22,156,15,23,203,1, -86,94,23,202,1,247,22,157,15,253,2,156,2,201,202,203,204,205,198,90,159, -38,11,89,161,38,36,11,86,95,28,28,248,22,155,15,23,199,2,10,28,248, -22,154,15,23,199,2,10,28,248,22,148,7,23,199,2,28,248,22,177,15,23, -199,2,10,248,22,178,15,23,199,2,11,12,252,22,172,11,23,200,2,2,47, -36,23,203,2,23,204,2,28,28,248,22,148,7,23,200,2,10,248,22,137,8, -23,200,2,12,252,22,172,11,23,200,2,2,73,37,23,203,2,23,204,2,90, -159,39,11,89,161,39,36,11,248,22,175,15,23,202,2,86,94,23,195,1,86, -94,28,192,12,250,22,175,11,23,201,1,2,74,23,204,2,249,22,7,194,195, -27,248,22,160,15,23,196,1,27,19,248,22,142,8,23,196,2,28,248,22,130, -4,23,194,4,86,94,23,199,1,19,248,22,142,8,23,197,2,19,248,22,142, -8,23,198,2,249,22,164,15,251,22,149,8,250,22,148,8,23,206,2,36,23, -203,4,2,56,249,23,210,1,23,205,1,23,201,4,28,248,22,148,7,23,211, -2,249,22,163,8,23,212,1,8,63,23,210,1,28,248,22,155,15,23,206,2, -248,22,156,15,23,206,1,86,94,23,205,1,247,22,157,15,2,2,27,248,22, -179,3,23,195,4,28,249,22,163,9,8,46,249,22,143,8,23,200,2,23,197, -2,27,248,22,178,3,23,195,2,249,22,164,15,251,22,149,8,250,22,148,8, -23,206,2,36,23,203,1,23,207,1,249,23,210,1,23,205,1,23,201,1,28, -248,22,148,7,23,211,2,249,22,163,8,23,212,1,8,63,23,210,1,28,248, -22,155,15,23,206,2,248,22,156,15,23,206,1,86,94,23,205,1,247,22,157, -15,28,248,22,130,4,23,194,2,86,95,23,200,1,23,193,1,19,248,22,142, -8,23,198,2,19,248,22,142,8,23,199,2,249,22,164,15,251,22,149,8,250, -22,148,8,23,207,2,36,23,203,4,2,56,249,23,211,1,23,206,1,23,201, -4,28,248,22,148,7,23,212,2,249,22,163,8,23,213,1,8,63,23,211,1, -28,248,22,155,15,23,207,2,248,22,156,15,23,207,1,86,94,23,206,1,247, -22,157,15,2,2,27,248,22,179,3,23,195,1,28,249,22,163,9,8,46,249, -22,143,8,23,201,2,23,197,2,27,248,22,178,3,23,195,2,249,22,164,15, -251,22,149,8,250,22,148,8,23,207,2,36,23,203,1,23,208,1,249,23,211, -1,23,206,1,23,201,1,28,248,22,148,7,23,212,2,249,22,163,8,23,213, -1,8,63,23,211,1,28,248,22,155,15,23,207,2,248,22,156,15,23,207,1, -86,94,23,206,1,247,22,157,15,253,2,156,2,23,203,1,23,207,1,23,208, -1,23,209,1,23,210,1,23,199,1,2,28,248,22,154,15,23,196,2,249,22, -172,15,23,197,1,23,195,1,192,32,159,2,88,163,36,40,57,11,2,55,222, -33,160,2,28,248,22,130,4,23,197,2,86,94,23,196,1,19,248,22,142,8, -23,195,2,35,248,22,142,8,23,196,2,249,22,164,15,251,22,149,8,250,22, -148,8,23,204,1,36,23,203,4,2,56,2,56,28,248,22,148,7,23,204,2, -249,22,163,8,23,205,1,8,63,23,203,1,28,248,22,155,15,23,199,2,248, -22,156,15,23,199,1,86,94,23,198,1,247,22,157,15,2,27,248,22,179,3, -23,198,1,28,249,22,163,9,8,46,249,22,143,8,23,198,2,23,197,2,35, -248,22,178,3,23,195,2,249,22,164,15,251,22,149,8,250,22,148,8,23,204, -1,36,23,203,1,2,56,2,56,28,248,22,148,7,23,204,2,249,22,163,8, -23,205,1,8,63,23,203,1,28,248,22,155,15,23,199,2,248,22,156,15,23, -199,1,86,94,23,198,1,247,22,157,15,28,248,22,130,4,23,194,2,86,94, -23,193,1,19,248,22,142,8,23,196,2,35,248,22,142,8,23,197,2,249,22, -164,15,251,22,149,8,250,22,148,8,23,205,1,36,23,203,4,2,56,2,56, -28,248,22,148,7,23,205,2,249,22,163,8,23,206,1,8,63,23,204,1,28, -248,22,155,15,23,200,2,248,22,156,15,23,200,1,86,94,23,199,1,247,22, -157,15,2,27,248,22,179,3,23,195,1,28,249,22,163,9,8,46,249,22,143, -8,23,199,2,23,197,2,35,248,22,178,3,23,195,2,249,22,164,15,251,22, -149,8,250,22,148,8,23,205,1,36,23,203,1,2,56,2,56,28,248,22,148, -7,23,205,2,249,22,163,8,23,206,1,8,63,23,204,1,28,248,22,155,15, -23,200,2,248,22,156,15,23,200,1,86,94,23,199,1,247,22,157,15,251,2, -159,2,198,199,200,196,90,159,38,11,89,161,38,36,11,86,95,28,28,248,22, -155,15,23,196,2,10,28,248,22,154,15,23,196,2,10,28,248,22,148,7,23, -196,2,28,248,22,177,15,23,196,2,10,248,22,178,15,23,196,2,11,12,252, -22,172,11,2,41,2,47,36,23,200,2,23,201,2,28,28,248,22,148,7,23, -197,2,10,248,22,137,8,23,197,2,12,252,22,172,11,2,41,2,73,37,23, -200,2,23,201,2,90,159,39,11,89,161,39,36,11,248,22,175,15,23,199,2, -86,94,23,195,1,86,94,28,192,12,250,22,175,11,2,41,2,74,23,201,2, -249,22,7,194,195,27,248,22,160,15,23,196,1,27,251,2,159,2,23,198,2, -23,201,1,23,202,1,248,22,142,8,23,199,1,28,248,22,154,15,23,196,2, -249,22,172,15,23,197,1,23,195,1,192,2,56,252,80,158,41,8,38,2,41, -2,56,32,0,88,163,8,36,38,43,11,9,222,33,162,2,198,199,32,164,2, -88,163,36,40,57,11,2,55,222,33,165,2,28,248,22,130,4,23,197,2,86, -94,23,196,1,19,248,22,142,8,23,195,2,19,248,22,142,8,23,196,2,249, -22,164,15,251,22,149,8,250,22,148,8,23,204,2,36,23,203,4,2,56,249, -22,148,8,23,203,1,23,201,4,28,248,22,148,7,23,204,2,249,22,163,8, -23,205,1,8,63,23,203,1,28,248,22,155,15,23,199,2,248,22,156,15,23, -199,1,86,94,23,198,1,247,22,157,15,2,2,27,248,22,179,3,23,198,1, -28,249,22,163,9,8,46,249,22,143,8,23,198,2,23,197,2,27,248,22,178, -3,23,195,2,249,22,164,15,251,22,149,8,250,22,148,8,23,204,2,36,23, -203,1,2,75,249,22,148,8,23,203,1,23,201,1,28,248,22,148,7,23,204, -2,249,22,163,8,23,205,1,8,63,23,203,1,28,248,22,155,15,23,199,2, -248,22,156,15,23,199,1,86,94,23,198,1,247,22,157,15,28,248,22,130,4, -23,194,2,86,94,23,193,1,19,248,22,142,8,23,196,2,19,248,22,142,8, -23,197,2,249,22,164,15,251,22,149,8,250,22,148,8,23,205,2,36,23,203, -4,2,56,249,22,148,8,23,204,1,23,201,4,28,248,22,148,7,23,205,2, -249,22,163,8,23,206,1,8,63,23,204,1,28,248,22,155,15,23,200,2,248, -22,156,15,23,200,1,86,94,23,199,1,247,22,157,15,2,2,27,248,22,179, -3,23,195,1,28,249,22,163,9,8,46,249,22,143,8,23,199,2,23,197,2, +23,194,1,250,22,172,11,2,8,2,56,23,197,1,86,94,28,28,248,22,154, +15,23,195,2,10,28,248,22,148,7,23,195,2,28,248,22,177,15,23,195,2, +10,248,22,178,15,23,195,2,11,12,250,22,172,11,23,196,2,2,52,23,197, +2,28,248,22,177,15,23,195,2,12,251,22,174,11,23,197,1,2,57,2,50, +23,198,1,86,94,28,28,248,22,154,15,23,195,2,10,28,248,22,148,7,23, +195,2,28,248,22,177,15,23,195,2,10,248,22,178,15,23,195,2,11,12,250, +22,172,11,23,196,2,2,52,23,197,2,28,248,22,177,15,23,195,2,12,251, +22,174,11,23,197,1,2,57,2,50,23,198,1,86,94,86,94,28,28,248,22, +154,15,23,195,2,10,28,248,22,148,7,23,195,2,28,248,22,177,15,23,195, +2,10,248,22,178,15,23,195,2,11,12,250,22,172,11,23,196,2,2,52,23, +197,2,28,248,22,177,15,23,195,2,86,94,23,194,1,12,251,22,174,11,23, +197,2,2,57,2,50,23,198,1,249,22,3,20,20,94,88,163,8,36,37,47, +11,9,223,2,33,102,23,195,1,23,197,1,28,28,248,22,0,23,195,2,249, +22,50,23,196,2,37,11,12,250,22,172,11,23,196,1,2,58,23,197,1,86, +94,28,28,248,22,154,15,23,194,2,10,28,248,22,148,7,23,194,2,28,248, +22,177,15,23,194,2,10,248,22,178,15,23,194,2,11,12,250,22,172,11,2, +15,2,52,23,196,2,28,248,22,177,15,23,194,2,12,251,22,174,11,2,15, +2,57,2,50,23,197,1,86,95,86,94,86,94,28,28,248,22,154,15,23,196, +2,10,28,248,22,148,7,23,196,2,28,248,22,177,15,23,196,2,10,248,22, +178,15,23,196,2,11,12,250,22,172,11,2,15,2,52,23,198,2,28,248,22, +177,15,23,196,2,12,251,22,174,11,2,15,2,57,2,50,23,199,2,249,22, +3,32,0,88,163,8,36,37,46,11,9,222,33,105,23,198,2,28,28,248,22, +0,23,195,2,249,22,50,23,196,2,37,11,12,250,22,172,11,2,15,2,58, +23,197,2,251,80,158,40,49,23,198,1,23,199,1,23,200,1,11,86,94,28, +28,248,22,154,15,23,194,2,10,28,248,22,148,7,23,194,2,28,248,22,177, +15,23,194,2,10,248,22,178,15,23,194,2,11,12,250,22,172,11,2,17,2, +52,23,196,2,28,248,22,177,15,23,194,2,12,251,22,174,11,2,17,2,57, +2,50,23,197,1,86,96,86,94,28,28,248,22,154,15,23,196,2,10,28,248, +22,148,7,23,196,2,28,248,22,177,15,23,196,2,10,248,22,178,15,23,196, +2,11,12,250,22,172,11,2,17,2,52,23,198,2,28,248,22,177,15,23,196, +2,12,251,22,174,11,2,17,2,57,2,50,23,199,2,86,94,86,94,28,28, +248,22,154,15,23,197,2,10,28,248,22,148,7,23,197,2,28,248,22,177,15, +23,197,2,10,248,22,178,15,23,197,2,11,12,250,22,172,11,2,17,2,52, +23,199,2,28,248,22,177,15,23,197,2,12,251,22,174,11,2,17,2,57,2, +50,23,200,2,249,22,3,32,0,88,163,8,36,37,46,11,9,222,33,107,23, +199,2,28,28,248,22,0,23,195,2,249,22,50,23,196,2,37,11,12,250,22, +172,11,2,17,2,58,23,197,2,251,80,158,40,49,23,198,1,23,200,1,23, +201,1,23,199,1,27,248,22,131,16,2,59,28,248,22,179,15,23,194,2,192, +27,28,248,22,177,15,23,195,2,20,13,159,80,159,38,43,37,250,80,159,41, +44,37,249,22,33,11,80,159,43,43,37,22,132,16,248,22,131,16,2,60,27, +248,22,131,16,2,61,250,80,159,42,40,39,23,196,1,23,198,2,11,11,28, +23,193,2,192,86,94,23,193,1,27,249,22,180,15,27,248,22,131,16,2,61, +250,80,159,45,40,39,23,196,1,11,11,248,22,131,16,2,60,90,159,39,11, +89,161,39,36,11,248,22,175,15,23,197,1,86,95,23,195,1,23,194,1,249, +22,180,15,23,200,1,23,195,1,20,13,159,80,159,36,43,37,26,29,80,159, +8,29,44,37,249,22,33,11,80,159,8,31,43,37,22,188,14,10,22,189,14, +10,22,190,14,10,22,129,15,10,22,128,15,11,22,130,15,10,22,191,14,10, +22,131,15,10,22,132,15,10,22,133,15,10,22,134,15,10,22,135,15,11,22, +136,15,10,22,186,14,11,247,22,143,6,27,249,22,172,15,23,197,1,6,11, +11,99,111,110,102,105,103,46,114,107,116,100,27,28,248,22,166,15,23,195,2, +249,22,135,6,23,196,1,80,159,40,8,43,39,11,28,192,192,21,17,1,0, +250,22,157,2,23,196,1,2,62,247,22,166,8,250,22,157,2,195,2,62,247, +22,166,8,28,248,22,148,7,23,195,2,27,248,22,162,15,23,196,1,28,248, +22,179,15,23,194,2,192,249,22,180,15,23,195,1,27,27,248,22,131,16,2, +63,28,248,22,179,15,23,194,2,192,28,248,22,178,15,23,194,2,249,22,180, +15,23,195,1,249,22,180,15,250,80,159,48,40,39,248,22,131,16,2,61,11, +10,248,22,131,16,2,60,250,80,159,44,40,39,248,22,131,16,2,61,23,196, +1,10,28,23,193,2,192,86,94,23,193,1,248,22,131,16,2,60,28,248,22, +137,8,23,195,2,27,248,22,163,15,23,196,1,28,248,22,179,15,23,194,2, +192,249,22,180,15,23,195,1,27,27,248,22,131,16,2,63,28,248,22,179,15, +23,194,2,192,28,248,22,178,15,23,194,2,249,22,180,15,23,195,1,249,22, +180,15,250,80,159,48,40,39,248,22,131,16,2,61,11,10,248,22,131,16,2, +60,250,80,159,44,40,39,248,22,131,16,2,61,23,196,1,10,28,23,193,2, +192,86,94,23,193,1,248,22,131,16,2,60,28,248,22,154,15,23,195,2,28, +248,22,179,15,23,195,2,193,249,22,180,15,23,196,1,27,27,248,22,131,16, +2,63,28,248,22,179,15,23,194,2,192,28,248,22,178,15,23,194,2,249,22, +180,15,23,195,1,249,22,180,15,250,80,159,47,40,39,248,22,131,16,2,61, +11,10,248,22,131,16,2,60,250,80,159,43,40,39,248,22,131,16,2,61,23, +196,1,10,28,23,193,2,192,86,94,23,193,1,248,22,131,16,2,60,193,28, +248,22,179,15,23,195,2,193,249,22,180,15,23,196,1,27,27,248,22,131,16, +2,63,28,248,22,179,15,23,194,2,192,28,248,22,178,15,23,194,2,249,22, +180,15,23,195,1,249,22,180,15,250,80,159,47,40,39,248,22,131,16,2,61, +11,10,248,22,131,16,2,60,250,80,159,43,40,39,248,22,131,16,2,61,23, +196,1,10,28,23,193,2,192,86,94,23,193,1,248,22,131,16,2,60,28,248, +22,179,15,23,195,2,193,28,248,22,178,15,23,195,2,249,22,180,15,23,196, +1,249,22,180,15,250,80,159,43,40,39,248,22,131,16,2,61,11,10,248,22, +131,16,2,60,250,80,159,39,40,39,248,22,131,16,2,61,196,10,28,248,22, +87,23,196,2,9,28,248,22,80,23,196,2,249,22,79,248,80,159,39,54,39, +248,22,136,18,23,199,2,27,248,22,137,18,23,199,1,28,248,22,87,23,194, +2,9,28,248,22,80,23,194,2,249,22,79,248,80,159,42,54,39,248,22,136, +18,23,197,2,27,248,22,137,18,23,197,1,28,248,22,87,23,194,2,9,28, +248,22,80,23,194,2,249,22,79,248,80,159,45,54,39,248,22,136,18,23,197, +2,249,80,159,46,8,44,39,23,204,1,248,22,137,18,23,198,1,249,22,93, +23,202,2,249,80,159,46,8,44,39,23,204,1,248,22,137,18,23,198,1,249, +22,93,23,199,2,27,248,22,137,18,23,197,1,28,248,22,87,23,194,2,9, +28,248,22,80,23,194,2,249,22,79,248,80,159,45,54,39,248,22,136,18,23, +197,2,249,80,159,46,8,44,39,23,204,1,248,22,137,18,23,198,1,249,22, +93,23,202,2,249,80,159,46,8,44,39,23,204,1,248,22,137,18,23,198,1, +249,22,93,23,196,2,27,248,22,137,18,23,199,1,28,248,22,87,23,194,2, +9,28,248,22,80,23,194,2,249,22,79,248,80,159,42,54,39,248,22,136,18, +23,197,2,27,248,22,137,18,23,197,1,28,248,22,87,23,194,2,9,28,248, +22,80,23,194,2,249,22,79,248,80,159,45,54,39,248,22,136,18,23,197,2, +249,80,159,46,8,44,39,23,204,1,248,22,137,18,23,198,1,249,22,93,23, +202,2,249,80,159,46,8,44,39,23,204,1,248,22,137,18,23,198,1,249,22, +93,23,199,2,27,248,22,137,18,23,197,1,28,248,22,87,23,194,2,9,28, +248,22,80,23,194,2,249,22,79,248,80,159,45,54,39,248,22,136,18,23,197, +2,249,80,159,46,8,44,39,23,204,1,248,22,137,18,23,198,1,249,22,93, +23,202,2,249,80,159,46,8,44,39,23,204,1,248,22,137,18,23,198,1,27, +250,22,157,2,23,198,1,23,199,1,11,28,192,249,80,159,39,8,44,39,198, +194,196,27,27,248,22,131,16,2,59,28,248,22,179,15,23,194,2,192,27,28, +248,22,177,15,23,195,2,20,13,159,80,159,39,43,37,250,80,159,42,44,37, +249,22,33,11,80,159,44,43,37,22,132,16,248,22,131,16,2,60,27,248,22, +131,16,2,61,250,80,159,43,40,39,23,196,1,23,198,2,11,11,28,23,193, +2,192,86,94,23,193,1,27,249,22,180,15,27,248,22,131,16,2,61,250,80, +159,46,40,39,23,196,1,11,11,248,22,131,16,2,60,90,159,39,11,89,161, +39,36,11,248,22,175,15,23,197,1,86,95,23,195,1,23,194,1,249,22,180, +15,23,200,1,23,195,1,27,248,80,159,39,52,39,23,195,1,27,248,80,159, +40,54,39,27,250,22,157,2,23,199,2,70,108,105,110,107,115,45,102,105,108, +101,11,28,23,193,2,192,86,94,23,193,1,249,22,172,15,27,250,22,157,2, +23,202,2,69,115,104,97,114,101,45,100,105,114,11,28,23,193,2,192,86,94, +23,193,1,249,22,172,15,62,117,112,6,5,5,115,104,97,114,101,2,64,249, +22,79,248,22,186,8,250,80,159,45,57,39,23,200,2,78,108,105,110,107,115, +45,115,101,97,114,99,104,45,102,105,108,101,115,248,22,89,23,200,1,250,22, +172,15,248,22,131,16,2,65,250,22,157,2,23,202,1,2,62,247,22,166,8, +2,64,248,22,162,13,23,194,1,249,22,16,80,159,38,8,30,38,28,248,22, +182,12,23,197,2,86,94,23,196,1,32,0,88,163,8,36,36,41,11,9,222, +11,20,20,94,88,163,8,36,36,43,11,9,223,3,33,120,23,196,1,32,122, +88,163,36,37,56,11,2,54,222,33,123,90,159,39,11,89,161,39,36,11,248, +22,175,15,23,197,1,86,95,23,195,1,23,194,1,28,248,22,154,15,23,194, +2,28,248,22,167,15,23,194,2,249,22,140,6,23,195,1,32,0,88,163,8, +36,36,41,11,9,222,11,90,159,39,11,89,161,39,36,11,248,22,175,15,23, +197,1,86,95,23,195,1,23,194,1,28,248,22,154,15,23,194,2,28,248,22, +167,15,23,194,2,249,22,140,6,23,195,1,32,0,88,163,8,36,36,41,11, +9,222,11,90,159,39,11,89,161,39,36,11,248,22,175,15,23,197,1,86,95, +23,195,1,23,194,1,28,248,22,154,15,23,194,2,28,248,22,167,15,23,194, +2,249,22,140,6,23,195,1,32,0,88,163,8,36,36,41,11,9,222,11,90, +159,39,11,89,161,39,36,11,248,22,175,15,23,197,1,86,95,23,195,1,23, +194,1,28,248,22,154,15,23,194,2,28,248,22,167,15,23,194,2,249,22,140, +6,23,195,1,32,0,88,163,8,36,36,41,11,9,222,11,248,2,122,23,194, +1,11,11,11,11,32,124,88,163,8,36,37,55,11,2,54,222,33,125,27,249, +22,158,6,8,128,128,23,196,2,28,248,22,143,7,23,194,2,9,249,22,79, +23,195,1,27,249,22,158,6,8,128,128,23,199,2,28,248,22,143,7,23,194, +2,9,249,22,79,23,195,1,27,249,22,158,6,8,128,128,23,202,2,28,248, +22,143,7,23,194,2,9,249,22,79,23,195,1,27,249,22,158,6,8,128,128, +23,205,2,28,248,22,143,7,23,194,2,9,249,22,79,23,195,1,248,2,124, +23,206,1,27,249,22,158,6,8,128,128,23,196,2,28,248,22,137,8,23,194, +2,28,249,22,129,4,248,22,142,8,23,196,2,8,128,128,249,22,1,22,149, +8,249,22,79,23,197,1,27,249,22,158,6,8,128,128,23,201,2,28,248,22, +143,7,23,194,2,9,249,22,79,23,195,1,27,249,22,158,6,8,128,128,23, +204,2,28,248,22,143,7,23,194,2,9,249,22,79,23,195,1,27,249,22,158, +6,8,128,128,23,207,2,28,248,22,143,7,23,194,2,9,249,22,79,23,195, +1,27,249,22,158,6,8,128,128,23,210,2,28,248,22,143,7,23,194,2,9, +249,22,79,23,195,1,248,2,124,23,211,1,192,192,248,22,128,6,23,194,1, +20,13,159,80,159,37,8,32,37,80,159,37,8,45,39,27,28,249,22,183,8, +248,22,175,8,2,66,38,90,159,39,11,89,161,39,36,11,248,22,175,15,23, +198,2,86,95,23,195,1,23,194,1,28,248,22,154,15,23,194,2,28,248,22, +167,15,23,194,2,249,22,140,6,23,195,1,32,0,88,163,8,36,36,41,11, +9,222,11,90,159,39,11,89,161,39,36,11,248,22,175,15,23,197,1,86,95, +23,195,1,23,194,1,28,248,22,154,15,23,194,2,28,248,22,167,15,23,194, +2,249,22,140,6,23,195,1,32,0,88,163,8,36,36,41,11,9,222,11,90, +159,39,11,89,161,39,36,11,248,22,175,15,23,197,1,86,95,23,195,1,23, +194,1,28,248,22,154,15,23,194,2,28,248,22,167,15,23,194,2,249,22,140, +6,23,195,1,32,0,88,163,8,36,36,41,11,9,222,11,90,159,39,11,89, +161,39,36,11,248,22,175,15,23,197,1,86,95,23,195,1,23,194,1,28,248, +22,154,15,23,194,2,28,248,22,167,15,23,194,2,249,22,140,6,23,195,1, +32,0,88,163,8,36,36,41,11,9,222,11,248,2,122,23,194,1,11,11,11, +11,11,28,248,22,166,15,23,195,2,27,28,249,22,183,8,248,22,175,8,2, +66,38,249,22,140,6,23,197,2,32,0,88,163,8,36,36,41,11,9,222,11, +11,86,94,28,23,194,2,248,22,142,6,23,195,1,86,94,23,194,1,12,249, +22,79,27,248,22,183,5,23,199,1,250,22,46,22,37,88,163,36,36,8,24, +11,9,223,3,33,126,20,20,94,88,163,36,36,43,11,9,223,3,33,127,23, +196,1,194,249,22,79,11,194,28,28,23,195,2,28,248,22,81,23,196,2,248, +22,161,9,249,22,157,14,36,248,22,137,18,23,199,2,11,11,194,86,94,23, +195,1,249,22,14,20,20,94,88,163,8,32,36,58,16,4,36,8,240,0,64, +0,0,8,129,128,36,9,224,2,3,33,128,2,23,196,1,80,159,38,8,30, +38,27,248,22,161,9,194,28,192,192,248,22,161,9,248,22,80,195,86,94,28, +248,22,139,12,23,198,2,27,247,22,131,12,28,249,22,187,11,23,195,2,2, +67,251,22,191,11,23,197,1,2,67,250,22,132,8,2,68,28,23,202,1,86, +94,23,203,1,80,159,47,8,25,38,249,22,183,8,80,159,49,8,24,38,23, +205,1,248,22,135,12,23,206,2,247,22,29,12,12,28,248,22,139,12,23,198, +2,86,94,23,197,1,248,23,194,1,247,22,137,2,196,86,95,28,248,22,139, +12,23,199,2,27,247,22,131,12,28,249,22,187,11,23,195,2,2,67,251,22, +191,11,23,197,1,2,67,250,22,132,8,2,68,28,23,203,2,80,159,48,8, +25,38,249,22,183,8,80,159,50,8,24,38,23,206,2,248,22,135,12,23,207, +2,247,22,29,12,12,28,23,193,2,28,23,195,1,86,94,23,196,1,86,94, +20,18,159,11,80,158,40,8,26,247,22,137,2,20,18,159,11,80,158,40,8, +27,23,193,1,86,94,250,22,184,8,80,159,43,8,28,38,23,199,2,247,22, +137,2,250,22,184,8,80,159,43,8,29,38,23,199,1,23,196,1,86,94,23, +195,1,12,28,248,22,139,12,23,199,2,86,94,23,198,1,248,23,195,1,247, +22,137,2,197,20,20,94,248,22,143,6,23,194,2,28,248,22,143,7,248,22, +143,6,23,195,1,12,248,22,168,11,6,30,30,101,120,112,101,99,116,101,100, +32,97,32,115,105,110,103,108,101,32,83,45,101,120,112,114,101,115,115,105,111, +110,248,22,128,6,23,194,1,28,248,22,88,23,194,2,28,28,249,22,189,3, +38,248,22,92,23,196,2,10,249,22,189,3,39,248,22,92,23,196,2,28,28, +248,22,148,7,248,22,80,23,195,2,10,28,249,22,163,9,2,69,248,22,136, +18,23,196,2,10,249,22,163,9,2,70,248,22,136,18,23,196,2,28,27,248, +22,101,194,28,248,22,154,15,23,194,2,10,28,248,22,148,7,23,194,2,28, +248,22,177,15,23,194,2,10,248,22,178,15,23,194,1,11,27,248,22,87,248, +22,103,195,28,192,192,248,22,158,16,248,22,110,195,11,11,11,11,28,248,22, +167,15,249,22,172,15,23,196,2,23,198,2,27,248,22,67,248,22,158,15,23, +198,1,250,22,155,2,23,198,2,23,196,2,249,22,79,23,199,1,250,22,157, +2,23,203,1,23,201,1,9,12,250,22,155,2,23,197,1,23,198,1,249,22, +79,23,198,1,23,201,1,28,28,248,22,87,248,22,103,23,197,2,10,249,22, +149,16,248,22,110,23,198,2,247,22,166,8,27,248,22,182,15,249,22,180,15, +248,22,101,23,200,2,23,198,1,28,249,22,163,9,248,22,80,23,199,2,2, +70,86,94,23,196,1,249,22,3,20,20,94,88,163,8,36,37,53,11,9,224, +3,2,33,136,2,23,196,1,248,22,185,15,23,196,1,28,249,22,163,9,248, +22,136,18,23,199,2,2,69,86,94,23,196,1,86,94,28,250,22,157,2,23, +197,2,11,11,12,250,22,155,2,23,197,2,11,9,249,22,161,2,23,196,2, +20,20,95,88,163,8,36,38,50,11,9,224,3,2,33,137,2,23,195,1,23, +196,1,27,248,22,67,248,22,136,18,23,199,1,250,22,155,2,23,198,2,23, +196,2,249,22,79,248,22,128,2,23,200,1,250,22,157,2,23,203,1,23,201, +1,9,12,250,22,155,2,23,196,1,23,197,1,248,22,94,23,199,1,27,28, +28,23,194,2,248,22,161,9,248,22,80,23,196,2,10,9,27,249,22,183,5, +23,198,2,66,98,105,110,97,114,121,250,22,46,22,37,88,163,8,36,36,44, +11,9,223,3,33,133,2,20,20,94,88,163,36,36,43,11,9,223,3,33,134, +2,23,196,1,86,94,28,28,248,22,88,23,194,2,249,22,4,32,0,88,163, +8,36,37,45,11,9,222,33,135,2,23,195,2,11,12,248,22,168,11,6,18, +18,105,108,108,45,102,111,114,109,101,100,32,99,111,110,116,101,110,116,27,247, +22,137,2,27,90,159,39,11,89,161,39,36,11,248,22,175,15,23,201,1,192, +86,96,249,22,3,20,20,94,88,163,8,36,37,54,11,9,224,2,3,33,138, +2,23,195,1,23,197,1,249,22,161,2,195,88,163,8,36,38,48,11,9,223, +3,33,139,2,28,23,198,1,86,94,20,18,159,11,80,158,43,8,26,193,20, +18,159,11,80,158,43,8,27,195,86,94,250,22,184,8,80,159,46,8,28,38, +23,202,2,196,250,22,184,8,80,159,46,8,29,38,23,202,1,23,199,1,193, +20,13,159,80,159,38,8,32,37,88,163,36,37,56,8,240,0,0,0,3,9, +226,2,1,0,3,33,131,2,27,28,23,194,2,80,159,39,8,25,38,249,22, +183,8,80,159,41,8,24,38,23,197,2,27,28,23,195,2,80,158,40,8,27, +249,22,183,8,80,159,42,8,29,38,23,198,2,27,249,80,159,43,8,31,39, +23,197,2,23,196,2,28,249,22,165,9,23,195,2,23,196,1,86,96,23,199, +1,23,195,1,23,193,1,28,23,196,1,80,158,41,8,26,249,22,183,8,80, +159,43,8,28,38,23,199,1,20,13,159,80,159,41,8,32,37,20,20,94,88, +163,36,37,57,16,2,36,8,128,252,9,227,5,4,3,6,0,33,132,2,23, +199,1,27,20,20,97,88,163,8,36,36,53,16,2,36,8,128,240,9,227,6, +5,4,3,1,33,140,2,23,194,1,23,196,1,23,197,1,23,198,1,28,28, +248,22,0,23,194,2,249,22,50,23,195,2,36,11,20,13,159,80,159,42,43, +37,26,29,80,159,8,35,44,37,249,22,33,11,80,159,8,37,43,37,22,188, +14,10,22,189,14,10,22,190,14,10,22,129,15,10,22,128,15,11,22,130,15, +10,22,191,14,10,22,131,15,10,22,132,15,10,22,133,15,10,22,134,15,10, +22,135,15,11,22,136,15,10,22,186,14,11,247,23,193,1,250,22,172,11,2, +8,2,56,23,196,1,248,22,9,20,20,95,88,163,36,37,8,44,16,4,8, +128,6,8,240,0,191,0,0,37,36,9,225,1,3,2,33,141,2,23,195,1, +23,196,1,0,7,35,114,120,34,47,43,34,28,248,22,148,7,23,195,2,27, +249,22,147,16,2,143,2,23,197,2,28,23,193,2,28,249,22,189,3,248,22, +100,23,196,2,248,22,179,3,248,22,151,7,23,199,2,249,22,7,250,22,170, +7,23,200,1,36,248,22,100,23,199,1,23,198,1,249,22,7,250,22,170,7, +23,200,2,36,248,22,100,23,199,2,249,22,79,249,22,170,7,23,201,1,248, +22,102,23,200,1,23,200,1,249,22,7,23,197,1,23,198,1,90,159,39,11, +89,161,39,36,11,248,22,175,15,23,198,1,86,94,23,195,1,28,249,22,163, +9,23,195,2,2,53,86,94,23,193,1,249,22,7,23,196,1,23,200,1,27, +249,22,79,23,197,1,23,201,1,28,248,22,148,7,23,195,2,27,249,22,147, +16,2,143,2,23,197,2,28,23,193,2,28,249,22,189,3,248,22,100,23,196, +2,248,22,179,3,248,22,151,7,23,199,2,249,22,7,250,22,170,7,23,200, +1,36,248,22,100,23,199,1,23,196,1,249,22,7,250,22,170,7,23,200,2, +36,248,22,100,23,199,2,249,22,79,249,22,170,7,23,201,1,248,22,102,23, +200,1,23,198,1,249,22,7,23,197,1,23,196,1,90,159,39,11,89,161,39, +36,11,248,22,175,15,23,198,1,86,94,23,195,1,28,249,22,163,9,23,195, +2,2,53,86,94,23,193,1,249,22,7,23,196,1,23,198,1,249,80,159,45, +8,35,39,194,249,22,79,197,199,28,249,22,129,4,23,197,2,248,22,182,8, +80,159,39,8,24,38,9,27,249,80,159,39,8,34,39,11,23,198,2,250,22, +93,250,22,157,2,23,199,2,23,201,2,9,250,22,157,2,23,199,1,11,9, +27,248,22,178,3,23,201,1,28,249,22,129,4,23,195,2,248,22,182,8,80, +159,44,8,24,38,9,27,249,80,159,44,8,34,39,11,23,196,2,250,22,93, +250,22,157,2,23,199,2,23,206,2,9,250,22,157,2,23,199,1,11,9,27, +248,22,178,3,23,199,1,28,249,22,129,4,23,195,2,248,22,182,8,80,159, +49,8,24,38,9,27,249,80,159,49,8,34,39,11,23,196,2,250,22,93,250, +22,157,2,23,199,2,23,211,2,9,250,22,157,2,23,199,1,11,9,249,80, +159,52,8,46,39,23,210,1,248,22,178,3,23,200,1,32,146,2,88,163,36, +43,8,31,11,65,99,108,111,111,112,222,33,155,2,32,147,2,88,163,8,36, +37,47,11,2,54,222,33,150,2,32,148,2,88,163,36,37,43,11,69,116,111, +45,115,116,114,105,110,103,222,33,149,2,28,248,22,154,15,23,194,2,248,22, +158,15,23,194,1,192,28,248,22,87,248,22,81,23,195,2,248,22,89,248,2, +148,2,248,22,136,18,23,196,1,250,22,90,248,2,148,2,248,22,136,18,23, +198,2,2,72,248,2,147,2,248,22,137,18,23,198,1,250,22,132,8,6,7, +7,10,32,126,97,32,126,97,6,1,1,32,23,196,1,249,22,132,8,6,6, +6,10,32,32,32,126,97,248,22,131,2,23,196,1,32,153,2,88,163,36,38, +48,11,66,102,105,108,116,101,114,222,33,154,2,28,248,22,87,23,195,2,9, +28,248,23,194,2,248,22,80,23,196,2,249,22,79,248,22,136,18,23,197,2, +249,2,153,2,23,197,1,248,22,137,18,23,199,1,249,2,153,2,23,195,1, +248,22,137,18,23,197,1,28,248,22,87,23,199,2,86,94,23,198,1,28,23, +199,2,86,97,23,196,1,23,195,1,23,194,1,23,193,1,28,23,197,2,249, +22,172,15,23,201,1,23,199,1,198,27,28,248,22,87,23,197,2,2,71,249, +22,1,22,171,7,248,2,147,2,23,199,2,248,23,198,1,251,22,132,8,6, +70,70,99,111,108,108,101,99,116,105,111,110,32,110,111,116,32,102,111,117,110, +100,10,32,32,99,111,108,108,101,99,116,105,111,110,58,32,126,115,10,32,32, +105,110,32,99,111,108,108,101,99,116,105,111,110,32,100,105,114,101,99,116,111, +114,105,101,115,58,126,97,126,97,28,248,22,87,23,202,1,248,2,148,2,23, +201,1,250,22,171,7,248,2,148,2,23,204,1,2,72,23,201,2,249,22,1, +22,171,7,249,22,2,32,0,88,163,8,36,37,45,11,9,222,33,151,2,27, +248,22,92,23,205,2,27,248,22,92,247,22,134,16,28,249,22,190,3,249,22, +181,3,23,198,2,23,197,2,41,23,205,2,249,22,93,247,22,134,16,248,22, +89,249,22,132,8,6,50,50,46,46,46,32,91,126,97,32,97,100,100,105,116, +105,111,110,97,108,32,108,105,110,107,101,100,32,97,110,100,32,112,97,99,107, +97,103,101,32,100,105,114,101,99,116,111,114,105,101,115,93,249,22,181,3,23, +201,1,23,200,1,28,249,22,5,22,130,2,23,201,2,250,22,132,8,6,49, +49,10,32,32,32,115,117,98,45,99,111,108,108,101,99,116,105,111,110,58,32, +126,115,10,32,32,105,110,32,112,97,114,101,110,116,32,100,105,114,101,99,116, +111,114,105,101,115,58,126,97,23,201,1,249,22,1,22,171,7,249,22,2,32, +0,88,163,8,36,37,45,11,9,222,33,152,2,249,2,153,2,22,130,2,23, +208,1,86,95,23,199,1,23,198,1,2,71,27,248,22,80,23,200,2,27,28, +248,22,154,15,23,195,2,249,22,172,15,23,196,1,23,198,2,248,22,131,2, +23,195,1,28,28,248,22,154,15,248,22,80,23,202,2,248,22,167,15,23,194, +2,10,27,250,22,1,22,172,15,23,197,1,23,201,2,28,28,248,22,87,23, +199,2,10,248,22,167,15,23,194,2,28,23,200,2,28,28,248,22,166,15,249, +22,172,15,23,196,2,23,203,2,10,27,28,248,22,154,15,23,202,2,248,22, +158,15,23,202,2,23,201,2,19,248,22,151,7,23,195,2,27,28,249,22,129, +4,23,196,4,40,28,249,22,154,7,6,4,4,46,114,107,116,249,22,170,7, +23,199,2,249,22,181,3,23,200,4,40,249,22,171,7,250,22,170,7,23,200, +1,36,249,22,181,3,23,201,4,40,6,3,3,46,115,115,86,94,23,195,1, +11,11,28,23,193,2,248,22,166,15,249,22,172,15,23,199,2,23,196,1,11, +2,86,99,23,202,1,23,201,1,23,199,1,23,198,1,23,197,1,23,196,1, +28,23,200,2,249,22,172,15,23,195,1,23,202,1,192,254,2,146,2,202,203, +204,205,206,248,22,81,23,16,28,23,16,23,16,199,28,23,200,2,249,22,172, +15,23,195,1,23,202,1,192,254,2,146,2,202,203,204,205,206,248,22,81,23, +16,23,16,254,2,146,2,201,202,203,204,205,248,22,81,23,15,23,15,90,159, +38,11,89,161,38,36,11,249,80,159,40,8,35,39,23,199,1,23,200,1,27, +248,22,67,28,248,22,154,15,195,248,22,158,15,195,194,27,247,22,138,16,27, +250,22,93,28,23,197,2,28,247,22,137,16,248,22,93,27,249,80,159,48,8, +34,39,10,36,249,22,93,250,22,157,2,23,198,2,23,205,2,9,250,22,157, +2,23,198,1,11,9,9,9,28,23,197,1,28,249,22,129,4,36,248,22,182, +8,80,159,47,8,24,38,86,94,23,198,1,9,27,249,80,159,47,8,34,39, +11,36,250,22,93,250,22,157,2,23,199,2,23,205,2,9,250,22,157,2,23, +199,1,11,9,28,249,22,129,4,37,248,22,182,8,80,159,51,8,24,38,9, +27,249,80,159,51,8,34,39,11,37,250,22,93,250,22,157,2,23,199,2,23, +209,2,9,250,22,157,2,23,199,1,11,9,28,249,22,129,4,38,248,22,182, +8,80,159,55,8,24,38,9,27,249,80,159,55,8,34,39,11,38,250,22,93, +250,22,157,2,23,199,2,23,213,2,9,250,22,157,2,23,199,1,11,9,249, +80,159,58,8,46,39,23,212,1,39,9,247,22,134,16,254,2,146,2,199,202, +203,205,23,16,199,11,86,95,28,28,248,22,155,15,23,194,2,10,28,248,22, +154,15,23,194,2,10,28,248,22,148,7,23,194,2,28,248,22,177,15,23,194, +2,10,248,22,178,15,23,194,2,11,12,252,22,172,11,23,200,2,2,46,36, +23,198,2,23,199,2,28,28,248,22,148,7,23,195,2,10,248,22,137,8,23, +195,2,86,94,23,194,1,12,252,22,172,11,23,200,2,2,73,37,23,198,2, +23,199,1,90,159,39,11,89,161,39,36,11,248,22,175,15,23,197,2,86,94, +23,195,1,86,94,28,23,193,2,86,95,23,198,1,23,196,1,12,250,22,175, +11,23,201,1,2,74,23,199,1,249,22,7,23,195,1,23,196,1,32,158,2, +88,163,36,42,8,24,11,2,54,222,33,159,2,28,248,22,130,4,23,199,2, +86,95,23,198,1,23,194,1,19,248,22,142,8,23,195,2,19,248,22,142,8, +23,196,2,249,22,164,15,251,22,149,8,250,22,148,8,23,204,2,36,23,203, +4,2,55,249,23,205,1,23,203,1,23,201,4,28,248,22,148,7,23,206,2, +249,22,163,8,23,207,1,8,63,23,205,1,28,248,22,155,15,23,201,2,248, +22,156,15,23,201,1,86,94,23,200,1,247,22,157,15,2,2,27,248,22,179, +3,23,200,1,28,249,22,163,9,8,46,249,22,143,8,23,198,2,23,197,2, 27,248,22,178,3,23,195,2,249,22,164,15,251,22,149,8,250,22,148,8,23, -205,2,36,23,203,1,2,75,249,22,148,8,23,204,1,23,201,1,28,248,22, -148,7,23,205,2,249,22,163,8,23,206,1,8,63,23,204,1,28,248,22,155, -15,23,200,2,248,22,156,15,23,200,1,86,94,23,199,1,247,22,157,15,251, -2,164,2,198,199,200,196,90,159,38,11,89,161,38,36,11,86,95,28,28,248, -22,155,15,23,196,2,10,28,248,22,154,15,23,196,2,10,28,248,22,148,7, -23,196,2,28,248,22,177,15,23,196,2,10,248,22,178,15,23,196,2,11,12, -252,22,172,11,2,41,2,47,36,23,200,2,23,201,2,28,28,248,22,148,7, -23,197,2,10,248,22,137,8,23,197,2,12,252,22,172,11,2,41,2,73,37, -23,200,2,23,201,2,90,159,39,11,89,161,39,36,11,248,22,175,15,23,199, -2,86,94,23,195,1,86,94,28,192,12,250,22,175,11,2,41,2,74,23,201, -2,249,22,7,194,195,27,248,22,160,15,23,196,1,27,251,2,164,2,23,198, -2,23,201,1,23,202,1,248,22,142,8,23,199,1,28,248,22,154,15,23,196, -2,249,22,172,15,23,197,1,23,195,1,192,252,80,158,41,8,38,2,41,2, -75,22,148,8,198,199,249,247,22,172,5,23,195,1,11,249,247,22,172,5,194, -11,28,248,22,87,23,195,2,9,27,27,248,22,80,23,197,2,28,248,22,179, -15,23,194,2,192,28,248,22,178,15,23,194,2,249,22,180,15,23,195,1,249, -22,180,15,250,80,159,45,40,39,248,22,131,16,2,64,11,10,248,22,131,16, -2,63,250,80,159,41,40,39,248,22,131,16,2,64,23,196,1,10,28,23,193, -2,249,22,79,248,22,182,15,249,22,180,15,23,198,1,247,22,132,16,27,248, -22,81,23,199,1,28,248,22,87,23,194,2,9,27,248,80,159,42,8,25,39, -248,22,80,23,196,2,28,23,193,2,249,22,79,248,22,182,15,249,22,180,15, -23,198,1,247,22,132,16,248,80,159,44,8,48,39,248,22,81,23,198,1,86, -94,23,193,1,248,80,159,42,8,48,39,248,22,81,23,196,1,86,94,23,193, -1,27,248,22,81,23,197,1,28,248,22,87,23,194,2,9,27,248,80,159,40, -8,25,39,248,22,80,23,196,2,28,23,193,2,249,22,79,248,22,182,15,249, -22,180,15,23,198,1,247,22,132,16,248,80,159,42,8,48,39,248,22,81,23, -198,1,86,94,23,193,1,248,80,159,40,8,48,39,248,22,81,23,196,1,28, -248,22,87,23,195,2,9,27,27,248,22,80,23,197,2,28,248,22,179,15,23, -194,2,192,28,248,22,178,15,23,194,2,249,22,180,15,23,195,1,249,22,180, -15,250,80,159,45,40,39,248,22,131,16,2,64,11,10,248,22,131,16,2,63, -250,80,159,41,40,39,248,22,131,16,2,64,23,196,1,10,28,23,193,2,249, -22,79,248,22,182,15,249,22,180,15,23,198,1,247,22,132,16,27,248,22,81, -23,199,1,28,248,22,87,23,194,2,9,27,248,80,159,42,8,25,39,248,22, -80,23,196,2,28,23,193,2,249,22,79,248,22,182,15,249,22,180,15,23,198, -1,247,22,132,16,248,80,159,44,8,49,39,248,22,81,23,198,1,86,94,23, -193,1,248,80,159,42,8,49,39,248,22,81,23,196,1,86,94,23,193,1,27, -248,22,81,23,197,1,28,248,22,87,23,194,2,9,27,248,80,159,40,8,25, -39,248,22,80,23,196,2,28,23,193,2,249,22,79,248,22,182,15,249,22,180, -15,23,198,1,247,22,132,16,248,80,159,42,8,49,39,248,22,81,23,198,1, -86,94,23,193,1,248,80,159,40,8,49,39,248,22,81,23,196,1,28,248,22, -87,23,195,2,9,27,27,248,22,80,23,197,2,28,248,22,179,15,23,194,2, -192,28,248,22,178,15,23,194,2,249,22,180,15,23,195,1,249,22,180,15,250, -80,159,45,40,39,248,22,131,16,2,64,11,10,248,22,131,16,2,63,250,80, -159,41,40,39,248,22,131,16,2,64,23,196,1,10,28,23,193,2,249,22,79, -248,22,182,15,249,22,180,15,23,198,1,247,22,132,16,27,248,22,81,23,199, -1,28,248,22,87,23,194,2,9,27,27,248,22,80,23,196,2,28,248,22,179, -15,23,194,2,192,28,248,22,178,15,23,194,2,249,22,180,15,23,195,1,249, -22,180,15,250,80,159,49,40,39,248,22,131,16,2,64,11,10,248,22,131,16, -2,63,250,80,159,45,40,39,248,22,131,16,2,64,23,196,1,10,28,23,193, -2,249,22,79,248,22,182,15,249,22,180,15,23,198,1,247,22,132,16,27,248, -22,81,23,198,1,28,248,22,87,23,194,2,9,27,248,80,159,46,8,25,39, -248,22,80,23,196,2,28,23,193,2,249,22,79,248,22,182,15,249,22,180,15, -23,198,1,247,22,132,16,248,80,159,48,8,50,39,248,22,81,23,198,1,86, -94,23,193,1,248,80,159,46,8,50,39,248,22,81,23,196,1,86,94,23,193, -1,27,248,22,81,23,196,1,28,248,22,87,23,194,2,9,27,248,80,159,44, -8,25,39,248,22,80,23,196,2,28,23,193,2,249,22,79,248,22,182,15,249, -22,180,15,23,198,1,247,22,132,16,248,80,159,46,8,50,39,248,22,81,23, -198,1,86,94,23,193,1,248,80,159,44,8,50,39,248,22,81,23,196,1,86, -94,23,193,1,27,248,22,81,23,197,1,28,248,22,87,23,194,2,9,27,27, -248,22,80,23,196,2,28,248,22,179,15,23,194,2,192,28,248,22,178,15,23, -194,2,249,22,180,15,23,195,1,249,22,180,15,250,80,159,47,40,39,248,22, -131,16,2,64,11,10,248,22,131,16,2,63,250,80,159,43,40,39,248,22,131, -16,2,64,23,196,1,10,28,23,193,2,249,22,79,248,22,182,15,249,22,180, -15,23,198,1,247,22,132,16,27,248,22,81,23,198,1,28,248,22,87,23,194, -2,9,27,248,80,159,44,8,25,39,248,22,80,23,196,2,28,23,193,2,249, +204,2,36,23,203,1,23,202,1,249,23,205,1,23,203,1,23,201,1,28,248, +22,148,7,23,206,2,249,22,163,8,23,207,1,8,63,23,205,1,28,248,22, +155,15,23,201,2,248,22,156,15,23,201,1,86,94,23,200,1,247,22,157,15, +28,248,22,130,4,23,194,2,86,95,23,195,1,23,193,1,19,248,22,142,8, +23,196,2,19,248,22,142,8,23,197,2,249,22,164,15,251,22,149,8,250,22, +148,8,23,205,2,36,23,203,4,2,55,249,23,206,1,23,204,1,23,201,4, +28,248,22,148,7,23,207,2,249,22,163,8,23,208,1,8,63,23,206,1,28, +248,22,155,15,23,202,2,248,22,156,15,23,202,1,86,94,23,201,1,247,22, +157,15,2,2,27,248,22,179,3,23,195,1,28,249,22,163,9,8,46,249,22, +143,8,23,199,2,23,197,2,27,248,22,178,3,23,195,2,249,22,164,15,251, +22,149,8,250,22,148,8,23,205,2,36,23,203,1,23,203,1,249,23,206,1, +23,204,1,23,201,1,28,248,22,148,7,23,207,2,249,22,163,8,23,208,1, +8,63,23,206,1,28,248,22,155,15,23,202,2,248,22,156,15,23,202,1,86, +94,23,201,1,247,22,157,15,28,248,22,130,4,23,194,2,86,95,23,196,1, +23,193,1,19,248,22,142,8,23,197,2,19,248,22,142,8,23,198,2,249,22, +164,15,251,22,149,8,250,22,148,8,23,206,2,36,23,203,4,2,55,249,23, +207,1,23,205,1,23,201,4,28,248,22,148,7,23,208,2,249,22,163,8,23, +209,1,8,63,23,207,1,28,248,22,155,15,23,203,2,248,22,156,15,23,203, +1,86,94,23,202,1,247,22,157,15,2,2,27,248,22,179,3,23,195,1,28, +249,22,163,9,8,46,249,22,143,8,23,200,2,23,197,2,27,248,22,178,3, +23,195,2,249,22,164,15,251,22,149,8,250,22,148,8,23,206,2,36,23,203, +1,23,204,1,249,23,207,1,23,205,1,23,201,1,28,248,22,148,7,23,208, +2,249,22,163,8,23,209,1,8,63,23,207,1,28,248,22,155,15,23,203,2, +248,22,156,15,23,203,1,86,94,23,202,1,247,22,157,15,253,2,158,2,201, +202,203,204,205,198,90,159,38,11,89,161,38,36,11,86,95,28,28,248,22,155, +15,23,199,2,10,28,248,22,154,15,23,199,2,10,28,248,22,148,7,23,199, +2,28,248,22,177,15,23,199,2,10,248,22,178,15,23,199,2,11,12,252,22, +172,11,23,200,2,2,46,36,23,203,2,23,204,2,28,28,248,22,148,7,23, +200,2,10,248,22,137,8,23,200,2,12,252,22,172,11,23,200,2,2,73,37, +23,203,2,23,204,2,90,159,39,11,89,161,39,36,11,248,22,175,15,23,202, +2,86,94,23,195,1,86,94,28,192,12,250,22,175,11,23,201,1,2,74,23, +204,2,249,22,7,194,195,27,248,22,160,15,23,196,1,27,19,248,22,142,8, +23,196,2,28,248,22,130,4,23,194,4,86,94,23,199,1,19,248,22,142,8, +23,197,2,19,248,22,142,8,23,198,2,249,22,164,15,251,22,149,8,250,22, +148,8,23,206,2,36,23,203,4,2,55,249,23,210,1,23,205,1,23,201,4, +28,248,22,148,7,23,211,2,249,22,163,8,23,212,1,8,63,23,210,1,28, +248,22,155,15,23,206,2,248,22,156,15,23,206,1,86,94,23,205,1,247,22, +157,15,2,2,27,248,22,179,3,23,195,4,28,249,22,163,9,8,46,249,22, +143,8,23,200,2,23,197,2,27,248,22,178,3,23,195,2,249,22,164,15,251, +22,149,8,250,22,148,8,23,206,2,36,23,203,1,23,207,1,249,23,210,1, +23,205,1,23,201,1,28,248,22,148,7,23,211,2,249,22,163,8,23,212,1, +8,63,23,210,1,28,248,22,155,15,23,206,2,248,22,156,15,23,206,1,86, +94,23,205,1,247,22,157,15,28,248,22,130,4,23,194,2,86,95,23,200,1, +23,193,1,19,248,22,142,8,23,198,2,19,248,22,142,8,23,199,2,249,22, +164,15,251,22,149,8,250,22,148,8,23,207,2,36,23,203,4,2,55,249,23, +211,1,23,206,1,23,201,4,28,248,22,148,7,23,212,2,249,22,163,8,23, +213,1,8,63,23,211,1,28,248,22,155,15,23,207,2,248,22,156,15,23,207, +1,86,94,23,206,1,247,22,157,15,2,2,27,248,22,179,3,23,195,1,28, +249,22,163,9,8,46,249,22,143,8,23,201,2,23,197,2,27,248,22,178,3, +23,195,2,249,22,164,15,251,22,149,8,250,22,148,8,23,207,2,36,23,203, +1,23,208,1,249,23,211,1,23,206,1,23,201,1,28,248,22,148,7,23,212, +2,249,22,163,8,23,213,1,8,63,23,211,1,28,248,22,155,15,23,207,2, +248,22,156,15,23,207,1,86,94,23,206,1,247,22,157,15,253,2,158,2,23, +203,1,23,207,1,23,208,1,23,209,1,23,210,1,23,199,1,2,28,248,22, +154,15,23,196,2,249,22,172,15,23,197,1,23,195,1,192,32,161,2,88,163, +36,40,57,11,2,54,222,33,162,2,28,248,22,130,4,23,197,2,86,94,23, +196,1,19,248,22,142,8,23,195,2,35,248,22,142,8,23,196,2,249,22,164, +15,251,22,149,8,250,22,148,8,23,204,1,36,23,203,4,2,55,2,55,28, +248,22,148,7,23,204,2,249,22,163,8,23,205,1,8,63,23,203,1,28,248, +22,155,15,23,199,2,248,22,156,15,23,199,1,86,94,23,198,1,247,22,157, +15,2,27,248,22,179,3,23,198,1,28,249,22,163,9,8,46,249,22,143,8, +23,198,2,23,197,2,35,248,22,178,3,23,195,2,249,22,164,15,251,22,149, +8,250,22,148,8,23,204,1,36,23,203,1,2,55,2,55,28,248,22,148,7, +23,204,2,249,22,163,8,23,205,1,8,63,23,203,1,28,248,22,155,15,23, +199,2,248,22,156,15,23,199,1,86,94,23,198,1,247,22,157,15,28,248,22, +130,4,23,194,2,86,94,23,193,1,19,248,22,142,8,23,196,2,35,248,22, +142,8,23,197,2,249,22,164,15,251,22,149,8,250,22,148,8,23,205,1,36, +23,203,4,2,55,2,55,28,248,22,148,7,23,205,2,249,22,163,8,23,206, +1,8,63,23,204,1,28,248,22,155,15,23,200,2,248,22,156,15,23,200,1, +86,94,23,199,1,247,22,157,15,2,27,248,22,179,3,23,195,1,28,249,22, +163,9,8,46,249,22,143,8,23,199,2,23,197,2,35,248,22,178,3,23,195, +2,249,22,164,15,251,22,149,8,250,22,148,8,23,205,1,36,23,203,1,2, +55,2,55,28,248,22,148,7,23,205,2,249,22,163,8,23,206,1,8,63,23, +204,1,28,248,22,155,15,23,200,2,248,22,156,15,23,200,1,86,94,23,199, +1,247,22,157,15,251,2,161,2,198,199,200,196,90,159,38,11,89,161,38,36, +11,86,95,28,28,248,22,155,15,23,196,2,10,28,248,22,154,15,23,196,2, +10,28,248,22,148,7,23,196,2,28,248,22,177,15,23,196,2,10,248,22,178, +15,23,196,2,11,12,252,22,172,11,2,40,2,46,36,23,200,2,23,201,2, +28,28,248,22,148,7,23,197,2,10,248,22,137,8,23,197,2,12,252,22,172, +11,2,40,2,73,37,23,200,2,23,201,2,90,159,39,11,89,161,39,36,11, +248,22,175,15,23,199,2,86,94,23,195,1,86,94,28,192,12,250,22,175,11, +2,40,2,74,23,201,2,249,22,7,194,195,27,248,22,160,15,23,196,1,27, +251,2,161,2,23,198,2,23,201,1,23,202,1,248,22,142,8,23,199,1,28, +248,22,154,15,23,196,2,249,22,172,15,23,197,1,23,195,1,192,2,55,252, +80,158,41,8,37,2,40,2,55,32,0,88,163,8,36,38,43,11,9,222,33, +164,2,198,199,32,166,2,88,163,36,40,57,11,2,54,222,33,167,2,28,248, +22,130,4,23,197,2,86,94,23,196,1,19,248,22,142,8,23,195,2,19,248, +22,142,8,23,196,2,249,22,164,15,251,22,149,8,250,22,148,8,23,204,2, +36,23,203,4,2,55,249,22,148,8,23,203,1,23,201,4,28,248,22,148,7, +23,204,2,249,22,163,8,23,205,1,8,63,23,203,1,28,248,22,155,15,23, +199,2,248,22,156,15,23,199,1,86,94,23,198,1,247,22,157,15,2,2,27, +248,22,179,3,23,198,1,28,249,22,163,9,8,46,249,22,143,8,23,198,2, +23,197,2,27,248,22,178,3,23,195,2,249,22,164,15,251,22,149,8,250,22, +148,8,23,204,2,36,23,203,1,2,75,249,22,148,8,23,203,1,23,201,1, +28,248,22,148,7,23,204,2,249,22,163,8,23,205,1,8,63,23,203,1,28, +248,22,155,15,23,199,2,248,22,156,15,23,199,1,86,94,23,198,1,247,22, +157,15,28,248,22,130,4,23,194,2,86,94,23,193,1,19,248,22,142,8,23, +196,2,19,248,22,142,8,23,197,2,249,22,164,15,251,22,149,8,250,22,148, +8,23,205,2,36,23,203,4,2,55,249,22,148,8,23,204,1,23,201,4,28, +248,22,148,7,23,205,2,249,22,163,8,23,206,1,8,63,23,204,1,28,248, +22,155,15,23,200,2,248,22,156,15,23,200,1,86,94,23,199,1,247,22,157, +15,2,2,27,248,22,179,3,23,195,1,28,249,22,163,9,8,46,249,22,143, +8,23,199,2,23,197,2,27,248,22,178,3,23,195,2,249,22,164,15,251,22, +149,8,250,22,148,8,23,205,2,36,23,203,1,2,75,249,22,148,8,23,204, +1,23,201,1,28,248,22,148,7,23,205,2,249,22,163,8,23,206,1,8,63, +23,204,1,28,248,22,155,15,23,200,2,248,22,156,15,23,200,1,86,94,23, +199,1,247,22,157,15,251,2,166,2,198,199,200,196,90,159,38,11,89,161,38, +36,11,86,95,28,28,248,22,155,15,23,196,2,10,28,248,22,154,15,23,196, +2,10,28,248,22,148,7,23,196,2,28,248,22,177,15,23,196,2,10,248,22, +178,15,23,196,2,11,12,252,22,172,11,2,40,2,46,36,23,200,2,23,201, +2,28,28,248,22,148,7,23,197,2,10,248,22,137,8,23,197,2,12,252,22, +172,11,2,40,2,73,37,23,200,2,23,201,2,90,159,39,11,89,161,39,36, +11,248,22,175,15,23,199,2,86,94,23,195,1,86,94,28,192,12,250,22,175, +11,2,40,2,74,23,201,2,249,22,7,194,195,27,248,22,160,15,23,196,1, +27,251,2,166,2,23,198,2,23,201,1,23,202,1,248,22,142,8,23,199,1, +28,248,22,154,15,23,196,2,249,22,172,15,23,197,1,23,195,1,192,252,80, +158,41,8,37,2,40,2,75,22,148,8,198,199,249,247,22,172,5,23,195,1, +11,249,247,22,172,5,194,11,28,248,22,87,23,195,2,9,27,27,248,22,80, +23,197,2,28,248,22,179,15,23,194,2,192,28,248,22,178,15,23,194,2,249, +22,180,15,23,195,1,249,22,180,15,250,80,159,45,40,39,248,22,131,16,2, +61,11,10,248,22,131,16,2,60,250,80,159,41,40,39,248,22,131,16,2,61, +23,196,1,10,28,23,193,2,249,22,79,248,22,182,15,249,22,180,15,23,198, +1,247,22,132,16,27,248,22,81,23,199,1,28,248,22,87,23,194,2,9,27, +248,80,159,42,56,39,248,22,80,23,196,2,28,23,193,2,249,22,79,248,22, +182,15,249,22,180,15,23,198,1,247,22,132,16,248,80,159,44,8,47,39,248, +22,81,23,198,1,86,94,23,193,1,248,80,159,42,8,47,39,248,22,81,23, +196,1,86,94,23,193,1,27,248,22,81,23,197,1,28,248,22,87,23,194,2, +9,27,248,80,159,40,56,39,248,22,80,23,196,2,28,23,193,2,249,22,79, +248,22,182,15,249,22,180,15,23,198,1,247,22,132,16,248,80,159,42,8,47, +39,248,22,81,23,198,1,86,94,23,193,1,248,80,159,40,8,47,39,248,22, +81,23,196,1,28,248,22,87,23,195,2,9,27,27,248,22,80,23,197,2,28, +248,22,179,15,23,194,2,192,28,248,22,178,15,23,194,2,249,22,180,15,23, +195,1,249,22,180,15,250,80,159,45,40,39,248,22,131,16,2,61,11,10,248, +22,131,16,2,60,250,80,159,41,40,39,248,22,131,16,2,61,23,196,1,10, +28,23,193,2,249,22,79,248,22,182,15,249,22,180,15,23,198,1,247,22,132, +16,27,248,22,81,23,199,1,28,248,22,87,23,194,2,9,27,248,80,159,42, +56,39,248,22,80,23,196,2,28,23,193,2,249,22,79,248,22,182,15,249,22, +180,15,23,198,1,247,22,132,16,248,80,159,44,8,48,39,248,22,81,23,198, +1,86,94,23,193,1,248,80,159,42,8,48,39,248,22,81,23,196,1,86,94, +23,193,1,27,248,22,81,23,197,1,28,248,22,87,23,194,2,9,27,248,80, +159,40,56,39,248,22,80,23,196,2,28,23,193,2,249,22,79,248,22,182,15, +249,22,180,15,23,198,1,247,22,132,16,248,80,159,42,8,48,39,248,22,81, +23,198,1,86,94,23,193,1,248,80,159,40,8,48,39,248,22,81,23,196,1, +28,248,22,87,23,195,2,9,27,27,248,22,80,23,197,2,28,248,22,179,15, +23,194,2,192,28,248,22,178,15,23,194,2,249,22,180,15,23,195,1,249,22, +180,15,250,80,159,45,40,39,248,22,131,16,2,61,11,10,248,22,131,16,2, +60,250,80,159,41,40,39,248,22,131,16,2,61,23,196,1,10,28,23,193,2, +249,22,79,248,22,182,15,249,22,180,15,23,198,1,247,22,132,16,27,248,22, +81,23,199,1,28,248,22,87,23,194,2,9,27,27,248,22,80,23,196,2,28, +248,22,179,15,23,194,2,192,28,248,22,178,15,23,194,2,249,22,180,15,23, +195,1,249,22,180,15,250,80,159,49,40,39,248,22,131,16,2,61,11,10,248, +22,131,16,2,60,250,80,159,45,40,39,248,22,131,16,2,61,23,196,1,10, +28,23,193,2,249,22,79,248,22,182,15,249,22,180,15,23,198,1,247,22,132, +16,27,248,22,81,23,198,1,28,248,22,87,23,194,2,9,27,248,80,159,46, +56,39,248,22,80,23,196,2,28,23,193,2,249,22,79,248,22,182,15,249,22, +180,15,23,198,1,247,22,132,16,248,80,159,48,8,49,39,248,22,81,23,198, +1,86,94,23,193,1,248,80,159,46,8,49,39,248,22,81,23,196,1,86,94, +23,193,1,27,248,22,81,23,196,1,28,248,22,87,23,194,2,9,27,248,80, +159,44,56,39,248,22,80,23,196,2,28,23,193,2,249,22,79,248,22,182,15, +249,22,180,15,23,198,1,247,22,132,16,248,80,159,46,8,49,39,248,22,81, +23,198,1,86,94,23,193,1,248,80,159,44,8,49,39,248,22,81,23,196,1, +86,94,23,193,1,27,248,22,81,23,197,1,28,248,22,87,23,194,2,9,27, +27,248,22,80,23,196,2,28,248,22,179,15,23,194,2,192,28,248,22,178,15, +23,194,2,249,22,180,15,23,195,1,249,22,180,15,250,80,159,47,40,39,248, +22,131,16,2,61,11,10,248,22,131,16,2,60,250,80,159,43,40,39,248,22, +131,16,2,61,23,196,1,10,28,23,193,2,249,22,79,248,22,182,15,249,22, +180,15,23,198,1,247,22,132,16,27,248,22,81,23,198,1,28,248,22,87,23, +194,2,9,27,248,80,159,44,56,39,248,22,80,23,196,2,28,23,193,2,249, 22,79,248,22,182,15,249,22,180,15,23,198,1,247,22,132,16,248,80,159,46, -8,50,39,248,22,81,23,198,1,86,94,23,193,1,248,80,159,44,8,50,39, +8,49,39,248,22,81,23,198,1,86,94,23,193,1,248,80,159,44,8,49,39, 248,22,81,23,196,1,86,94,23,193,1,27,248,22,81,23,196,1,28,248,22, -87,23,194,2,9,27,248,80,159,42,8,25,39,248,22,80,23,196,2,28,23, -193,2,249,22,79,248,22,182,15,249,22,180,15,23,198,1,247,22,132,16,248, -80,159,44,8,50,39,248,22,81,23,198,1,86,94,23,193,1,248,80,159,42, -8,50,39,248,22,81,23,196,1,27,247,22,137,16,249,80,159,39,41,38,28, -23,195,2,27,249,22,170,8,247,22,169,8,2,76,28,192,249,22,160,8,194, -7,63,2,71,2,71,250,80,159,42,8,26,39,248,80,159,43,58,39,247,80, -159,43,57,39,2,77,27,28,23,199,1,250,22,172,15,248,22,131,16,2,60, -247,22,166,8,2,78,11,27,248,80,159,45,8,48,39,250,22,93,9,248,22, -89,248,22,131,16,2,65,9,28,193,249,22,79,195,194,192,27,247,22,137,16, -249,80,159,39,41,38,28,23,195,2,27,249,22,170,8,247,22,169,8,2,76, -28,192,249,22,160,8,194,7,63,2,71,2,71,250,80,159,42,8,26,39,248, -80,159,43,58,39,247,80,159,43,57,39,2,77,27,28,23,199,1,250,22,172, -15,248,22,131,16,2,60,247,22,166,8,2,78,11,27,248,80,159,45,8,49, -39,250,22,93,23,206,1,248,22,89,248,22,131,16,2,65,9,28,193,249,22, -79,195,194,192,27,247,22,137,16,249,80,159,39,41,38,28,23,195,2,27,249, -22,170,8,247,22,169,8,2,76,28,192,249,22,160,8,194,7,63,2,71,2, -71,250,80,159,42,8,26,39,248,80,159,43,58,39,27,248,22,131,16,2,62, -28,248,22,179,15,23,194,2,192,27,28,248,22,177,15,23,195,2,20,13,159, -80,159,45,43,37,250,80,159,48,44,37,249,22,33,11,80,159,50,43,37,22, -132,16,248,22,131,16,2,63,27,248,22,131,16,2,64,250,80,159,49,40,39, -23,196,1,23,198,2,11,11,28,23,193,2,192,86,94,23,193,1,27,249,22, -180,15,27,248,22,131,16,2,64,250,80,159,52,40,39,23,196,1,11,11,248, -22,131,16,2,63,90,159,39,11,89,161,39,36,11,248,22,175,15,23,197,1, -86,95,23,195,1,23,194,1,249,22,180,15,23,200,1,23,195,1,2,77,27, -28,23,199,1,250,22,172,15,248,22,131,16,2,60,247,22,166,8,2,78,11, -27,27,250,22,93,23,206,1,248,22,89,248,22,131,16,2,65,23,207,1,28, -248,22,87,23,194,2,9,27,27,248,22,80,23,196,2,28,248,22,179,15,23, -194,2,192,28,248,22,178,15,23,194,2,249,22,180,15,23,195,1,249,22,180, -15,250,80,159,54,40,39,248,22,131,16,2,64,11,10,248,22,131,16,2,63, -250,80,159,50,40,39,248,22,131,16,2,64,23,196,1,10,28,23,193,2,249, -22,79,248,22,182,15,249,22,180,15,23,198,1,247,22,132,16,27,248,22,81, -23,198,1,28,248,22,87,23,194,2,9,27,248,80,159,51,8,25,39,248,22, -80,23,196,2,28,23,193,2,249,22,79,248,22,182,15,249,22,180,15,23,198, -1,247,22,132,16,248,80,159,53,8,50,39,248,22,81,23,198,1,86,94,23, -193,1,248,80,159,51,8,50,39,248,22,81,23,196,1,86,94,23,193,1,27, -248,22,81,23,196,1,28,248,22,87,23,194,2,9,27,248,80,159,49,8,25, -39,248,22,80,23,196,2,28,23,193,2,249,22,79,248,22,182,15,249,22,180, -15,23,198,1,247,22,132,16,248,80,159,51,8,50,39,248,22,81,23,198,1, -86,94,23,193,1,248,80,159,49,8,50,39,248,22,81,23,196,1,28,193,249, -22,79,195,194,192,27,20,13,159,80,159,37,43,37,26,9,80,159,46,44,37, -249,22,33,11,80,159,48,43,37,22,128,15,10,22,135,15,10,22,136,15,10, -22,137,15,10,248,22,143,6,23,196,2,28,248,22,143,7,23,194,2,12,86, -94,248,22,171,9,23,194,1,27,20,13,159,80,159,38,43,37,26,9,80,159, -47,44,37,249,22,33,11,80,159,49,43,37,22,128,15,10,22,135,15,10,22, -136,15,10,22,137,15,10,248,22,143,6,23,197,2,28,248,22,143,7,23,194, -2,12,86,94,248,22,171,9,23,194,1,27,20,13,159,80,159,39,43,37,26, -9,80,159,48,44,37,249,22,33,11,80,159,50,43,37,22,128,15,10,22,135, -15,10,22,136,15,10,22,137,15,10,248,22,143,6,23,198,2,28,248,22,143, -7,23,194,2,12,86,94,248,22,171,9,23,194,1,248,80,159,40,8,51,39, -197,86,94,249,22,134,7,247,22,168,5,23,196,2,248,22,158,6,249,22,133, -4,36,249,22,181,3,23,198,1,23,199,1,27,28,23,197,2,86,95,23,196, -1,23,195,1,23,197,1,86,94,23,197,1,27,248,22,131,16,2,64,27,250, -80,159,42,40,39,23,197,1,11,11,27,248,22,136,4,23,199,1,27,28,23, -194,2,23,194,1,86,94,23,194,1,36,27,248,22,136,4,23,202,1,27,28, -23,194,2,23,194,1,86,94,23,194,1,36,249,22,135,6,23,199,1,20,20, -95,88,163,8,36,36,48,11,9,224,4,2,33,177,2,23,195,1,23,197,1, -27,248,22,184,5,23,195,1,248,80,159,39,8,51,39,193,159,36,20,114,159, -36,16,1,11,16,0,20,26,145,9,2,1,2,1,29,11,11,11,11,9,9, -11,11,11,10,43,80,158,36,36,20,114,159,44,16,44,2,2,2,3,2,4, -2,5,2,6,2,7,2,8,30,2,11,1,20,112,97,114,97,109,101,116,101, -114,105,122,97,116,105,111,110,45,107,101,121,11,6,30,2,11,1,23,101,120, -116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110, -11,3,2,12,2,13,2,14,2,15,2,16,2,17,2,18,2,19,2,20,2, -21,2,22,2,23,2,24,2,25,2,26,2,27,2,28,2,29,2,30,30,2, -31,76,102,105,110,100,45,108,105,110,107,115,45,112,97,116,104,33,11,4,2, -32,2,33,2,34,2,35,30,2,31,1,21,101,120,99,101,112,116,105,111,110, -45,104,97,110,100,108,101,114,45,107,101,121,11,2,2,36,2,37,2,38,2, -39,2,40,2,41,2,42,2,43,2,44,2,45,16,0,37,39,36,16,0,36, -16,26,2,13,2,14,2,12,2,29,2,3,2,39,2,26,2,27,2,28,2, -35,2,24,2,25,2,37,2,32,2,30,2,33,2,36,2,38,2,40,2,22, -2,21,2,23,2,34,2,19,2,18,2,20,8,26,11,11,11,16,14,2,8, -2,17,2,15,2,45,2,16,2,6,2,44,2,43,2,4,2,42,2,7,2, -41,2,2,2,5,16,14,11,11,11,11,11,11,11,11,11,11,11,11,11,11, -16,14,2,8,2,17,2,15,2,45,2,16,2,6,2,44,2,43,2,4,2, -42,2,7,2,41,2,2,2,5,50,50,37,12,11,11,16,0,16,0,16,0, -36,36,11,12,11,11,16,0,16,0,16,0,36,36,16,48,20,15,16,2,32, -0,88,163,36,37,45,11,2,2,222,33,79,80,159,36,36,37,20,15,16,2, -249,22,150,7,7,92,7,92,80,159,36,37,37,20,15,16,2,88,163,36,37, -54,38,2,4,223,0,33,84,80,159,36,38,37,20,15,16,2,88,163,36,38, -58,38,2,5,223,0,33,86,80,159,36,39,37,20,15,16,2,20,25,96,2, -6,88,163,8,36,39,8,25,8,32,9,223,0,33,93,88,163,36,38,47,52, -9,223,0,33,94,88,163,36,37,46,52,9,223,0,33,95,80,159,36,40,37, -20,15,16,2,27,248,22,141,16,248,22,162,8,27,28,249,22,163,9,247,22, -175,8,2,48,6,1,1,59,6,1,1,58,250,22,132,8,6,14,14,40,91, -94,126,97,93,42,41,126,97,40,46,42,41,23,196,2,23,196,1,88,163,8, -36,38,48,11,2,7,223,0,33,99,80,159,36,41,37,20,15,16,2,88,163, -36,37,8,38,8,128,6,2,8,223,0,33,100,80,159,36,42,37,20,15,16, -2,32,0,88,163,8,36,38,47,11,2,12,222,33,101,80,159,36,45,37,20, -15,16,2,32,0,88,163,8,36,39,48,11,2,13,222,33,103,80,159,36,46, -37,20,15,16,2,32,0,88,163,8,36,38,46,11,2,14,222,33,104,80,159, -36,47,37,20,15,16,2,88,163,45,39,49,8,128,128,2,15,223,0,33,106, -80,159,36,48,37,20,15,16,2,88,163,45,40,50,8,128,128,2,17,223,0, -33,108,80,159,36,50,37,20,15,16,2,250,22,172,15,248,22,131,16,2,60, -247,22,166,8,2,61,80,159,36,51,37,20,15,16,2,247,22,137,2,80,158, -36,52,20,15,16,2,11,80,158,36,53,20,15,16,2,249,22,172,15,248,22, -131,16,2,60,2,61,80,159,36,54,37,20,15,16,2,247,22,137,2,80,158, -36,55,20,15,16,2,11,80,158,36,56,20,15,16,2,88,163,36,36,51,8, -144,6,2,24,223,0,33,109,80,159,36,57,37,20,15,16,2,88,163,8,32, -36,8,37,8,128,6,9,223,0,33,110,80,159,36,8,44,39,20,15,16,2, -88,163,8,36,37,47,16,4,36,36,8,128,64,36,2,25,223,0,33,111,80, -159,36,58,37,20,15,16,2,88,163,36,37,56,52,2,26,223,0,33,112,80, -159,36,59,37,20,15,16,2,88,163,36,37,55,52,2,27,223,0,33,113,80, -159,36,8,24,37,20,15,16,2,88,163,36,37,51,52,2,28,223,0,33,114, -80,159,36,8,25,37,20,15,16,2,88,163,8,36,38,55,16,4,36,8,128, -2,8,128,128,36,2,55,223,0,33,115,80,159,36,8,45,39,20,15,16,2, -88,163,8,36,39,49,16,4,36,36,8,128,128,36,2,29,223,0,33,116,80, -159,36,8,26,37,20,15,16,2,248,80,159,37,8,28,37,88,163,8,36,36, -53,8,240,144,1,192,4,9,223,1,33,117,80,159,36,8,27,37,20,15,16, -2,249,22,179,8,248,22,182,8,80,159,39,8,27,38,247,22,137,2,80,159, -36,8,29,37,20,15,16,2,249,22,179,8,248,22,182,8,80,159,39,8,27, -38,11,80,159,36,8,30,37,20,15,16,2,248,22,18,65,115,116,97,109,112, -80,159,36,8,31,37,20,15,16,2,88,163,36,37,46,16,2,36,8,240,0, -128,0,0,9,223,0,33,119,80,159,36,8,46,39,20,15,16,2,88,163,36, -38,48,16,4,36,8,240,0,128,0,0,8,240,2,64,0,0,36,2,35,223, -0,33,127,80,159,36,8,32,37,20,15,16,2,32,0,88,163,8,36,37,45, -11,2,36,222,33,128,2,80,159,36,8,34,37,20,15,16,2,88,163,36,39, -46,16,4,8,240,128,129,0,0,8,240,31,104,0,0,39,36,2,37,223,0, -33,140,2,80,159,36,8,35,37,20,15,16,2,88,163,36,38,56,16,4,36, -36,52,36,2,38,223,0,33,142,2,80,159,36,8,36,37,20,15,16,2,88, -163,8,36,38,8,25,16,4,36,8,128,32,8,240,8,128,0,0,36,2,55, -223,0,33,143,2,80,159,36,8,47,39,20,15,16,2,88,163,36,40,8,33, -16,4,36,8,128,32,8,240,24,128,0,0,36,2,16,223,0,33,154,2,80, -159,36,49,37,20,15,16,2,32,0,88,163,36,39,50,11,2,39,222,33,155, -2,80,159,36,8,37,37,20,15,16,2,32,0,88,163,36,41,8,27,11,2, -40,222,33,158,2,80,159,36,8,38,37,20,15,16,2,20,27,158,32,0,88, -163,36,38,52,11,2,41,222,33,161,2,88,163,36,38,49,16,4,36,36,8, -64,36,2,41,223,0,33,163,2,80,159,36,8,39,37,20,15,16,2,20,27, -158,32,0,88,163,36,38,52,11,2,42,222,33,166,2,88,163,36,38,49,16, -4,36,36,8,64,36,2,42,223,0,33,167,2,80,159,36,8,40,37,20,15, -16,2,20,27,158,32,0,88,163,36,37,44,11,2,43,222,33,168,2,32,0, -88,163,36,37,44,11,2,43,222,33,169,2,80,159,36,8,41,37,20,15,16, -2,88,163,8,36,37,53,16,4,52,8,128,8,36,37,2,55,223,0,33,170, -2,80,159,36,8,48,39,20,15,16,2,88,163,8,36,37,53,16,4,52,8, -128,8,36,38,2,55,223,0,33,171,2,80,159,36,8,49,39,20,15,16,2, -88,163,8,36,37,57,16,4,52,8,128,8,36,40,2,55,223,0,33,172,2, -80,159,36,8,50,39,20,15,16,2,20,25,96,2,44,88,163,36,36,56,16, -4,8,32,8,160,17,36,37,9,223,0,33,173,2,88,163,36,37,57,16,4, -8,32,8,160,17,36,38,9,223,0,33,174,2,88,163,36,38,8,27,16,4, -8,176,6,8,128,25,36,40,9,223,0,33,175,2,80,159,36,8,42,37,20, -15,16,2,88,163,8,36,37,57,16,4,8,128,6,36,36,44,2,55,223,0, -33,176,2,80,159,36,8,51,39,20,15,16,2,88,163,8,36,39,54,16,4, -52,36,36,44,2,45,223,0,33,178,2,80,159,36,8,43,37,95,29,94,2, -9,68,35,37,107,101,114,110,101,108,11,29,94,2,9,69,35,37,109,105,110, -45,115,116,120,11,2,31,9,9,9,36,0}; - EVAL_ONE_SIZED_STR((char *)expr, 18491); +87,23,194,2,9,27,248,80,159,42,56,39,248,22,80,23,196,2,28,23,193, +2,249,22,79,248,22,182,15,249,22,180,15,23,198,1,247,22,132,16,248,80, +159,44,8,49,39,248,22,81,23,198,1,86,94,23,193,1,248,80,159,42,8, +49,39,248,22,81,23,196,1,27,247,22,137,16,27,248,80,159,39,52,39,247, +80,159,39,51,39,249,80,159,40,41,38,28,23,196,2,27,249,22,170,8,247, +22,169,8,2,76,28,192,249,22,160,8,194,7,63,2,71,2,71,250,80,159, +43,57,39,23,198,2,2,77,27,28,23,200,1,250,22,172,15,248,22,131,16, +2,65,250,22,157,2,23,205,1,2,62,247,22,166,8,2,78,86,94,23,199, +1,11,27,248,80,159,46,8,47,39,250,22,93,9,248,22,89,248,22,131,16, +2,63,9,28,193,249,22,79,195,194,192,27,247,22,137,16,27,248,80,159,39, +52,39,247,80,159,39,51,39,249,80,159,40,41,38,28,23,196,2,27,249,22, +170,8,247,22,169,8,2,76,28,192,249,22,160,8,194,7,63,2,71,2,71, +250,80,159,43,57,39,23,198,2,2,77,27,28,23,200,1,250,22,172,15,248, +22,131,16,2,65,250,22,157,2,23,205,1,2,62,247,22,166,8,2,78,86, +94,23,199,1,11,27,248,80,159,46,8,48,39,250,22,93,23,207,1,248,22, +89,248,22,131,16,2,63,9,28,193,249,22,79,195,194,192,27,247,22,137,16, +27,248,80,159,39,52,39,27,248,22,131,16,2,59,28,248,22,179,15,23,194, +2,192,27,28,248,22,177,15,23,195,2,20,13,159,80,159,41,43,37,250,80, +159,44,44,37,249,22,33,11,80,159,46,43,37,22,132,16,248,22,131,16,2, +60,27,248,22,131,16,2,61,250,80,159,45,40,39,23,196,1,23,198,2,11, +11,28,23,193,2,192,86,94,23,193,1,27,249,22,180,15,27,248,22,131,16, +2,61,250,80,159,48,40,39,23,196,1,11,11,248,22,131,16,2,60,90,159, +39,11,89,161,39,36,11,248,22,175,15,23,197,1,86,95,23,195,1,23,194, +1,249,22,180,15,23,200,1,23,195,1,249,80,159,40,41,38,28,23,196,2, +27,249,22,170,8,247,22,169,8,2,76,28,192,249,22,160,8,194,7,63,2, +71,2,71,250,80,159,43,57,39,23,198,2,2,77,27,28,23,200,1,250,22, +172,15,248,22,131,16,2,65,250,22,157,2,23,205,1,2,62,247,22,166,8, +2,78,86,94,23,199,1,11,27,27,250,22,93,23,207,1,248,22,89,248,22, +131,16,2,63,23,208,1,28,248,22,87,23,194,2,9,27,27,248,22,80,23, +196,2,28,248,22,179,15,23,194,2,192,28,248,22,178,15,23,194,2,249,22, +180,15,23,195,1,249,22,180,15,250,80,159,55,40,39,248,22,131,16,2,61, +11,10,248,22,131,16,2,60,250,80,159,51,40,39,248,22,131,16,2,61,23, +196,1,10,28,23,193,2,249,22,79,248,22,182,15,249,22,180,15,23,198,1, +247,22,132,16,27,248,22,81,23,198,1,28,248,22,87,23,194,2,9,27,248, +80,159,52,56,39,248,22,80,23,196,2,28,23,193,2,249,22,79,248,22,182, +15,249,22,180,15,23,198,1,247,22,132,16,248,80,159,54,8,49,39,248,22, +81,23,198,1,86,94,23,193,1,248,80,159,52,8,49,39,248,22,81,23,196, +1,86,94,23,193,1,27,248,22,81,23,196,1,28,248,22,87,23,194,2,9, +27,248,80,159,50,56,39,248,22,80,23,196,2,28,23,193,2,249,22,79,248, +22,182,15,249,22,180,15,23,198,1,247,22,132,16,248,80,159,52,8,49,39, +248,22,81,23,198,1,86,94,23,193,1,248,80,159,50,8,49,39,248,22,81, +23,196,1,28,193,249,22,79,195,194,192,27,20,13,159,80,159,37,43,37,26, +9,80,159,46,44,37,249,22,33,11,80,159,48,43,37,22,128,15,10,22,135, +15,10,22,136,15,10,22,137,15,10,248,22,143,6,23,196,2,28,248,22,143, +7,23,194,2,12,86,94,248,22,171,9,23,194,1,27,20,13,159,80,159,38, +43,37,26,9,80,159,47,44,37,249,22,33,11,80,159,49,43,37,22,128,15, +10,22,135,15,10,22,136,15,10,22,137,15,10,248,22,143,6,23,197,2,28, +248,22,143,7,23,194,2,12,86,94,248,22,171,9,23,194,1,27,20,13,159, +80,159,39,43,37,26,9,80,159,48,44,37,249,22,33,11,80,159,50,43,37, +22,128,15,10,22,135,15,10,22,136,15,10,22,137,15,10,248,22,143,6,23, +198,2,28,248,22,143,7,23,194,2,12,86,94,248,22,171,9,23,194,1,248, +80,159,40,8,50,39,197,86,94,249,22,134,7,247,22,168,5,23,196,2,248, +22,158,6,249,22,133,4,36,249,22,181,3,23,198,1,23,199,1,27,28,23, +197,2,86,95,23,196,1,23,195,1,23,197,1,86,94,23,197,1,27,248,22, +131,16,2,61,27,250,80,159,42,40,39,23,197,1,11,11,27,248,22,136,4, +23,199,1,27,28,23,194,2,23,194,1,86,94,23,194,1,36,27,248,22,136, +4,23,202,1,27,28,23,194,2,23,194,1,86,94,23,194,1,36,249,22,135, +6,23,199,1,20,20,95,88,163,8,36,36,48,11,9,224,4,2,33,179,2, +23,195,1,23,197,1,27,248,22,184,5,23,195,1,248,80,159,39,8,50,39, +193,159,36,20,114,159,36,16,1,11,16,0,20,26,145,9,2,1,2,1,29, +11,11,11,11,9,9,11,11,11,10,43,80,158,36,36,20,114,159,44,16,43, +2,2,2,3,2,4,2,5,2,6,2,7,2,8,30,2,11,1,20,112,97, +114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,11,6,30, +2,11,1,23,101,120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105, +122,97,116,105,111,110,11,3,2,12,2,13,2,14,2,15,2,16,2,17,2, +18,2,19,2,20,2,21,2,22,2,23,2,24,2,25,30,2,26,76,102,105, +110,100,45,108,105,110,107,115,45,112,97,116,104,33,11,4,2,27,2,28,2, +29,2,30,2,31,2,32,2,33,2,34,30,2,26,1,21,101,120,99,101,112, +116,105,111,110,45,104,97,110,100,108,101,114,45,107,101,121,11,2,2,35,2, +36,2,37,2,38,2,39,2,40,2,41,2,42,2,43,2,44,16,0,37,39, +36,16,0,36,16,25,2,13,2,14,2,12,2,24,2,25,2,3,2,38,2, +21,2,22,2,23,2,34,2,18,2,19,2,20,2,36,2,31,2,27,2,32, +2,35,2,37,2,39,2,33,2,29,2,28,2,30,8,25,11,11,11,16,14, +2,8,2,17,2,15,2,44,2,16,2,6,2,43,2,42,2,4,2,41,2, +7,2,40,2,2,2,5,16,14,11,11,11,11,11,11,11,11,11,11,11,11, +11,11,16,14,2,8,2,17,2,15,2,44,2,16,2,6,2,43,2,42,2, +4,2,41,2,7,2,40,2,2,2,5,50,50,37,12,11,11,16,0,16,0, +16,0,36,36,11,12,11,11,16,0,16,0,16,0,36,36,16,47,20,15,16, +2,32,0,88,163,36,37,45,11,2,2,222,33,79,80,159,36,36,37,20,15, +16,2,249,22,150,7,7,92,7,92,80,159,36,37,37,20,15,16,2,88,163, +36,37,54,38,2,4,223,0,33,84,80,159,36,38,37,20,15,16,2,88,163, +36,38,58,38,2,5,223,0,33,86,80,159,36,39,37,20,15,16,2,20,25, +96,2,6,88,163,8,36,39,8,25,8,32,9,223,0,33,93,88,163,36,38, +47,52,9,223,0,33,94,88,163,36,37,46,52,9,223,0,33,95,80,159,36, +40,37,20,15,16,2,27,248,22,141,16,248,22,162,8,27,28,249,22,163,9, +247,22,175,8,2,47,6,1,1,59,6,1,1,58,250,22,132,8,6,14,14, +40,91,94,126,97,93,42,41,126,97,40,46,42,41,23,196,2,23,196,1,88, +163,8,36,38,48,11,2,7,223,0,33,99,80,159,36,41,37,20,15,16,2, +88,163,36,37,8,38,8,128,6,2,8,223,0,33,100,80,159,36,42,37,20, +15,16,2,32,0,88,163,8,36,38,47,11,2,12,222,33,101,80,159,36,45, +37,20,15,16,2,32,0,88,163,8,36,39,48,11,2,13,222,33,103,80,159, +36,46,37,20,15,16,2,32,0,88,163,8,36,38,46,11,2,14,222,33,104, +80,159,36,47,37,20,15,16,2,88,163,45,39,49,8,128,128,2,15,223,0, +33,106,80,159,36,48,37,20,15,16,2,88,163,45,40,50,8,128,128,2,17, +223,0,33,108,80,159,36,50,37,20,15,16,2,88,163,36,36,51,8,144,6, +2,18,223,0,33,109,80,159,36,51,37,20,15,16,2,88,163,8,32,36,8, +37,8,128,6,9,223,0,33,110,80,159,36,8,43,39,20,15,16,2,88,163, +8,36,37,47,16,4,36,36,8,128,32,36,2,19,223,0,33,111,80,159,36, +52,37,20,15,16,2,20,27,158,32,0,88,163,36,37,45,11,2,20,222,33, +112,32,0,88,163,36,37,45,11,2,20,222,33,113,80,159,36,53,37,20,15, +16,2,88,163,36,37,56,52,2,21,223,0,33,114,80,159,36,54,37,20,15, +16,2,88,163,36,37,55,52,2,22,223,0,33,115,80,159,36,55,37,20,15, +16,2,88,163,36,37,51,52,2,23,223,0,33,116,80,159,36,56,37,20,15, +16,2,88,163,8,36,38,55,16,4,36,40,8,128,64,36,2,54,223,0,33, +117,80,159,36,8,44,39,20,15,16,2,88,163,8,36,39,49,16,4,36,36, +8,128,64,36,2,24,223,0,33,118,80,159,36,57,37,20,15,16,2,248,80, +159,37,59,37,88,163,8,36,36,53,8,240,144,1,37,0,9,223,1,33,119, +80,159,36,58,37,20,15,16,2,248,22,80,80,159,37,58,38,80,159,36,8, +24,37,20,15,16,2,248,22,81,80,159,37,58,38,80,159,36,8,25,37,20, +15,16,2,247,22,137,2,80,158,36,8,26,20,15,16,2,11,80,158,36,8, +27,20,15,16,2,249,22,179,8,248,22,182,8,80,159,39,8,24,38,247,22, +137,2,80,159,36,8,28,37,20,15,16,2,249,22,179,8,248,22,182,8,80, +159,39,8,24,38,11,80,159,36,8,29,37,20,15,16,2,248,22,18,65,115, +116,97,109,112,80,159,36,8,30,37,20,15,16,2,88,163,36,37,46,16,2, +36,8,240,0,64,0,0,9,223,0,33,121,80,159,36,8,45,39,20,15,16, +2,88,163,36,38,48,16,4,36,8,240,0,64,0,0,8,129,128,36,2,34, +223,0,33,129,2,80,159,36,8,31,37,20,15,16,2,32,0,88,163,8,36, +37,45,11,2,35,222,33,130,2,80,159,36,8,33,37,20,15,16,2,88,163, +36,38,45,16,4,8,128,6,8,240,0,191,0,0,37,36,2,36,223,0,33, +142,2,80,159,36,8,34,37,20,15,16,2,88,163,36,38,56,16,4,36,36, +44,36,2,37,223,0,33,144,2,80,159,36,8,35,37,20,15,16,2,88,163, +8,36,38,8,25,16,4,36,8,128,4,8,240,4,64,0,0,36,2,54,223, +0,33,145,2,80,159,36,8,46,39,20,15,16,2,88,163,36,40,8,33,16, +4,36,8,128,4,8,240,12,64,0,0,36,2,16,223,0,33,156,2,80,159, +36,49,37,20,15,16,2,32,0,88,163,36,39,50,11,2,38,222,33,157,2, +80,159,36,8,36,37,20,15,16,2,32,0,88,163,36,41,8,27,11,2,39, +222,33,160,2,80,159,36,8,37,37,20,15,16,2,20,27,158,32,0,88,163, +36,38,52,11,2,40,222,33,163,2,88,163,36,38,49,16,4,36,36,8,32, +36,2,40,223,0,33,165,2,80,159,36,8,38,37,20,15,16,2,20,27,158, +32,0,88,163,36,38,52,11,2,41,222,33,168,2,88,163,36,38,49,16,4, +36,36,8,32,36,2,41,223,0,33,169,2,80,159,36,8,39,37,20,15,16, +2,20,27,158,32,0,88,163,36,37,44,11,2,42,222,33,170,2,32,0,88, +163,36,37,44,11,2,42,222,33,171,2,80,159,36,8,40,37,20,15,16,2, +88,163,8,36,37,53,16,4,52,52,8,240,0,128,0,0,36,2,54,223,0, +33,172,2,80,159,36,8,47,39,20,15,16,2,88,163,8,36,37,53,16,4, +52,52,36,37,2,54,223,0,33,173,2,80,159,36,8,48,39,20,15,16,2, +88,163,8,36,37,57,16,4,52,52,36,38,2,54,223,0,33,174,2,80,159, +36,8,49,39,20,15,16,2,20,25,96,2,43,88,163,36,36,57,16,4,8, +240,32,128,0,0,8,33,8,240,0,128,0,0,36,9,223,0,33,175,2,88, +163,36,37,58,16,4,8,240,32,128,0,0,8,33,36,37,9,223,0,33,176, +2,88,163,36,38,8,28,16,4,8,176,6,8,49,36,38,9,223,0,33,177, +2,80,159,36,8,41,37,20,15,16,2,88,163,8,36,37,57,16,4,8,128, +6,36,36,40,2,54,223,0,33,178,2,80,159,36,8,50,39,20,15,16,2, +88,163,8,36,39,54,16,4,52,36,36,40,2,44,223,0,33,180,2,80,159, +36,8,42,37,95,29,94,2,9,68,35,37,107,101,114,110,101,108,11,29,94, +2,9,69,35,37,109,105,110,45,115,116,120,11,2,26,9,9,9,36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 18415); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,57,48,46,48,46,49,84,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,57,48,46,48,46,51,84,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,1,0,0,15,0,40, 0,57,0,75,0,97,0,120,0,140,0,162,0,171,0,180,0,187,0,196,0, 203,0,0,0,229,1,0,0,74,35,37,112,108,97,99,101,45,115,116,114,117, @@ -1014,7 +1010,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 556); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,57,48,46,48,46,49,84,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,57,48,46,48,46,51,84,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,106,0,0,0,1,0,0,7,0,18, 0,45,0,51,0,60,0,67,0,89,0,102,0,128,0,145,0,167,0,175,0, 187,0,202,0,218,0,236,0,0,1,12,1,28,1,51,1,75,1,87,1,118, @@ -1496,7 +1492,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 10051); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,57,48,46,48,46,49,84,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,57,48,46,48,46,51,84,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,1,0,0,10,0,16, 0,29,0,44,0,58,0,78,0,90,0,104,0,118,0,170,0,0,0,99,1, 0,0,69,35,37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2, @@ -1504,8 +1500,8 @@ 111,114,107,11,29,94,2,2,68,35,37,112,97,114,97,109,122,11,29,94,2, 2,74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,11,29,94,2,2, 66,35,37,98,111,111,116,11,29,94,2,2,68,35,37,101,120,112,111,98,115, -11,29,94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,227, -92,0,0,100,159,2,3,36,36,159,2,4,36,36,159,2,5,36,36,159,2, +11,29,94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,95, +93,0,0,100,159,2,3,36,36,159,2,4,36,36,159,2,5,36,36,159,2, 6,36,36,159,2,7,36,36,159,2,8,36,36,159,2,9,36,36,159,2,9, 36,36,16,0,159,36,20,114,159,36,16,1,11,16,0,20,26,145,9,2,1, 2,1,29,11,11,11,11,9,9,11,11,11,18,96,11,46,46,46,36,80,158, diff --git a/racket/src/racket/src/schvers.h b/racket/src/racket/src/schvers.h index f2d198ed8d..ad7f312299 100644 --- a/racket/src/racket/src/schvers.h +++ b/racket/src/racket/src/schvers.h @@ -13,12 +13,12 @@ consistently.) */ -#define MZSCHEME_VERSION "5.90.0.2" +#define MZSCHEME_VERSION "5.90.0.3" #define MZSCHEME_VERSION_X 5 #define MZSCHEME_VERSION_Y 90 #define MZSCHEME_VERSION_Z 0 -#define MZSCHEME_VERSION_W 2 +#define MZSCHEME_VERSION_W 3 #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W) diff --git a/racket/src/racket/src/startup.inc b/racket/src/racket/src/startup.inc index 4491924adc..a590b311ae 100644 --- a/racket/src/racket/src/startup.inc +++ b/racket/src/racket/src/startup.inc @@ -363,15 +363,6 @@ "(find-col-file fail" " collection collection-path" " file-name)))" -"(define-values(user-links-path)(build-path(find-system-path 'addon-dir)" -"(version)" -" \"links.rktd\"))" -"(define-values(user-links-cache)(make-hasheq))" -"(define-values(user-links-stamp) #f)" -"(define-values(shared-links-path)(build-path(find-system-path 'addon-dir)" -" \"links.rktd\"))" -"(define-values(shared-links-cache)(make-hasheq))" -"(define-values(shared-links-stamp) #f)" "(define-values(find-config-dir)" "(lambda()" "(let((c(find-system-path 'config-dir)))" @@ -393,6 +384,11 @@ "(lambda()" "(call-with-default-reading-parameterization read))))" " #hash()))))" +"(define-values(get-installation-name)" +"(lambda(config-table)" +"(hash-ref config-table" +" 'installation-name " +"(version))))" "(define-values(coerce-to-path)" "(lambda(p)" "(cond" @@ -430,7 +426,7 @@ "((not(car l))(append orig-l(loop(cdr l))))" "(else(cons(coerce-to-path(car l))(loop(cdr l))))))" " orig-l))))" -"(define-values(links-paths)(find-links-path!" +"(define-values(all-links-paths)(find-links-path!" "(lambda()" "(let*((d(find-config-dir))" "(ht(get-config-table d))" @@ -439,11 +435,18 @@ "(build-path(or(hash-ref ht 'share-dir #f)" " (build-path 'up \"share\"))" " \"links.rktd\")))))" -"(list->vector" +"(cons(list->vector" "(add-config-search" " ht" " 'links-search-files" -"(list lf)))))))" +"(list lf)))" +"(build-path(find-system-path 'addon-dir)" +"(get-installation-name ht)" +" \"links.rktd\"))))))" +"(define-values(links-paths)(car all-links-paths))" +"(define-values(user-links-path)(cdr all-links-paths))" +"(define-values(user-links-cache)(make-hasheq))" +"(define-values(user-links-stamp) #f)" "(define-values(links-caches)(make-vector(vector-length links-paths)(make-hasheq)))" "(define-values(links-stamps)(make-vector(vector-length links-paths) #f))" "(define-values(stamp-prompt-tag)(make-continuation-prompt-tag 'stamp))" @@ -504,7 +507,7 @@ "(or(not a)" "(not(car a)))))" "(define-values(get-linked-collections)" -"(lambda(user? shared? ii)" +"(lambda(user? ii)" "(call/ec(lambda(esc)" "(define-values(make-handler)" "(lambda(ts)" @@ -517,7 +520,6 @@ " \"error reading collection links file ~s: ~a\"" "(cond" "(user? user-links-path)" -"(shared? shared-links-path)" "(else(vector-ref links-paths ii)))" "(exn-message exn))" "(current-continuation-marks))))" @@ -527,9 +529,6 @@ "(user?" "(set! user-links-cache(make-hasheq))" "(set! user-links-stamp ts))" -"(shared?" -"(set! shared-links-cache(make-hasheq))" -"(set! shared-links-stamp ts))" "(else" "(vector-set! links-caches ii(make-hasheq))" "(vector-set! links-stamps ii ts))))" @@ -541,11 +540,9 @@ "(make-handler #f)" "(let*((a-links-path(cond" "(user? user-links-path)" -"(shared? shared-links-path)" "(else(vector-ref links-paths ii))))" "(a-links-stamp(cond" "(user? user-links-stamp)" -"(shared? shared-links-stamp)" "(else(vector-ref links-stamps ii))))" "(ts(file->stamp a-links-path a-links-stamp)))" "(if(not(equal? ts a-links-stamp))" @@ -614,16 +611,12 @@ "(user?" "(set! user-links-cache ht)" "(set! user-links-stamp ts))" -"(shared?" -"(set! shared-links-cache ht)" -"(set! shared-links-stamp ts))" "(else" "(vector-set! links-caches ii ht)" "(vector-set! links-stamps ii ts)))" " ht)))))" "(cond" "(user? user-links-cache)" -"(shared? shared-links-cache)" "(else(vector-ref links-caches ii))))))))))" "(define-values(normalize-collection-reference)" "(lambda(collection collection-path)" @@ -655,10 +648,7 @@ "(append" "(if(and links?(use-user-specific-search-paths))" "(append" -"(let((ht(get-linked-collections #t #f 0)))" -"(append(hash-ref ht sym null)" -"(hash-ref ht #f null)))" -"(let((ht(get-linked-collections #f #t 0)))" +"(let((ht(get-linked-collections #t 0)))" "(append(hash-ref ht sym null)" "(hash-ref ht #f null))))" " null)" @@ -666,7 +656,7 @@ "(let loop((ii 0))" "(if(ii . >= .(vector-length links-paths))" " null" -"(let((ht(get-linked-collections #f #f ii)))" +"(let((ht(get-linked-collections #f ii)))" "(append(hash-ref ht sym null)" "(hash-ref ht #f null)" "(loop(add1 ii))))))" @@ -808,7 +798,8 @@ "((extra-collects-dirs)(find-library-collection-paths extra-collects-dirs null))" "((extra-collects-dirs post-collects-dirs)" "(let((user-too?(use-user-specific-search-paths))" -"(cons-if(lambda(f r)(if f(cons f r) r))))" +"(cons-if(lambda(f r)(if f(cons f r) r)))" +"(config-table(get-config-table(find-config-dir))))" "(path-list-string->path-list" "(if user-too?" "(let((c(environment-variables-ref(current-environment-variables)" @@ -818,12 +809,12 @@ " \"\"))" " \"\")" "(add-config-search" -"(get-config-table(find-config-dir))" +" config-table" " 'collects-search-dirs" "(cons-if" "(and user-too?" "(build-path(find-system-path 'addon-dir)" -"(version)" +"(get-installation-name config-table)" " \"collects\"))" "(let loop((l(append" " extra-collects-dirs" diff --git a/racket/src/racket/src/startup.rktl b/racket/src/racket/src/startup.rktl index 7bbf4a68bd..036b302e9f 100644 --- a/racket/src/racket/src/startup.rktl +++ b/racket/src/racket/src/startup.rktl @@ -430,17 +430,6 @@ collection collection-path file-name))) - (define-values (user-links-path) (build-path (find-system-path 'addon-dir) - (version) - "links.rktd")) - (define-values (user-links-cache) (make-hasheq)) - (define-values (user-links-stamp) #f) - - (define-values (shared-links-path) (build-path (find-system-path 'addon-dir) - "links.rktd")) - (define-values (shared-links-cache) (make-hasheq)) - (define-values (shared-links-stamp) #f) - (define-values (find-config-dir) (lambda () (let ([c (find-system-path 'config-dir)]) @@ -464,6 +453,12 @@ (call-with-default-reading-parameterization read)))) #hash())))) + (define-values (get-installation-name) + (lambda (config-table) + (hash-ref config-table + 'installation-name + (version)))) + (define-values (coerce-to-path) (lambda (p) (cond @@ -495,7 +490,7 @@ (find-system-path 'orig-dir)))] [else (find-executable-path (find-system-path 'exec-file) collects-path #t)]))) - + (define-values (add-config-search) (lambda (ht key orig-l) (let ([l (hash-ref ht key #f)]) @@ -507,25 +502,34 @@ [else (cons (coerce-to-path (car l)) (loop (cdr l)))])) orig-l)))) - (define-values (links-paths) (find-links-path! - ;; This thunk is called once per place, and the result - ;; is remembered for later invocations. Otherwise, the - ;; search for the config file can trip over filesystem - ;; restrictions imposed by security guards. - (lambda () - (let* ([d (find-config-dir)] - [ht (get-config-table d)] - [lf (coerce-to-path - (or (hash-ref ht 'links-file #f) - (build-path (or (hash-ref ht 'share-dir #f) - (build-path 'up "share")) - "links.rktd")))]) - (list->vector - (add-config-search - ht - 'links-search-files - (list lf))))))) - + (define-values (all-links-paths) (find-links-path! + ;; This thunk is called once per place, and the result + ;; is remembered for later invocations. Otherwise, the + ;; search for the config file can trip over filesystem + ;; restrictions imposed by security guards. + (lambda () + (let* ([d (find-config-dir)] + [ht (get-config-table d)] + [lf (coerce-to-path + (or (hash-ref ht 'links-file #f) + (build-path (or (hash-ref ht 'share-dir #f) + (build-path 'up "share")) + "links.rktd")))]) + (cons (list->vector + (add-config-search + ht + 'links-search-files + (list lf))) + (build-path (find-system-path 'addon-dir) + (get-installation-name ht) + "links.rktd")))))) + + (define-values (links-paths) (car all-links-paths)) + (define-values (user-links-path) (cdr all-links-paths)) + + (define-values (user-links-cache) (make-hasheq)) + (define-values (user-links-stamp) #f) + (define-values (links-caches) (make-vector (vector-length links-paths) (make-hasheq))) (define-values (links-stamps) (make-vector (vector-length links-paths) #f)) @@ -595,7 +599,7 @@ (not (car a))))) (define-values (get-linked-collections) - (lambda (user? shared? ii) + (lambda (user? ii) (call/ec (lambda (esc) (define-values (make-handler) (lambda (ts) @@ -608,7 +612,6 @@ "error reading collection links file ~s: ~a" (cond [user? user-links-path] - [shared? shared-links-path] [else (vector-ref links-paths ii)]) (exn-message exn)) (current-continuation-marks)))) @@ -618,9 +621,6 @@ [user? (set! user-links-cache (make-hasheq)) (set! user-links-stamp ts)] - [shared? - (set! shared-links-cache (make-hasheq)) - (set! shared-links-stamp ts)] [else (vector-set! links-caches ii (make-hasheq)) (vector-set! links-stamps ii ts)])) @@ -633,11 +633,9 @@ (make-handler #f) (let* ([a-links-path (cond [user? user-links-path] - [shared? shared-links-path] [else (vector-ref links-paths ii)])] [a-links-stamp (cond [user? user-links-stamp] - [shared? shared-links-stamp] [else (vector-ref links-stamps ii)])] [ts (file->stamp a-links-path a-links-stamp)]) (if (not (equal? ts a-links-stamp)) @@ -714,16 +712,12 @@ [user? (set! user-links-cache ht) (set! user-links-stamp ts)] - [shared? - (set! shared-links-cache ht) - (set! shared-links-stamp ts)] [else (vector-set! links-caches ii ht) (vector-set! links-stamps ii ts)]) ht))))) (cond [user? user-links-cache] - [shared? shared-links-cache] [else (vector-ref links-caches ii)])))))))) (define-values (normalize-collection-reference) @@ -759,10 +753,7 @@ ;; list of paths and (box path)s: (if (and links? (use-user-specific-search-paths)) (append - (let ([ht (get-linked-collections #t #f 0)]) - (append (hash-ref ht sym null) - (hash-ref ht #f null))) - (let ([ht (get-linked-collections #f #t 0)]) + (let ([ht (get-linked-collections #t 0)]) (append (hash-ref ht sym null) (hash-ref ht #f null)))) null) @@ -771,7 +762,7 @@ (let loop ([ii 0]) (if (ii . >= . (vector-length links-paths)) null - (let ([ht (get-linked-collections #f #f ii)]) + (let ([ht (get-linked-collections #f ii)]) (append (hash-ref ht sym null) (hash-ref ht #f null) (loop (add1 ii)))))) @@ -927,7 +918,8 @@ [(extra-collects-dirs) (find-library-collection-paths extra-collects-dirs null)] [(extra-collects-dirs post-collects-dirs) (let ([user-too? (use-user-specific-search-paths)] - [cons-if (lambda (f r) (if f (cons f r) r))]) + [cons-if (lambda (f r) (if f (cons f r) r))] + [config-table (get-config-table (find-config-dir))]) (path-list-string->path-list (if user-too? (let ([c (environment-variables-ref (current-environment-variables) @@ -937,12 +929,12 @@ "")) "") (add-config-search - (get-config-table (find-config-dir)) + config-table 'collects-search-dirs (cons-if (and user-too? (build-path (find-system-path 'addon-dir) - (version) + (get-installation-name config-table) "collects")) (let loop ([l (append extra-collects-dirs