diff --git a/.data.choo/jams/0.jam b/.data.choo/jams/0.jam deleted file mode 100644 index 9397bb9..0000000 Binary files a/.data.choo/jams/0.jam and /dev/null differ diff --git a/.data.choo/jams/1.jam b/.data.choo/jams/1.jam deleted file mode 100644 index 8c171f6..0000000 Binary files a/.data.choo/jams/1.jam and /dev/null differ diff --git a/.data.jock/jams/0.jam b/.data.jock/jams/0.jam deleted file mode 100644 index 0f4d487..0000000 Binary files a/.data.jock/jams/0.jam and /dev/null differ diff --git a/Cargo.lock b/Cargo.lock index 868f5a9..5f352ac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -64,10 +64,19 @@ dependencies = [ ] [[package]] -name = "anes" -version = "0.1.6" +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] [[package]] name = "anstream" @@ -139,7 +148,29 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "assert_no_alloc" version = "1.1.2" -source = "git+https://github.com/zorp-corp/sword.git?rev=bcb2e7fba0e24d45d4887fae77389d7c5e86b507#bcb2e7fba0e24d45d4887fae77389d7c5e86b507" +source = "git+https://github.com/zorp-corp/nockchain.git?rev=932c8e6b6d159e072d1f4b6d26cc0dccbae4a377#932c8e6b6d159e072d1f4b6d26cc0dccbae4a377" + +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] [[package]] name = "async-trait" @@ -149,19 +180,14 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.101", ] [[package]] -name = "atty" -version = "0.2.14" +name = "atomic-waker" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" @@ -185,8 +211,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae" dependencies = [ "async-trait", - "axum-core", + "axum-core 0.4.5", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "itoa", + "matchit 0.7.3", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "sync_wrapper", + "tower 0.5.2", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" +dependencies = [ + "axum-core 0.5.2", "bytes", + "form_urlencoded", "futures-util", "http", "http-body", @@ -194,7 +247,7 @@ dependencies = [ "hyper", "hyper-util", "itoa", - "matchit", + "matchit 0.8.4", "memchr", "mime", "percent-encoding", @@ -204,9 +257,9 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper", "tokio", - "tower", + "tower 0.5.2", "tower-layer", "tower-service", "tracing", @@ -227,7 +280,26 @@ dependencies = [ "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.1", + "sync_wrapper", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper", "tower-layer", "tower-service", "tracing", @@ -248,6 +320,12 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + [[package]] name = "bincode" version = "2.0.0-rc.3" @@ -335,12 +413,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cast" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" - [[package]] name = "cc" version = "1.0.99" @@ -354,30 +426,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] -name = "ciborium" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" -dependencies = [ - "ciborium-io", - "ciborium-ll", - "serde", -] - -[[package]] -name = "ciborium-io" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" - -[[package]] -name = "ciborium-ll" -version = "0.2.2" +name = "chrono" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ - "ciborium-io", - "half", + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "wasm-bindgen", + "windows-link", ] [[package]] @@ -390,18 +449,6 @@ dependencies = [ "inout", ] -[[package]] -name = "clap" -version = "3.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" -dependencies = [ - "bitflags 1.3.2", - "clap_lex 0.2.4", - "indexmap", - "textwrap", -] - [[package]] name = "clap" version = "4.5.20" @@ -420,7 +467,7 @@ checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" dependencies = [ "anstream", "anstyle", - "clap_lex 0.7.2", + "clap_lex", "strsim", ] @@ -433,16 +480,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.82", -] - -[[package]] -name = "clap_lex" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" -dependencies = [ - "os_str_bytes", + "syn 2.0.101", ] [[package]] @@ -474,6 +512,15 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" +[[package]] +name = "convert_case" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb402b8d4c85569410425650ce3eddc7d698ed96d39a73f941b08fb63082f1e7" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "coolor" version = "1.0.0" @@ -498,42 +545,6 @@ dependencies = [ "libc", ] -[[package]] -name = "criterion" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb" -dependencies = [ - "anes", - "atty", - "cast", - "ciborium", - "clap 3.2.25", - "criterion-plot", - "itertools", - "lazy_static", - "num-traits", - "oorandom", - "plotters", - "rayon", - "regex", - "serde", - "serde_derive", - "serde_json", - "tinytemplate", - "walkdir", -] - -[[package]] -name = "criterion-plot" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" -dependencies = [ - "cast", - "itertools", -] - [[package]] name = "crokey" version = "1.1.0" @@ -644,43 +655,46 @@ dependencies = [ [[package]] name = "crown" version = "0.1.0" -source = "git+https://github.com/zorp-corp/nockapp?rev=d14578ad2108933b8a370155f07e7c30a43ec69f#d14578ad2108933b8a370155f07e7c30a43ec69f" +source = "git+https://github.com/zorp-corp/nockchain.git?rev=932c8e6b6d159e072d1f4b6d26cc0dccbae4a377#932c8e6b6d159e072d1f4b6d26cc0dccbae4a377" dependencies = [ "anyhow", "assert_no_alloc", "async-trait", - "axum", + "axum 0.8.4", "bincode", "bitvec", "blake3", "byteorder", "bytes", - "clap 4.5.20", + "chrono", + "clap", + "dirs", "either", "futures", - "getrandom", - "intmap 2.0.0", - "rand", + "getrandom 0.2.15", + "gnort", + "ibig", + "intmap", + "opentelemetry", + "opentelemetry-otlp", + "opentelemetry_sdk", + "rand 0.8.5", "serde", "sword", "sword_macros", "tempfile", "termimad", - "thiserror", + "thiserror 2.0.12", "tokio", "tokio-util", + "tonic", "tracing", + "tracing-opentelemetry", "tracing-subscriber", "tracing-test", "yaque", ] -[[package]] -name = "crunchy" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" - [[package]] name = "crypto-common" version = "0.1.6" @@ -688,7 +702,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", - "rand_core", + "rand_core 0.6.4", "typenum", ] @@ -724,7 +738,21 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.101", +] + +[[package]] +name = "dashmap" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", ] [[package]] @@ -736,6 +764,28 @@ dependencies = [ "generic-array", ] +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "syn 2.0.101", + "unicode-xid", +] + [[package]] name = "digest" version = "0.10.7" @@ -747,6 +797,48 @@ dependencies = [ "subtle", ] +[[package]] +name = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.59.0", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "dogstatsd" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faeb22dbbf6aef8e687ad83f9cd9fd893ac5c0f36d2e46fb0cbcf7ae19640ec0" +dependencies = [ + "chrono", + "retry", +] + [[package]] name = "ed25519" version = "2.2.3" @@ -774,6 +866,12 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + [[package]] name = "errno" version = "0.3.9" @@ -894,7 +992,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.101", ] [[package]] @@ -909,6 +1007,12 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" + [[package]] name = "futures-util" version = "0.3.31" @@ -945,7 +1049,21 @@ checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", + "wasm-bindgen", ] [[package]] @@ -955,13 +1073,68 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] -name = "half" -version = "2.4.1" +name = "glob" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" + +[[package]] +name = "gnort" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1033ebf8ca0e0a249d8996a5979dcfd276d43b2818cb6045993a844250c49516" +dependencies = [ + "dashmap", + "derive_more", + "dogstatsd", + "governor", + "maplit", + "nonzero_ext", + "once_cell", + "thiserror 2.0.12", + "tracing", +] + +[[package]] +name = "governor" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +checksum = "be93b4ec2e4710b04d9264c0c7350cdd62a8c20e5e4ac732552ebb8f0debe8eb" dependencies = [ "cfg-if", - "crunchy", + "dashmap", + "futures-sink", + "futures-timer", + "futures-util", + "getrandom 0.3.2", + "no-std-compat", + "nonzero_ext", + "parking_lot", + "portable-atomic", + "quanta", + "rand 0.9.1", + "smallvec", + "spinning_top", + "web-time", +] + +[[package]] +name = "h2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap 2.9.0", + "slab", + "tokio", + "tokio-util", + "tracing", ] [[package]] @@ -977,19 +1150,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] -name = "heck" -version = "0.5.0" +name = "hashbrown" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" [[package]] -name = "hermit-abi" -version = "0.1.19" +name = "heck" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" @@ -1045,13 +1215,14 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ "bytes", "futures-channel", "futures-util", + "h2", "http", "http-body", "httparse", @@ -1060,35 +1231,216 @@ dependencies = [ "pin-project-lite", "smallvec", "tokio", + "want", ] [[package]] -name = "hyper-util" -version = "0.1.9" +name = "hyper-timeout" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "bytes", - "futures-util", - "http", - "http-body", "hyper", + "hyper-util", "pin-project-lite", "tokio", "tower-service", ] +[[package]] +name = "hyper-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "libc", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + [[package]] name = "ibig" version = "0.3.6" -source = "git+https://github.com/zorp-corp/sword.git?rev=bcb2e7fba0e24d45d4887fae77389d7c5e86b507#bcb2e7fba0e24d45d4887fae77389d7c5e86b507" +source = "git+https://github.com/zorp-corp/nockchain.git?rev=932c8e6b6d159e072d1f4b6d26cc0dccbae4a377#932c8e6b6d159e072d1f4b6d26cc0dccbae4a377" dependencies = [ "cfg-if", "num-traits", - "rand", + "rand 0.8.5", "static_assertions", ] +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + [[package]] name = "indexmap" version = "1.9.3" @@ -1099,6 +1451,16 @@ dependencies = [ "hashbrown 0.12.3", ] +[[package]] +name = "indexmap" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +dependencies = [ + "equivalent", + "hashbrown 0.15.3", +] + [[package]] name = "inotify" version = "0.9.6" @@ -1130,15 +1492,15 @@ dependencies = [ [[package]] name = "intmap" -version = "1.1.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b357564d111300f8a33b79e06795235529a627a1f7078d2b1db7f7dcdf032874" +checksum = "210870d5399600055a955c020cc97e462203c234dc2b103b5da5d80fdbd5eed5" [[package]] -name = "intmap" -version = "2.0.0" +name = "ipnet" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee87fd093563344074bacf24faa0bb0227fb6969fb223e922db798516de924d6" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "is_terminal_polyfill" @@ -1162,11 +1524,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] -name = "jock-testing" +name = "jocktest" version = "0.1.0" dependencies = [ "assert_no_alloc", - "clap 4.5.20", + "clap", "crown", "sword", "sword_macros", @@ -1176,10 +1538,11 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.72" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -1229,7 +1592,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.82", + "syn 2.0.101", ] [[package]] @@ -1240,9 +1603,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.161" +version = "0.2.172" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" [[package]] name = "libredox" @@ -1261,6 +1624,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" + [[package]] name = "lock_api" version = "0.4.12" @@ -1277,6 +1646,12 @@ version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +[[package]] +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + [[package]] name = "matchers" version = "0.1.0" @@ -1292,6 +1667,12 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + [[package]] name = "memchr" version = "2.7.4" @@ -1339,7 +1720,7 @@ checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "log", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.48.0", ] @@ -1349,17 +1730,29 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi", "libc", "log", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", ] [[package]] name = "murmur3" version = "0.5.2" -source = "git+https://github.com/zorp-corp/sword.git?rev=bcb2e7fba0e24d45d4887fae77389d7c5e86b507#bcb2e7fba0e24d45d4887fae77389d7c5e86b507" +source = "git+https://github.com/zorp-corp/nockchain.git?rev=932c8e6b6d159e072d1f4b6d26cc0dccbae4a377#932c8e6b6d159e072d1f4b6d26cc0dccbae4a377" + +[[package]] +name = "no-std-compat" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c" + +[[package]] +name = "nonzero_ext" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21" [[package]] name = "notify" @@ -1400,13 +1793,13 @@ dependencies = [ [[package]] name = "num-derive" -version = "0.3.3" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.101", ] [[package]] @@ -1434,16 +1827,91 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] -name = "oorandom" -version = "11.1.4" +name = "opentelemetry" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab70038c28ed37b97d8ed414b6429d343a8bbf44c9f79ec854f3a643029ba6d7" +dependencies = [ + "futures-core", + "futures-sink", + "js-sys", + "pin-project-lite", + "thiserror 1.0.64", + "tracing", +] + +[[package]] +name = "opentelemetry-http" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a8a7f5f6ba7c1b286c2fbca0454eaba116f63bbe69ed250b642d36fbb04d80" +dependencies = [ + "async-trait", + "bytes", + "http", + "opentelemetry", + "reqwest", +] + +[[package]] +name = "opentelemetry-otlp" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91cf61a1868dacc576bf2b2a1c3e9ab150af7272909e80085c3173384fe11f76" +dependencies = [ + "async-trait", + "futures-core", + "http", + "opentelemetry", + "opentelemetry-http", + "opentelemetry-proto", + "opentelemetry_sdk", + "prost", + "reqwest", + "thiserror 1.0.64", + "tokio", + "tonic", + "tracing", +] + +[[package]] +name = "opentelemetry-proto" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6e05acbfada5ec79023c85368af14abd0b307c015e9064d249b2a950ef459a6" +dependencies = [ + "opentelemetry", + "opentelemetry_sdk", + "prost", + "tonic", +] + +[[package]] +name = "opentelemetry_sdk" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" +checksum = "231e9d6ceef9b0b2546ddf52335785ce41252bc7474ee8ba05bfad277be13ab8" +dependencies = [ + "async-trait", + "futures-channel", + "futures-executor", + "futures-util", + "glob", + "opentelemetry", + "percent-encoding", + "rand 0.8.5", + "serde_json", + "thiserror 1.0.64", + "tokio", + "tokio-stream", + "tracing", +] [[package]] -name = "os_str_bytes" -version = "6.6.1" +name = "option-ext" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "overload" @@ -1480,6 +1948,26 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "pin-project-lite" version = "0.2.14" @@ -1493,49 +1981,65 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] -name = "plotters" -version = "0.3.7" +name = "portable-atomic" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" +checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" dependencies = [ - "num-traits", - "plotters-backend", - "plotters-svg", - "wasm-bindgen", - "web-sys", + "zerocopy", ] [[package]] -name = "plotters-backend" -version = "0.3.7" +name = "proc-macro2" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] [[package]] -name = "plotters-svg" -version = "0.3.7" +name = "prost" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" dependencies = [ - "plotters-backend", + "bytes", + "prost-derive", ] [[package]] -name = "ppv-lite86" -version = "0.2.20" +name = "prost-derive" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ - "zerocopy", + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn 2.0.101", ] [[package]] -name = "proc-macro2" -version = "1.0.88" +name = "quanta" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9" +checksum = "3bd1fe6824cea6538803de3ff1bc0cf3949024db3d43c9643024bfb33a807c0e" dependencies = [ - "unicode-ident", + "crossbeam-utils", + "libc", + "once_cell", + "raw-cpuid", + "wasi 0.11.0+wasi-snapshot-preview1", + "web-sys", + "winapi", ] [[package]] @@ -1547,6 +2051,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + [[package]] name = "radium" version = "0.7.0" @@ -1560,8 +2070,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", ] [[package]] @@ -1571,7 +2091,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -1580,27 +2110,25 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.15", ] [[package]] -name = "rayon" -version = "1.10.0" +name = "rand_core" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "either", - "rayon-core", + "getrandom 0.3.2", ] [[package]] -name = "rayon-core" -version = "1.12.1" +name = "raw-cpuid" +version = "11.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "c6df7ab838ed27997ba19a4664507e6f82b41fe6e20be42929332156e5e85146" dependencies = [ - "crossbeam-deque", - "crossbeam-utils", + "bitflags 2.6.0", ] [[package]] @@ -1612,6 +2140,17 @@ dependencies = [ "bitflags 2.6.0", ] +[[package]] +name = "redox_users" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" +dependencies = [ + "getrandom 0.2.15", + "libredox", + "thiserror 2.0.12", +] + [[package]] name = "regex" version = "1.11.0" @@ -1656,6 +2195,52 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +[[package]] +name = "reqwest" +version = "0.12.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb" +dependencies = [ + "base64", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower 0.5.2", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-registry", +] + +[[package]] +name = "retry" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1e211f878258887b3e65dd3c8ff9f530fe109f441a117ee0cdc27f341355032" +dependencies = [ + "rand 0.9.1", +] + [[package]] name = "rustc-demangle" version = "0.1.24" @@ -1719,22 +2304,22 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.210" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.101", ] [[package]] @@ -1847,6 +2432,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "slotmap" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" +dependencies = [ + "version_check", +] + [[package]] name = "smallvec" version = "1.13.2" @@ -1855,14 +2449,29 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" dependencies = [ "libc", "windows-sys 0.52.0", ] +[[package]] +name = "spinning_top" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d96d2d1d716fb500937168cc09353ffdc7a012be8475ac7308e1bdf0e3923300" +dependencies = [ + "lock_api", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "static_assertions" version = "1.1.0" @@ -1890,16 +2499,15 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "sword" version = "0.1.0" -source = "git+https://github.com/zorp-corp/sword.git?rev=bcb2e7fba0e24d45d4887fae77389d7c5e86b507#bcb2e7fba0e24d45d4887fae77389d7c5e86b507" +source = "git+https://github.com/zorp-corp/nockchain.git?rev=932c8e6b6d159e072d1f4b6d26cc0dccbae4a377#932c8e6b6d159e072d1f4b6d26cc0dccbae4a377" dependencies = [ "assert_no_alloc", "autotools", "bitvec", "cc", - "criterion", "either", "ibig", - "intmap 1.1.0", + "intmap", "json", "lazy_static", "libc", @@ -1907,18 +2515,20 @@ dependencies = [ "murmur3", "num-derive", "num-traits", - "rand", + "rand 0.8.5", "signal-hook", + "slotmap", "static_assertions", "sword_crypto", "sword_macros", - "thiserror", + "thiserror 2.0.12", + "tracing", ] [[package]] name = "sword_crypto" version = "0.1.0" -source = "git+https://github.com/zorp-corp/sword.git?rev=bcb2e7fba0e24d45d4887fae77389d7c5e86b507#bcb2e7fba0e24d45d4887fae77389d7c5e86b507" +source = "git+https://github.com/zorp-corp/nockchain.git?rev=932c8e6b6d159e072d1f4b6d26cc0dccbae4a377#932c8e6b6d159e072d1f4b6d26cc0dccbae4a377" dependencies = [ "aes", "aes-siv", @@ -1934,7 +2544,7 @@ dependencies = [ [[package]] name = "sword_macros" version = "0.1.0" -source = "git+https://github.com/zorp-corp/sword.git?rev=bcb2e7fba0e24d45d4887fae77389d7c5e86b507#bcb2e7fba0e24d45d4887fae77389d7c5e86b507" +source = "git+https://github.com/zorp-corp/nockchain.git?rev=932c8e6b6d159e072d1f4b6d26cc0dccbae4a377#932c8e6b6d159e072d1f4b6d26cc0dccbae4a377" dependencies = [ "quote", "syn 1.0.109", @@ -1953,9 +2563,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.82" +version = "2.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83540f837a8afc019423a8edb95b52a8effe46957ee402287f4292fae35be021" +checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" dependencies = [ "proc-macro2", "quote", @@ -1964,15 +2574,23 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "0.1.2" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +dependencies = [ + "futures-core", +] [[package]] -name = "sync_wrapper" -version = "1.0.1" +name = "synstructure" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] [[package]] name = "sysinfo" @@ -2019,23 +2637,26 @@ dependencies = [ "lazy-regex", "minimad", "serde", - "thiserror", + "thiserror 1.0.64", "unicode-width", ] [[package]] -name = "textwrap" -version = "0.16.1" +name = "thiserror" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +dependencies = [ + "thiserror-impl 1.0.64", +] [[package]] name = "thiserror" -version = "1.0.64" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "thiserror-impl", + "thiserror-impl 2.0.12", ] [[package]] @@ -2046,7 +2667,18 @@ checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.101", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", ] [[package]] @@ -2060,20 +2692,20 @@ dependencies = [ ] [[package]] -name = "tinytemplate" -version = "1.2.1" +name = "tinystr" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" dependencies = [ - "serde", - "serde_json", + "displaydoc", + "zerovec", ] [[package]] name = "tokio" -version = "1.40.0" +version = "1.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "2513ca694ef9ede0fb23fe71a4ee4107cb102b9dc1930f6d0fd77aae068ae165" dependencies = [ "backtrace", "bytes", @@ -2088,13 +2720,24 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.101", +] + +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", ] [[package]] @@ -2112,16 +2755,66 @@ dependencies = [ "tokio", ] +[[package]] +name = "tonic" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" +dependencies = [ + "async-stream", + "async-trait", + "axum 0.7.7", + "base64", + "bytes", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "prost", + "socket2", + "tokio", + "tokio-stream", + "tower 0.4.13", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "tower" -version = "0.5.1" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand 0.8.5", + "slab", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", "pin-project-lite", - "sync_wrapper 0.1.2", + "sync_wrapper", "tokio", "tower-layer", "tower-service", @@ -2142,9 +2835,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -2154,20 +2847,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.101", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -2184,6 +2877,24 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-opentelemetry" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a971f6058498b5c0f1affa23e7ea202057a7301dbff68e968b2d578bcbd053" +dependencies = [ + "js-sys", + "once_cell", + "opentelemetry", + "opentelemetry_sdk", + "smallvec", + "tracing", + "tracing-core", + "tracing-log", + "tracing-subscriber", + "web-time", +] + [[package]] name = "tracing-subscriber" version = "0.3.18" @@ -2220,9 +2931,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04659ddb06c87d233c566112c1c9c5b9e98256d9af50ec3bc9c8327f873a7568" dependencies = [ "quote", - "syn 2.0.82", + "syn 2.0.101", ] +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + [[package]] name = "typenum" version = "1.17.0" @@ -2235,12 +2952,47 @@ version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + [[package]] name = "unicode-width" version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -2275,43 +3027,74 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.101", "wasm-bindgen-shared", ] +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "wasm-bindgen-macro" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2319,28 +3102,41 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.101", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "web-sys" -version = "0.3.72" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ "js-sys", "wasm-bindgen", @@ -2377,6 +3173,85 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-core" +version = "0.61.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings 0.4.0", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "windows-link" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + +[[package]] +name = "windows-registry" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" +dependencies = [ + "windows-result", + "windows-strings 0.3.1", + "windows-targets 0.53.0", +] + +[[package]] +name = "windows-result" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-sys" version = "0.45.0" @@ -2452,13 +3327,29 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" @@ -2477,6 +3368,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -2495,6 +3392,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -2513,12 +3416,24 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -2537,6 +3452,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -2555,6 +3476,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + [[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" @@ -2573,6 +3500,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -2591,6 +3524,33 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "wyz" version = "0.5.1" @@ -2607,7 +3567,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" dependencies = [ "curve25519-dalek", - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -2620,11 +3580,35 @@ dependencies = [ "lazy_static", "log", "notify", - "rand", + "rand 0.8.5", "semver", "sysinfo", ] +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", + "synstructure", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -2643,7 +3627,28 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.101", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", + "synstructure", ] [[package]] @@ -2651,3 +3656,25 @@ name = "zeroize" version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] diff --git a/Cargo.toml b/Cargo.toml index 011318f..9b404cd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,19 +1,19 @@ [package] -name = "jock-testing" +name = "jocktest" version = "0.1.0" edition = "2021" [dependencies] -crown = { git = "https://github.com/zorp-corp/nockapp", rev="d14578ad2108933b8a370155f07e7c30a43ec69f"} -sword = { git = "https://github.com/zorp-corp/sword.git", rev = "bcb2e7fba0e24d45d4887fae77389d7c5e86b507" } -sword_macros = { git = "https://github.com/zorp-corp/sword.git", rev = "bcb2e7fba0e24d45d4887fae77389d7c5e86b507" } -assert_no_alloc = { git = "https://github.com/zorp-corp/sword.git", rev = "bcb2e7fba0e24d45d4887fae77389d7c5e86b507" } +crown = { git = "https://github.com/zorp-corp/nockchain", rev="932c8e6b6d159e072d1f4b6d26cc0dccbae4a377"} +sword = { git = "https://github.com/zorp-corp/nockchain.git", rev = "932c8e6b6d159e072d1f4b6d26cc0dccbae4a377" } +sword_macros = { git = "https://github.com/zorp-corp/nockchain.git", rev = "932c8e6b6d159e072d1f4b6d26cc0dccbae4a377" } +assert_no_alloc = { git = "https://github.com/zorp-corp/nockchain.git", rev = "932c8e6b6d159e072d1f4b6d26cc0dccbae4a377" } clap = { version = "4.4.4", features = ["derive", "cargo", "color", "env"]} tokio = { version = "1.32", features = ["rt", "rt-multi-thread", "net", "macros", "io-util", "fs", "sync", "time"] } -tracing = "0.1.40" +tracing = "0.1.41" [[bin]] -name = "jock-testing" +name = "jocktest" path = "main.rs" [profile.dev] diff --git a/Makefile b/Makefile index 9012b9b..aa5eb3c 100644 --- a/Makefile +++ b/Makefile @@ -1,110 +1,82 @@ -.DEFAULT_GOAL := help -.PHONY: help -help: ## Display this help - @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) +export RUST_BACKTRACE := full +export RUST_LOG := info +export MINIMAL_LOG_FORMAT := true ifneq (,$(wildcard ./.env)) - include .env - export + include .env + export endif -# Slow! -PROFILE_DEV_DEBUG = --profile dev -# Fast! -PROFILE_DEV_FAST = --profile dev-fast -# Fastest! -PROFILE_RELEASE = --profile release +.DEFAULT_GOAL := build +.PHONY: build +build: + cargo build --release -# Retrieve latest choo build. -CHOO_URL=https://github.com/zorp-corp/nockapp -CHOO_TAG=$(shell git ls-remote --tags $(CHOO_URL) | grep 'refs/tags/choo-' | grep -o 'refs/tags/.*' | sed 's/refs\/tags\///' | sort -V | tail -n1) +.PHONY: help +help: + @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) --: ## ----------------------------------------------------------- --: ## -------------- Commonly used commands below -------------- --: ## ----------------------------------------------------------- +PROFILE_DEV_DEBUG = --profile dev +PROFILE_RELEASE = --profile release .PHONY: build -build: build-dev-fast ## Build in default profile (dev-fast) +build: build-dev-debug .PHONY: release release: build-release -.PHONY: release-test-zero -release-test-zero: - RUST_LOG=TRACE cargo run $(PROFILE_RELEASE) -- --new test-n 0 - -.DEFAULT_GOAL := test - .PHONY: test - test: @if [ $(words $(MAKECMDGOALS)) -lt 2 ]; then \ echo "Usage: make test "; \ exit 1; \ fi - @RUST_LOG=TRACE cargo run $(PROFILE_RELEASE) -- --new test $(word 2,$(MAKECMDGOALS)) + $(call show_env_vars) + RUST_LOG=TRACE cargo run $(PROFILE_RELEASE) -- --new test $(word 2,$(MAKECMDGOALS)) + @exit 0 + +.PHONY: exec +exec: + @if [ $(words $(MAKECMDGOALS)) -lt 2 ]; then \ + echo "Usage: make exec "; \ + exit 1; \ + fi + $(call show_env_vars) + RUST_LOG=TRACE cargo run $(PROFILE_RELEASE) -- --new exec $(word 2,$(MAKECMDGOALS)) @exit 0 -# This wildcard rule catches all other arguments but does nothing with them %:: @: .PHONY: release-exec-all release-exec-all: - RUST_LOG=TRACE cargo run $(PROFILE_RELEASE) -- --new exec-all + $(call show_env_vars) + @echo "Running release exec-all" + RUST_LOG=TRACE MINIMAL_LOG_FORMAT=true cargo run $(PROFILE_RELEASE) -- --new exec-all .PHONY: release-test-all release-test-all: - RUST_LOG=TRACE cargo run $(PROFILE_RELEASE) -- --new test-all - -.PHONY: release-run-details -release-run-details: - RUST_LOG=TRACE cargo run $(PROFILE_RELEASE) -- --new run-details - --: ## ----------------------------------------------------------- --: ## ---------- Rest of the commands in the Makefile ----------- --: ## ----------------------------------------------------------- - -.PHONY: build-dev-fast -build-dev-fast: ## Slower to compile, faster to execute. Builds all projects - @set -e; \ - RUST_LOG=TRACE ./choo hoon/main.hoon hoon; \ - mv out.jam assets/jocktest.jam; \ - cargo build $(PROFILE_DEV_FAST) - -.PHONY: build-parallel -build-parallel: ## profiling profile with parallel feature enabled - @set -e; \ - ./choo hoon/main.hoon hoon; \ - mv out.jam assets/jocktest.jam; \ - cargo build $(FEATURES_PARALLEL) $(PROFILE_PROFILING) + $(call show_env_vars) + @echo "Running release test-all" + RUST_LOG=TRACE MINIMAL_LOG_FORMAT=true cargo run $(PROFILE_RELEASE) -- --new test-all .PHONY: build -build-dev-debug: ## Fast to compile, slow to execute. Builds all projects - @set -e; \ - RUST_LOG=TRACE ./choo --new --log-level trace hoon/main.hoon hoon; \ +build-dev-debug: + $(call show_env_vars) + RUST_LOG=trace ./hoonc hoon/main.hoon hoon; \ mv out.jam assets/jocktest.jam; \ - cargo build + cargo build $(PROFILE_DEV_DEBUG) .PHONY: build-release -build-release: ## Slowest to compile, fastest to execute. Builds all projects - @set -e; \ - RUST_LOG=TRACE ./choo hoon/main.hoon hoon; \ +build-release: + $(call show_env_vars) + RUST_LOG=trace ./hoonc hoon/main.hoon hoon; \ mv out.jam assets/jocktest.jam; \ cargo build $(PROFILE_RELEASE) -.PHONY: update-choo -update-choo: - curl -L -o choo "$(CHOO_URL)/releases/download/$(CHOO_TAG)/choo" - chmod u+x choo - -.PHONY: choo-version -choo-version: - @echo "Latest choo version: $(CHOO_TAG)" - .PHONY: clean clean: ## Clean all projects @set -e; \ - rm -f assets/jocktest.jam; \ - rm -rf .data.choo/ \ + rm -rf .data.hoonc/ ; \ + rm -rf target/ ; \ cargo clean diff --git a/README.md b/README.md index d502933..eaafa8c 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,108 @@ # Jock, a friendly and practical programming language -This is a developer preview of Jock, a friendly programming language that compiles to the Nock combinator calculus. +This is a developer preview of Jock, a friendly programming language that compiles to the [Nock instruction set architecture](#nock). - [Jock language site](https://jock.org) -- [Announcement post](https://zorp.io/blog/jock) +- [@JockNockISA on X](https://x.com/JockNockISA) -The Jock compiler is written in Hoon and runs on the NockApp architecture. +![](./img/wordmark-logo.png) -## Prerequisites +The Jock compiler is written in [Hoon](https://docs.urbit.org) and runs on the NockApp architecture, [part of Nockchain](https://github.com/zorp-corp/nockchain). -Jock requires a `choo` NockApp executable. The `Makefile` can retrieve the latest tagged `choo`. For Linux, run the following: +Jock code results in Nock which can be run on any Nock VM ([Sword](https://github.com/zorp-corp/sword), [Vere](https://github.com/urbit/vere)). -```bash -make update-choo -``` +## Resources -If you would like a nightly build of `choo`, or if you are using something other than Linux, [clone this repo](https://github.com/zorp-corp/nockapp) and build. -Then copy the `choo` executable to the root folder. +### Jock -## Building +- [Jock tutorial repo](https://github.com/zorp-corp/jockapp-tutorial) +- [Jock tutorial site](https://docs.jock.org/getting-started) +- [Jock docs](https://docs.jock.org) +- [@JockNockISA on X](https://x.com/JockNockISA) -To build and run Jock with tests: +### Nock -```bash -make release +Nock serves as the instruction set architecture for [Nockchain](https://nockchain.org), [zkVM](https://zorp.io/), and [Urbit](https://urbit.org), among other projects. The Nock ISA is a minimalist combinator calculus. All computations are reduced to a set of twelve opcodes that are easy to reason about and make proofs about. -# run all codes in /lib/tests -./target/release/jock-testing exec-all -# - or - -make release-test-all +- [Zorp, “Nock Definition”](https://zorp.io/nock/) +- [Urbit, “Nock Definition” (with discussion)](https://docs.urbit.org/language/nock/reference/definition) +- [~timluc-miptev, “Nock for Everyday Coders” (tutorial)](https://blog.timlucmiptev.space/part1.html) -# run specific code in /lib/tests -./target/release/jock-testing test-n 0 -# - or - -make test 0 -``` +### NockApp + +The NockApp framework consists of Sword (formerly Ares), a runtime VM interpreter for Nock, the Crown Rust interface, and `hoonc`, which builds Nock programs from Jock or Hoon into executable standalones. + +- [NockApp in Nockchain](https://github.com/zorp-corp/nockchain) +- [Announcement post](https://zorp.io/blog/nockapp-dev-alpha) + +## Setup + +1. Download and build `hoonc`, a NockApp compiler which forms part of Nockchain. + + - ​GitHub: [zorp-corp/nockchain](https://github.com/zorp-corp/nockchain) + + ```sh + make install-hoonc + ``` + +2. In a separate location, download the Jock language repo (this repo). + + - ​GitHub: [zorp-corp/jock-lang](https://github.com/zorp-corp/jock-lang) + +3. Copy `hoonc` from `nockchain/target/build/release` to the root of `jock-lang`. + + ```sh + cp nockchain/target/build/release/hoonc jock-lang/ + ``` + +4. Compile the examples: + + ```sh + cd jockapp-tutorial + make release + ``` + +5. Run one of the available demos from `/hoon/lib/tests`: + + ```bash + ./target/release/jocktest exec 0 + # - or - + make exec 0 + ``` + + The demo will output several pieces of information: + + 1. `%parse`, the tokenization. + 2. `%jeam`, the Jock abstract syntax tree (AST). + 3. `%mint`, the compiled Nock (which will be rather long). + 4. `%jype`, the Jock result type. + 5. `%nock`, the evaluated Nock result, as an atom. + + Alternatively, run all codes: + + ```bash + ./target/release/jocktest exec-all + # - or - + make release-exec-all + ``` + + Run a single test: + + ```bash + ./target/release/jocktest test 25 + # - or - + make test 25 + ``` + + Or run all tests (slow): + + ```bash + ./target/release/jocktest test-all + # - or - + make release-test-all + ``` + +## Releases + +- [0.0.0-dp, Developer Preview](https://zorp.io/blog/jock), ~2024.10.24 +- 0.1.0-alpha, upcoming diff --git a/assets/jocktest.jam b/assets/jocktest.jam index 5c2c8d0..4e250fd 100644 Binary files a/assets/jocktest.jam and b/assets/jocktest.jam differ diff --git a/hoon/lib/jock.hoon b/hoon/lib/jock.hoon index d4b4c89..25d3190 100644 --- a/hoon/lib/jock.hoon +++ b/hoon/lib/jock.hoon @@ -226,9 +226,8 @@ $^ [p=jock q=jock] $% [%let type=jype val=jock next=jock] [%func type=jype body=jock next=jock] - [%class state=jype arms=(map term jock)] :: TODO do we want payload? + [%class state=jype arms=(map term jock)] [%method type=jype body=jock] - :: support value returns? [%edit limb=(list jlimb) val=jock next=jock] [%increment val=jock] [%cell-check val=jock] @@ -321,7 +320,7 @@ $% :: %atom is a basic numeric type with constant flag (%.y = constant) [%atom p=jatom-type q=?(%.y %.n)] :: %core is a callable function with arguments and returns - [%core p=core-body q=(unit jype)] + [%core p=core-body q=(unit jype)] :: q is context supplied to core :: %limb is a reference to a limb in the current core [%limb p=(list jlimb)] :: %fork is a branch point (as in an if-else) @@ -331,10 +330,19 @@ :: %set [%set type=jype] :: %hoon is a vase for the supplied subject (presumably hoon or tiny) - [%hoon p=vase] + :: [%hoon p=vase] + [%hoon p=truncated-vase] + :: %state is a container for class state + [%state p=jype] :: %none is a null type (as for undetermined variable labels) [%none p=(unit term)] == +:: ++$ truncated-vase + $+ truncated-vase + $: p=type + q=noun + == :: Jype atom base types; corresponds to jatom tags +$ jatom-type $+ jatom-type @@ -691,10 +699,14 @@ [[%edit limbs val jock] tokens] :: - %call ('((' is the next token) ?: |((has-punctuator -.tokens %'((') (has-punctuator -.tokens %'(')) + ?: (has-punctuator +<.tokens %')') + :: no argument + =^ arg tokens + [~ +>.tokens] + [[%call [%limb limbs] ~] tokens] =? tokens ?=(%'((' ->.tokens) [[%punctuator %'('] +.tokens] =^ arg tokens (match-pair-inner-jock tokens) - :: TODO: check if we're in a compare [[%call [%limb limbs] `arg] tokens] [[%limb limbs] tokens] :: @@ -720,6 +732,13 @@ ->.tokens =/ nom (get-name -.tokens) ?~ nom ~|("expect name. token: {<-.tokens>}" !!) + :: Short-circuit on built-in primitive types + ?: =('Atom' u.nom) [[%atom %number %.n]^u.nom +.tokens] + ?: =('Uint' u.nom) [[%atom %number %.n]^u.nom +.tokens] + ?: =('Uhex' u.nom) [[%atom %hexadecimal %.n]^u.nom +.tokens] + ?: =('String' u.nom) [[%atom %string %.n]^u.nom +.tokens] + ?: =('Loob' u.nom) [[%atom %loobean %.n]^u.nom +.tokens] + :: =. tokens +.tokens ?. =([%punctuator %'(('] -.tokens) :: XXX fix when finishing type TODO @@ -734,11 +753,11 @@ =^ jyp-two tokens (match-jype tokens) :: TODO: support implicit right-association (what's a good test case?) [[jyp-one `jyp-two] tokens] - [?~(q.r `jype`p.r `jype`[[p.r u.q.r] u.nom]) tokens] + [?~(q.r `jype`p.r `jype`[[p.r u.q.r] %$]) tokens] ?> (got-punctuator -.tokens %')') ?: ?=(%list type) [[;;(jype-leaf [type jyp]) u.nom] +.tokens] ?: ?=(%set type) [[;;(jype-leaf [type jyp]) u.nom] +.tokens] - [jyp(name u.nom) +.tokens] + [[[%state jyp] u.nom] +.tokens] :: ++ match-keyword |= =tokens @@ -756,9 +775,10 @@ =^ val tokens (match-jock +.tokens) ?> (got-punctuator -.tokens %';') - =^ jock tokens + =^ next tokens (match-jock +.tokens) - [[%let jype val jock] tokens] + :_ tokens + [%let jype val next] :: :: func inc(n:@) -> @ { +(n) }; :: [%func name=jype body=jock next=jock] @@ -972,7 +992,8 @@ ?> =(%name +<-.tokens) ;;(term +<+.tokens) =? tokens (has-keyword -.tokens %as) +>.tokens - ?> (got-punctuator -.tokens %';') + ?> ~| 'expected terminator ; after import' + (got-punctuator -.tokens %';') =^ q tokens (match-jock +.tokens) :_ tokens @@ -980,6 +1001,7 @@ :: %crash [[%crash ~] tokens] + :: == :: :: Match tokens into jype information. @@ -1371,16 +1393,17 @@ :: or a name/type reference to it. ++ get-limb |= lis=(list jlimb) - ^- (each (pair jype (list jwing)) (trel jype (list jlimb) (list jwing))) + ^- (unit (each (pair jype (list jwing)) (trel jype (list jlimb) (list jwing)))) |^ :: The resulting jwing. =/ res=(list jwing) ~ :: The resulting axis, default subject. =/ ret=jwing 1 - ?: =(~ lis) ~|("no limb requested" !!) + ?: =(~ lis) ~|("no limb requested" ~) |- ?~ lis :: If we've searched to the bottom, return what we have. + :- ~ :+ %& jyp :: If self, return the wing. @@ -1398,17 +1421,17 @@ ?: |(?=(%name -<.lis) ?=(%type -<.lis) !=(%$ name.jyp)) (axis-at-name ->.lis) `[->.lis] - ?~ axi ~|("limb not found: {} in {}" !!) + ?~ axi ~|("limb not found: {} in {}" ~) :: If it exists and we need to search further, do so. ?^ u.axi ?~ new-jyp=(type-at-axis (peg +.u.axi -.u.axi)) - ~| no-type-at-axis+[axi jyp] - !! + ~|(no-type-at-axis+[axi jyp] ~) $(lis t.lis, jyp u.new-jyp, res [u.axi res]) ?~ new-jyp=(type-at-axis u.axi) - ~|(%expect-type-at-axis !!) + ~|(%expect-type-at-axis ~) :: If this is a Hoon library, then return now. ?: =(%hoon -<.u.new-jyp) + :- ~ :- %| :+ u.new-jyp t.lis @@ -1425,6 +1448,8 @@ ?=(%type ->-<.u.new-jyp) :: that refers to a class type !=(~ t.lis) :: that is not just a name == + =. ret (peg ?^(ret 1 ret) u.axi) + :- ~ :+ %& u.new-jyp ?: =(ret 1) @@ -1440,7 +1465,7 @@ :: TODO: in order to support additional limbs :: after a core resolution, we require the return type :: to be a (list jwing) - !! + ~ =. ret (peg ret u.axi) ?> (lth ret (bex 63)) :: disallow axes larger than Goldilocks prime field $(lis t.lis, jyp u.new-jyp) @@ -1523,21 +1548,22 @@ r l :: + :: Construct subject for when core is called. ++ call-core |= [%core p=core-body q=(unit jype)] ^- jype ?: ?=(%& -.p) ~| %call-lambda - =/ body-type + =/ out-type :: TODO: need to put the return type here, with all names stripped - untyped-j + out.p.p ?~ inp.p.p ?~ q - body-type - [body-type u.q]^%$ + [out-type untyped-j]^%$ + [out-type u.q]^%$ ?~ q - [body-type u.inp.p.p]^%$ - [body-type [u.inp.p.p u.q]^%$]^%$ + [out-type u.inp.p.p]^%$ + [out-type [u.inp.p.p u.q]^%$]^%$ ~| %call-object =/ cor-lis=(list [name=term val=jype]) ~(tap by p.p) ?> ?=(^ cor-lis) @@ -1621,9 +1647,10 @@ :: =/ [lyp=jype ljw=(list jwing)] :: (~(get-limb jt jyp) +.p.type.j) =/ lim (~(get-limb jt jyp) +.p.type.j) - ?> ?=(%& -.lim) - =/ lyp=jype p.p.lim - =/ ljw=(list jwing) q.p.lim + ?~ lim ~|('limb not found' !!) + ?> ?=(%& -.u.lim) + =/ lyp=jype p.p.u.lim + =/ ljw=(list jwing) q.p.u.lim `[[%limb ~[[%type name.val-jyp]]] name.type.j] ?: (is-type name.val-jyp) :: case 4, let name = Type(value); @@ -1641,7 +1668,6 @@ ~| '%let: value type does not nest in declared type' ~| "have: {}\0aneed: {}" !! - =? inferred-type ?=(%limb -<.type.j) `u.inferred-type(name name.type.j) (~(cons jt u.inferred-type) jyp) ~| %let-next =+ [nex nex-jyp]=$(j next.j) @@ -1663,26 +1689,26 @@ :: %method =+ [val val-jyp]=$(j body.j) - =. jyp - =/ inferred-type - (~(unify jt type.j) val-jyp) - ?~ inferred-type - ~| '%func: value type does not nest in declared type' - ~| ['have:' val-jyp 'need:' type.j] - !! - (~(cons jt u.inferred-type) jyp) + =/ inferred-type + (~(unify jt type.j) val-jyp) + ?~ inferred-type + ~| '%func: value type does not nest in declared type' + ~| ['have:' val-jyp 'need:' type.j] + !! [val val-jyp] :: %class ~| %class :: door sample =/ sam-nok (type-to-default state.j) - :: unified context including door sample in payload + :: unified context including door sample in context + ?> ?=(%state -<.state.j) + :: exe-jyp has list of untyped arms plus door state =/ exe-jyp=jype - %- ~(cons jt state.j) - [[%core %|^(~(run by arms.j) |=(* untyped-j)) `state.j] %$] - :: unify w/ context? cons? zeroing out is separate from - :: whether class exposes context to lower things + :: instead of untyped, assume correct output type in exe-jyp + =/ context=jype + (~(cons jt p.p.state.j) jyp) + [[%core %|^(~(run by arms.j) |=(* untyped-j)) `context] %$] =/ lis=(list [name=term val=jock]) ~(tap by arms.j) ?> ?=(^ lis) :: core and jype of first arm @@ -1709,15 +1735,20 @@ %edit =/ [typ=jype axi=@] =/ res (~(get-limb jt jyp) limb.j) - ?> ?=(%& -.res) - ?> ?=(^ q.p.res) - ?> ?=(@ i.q.p.res) - [p.p.res i.q.p.res] + ?~ res ~|('limb not found' !!) + ?> ?=(%& -.u.res) + ?> ?=(^ q.p.u.res) + ?> ?=(@ i.q.p.u.res) + [p.p.u.res i.q.p.u.res] ~| %edit-value =+ [val val-jyp]=$(j val.j) ~| %edit-next + :: assert type compatibility ?> ?=(^ (~(unify jt typ) val-jyp)) + :: expose updated value address =+ [nex nex-jyp]=$(j next.j) + :: =? val (is-type name.val-jyp) + :: [%10 [6 val] [%0 2]] [[%7 [%10 [axi val] %0 1] nex] nex-jyp] :: %increment @@ -1740,14 +1771,14 @@ :: %object ~| %object - =/ pay=(unit (pair nock jype)) + =/ con=(unit (pair nock jype)) ?~ q.j :: TODO: should I put `jyp here? ~ `$(j u.q.j) =/ exe-jyp=jype :: TODO: should we default to `jyp? - [%core %|^(~(run by p.j) |=(* untyped-j)) ?~(pay ~ `q.u.pay)]^%$ + [%core %|^(~(run by p.j) |=(* untyped-j)) ?~(con ~ `q.u.con)]^%$ =/ lis=(list [name=term val=jock]) ~(tap by p.j) ?> ?=(^ lis) =+ [cor-nok one-jyp]=$(j val.i.lis, jyp exe-jyp) @@ -1757,11 +1788,11 @@ => .(lis `(list [name=term val=jock])`+.lis) |- ?~ lis - ?~ pay + ?~ con :- [%1 cor-nok] [%core %|^cor-jyp ~]^%$ - :- [[%1 cor-nok] p.u.pay] - [%core %|^cor-jyp `q.u.pay]^%$ + :- [[%1 cor-nok] p.u.con] + [%core %|^cor-jyp `q.u.con]^%$ =+ [mor-nok mor-jyp]=^$(j val.i.lis, jyp exe-jyp) %_ $ lis t.lis @@ -1853,7 +1884,7 @@ == :: %call - ?+ -.func.j !! + ?+ -.func.j ~|('must call a limb' !!) %limb =/ old-jyp jyp ~| %call-limb @@ -1862,25 +1893,39 @@ :: At this point it's looking for a %core (either func or class). :: We need to resolve several cases (in no particular order): :: 1. func function (single jlimb) - :: 2. class method (definition) (one jlimb) (single or multiple args) + :: func(args) + :: 2. class constructor (one jlimb) (single or multiple args) + :: Type(state) :: 3. class method (in instance) (two jlimbs, first a name) + :: instance.method(args) :: 4. lambda function (assigned to variable) (single jlimb) + :: lambda(args)->out{} :: 5. class method (from other method) + :: method(args) :: 6. library call (at least two jlimbs, the first being a library name) + :: library.func(args) + :: 7. class instance leg (single jlimb, name in state) + :: instance.state() :: =/ [typ=jype ljl=(list jlimb) ljw=(list jwing)] ?. =([%axis 0] -.limbs) =/ lim (~(get-limb jt jyp) limbs) - ?: ?=(%& -.lim) - [p.p.lim ~ q.p.lim] - p.lim + ?~ lim ~|('limb not found' !!) + ?: ?=(%& -.u.lim) + [p.p.u.lim ~ q.p.u.lim] + p.u.lim :: special case: we're looking for $ =/ ret (~(find-buc jt jyp)) ?~ ret ~|("couldn't find $ in {}" !!) [-.u.ret ~ ~[[2 +.u.ret]]] + :: ?: !=(~ ljl) :: case 6, library call + :: library.func(args) :: Construct a gate call from the rest of the limbs. + :: We have to +slam the gate into the Hoon library, + :: thus two separate wings. + ~| %call-case-6 ?> ?=(^ limbs) ?~ arg.j ~|("expect function argument" !!) =+ [val val-jyp]=$(j u.arg.j) @@ -1900,24 +1945,40 @@ +<+<.qmin %0 -.ljw + :: equivalent to Hoon: + :: :+ %7 + :: [%0 -.ljw] + :: :^ %9 + :: +<+<.qmin + :: %0 + :: 1 =+ [arg arg-jyp]=$(j u.arg.j, jyp old-jyp) [%9 2 %10 [6 [%7 [%0 3] arg]] %0 2] - :: class method call by constructor (case 2), multiple arguments + :: + :: class constructor (case 2), multiple arguments :: [%call func=[%limb p=(list jlimb)] arg=(unit jock)] + :: Type(state) ?^ -<.typ ~| %call-case-2-args ?: ?=(%type -<.limbs) ?~ arg.j ~|("expect method argument" !!) =+ [val val-jyp]=$(j u.arg.j) :: This is a class, so we know that the state is at the head. - =/ inferred-type (~(unify jt -<.typ) val-jyp) + ?> ?=(%state -<-<.typ) + =/ inferred-type (~(unify jt -<->.typ) val-jyp) ?~ inferred-type ~| '%call: argument value type does not nest in method type' ~| "have: {}\0aneed: {}" !! =. inferred-type `u.inferred-type(name ->.limbs) - :- val - u.inferred-type + :_ u.inferred-type + :+ %8 + :: parent of axis + [%0 (div ;;(@ +:(resolve-wing ljw)) 2)] + :+ %10 + [6 %7 [%0 3] val] + [%0 2] + :: ?> ?=(%name -<.limbs) ?~ arg.j ~|("expect method argument" !!) =+ [val val-jyp]=$(j u.arg.j) @@ -1931,12 +1992,14 @@ u.inferred-type :: :: class method call by constructor (case 2), single argument - :: [%call func=[%limb p=(list jlimb)] arg=(unit jock)] + :: [%call func=[%limb p=(list jlimb)] arg=(unit jock)] + :: Type(state) ?. ?=(%core -.p.typ) ?: ?=(%type -<.limbs) ~| %call-case-2 + :: XXX possibly unused now ?> ?=(%type -<.limbs) - ?~ arg.j ~|("expect method argument" !!) + ?~ arg.j ~|("expect constructor state argument" !!) =+ [val val-jyp]=$(j u.arg.j) :: XXX this checks to make sure state and input actually nest =/ inferred-type (~(unify jt typ) val-jyp) @@ -1948,41 +2011,64 @@ :- val [[%limb limbs] ->.limbs] ?> ?=(%name -<.limbs) - ~| %call-case-3 - :: In this case, we have located the class instance - :: but now need the method and the argument to construct - :: the Nock. ?> ?=(%limb -.p.typ) :: Get class definition for instance. This is a cons of :: the state and the methods (arms) as a core. =/ lim (~(get-limb jt jyp) p.p.typ) - ?> ?=(%& -.lim) - =/ dyp=jype p.p.lim - =/ ljd=(list jwing) q.p.lim + ?~ lim ~|('limb not found' !!) + ?> ?=(%& -.u.lim) + =/ dyp=jype p.p.u.lim + =/ ljd=(list jwing) q.p.u.lim =/ cyp ;;(jype ->.dyp) ?> ?=(%core -<.cyp) ?: ?=(%& -.p.p.cyp) ~|("class cannot be lambda" !!) :: Search for the door defn in the subject jype. =/ gat-nom `cord`+<+.limbs - =/ gim (~(get-limb jt dyp) +.limbs) - ?> ?=(%& -.gim) - =/ gyp=jype p.p.gim - =/ ljg=(list jwing) q.p.gim + =/ gat-lim (~(get-limb jt dyp) +.limbs) + ?~ gat-lim + ~| %call-case-7 + :: Getter for state variables. + :: instance.state() + =/ sta -<.dyp + ?> ?=(%state -<.sta) + =/ stn p.p.sta + =/ ljs (~(get-limb jt +.stn) +.limbs) + ?~ ljs ~|('leg not found' !!) + :_ *jype + :+ %7 + (resolve-wing ljw) + :+ %7 + [%0 6] :: door state is always at sample +6 + [%0 ;;(@ +>-.u.ljs)] + :: + ~| %call-case-3 + :: class method call in instance (case 3) + :: instance.method(args) + :: In this case, we have located the class instance + :: but now need the method and the argument to construct + :: the Nock. + ?> ?=(%& -.u.gat-lim) + =/ gat-jyp=jype p.p.u.gat-lim + =/ ljg=(list jwing) q.p.u.gat-lim =/ gat (~(get by p.p.p.cyp) gat-nom) ?~ gat ~|("gate not found: {} in {}" !!) ?> ?=(%core -<.u.gat) ?. ?=(%& -.p.p.u.gat) ~|("method cannot be lambda" !!) + =/ dor-nom -<+.dyp :: class name, used to determine return type + :: Output is a regular type. ^- [nock jype] :_ out.p.p.p.u.gat ?~ arg.j (resolve-wing ljd) - :: Compose a class (door), which requires some tree math. :+ %8 - (resolve-wing ljg) + :+ %7 + (resolve-wing ljw) + [%9 ;;(@ -<.ljg) %0 1] =+ [arg arg-jyp]=$(j u.arg.j, jyp old-jyp) [%9 2 %10 [6 [%7 [%0 3] arg]] %0 2] :: :: traditional function call (case 1) + :: func(args) ?: ?=(%& -.p.p.typ) ~| %call-case-1 :_ out.p.p.p.typ @@ -1993,25 +2079,29 @@ =+ [arg arg-jyp]=$(j u.arg.j, jyp old-jyp) [%9 2 %10 [6 [%7 [%0 1] arg]] %0 1] ?~ arg.j + :: no or default args (resolve-wing ljw) + :: supplied args, mutate sample :+ %8 (resolve-wing ljw) =+ [arg arg-jyp]=$(j u.arg.j, jyp old-jyp) [%9 2 %10 [6 [%7 [%0 3] arg]] %0 2] :: :: lambda function call (case 4) + :: lambda(args)->out{} ?> &(=(1 (lent p.func.j)) !?=(%type -<.limbs)) ~| %call-case-4 :_ =/ gat ;;([%core p=core-body q=(unit jype)] -:(~(got by p.p.p.typ) +:(snag 0 p.func.j))) ?> ?=(%& -.p.gat) out.p.p.gat ?~ arg.j + :: no or default args (resolve-wing ljw) + :: supplied args, mutate sample :+ %8 (resolve-wing ljw) =+ [arg arg-jyp]=$(j u.arg.j, jyp old-jyp) [%9 2 %10 [6 [%7 [%0 3] arg]] %0 2] - :: :: %lambda ~| %call-lambda @@ -2095,26 +2185,54 @@ %limb ~| %limb =/ lim (~(get-limb jt jyp) p.j) - ?> ?=(%& -.lim) - =/ res=(pair jype (list jwing)) p.lim + ?~ lim ~|('limb not found' !!) + ?> ?=(%& -.u.lim) :: +each resolution + =/ res=(pair jype (list jwing)) p.u.lim [(resolve-wing q.res) p.res] :: %lambda ~| %enter-lambda ?> ?=(^ inp.arg.p.j) - =/ pay=(unit (pair nock jype)) + =/ con=(unit (pair nock jype)) ?~ context.p.j ~ `$(j u.context.p.j) =/ input-default (type-to-default u.inp.arg.p.j) ~| %enter-lambda-body :: TODO: wtf? - =/ lam-jyp (lam-j arg.p.j ?~(pay `jyp `q.u.pay)) + =/ lam-jyp (lam-j arg.p.j ?~(con `jyp `q.u.con)) + :: 1. Get body jype =+ [body body-jyp]=$(j body.p.j, jyp lam-jyp) - ?~ pay + ?: (is-type name.out.arg.p.j) + :: instance return from method + ?~ con + :_ (lam-j arg.p.j `jyp) + :+ %8 + input-default + :- + :- %1 + :+ %8 + [%0 7] + :+ %10 + [6 %7 [%0 3] body] + [%0 2] + [%0 1] + :_ (lam-j arg.p.j `q.u.con) + :+ %8 + input-default + :- + :- %1 + :+ %8 + [%0 7] + :+ %10 + [6 %7 [%0 3] body] + [%0 2] + p.u.con + :: normal return + ?~ con :_ (lam-j arg.p.j `jyp) [%8 input-default [%1 body] %0 1] :: XXX for subject - :_ (lam-j arg.p.j `q.u.pay) - [%8 input-default [%1 body] p.u.pay] + :_ (lam-j arg.p.j `q.u.con) + [%8 input-default [%1 body] p.u.con] :: %list ~| %list @@ -2265,8 +2383,9 @@ :: %limb =/ lim (~(get-limb jt jyp) p.p.j) - ?> ?=(%& -.lim) :: if you want from a library then resolve it yourself - $(j p.p.lim) + ?~ lim ~|('limb not found' !!) + ?> ?=(%& -.u.lim) :: if you want from a library then resolve it yourself + $(j p.p.u.lim) :: %fork $(j p.p.j) :: @@ -2275,6 +2394,8 @@ %set [%1 0] :: %hoon [%1 0] + :: + %state $(j p.p.j) :: %none [%1 0] == diff --git a/hoon/lib/test-jock.hoon b/hoon/lib/test-jock.hoon index 7105a87..ce95cca 100644 --- a/hoon/lib/test-jock.hoon +++ b/hoon/lib/test-jock.hoon @@ -26,12 +26,16 @@ /* sets %jock /lib/tests/sets/jock /* type-point %jock /lib/tests/type-point/jock /* type-point-2 %jock /lib/tests/type-point-2/jock +/* type-point-3 %jock /lib/tests/type-point-3/jock +/* class-state %jock /lib/tests/class-state/jock +/* class-ops %jock /lib/tests/class-ops/jock /* infix-comparator %jock /lib/tests/infix-comparator/jock /* infix-arithmetic %jock /lib/tests/infix-arithmetic/jock /* hoon-ffi %jock /lib/tests/hoon-ffi/jock /* hoon-arithmetic %jock /lib/tests/hoon-arithmetic/jock /* hoon-alias %jock /lib/tests/hoon-alias/jock /* fib %jock /lib/tests/fib/jock +/* lists-indexing %jock /lib/tests/lists-indexing/jock :: /* test-let-edit %hoon /tests/lib/let-edit/hoon /* test-let-inner-exp %hoon /tests/lib/let-inner-exp/hoon @@ -50,7 +54,6 @@ /* test-multi-limb %hoon /tests/lib/multi-limb/hoon /* test-compose %hoon /tests/lib/compose/hoon /* test-compose-cores %hoon /tests/lib/compose-cores/hoon -:: /* test-baby %hoon /tests/lib/baby/hoon /* test-comparator %hoon /tests/lib/comparator/hoon /* test-lists %hoon /tests/lib/lists/hoon /* test-lists-nested %hoon /tests/lib/lists-nested/hoon @@ -60,12 +63,16 @@ /* test-sets %hoon /tests/lib/sets/hoon /* test-type-point %hoon /tests/lib/type-point/hoon /* test-type-point-2 %hoon /tests/lib/type-point-2/hoon +:: /* test-type-point-3 %hoon /tests/lib/type-point-3/hoon +:: /* test-class-state %hoon /tests/lib/class-state/hoon +:: /* test-class-ops %hoon /tests/lib/class-ops/hoon :: /* test-infix-comparator %hoon /tests/lib/infix-comparator/hoon :: /* test-infix-arithmetic %hoon /tests/lib/infix-arithmetic/hoon :: /* test-hoon-ffi %hoon /tests/lib/hoon-ffi/hoon :: /* test-hoon-arithmetic %hoon /tests/lib/hoon-arithmetic/hoon :: /* test-hoon-alias %hoon /tests/lib/hoon-alias/hoon :: /* test-fib %hoon /tests/lib/fib/hoon +:: /* test-lists-indexing %hoon /tests/lib/lists-indexing/hoon :: |% ++ list-jocks @@ -87,7 +94,6 @@ [%multi-limb q.multi-limb] :: 14 [%compose q.compose] :: 15 [%compose-cores q.compose-cores] :: 16 - :: [%baby q.baby] [%comparator q.comparator] :: 17 [%lists q.lists] :: 18 [%lists-nested q.lists-nested] :: 19 @@ -97,12 +103,16 @@ [%sets q.sets] :: 23 [%type-point q.type-point] :: 24 [%type-point-2 q.type-point-2] :: 25 - [%infix-comparator q.infix-comparator] :: 26 - [%infix-arithmetic q.infix-arithmetic] :: 27 - [%hoon-ffi q.hoon-ffi] :: 28 - [%hoon-arithmetic q.hoon-arithmetic] :: 29 - [%hoon-alias q.hoon-alias] :: 30 - [%fib q.fib] :: 31 + [%type-point-3 q.type-point-3] :: 26 + [%class-state q.class-state] :: 27 + [%class-ops q.class-ops] :: 28 + [%infix-comparator q.infix-comparator] :: 29 + [%infix-arithmetic q.infix-arithmetic] :: 30 + [%hoon-ffi q.hoon-ffi] :: 31 + [%hoon-arithmetic q.hoon-arithmetic] :: 32 + [%hoon-alias q.hoon-alias] :: 33 + [%fib q.fib] :: 34 + [%lists-indexing q.lists-indexing] :: 35 == :: ++ test-jocks @@ -128,10 +138,14 @@ [%test-inline-lambda-call-jeam test-jeam:test-inline-lambda-call] [%test-inline-lambda-call-mint test-mint:test-inline-lambda-call] [%test-inline-lambda-call-nock test-nock:test-inline-lambda-call] + [%test-inline-lambda-no-arg-tokens test-tokenize:test-inline-lambda-no-arg] + [%test-inline-lambda-no-arg-jeam test-jeam:test-inline-lambda-no-arg] + [%test-inline-lambda-no-arg-mint test-mint:test-inline-lambda-no-arg] + [%test-inline-lambda-no-arg-nock test-nock:test-inline-lambda-no-arg] [%test-in-subj-call-tokens test-tokenize:test-in-subj-call] - :: [%test-in-subj-call-jeam test-jeam:test-in-subj-call] - :: [%test-in-subj-call-mint test-mint:test-in-subj-call] - :: [%test-in-subj-call-nock test-nock:test-in-subj-call] + [%test-in-subj-call-jeam test-jeam:test-in-subj-call] + [%test-in-subj-call-mint test-mint:test-in-subj-call] + [%test-in-subj-call-nock test-nock:test-in-subj-call] [%test-if-else-tokens test-tokenize:test-if-else] [%test-if-else-jeam test-jeam:test-if-else] [%test-if-else-mint test-mint:test-if-else] @@ -152,10 +166,6 @@ [%test-inline-point-jeam test-jeam:test-inline-point] [%test-inline-point-mint test-mint:test-inline-point] [%test-inline-point-nock test-nock:test-inline-point] - [%test-inline-lambda-no-arg-tokens test-tokenize:test-inline-lambda-no-arg] - [%test-inline-lambda-no-arg-jeam test-jeam:test-inline-lambda-no-arg] - [%test-inline-lambda-no-arg-mint test-mint:test-inline-lambda-no-arg] - [%test-inline-lambda-no-arg-nock test-nock:test-inline-lambda-no-arg] [%test-dec-tokens test-tokenize:test-dec] [%test-dec-jeam test-jeam:test-dec] [%test-dec-mint test-mint:test-dec] @@ -176,10 +186,6 @@ [%test-compose-cores-jeam test-jeam:test-compose-cores] [%test-compose-cores-mint test-mint:test-compose-cores] [%test-compose-cores-nock test-nock:test-compose-cores] - :: [%test-baby-tokens test-tokenize:test-baby] - :: [%test-baby-jeam test-jeam:test-baby] - :: [%test-baby-mint test-mint:test-baby] - :: [%test-baby-nock test-nock:test-baby] [%test-comparator-tokens test-tokenize:test-comparator] [%test-comparator-jeam test-jeam:test-comparator] [%test-comparator-mint test-mint:test-comparator] @@ -212,10 +218,18 @@ [%test-type-point-jeam test-jeam:test-type-point] [%test-type-point-mint test-mint:test-type-point] [%test-type-point-nock test-nock:test-type-point] - [%test-type-point-2-tokens test-tokenize:test-type-point-2] - [%test-type-point-2-jeam test-jeam:test-type-point-2] - [%test-type-point-2-mint test-mint:test-type-point-2] - [%test-type-point-2-nock test-nock:test-type-point-2] + :: [%test-type-point-2-tokens test-tokenize:test-type-point-2] + :: [%test-type-point-2-jeam test-jeam:test-type-point-2] + :: [%test-type-point-2-mint test-mint:test-type-point-2] + :: [%test-type-point-2-nock test-nock:test-type-point-2] + :: [%test-type-point-3-tokens test-tokenize:test-type-point-3] + :: [%test-type-point-3-jeam test-jeam:test-type-point-3] + :: [%test-type-point-3-mint test-mint:test-type-point-3] + :: [%test-type-point-3-nock test-nock:test-type-point-3] + :: [%test-class-state-tokens test-tokenize:test-class-state] + :: [%test-class-state-jeam test-jeam:test-class-state] + :: [%test-class-state-mint test-mint:test-class-state] + :: [%test-class-state-nock test-nock:test-class-state] :: [%test-infix-comparator-tokens test-tokenize:test-infix-comparator] :: [%test-infix-comparator-jeam test-jeam:test-infix-comparator] :: [%test-infix-comparator-mint test-mint:test-infix-comparator] @@ -240,6 +254,10 @@ :: [%test-fib-jeam test-jeam:test-fib] :: [%test-fib-mint test-mint:test-fib] :: [%test-fib-nock test-nock:test-fib] + :: [%test-lists-indexing-tokens test-tokenize:test-lists-indexing] + :: [%test-lists-indexing-jeam test-jeam:test-lists-indexing] + :: [%test-lists-indexing-mint test-mint:test-lists-indexing] + :: [%test-lists-indexing-nock test-nock:test-lists-indexing] == :: ++ parse @@ -347,6 +365,29 @@ ^- cord (crip "{}: {}") :: +++ test + |= i=@ + :: four indices in test-jocks list + =/ a (mul i 4) + =/ b +(a) + =/ c +(b) + =/ d +(c) + ~& [a b c d] + =/ [tag=@tas tan=tang] (snag a test-jocks) + ~& "{}" + ~& tan + ~& ["{}" tag `tape`(zing (turn tan |=(=tank ~(ram re tank))))] + =/ [tag=@tas tan=tang] (snag b test-jocks) + ~& > "{}" + ~& > ["{}" tag `tape`(zing (turn tan |=(=tank ~(ram re tank))))] + =/ [tag=@tas tan=tang] (snag c test-jocks) + ~& >> "{}" + ~& >> ["{}" tag `tape`(zing (turn tan |=(=tank ~(ram re tank))))] + =/ [tag=@tas tan=tang] (snag d test-jocks) + ~& >>> "{}" + ~& >>> ["{}" tag `tape`(zing (turn tan |=(=tank ~(ram re tank))))] + ~ +:: ++ test-all =| i=@ =/ len (lent list-jocks) diff --git a/hoon/lib/tests/class-ops.jock b/hoon/lib/tests/class-ops.jock new file mode 100644 index 0000000..50e2b34 --- /dev/null +++ b/hoon/lib/tests/class-ops.jock @@ -0,0 +1,39 @@ +compose + class Point(x:@ y:@) { + add(p:(x:@ y:@)) -> Point { + (x + p.x + y + p.y) + } + } +; + +let point-1 = Point(14 104); +point-1 = point-1.add(28 38); +(point-1.x() point-1.y()) + +/* +!= +=> mini=mini +=> + ^= door + |_ [x=@ y=@] + ++ add + |= p=[x=@ y=@] + [(add:mini x x.p) (add:mini y y.p)] + -- +=/ point-1 + ~(. door [14 104]) +=. point-1 ~(. door (add:point-1 [28 38])) +[+12 +13]:point-1 + +!= +=> mini=mini +=> + ^= door + |_ [x=@ y=@] + ++ add + |= p=[x=@ y=@] + [(add:mini x x.p) (add:mini y y.p)] + -- +~(. door [14 104]) +*/ diff --git a/hoon/lib/tests/class-state.jock b/hoon/lib/tests/class-state.jock new file mode 100644 index 0000000..fd0a520 --- /dev/null +++ b/hoon/lib/tests/class-state.jock @@ -0,0 +1,31 @@ +compose + class Point(x:@ y:@) { + inc(q:@) -> @ { + +(q) + } + } +; + +let point-1 = Point(70 80); +let point-2 = Point(90 100); +((point-2.x() point-2.y()) (point-1.x() point-1.y())) + +/* +!= +=> mini=mini +=> + ^= door + |_ [x=@ y=@] + ++ add + |= p=[x=@ y=@] + [(add:mini x x.p) (add:mini y y.p)] + ++ inc + |= q=@ + +(q) + -- +=/ point-1 + ~(. door [70 80]) +=/ point-2 + ~(. door [90 100]) +[[+13 +12]:point-2 [+13 +12]:point-1] +*/ diff --git a/hoon/lib/tests/comparator.jock b/hoon/lib/tests/comparator.jock index 7c05875..64e4431 100644 --- a/hoon/lib/tests/comparator.jock +++ b/hoon/lib/tests/comparator.jock @@ -1,5 +1,3 @@ -import hoon; - let a = true; let b = a == true; let c = a < 1; diff --git a/hoon/lib/tests/dec.jock b/hoon/lib/tests/dec.jock index 4a10ca0..ca0449e 100644 --- a/hoon/lib/tests/dec.jock +++ b/hoon/lib/tests/dec.jock @@ -9,4 +9,4 @@ func dec(a:@) -> @ { } }; -dec(5) +dec(43) diff --git a/hoon/lib/tests/fib.jock b/hoon/lib/tests/fib.jock index 612278e..c0d19ee 100644 --- a/hoon/lib/tests/fib.jock +++ b/hoon/lib/tests/fib.jock @@ -1,6 +1,6 @@ // fibonacci -func fib(n:@) -> @{ +func fib(n:@) -> @ { if n == 0 { 1 } else if n == 1 { diff --git a/hoon/lib/tests/hoon-ffi.jock b/hoon/lib/tests/hoon-ffi.jock index bb5ab5a..f269874 100644 --- a/hoon/lib/tests/hoon-ffi.jock +++ b/hoon/lib/tests/hoon-ffi.jock @@ -1,8 +1,12 @@ let a = 1; -let b = 2; +let b = 41; +let c = 43; +let d = 6; +let e = 7; +let f = 252; (hoon.add(a b) - hoon.sub(b a) - hoon.mul(b b) - hoon.div(b a) + hoon.sub(c a) + hoon.mul(d e) + hoon.div(f d) ) diff --git a/hoon/lib/tests/if-else.jock b/hoon/lib/tests/if-else.jock index 1d76238..6533924 100644 --- a/hoon/lib/tests/if-else.jock +++ b/hoon/lib/tests/if-else.jock @@ -1,7 +1,7 @@ let a: @ = 3; if a == 3 { - 72 + 42 } else { 17 } diff --git a/hoon/lib/tests/if-elseif-else.jock b/hoon/lib/tests/if-elseif-else.jock index b71e391..79610d9 100644 --- a/hoon/lib/tests/if-elseif-else.jock +++ b/hoon/lib/tests/if-elseif-else.jock @@ -1,7 +1,7 @@ let a: @ = 3; if a == 3 { - 72 + 42 } else if a == 5 { 17 } else { diff --git a/hoon/lib/tests/infix-arithmetic.jock b/hoon/lib/tests/infix-arithmetic.jock index e257367..bdf3968 100644 --- a/hoon/lib/tests/infix-arithmetic.jock +++ b/hoon/lib/tests/infix-arithmetic.jock @@ -1,8 +1,7 @@ -[ (1 + 2) - 3 - (5 * 6) / 7 - 10 % (9 ** 2) - 2 ** 4 - 1 + 2 + 3 - 5 - 4 + 1 - (5 - 4) + 1 +[ (41 + 5) - 4 + (126 * 2) / 6 + ((6 ** 2) + 6) % 100 + (2 ** 5) + 10 + 1 + 2 + 39 + (50 - 9) + 1 ] diff --git a/hoon/lib/tests/inline-lambda-call.jock b/hoon/lib/tests/inline-lambda-call.jock index 08b5630..b573979 100644 --- a/hoon/lib/tests/inline-lambda-call.jock +++ b/hoon/lib/tests/inline-lambda-call.jock @@ -1,3 +1,3 @@ lambda (b:@) -> @ { +(b) -}(23) +}(41) diff --git a/hoon/lib/tests/let-inner-exp.jock b/hoon/lib/tests/let-inner-exp.jock index c0ffde2..e81a7a6 100644 --- a/hoon/lib/tests/let-inner-exp.jock +++ b/hoon/lib/tests/let-inner-exp.jock @@ -1,5 +1,3 @@ -let a = { - 3 -}; +let a = 42; a diff --git a/hoon/lib/tests/lists-indexing.jock b/hoon/lib/tests/lists-indexing.jock new file mode 100644 index 0000000..4baa23d --- /dev/null +++ b/hoon/lib/tests/lists-indexing.jock @@ -0,0 +1,4 @@ +let a = [100 200 300 400 500]; +let b:List(@ @) = [(10 20) (30 40) (50 60)]; + +(hoon.snag(0 a) hoon.snag(2 b)) diff --git a/hoon/lib/tests/match-case.jock b/hoon/lib/tests/match-case.jock index 9107f8c..a5157db 100644 --- a/hoon/lib/tests/match-case.jock +++ b/hoon/lib/tests/match-case.jock @@ -1,9 +1,9 @@ let a: @ = 3; switch a { - 1 -> 2; - 2 -> 4; - 3 -> 8; - 4 -> 16; - _ -> 0; + 1 -> 0; + 2 -> 21; + 3 -> 42; + 4 -> 63; + _ -> 84; } diff --git a/hoon/lib/tests/match-type.jock b/hoon/lib/tests/match-type.jock index 63d724f..57a85b3 100644 --- a/hoon/lib/tests/match-type.jock +++ b/hoon/lib/tests/match-type.jock @@ -1,9 +1,9 @@ let a: @ = 3; match a { - %1 -> 2; - %2 -> 4; - %3 -> 8; - %4 -> 16; - _ -> 0; + %1 -> 0; + %2 -> 21; + %3 -> 42; + %4 -> 63; + _ -> 84; } diff --git a/hoon/lib/tests/multi-limb.jock b/hoon/lib/tests/multi-limb.jock index 59ffcbc..fd62234 100644 --- a/hoon/lib/tests/multi-limb.jock +++ b/hoon/lib/tests/multi-limb.jock @@ -1,3 +1,3 @@ -let a: (p:@ q:(k:@ v:@)) = (52 30 45); +let a: (p:@ q:(k:@ v:@)) = (52 30 42); (a.q.v) // reduces to a.q.v, so also testing tuple-of-one diff --git a/hoon/lib/tests/type-point-2.jock b/hoon/lib/tests/type-point-2.jock index 602b04e..7a4f184 100644 --- a/hoon/lib/tests/type-point-2.jock +++ b/hoon/lib/tests/type-point-2.jock @@ -1,17 +1,74 @@ compose - class Point(x:@ y:@) { - add(p:(x:@ y:@)) -> Point { - // we don't have infix operators yet so this is just a foobar - (p.x p.y) - } - sub(p:(x:@ y:@)) -> Point { - // we don't have infix operators yet so this is just a foobar - (p.x p.x p.x) - } + class Point(x:Uint y:Uint) { + add(p:(x:Uint y:Uint)) -> Point { + (x + p.x + y + p.y) + } + sub(p:(x:Uint y:Uint)) -> Point { + (x - p.x + y - p.y) + } } -; // end compose +; -// let name = value; -let origin = Point(50 60); -// value.method() -(origin.add(70 80) origin.sub(90 100)) +let point-1 = Point(104 124); +point-1 = point-1.add(38 38); +let point-2 = Point(30 40); +//&2 +point-2 = point-2.add(212 302); +//&1 +point-1 = point-1.sub(100 20); +//&1 +( (point-1.x() point-1.y()) + (point-2.x() point-2.y()) +)/**/ + +/* +:: Hoon equivalent program +!= +=> mini=mini +=> + ^= door + |_ [x=@ y=@] + ++ add + |= p=[x=@ y=@] + ~(. +> [(add:mini x x.p) (add:mini y y.p)]) + ++ sub + |= p=[x=@ y=@] + ~(. +> [(sub:mini x x.p) (sub:mini y y.p)]) + -- +=/ point-1 + ~(. door [104 124]) +=. point-1 (add:point-1 [38 38]) +=/ point-2 + ~(. door [30 40]) +=. point-1 (sub:point-1 [100 20]) +=. point-2 (add:point-2 [212 302]) +[[+12 +13]:point-1 [+12 +13]:point-2] + +Jock: +[7 [0 2] + 7 [8 [[1 0] 1 0] + [1 [8 [[1 0] 1 0] [1 [8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 1] + 8 [[1 0] 1 0] [1 [8 [9 3.061 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 3.061 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 1] 0 1] + 8 [8 [0 1] 10 [6 7 [0 3] [1 104] 1 124] 0 2] + 7 [10 [2 8 [7 [0 2] 9 4 0 1] 9 2 10 [6 7 [0 3] [1 38] 1 38] 0 2] 0 1] + 8 [8 [0 3] 10 [6 7 [0 3] [1 30] 1 40] 0 2] + 7 [10 [2 8 [7 [0 2] 9 4 0 1] 9 2 10 [6 7 [0 3] [1 212] 1 302] 0 2] 0 1] + 7 [10 [6 8 [7 [0 6] 9 5 0 1] 9 2 10 [6 7 [0 3] [1 100] 1 20] 0 2] 0 1] + [[7 [0 6] 7 [0 6] 0 2] 7 [0 6] 7 [0 6] 0 3] + [7 [0 2] 7 [0 6] 0 2] 7 [0 2] 7 [0 6] 0 3] + +Hoon: +[ 7 [0 4] + 7 [8 [1 0 0] + [1 [8 [1 0 0] [1 8 [0 7] 10 [6 7 [0 3] [8 [7 [0 31] 9 348 0 1] 9 2 10 [6 [0 124] 0 28] 0 2] 8 [7 [0 31] 9 348 0 1] 9 2 10 [6 [0 125] 0 29] 0 2] 0 2] 0 1] + 8 [1 0 0] [1 8 [0 7] 10 [6 7 [0 3] [8 [7 [0 31] 9 3.061 0 1] 9 2 10 [6 [0 124] 0 28] 0 2] 8 [7 [0 31] 9 3.061 0 1] 9 2 10 [6 [0 125] 0 29] 0 2] 0 2] 0 1] 0 1] + 8 [8 [0 1] 10 [6 7 [0 3] 1 104 124] 0 2] + 7 [10 [2 8 [7 [0 2] 9 4 0 1] 9 2 10 [6 7 [0 3] 1 38 38] 0 2] 0 1] +* 8 [8 [0 3] 10 [6 7 [0 3] 1 30 40] 0 2] + 7 [10 [2 8 [7 [0 2] 9 4 0 1] 9 2 10 [6 7 [0 3] 1 212 302] 0 2] 0 1] + 7 [10 [6 8 [7 [0 6] 9 5 0 1] 9 2 10 [6 7 [0 3] 1 100 20] 0 2] 0 1] + [7 [0 6] [0 12] 0 13] + 7 [0 2] [0 12] 0 13] +*/ diff --git a/hoon/lib/tests/type-point-3.jock b/hoon/lib/tests/type-point-3.jock new file mode 100644 index 0000000..2523448 --- /dev/null +++ b/hoon/lib/tests/type-point-3.jock @@ -0,0 +1,89 @@ +compose + class Point(x:Uint y:Uint) { + add(p:(x:Uint y:Uint)) -> Point { + (x + p.x + y + p.y) + } + add-cell(p:(x:Uint y:Uint)) -> (Uint Uint) { + (x + p.x + y + p.y) + } + inc(q:Uint) -> @ { + +(q) + } + } +; + +let one = Point(2 13); +let two = one.add(30 19); +let three = one.inc(41); +(two.add-cell(10 10) three) + +/* +:: Hoon equivalent program +!= +=> mini=mini +=> + ^= door + |_ [x=@ y=@] + ++ add + |= p=[x=@ y=@] + ~(. +> [(add:mini x x.p) (add:mini y y.p)]) + ++ add-cell + |= p=[x=@ y=@] + [(add:mini x x.p) (add:mini y y.p)] + ++ inc + |= q=@ + +(q) + -- +=/ one + ~(. door [2 13]) +=/ two (add:one [30 19]) +=/ three (inc:one 41) +[(add-cell:two [10 10]) three] + +<<<<<<< HEAD +Jock: +[7 [8 [[1 0] 1 0] [1 [8 [[1 0] 1 0] [1 8 [0 7] 10 [6 7 [0 3] [8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 2] 0 1] [8 [1 0] [1 4 0 6] 0 1] 8 [[1 0] 1 0] [1 [8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 1] 0 1] 8 [8 [0 1] 10 [6 7 [0 3] [1 2] 1 13] 0 2] 8 [8 [7 [0 2] 9 4 0 1] 9 2 10 [6 7 [0 3] [1 30] 1 19] 0 2] 8 [8 [7 [0 6] 9 10 0 1] 9 2 10 [6 7 [0 3] 1 41] 0 2] [8 [7 [0 6] 9 11 0 1] 9 2 10 [6 7 [0 3] [1 10] 1 10] 0 2] 0 2] + +Hoon: +======= +H: +>>>>>>> sigilante/itll-cost-you-an-arm-and-a-leg +[ 7 + [0 2] + 7 + [ 8 + [1 0 0] + [ 1 + [8 [1 0 0] [1 [8 [7 [0 31] 9 348 0 1] 9 2 10 [6 [0 124] 0 28] 0 2] 8 [7 [0 31] 9 348 0 1] 9 2 10 [6 [0 125] 0 29] 0 2] 0 1] + [8 [1 0 0] [1 8 [0 7] 10 [6 7 [0 3] [8 [7 [0 31] 9 348 0 1] 9 2 10 [6 [0 124] 0 28] 0 2] 8 [7 [0 31] 9 348 0 1] 9 2 10 [6 [0 125] 0 29] 0 2] 0 2] 0 1] + 8 [1 0] [1 4 0 6] 0 1] +<<<<<<< HEAD + 0 1] + 8 [8 [0 1] 10 [6 7 [0 3] 1 2 13] 0 2] 8 + [8 [7 [0 2] 9 10 0 1] 9 2 10 [6 7 [0 3] 1 30 19] 0 2] + 8 [8 [7 [0 6] 9 11 0 1] 9 2 10 [6 7 [0 3] 1 41] 0 2] + [8 [7 [0 6] 9 4 0 1] 9 2 10 [6 7 [0 3] 1 10 10] 0 2] 0 2] +======= + 0 1] + 8 [8 [0 1] 10 [6 7 [0 3] 1 2 13] 0 2] + 8 [8 [7 [0 2] 9 10 0 1] 9 2 10 [6 7 [0 3] 1 30 19] 0 2] + 8 [8 [7 [0 6] 9 11 0 1] 9 2 10 [6 7 [0 3] 1 41] 0 2] + [8 [7 [0 6] 9 4 0 1] 9 2 10 [6 7 [0 3] 1 10 10] 0 2] 0 2] + +J: +[7 + [8 [[1 0] 1 0] + [1 [8 [[1 0] 1 0] [1 [8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 1] + [8 [1 0] [1 4 0 6] 0 1] + 8 [[1 0] 1 0] [1 [8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 1] + 0 1] + 8 [8 [0 1] 10 [6 7 [0 3] [1 2] 1 13] 0 2] + 8 [8 [7 [0 2] 9 4 0 1] 9 2 10 [6 7 [0 3] [1 30] 1 19] 0 2] + 8 [8 [7 [0 6] 9 10 0 1] 9 2 10 [6 7 [0 3] 1 41] 0 2] + [8 [7 [0 6] 9 11 0 1] 9 2 10 [6 7 [0 3] [1 10] 1 10] 0 2] 0 2] + +7 [8 [[1 0] 1 0] [1 [8 [[1 0] 1 0] [1 [8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 1] [8 [1 0] [1 4 0 6] 0 1] 8 [[1 0] 1 0] [1 [8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 1] 0 1] 8 [8 [0 1] 10 [6 7 [0 3] [1 2] 1 13] 0 2] 8 [8 [7 [0 2] 9 4 0 1] 9 2 10 [6 7 [0 3] [1 30] 1 19] 0 2] 8 [8 [7 [0 6] 9 10 0 1] 9 2 10 [6 7 [0 3] 1 41] 0 2] [8 [7 [0 6] 9 11 0 1] 9 2 10 [6 7 [0 3] [1 10] 1 10] 0 2] 0 2]] +>>>>>>> sigilante/itll-cost-you-an-arm-and-a-leg +*/ diff --git a/hoon/lib/wrapper.hoon b/hoon/lib/wrapper.hoon index 4be9ee3..e092f7b 100644 --- a/hoon/lib/wrapper.hoon +++ b/hoon/lib/wrapper.hoon @@ -75,7 +75,7 @@ =- [~ ..poke] (slog tang.goof.u.g) :: - [[%poke ~] *] + [[%poke %one-punch @ ~] *] =/ ovum ((soft ^ovum) ovum) ?~ ovum ~&("invalid arg: {}" ~^..poke) =/ o ((soft input) input.u.ovum) diff --git a/hoon/main.hoon b/hoon/main.hoon index 222d097..422678c 100644 --- a/hoon/main.hoon +++ b/hoon/main.hoon @@ -8,6 +8,7 @@ +$ cause $% [%test n=@] [%test-all ~] + [%exec n=@] [%exec-all ~] [%parse-all ~] [%jeam-all ~] @@ -45,7 +46,7 @@ ?~ soft-cau ~|("could not mold poke type: {}" !!) =/ c=^cause u.soft-cau ?- -.c - %test + %exec ?. (gth (lent list-jocks:test-jock) n.c) ~& >>> "index out of range: {}" [~ k] @@ -63,6 +64,11 @@ %exec-all ~& exec-all:test-jock [~ k] + :: + %test + ~& "testing {}" + ~& (test:test-jock n.c) + [~ k] :: %test-all ~& test-all:test-jock diff --git a/hoon/tests/lib/assert.hoon b/hoon/tests/lib/assert.hoon index 493ae06..361b344 100644 --- a/hoon/tests/lib/assert.hoon +++ b/hoon/tests/lib/assert.hoon @@ -1,29 +1,36 @@ :: /lib/tests/assert /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text - 'let a: @ = 5;\0alet b: @ = 0;\0a\0aassert a != 0;\0alet c = ?((a a));\0aloop;\0a\0aif a == +(b) {\0a b\0a} else {\0a b = +(b);\0a recur\0a}' + 'let a: @ = 5;\0alet b: @ = 0;\0a\0aassert a != 0;\0alet c = ?((a a));\0aloop;\0a\0aif a == +(b) {\0a b\0a} else {\0a b = +(b);\0a recur\0a}\0a' ++ test-tokenize %+ expect-eq:test - !> ~[[%keyword %let] [%name %a] [%punctuator %':'] [%punctuator %'@'] [%punctuator %'='] [%literal [[%number p=5] q=%.n]] [%punctuator %';'] [%keyword %let] [%name %b] [%punctuator %':'] [%punctuator %'@'] [%punctuator %'='] [%literal [[%number p=0] q=%.n]] [%punctuator %';'] [%keyword %assert] [%name %a] [%punctuator %'!'] [%punctuator %'='] [%literal [[%number p=0] q=%.n]] [%punctuator %';'] [%keyword %let] [%name %c] [%punctuator %'='] [%punctuator %'?'] [%punctuator %'('] [%punctuator %'('] [%name %a] [%name %a] [%punctuator %')'] [%punctuator %')'] [%punctuator %';'] [%keyword %loop] [%punctuator %';'] [%keyword %if] [%name %a] [%punctuator %'='] [%punctuator %'='] [%punctuator %'+'] [%punctuator %'('] [%name %b] [%punctuator %')'] [%punctuator %'{'] [%name %b] [%punctuator %'}'] [%keyword %else] [%punctuator %'{'] [%name %b] [%punctuator %'='] [%punctuator %'+'] [%punctuator %'('] [%name %b] [%punctuator %')'] [%punctuator %';'] [%keyword %recur] [%punctuator %'}']] + !> ~[[%keyword %let] [%name %a] [%punctuator %':'] [%punctuator %'@'] [%punctuator %'='] [%literal [[%number p=3] q=%.n]] [%punctuator %';'] [%keyword %if] [%name %a] [%punctuator %'='] [%punctuator %'='] [%literal [[%number p=3] q=%.n]] [%punctuator %'{'] [%literal [[%number p=42] q=%.n]] [%punctuator %'}'] [%keyword %else] [%keyword %if] [%name %a] [%punctuator %'='] [%punctuator %'='] [%literal [[%number p=5] q=%.n]] [%punctuator %'{'] [%literal [[%number p=17] q=%.n]] [%punctuator %'}'] [%keyword %else] [%punctuator %'{'] [%literal [[%number p=15] q=%.n]] [%punctuator %'}']] !> (rash text parse-tokens:jock) :: ++ test-jeam %+ expect-eq:test !> ^- jock:jock - [%let type=[p=[%atom p=%number q=%.n] name=%a] val=[%atom p=[[%number p=5] q=%.n]] next=[%let type=[p=[%atom p=%number q=%.n] name=%b] val=[%atom p=[[%number p=0] q=%.n]] next=[%assert cond=[%compare comp=%'!=' a=[%limb p=~[[%name p=%a]]] b=[%atom p=[[%number p=0] q=%.n]]] then=[%let type=[p=[%none ~] name=%c] val=[%cell-check val=[p=[%limb p=~[[%name p=%a]]] q=[%limb p=~[[%name p=%a]]]]] next=[%loop next=[%if cond=[%compare comp=%'==' a=[%limb p=~[[%name p=%a]]] b=[%increment val=[%limb p=~[[%name p=%b]]]]] then=[%limb p=~[[%name p=%b]]] after=[%else then=[%edit limb=~[[%name p=%b]] val=[%increment val=[%limb p=~[[%name p=%b]]]] next=[%call func=[%limb p=~[[%axis p=0]]] arg=~]]]]]]]]] + [%let type=[p=[%atom p=%number q=%.n] name='a'] val=[%atom p=[[%number p=3] q=%.n]] next=[%if cond=[%compare comp=%'==' a=[%limb p=~[[%name p=%a]]] b=[%atom p=[[%number p=3] q=%.n]]] then=[%atom p=[[%number p=42] q=%.n]] after=[%else-if cond=[%compare comp=%'==' a=[%limb p=~[[%name p=%a]]] b=[%atom p=[[%number p=5] q=%.n]]] then=[%atom p=[[%number p=17] q=%.n]] after=[%else then=[%atom p=[[%number p=15] q=%.n]]]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [8 [1 5] 8 [1 0] 6 [6 [5 [0 6] 1 0] [1 1] 1 0] [8 [3 [0 6] 0 6] 8 [1 6 [5 [0 30] 4 0 14] [0 14] 7 [10 [14 4 0 14] 0 1] 9 2 0 1] 9 2 0 1] 0 0] - !> (mint:jock text) + !> [%8 p=[%1 p=3] q=[%6 p=[%5 p=[%0 p=2] q=[%1 p=3]] q=[%1 p=42] r=[%6 p=[%5 p=[%0 p=2] q=[%1 p=5]] q=[%1 p=17] r=[%1 p=15]]]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> .*(0 [8 [1 5] 8 [1 0] 6 [6 [5 [0 6] 1 0] [1 1] 1 0] [8 [3 [0 6] 0 6] 8 [1 6 [5 [0 30] 4 0 14] [0 14] 7 [10 [14 4 0 14] 0 1] 9 2 0 1] 9 2 0 1] 0 0]) + !> .* 0 + :+ %8 + +.p + [%8 p=[%1 p=3] q=[%6 p=[%5 p=[%0 p=2] q=[%1 p=3]] q=[%1 p=42] r=[%6 p=[%5 p=[%0 p=2] q=[%1 p=5]] q=[%1 p=17] r=[%1 p=15]]]] !> .*(0 (mint:jock text)) :: --- \ No newline at end of file +-- diff --git a/hoon/tests/lib/axis-call.hoon b/hoon/tests/lib/axis-call.hoon index e685bfc..f4c94de 100644 --- a/hoon/tests/lib/axis-call.hoon +++ b/hoon/tests/lib/axis-call.hoon @@ -1,10 +1,11 @@ :: /lib/tests/axis-call /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text - 'func a(b:@) -> @ {\0a +(b)\0a};\0a\0a&2(17)' + 'func a(b:@) -> @ {\0a +(b)\0a};\0a\0a&2(17)\0a' ++ test-tokenize %+ expect-eq:test !> ~[[%keyword %func] [%name %a] [%punctuator %'(('] [%name %b] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%punctuator %'@'] [%punctuator %'{'] [%punctuator %'+'] [%punctuator %'('] [%name %b] [%punctuator %')'] [%punctuator %'}'] [%punctuator %';'] [%punctuator %'&'] [%literal [[%number p=2] q=%.n]] [%punctuator %'('] [%literal [[%number p=17] q=%.n]] [%punctuator %')']] @@ -13,17 +14,23 @@ ++ test-jeam %+ expect-eq:test !> ^- jock:jock - [%func type=[p=[%core p=[%.y p=[inp=[~ [p=[%atom p=%number q=%.n] name=%b]] out=[p=[%atom p=%number q=%.n] name=%$]]] q=~] name=%a] body=[%lambda p=[arg=[inp=[~ [p=[%atom p=%number q=%.n] name=%b]] out=[p=[%atom p=%number q=%.n] name=%$]] body=[%increment val=[%limb p=~[[%name p=%b]]]] payload=~]] next=[%call func=[%limb p=~[[%axis p=2]]] arg=[~ [%atom p=[[%number p=17] q=%.n]]]]] + [%func type=[p=[%core p=[%.y p=[inp=[~ [p=[%atom p=%number q=%.n] name='b']] out=[p=[%atom p=%number q=%.n] name='']]] q=~] name='a'] body=[%lambda p=[arg=[inp=[~ [p=[%atom p=%number q=%.n] name='b']] out=[p=[%atom p=%number q=%.n] name='']] body=[%increment val=[%limb p=~[[%name p=%b]]]] context=~]] next=[%call func=[%limb p=~[[%axis p=2]]] arg=[~ [%atom p=[[%number p=17] q=%.n]]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [8 [8 [1 0] [1 4 0 6] 0 1] 8 [0 2] 9 2 10 [6 7 [0 3] 1 17] 0 2] - !> (mint:jock text) + !> [%8 p=[%8 p=[%1 p=0] q=[p=[%1 p=[4 0 6]] q=[%0 p=1]]] q=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=17]]] q=[%0 p=2]]]]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> .*(0 [8 [8 [1 0] [1 4 0 6] 0 1] 8 [0 2] 9 2 10 [6 7 [0 3] 1 17] 0 2]) + !> .* 0 + :+ %8 + +.p + [%8 p=[%8 p=[%1 p=0] q=[p=[%1 p=[4 0 6]] q=[%0 p=1]]] q=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=17]]] q=[%0 p=2]]]]] !> .*(0 (mint:jock text)) :: -- diff --git a/hoon/tests/lib/call-let-edit.hoon b/hoon/tests/lib/call-let-edit.hoon index 4ef6a76..41cb687 100644 --- a/hoon/tests/lib/call-let-edit.hoon +++ b/hoon/tests/lib/call-let-edit.hoon @@ -1,29 +1,36 @@ :: /lib/tests/call-let-edit /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text - 'func a(c:@) -> @ {\0a +(c)\0a};\0a\0alet b: @ = 42;\0ab = a(23);\0a\0ab' + 'func a(c:@) -> @ {\0a +(c)\0a};\0a\0alet b: @ = 42;\0ab = a(23);\0a\0ab\0a' ++ test-tokenize %+ expect-eq:test - !> ~[[%keyword %func] [%name %a] [%punctuator %'(('] [%name %c] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%punctuator %'@'] [%punctuator %'{'] [%punctuator %'+'] [%punctuator %'('] [%name %c] [%punctuator %')'] [%punctuator %'}'] [%punctuator %';'] [%keyword %let] [%name %b] [%punctuator %':'] [%punctuator %'@'] [%punctuator %'='] [%literal [[%number p=42] q=%.n]] [%punctuator %';'] [%name %b] [%punctuator %'='] [%name %a] [%punctuator %'(('] [%literal [[%number p=23] q=%.n]] [%punctuator %')'] [%punctuator %';'] [%name %b]] + !> ~[[%keyword %let] [%name %a] [%punctuator %':'] [%punctuator %'@'] [%punctuator %'='] [%literal [[%number p=5] q=%.n]] [%punctuator %';'] [%keyword %let] [%name %b] [%punctuator %':'] [%punctuator %'@'] [%punctuator %'='] [%literal [[%number p=0] q=%.n]] [%punctuator %';'] [%keyword %assert] [%name %a] [%punctuator %'!'] [%punctuator %'='] [%literal [[%number p=0] q=%.n]] [%punctuator %';'] [%keyword %let] [%name %c] [%punctuator %'='] [%punctuator %'?'] [%punctuator %'('] [%punctuator %'('] [%name %a] [%name %a] [%punctuator %')'] [%punctuator %')'] [%punctuator %';'] [%keyword %loop] [%punctuator %';'] [%keyword %if] [%name %a] [%punctuator %'='] [%punctuator %'='] [%punctuator %'+'] [%punctuator %'('] [%name %b] [%punctuator %')'] [%punctuator %'{'] [%name %b] [%punctuator %'}'] [%keyword %else] [%punctuator %'{'] [%name %b] [%punctuator %'='] [%punctuator %'+'] [%punctuator %'('] [%name %b] [%punctuator %')'] [%punctuator %';'] [%keyword %recur] [%punctuator %'}']] !> (rash text parse-tokens:jock) :: ++ test-jeam %+ expect-eq:test !> ^- jock:jock - [%func type=[p=[%core p=[%.y p=[inp=[~ [p=[%atom p=%number q=%.n] name=%c]] out=[p=[%atom p=%number q=%.n] name=%$]]] q=~] name=%a] body=[%lambda p=[arg=[inp=[~ [p=[%atom p=%number q=%.n] name=%c]] out=[p=[%atom p=%number q=%.n] name=%$]] body=[%increment val=[%limb p=~[[%name p=%c]]]] payload=~]] next=[%let type=[p=[%atom p=%number q=%.n] name=%b] val=[%atom p=[[%number p=42] q=%.n]] next=[%edit limb=~[[%name p=%b]] val=[%call func=[%limb p=~[[%name p=%a]]] arg=[~ [%atom p=[[%number p=23] q=%.n]]]] next=[%limb p=~[[%name p=%b]]]]]] + [%let type=[p=[%atom p=%number q=%.n] name='a'] val=[%atom p=[[%number p=5] q=%.n]] next=[%let type=[p=[%atom p=%number q=%.n] name='b'] val=[%atom p=[[%number p=0] q=%.n]] next=[%assert cond=[%compare comp=%'!=' a=[%limb p=~[[%name p=%a]]] b=[%atom p=[[%number p=0] q=%.n]]] then=[%let type=[p=[%none p=~] name='c'] val=[%cell-check val=[p=[%limb p=~[[%name p=%a]]] q=[%limb p=~[[%name p=%a]]]]] next=[%loop next=[%if cond=[%compare comp=%'==' a=[%limb p=~[[%name p=%a]]] b=[%increment val=[%limb p=~[[%name p=%b]]]]] then=[%limb p=~[[%name p=%b]]] after=[%else then=[%edit limb=~[[%name p=%b]] val=[%increment val=[%limb p=~[[%name p=%b]]]] next=[%call func=[%limb p=~[[%axis p=0]]] arg=~]]]]]]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [8 [8 [1 0] [1 4 0 6] 0 1] 8 [1 42] 7 [10 [2 8 [0 6] 9 2 10 [6 7 [0 3] 1 23] 0 2] 0 1] 0 2] - !> (mint:jock text) + !> [%8 p=[%1 p=5] q=[%8 p=[%1 p=0] q=[%6 p=[%6 p=[%5 p=[%0 p=6] q=[%1 p=0]] q=[%1 p=1] r=[%1 p=0]] q=[%8 p=[%3 p=[p=[%0 p=6] q=[%0 p=6]]] q=[%8 p=[%1 p=[6 [5 [0 30] 4 0 14] [0 14] 7 [10 [14 4 0 14] 0 1] 9 2 0 1]] q=[%9 p=2 q=[%0 p=1]]]] r=[%0 p=0]]]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> .*(0 [8 [8 [1 0] [1 4 0 6] 0 1] 8 [1 42] 7 [10 [2 8 [0 6] 9 2 10 [6 7 [0 3] 1 23] 0 2] 0 1] 0 2]) + !> .* 0 + :+ %8 + +.p + [%8 p=[%1 p=5] q=[%8 p=[%1 p=0] q=[%6 p=[%6 p=[%5 p=[%0 p=6] q=[%1 p=0]] q=[%1 p=1] r=[%1 p=0]] q=[%8 p=[%3 p=[p=[%0 p=6] q=[%0 p=6]]] q=[%8 p=[%1 p=[6 [5 [0 30] 4 0 14] [0 14] 7 [10 [14 4 0 14] 0 1] 9 2 0 1]] q=[%9 p=2 q=[%0 p=1]]]] r=[%0 p=0]]]] !> .*(0 (mint:jock text)) :: -- diff --git a/hoon/tests/lib/call.hoon b/hoon/tests/lib/call.hoon index 98651f1..3d76667 100644 --- a/hoon/tests/lib/call.hoon +++ b/hoon/tests/lib/call.hoon @@ -1,10 +1,11 @@ :: /lib/tests/call /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text - 'func a(b:@) -> @ {\0a +(b)\0a};\0a\0aa(23)' + 'func a(b:@) -> @ {\0a +(b)\0a};\0a\0aa(23)\0a\0a' ++ test-tokenize %+ expect-eq:test !> ~[[%keyword %func] [%name %a] [%punctuator %'(('] [%name %b] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%punctuator %'@'] [%punctuator %'{'] [%punctuator %'+'] [%punctuator %'('] [%name %b] [%punctuator %')'] [%punctuator %'}'] [%punctuator %';'] [%name %a] [%punctuator %'(('] [%literal [[%number p=23] q=%.n]] [%punctuator %')']] @@ -13,17 +14,23 @@ ++ test-jeam %+ expect-eq:test !> ^- jock:jock - [%func type=[p=[%core p=[%.y p=[inp=[~ [p=[%atom p=%number q=%.n] name=%b]] out=[p=[%atom p=%number q=%.n] name=%$]]] q=~] name=%a] body=[%lambda p=[arg=[inp=[~ [p=[%atom p=%number q=%.n] name=%b]] out=[p=[%atom p=%number q=%.n] name=%$]] body=[%increment val=[%limb p=~[[%name p=%b]]]] payload=~]] next=[%call func=[%limb p=~[[%name p=%a]]] arg=[~ [%atom p=[[%number p=23] q=%.n]]]]] + [%func type=[p=[%core p=[%.y p=[inp=[~ [p=[%atom p=%number q=%.n] name='b']] out=[p=[%atom p=%number q=%.n] name='']]] q=~] name='a'] body=[%lambda p=[arg=[inp=[~ [p=[%atom p=%number q=%.n] name='b']] out=[p=[%atom p=%number q=%.n] name='']] body=[%increment val=[%limb p=~[[%name p=%b]]]] context=~]] next=[%call func=[%limb p=~[[%name p=%a]]] arg=[~ [%atom p=[[%number p=23] q=%.n]]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [8 [8 [1 0] [1 4 0 6] 0 1] 8 [0 2] 9 2 10 [6 7 [0 3] 1 23] 0 2] - !> (mint:jock text) + !> [%8 p=[%8 p=[%1 p=0] q=[p=[%1 p=[4 0 6]] q=[%0 p=1]]] q=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=23]]] q=[%0 p=2]]]]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> .*(0 [8 [8 [1 0] [1 4 0 6] 0 1] 8 [0 2] 9 2 10 [6 7 [0 3] 1 23] 0 2]) + !> .* 0 + :+ %8 + +.p + [%8 p=[%8 p=[%1 p=0] q=[p=[%1 p=[4 0 6]] q=[%0 p=1]]] q=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=23]]] q=[%0 p=2]]]]] !> .*(0 (mint:jock text)) :: --- \ No newline at end of file +-- diff --git a/hoon/tests/lib/class-ops.hoon b/hoon/tests/lib/class-ops.hoon new file mode 100644 index 0000000..adfd6de --- /dev/null +++ b/hoon/tests/lib/class-ops.hoon @@ -0,0 +1,36 @@ +:: /lib/tests/class-ops +/+ jock, + test +/* hoon %txt /lib/mini/txt +:: +|% +++ text + 'compose\0a class Point(x:@ y:@) {\0a add(p:(x:@ y:@)) -> Point {\0a (x + p.x\0a y + p.y)\0a }\0a }\0a;\0a\0alet point-1 = Point(14 104);\0apoint-1 = point-1.add(28 38);\0a(point-1.x() point-1.y())\0a\0a/*\0a!=\0a=> mini=mini\0a=>\0a ^= door\0a |_ [x=@ y=@]\0a ++ add\0a |= p=[x=@ y=@]\0a [(add:mini x x.p) (add:mini y y.p)]\0a --\0a=/ point-1\0a ~(. door [14 104])\0a=. point-1 ~(. door (add:point-1 [28 38]))\0a[+12 +13]:point-1\0a\0a!=\0a=> mini=mini\0a=>\0a ^= door\0a |_ [x=@ y=@]\0a ++ add\0a |= p=[x=@ y=@]\0a [(add:mini x x.p) (add:mini y y.p)]\0a --\0a~(. door [14 104])\0a*/\0a' +++ test-tokenize + %+ expect-eq:test + !> ~[[%keyword %compose] [%keyword %class] [%type 'Point'] [%punctuator %'(('] [%name %x] [%punctuator %':'] [%punctuator %'@'] [%name %y] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'{'] [%name %add] [%punctuator %'(('] [%name %p] [%punctuator %':'] [%punctuator %'('] [%name %x] [%punctuator %':'] [%punctuator %'@'] [%name %y] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%type 'Point'] [%punctuator %'{'] [%punctuator %'('] [%name %x] [%punctuator %'+'] [%name %p] [%punctuator %'.'] [%name %x] [%name %y] [%punctuator %'+'] [%name %p] [%punctuator %'.'] [%name %y] [%punctuator %')'] [%punctuator %'}'] [%punctuator %'}'] [%punctuator %';'] [%keyword %let] [%name %point-1] [%punctuator %'='] [%type 'Point'] [%punctuator %'(('] [%literal [[%number p=14] q=%.n]] [%literal [[%number p=104] q=%.n]] [%punctuator %')'] [%punctuator %';'] [%name %point-1] [%punctuator %'='] [%name %point-1] [%punctuator %'.'] [%name %add] [%punctuator %'(('] [%literal [[%number p=28] q=%.n]] [%literal [[%number p=38] q=%.n]] [%punctuator %')'] [%punctuator %';'] [%punctuator %'('] [%name %point-1] [%punctuator %'.'] [%name %x] [%punctuator %'(('] [%punctuator %')'] [%name %point-1] [%punctuator %'.'] [%name %y] [%punctuator %'(('] [%punctuator %')'] [%punctuator %')']] + !> (rash text parse-tokens:jock) +:: +++ test-jeam + %+ expect-eq:test + !> ^- jock:jock + [%compose p=[%class state=[p=[%state p=[[p=[p=[%atom p=%number q=%.n] name='x'] q=[p=[%atom p=%number q=%.n] name='y']] name='']] name='Point'] arms=[n=[p=%add q=[%method type=[p=[%core p=[%.y p=[inp=[~ [[p=[p=[%atom p=%number q=%.n] name='x'] q=[p=[%atom p=%number q=%.n] name='y']] name='p']] out=[p=[%limb p=~[[%type p='Point']]] name='Point']]] q=~] name='add'] body=[%lambda p=[arg=[inp=[~ [[p=[p=[%atom p=%number q=%.n] name='x'] q=[p=[%atom p=%number q=%.n] name='y']] name='p']] out=[p=[%limb p=~[[%type p='Point']]] name='Point']] body=[p=[%operator op=%'+' a=[%limb p=~[[%name p=%x]]] b=[~ [%limb p=~[[%name p=%p] [%name p=%x]]]]] q=[%operator op=%'+' a=[%limb p=~[[%name p=%y]]] b=[~ [%limb p=~[[%name p=%p] [%name p=%y]]]]]] context=~]]]] l=~ r=~]] q=[%let type=[p=[%none p=~] name='point-1'] val=[%call func=[%limb p=~[[%type p='Point']]] arg=[~ [p=[%atom p=[[%number p=14] q=%.n]] q=[%atom p=[[%number p=104] q=%.n]]]]] next=[%edit limb=~[[%name p=%point-1]] val=[%call func=[%limb p=~[[%name p=%point-1] [%name p=%add]]] arg=[~ [p=[%atom p=[[%number p=28] q=%.n]] q=[%atom p=[[%number p=38] q=%.n]]]]] next=[p=[%call func=[%limb p=~[[%name p=%point-1] [%name p=%x]]] arg=~] q=[%call func=[%limb p=~[[%name p=%point-1] [%name p=%y]]] arg=~]]]]] + !> (jeam:jock text) +:: +++ test-mint + %+ expect-eq:test + !> [%7 p=[%8 p=[p=[%1 p=0] q=[%1 p=0]] q=[p=[%1 p=[8 [[1 0] 1 0] [1 8 [0 7] 10 [6 7 [0 3] [8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 2] 0 1]] q=[%0 p=1]]] q=[%8 p=[%8 p=[%0 p=1] q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=14] q=[%1 p=104]]]] q=[%0 p=2]]] q=[%7 p=[%10 p=[p=2 q=[%8 p=[%7 p=[%0 p=2] q=[%9 p=2 q=[%0 p=1]]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=28] q=[%1 p=38]]]] q=[%0 p=2]]]]] q=[%0 p=1]] q=[p=[%7 p=[%0 p=2] q=[%7 p=[%0 p=6] q=[%0 p=2]]] q=[%7 p=[%0 p=2] q=[%7 p=[%0 p=6] q=[%0 p=3]]]]]]] + !> +>:(mint:jock text) +:: +++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) + %+ expect-eq:test + !> .* 0 + :+ %8 + +.p + [%7 p=[%8 p=[p=[%1 p=0] q=[%1 p=0]] q=[p=[%1 p=[8 [[1 0] 1 0] [1 8 [0 7] 10 [6 7 [0 3] [8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 2] 0 1]] q=[%0 p=1]]] q=[%8 p=[%8 p=[%0 p=1] q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=14] q=[%1 p=104]]]] q=[%0 p=2]]] q=[%7 p=[%10 p=[p=2 q=[%8 p=[%7 p=[%0 p=2] q=[%9 p=2 q=[%0 p=1]]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=28] q=[%1 p=38]]]] q=[%0 p=2]]]]] q=[%0 p=1]] q=[p=[%7 p=[%0 p=2] q=[%7 p=[%0 p=6] q=[%0 p=2]]] q=[%7 p=[%0 p=2] q=[%7 p=[%0 p=6] q=[%0 p=3]]]]]]] + !> .*(0 (mint:jock text)) +:: +-- diff --git a/hoon/tests/lib/class-state.hoon b/hoon/tests/lib/class-state.hoon new file mode 100644 index 0000000..5910259 --- /dev/null +++ b/hoon/tests/lib/class-state.hoon @@ -0,0 +1,36 @@ +:: /lib/tests/class-state +/+ jock, + test +/* hoon %txt /lib/mini/txt +:: +|% +++ text + 'compose\0a class Point(x:@ y:@) {\0a inc(q:@) -> @ {\0a +(q)\0a }\0a }\0a;\0a\0alet point-1 = Point(70 80);\0alet point-2 = Point(90 100);\0a((point-2.x() point-2.y()) (point-1.x() point-1.y()))\0a\0a/*\0a!=\0a=> mini=mini\0a=>\0a ^= door\0a |_ [x=@ y=@]\0a ++ add\0a |= p=[x=@ y=@]\0a [(add:mini x x.p) (add:mini y y.p)]\0a ++ inc\0a |= q=@\0a +(q)\0a --\0a=/ point-1\0a ~(. door [70 80])\0a=/ point-2\0a ~(. door [90 100])\0a[[+13 +12]:point-2 [+13 +12]:point-1]\0a*/\0a' +++ test-tokenize + %+ expect-eq:test + !> ~[[%keyword %compose] [%keyword %class] [%type 'Point'] [%punctuator %'(('] [%name %x] [%punctuator %':'] [%punctuator %'@'] [%name %y] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'{'] [%name %inc] [%punctuator %'(('] [%name %q] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%punctuator %'@'] [%punctuator %'{'] [%punctuator %'+'] [%punctuator %'('] [%name %q] [%punctuator %')'] [%punctuator %'}'] [%punctuator %'}'] [%punctuator %';'] [%keyword %let] [%name %point-1] [%punctuator %'='] [%type 'Point'] [%punctuator %'(('] [%literal [[%number p=70] q=%.n]] [%literal [[%number p=80] q=%.n]] [%punctuator %')'] [%punctuator %';'] [%keyword %let] [%name %point-2] [%punctuator %'='] [%type 'Point'] [%punctuator %'(('] [%literal [[%number p=90] q=%.n]] [%literal [[%number p=100] q=%.n]] [%punctuator %')'] [%punctuator %';'] [%punctuator %'('] [%punctuator %'('] [%name %point-2] [%punctuator %'.'] [%name %x] [%punctuator %'(('] [%punctuator %')'] [%name %point-2] [%punctuator %'.'] [%name %y] [%punctuator %'(('] [%punctuator %')'] [%punctuator %')'] [%punctuator %'('] [%name %point-1] [%punctuator %'.'] [%name %x] [%punctuator %'(('] [%punctuator %')'] [%name %point-1] [%punctuator %'.'] [%name %y] [%punctuator %'(('] [%punctuator %')'] [%punctuator %')'] [%punctuator %')']] + !> (rash text parse-tokens:jock) +:: +++ test-jeam + %+ expect-eq:test + !> ^- jock:jock + [%compose p=[%class state=[p=[%state p=[[p=[p=[%atom p=%number q=%.n] name='x'] q=[p=[%atom p=%number q=%.n] name='y']] name='']] name='Point'] arms=[n=[p=%inc q=[%method type=[p=[%core p=[%.y p=[inp=[~ [p=[%atom p=%number q=%.n] name='q']] out=[p=[%atom p=%number q=%.n] name='']]] q=~] name='inc'] body=[%lambda p=[arg=[inp=[~ [p=[%atom p=%number q=%.n] name='q']] out=[p=[%atom p=%number q=%.n] name='']] body=[%increment val=[%limb p=~[[%name p=%q]]]] context=~]]]] l=~ r=~]] q=[%let type=[p=[%none p=~] name='point-1'] val=[%call func=[%limb p=~[[%type p='Point']]] arg=[~ [p=[%atom p=[[%number p=70] q=%.n]] q=[%atom p=[[%number p=80] q=%.n]]]]] next=[%let type=[p=[%none p=~] name='point-2'] val=[%call func=[%limb p=~[[%type p='Point']]] arg=[~ [p=[%atom p=[[%number p=90] q=%.n]] q=[%atom p=[[%number p=100] q=%.n]]]]] next=[p=[p=[%call func=[%limb p=~[[%name p=%point-2] [%name p=%x]]] arg=~] q=[%call func=[%limb p=~[[%name p=%point-2] [%name p=%y]]] arg=~]] q=[p=[%call func=[%limb p=~[[%name p=%point-1] [%name p=%x]]] arg=~] q=[%call func=[%limb p=~[[%name p=%point-1] [%name p=%y]]] arg=~]]]]]] + !> (jeam:jock text) +:: +++ test-mint + %+ expect-eq:test + !> [%7 p=[%8 p=[p=[%1 p=0] q=[%1 p=0]] q=[p=[%1 p=[8 [1 0] [1 4 0 6] 0 1]] q=[%0 p=1]]] q=[%8 p=[%8 p=[%0 p=1] q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=70] q=[%1 p=80]]]] q=[%0 p=2]]] q=[%8 p=[%8 p=[%0 p=3] q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=90] q=[%1 p=100]]]] q=[%0 p=2]]] q=[p=[p=[%7 p=[%0 p=2] q=[%7 p=[%0 p=6] q=[%0 p=2]]] q=[%7 p=[%0 p=2] q=[%7 p=[%0 p=6] q=[%0 p=3]]]] q=[p=[%7 p=[%0 p=6] q=[%7 p=[%0 p=6] q=[%0 p=2]]] q=[%7 p=[%0 p=6] q=[%7 p=[%0 p=6] q=[%0 p=3]]]]]]]] + !> +>:(mint:jock text) +:: +++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) + %+ expect-eq:test + !> .* 0 + :+ %8 + +.p + [%7 p=[%8 p=[p=[%1 p=0] q=[%1 p=0]] q=[p=[%1 p=[8 [1 0] [1 4 0 6] 0 1]] q=[%0 p=1]]] q=[%8 p=[%8 p=[%0 p=1] q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=70] q=[%1 p=80]]]] q=[%0 p=2]]] q=[%8 p=[%8 p=[%0 p=3] q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=90] q=[%1 p=100]]]] q=[%0 p=2]]] q=[p=[p=[%7 p=[%0 p=2] q=[%7 p=[%0 p=6] q=[%0 p=2]]] q=[%7 p=[%0 p=2] q=[%7 p=[%0 p=6] q=[%0 p=3]]]] q=[p=[%7 p=[%0 p=6] q=[%7 p=[%0 p=6] q=[%0 p=2]]] q=[%7 p=[%0 p=6] q=[%7 p=[%0 p=6] q=[%0 p=3]]]]]]]] + !> .*(0 (mint:jock text)) +:: +-- diff --git a/hoon/tests/lib/comparator.hoon b/hoon/tests/lib/comparator.hoon index fdb9f56..0e3e996 100644 --- a/hoon/tests/lib/comparator.hoon +++ b/hoon/tests/lib/comparator.hoon @@ -1,10 +1,11 @@ :: /lib/tests/comparator /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text - 'let a = true;\0alet b = a == true;\0alet c = a < 1;\0alet d = a > 2;\0alet e = b != true;\0alet f = a <= 1;\0alet g = a >= 2;\0a\0ag' + 'let a = true;\0alet b = a == true;\0alet c = a < 1;\0alet d = a > 2;\0alet e = b != true;\0alet f = a <= 1;\0alet g = a >= 2;\0a\0ag\0a' ++ test-tokenize %+ expect-eq:test !> ~[[%keyword %let] [%name %a] [%punctuator %'='] [%literal [[%loobean p=%.y] q=%.n]] [%punctuator %';'] [%keyword %let] [%name %b] [%punctuator %'='] [%name %a] [%punctuator %'='] [%punctuator %'='] [%literal [[%loobean p=%.y] q=%.n]] [%punctuator %';'] [%keyword %let] [%name %c] [%punctuator %'='] [%name %a] [%punctuator %'<'] [%literal [[%number p=1] q=%.n]] [%punctuator %';'] [%keyword %let] [%name %d] [%punctuator %'='] [%name %a] [%punctuator %'>'] [%literal [[%number p=2] q=%.n]] [%punctuator %';'] [%keyword %let] [%name %e] [%punctuator %'='] [%name %b] [%punctuator %'!'] [%punctuator %'='] [%literal [[%loobean p=%.y] q=%.n]] [%punctuator %';'] [%keyword %let] [%name %f] [%punctuator %'='] [%name %a] [%punctuator %'<'] [%punctuator %'='] [%literal [[%number p=1] q=%.n]] [%punctuator %';'] [%keyword %let] [%name %g] [%punctuator %'='] [%name %a] [%punctuator %'>'] [%punctuator %'='] [%literal [[%number p=2] q=%.n]] [%punctuator %';'] [%name %g]] @@ -13,19 +14,23 @@ ++ test-jeam %+ expect-eq:test !> ^- jock:jock - [%let type=[p=[%none ~] name=%a] val=[%atom p=[[%loobean p=%.y] q=%.n]] next=[%let type=[p=[%none ~] name=%b] val=[%compare comp=%'==' a=[%limb p=~[[%name p=%a]]] b=[%atom p=[[%loobean p=%.y] q=%.n]]] next=[%let type=[p=[%none ~] name=%c] val=[%compare comp=%'<' a=[%limb p=~[[%name p=%a]]] b=[%atom p=[[%number p=1] q=%.n]]] next=[%let type=[p=[%none ~] name=%d] val=[%compare comp=%'>' a=[%limb p=~[[%name p=%a]]] b=[%atom p=[[%number p=2] q=%.n]]] next=[%let type=[p=[%none ~] name=%e] val=[%compare comp=%'!=' a=[%limb p=~[[%name p=%b]]] b=[%atom p=[[%loobean p=%.y] q=%.n]]] next=[%let type=[p=[%none ~] name=%f] val=[%compare comp=%'<=' a=[%limb p=~[[%name p=%a]]] b=[%atom p=[[%number p=1] q=%.n]]] next=[%let type=[p=[%none ~] name=%g] val=[%compare comp=%'>=' a=[%limb p=~[[%name p=%a]]] b=[%atom p=[[%number p=2] q=%.n]]] next=[%limb p=~[[%name p=%g]]]]]]]]]] + [%let type=[p=[%none p=~] name='a'] val=[%atom p=[[%loobean p=%.y] q=%.n]] next=[%let type=[p=[%none p=~] name='b'] val=[%compare comp=%'==' a=[%limb p=~[[%name p=%a]]] b=[%atom p=[[%loobean p=%.y] q=%.n]]] next=[%let type=[p=[%none p=~] name='c'] val=[%compare comp=%'<' a=[%limb p=~[[%name p=%a]]] b=[%atom p=[[%number p=1] q=%.n]]] next=[%let type=[p=[%none p=~] name='d'] val=[%compare comp=%'>' a=[%limb p=~[[%name p=%a]]] b=[%atom p=[[%number p=2] q=%.n]]] next=[%let type=[p=[%none p=~] name='e'] val=[%compare comp=%'!=' a=[%limb p=~[[%name p=%b]]] b=[%atom p=[[%loobean p=%.y] q=%.n]]] next=[%let type=[p=[%none p=~] name='f'] val=[%compare comp=%'<=' a=[%limb p=~[[%name p=%a]]] b=[%atom p=[[%number p=1] q=%.n]]] next=[%let type=[p=[%none p=~] name='g'] val=[%compare comp=%'>=' a=[%limb p=~[[%name p=%a]]] b=[%atom p=[[%number p=2] q=%.n]]] next=[%limb p=~[[%name p=%g]]]]]]]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [8 [1 0] 8 [5 [0 2] 1 0] 8 [11 6.845.548 0 0] 8 [11 6.845.543 0 0] 8 [6 [5 [0 14] 1 0] [1 1] 1 0] 8 [11 6.648.940 0 0] 8 [11 6.648.935 0 0] 0 2] - !> (mint:jock text) + !> [[%8 p=[%1 p=0] q=[%8 p=[%5 p=[%0 p=2] q=[%1 p=0]] q=[%8 p=[%8 p=[%9 p=358.123 q=[%0 p=14]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%0 p=6] q=[%1 p=1]]]] q=[%0 p=2]]]] q=[%8 p=[%8 p=[%9 p=703 q=[%0 p=30]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%0 p=14] q=[%1 p=2]]]] q=[%0 p=2]]]] q=[%8 p=[%6 p=[%5 p=[%0 p=14] q=[%1 p=0]] q=[%1 p=1] r=[%1 p=0]] q=[%8 p=[%8 p=[%9 p=340 q=[%0 p=126]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%0 p=62] q=[%1 p=1]]]] q=[%0 p=2]]]] q=[%8 p=[%8 p=[%9 p=94 q=[%0 p=254]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%0 p=126] q=[%1 p=2]]]] q=[%0 p=2]]]] q=[%0 p=2]]]]]]]]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - :: !> .*(0 [8 [1 0] 8 [5 [0 2] 1 0] 8 [11 6.845.548 0 0] 8 [11 6.845.543 0 0] 8 [6 [5 [0 14] 1 0] [1 1] 1 0] 8 [11 6.648.940 0 0] 8 [11 6.648.935 0 0] 0 2]) - !> ~ - :: !> .*(0 (mint:jock text)) - !> ~ + !> .* 0 + :+ %8 + +.p + [q=[%8 p=[%1 p=0] q=[%8 p=[%5 p=[%0 p=2] q=[%1 p=0]] q=[%8 p=[%8 p=[%9 p=358.123 q=[%0 p=14]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%0 p=6] q=[%1 p=1]]]] q=[%0 p=2]]]] q=[%8 p=[%8 p=[%9 p=703 q=[%0 p=30]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%0 p=14] q=[%1 p=2]]]] q=[%0 p=2]]]] q=[%8 p=[%6 p=[%5 p=[%0 p=14] q=[%1 p=0]] q=[%1 p=1] r=[%1 p=0]] q=[%8 p=[%8 p=[%9 p=340 q=[%0 p=126]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%0 p=62] q=[%1 p=1]]]] q=[%0 p=2]]]] q=[%8 p=[%8 p=[%9 p=94 q=[%0 p=254]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%0 p=126] q=[%1 p=2]]]] q=[%0 p=2]]]] q=[%0 p=2]]]]]]]]] + !> .*(0 (mint:jock text)) :: -- diff --git a/hoon/tests/lib/compose-cores.hoon b/hoon/tests/lib/compose-cores.hoon index f90fec8..9442e00 100644 --- a/hoon/tests/lib/compose-cores.hoon +++ b/hoon/tests/lib/compose-cores.hoon @@ -1,10 +1,11 @@ :: /lib/tests/compose-cores /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text - 'func g(a:@) -> @ {\0a 29\0a};\0a\0acompose\0a with this; object {\0a b = lambda (c:@) -> @ {\0a g(5)\0a }\0a c = 89\0a };\0a\0ab(3)' + 'func g(a:@) -> @ {\0a 29\0a};\0a\0acompose\0a with this; object {\0a b = lambda (c:@) -> @ {\0a g(5)\0a }\0a c = 89\0a };\0a\0ab(3)\0a' ++ test-tokenize %+ expect-eq:test !> ~[[%keyword %func] [%name %g] [%punctuator %'(('] [%name %a] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%punctuator %'@'] [%punctuator %'{'] [%literal [[%number p=29] q=%.n]] [%punctuator %'}'] [%punctuator %';'] [%keyword %compose] [%keyword %with] [%keyword %this] [%punctuator %';'] [%keyword %object] [%punctuator %'{'] [%name %b] [%punctuator %'='] [%keyword %lambda] [%punctuator %'('] [%name %c] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%punctuator %'@'] [%punctuator %'{'] [%name %g] [%punctuator %'(('] [%literal [[%number p=5] q=%.n]] [%punctuator %')'] [%punctuator %'}'] [%name %c] [%punctuator %'='] [%literal [[%number p=89] q=%.n]] [%punctuator %'}'] [%punctuator %';'] [%name %b] [%punctuator %'(('] [%literal [[%number p=3] q=%.n]] [%punctuator %')']] @@ -13,17 +14,23 @@ ++ test-jeam %+ expect-eq:test !> ^- jock:jock - [%func type=[p=[%core p=[%.y p=[inp=[~ [p=[%atom p=%number q=%.n] name=%a]] out=[p=[%atom p=%number q=%.n] name=%$]]] q=~] name=%g] body=[%lambda p=[arg=[inp=[~ [p=[%atom p=%number q=%.n] name=%a]] out=[p=[%atom p=%number q=%.n] name=%$]] body=[%atom p=[[%number p=29] q=%.n]] payload=~]] next=[%compose p=[%object name=%$ p=[n=[p=%b q=[%lambda p=[arg=[inp=[~ [p=[%atom p=%number q=%.n] name=%c]] out=[p=[%atom p=%number q=%.n] name=%$]] body=[%call func=[%limb p=~[[%name p=%g]]] arg=[~ [%atom p=[[%number p=5] q=%.n]]]] payload=~]]] l=~ r=[n=[p=%c q=[%atom p=[[%number p=89] q=%.n]]] l=~ r=~]] q=[~ [%limb p=~[[%axis p=1]]]]] q=[%call func=[%limb p=~[[%name p=%b]]] arg=[~ [%atom p=[[%number p=3] q=%.n]]]]]] + [%func type=[p=[%core p=[%.y p=[inp=[~ [p=[%atom p=%number q=%.n] name='a']] out=[p=[%atom p=%number q=%.n] name='']]] q=~] name='g'] body=[%lambda p=[arg=[inp=[~ [p=[%atom p=%number q=%.n] name='a']] out=[p=[%atom p=%number q=%.n] name='']] body=[%atom p=[[%number p=29] q=%.n]] context=~]] next=[%compose p=[%object name=%$ p=[n=[p=%b q=[%lambda p=[arg=[inp=[~ [p=[%atom p=%number q=%.n] name='c']] out=[p=[%atom p=%number q=%.n] name='']] body=[%call func=[%limb p=~[[%name p=%g]]] arg=[~ [%atom p=[[%number p=5] q=%.n]]]] context=~]]] l=~ r=[n=[p=%c q=[%atom p=[[%number p=89] q=%.n]]] l=~ r=~]] q=[~ [%limb p=~[[%axis p=1]]]]] q=[%call func=[%limb p=~[[%name p=%b]]] arg=[~ [%atom p=[[%number p=3] q=%.n]]]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [8 [8 [1 0] [1 1 29] 0 1] 7 [[1 [8 [1 0] [1 8 [0 30] 9 2 10 [6 7 [0 3] 1 5] 0 2] 0 1] 1 89] 0 1] 8 [9 4 0 1] 9 2 10 [6 7 [0 3] 1 3] 0 2] - !> (mint:jock text) + !> [%8 p=[%8 p=[%1 p=0] q=[p=[%1 p=[1 29]] q=[%0 p=1]]] q=[%7 p=[p=[%1 p=[[8 [1 0] [1 8 [0 30] 9 2 10 [6 7 [0 3] 1 5] 0 2] 0 1] 1 89]] q=[%0 p=1]] q=[%8 p=[%9 p=4 q=[%0 p=1]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=3]]] q=[%0 p=2]]]]]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> .*(0 [8 [8 [1 0] [1 1 29] 0 1] 7 [[1 [8 [1 0] [1 8 [0 30] 9 2 10 [6 7 [0 3] 1 5] 0 2] 0 1] 1 89] 0 1] 8 [9 4 0 1] 9 2 10 [6 7 [0 3] 1 3] 0 2]) + !> .* 0 + :+ %8 + +.p + [%8 p=[%8 p=[%1 p=0] q=[p=[%1 p=[1 29]] q=[%0 p=1]]] q=[%7 p=[p=[%1 p=[[8 [1 0] [1 8 [0 30] 9 2 10 [6 7 [0 3] 1 5] 0 2] 0 1] 1 89]] q=[%0 p=1]] q=[%8 p=[%9 p=4 q=[%0 p=1]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=3]]] q=[%0 p=2]]]]]] !> .*(0 (mint:jock text)) :: --- \ No newline at end of file +-- diff --git a/hoon/tests/lib/compose.hoon b/hoon/tests/lib/compose.hoon index 7af63ed..f5b3564 100644 --- a/hoon/tests/lib/compose.hoon +++ b/hoon/tests/lib/compose.hoon @@ -1,10 +1,11 @@ :: /lib/tests/compose /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text - 'compose\0a object {\0a b = 5\0a a = lambda (c: @) -> @ {\0a +(c)\0a }\0a };\0aa(b)\0a\0a/*\0a=>\0a |%\0a ++ b 5\0a ++ a |=(c=@ +(c))\0a --\0a(a b)\0a*/' + 'compose\0a object {\0a b = 5\0a a = lambda (c: @) -> @ {\0a +(c)\0a }\0a };\0aa(b)\0a\0a/*\0a=>\0a |%\0a ++ b 5\0a ++ a |=(c=@ +(c))\0a --\0a(a b)\0a\0a[7 [1 [1 5] 8 [1 0] [1 4 0 6] 0 1] 8 [9 3 0 1] 9 2 10 [6 7 [0 3] 9 2 0 1] 0 2]\0a*/\0a' ++ test-tokenize %+ expect-eq:test !> ~[[%keyword %compose] [%keyword %object] [%punctuator %'{'] [%name %b] [%punctuator %'='] [%literal [[%number p=5] q=%.n]] [%name %a] [%punctuator %'='] [%keyword %lambda] [%punctuator %'('] [%name %c] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%punctuator %'@'] [%punctuator %'{'] [%punctuator %'+'] [%punctuator %'('] [%name %c] [%punctuator %')'] [%punctuator %'}'] [%punctuator %'}'] [%punctuator %';'] [%name %a] [%punctuator %'(('] [%name %b] [%punctuator %')']] @@ -13,17 +14,23 @@ ++ test-jeam %+ expect-eq:test !> ^- jock:jock - [%compose p=[%object name=%$ p=[n=[p=%b q=[%atom p=[[%number p=5] q=%.n]]] l=~ r=[n=[p=%a q=[%lambda p=[arg=[inp=[~ [p=[%atom p=%number q=%.n] name=%c]] out=[p=[%atom p=%number q=%.n] name=%$]] body=[%increment val=[%limb p=~[[%name p=%c]]]] payload=~]]] l=~ r=~]] q=~] q=[%call func=[%limb p=~[[%name p=%a]]] arg=[~ [%limb p=~[[%name p=%b]]]]]] + [%compose p=[%object name=%$ p=[n=[p=%b q=[%atom p=[[%number p=5] q=%.n]]] l=~ r=[n=[p=%a q=[%lambda p=[arg=[inp=[~ [p=[%atom p=%number q=%.n] name='c']] out=[p=[%atom p=%number q=%.n] name='']] body=[%increment val=[%limb p=~[[%name p=%c]]]] context=~]]] l=~ r=~]] q=~] q=[%call func=[%limb p=~[[%name p=%a]]] arg=[~ [%limb p=~[[%name p=%b]]]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [7 [1 [1 5] 8 [1 0] [1 4 0 6] 0 1] 8 [9 3 0 1] 9 2 10 [6 7 [0 3] 9 2 0 1] 0 2] - !> (mint:jock text) + !> [%7 p=[%1 p=[[1 5] 8 [1 0] [1 4 0 6] 0 1]] q=[%8 p=[%9 p=3 q=[%0 p=1]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%9 p=2 q=[%0 p=1]]]] q=[%0 p=2]]]]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> .*(0 [7 [1 [1 5] 8 [1 0] [1 4 0 6] 0 1] 8 [9 3 0 1] 9 2 10 [6 7 [0 3] 9 2 0 1] 0 2]) + !> .* 0 + :+ %8 + +.p + [%7 p=[%1 p=[[1 5] 8 [1 0] [1 4 0 6] 0 1]] q=[%8 p=[%9 p=3 q=[%0 p=1]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%9 p=2 q=[%0 p=1]]]] q=[%0 p=2]]]]] !> .*(0 (mint:jock text)) :: --- \ No newline at end of file +-- diff --git a/hoon/tests/lib/dec.hoon b/hoon/tests/lib/dec.hoon index 99eb264..b0e2cea 100644 --- a/hoon/tests/lib/dec.hoon +++ b/hoon/tests/lib/dec.hoon @@ -1,30 +1,36 @@ :: /lib/tests/dec /+ jock, test +/* hoon %txt /lib/mini/txt :: -!: |% ++ text - 'func dec(a:@) -> @ {\0a let b = 0;\0a loop;\0a if a == +(b) {\0a b\0a } else {\0a b = +(b);\0a recur\0a }\0a};\0a\0adec(5)' + 'func dec(a:@) -> @ {\0a let b = 0;\0a loop;\0a if a == +(b) {\0a b\0a } else {\0a b = +(b);\0a recur\0a }\0a};\0a\0adec(43)\0a' ++ test-tokenize %+ expect-eq:test - !> ~[[%keyword %func] [%name %dec] [%punctuator %'(('] [%name %a] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%punctuator %'@'] [%punctuator %'{'] [%keyword %let] [%name %b] [%punctuator %'='] [%literal [[%number p=0] q=%.n]] [%punctuator %';'] [%keyword %loop] [%punctuator %';'] [%keyword %if] [%name %a] [%punctuator %'='] [%punctuator %'='] [%punctuator %'+'] [%punctuator %'('] [%name %b] [%punctuator %')'] [%punctuator %'{'] [%name %b] [%punctuator %'}'] [%keyword %else] [%punctuator %'{'] [%name %b] [%punctuator %'='] [%punctuator %'+'] [%punctuator %'('] [%name %b] [%punctuator %')'] [%punctuator %';'] [%keyword %recur] [%punctuator %'}'] [%punctuator %'}'] [%punctuator %';'] [%name %dec] [%punctuator %'(('] [%literal [[%number p=5] q=%.n]] [%punctuator %')']] + !> ~[[%keyword %func] [%name %dec] [%punctuator %'(('] [%name %a] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%punctuator %'@'] [%punctuator %'{'] [%keyword %let] [%name %b] [%punctuator %'='] [%literal [[%number p=0] q=%.n]] [%punctuator %';'] [%keyword %loop] [%punctuator %';'] [%keyword %if] [%name %a] [%punctuator %'='] [%punctuator %'='] [%punctuator %'+'] [%punctuator %'('] [%name %b] [%punctuator %')'] [%punctuator %'{'] [%name %b] [%punctuator %'}'] [%keyword %else] [%punctuator %'{'] [%name %b] [%punctuator %'='] [%punctuator %'+'] [%punctuator %'('] [%name %b] [%punctuator %')'] [%punctuator %';'] [%keyword %recur] [%punctuator %'}'] [%punctuator %'}'] [%punctuator %';'] [%name %dec] [%punctuator %'(('] [%literal [[%number p=43] q=%.n]] [%punctuator %')']] !> (rash text parse-tokens:jock) :: ++ test-jeam %+ expect-eq:test !> ^- jock:jock - [%func type=[p=[%core p=[%.y p=[inp=[~ [p=[%atom p=%number q=%.n] name=%a]] out=[p=[%atom p=%number q=%.n] name=%$]]] q=~] name=%dec] body=[%lambda p=[arg=[inp=[~ [p=[%atom p=%number q=%.n] name=%a]] out=[p=[%atom p=%number q=%.n] name=%$]] body=[%let type=[p=[%none ~] name=%b] val=[%atom p=[[%number p=0] q=%.n]] next=[%loop next=[%if cond=[%compare comp=%'==' a=[%limb p=~[[%name p=%a]]] b=[%increment val=[%limb p=~[[%name p=%b]]]]] then=[%limb p=~[[%name p=%b]]] after=[%else then=[%edit limb=~[[%name p=%b]] val=[%increment val=[%limb p=~[[%name p=%b]]]] next=[%call func=[%limb p=~[[%axis p=0]]] arg=~]]]]]] payload=~]] next=[%call func=[%limb p=~[[%name p=%dec]]] arg=[~ [%atom p=[[%number p=5] q=%.n]]]]] + [%func type=[p=[%core p=[%.y p=[inp=[~ [p=[%atom p=%number q=%.n] name='a']] out=[p=[%atom p=%number q=%.n] name='']]] q=~] name='dec'] body=[%lambda p=[arg=[inp=[~ [p=[%atom p=%number q=%.n] name='a']] out=[p=[%atom p=%number q=%.n] name='']] body=[%let type=[p=[%none p=~] name='b'] val=[%atom p=[[%number p=0] q=%.n]] next=[%loop next=[%if cond=[%compare comp=%'==' a=[%limb p=~[[%name p=%a]]] b=[%increment val=[%limb p=~[[%name p=%b]]]]] then=[%limb p=~[[%name p=%b]]] after=[%else then=[%edit limb=~[[%name p=%b]] val=[%increment val=[%limb p=~[[%name p=%b]]]] next=[%call func=[%limb p=~[[%axis p=0]]] arg=~]]]]]] context=~]] next=[%call func=[%limb p=~[[%name p=%dec]]] arg=[~ [%atom p=[[%number p=43] q=%.n]]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [8 [8 [1 0] [1 8 [1 0] 8 [1 6 [5 [0 30] 4 0 6] [0 6] 7 [10 [6 4 0 6] 0 1] 9 2 0 1] 9 2 0 1] 0 1] 8 [0 2] 9 2 10 [6 7 [0 3] 1 5] 0 2] - !> (mint:jock text) + !> [%8 p=[%8 p=[%1 p=0] q=[p=[%1 p=[8 [1 0] 8 [1 6 [5 [0 30] 4 0 6] [0 6] 7 [10 [6 4 0 6] 0 1] 9 2 0 1] 9 2 0 1]] q=[%0 p=1]]] q=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=43]]] q=[%0 p=2]]]]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> .*(0 [8 [8 [1 0] [1 8 [1 0] 8 [1 6 [5 [0 30] 4 0 6] [0 6] 7 [10 [6 4 0 6] 0 1] 9 2 0 1] 9 2 0 1] 0 1] 8 [0 2] 9 2 10 [6 7 [0 3] 1 5] 0 2]) + !> .* 0 + :+ %8 + +.p + [%8 p=[%8 p=[%1 p=0] q=[p=[%1 p=[8 [1 0] 8 [1 6 [5 [0 30] 4 0 6] [0 6] 7 [10 [6 4 0 6] 0 1] 9 2 0 1] 9 2 0 1]] q=[%0 p=1]]] q=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=43]]] q=[%0 p=2]]]]] !> .*(0 (mint:jock text)) :: -- diff --git a/hoon/tests/lib/eval.hoon b/hoon/tests/lib/eval.hoon index df0e0d7..2fb6d17 100644 --- a/hoon/tests/lib/eval.hoon +++ b/hoon/tests/lib/eval.hoon @@ -1,10 +1,11 @@ :: /lib/tests/eval /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text - 'let a = eval (42 55) (0 2);\0a\0aa' + 'let a = eval (42 55) (0 2);\0a\0aa\0a' ++ test-tokenize %+ expect-eq:test !> ~[[%keyword %let] [%name %a] [%punctuator %'='] [%keyword %eval] [%punctuator %'('] [%literal [[%number p=42] q=%.n]] [%literal [[%number p=55] q=%.n]] [%punctuator %')'] [%punctuator %'('] [%literal [[%number p=0] q=%.n]] [%literal [[%number p=2] q=%.n]] [%punctuator %')'] [%punctuator %';'] [%name %a]] @@ -13,17 +14,23 @@ ++ test-jeam %+ expect-eq:test !> ^- jock:jock - [%let type=[p=[%none ~] name=%a] val=[%eval p=[p=[%atom p=[[%number p=42] q=%.n]] q=[%atom p=[[%number p=55] q=%.n]]] q=[p=[%atom p=[[%number p=0] q=%.n]] q=[%atom p=[[%number p=2] q=%.n]]]] next=[%limb p=~[[%name p=%a]]]] + [%let type=[p=[%none p=~] name='a'] val=[%eval p=[p=[%atom p=[[%number p=42] q=%.n]] q=[%atom p=[[%number p=55] q=%.n]]] q=[p=[%atom p=[[%number p=0] q=%.n]] q=[%atom p=[[%number p=2] q=%.n]]]] next=[%limb p=~[[%name p=%a]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [8 [2 [[1 42] 1 55] [1 0] 1 2] 0 2] - !> (mint:jock text) + !> [%8 p=[%2 p=[p=[%1 p=42] q=[%1 p=55]] q=[p=[%1 p=0] q=[%1 p=2]]] q=[%0 p=2]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> .*(0 [8 [2 [[1 42] 1 55] [1 0] 1 2] 0 2]) + !> .* 0 + :+ %8 + +.p + [%8 p=[%2 p=[p=[%1 p=42] q=[%1 p=55]] q=[p=[%1 p=0] q=[%1 p=2]]] q=[%0 p=2]] !> .*(0 (mint:jock text)) :: -- diff --git a/hoon/tests/lib/example-atom.hoon b/hoon/tests/lib/example-atom.hoon index eb5f4ee..ee48a4e 100644 --- a/hoon/tests/lib/example-atom.hoon +++ b/hoon/tests/lib/example-atom.hoon @@ -1,10 +1,11 @@ :: /lib/tests/example-atom /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text - 'let a:@ = 42;\0a\0a(a a a)' + 'let a:@ = 42;\0a\0a(a a a)\0a' ++ test-tokenize %+ expect-eq:test !> ~[[%keyword %let] [%name %a] [%punctuator %':'] [%punctuator %'@'] [%punctuator %'='] [%literal [[%number p=42] q=%.n]] [%punctuator %';'] [%punctuator %'('] [%name %a] [%name %a] [%name %a] [%punctuator %')']] @@ -13,17 +14,23 @@ ++ test-jeam %+ expect-eq:test !> ^- jock:jock - [%let type=[p=[%atom p=%number q=%.n] name=%a] val=[%atom p=[[%number p=42] q=%.n]] next=[p=[%limb p=~[[%name p=%a]]] q=[p=[%limb p=~[[%name p=%a]]] q=[%limb p=~[[%name p=%a]]]]]] + [%let type=[p=[%atom p=%number q=%.n] name='a'] val=[%atom p=[[%number p=42] q=%.n]] next=[p=[%limb p=~[[%name p=%a]]] q=[p=[%limb p=~[[%name p=%a]]] q=[%limb p=~[[%name p=%a]]]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [8 [1 42] [0 2] [0 2] 0 2] - !> (mint:jock text) + !> [%8 p=[%1 p=42] q=[p=[%0 p=2] q=[p=[%0 p=2] q=[%0 p=2]]]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> .*(0 [8 [1 42] [0 2] [0 2] 0 2]) + !> .* 0 + :+ %8 + +.p + [%8 p=[%1 p=42] q=[p=[%0 p=2] q=[p=[%0 p=2] q=[%0 p=2]]]] !> .*(0 (mint:jock text)) :: -- diff --git a/hoon/tests/lib/fib.hoon b/hoon/tests/lib/fib.hoon new file mode 100644 index 0000000..03426f7 --- /dev/null +++ b/hoon/tests/lib/fib.hoon @@ -0,0 +1,36 @@ +:: /lib/tests/fib +/+ jock, + test +/* hoon %txt /lib/mini/txt +:: +|% +++ text + '// fibonacci\0a\0afunc fib(n:@) -> @ {\0a if n == 0 {\0a 1\0a } else if n == 1 {\0a 1\0a } else {\0a $(n - 1) + $(n - 2)\0a }\0a};\0a\0a(\0a fib(0)\0a fib(1)\0a fib(2)\0a fib(3)\0a fib(4)\0a fib(5)\0a fib(6)\0a fib(7)\0a fib(8)\0a fib(9)\0a fib(10)\0a)\0a' +++ test-tokenize + %+ expect-eq:test + !> ~[[%keyword %func] [%name %fib] [%punctuator %'(('] [%name %n] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%punctuator %'@'] [%punctuator %'{'] [%keyword %if] [%name %n] [%punctuator %'='] [%punctuator %'='] [%literal [[%number p=0] q=%.n]] [%punctuator %'{'] [%literal [[%number p=1] q=%.n]] [%punctuator %'}'] [%keyword %else] [%keyword %if] [%name %n] [%punctuator %'='] [%punctuator %'='] [%literal [[%number p=1] q=%.n]] [%punctuator %'{'] [%literal [[%number p=1] q=%.n]] [%punctuator %'}'] [%keyword %else] [%punctuator %'{'] [%punctuator %'$'] [%punctuator %'('] [%name %n] [%punctuator %'-'] [%literal [[%number p=1] q=%.n]] [%punctuator %')'] [%punctuator %'+'] [%punctuator %'$'] [%punctuator %'('] [%name %n] [%punctuator %'-'] [%literal [[%number p=2] q=%.n]] [%punctuator %')'] [%punctuator %'}'] [%punctuator %'}'] [%punctuator %';'] [%punctuator %'('] [%name %fib] [%punctuator %'(('] [%literal [[%number p=0] q=%.n]] [%punctuator %')'] [%name %fib] [%punctuator %'(('] [%literal [[%number p=1] q=%.n]] [%punctuator %')'] [%name %fib] [%punctuator %'(('] [%literal [[%number p=2] q=%.n]] [%punctuator %')'] [%name %fib] [%punctuator %'(('] [%literal [[%number p=3] q=%.n]] [%punctuator %')'] [%name %fib] [%punctuator %'(('] [%literal [[%number p=4] q=%.n]] [%punctuator %')'] [%name %fib] [%punctuator %'(('] [%literal [[%number p=5] q=%.n]] [%punctuator %')'] [%name %fib] [%punctuator %'(('] [%literal [[%number p=6] q=%.n]] [%punctuator %')'] [%name %fib] [%punctuator %'(('] [%literal [[%number p=7] q=%.n]] [%punctuator %')'] [%name %fib] [%punctuator %'(('] [%literal [[%number p=8] q=%.n]] [%punctuator %')'] [%name %fib] [%punctuator %'(('] [%literal [[%number p=9] q=%.n]] [%punctuator %')'] [%name %fib] [%punctuator %'(('] [%literal [[%number p=10] q=%.n]] [%punctuator %')'] [%punctuator %')']] + !> (rash text parse-tokens:jock) +:: +++ test-jeam + %+ expect-eq:test + !> ^- jock:jock + [%func type=[p=[%core p=[%.y p=[inp=[~ [p=[%atom p=%number q=%.n] name='n']] out=[p=[%atom p=%number q=%.n] name='']]] q=~] name='fib'] body=[%lambda p=[arg=[inp=[~ [p=[%atom p=%number q=%.n] name='n']] out=[p=[%atom p=%number q=%.n] name='']] body=[%if cond=[%compare comp=%'==' a=[%limb p=~[[%name p=%n]]] b=[%atom p=[[%number p=0] q=%.n]]] then=[%atom p=[[%number p=1] q=%.n]] after=[%else-if cond=[%compare comp=%'==' a=[%limb p=~[[%name p=%n]]] b=[%atom p=[[%number p=1] q=%.n]]] then=[%atom p=[[%number p=1] q=%.n]] after=[%else then=[%operator op=%'+' a=[%call func=[%limb p=~[[%axis p=0]]] arg=[~ [%operator op=%'-' a=[%limb p=~[[%name p=%n]]] b=[~ [%atom p=[[%number p=1] q=%.n]]]]]] b=[~ [%call func=[%limb p=~[[%axis p=0]]] arg=[~ [%operator op=%'-' a=[%limb p=~[[%name p=%n]]] b=[~ [%atom p=[[%number p=2] q=%.n]]]]]]]]]]] context=~]] next=[p=[%call func=[%limb p=~[[%name p=%fib]]] arg=[~ [%atom p=[[%number p=0] q=%.n]]]] q=[p=[%call func=[%limb p=~[[%name p=%fib]]] arg=[~ [%atom p=[[%number p=1] q=%.n]]]] q=[p=[%call func=[%limb p=~[[%name p=%fib]]] arg=[~ [%atom p=[[%number p=2] q=%.n]]]] q=[p=[%call func=[%limb p=~[[%name p=%fib]]] arg=[~ [%atom p=[[%number p=3] q=%.n]]]] q=[p=[%call func=[%limb p=~[[%name p=%fib]]] arg=[~ [%atom p=[[%number p=4] q=%.n]]]] q=[p=[%call func=[%limb p=~[[%name p=%fib]]] arg=[~ [%atom p=[[%number p=5] q=%.n]]]] q=[p=[%call func=[%limb p=~[[%name p=%fib]]] arg=[~ [%atom p=[[%number p=6] q=%.n]]]] q=[p=[%call func=[%limb p=~[[%name p=%fib]]] arg=[~ [%atom p=[[%number p=7] q=%.n]]]] q=[p=[%call func=[%limb p=~[[%name p=%fib]]] arg=[~ [%atom p=[[%number p=8] q=%.n]]]] q=[p=[%call func=[%limb p=~[[%name p=%fib]]] arg=[~ [%atom p=[[%number p=9] q=%.n]]]] q=[%call func=[%limb p=~[[%name p=%fib]]] arg=[~ [%atom p=[[%number p=10] q=%.n]]]]]]]]]]]]]]] + !> (jeam:jock text) +:: +++ test-mint + %+ expect-eq:test + !> [%8 p=[%8 p=[%1 p=0] q=[p=[%1 p=[6 [5 [0 6] 1 0] [1 1] 6 [5 [0 6] 1 1] [1 1] 8 [9 348 0 14] 9 2 10 [6 7 [0 3] [9 2 10 [6 7 [0 1] 8 [9 3.061 0 14] 9 2 10 [6 7 [0 3] [0 6] 1 1] 0 2] 0 1] 9 2 10 [6 7 [0 1] 8 [9 3.061 0 14] 9 2 10 [6 7 [0 3] [0 6] 1 2] 0 2] 0 1] 0 2]] q=[%0 p=1]]] q=[p=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=0]]] q=[%0 p=2]]]] q=[p=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=1]]] q=[%0 p=2]]]] q=[p=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=2]]] q=[%0 p=2]]]] q=[p=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=3]]] q=[%0 p=2]]]] q=[p=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=4]]] q=[%0 p=2]]]] q=[p=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=5]]] q=[%0 p=2]]]] q=[p=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=6]]] q=[%0 p=2]]]] q=[p=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=7]]] q=[%0 p=2]]]] q=[p=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=8]]] q=[%0 p=2]]]] q=[p=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=9]]] q=[%0 p=2]]]] q=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=10]]] q=[%0 p=2]]]]]]]]]]]]]]] + !> +>:(mint:jock text) +:: +++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) + %+ expect-eq:test + !> .* 0 + :+ %8 + +.p + [%8 p=[%8 p=[%1 p=0] q=[p=[%1 p=[6 [5 [0 6] 1 0] [1 1] 6 [5 [0 6] 1 1] [1 1] 8 [9 348 0 14] 9 2 10 [6 7 [0 3] [9 2 10 [6 7 [0 1] 8 [9 3.061 0 14] 9 2 10 [6 7 [0 3] [0 6] 1 1] 0 2] 0 1] 9 2 10 [6 7 [0 1] 8 [9 3.061 0 14] 9 2 10 [6 7 [0 3] [0 6] 1 2] 0 2] 0 1] 0 2]] q=[%0 p=1]]] q=[p=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=0]]] q=[%0 p=2]]]] q=[p=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=1]]] q=[%0 p=2]]]] q=[p=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=2]]] q=[%0 p=2]]]] q=[p=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=3]]] q=[%0 p=2]]]] q=[p=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=4]]] q=[%0 p=2]]]] q=[p=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=5]]] q=[%0 p=2]]]] q=[p=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=6]]] q=[%0 p=2]]]] q=[p=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=7]]] q=[%0 p=2]]]] q=[p=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=8]]] q=[%0 p=2]]]] q=[p=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=9]]] q=[%0 p=2]]]] q=[%8 p=[%0 p=2] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=10]]] q=[%0 p=2]]]]]]]]]]]]]]] + !> .*(0 (mint:jock text)) +:: +-- diff --git a/hoon/tests/lib/hoon-alias.hoon b/hoon/tests/lib/hoon-alias.hoon new file mode 100644 index 0000000..9ab3f64 --- /dev/null +++ b/hoon/tests/lib/hoon-alias.hoon @@ -0,0 +1,36 @@ +:: /lib/tests/hoon-alias +/+ jock, + test +/* hoon %txt /lib/mini/txt +:: +|% +++ text + 'import hoon as lib;\0a\0alet a:@ = 6;\0alet b:@ = 7;\0a\0alib.mul(a b)\0a' +++ test-tokenize + %+ expect-eq:test + !> ~[[%keyword %import] [%name %hoon] [%keyword %as] [%name %lib] [%punctuator %';'] [%keyword %let] [%name %a] [%punctuator %':'] [%punctuator %'@'] [%punctuator %'='] [%literal [[%number p=6] q=%.n]] [%punctuator %';'] [%keyword %let] [%name %b] [%punctuator %':'] [%punctuator %'@'] [%punctuator %'='] [%literal [[%number p=7] q=%.n]] [%punctuator %';'] [%name %lib] [%punctuator %'.'] [%name %mul] [%punctuator %'(('] [%name %a] [%name %b] [%punctuator %')']] + !> (rash text parse-tokens:jock) +:: +++ test-jeam + %+ expect-eq:test + !> ^- jock:jock + [%import name=[p=[%hoon p=[#t/<64.kjn %ab-urbe-condita> q=[[[8 [1 1 1] [1 8 [1 0] 8 [1 6 [5 [1 0] 0 60] [0 6] 9 2 10 [60 8 [9 179.060 0 31] 9 2 10 [6 0 124] 0 2] 10 [6 8 [9 348 0 31] 9 2 10 [6 [0 125] 0 14] 0 2] 0 1] 9 2 0 1] 0 1] [[8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [[8 [1 0 0] [1 8 [1 6 [5 [1 0] 0 29] [11 [1.851.876.717 [1 [1 1.717.658.988] 7 [0 1] 8 [1 1 115 110 97 103 45 102 97 105 108 0] 9 2 0 1] 0 1] 0 0] 6 [5 [1 0] 0 28] [0 58] 9 2 10 [14 [8 [9 179.060 0 15] 9 2 10 [6 0 60] 0 2] 0 59] 0 1] 9 2 0 1] 0 1] [[8 [1 0 0] [1 6 [5 [0 12] 0 13] [1 0] 6 [8 [9 358.123 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] [1 0] 1 1] 0 1] [8 [1 0 0] [1 6 [5 [1 0] 0 12] [10 [1 0 13] 0 12] 10 [3 9 2 10 [12 0 25] 0 1] 0 12] 0 1] 8 [1 0] [1 8 [1 0] 8 [1 6 [5 [1 0] 0 30] [0 6] 9 2 10 [30 0 61] 10 [6 4 0 6] 0 1] 9 2 0 1] 0 1] [8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [[8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [8 [8 [7 [0 7] 8 [9 5.622 0 7] 9 2 10 [6 7 [0 3] 8 [9 11.190 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 2] 9 2 10 [6 0 14] 0 2] 6 [8 [7 [0 3] 8 [1 0] [1 6 [5 [1 0] 0 6] [1 0] 8 [9 22.378 0 127] 9 23 10 [6 0 14] 0 2] 0 1] 9 2 10 [6 0 6] 0 2] [0 2] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [6 [3 0 6] [[6 [5 [1 0] 0 12] [1 0] 0 0] 8 [0 30] 9 2 10 [6 0 29] 0 2] 6 [5 [1 0] 0 6] [1 0] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] 8 [1 0 0] [1 6 [5 [1 0] 0 13] [1 0] [8 [9 358.122 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 9 2 10 [13 8 [9 11.246 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 1] 0 1] [8 [1 0 0] [1 8 [1 0 0] 8 [1 6 [6 [5 [1 0] 0 60] [6 [5 [1 0] 0 61] [1 0] 1 1] 1 1] [0 13] 9 2 10 [30 [8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] 8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] 10 [6 [4 0 12] 8 [9 348 0 31] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 179.035 0 31] 9 2 10 [6 [7 [0 3] [1 0] 0 12] 7 [0 3] 5 [8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] 0 2] 0 2] 0 1] 9 2 0 1] 0 1] [[8 [1 0 0] [1 6 [5 [1 0] 0 12] [0 13] 9 2 10 [6 [8 [9 179.060 0 7] 9 2 10 [6 0 28] 0 2] 4 0 13] 0 1] 0 1] [8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [8 [8 [7 [0 7] 8 [9 5.622 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 14] 0 2] 6 [8 [7 [0 3] 8 [1 0] [1 6 [5 [1 0] 0 6] [1 0] 8 [9 89.518 0 127] 9 11 10 [6 0 14] 0 2] 0 1] 9 2 10 [6 0 6] 0 2] [0 2] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [[8 [1 0] [1 8 [6 [3 0 6] [[8 [7 [0 7] 9 11.196 0 1] 9 2 10 [6 0 28] 0 2] 8 [7 [0 7] 9 89.535 0 1] 9 2 10 [6 0 29] 0 2] 8 [7 [0 7] 9 11.196 0 1] 9 2 10 [6 0 14] 0 2] 8 [5 [0 14] 0 2] 0 6] 0 1] [[8 [1 0 0] [1 8 [1 6 [5 [1 0] 0 28] [0 29] 6 [5 [1 0] 0 29] [1 0] 9 2 10 [14 [8 [9 179.060 0 15] 9 2 10 [6 0 60] 0 2] 0 59] 0 1] 9 2 0 1] 0 1] [8 [7 [8 [9 5.622 0 1] 9 2 10 [6 7 [0 3] 7 [9 11.190 0 1] 9 2 0 1] 0 2] 9 2 0 1] 7 [0 1] [1 [8 [1 0 0] [1 8 [1 6 [5 [1 0] 0 62] [[[0 28] 0 29] 1 0 0] 6 [5 [0 28] 0 248] [6 [5 [0 29] 0 249] [0 62] 10 [2 [0 28] 0 29] 0 62] 6 [8 [9 92 0 63] 9 2 10 [6 [0 60] 0 504] 0 2] [8 [9 2 10 [62 0 250] 0 1] 6 [3 0 2] [6 [8 [9 190 0 127] 9 2 10 [6 [0 1.016] 0 24] 0 2] [10 [6 0 2] 0 126] 10 [7 10 [6 0 11] 0 126] 0 2] 0 0] 8 [9 2 10 [62 0 251] 0 1] 6 [3 0 2] [6 [8 [9 190 0 127] 9 2 10 [6 [0 1.016] 0 24] 0 2] [10 [7 0 2] 0 126] 10 [6 10 [7 0 10] 0 126] 0 2] 0 0] 9 2 0 1] 0 1] [8 [1 0] [1 8 [1 6 [5 [1 0] 0 62] [1 0] 6 [5 [0 14] 0 248] [8 [1 6 [5 [1 0] 0 506] [0 507] 6 [5 [1 0] 0 507] [0 506] 6 [8 [9 190 0 127] 9 2 10 [6 [0 4.072] 0 4.076] 0 2] [10 [7 9 2 10 [506 0 2.027] 0 1] 0 506] 10 [6 9 2 10 [507 0 2.030] 0 1] 0 507] 9 2 0 1] 6 [8 [9 92 0 63] 9 2 10 [6 [0 30] 0 504] 0 2] [10 [6 9 2 10 [62 0 250] 0 1] 0 62] 10 [7 9 2 10 [62 0 251] 0 1] 0 62] 9 2 0 1] 0 1] [8 [1 0] [1 7 [10 [6 0 6] 0 1] 8 [1 6 [5 [1 0] 0 62] [1 0] 6 [5 [0 14] 0 248] [[1 0] 0 249] 6 [8 [9 92 0 63] 9 2 10 [6 [0 30] 0 504] 0 2] [9 2 10 [62 0 250] 0 1] 9 2 10 [62 0 251] 0 1] 9 2 0 1] 0 1] 7 [8 [[7 [7 [9 1.374 0 7] 9 2 0 1] 9 2 0 1] 7 [7 [9 1.374 0 7] 9 2 0 1] 9 2 0 1] [1 6 [5 [1 0] 0 30] [1 0] 6 [6 [5 [1 0] 0 12] [1 0] 6 [8 [9 92 0 31] 9 2 10 [6 [0 248] 0 57] 0 2] [6 [6 [5 [0 120] 0 25] [1 1] 1 0] [1 0] 1 1] 1 1] [6 [6 [5 [1 0] 0 13] [1 0] 6 [8 [9 92 0 31] 9 2 10 [6 [0 59] 0 248] 0 2] [6 [6 [5 [0 27] 0 120] [1 1] 1 0] [1 0] 1 1] 1 1] [6 [6 [5 [1 0] 0 122] [1 0] 6 [8 [9 190 0 31] 9 2 10 [6 [0 248] 0 1.000] 0 2] [6 [6 [5 [0 120] 0 488] [1 1] 1 0] [6 [9 2 10 [30 0 122] 10 [12 [1 0] 0 120] 0 1] [1 0] 1 1] 1 1] 1 1] [6 [6 [5 [1 0] 0 123] [1 0] 6 [8 [9 190 0 31] 9 2 10 [6 [0 248] 0 1.004] 0 2] [6 [6 [5 [0 120] 0 492] [1 1] 1 0] [6 [9 2 10 [30 0 123] 10 [13 [1 0] 0 120] 0 1] [1 0] 1 1] 1 1] 1 1] [1 0] 1 1] 1 1] 1 1] 1 1] 0 1] 9 2 0 1] 0 1] [[8 [1 1 1] [1 [8 [9 44.764 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 8 [9 6.014 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 1] [8 [7 [8 [9 5.622 0 1] 9 2 10 [6 7 [0 3] 8 [9 11.190 0 1] 9 2 10 [6 [7 [0 3] 8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 7 [0 3] 7 [9 5.622 0 1] 9 2 0 1] 0 2] 0 2] 9 2 0 1] [1 [8 [1 0 0] [1 8 [8 [9 11 0 7] 9 2 10 [6 0 28] 0 2] 8 [8 [9 22.378 0 63] 9 4 10 [6 0 126] 0 2] 9 2 10 [6 [0 60] 7 [0 3] 8 [8 [9 89.518 0 63] 9 4 10 [6 0 6] 0 2] 9 2 10 [6 0 61] 0 2] 0 2] 0 1] [8 [1 0 0] [1 8 [8 [9 11 0 7] 9 2 10 [6 0 28] 0 2] 8 [8 [8 [9 89.518 0 63] 9 10 10 [6 0 6] 0 2] 9 2 10 [6 0 61] 0 2] 6 [5 [1 0] 0 2] [8 [8 [9 22.378 0 127] 9 10 10 [6 0 254] 0 2] 9 2 10 [6 0 124] 0 2] 8 [8 [9 22.378 0 127] 9 4 10 [6 0 254] 0 2] 9 2 10 [6 [0 124] 0 6] 0 2] 0 1] 8 [1 0] [1 8 [8 [8 [9 22.378 0 31] 9 22 10 [6 0 62] 0 2] 9 2 10 [6 0 14] 0 2] 6 [5 [1 0] 0 2] [1 0] 0 5] 0 1] 0 1] 8 [1 0 0] [1 8 [6 [6 [3 0 12] [1 1] 1 0] [[0 12] 1 1] 0 12] 8 [9 4 0 15] 9 2 10 [6 [0 61] 7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 7 [0 3] 8 [9 4 0 15] 9 2 10 [6 [7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 0 12] 0 2] 0 13] 0 2] 0 2] 0 2] 0 1] [8 [7 [7 [9 5.622 0 1] 9 2 0 1] 9 2 0 1] [1 [8 [1 0] [1 8 [1 6 [5 [1 0] 0 62] [[0 14] 1 0 0] 6 [5 [0 14] 0 124] [0 62] 6 [8 [9 92 0 63] 9 2 10 [6 [0 30] 0 252] 0 2] [8 [9 2 10 [62 0 250] 0 1] 6 [3 0 2] [6 [8 [9 190 0 127] 9 2 10 [6 [0 508] 0 12] 0 2] [10 [6 0 2] 0 126] 10 [7 10 [6 0 11] 0 126] 0 2] 0 0] 8 [9 2 10 [62 0 251] 0 1] 6 [3 0 2] [6 [8 [9 190 0 127] 9 2 10 [6 [0 508] 0 12] 0 2] [10 [7 0 2] 0 126] 10 [6 10 [7 0 10] 0 126] 0 2] 0 0] 9 2 0 1] 0 1] [8 [1 0] [1 8 [1 6 [5 [1 0] 0 62] [1 0] 6 [5 [0 14] 0 124] [8 [1 6 [5 [1 0] 0 506] [0 507] 6 [5 [1 0] 0 507] [0 506] 6 [8 [9 190 0 127] 9 2 10 [6 [0 2.036] 0 2.038] 0 2] [10 [7 9 2 10 [506 0 2.027] 0 1] 0 506] 10 [6 9 2 10 [507 0 2.030] 0 1] 0 507] 9 2 0 1] 6 [8 [9 92 0 63] 9 2 10 [6 [0 30] 0 252] 0 2] [10 [6 9 2 10 [62 0 250] 0 1] 0 62] 10 [7 9 2 10 [62 0 251] 0 1] 0 62] 9 2 0 1] 0 1] 7 [8 [[7 [7 [9 1.374 0 7] 9 2 0 1] 9 2 0 1] 7 [7 [9 1.374 0 7] 9 2 0 1] 9 2 0 1] [1 6 [5 [1 0] 0 30] [1 0] 6 [6 [5 [1 0] 0 12] [1 0] 8 [9 92 0 31] 9 2 10 [6 [0 124] 0 57] 0 2] [6 [6 [5 [1 0] 0 13] [1 0] 8 [9 92 0 31] 9 2 10 [6 [0 59] 0 124] 0 2] [6 [6 [5 [1 0] 0 122] [1 0] 6 [8 [9 190 0 31] 9 2 10 [6 [0 124] 0 500] 0 2] [6 [9 2 10 [30 0 122] 10 [12 [1 0] 0 60] 0 1] [1 0] 1 1] 1 1] [6 [6 [5 [1 0] 0 123] [1 0] 6 [8 [9 190 0 31] 9 2 10 [6 [0 124] 0 502] 0 2] [6 [9 2 10 [30 0 123] 10 [13 [1 0] 0 60] 0 1] [1 0] 1 1] 1 1] [1 0] 1 1] 1 1] 1 1] 1 1] 0 1] 9 2 0 1] 0 1] 8 [1 0] [1 7 [10 [6 8 [9 22.395 0 7] 9 2 10 [6 0 14] 0 2] 0 1] 8 [1 0] 8 [1 6 [5 [1 0] 0 30] [0 6] 9 2 10 [30 0 61] 10 [6 [0 60] 0 6] 0 1] 9 2 0 1] 0 1] [8 [[8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [[0 50] 0 54] [1 8 [[8 [0 60] 9 2 10 [6 0 28] 0 2] 8 [0 61] 9 2 10 [6 0 29] 0 2] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [[8 [1 1 1] [1 11 [1.851.876.717 [1 [1 1.717.658.988] 7 [0 1] 8 [1 1 100 105 118 105 100 101 45 98 121 45 122 101 114 111 0] 9 2 0 1] 0 1] 6 [5 [1 0] 0 13] [0 0] 8 [1 0] 8 [1 6 [8 [9 358.123 0 31] 9 2 10 [6 [0 124] 0 125] 0 2] [0 6] 9 2 10 [60 8 [9 3.061 0 31] 9 2 10 [6 [0 124] 0 125] 0 2] 10 [6 4 0 6] 0 1] 9 2 0 1] 0 1] [[8 [1 0] [1 11 [1.851.876.717 [1 [1 1.717.658.988] 7 [0 1] 8 [1 1 100 101 99 114 101 109 101 110 116 45 117 110 100 101 114 102 108 111 119 0] 9 2 0 1] 0 1] 6 [5 [1 0] 0 6] [0 0] 8 [1 0] 8 [1 6 [5 [0 30] 4 0 6] [0 6] 9 2 10 [6 4 0 6] 0 1] 9 2 0 1] 0 1] [8 [1 0 0] [1 8 [6 [6 [3 0 12] [1 1] 1 0] [[0 12] 1 1] 0 12] 8 [9 6.014 0 15] 9 2 10 [6 [0 61] 7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 7 [0 3] 8 [9 4 0 15] 9 2 10 [6 [7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 0 12] 0 2] 0 13] 0 2] 0 2] 0 2] 0 1] 8 [1 0 0] [1 6 [6 [5 [0 12] 0 13] [1 1] 1 0] [6 [8 [1 6 [5 [1 0] 0 28] [1 0] 6 [6 [6 [5 [1 0] 0 29] [1 1] 1 0] [6 [9 2 10 [14 [8 [9 179.060 0 15] 9 2 10 [6 0 60] 0 2] 8 [9 179.060 0 15] 9 2 10 [6 0 61] 0 2] 0 1] [1 0] 1 1] 1 1] [1 0] 1 1] 9 2 0 1] [1 0] 1 1] 1 1] 0 1] 8 [1 0 0] [1 8 [[6 [6 [3 0 12] [1 1] 1 0] [0 12] 0 0] 6 [6 [3 0 13] [1 1] 1 0] [0 13] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0 0] [1 8 [1 0] 8 [1 6 [5 [1 0] 0 61] [0 6] 9 2 10 [61 8 [9 11.246 0 31] 9 2 10 [6 [0 124] 0 125] 0 2] 10 [6 4 0 6] 0 1] 9 2 0 1] 0 1] 8 [1 0] [1 8 [7 [0 7] 1 1] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0 0] [1 8 [1 0 0] 8 [1 6 [6 [5 [1 0] 0 60] [6 [5 [1 0] 0 61] [1 0] 1 1] 1 1] [0 13] 9 2 10 [30 [8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] 8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] 10 [6 [4 0 12] 8 [9 348 0 31] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 179.035 0 31] 9 2 10 [6 [7 [0 3] [1 0] 0 12] 7 [0 3] 6 [5 [1 0] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] [6 [5 [1 0] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] [1 0] 1 1] 1 1] 0 2] 0 2] 0 1] 9 2 0 1] 0 1] [[8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0] [1 6 [5 [1 0] 0 6] [1 1] 8 [9 4 0 7] 9 2 10 [6 [7 [0 3] 1 2] 7 [0 3] 9 2 10 [6 8 [9 179.060 0 7] 9 2 10 [6 0 14] 0 2] 0 1] 0 2] 0 1] 8 [1 0] [1 0 6] 0 1] [8 [1 0 [1 1] 0] [1 8 [9 358.122 0 7] 9 2 10 [6 [7 [0 3] [0 12] 0 53] 7 [0 3] 8 [9 11.246 0 7] 9 2 10 [6 [7 [0 3] [0 12] 0 52] 0 59] 0 2] 0 2] 0 1] [8 [1 0] [1 8 [1 [6 [6 [3 0 14] [1 1] 1 0] [8 [9 5 0 1] 9 2 10 [6 [7 [0 3] 1 3.405.691.582] [7 [0 3] 1 32.767] 0 30] 0 2] 8 [8 [9 22 0 15] 9 2 10 [6 [7 [0 3] 1 5] [7 [0 3] 9 4 10 [14 0 28] 0 1] 7 [0 3] 9 4 10 [14 0 29] 0 1] 0 2] 8 [9 5 0 3] 9 2 10 [6 [7 [0 3] 1 3.735.928.559] [7 [0 3] 1 65.534] 0 6] 0 2] 8 [1 0 0 0] [1 8 [8 [9 89.534 0 63] 9 2 10 [6 [7 [0 3] 1 3] 0 59] 0 2] 8 [1 0] 8 [1 6 [5 [1 8] 0 6] [0 250] 8 [8 [9 764 0 511] 9 2 10 [6 [0 252] [0 30] 0 507] 0 2] 8 [8 [9 86 0 1.023] 9 2 10 [6 [7 [0 3] 8 [9 11.246 0 1.023] 9 2 10 [6 [7 [0 3] 1 0 31] 0 6] 0 2] 7 [0 3] 8 [9 358.122 0 1.023] 9 2 10 [6 [7 [0 3] 1 0 31] 0 6] 0 2] 0 2] 6 [5 [1 0] 0 2] [9 2 10 [124 4 0 508] 10 [6 4 0 30] 0 7] 0 2] 9 2 0 1] 0 1] 9 4 0 1] 0 1] 8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0 0] [1 8 [1 0 0] 8 [1 6 [6 [5 [1 0] 0 60] [1 0] 6 [5 [1 0] 0 61] [1 0] 1 1] [0 13] 9 2 10 [30 [8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] 8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] 10 [6 [4 0 12] 8 [9 348 0 31] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 179.035 0 31] 9 2 10 [6 [7 [0 3] [1 0] 0 12] 7 [0 3] 6 [5 [1 0] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] [1 0] 6 [5 [1 0] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] [1 0] 1 1] 0 2] 0 2] 0 1] 9 2 0 1] 0 1] [[8 [1 0 0] [1 8 [9 383 0 7] 9 2 10 [6 [0 28] 7 [0 3] 8 [9 89.519 0 7] 9 2 10 [6 7 [0 3] 8 [9 1.375 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 2] 0 2] 0 1] [8 [1 0] [1 8 [9 89.534 0 7] 9 2 10 [6 [7 [0 3] 1 0] 0 14] 0 2] 0 1] [8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [6 [3 0 6] [[8 [0 30] 9 2 10 [6 0 28] 0 2] [8 [7 [0 7] 8 [9 5.622 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 58] 0 2] 8 [7 [0 7] 8 [9 5.622 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 59] 0 2] 6 [5 [1 0] 0 6] [1 0] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [8 [1 0 0] [1 8 [6 [6 [3 0 12] [1 1] 1 0] [[0 12] 1 1] 0 12] 8 [9 44.764 0 15] 9 2 10 [6 [0 61] 7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 7 [0 3] 8 [9 4 0 15] 9 2 10 [6 [7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 0 12] 0 2] 0 13] 0 2] 0 2] 0 2] 0 1] [8 [1 0] [1 6 [5 [1 0] 0 6] [1 0 0] 8 [[8 [9 44.764 0 7] 9 2 10 [6 [7 [0 3] 8 [9 179.060 0 7] 9 2 10 [6 7 [0 3] 8 [9 2.810 0 7] 9 2 10 [6 0 14] 0 2] 0 2] 7 [0 3] 1 2] 0 2] 1 0] 8 [8 [1 8 [8 [9 348 0 31] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 22.394 0 31] 9 2 10 [6 0 28] 0 2] 0 2] 8 [8 [9 4 0 63] 9 2 10 [6 [0 6] 0 6] 0 2] 6 [5 [0 60] 1 0] [6 [8 [9 340 0 127] 9 2 10 [6 [0 6] 0 254] 0 2] [[0 6] 0 2] [0 61] 8 [9 4 0 127] 9 2 10 [6 [0 125] 0 125] 0 2] 6 [8 [9 340 0 127] 9 2 10 [6 [0 6] 0 254] 0 2] [9 2 10 [6 [8 [9 179.060 0 127] 9 2 10 [6 0 124] 0 2] 0 6] 0 7] 9 2 10 [12 8 [9 179.060 0 127] 9 2 10 [6 0 124] 0 2] 0 7] 9 2 0 1] [0 4] 8 [9 3.061 0 31] 9 2 10 [6 [0 62] 0 13] 0 2] 0 1] [8 [1 0 0] [1 [8 [1 6 [5 [1 0] 0 29] [1 0] 8 [9 348 0 15] 9 2 10 [6 [0 244] 7 [0 3] 9 2 10 [29 0 59] 0 1] 0 2] 9 2 0 1] 8 [9 6.015 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 1] [8 [1 0 0] [1 6 [5 [0 12] 0 13] [1 0] 8 [1 0] 8 [1 6 [5 [0 6] 1 2] [8 [9 340 0 31] 9 2 10 [6 [0 124] 0 125] 0 2] 8 [[8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 3] 0 124] 0 2] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 3] 0 125] 0 2] 6 [5 [0 4] 0 5] [9 2 10 [30 [8 [9 11.246 0 63] 9 2 10 [6 [7 [0 3] 1 3] 0 252] 0 2] 8 [9 11.246 0 63] 9 2 10 [6 [7 [0 3] 1 3] 0 253] 0 2] 10 [6 4 0 14] 0 3] 8 [9 358.123 0 63] 9 2 10 [6 [0 12] 0 13] 0 2] 9 2 0 1] 0 1] 8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [1 0 0] [1 6 [8 [9 340 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] [1 1] 1 0] 0 1] [8 [1 0 0 0] [1 8 [9 348 0 7] 9 2 10 [6 [7 [0 3] 8 [9 179.035 0 7] 9 2 10 [6 [7 [0 3] [0 12] 8 [9 89.534 0 7] 9 2 10 [6 [0 28] 0 58] 0 2] 0 59] 0 2] 0 58] 0 2] 0 1] [[8 [1 0 0] [1 8 [[8 [9 22.398 0 7] 9 2 10 [6 0 28] 0 2] 8 [9 22.398 0 7] 9 2 10 [6 0 29] 0 2] 6 [5 [0 4] 0 5] [8 [9 374 0 15] 9 2 10 [6 [0 60] 0 61] 0 2] 8 [9 358.123 0 15] 9 2 10 [6 [0 12] 0 13] 0 2] 0 1] [8 [1 0 0] [1 8 [1 6 [5 [1 0] 0 28] [1 0] [0 29] 9 2 10 [28 8 [9 179.060 0 15] 9 2 10 [6 0 60] 0 2] 0 1] 9 2 0 1] 0 1] [8 [1 0 0] [1 6 [5 [0 12] 0 13] [1 0] 6 [6 [3 0 12] [1 1] 1 0] [6 [6 [3 0 13] [1 1] 1 0] [8 [9 358.123 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 1 0] 6 [6 [3 0 13] [1 1] 1 0] [1 1] 6 [5 [0 24] 0 26] [9 2 10 [6 [0 25] 0 27] 0 1] 9 2 10 [6 [0 24] 0 26] 0 1] 0 1] [8 [[8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [9 686 0 7] 9 2 10 [6 [0 28] 7 [0 3] 8 [9 698 0 7] 9 2 10 [6 0 29] 0 2] 0 2] 0 1] [8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [[0 26] 7 [8 [9 3.060 0 7] 9 2 10 [6 0 14] 0 2] 0 6] [1 8 [[8 [0 30] 9 2 10 [6 0 28] 0 2] 8 [7 [0 7] 8 [9 3.060 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 29] 0 2] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [8 [[7 [9 89.983 0 1] 9 2 0 1] 7 [9 89.983 0 1] 9 2 0 1] [1 8 [1 8 [[0 114] 0 118] [1 8 [[8 [0 124] 9 2 10 [6 0 28] 0 2] 8 [0 125] 9 2 10 [6 0 29] 0 2] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [7 [[[7 [0 28] 9 2 0 1] 7 [0 28] 9 2 0 1] 1 0] 8 [0 2] [1 0 15] 0 1] [1 [1 [8 [[7 [8 [9 5.622 0 127] 9 2 10 [6 7 [0 3] 9 2 0 15] 0 2] 9 2 0 1] [7 [0 252] 9 2 0 1] 7 [0 253] 9 2 0 1] [1 6 [5 [1 0] 0 12] [[[0 26] 0 27] 1 0 0] 6 [5 [0 48] 0 26] [10 [5 0 27] 0 12] 6 [8 [0 62] 9 2 10 [6 [0 58] 0 112] 0 2] [8 [9 2 10 [12 0 50] 0 1] 6 [3 0 2] [6 [8 [9 190 0 1.023] 9 2 10 [6 [0 240] 0 24] 0 2] [10 [6 0 2] 0 28] 10 [7 10 [6 0 11] 0 28] 0 2] 0 0] 8 [9 2 10 [12 0 51] 0 1] 6 [3 0 2] [6 [8 [9 190 0 1.023] 9 2 10 [6 [0 240] 0 24] 0 2] [10 [7 0 2] 0 28] 10 [6 10 [7 0 10] 0 28] 0 2] 0 0] 0 1] [8 [[7 [8 [9 5.622 0 127] 9 2 10 [6 7 [0 3] 9 2 0 15] 0 2] 9 2 0 1] 7 [0 252] 9 2 0 1] [1 6 [5 [1 0] 0 12] [1 0] 6 [5 [0 13] 0 48] [[1 0] 0 49] 6 [8 [0 62] 9 2 10 [6 [0 29] 0 112] 0 2] [9 2 10 [12 0 50] 0 1] 9 2 10 [12 0 51] 0 1] 0 1] [8 [1 0] [1 8 [[7 [8 [9 1.374 0 511] 9 2 10 [6 0 2.044] 0 2] 9 2 0 1] 7 [8 [9 1.374 0 511] 9 2 10 [6 0 2.044] 0 2] 9 2 0 1] 8 [1 6 [5 [1 0] 0 30] [1 0] 6 [6 [5 [1 0] 0 12] [1 0] 8 [0 254] 9 2 10 [6 [0 248] 0 57] 0 2] [6 [6 [5 [1 0] 0 13] [1 0] 8 [0 254] 9 2 10 [6 [0 59] 0 248] 0 2] [6 [6 [5 [1 0] 0 122] [1 0] 6 [8 [9 190 0 2.047] 9 2 10 [6 [0 248] 0 1.000] 0 2] [6 [9 2 10 [30 0 122] 10 [12 [1 0] 0 120] 0 1] [1 0] 1 1] 1 1] [6 [6 [5 [1 0] 0 123] [1 0] 6 [8 [9 190 0 2.047] 9 2 10 [6 [0 248] 0 1.004] 0 2] [6 [9 2 10 [30 0 123] 10 [13 [1 0] 0 120] 0 1] [1 0] 1 1] 1 1] [1 0] 1 1] 1 1] 1 1] 1 1] 9 2 0 1] 0 1] 8 [[7 [8 [9 5.622 0 127] 9 2 10 [6 7 [0 3] 9 2 0 15] 0 2] 9 2 0 1] 7 [0 252] 9 2 0 1] [1 6 [5 [1 0] 8 [9 10 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] [1 1] 1 0] 0 1] 0 1] 0 1] 0 1] [8 [1 1 1] [1 6 [5 [1 0] 0 13] [0 0] 8 [9 3.061 0 7] 9 2 10 [6 [0 28] 7 [0 3] 8 [9 4 0 7] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 44.764 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 2] 0 2] 0 1] 8 [1 0 0] [1 6 [5 [1 0] 0 13] [1 0] 8 [9 348 0 7] 9 2 10 [6 [7 [0 3] 8 [9 358.122 0 7] 9 2 10 [6 [7 [0 3] [0 12] 0 52] 0 117] 0 2] 7 [0 3] 8 [9 179.035 0 7] 9 2 10 [6 [7 [0 3] [0 12] 0 52] 7 [0 3] 9 2 10 [13 0 27] 0 1] 0 2] 0 2] 0 1] [8 [1 0 0] [1 6 [8 [9 358.123 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] [1 1] 1 0] 0 1] [8 [1 0 0] [1 8 [[8 [9 22.398 0 7] 9 2 10 [6 7 [0 3] 8 [9 22.398 0 7] 9 2 10 [6 0 28] 0 2] 0 2] 8 [9 22.398 0 7] 9 2 10 [6 7 [0 3] 8 [9 22.398 0 7] 9 2 10 [6 0 29] 0 2] 0 2] 6 [5 [0 4] 0 5] [8 [9 374 0 15] 9 2 10 [6 [0 60] 0 61] 0 2] 8 [9 358.123 0 15] 9 2 10 [6 [0 12] 0 13] 0 2] 0 1] [[8 [8 [9 3.063 0 1] 10 [6 7 [0 3] 1 5] 0 2] 8 [1 0 0 0] [1 7 [10 [12 8 [9 358.122 0 59] 9 2 10 [6 [7 [0 3] 1 5] 0 28] 0 2] 0 1] 8 [8 [9 3.061 0 59] 9 2 10 [6 [0 58] 7 [0 3] 8 [9 89.534 0 59] 9 2 10 [6 [7 [0 3] 1 3] 0 59] 0 2] 0 2] 8 [8 [9 682 0 123] 9 2 10 [6 [7 [0 3] 8 [9 1.375 0 123] 9 2 10 [6 [7 [0 3] 1 3] 0 123] 0 2] 7 [0 3] 8 [9 186 0 123] 9 2 10 [6 [0 6] 7 [0 3] 1 0] 0 2] 0 2] 8 [8 [9 44.764 0 251] 9 2 10 [6 [0 250] 7 [0 3] 1 4] 0 2] 8 [0 124] 8 [1 3.432.918.353 461.845.907] 8 [8 [9 1.375 0 2.043] 9 2 10 [6 [7 [0 3] 1 5] 0 2.043] 0 2] 8 [0 30] 7 [10 [30 8 [0 30] 8 [1 6 [5 [1 0] 0 14] [0 6] 8 [8 [9 84 0 32.763] 9 2 10 [6 [7 [0 3] 8 [9 3.061 0 32.763] 9 2 10 [6 [0 510] 0 30] 0 2] 0 62] 0 2] 7 [10 [2 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 6] 0 508] 0 2] 0 2] 0 1] 7 [10 [2 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 15] 0 6] 0 2] 0 1] 7 [10 [2 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 6] 0 509] 0 2] 0 2] 0 1] 7 [10 [14 8 [9 86 0 65.531] 9 2 10 [6 [0 30] 0 6] 0 2] 0 1] 7 [10 [14 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 13] 0 30] 0 2] 0 1] 7 [10 [14 8 [9 4 0 16.382] 9 2 10 [6 [7 [0 3] 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 30] 7 [0 3] 1 5] 0 2] 0 2] 7 [0 3] 1 3.864.292.196] 0 2] 0 1] 9 2 10 [14 8 [9 179.060 0 65.531] 9 2 10 [6 0 62] 0 2] 0 3] 9 2 0 1] 0 1] 8 [8 [9 11.188 0 8.187] 9 2 10 [6 [7 [0 3] 8 [9 4 0 8.187] 9 2 10 [6 [7 [0 3] 1 4] 0 126] 0 2] 0 254] 0 2] 8 [1 0] 8 [8 [9 350 0 32.763] 9 2 10 [6 [0 32.762] 7 [0 3] 1 3] 0 2] 7 [10 [254 6 [5 [1 3] 0 2] [7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 179.035 0 65.531] 9 2 10 [6 [7 [0 3] 1 0 16] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 2] 0 30] 0 2] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 179.035 0 65.531] 9 2 10 [6 [7 [0 3] 1 0 8] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 1] 0 30] 0 2] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 0] 0 30] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 508] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 15] 0 14] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 509] 0 2] 0 2] 0 1] 8 [9 86 0 65.531] 9 2 10 [6 [0 510] 0 14] 0 2] 6 [5 [1 2] 0 2] [7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 179.035 0 65.531] 9 2 10 [6 [7 [0 3] 1 0 8] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 1] 0 30] 0 2] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 0] 0 30] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 508] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 15] 0 14] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 509] 0 2] 0 2] 0 1] 8 [9 86 0 65.531] 9 2 10 [6 [0 510] 0 14] 0 2] 6 [5 [1 1] 0 2] [7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 0] 0 30] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 508] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 15] 0 14] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 509] 0 2] 0 2] 0 1] 8 [9 86 0 65.531] 9 2 10 [6 [0 510] 0 14] 0 2] 11 [1.936.945.012 1 0] 0 254] 0 1] 7 [10 [254 8 [9 86 0 65.531] 9 2 10 [6 [0 510] 0 65.530] 0 2] 0 1] 8 [1 [8 [9 5 0 1] 9 2 10 [6 0 1.022] 0 2] 8 [1 0] [1 7 [10 [6 8 [9 86 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 11.246 0 524.283] 9 2 10 [6 [7 [0 3] 1 0 16] 0 14] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 131.070] 9 2 10 [6 7 [0 3] 8 [9 4 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 1 2.246.822.507] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 11.246 0 524.283] 9 2 10 [6 [7 [0 3] 1 0 13] 0 14] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 131.070] 9 2 10 [6 7 [0 3] 8 [9 4 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 1 3.266.489.909] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 11.246 0 524.283] 9 2 10 [6 [7 [0 3] 1 0 16] 0 14] 0 2] 0 2] 0 1] 0 6] 0 1] 9 4 0 1] 0 1] [[8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [6 [3 0 6] [[8 [0 30] 9 2 10 [6 0 28] 0 2] 8 [7 [0 7] 8 [9 3.060 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 29] 0 2] 6 [5 [1 0] 0 6] [1 0] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] 8 [1 0 0] [1 11 [1.851.876.717 [1 [1 1.717.658.988] 7 [0 1] 8 [1 1 115 117 98 116 114 97 99 116 45 117 110 100 101 114 102 108 111 119 0] 9 2 0 1] 0 1] 6 [5 [1 0] 0 13] [0 12] 9 2 10 [6 [8 [9 179.060 0 7] 9 2 10 [6 0 28] 0 2] 8 [9 179.060 0 7] 9 2 10 [6 0 29] 0 2] 0 1] 0 1] [8 [1 0 0] [1 6 [5 [0 13] 1 0] [1 1] 8 [1 6 [5 [0 29] 1 1] [0 28] 8 [9 2 10 [29 8 [9 44.764 0 15] 9 2 10 [6 [0 61] 7 [0 3] 1 2] 0 2] 0 1] 8 [8 [9 4 0 31] 9 2 10 [6 [0 6] 0 6] 0 2] 8 [8 [9 350 0 63] 9 2 10 [6 [0 253] 7 [0 3] 1 1] 0 2] 6 [5 [1 0] 0 2] [0 6] 7 [0 3] 8 [9 4 0 63] 9 2 10 [6 [0 6] 0 252] 0 2] 9 2 0 1] 0 1] 8 [1 0] [1 [8 [1 0 0] [1 8 [9 11 0 7] 9 2 10 [6 7 [0 3] 8 [9 348 0 31] 9 2 10 [6 [0 28] 0 29] 0 2] 0 2] 0 1] [8 [1 0 0 0] [1 8 [8 [9 11 0 7] 9 2 10 [6 0 59] 0 2] 8 [8 [9 22.394 0 63] 9 2 10 [6 7 [0 3] 8 [9 3.061 0 63] 9 2 10 [6 [0 126] 0 60] 0 2] 0 2] 8 [8 [9 6.014 0 127] 9 2 10 [6 [0 250] 0 6] 0 2] 8 [9 11 0 63] 9 2 10 [6 7 [0 3] 8 [9 2.798 0 255] 9 2 10 [6 [7 [0 3] 8 [9 179.035 0 255] 9 2 10 [6 [7 [0 3] [0 124] 0 2] 0 30] 0 2] 7 [0 3] 8 [9 11.246 0 255] 9 2 10 [6 [7 [0 3] [0 124] 8 [9 3.061 0 255] 9 2 10 [6 [0 14] 0 6] 0 2] 0 30] 0 2] 0 2] 0 2] 0 1] 8 [1 0] [1 8 [9 358.122 0 31] 9 2 10 [6 [0 62] 0 14] 0 2] 0 1] 0 1] 8 [1 0 0] [1 8 [6 [6 [3 0 12] [1 1] 1 0] [[0 12] 1 1] 0 12] 8 [1 0] 8 [1 6 [5 [1 0] 0 125] [1 0] 8 [9 348 0 63] 9 2 10 [6 [7 [0 3] 9 2 10 [125 0 251] 10 [6 4 0 6] 0 1] 7 [0 3] 8 [9 179.035 0 63] 9 2 10 [6 [7 [0 3] [0 28] 8 [9 4 0 63] 9 2 10 [6 [0 61] 0 14] 0 2] 7 [0 3] 8 [9 358.122 0 63] 9 2 10 [6 [7 [0 3] [0 28] 0 29] 0 506] 0 2] 0 2] 0 2] 9 2 0 1] 0 1] 506.013.904.830.974.705.962.590.204.844.663.393]]] name='lib'] next=[%let type=[p=[%atom p=%number q=%.n] name='a'] val=[%atom p=[[%number p=6] q=%.n]] next=[%let type=[p=[%atom p=%number q=%.n] name='b'] val=[%atom p=[[%number p=7] q=%.n]] next=[%call func=[%limb p=~[[%name p=%lib] [%name p=%mul]]] arg=[~ [p=[%limb p=~[[%name p=%a]]] q=[%limb p=~[[%name p=%b]]]]]]]]] + !> (jeam:jock text) +:: +++ test-mint + %+ expect-eq:test + !> [%8 p=[%1 p=[[[8 [1 1 1] [1 8 [1 0] 8 [1 6 [5 [1 0] 0 60] [0 6] 9 2 10 [60 8 [9 179.060 0 31] 9 2 10 [6 0 124] 0 2] 10 [6 8 [9 348 0 31] 9 2 10 [6 [0 125] 0 14] 0 2] 0 1] 9 2 0 1] 0 1] [[8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [[8 [1 0 0] [1 8 [1 6 [5 [1 0] 0 29] [11 [1.851.876.717 [1 [1 1.717.658.988] 7 [0 1] 8 [1 1 115 110 97 103 45 102 97 105 108 0] 9 2 0 1] 0 1] 0 0] 6 [5 [1 0] 0 28] [0 58] 9 2 10 [14 [8 [9 179.060 0 15] 9 2 10 [6 0 60] 0 2] 0 59] 0 1] 9 2 0 1] 0 1] [[8 [1 0 0] [1 6 [5 [0 12] 0 13] [1 0] 6 [8 [9 358.123 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] [1 0] 1 1] 0 1] [8 [1 0 0] [1 6 [5 [1 0] 0 12] [10 [1 0 13] 0 12] 10 [3 9 2 10 [12 0 25] 0 1] 0 12] 0 1] 8 [1 0] [1 8 [1 0] 8 [1 6 [5 [1 0] 0 30] [0 6] 9 2 10 [30 0 61] 10 [6 4 0 6] 0 1] 9 2 0 1] 0 1] [8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [[8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [8 [8 [7 [0 7] 8 [9 5.622 0 7] 9 2 10 [6 7 [0 3] 8 [9 11.190 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 2] 9 2 10 [6 0 14] 0 2] 6 [8 [7 [0 3] 8 [1 0] [1 6 [5 [1 0] 0 6] [1 0] 8 [9 22.378 0 127] 9 23 10 [6 0 14] 0 2] 0 1] 9 2 10 [6 0 6] 0 2] [0 2] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [6 [3 0 6] [[6 [5 [1 0] 0 12] [1 0] 0 0] 8 [0 30] 9 2 10 [6 0 29] 0 2] 6 [5 [1 0] 0 6] [1 0] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] 8 [1 0 0] [1 6 [5 [1 0] 0 13] [1 0] [8 [9 358.122 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 9 2 10 [13 8 [9 11.246 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 1] 0 1] [8 [1 0 0] [1 8 [1 0 0] 8 [1 6 [6 [5 [1 0] 0 60] [6 [5 [1 0] 0 61] [1 0] 1 1] 1 1] [0 13] 9 2 10 [30 [8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] 8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] 10 [6 [4 0 12] 8 [9 348 0 31] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 179.035 0 31] 9 2 10 [6 [7 [0 3] [1 0] 0 12] 7 [0 3] 5 [8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] 0 2] 0 2] 0 1] 9 2 0 1] 0 1] [[8 [1 0 0] [1 6 [5 [1 0] 0 12] [0 13] 9 2 10 [6 [8 [9 179.060 0 7] 9 2 10 [6 0 28] 0 2] 4 0 13] 0 1] 0 1] [8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [8 [8 [7 [0 7] 8 [9 5.622 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 14] 0 2] 6 [8 [7 [0 3] 8 [1 0] [1 6 [5 [1 0] 0 6] [1 0] 8 [9 89.518 0 127] 9 11 10 [6 0 14] 0 2] 0 1] 9 2 10 [6 0 6] 0 2] [0 2] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [[8 [1 0] [1 8 [6 [3 0 6] [[8 [7 [0 7] 9 11.196 0 1] 9 2 10 [6 0 28] 0 2] 8 [7 [0 7] 9 89.535 0 1] 9 2 10 [6 0 29] 0 2] 8 [7 [0 7] 9 11.196 0 1] 9 2 10 [6 0 14] 0 2] 8 [5 [0 14] 0 2] 0 6] 0 1] [[8 [1 0 0] [1 8 [1 6 [5 [1 0] 0 28] [0 29] 6 [5 [1 0] 0 29] [1 0] 9 2 10 [14 [8 [9 179.060 0 15] 9 2 10 [6 0 60] 0 2] 0 59] 0 1] 9 2 0 1] 0 1] [8 [7 [8 [9 5.622 0 1] 9 2 10 [6 7 [0 3] 7 [9 11.190 0 1] 9 2 0 1] 0 2] 9 2 0 1] 7 [0 1] [1 [8 [1 0 0] [1 8 [1 6 [5 [1 0] 0 62] [[[0 28] 0 29] 1 0 0] 6 [5 [0 28] 0 248] [6 [5 [0 29] 0 249] [0 62] 10 [2 [0 28] 0 29] 0 62] 6 [8 [9 92 0 63] 9 2 10 [6 [0 60] 0 504] 0 2] [8 [9 2 10 [62 0 250] 0 1] 6 [3 0 2] [6 [8 [9 190 0 127] 9 2 10 [6 [0 1.016] 0 24] 0 2] [10 [6 0 2] 0 126] 10 [7 10 [6 0 11] 0 126] 0 2] 0 0] 8 [9 2 10 [62 0 251] 0 1] 6 [3 0 2] [6 [8 [9 190 0 127] 9 2 10 [6 [0 1.016] 0 24] 0 2] [10 [7 0 2] 0 126] 10 [6 10 [7 0 10] 0 126] 0 2] 0 0] 9 2 0 1] 0 1] [8 [1 0] [1 8 [1 6 [5 [1 0] 0 62] [1 0] 6 [5 [0 14] 0 248] [8 [1 6 [5 [1 0] 0 506] [0 507] 6 [5 [1 0] 0 507] [0 506] 6 [8 [9 190 0 127] 9 2 10 [6 [0 4.072] 0 4.076] 0 2] [10 [7 9 2 10 [506 0 2.027] 0 1] 0 506] 10 [6 9 2 10 [507 0 2.030] 0 1] 0 507] 9 2 0 1] 6 [8 [9 92 0 63] 9 2 10 [6 [0 30] 0 504] 0 2] [10 [6 9 2 10 [62 0 250] 0 1] 0 62] 10 [7 9 2 10 [62 0 251] 0 1] 0 62] 9 2 0 1] 0 1] [8 [1 0] [1 7 [10 [6 0 6] 0 1] 8 [1 6 [5 [1 0] 0 62] [1 0] 6 [5 [0 14] 0 248] [[1 0] 0 249] 6 [8 [9 92 0 63] 9 2 10 [6 [0 30] 0 504] 0 2] [9 2 10 [62 0 250] 0 1] 9 2 10 [62 0 251] 0 1] 9 2 0 1] 0 1] 7 [8 [[7 [7 [9 1.374 0 7] 9 2 0 1] 9 2 0 1] 7 [7 [9 1.374 0 7] 9 2 0 1] 9 2 0 1] [1 6 [5 [1 0] 0 30] [1 0] 6 [6 [5 [1 0] 0 12] [1 0] 6 [8 [9 92 0 31] 9 2 10 [6 [0 248] 0 57] 0 2] [6 [6 [5 [0 120] 0 25] [1 1] 1 0] [1 0] 1 1] 1 1] [6 [6 [5 [1 0] 0 13] [1 0] 6 [8 [9 92 0 31] 9 2 10 [6 [0 59] 0 248] 0 2] [6 [6 [5 [0 27] 0 120] [1 1] 1 0] [1 0] 1 1] 1 1] [6 [6 [5 [1 0] 0 122] [1 0] 6 [8 [9 190 0 31] 9 2 10 [6 [0 248] 0 1.000] 0 2] [6 [6 [5 [0 120] 0 488] [1 1] 1 0] [6 [9 2 10 [30 0 122] 10 [12 [1 0] 0 120] 0 1] [1 0] 1 1] 1 1] 1 1] [6 [6 [5 [1 0] 0 123] [1 0] 6 [8 [9 190 0 31] 9 2 10 [6 [0 248] 0 1.004] 0 2] [6 [6 [5 [0 120] 0 492] [1 1] 1 0] [6 [9 2 10 [30 0 123] 10 [13 [1 0] 0 120] 0 1] [1 0] 1 1] 1 1] 1 1] [1 0] 1 1] 1 1] 1 1] 1 1] 0 1] 9 2 0 1] 0 1] [[8 [1 1 1] [1 [8 [9 44.764 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 8 [9 6.014 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 1] [8 [7 [8 [9 5.622 0 1] 9 2 10 [6 7 [0 3] 8 [9 11.190 0 1] 9 2 10 [6 [7 [0 3] 8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 7 [0 3] 7 [9 5.622 0 1] 9 2 0 1] 0 2] 0 2] 9 2 0 1] [1 [8 [1 0 0] [1 8 [8 [9 11 0 7] 9 2 10 [6 0 28] 0 2] 8 [8 [9 22.378 0 63] 9 4 10 [6 0 126] 0 2] 9 2 10 [6 [0 60] 7 [0 3] 8 [8 [9 89.518 0 63] 9 4 10 [6 0 6] 0 2] 9 2 10 [6 0 61] 0 2] 0 2] 0 1] [8 [1 0 0] [1 8 [8 [9 11 0 7] 9 2 10 [6 0 28] 0 2] 8 [8 [8 [9 89.518 0 63] 9 10 10 [6 0 6] 0 2] 9 2 10 [6 0 61] 0 2] 6 [5 [1 0] 0 2] [8 [8 [9 22.378 0 127] 9 10 10 [6 0 254] 0 2] 9 2 10 [6 0 124] 0 2] 8 [8 [9 22.378 0 127] 9 4 10 [6 0 254] 0 2] 9 2 10 [6 [0 124] 0 6] 0 2] 0 1] 8 [1 0] [1 8 [8 [8 [9 22.378 0 31] 9 22 10 [6 0 62] 0 2] 9 2 10 [6 0 14] 0 2] 6 [5 [1 0] 0 2] [1 0] 0 5] 0 1] 0 1] 8 [1 0 0] [1 8 [6 [6 [3 0 12] [1 1] 1 0] [[0 12] 1 1] 0 12] 8 [9 4 0 15] 9 2 10 [6 [0 61] 7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 7 [0 3] 8 [9 4 0 15] 9 2 10 [6 [7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 0 12] 0 2] 0 13] 0 2] 0 2] 0 2] 0 1] [8 [7 [7 [9 5.622 0 1] 9 2 0 1] 9 2 0 1] [1 [8 [1 0] [1 8 [1 6 [5 [1 0] 0 62] [[0 14] 1 0 0] 6 [5 [0 14] 0 124] [0 62] 6 [8 [9 92 0 63] 9 2 10 [6 [0 30] 0 252] 0 2] [8 [9 2 10 [62 0 250] 0 1] 6 [3 0 2] [6 [8 [9 190 0 127] 9 2 10 [6 [0 508] 0 12] 0 2] [10 [6 0 2] 0 126] 10 [7 10 [6 0 11] 0 126] 0 2] 0 0] 8 [9 2 10 [62 0 251] 0 1] 6 [3 0 2] [6 [8 [9 190 0 127] 9 2 10 [6 [0 508] 0 12] 0 2] [10 [7 0 2] 0 126] 10 [6 10 [7 0 10] 0 126] 0 2] 0 0] 9 2 0 1] 0 1] [8 [1 0] [1 8 [1 6 [5 [1 0] 0 62] [1 0] 6 [5 [0 14] 0 124] [8 [1 6 [5 [1 0] 0 506] [0 507] 6 [5 [1 0] 0 507] [0 506] 6 [8 [9 190 0 127] 9 2 10 [6 [0 2.036] 0 2.038] 0 2] [10 [7 9 2 10 [506 0 2.027] 0 1] 0 506] 10 [6 9 2 10 [507 0 2.030] 0 1] 0 507] 9 2 0 1] 6 [8 [9 92 0 63] 9 2 10 [6 [0 30] 0 252] 0 2] [10 [6 9 2 10 [62 0 250] 0 1] 0 62] 10 [7 9 2 10 [62 0 251] 0 1] 0 62] 9 2 0 1] 0 1] 7 [8 [[7 [7 [9 1.374 0 7] 9 2 0 1] 9 2 0 1] 7 [7 [9 1.374 0 7] 9 2 0 1] 9 2 0 1] [1 6 [5 [1 0] 0 30] [1 0] 6 [6 [5 [1 0] 0 12] [1 0] 8 [9 92 0 31] 9 2 10 [6 [0 124] 0 57] 0 2] [6 [6 [5 [1 0] 0 13] [1 0] 8 [9 92 0 31] 9 2 10 [6 [0 59] 0 124] 0 2] [6 [6 [5 [1 0] 0 122] [1 0] 6 [8 [9 190 0 31] 9 2 10 [6 [0 124] 0 500] 0 2] [6 [9 2 10 [30 0 122] 10 [12 [1 0] 0 60] 0 1] [1 0] 1 1] 1 1] [6 [6 [5 [1 0] 0 123] [1 0] 6 [8 [9 190 0 31] 9 2 10 [6 [0 124] 0 502] 0 2] [6 [9 2 10 [30 0 123] 10 [13 [1 0] 0 60] 0 1] [1 0] 1 1] 1 1] [1 0] 1 1] 1 1] 1 1] 1 1] 0 1] 9 2 0 1] 0 1] 8 [1 0] [1 7 [10 [6 8 [9 22.395 0 7] 9 2 10 [6 0 14] 0 2] 0 1] 8 [1 0] 8 [1 6 [5 [1 0] 0 30] [0 6] 9 2 10 [30 0 61] 10 [6 [0 60] 0 6] 0 1] 9 2 0 1] 0 1] [8 [[8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [[0 50] 0 54] [1 8 [[8 [0 60] 9 2 10 [6 0 28] 0 2] 8 [0 61] 9 2 10 [6 0 29] 0 2] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [[8 [1 1 1] [1 11 [1.851.876.717 [1 [1 1.717.658.988] 7 [0 1] 8 [1 1 100 105 118 105 100 101 45 98 121 45 122 101 114 111 0] 9 2 0 1] 0 1] 6 [5 [1 0] 0 13] [0 0] 8 [1 0] 8 [1 6 [8 [9 358.123 0 31] 9 2 10 [6 [0 124] 0 125] 0 2] [0 6] 9 2 10 [60 8 [9 3.061 0 31] 9 2 10 [6 [0 124] 0 125] 0 2] 10 [6 4 0 6] 0 1] 9 2 0 1] 0 1] [[8 [1 0] [1 11 [1.851.876.717 [1 [1 1.717.658.988] 7 [0 1] 8 [1 1 100 101 99 114 101 109 101 110 116 45 117 110 100 101 114 102 108 111 119 0] 9 2 0 1] 0 1] 6 [5 [1 0] 0 6] [0 0] 8 [1 0] 8 [1 6 [5 [0 30] 4 0 6] [0 6] 9 2 10 [6 4 0 6] 0 1] 9 2 0 1] 0 1] [8 [1 0 0] [1 8 [6 [6 [3 0 12] [1 1] 1 0] [[0 12] 1 1] 0 12] 8 [9 6.014 0 15] 9 2 10 [6 [0 61] 7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 7 [0 3] 8 [9 4 0 15] 9 2 10 [6 [7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 0 12] 0 2] 0 13] 0 2] 0 2] 0 2] 0 1] 8 [1 0 0] [1 6 [6 [5 [0 12] 0 13] [1 1] 1 0] [6 [8 [1 6 [5 [1 0] 0 28] [1 0] 6 [6 [6 [5 [1 0] 0 29] [1 1] 1 0] [6 [9 2 10 [14 [8 [9 179.060 0 15] 9 2 10 [6 0 60] 0 2] 8 [9 179.060 0 15] 9 2 10 [6 0 61] 0 2] 0 1] [1 0] 1 1] 1 1] [1 0] 1 1] 9 2 0 1] [1 0] 1 1] 1 1] 0 1] 8 [1 0 0] [1 8 [[6 [6 [3 0 12] [1 1] 1 0] [0 12] 0 0] 6 [6 [3 0 13] [1 1] 1 0] [0 13] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0 0] [1 8 [1 0] 8 [1 6 [5 [1 0] 0 61] [0 6] 9 2 10 [61 8 [9 11.246 0 31] 9 2 10 [6 [0 124] 0 125] 0 2] 10 [6 4 0 6] 0 1] 9 2 0 1] 0 1] 8 [1 0] [1 8 [7 [0 7] 1 1] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0 0] [1 8 [1 0 0] 8 [1 6 [6 [5 [1 0] 0 60] [6 [5 [1 0] 0 61] [1 0] 1 1] 1 1] [0 13] 9 2 10 [30 [8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] 8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] 10 [6 [4 0 12] 8 [9 348 0 31] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 179.035 0 31] 9 2 10 [6 [7 [0 3] [1 0] 0 12] 7 [0 3] 6 [5 [1 0] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] [6 [5 [1 0] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] [1 0] 1 1] 1 1] 0 2] 0 2] 0 1] 9 2 0 1] 0 1] [[8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0] [1 6 [5 [1 0] 0 6] [1 1] 8 [9 4 0 7] 9 2 10 [6 [7 [0 3] 1 2] 7 [0 3] 9 2 10 [6 8 [9 179.060 0 7] 9 2 10 [6 0 14] 0 2] 0 1] 0 2] 0 1] 8 [1 0] [1 0 6] 0 1] [8 [1 0 [1 1] 0] [1 8 [9 358.122 0 7] 9 2 10 [6 [7 [0 3] [0 12] 0 53] 7 [0 3] 8 [9 11.246 0 7] 9 2 10 [6 [7 [0 3] [0 12] 0 52] 0 59] 0 2] 0 2] 0 1] [8 [1 0] [1 8 [1 [6 [6 [3 0 14] [1 1] 1 0] [8 [9 5 0 1] 9 2 10 [6 [7 [0 3] 1 3.405.691.582] [7 [0 3] 1 32.767] 0 30] 0 2] 8 [8 [9 22 0 15] 9 2 10 [6 [7 [0 3] 1 5] [7 [0 3] 9 4 10 [14 0 28] 0 1] 7 [0 3] 9 4 10 [14 0 29] 0 1] 0 2] 8 [9 5 0 3] 9 2 10 [6 [7 [0 3] 1 3.735.928.559] [7 [0 3] 1 65.534] 0 6] 0 2] 8 [1 0 0 0] [1 8 [8 [9 89.534 0 63] 9 2 10 [6 [7 [0 3] 1 3] 0 59] 0 2] 8 [1 0] 8 [1 6 [5 [1 8] 0 6] [0 250] 8 [8 [9 764 0 511] 9 2 10 [6 [0 252] [0 30] 0 507] 0 2] 8 [8 [9 86 0 1.023] 9 2 10 [6 [7 [0 3] 8 [9 11.246 0 1.023] 9 2 10 [6 [7 [0 3] 1 0 31] 0 6] 0 2] 7 [0 3] 8 [9 358.122 0 1.023] 9 2 10 [6 [7 [0 3] 1 0 31] 0 6] 0 2] 0 2] 6 [5 [1 0] 0 2] [9 2 10 [124 4 0 508] 10 [6 4 0 30] 0 7] 0 2] 9 2 0 1] 0 1] 9 4 0 1] 0 1] 8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0 0] [1 8 [1 0 0] 8 [1 6 [6 [5 [1 0] 0 60] [1 0] 6 [5 [1 0] 0 61] [1 0] 1 1] [0 13] 9 2 10 [30 [8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] 8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] 10 [6 [4 0 12] 8 [9 348 0 31] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 179.035 0 31] 9 2 10 [6 [7 [0 3] [1 0] 0 12] 7 [0 3] 6 [5 [1 0] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] [1 0] 6 [5 [1 0] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] [1 0] 1 1] 0 2] 0 2] 0 1] 9 2 0 1] 0 1] [[8 [1 0 0] [1 8 [9 383 0 7] 9 2 10 [6 [0 28] 7 [0 3] 8 [9 89.519 0 7] 9 2 10 [6 7 [0 3] 8 [9 1.375 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 2] 0 2] 0 1] [8 [1 0] [1 8 [9 89.534 0 7] 9 2 10 [6 [7 [0 3] 1 0] 0 14] 0 2] 0 1] [8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [6 [3 0 6] [[8 [0 30] 9 2 10 [6 0 28] 0 2] [8 [7 [0 7] 8 [9 5.622 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 58] 0 2] 8 [7 [0 7] 8 [9 5.622 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 59] 0 2] 6 [5 [1 0] 0 6] [1 0] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [8 [1 0 0] [1 8 [6 [6 [3 0 12] [1 1] 1 0] [[0 12] 1 1] 0 12] 8 [9 44.764 0 15] 9 2 10 [6 [0 61] 7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 7 [0 3] 8 [9 4 0 15] 9 2 10 [6 [7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 0 12] 0 2] 0 13] 0 2] 0 2] 0 2] 0 1] [8 [1 0] [1 6 [5 [1 0] 0 6] [1 0 0] 8 [[8 [9 44.764 0 7] 9 2 10 [6 [7 [0 3] 8 [9 179.060 0 7] 9 2 10 [6 7 [0 3] 8 [9 2.810 0 7] 9 2 10 [6 0 14] 0 2] 0 2] 7 [0 3] 1 2] 0 2] 1 0] 8 [8 [1 8 [8 [9 348 0 31] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 22.394 0 31] 9 2 10 [6 0 28] 0 2] 0 2] 8 [8 [9 4 0 63] 9 2 10 [6 [0 6] 0 6] 0 2] 6 [5 [0 60] 1 0] [6 [8 [9 340 0 127] 9 2 10 [6 [0 6] 0 254] 0 2] [[0 6] 0 2] [0 61] 8 [9 4 0 127] 9 2 10 [6 [0 125] 0 125] 0 2] 6 [8 [9 340 0 127] 9 2 10 [6 [0 6] 0 254] 0 2] [9 2 10 [6 [8 [9 179.060 0 127] 9 2 10 [6 0 124] 0 2] 0 6] 0 7] 9 2 10 [12 8 [9 179.060 0 127] 9 2 10 [6 0 124] 0 2] 0 7] 9 2 0 1] [0 4] 8 [9 3.061 0 31] 9 2 10 [6 [0 62] 0 13] 0 2] 0 1] [8 [1 0 0] [1 [8 [1 6 [5 [1 0] 0 29] [1 0] 8 [9 348 0 15] 9 2 10 [6 [0 244] 7 [0 3] 9 2 10 [29 0 59] 0 1] 0 2] 9 2 0 1] 8 [9 6.015 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 1] [8 [1 0 0] [1 6 [5 [0 12] 0 13] [1 0] 8 [1 0] 8 [1 6 [5 [0 6] 1 2] [8 [9 340 0 31] 9 2 10 [6 [0 124] 0 125] 0 2] 8 [[8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 3] 0 124] 0 2] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 3] 0 125] 0 2] 6 [5 [0 4] 0 5] [9 2 10 [30 [8 [9 11.246 0 63] 9 2 10 [6 [7 [0 3] 1 3] 0 252] 0 2] 8 [9 11.246 0 63] 9 2 10 [6 [7 [0 3] 1 3] 0 253] 0 2] 10 [6 4 0 14] 0 3] 8 [9 358.123 0 63] 9 2 10 [6 [0 12] 0 13] 0 2] 9 2 0 1] 0 1] 8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [1 0 0] [1 6 [8 [9 340 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] [1 1] 1 0] 0 1] [8 [1 0 0 0] [1 8 [9 348 0 7] 9 2 10 [6 [7 [0 3] 8 [9 179.035 0 7] 9 2 10 [6 [7 [0 3] [0 12] 8 [9 89.534 0 7] 9 2 10 [6 [0 28] 0 58] 0 2] 0 59] 0 2] 0 58] 0 2] 0 1] [[8 [1 0 0] [1 8 [[8 [9 22.398 0 7] 9 2 10 [6 0 28] 0 2] 8 [9 22.398 0 7] 9 2 10 [6 0 29] 0 2] 6 [5 [0 4] 0 5] [8 [9 374 0 15] 9 2 10 [6 [0 60] 0 61] 0 2] 8 [9 358.123 0 15] 9 2 10 [6 [0 12] 0 13] 0 2] 0 1] [8 [1 0 0] [1 8 [1 6 [5 [1 0] 0 28] [1 0] [0 29] 9 2 10 [28 8 [9 179.060 0 15] 9 2 10 [6 0 60] 0 2] 0 1] 9 2 0 1] 0 1] [8 [1 0 0] [1 6 [5 [0 12] 0 13] [1 0] 6 [6 [3 0 12] [1 1] 1 0] [6 [6 [3 0 13] [1 1] 1 0] [8 [9 358.123 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 1 0] 6 [6 [3 0 13] [1 1] 1 0] [1 1] 6 [5 [0 24] 0 26] [9 2 10 [6 [0 25] 0 27] 0 1] 9 2 10 [6 [0 24] 0 26] 0 1] 0 1] [8 [[8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [9 686 0 7] 9 2 10 [6 [0 28] 7 [0 3] 8 [9 698 0 7] 9 2 10 [6 0 29] 0 2] 0 2] 0 1] [8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [[0 26] 7 [8 [9 3.060 0 7] 9 2 10 [6 0 14] 0 2] 0 6] [1 8 [[8 [0 30] 9 2 10 [6 0 28] 0 2] 8 [7 [0 7] 8 [9 3.060 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 29] 0 2] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [8 [[7 [9 89.983 0 1] 9 2 0 1] 7 [9 89.983 0 1] 9 2 0 1] [1 8 [1 8 [[0 114] 0 118] [1 8 [[8 [0 124] 9 2 10 [6 0 28] 0 2] 8 [0 125] 9 2 10 [6 0 29] 0 2] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [7 [[[7 [0 28] 9 2 0 1] 7 [0 28] 9 2 0 1] 1 0] 8 [0 2] [1 0 15] 0 1] [1 [1 [8 [[7 [8 [9 5.622 0 127] 9 2 10 [6 7 [0 3] 9 2 0 15] 0 2] 9 2 0 1] [7 [0 252] 9 2 0 1] 7 [0 253] 9 2 0 1] [1 6 [5 [1 0] 0 12] [[[0 26] 0 27] 1 0 0] 6 [5 [0 48] 0 26] [10 [5 0 27] 0 12] 6 [8 [0 62] 9 2 10 [6 [0 58] 0 112] 0 2] [8 [9 2 10 [12 0 50] 0 1] 6 [3 0 2] [6 [8 [9 190 0 1.023] 9 2 10 [6 [0 240] 0 24] 0 2] [10 [6 0 2] 0 28] 10 [7 10 [6 0 11] 0 28] 0 2] 0 0] 8 [9 2 10 [12 0 51] 0 1] 6 [3 0 2] [6 [8 [9 190 0 1.023] 9 2 10 [6 [0 240] 0 24] 0 2] [10 [7 0 2] 0 28] 10 [6 10 [7 0 10] 0 28] 0 2] 0 0] 0 1] [8 [[7 [8 [9 5.622 0 127] 9 2 10 [6 7 [0 3] 9 2 0 15] 0 2] 9 2 0 1] 7 [0 252] 9 2 0 1] [1 6 [5 [1 0] 0 12] [1 0] 6 [5 [0 13] 0 48] [[1 0] 0 49] 6 [8 [0 62] 9 2 10 [6 [0 29] 0 112] 0 2] [9 2 10 [12 0 50] 0 1] 9 2 10 [12 0 51] 0 1] 0 1] [8 [1 0] [1 8 [[7 [8 [9 1.374 0 511] 9 2 10 [6 0 2.044] 0 2] 9 2 0 1] 7 [8 [9 1.374 0 511] 9 2 10 [6 0 2.044] 0 2] 9 2 0 1] 8 [1 6 [5 [1 0] 0 30] [1 0] 6 [6 [5 [1 0] 0 12] [1 0] 8 [0 254] 9 2 10 [6 [0 248] 0 57] 0 2] [6 [6 [5 [1 0] 0 13] [1 0] 8 [0 254] 9 2 10 [6 [0 59] 0 248] 0 2] [6 [6 [5 [1 0] 0 122] [1 0] 6 [8 [9 190 0 2.047] 9 2 10 [6 [0 248] 0 1.000] 0 2] [6 [9 2 10 [30 0 122] 10 [12 [1 0] 0 120] 0 1] [1 0] 1 1] 1 1] [6 [6 [5 [1 0] 0 123] [1 0] 6 [8 [9 190 0 2.047] 9 2 10 [6 [0 248] 0 1.004] 0 2] [6 [9 2 10 [30 0 123] 10 [13 [1 0] 0 120] 0 1] [1 0] 1 1] 1 1] [1 0] 1 1] 1 1] 1 1] 1 1] 9 2 0 1] 0 1] 8 [[7 [8 [9 5.622 0 127] 9 2 10 [6 7 [0 3] 9 2 0 15] 0 2] 9 2 0 1] 7 [0 252] 9 2 0 1] [1 6 [5 [1 0] 8 [9 10 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] [1 1] 1 0] 0 1] 0 1] 0 1] 0 1] [8 [1 1 1] [1 6 [5 [1 0] 0 13] [0 0] 8 [9 3.061 0 7] 9 2 10 [6 [0 28] 7 [0 3] 8 [9 4 0 7] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 44.764 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 2] 0 2] 0 1] 8 [1 0 0] [1 6 [5 [1 0] 0 13] [1 0] 8 [9 348 0 7] 9 2 10 [6 [7 [0 3] 8 [9 358.122 0 7] 9 2 10 [6 [7 [0 3] [0 12] 0 52] 0 117] 0 2] 7 [0 3] 8 [9 179.035 0 7] 9 2 10 [6 [7 [0 3] [0 12] 0 52] 7 [0 3] 9 2 10 [13 0 27] 0 1] 0 2] 0 2] 0 1] [8 [1 0 0] [1 6 [8 [9 358.123 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] [1 1] 1 0] 0 1] [8 [1 0 0] [1 8 [[8 [9 22.398 0 7] 9 2 10 [6 7 [0 3] 8 [9 22.398 0 7] 9 2 10 [6 0 28] 0 2] 0 2] 8 [9 22.398 0 7] 9 2 10 [6 7 [0 3] 8 [9 22.398 0 7] 9 2 10 [6 0 29] 0 2] 0 2] 6 [5 [0 4] 0 5] [8 [9 374 0 15] 9 2 10 [6 [0 60] 0 61] 0 2] 8 [9 358.123 0 15] 9 2 10 [6 [0 12] 0 13] 0 2] 0 1] [[8 [8 [9 3.063 0 1] 10 [6 7 [0 3] 1 5] 0 2] 8 [1 0 0 0] [1 7 [10 [12 8 [9 358.122 0 59] 9 2 10 [6 [7 [0 3] 1 5] 0 28] 0 2] 0 1] 8 [8 [9 3.061 0 59] 9 2 10 [6 [0 58] 7 [0 3] 8 [9 89.534 0 59] 9 2 10 [6 [7 [0 3] 1 3] 0 59] 0 2] 0 2] 8 [8 [9 682 0 123] 9 2 10 [6 [7 [0 3] 8 [9 1.375 0 123] 9 2 10 [6 [7 [0 3] 1 3] 0 123] 0 2] 7 [0 3] 8 [9 186 0 123] 9 2 10 [6 [0 6] 7 [0 3] 1 0] 0 2] 0 2] 8 [8 [9 44.764 0 251] 9 2 10 [6 [0 250] 7 [0 3] 1 4] 0 2] 8 [0 124] 8 [1 3.432.918.353 461.845.907] 8 [8 [9 1.375 0 2.043] 9 2 10 [6 [7 [0 3] 1 5] 0 2.043] 0 2] 8 [0 30] 7 [10 [30 8 [0 30] 8 [1 6 [5 [1 0] 0 14] [0 6] 8 [8 [9 84 0 32.763] 9 2 10 [6 [7 [0 3] 8 [9 3.061 0 32.763] 9 2 10 [6 [0 510] 0 30] 0 2] 0 62] 0 2] 7 [10 [2 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 6] 0 508] 0 2] 0 2] 0 1] 7 [10 [2 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 15] 0 6] 0 2] 0 1] 7 [10 [2 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 6] 0 509] 0 2] 0 2] 0 1] 7 [10 [14 8 [9 86 0 65.531] 9 2 10 [6 [0 30] 0 6] 0 2] 0 1] 7 [10 [14 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 13] 0 30] 0 2] 0 1] 7 [10 [14 8 [9 4 0 16.382] 9 2 10 [6 [7 [0 3] 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 30] 7 [0 3] 1 5] 0 2] 0 2] 7 [0 3] 1 3.864.292.196] 0 2] 0 1] 9 2 10 [14 8 [9 179.060 0 65.531] 9 2 10 [6 0 62] 0 2] 0 3] 9 2 0 1] 0 1] 8 [8 [9 11.188 0 8.187] 9 2 10 [6 [7 [0 3] 8 [9 4 0 8.187] 9 2 10 [6 [7 [0 3] 1 4] 0 126] 0 2] 0 254] 0 2] 8 [1 0] 8 [8 [9 350 0 32.763] 9 2 10 [6 [0 32.762] 7 [0 3] 1 3] 0 2] 7 [10 [254 6 [5 [1 3] 0 2] [7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 179.035 0 65.531] 9 2 10 [6 [7 [0 3] 1 0 16] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 2] 0 30] 0 2] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 179.035 0 65.531] 9 2 10 [6 [7 [0 3] 1 0 8] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 1] 0 30] 0 2] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 0] 0 30] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 508] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 15] 0 14] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 509] 0 2] 0 2] 0 1] 8 [9 86 0 65.531] 9 2 10 [6 [0 510] 0 14] 0 2] 6 [5 [1 2] 0 2] [7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 179.035 0 65.531] 9 2 10 [6 [7 [0 3] 1 0 8] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 1] 0 30] 0 2] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 0] 0 30] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 508] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 15] 0 14] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 509] 0 2] 0 2] 0 1] 8 [9 86 0 65.531] 9 2 10 [6 [0 510] 0 14] 0 2] 6 [5 [1 1] 0 2] [7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 0] 0 30] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 508] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 15] 0 14] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 509] 0 2] 0 2] 0 1] 8 [9 86 0 65.531] 9 2 10 [6 [0 510] 0 14] 0 2] 11 [1.936.945.012 1 0] 0 254] 0 1] 7 [10 [254 8 [9 86 0 65.531] 9 2 10 [6 [0 510] 0 65.530] 0 2] 0 1] 8 [1 [8 [9 5 0 1] 9 2 10 [6 0 1.022] 0 2] 8 [1 0] [1 7 [10 [6 8 [9 86 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 11.246 0 524.283] 9 2 10 [6 [7 [0 3] 1 0 16] 0 14] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 131.070] 9 2 10 [6 7 [0 3] 8 [9 4 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 1 2.246.822.507] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 11.246 0 524.283] 9 2 10 [6 [7 [0 3] 1 0 13] 0 14] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 131.070] 9 2 10 [6 7 [0 3] 8 [9 4 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 1 3.266.489.909] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 11.246 0 524.283] 9 2 10 [6 [7 [0 3] 1 0 16] 0 14] 0 2] 0 2] 0 1] 0 6] 0 1] 9 4 0 1] 0 1] [[8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [6 [3 0 6] [[8 [0 30] 9 2 10 [6 0 28] 0 2] 8 [7 [0 7] 8 [9 3.060 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 29] 0 2] 6 [5 [1 0] 0 6] [1 0] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] 8 [1 0 0] [1 11 [1.851.876.717 [1 [1 1.717.658.988] 7 [0 1] 8 [1 1 115 117 98 116 114 97 99 116 45 117 110 100 101 114 102 108 111 119 0] 9 2 0 1] 0 1] 6 [5 [1 0] 0 13] [0 12] 9 2 10 [6 [8 [9 179.060 0 7] 9 2 10 [6 0 28] 0 2] 8 [9 179.060 0 7] 9 2 10 [6 0 29] 0 2] 0 1] 0 1] [8 [1 0 0] [1 6 [5 [0 13] 1 0] [1 1] 8 [1 6 [5 [0 29] 1 1] [0 28] 8 [9 2 10 [29 8 [9 44.764 0 15] 9 2 10 [6 [0 61] 7 [0 3] 1 2] 0 2] 0 1] 8 [8 [9 4 0 31] 9 2 10 [6 [0 6] 0 6] 0 2] 8 [8 [9 350 0 63] 9 2 10 [6 [0 253] 7 [0 3] 1 1] 0 2] 6 [5 [1 0] 0 2] [0 6] 7 [0 3] 8 [9 4 0 63] 9 2 10 [6 [0 6] 0 252] 0 2] 9 2 0 1] 0 1] 8 [1 0] [1 [8 [1 0 0] [1 8 [9 11 0 7] 9 2 10 [6 7 [0 3] 8 [9 348 0 31] 9 2 10 [6 [0 28] 0 29] 0 2] 0 2] 0 1] [8 [1 0 0 0] [1 8 [8 [9 11 0 7] 9 2 10 [6 0 59] 0 2] 8 [8 [9 22.394 0 63] 9 2 10 [6 7 [0 3] 8 [9 3.061 0 63] 9 2 10 [6 [0 126] 0 60] 0 2] 0 2] 8 [8 [9 6.014 0 127] 9 2 10 [6 [0 250] 0 6] 0 2] 8 [9 11 0 63] 9 2 10 [6 7 [0 3] 8 [9 2.798 0 255] 9 2 10 [6 [7 [0 3] 8 [9 179.035 0 255] 9 2 10 [6 [7 [0 3] [0 124] 0 2] 0 30] 0 2] 7 [0 3] 8 [9 11.246 0 255] 9 2 10 [6 [7 [0 3] [0 124] 8 [9 3.061 0 255] 9 2 10 [6 [0 14] 0 6] 0 2] 0 30] 0 2] 0 2] 0 2] 0 1] 8 [1 0] [1 8 [9 358.122 0 31] 9 2 10 [6 [0 62] 0 14] 0 2] 0 1] 0 1] 8 [1 0 0] [1 8 [6 [6 [3 0 12] [1 1] 1 0] [[0 12] 1 1] 0 12] 8 [1 0] 8 [1 6 [5 [1 0] 0 125] [1 0] 8 [9 348 0 63] 9 2 10 [6 [7 [0 3] 9 2 10 [125 0 251] 10 [6 4 0 6] 0 1] 7 [0 3] 8 [9 179.035 0 63] 9 2 10 [6 [7 [0 3] [0 28] 8 [9 4 0 63] 9 2 10 [6 [0 61] 0 14] 0 2] 7 [0 3] 8 [9 358.122 0 63] 9 2 10 [6 [7 [0 3] [0 28] 0 29] 0 506] 0 2] 0 2] 0 2] 9 2 0 1] 0 1] 506.013.904.830.974.705.962.590.204.844.663.393]] q=[%8 p=[%1 p=6] q=[%8 p=[%1 p=7] q=[%8 p=[%9 p=4 q=[%0 p=14]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%0 p=6] q=[%0 p=2]]]] q=[%0 p=2]]]]]]] + !> +>:(mint:jock text) +:: +++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) + %+ expect-eq:test + !> .* 0 + :+ %8 + +.p + [%8 p=[%1 p=[[[8 [1 1 1] [1 8 [1 0] 8 [1 6 [5 [1 0] 0 60] [0 6] 9 2 10 [60 8 [9 179.060 0 31] 9 2 10 [6 0 124] 0 2] 10 [6 8 [9 348 0 31] 9 2 10 [6 [0 125] 0 14] 0 2] 0 1] 9 2 0 1] 0 1] [[8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [[8 [1 0 0] [1 8 [1 6 [5 [1 0] 0 29] [11 [1.851.876.717 [1 [1 1.717.658.988] 7 [0 1] 8 [1 1 115 110 97 103 45 102 97 105 108 0] 9 2 0 1] 0 1] 0 0] 6 [5 [1 0] 0 28] [0 58] 9 2 10 [14 [8 [9 179.060 0 15] 9 2 10 [6 0 60] 0 2] 0 59] 0 1] 9 2 0 1] 0 1] [[8 [1 0 0] [1 6 [5 [0 12] 0 13] [1 0] 6 [8 [9 358.123 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] [1 0] 1 1] 0 1] [8 [1 0 0] [1 6 [5 [1 0] 0 12] [10 [1 0 13] 0 12] 10 [3 9 2 10 [12 0 25] 0 1] 0 12] 0 1] 8 [1 0] [1 8 [1 0] 8 [1 6 [5 [1 0] 0 30] [0 6] 9 2 10 [30 0 61] 10 [6 4 0 6] 0 1] 9 2 0 1] 0 1] [8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [[8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [8 [8 [7 [0 7] 8 [9 5.622 0 7] 9 2 10 [6 7 [0 3] 8 [9 11.190 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 2] 9 2 10 [6 0 14] 0 2] 6 [8 [7 [0 3] 8 [1 0] [1 6 [5 [1 0] 0 6] [1 0] 8 [9 22.378 0 127] 9 23 10 [6 0 14] 0 2] 0 1] 9 2 10 [6 0 6] 0 2] [0 2] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [6 [3 0 6] [[6 [5 [1 0] 0 12] [1 0] 0 0] 8 [0 30] 9 2 10 [6 0 29] 0 2] 6 [5 [1 0] 0 6] [1 0] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] 8 [1 0 0] [1 6 [5 [1 0] 0 13] [1 0] [8 [9 358.122 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 9 2 10 [13 8 [9 11.246 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 1] 0 1] [8 [1 0 0] [1 8 [1 0 0] 8 [1 6 [6 [5 [1 0] 0 60] [6 [5 [1 0] 0 61] [1 0] 1 1] 1 1] [0 13] 9 2 10 [30 [8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] 8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] 10 [6 [4 0 12] 8 [9 348 0 31] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 179.035 0 31] 9 2 10 [6 [7 [0 3] [1 0] 0 12] 7 [0 3] 5 [8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] 0 2] 0 2] 0 1] 9 2 0 1] 0 1] [[8 [1 0 0] [1 6 [5 [1 0] 0 12] [0 13] 9 2 10 [6 [8 [9 179.060 0 7] 9 2 10 [6 0 28] 0 2] 4 0 13] 0 1] 0 1] [8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [8 [8 [7 [0 7] 8 [9 5.622 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 14] 0 2] 6 [8 [7 [0 3] 8 [1 0] [1 6 [5 [1 0] 0 6] [1 0] 8 [9 89.518 0 127] 9 11 10 [6 0 14] 0 2] 0 1] 9 2 10 [6 0 6] 0 2] [0 2] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [[8 [1 0] [1 8 [6 [3 0 6] [[8 [7 [0 7] 9 11.196 0 1] 9 2 10 [6 0 28] 0 2] 8 [7 [0 7] 9 89.535 0 1] 9 2 10 [6 0 29] 0 2] 8 [7 [0 7] 9 11.196 0 1] 9 2 10 [6 0 14] 0 2] 8 [5 [0 14] 0 2] 0 6] 0 1] [[8 [1 0 0] [1 8 [1 6 [5 [1 0] 0 28] [0 29] 6 [5 [1 0] 0 29] [1 0] 9 2 10 [14 [8 [9 179.060 0 15] 9 2 10 [6 0 60] 0 2] 0 59] 0 1] 9 2 0 1] 0 1] [8 [7 [8 [9 5.622 0 1] 9 2 10 [6 7 [0 3] 7 [9 11.190 0 1] 9 2 0 1] 0 2] 9 2 0 1] 7 [0 1] [1 [8 [1 0 0] [1 8 [1 6 [5 [1 0] 0 62] [[[0 28] 0 29] 1 0 0] 6 [5 [0 28] 0 248] [6 [5 [0 29] 0 249] [0 62] 10 [2 [0 28] 0 29] 0 62] 6 [8 [9 92 0 63] 9 2 10 [6 [0 60] 0 504] 0 2] [8 [9 2 10 [62 0 250] 0 1] 6 [3 0 2] [6 [8 [9 190 0 127] 9 2 10 [6 [0 1.016] 0 24] 0 2] [10 [6 0 2] 0 126] 10 [7 10 [6 0 11] 0 126] 0 2] 0 0] 8 [9 2 10 [62 0 251] 0 1] 6 [3 0 2] [6 [8 [9 190 0 127] 9 2 10 [6 [0 1.016] 0 24] 0 2] [10 [7 0 2] 0 126] 10 [6 10 [7 0 10] 0 126] 0 2] 0 0] 9 2 0 1] 0 1] [8 [1 0] [1 8 [1 6 [5 [1 0] 0 62] [1 0] 6 [5 [0 14] 0 248] [8 [1 6 [5 [1 0] 0 506] [0 507] 6 [5 [1 0] 0 507] [0 506] 6 [8 [9 190 0 127] 9 2 10 [6 [0 4.072] 0 4.076] 0 2] [10 [7 9 2 10 [506 0 2.027] 0 1] 0 506] 10 [6 9 2 10 [507 0 2.030] 0 1] 0 507] 9 2 0 1] 6 [8 [9 92 0 63] 9 2 10 [6 [0 30] 0 504] 0 2] [10 [6 9 2 10 [62 0 250] 0 1] 0 62] 10 [7 9 2 10 [62 0 251] 0 1] 0 62] 9 2 0 1] 0 1] [8 [1 0] [1 7 [10 [6 0 6] 0 1] 8 [1 6 [5 [1 0] 0 62] [1 0] 6 [5 [0 14] 0 248] [[1 0] 0 249] 6 [8 [9 92 0 63] 9 2 10 [6 [0 30] 0 504] 0 2] [9 2 10 [62 0 250] 0 1] 9 2 10 [62 0 251] 0 1] 9 2 0 1] 0 1] 7 [8 [[7 [7 [9 1.374 0 7] 9 2 0 1] 9 2 0 1] 7 [7 [9 1.374 0 7] 9 2 0 1] 9 2 0 1] [1 6 [5 [1 0] 0 30] [1 0] 6 [6 [5 [1 0] 0 12] [1 0] 6 [8 [9 92 0 31] 9 2 10 [6 [0 248] 0 57] 0 2] [6 [6 [5 [0 120] 0 25] [1 1] 1 0] [1 0] 1 1] 1 1] [6 [6 [5 [1 0] 0 13] [1 0] 6 [8 [9 92 0 31] 9 2 10 [6 [0 59] 0 248] 0 2] [6 [6 [5 [0 27] 0 120] [1 1] 1 0] [1 0] 1 1] 1 1] [6 [6 [5 [1 0] 0 122] [1 0] 6 [8 [9 190 0 31] 9 2 10 [6 [0 248] 0 1.000] 0 2] [6 [6 [5 [0 120] 0 488] [1 1] 1 0] [6 [9 2 10 [30 0 122] 10 [12 [1 0] 0 120] 0 1] [1 0] 1 1] 1 1] 1 1] [6 [6 [5 [1 0] 0 123] [1 0] 6 [8 [9 190 0 31] 9 2 10 [6 [0 248] 0 1.004] 0 2] [6 [6 [5 [0 120] 0 492] [1 1] 1 0] [6 [9 2 10 [30 0 123] 10 [13 [1 0] 0 120] 0 1] [1 0] 1 1] 1 1] 1 1] [1 0] 1 1] 1 1] 1 1] 1 1] 0 1] 9 2 0 1] 0 1] [[8 [1 1 1] [1 [8 [9 44.764 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 8 [9 6.014 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 1] [8 [7 [8 [9 5.622 0 1] 9 2 10 [6 7 [0 3] 8 [9 11.190 0 1] 9 2 10 [6 [7 [0 3] 8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 7 [0 3] 7 [9 5.622 0 1] 9 2 0 1] 0 2] 0 2] 9 2 0 1] [1 [8 [1 0 0] [1 8 [8 [9 11 0 7] 9 2 10 [6 0 28] 0 2] 8 [8 [9 22.378 0 63] 9 4 10 [6 0 126] 0 2] 9 2 10 [6 [0 60] 7 [0 3] 8 [8 [9 89.518 0 63] 9 4 10 [6 0 6] 0 2] 9 2 10 [6 0 61] 0 2] 0 2] 0 1] [8 [1 0 0] [1 8 [8 [9 11 0 7] 9 2 10 [6 0 28] 0 2] 8 [8 [8 [9 89.518 0 63] 9 10 10 [6 0 6] 0 2] 9 2 10 [6 0 61] 0 2] 6 [5 [1 0] 0 2] [8 [8 [9 22.378 0 127] 9 10 10 [6 0 254] 0 2] 9 2 10 [6 0 124] 0 2] 8 [8 [9 22.378 0 127] 9 4 10 [6 0 254] 0 2] 9 2 10 [6 [0 124] 0 6] 0 2] 0 1] 8 [1 0] [1 8 [8 [8 [9 22.378 0 31] 9 22 10 [6 0 62] 0 2] 9 2 10 [6 0 14] 0 2] 6 [5 [1 0] 0 2] [1 0] 0 5] 0 1] 0 1] 8 [1 0 0] [1 8 [6 [6 [3 0 12] [1 1] 1 0] [[0 12] 1 1] 0 12] 8 [9 4 0 15] 9 2 10 [6 [0 61] 7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 7 [0 3] 8 [9 4 0 15] 9 2 10 [6 [7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 0 12] 0 2] 0 13] 0 2] 0 2] 0 2] 0 1] [8 [7 [7 [9 5.622 0 1] 9 2 0 1] 9 2 0 1] [1 [8 [1 0] [1 8 [1 6 [5 [1 0] 0 62] [[0 14] 1 0 0] 6 [5 [0 14] 0 124] [0 62] 6 [8 [9 92 0 63] 9 2 10 [6 [0 30] 0 252] 0 2] [8 [9 2 10 [62 0 250] 0 1] 6 [3 0 2] [6 [8 [9 190 0 127] 9 2 10 [6 [0 508] 0 12] 0 2] [10 [6 0 2] 0 126] 10 [7 10 [6 0 11] 0 126] 0 2] 0 0] 8 [9 2 10 [62 0 251] 0 1] 6 [3 0 2] [6 [8 [9 190 0 127] 9 2 10 [6 [0 508] 0 12] 0 2] [10 [7 0 2] 0 126] 10 [6 10 [7 0 10] 0 126] 0 2] 0 0] 9 2 0 1] 0 1] [8 [1 0] [1 8 [1 6 [5 [1 0] 0 62] [1 0] 6 [5 [0 14] 0 124] [8 [1 6 [5 [1 0] 0 506] [0 507] 6 [5 [1 0] 0 507] [0 506] 6 [8 [9 190 0 127] 9 2 10 [6 [0 2.036] 0 2.038] 0 2] [10 [7 9 2 10 [506 0 2.027] 0 1] 0 506] 10 [6 9 2 10 [507 0 2.030] 0 1] 0 507] 9 2 0 1] 6 [8 [9 92 0 63] 9 2 10 [6 [0 30] 0 252] 0 2] [10 [6 9 2 10 [62 0 250] 0 1] 0 62] 10 [7 9 2 10 [62 0 251] 0 1] 0 62] 9 2 0 1] 0 1] 7 [8 [[7 [7 [9 1.374 0 7] 9 2 0 1] 9 2 0 1] 7 [7 [9 1.374 0 7] 9 2 0 1] 9 2 0 1] [1 6 [5 [1 0] 0 30] [1 0] 6 [6 [5 [1 0] 0 12] [1 0] 8 [9 92 0 31] 9 2 10 [6 [0 124] 0 57] 0 2] [6 [6 [5 [1 0] 0 13] [1 0] 8 [9 92 0 31] 9 2 10 [6 [0 59] 0 124] 0 2] [6 [6 [5 [1 0] 0 122] [1 0] 6 [8 [9 190 0 31] 9 2 10 [6 [0 124] 0 500] 0 2] [6 [9 2 10 [30 0 122] 10 [12 [1 0] 0 60] 0 1] [1 0] 1 1] 1 1] [6 [6 [5 [1 0] 0 123] [1 0] 6 [8 [9 190 0 31] 9 2 10 [6 [0 124] 0 502] 0 2] [6 [9 2 10 [30 0 123] 10 [13 [1 0] 0 60] 0 1] [1 0] 1 1] 1 1] [1 0] 1 1] 1 1] 1 1] 1 1] 0 1] 9 2 0 1] 0 1] 8 [1 0] [1 7 [10 [6 8 [9 22.395 0 7] 9 2 10 [6 0 14] 0 2] 0 1] 8 [1 0] 8 [1 6 [5 [1 0] 0 30] [0 6] 9 2 10 [30 0 61] 10 [6 [0 60] 0 6] 0 1] 9 2 0 1] 0 1] [8 [[8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [[0 50] 0 54] [1 8 [[8 [0 60] 9 2 10 [6 0 28] 0 2] 8 [0 61] 9 2 10 [6 0 29] 0 2] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [[8 [1 1 1] [1 11 [1.851.876.717 [1 [1 1.717.658.988] 7 [0 1] 8 [1 1 100 105 118 105 100 101 45 98 121 45 122 101 114 111 0] 9 2 0 1] 0 1] 6 [5 [1 0] 0 13] [0 0] 8 [1 0] 8 [1 6 [8 [9 358.123 0 31] 9 2 10 [6 [0 124] 0 125] 0 2] [0 6] 9 2 10 [60 8 [9 3.061 0 31] 9 2 10 [6 [0 124] 0 125] 0 2] 10 [6 4 0 6] 0 1] 9 2 0 1] 0 1] [[8 [1 0] [1 11 [1.851.876.717 [1 [1 1.717.658.988] 7 [0 1] 8 [1 1 100 101 99 114 101 109 101 110 116 45 117 110 100 101 114 102 108 111 119 0] 9 2 0 1] 0 1] 6 [5 [1 0] 0 6] [0 0] 8 [1 0] 8 [1 6 [5 [0 30] 4 0 6] [0 6] 9 2 10 [6 4 0 6] 0 1] 9 2 0 1] 0 1] [8 [1 0 0] [1 8 [6 [6 [3 0 12] [1 1] 1 0] [[0 12] 1 1] 0 12] 8 [9 6.014 0 15] 9 2 10 [6 [0 61] 7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 7 [0 3] 8 [9 4 0 15] 9 2 10 [6 [7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 0 12] 0 2] 0 13] 0 2] 0 2] 0 2] 0 1] 8 [1 0 0] [1 6 [6 [5 [0 12] 0 13] [1 1] 1 0] [6 [8 [1 6 [5 [1 0] 0 28] [1 0] 6 [6 [6 [5 [1 0] 0 29] [1 1] 1 0] [6 [9 2 10 [14 [8 [9 179.060 0 15] 9 2 10 [6 0 60] 0 2] 8 [9 179.060 0 15] 9 2 10 [6 0 61] 0 2] 0 1] [1 0] 1 1] 1 1] [1 0] 1 1] 9 2 0 1] [1 0] 1 1] 1 1] 0 1] 8 [1 0 0] [1 8 [[6 [6 [3 0 12] [1 1] 1 0] [0 12] 0 0] 6 [6 [3 0 13] [1 1] 1 0] [0 13] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0 0] [1 8 [1 0] 8 [1 6 [5 [1 0] 0 61] [0 6] 9 2 10 [61 8 [9 11.246 0 31] 9 2 10 [6 [0 124] 0 125] 0 2] 10 [6 4 0 6] 0 1] 9 2 0 1] 0 1] 8 [1 0] [1 8 [7 [0 7] 1 1] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0 0] [1 8 [1 0 0] 8 [1 6 [6 [5 [1 0] 0 60] [6 [5 [1 0] 0 61] [1 0] 1 1] 1 1] [0 13] 9 2 10 [30 [8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] 8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] 10 [6 [4 0 12] 8 [9 348 0 31] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 179.035 0 31] 9 2 10 [6 [7 [0 3] [1 0] 0 12] 7 [0 3] 6 [5 [1 0] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] [6 [5 [1 0] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] [1 0] 1 1] 1 1] 0 2] 0 2] 0 1] 9 2 0 1] 0 1] [[8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0] [1 6 [5 [1 0] 0 6] [1 1] 8 [9 4 0 7] 9 2 10 [6 [7 [0 3] 1 2] 7 [0 3] 9 2 10 [6 8 [9 179.060 0 7] 9 2 10 [6 0 14] 0 2] 0 1] 0 2] 0 1] 8 [1 0] [1 0 6] 0 1] [8 [1 0 [1 1] 0] [1 8 [9 358.122 0 7] 9 2 10 [6 [7 [0 3] [0 12] 0 53] 7 [0 3] 8 [9 11.246 0 7] 9 2 10 [6 [7 [0 3] [0 12] 0 52] 0 59] 0 2] 0 2] 0 1] [8 [1 0] [1 8 [1 [6 [6 [3 0 14] [1 1] 1 0] [8 [9 5 0 1] 9 2 10 [6 [7 [0 3] 1 3.405.691.582] [7 [0 3] 1 32.767] 0 30] 0 2] 8 [8 [9 22 0 15] 9 2 10 [6 [7 [0 3] 1 5] [7 [0 3] 9 4 10 [14 0 28] 0 1] 7 [0 3] 9 4 10 [14 0 29] 0 1] 0 2] 8 [9 5 0 3] 9 2 10 [6 [7 [0 3] 1 3.735.928.559] [7 [0 3] 1 65.534] 0 6] 0 2] 8 [1 0 0 0] [1 8 [8 [9 89.534 0 63] 9 2 10 [6 [7 [0 3] 1 3] 0 59] 0 2] 8 [1 0] 8 [1 6 [5 [1 8] 0 6] [0 250] 8 [8 [9 764 0 511] 9 2 10 [6 [0 252] [0 30] 0 507] 0 2] 8 [8 [9 86 0 1.023] 9 2 10 [6 [7 [0 3] 8 [9 11.246 0 1.023] 9 2 10 [6 [7 [0 3] 1 0 31] 0 6] 0 2] 7 [0 3] 8 [9 358.122 0 1.023] 9 2 10 [6 [7 [0 3] 1 0 31] 0 6] 0 2] 0 2] 6 [5 [1 0] 0 2] [9 2 10 [124 4 0 508] 10 [6 4 0 30] 0 7] 0 2] 9 2 0 1] 0 1] 9 4 0 1] 0 1] 8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0 0] [1 8 [1 0 0] 8 [1 6 [6 [5 [1 0] 0 60] [1 0] 6 [5 [1 0] 0 61] [1 0] 1 1] [0 13] 9 2 10 [30 [8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] 8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] 10 [6 [4 0 12] 8 [9 348 0 31] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 179.035 0 31] 9 2 10 [6 [7 [0 3] [1 0] 0 12] 7 [0 3] 6 [5 [1 0] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] [1 0] 6 [5 [1 0] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] [1 0] 1 1] 0 2] 0 2] 0 1] 9 2 0 1] 0 1] [[8 [1 0 0] [1 8 [9 383 0 7] 9 2 10 [6 [0 28] 7 [0 3] 8 [9 89.519 0 7] 9 2 10 [6 7 [0 3] 8 [9 1.375 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 2] 0 2] 0 1] [8 [1 0] [1 8 [9 89.534 0 7] 9 2 10 [6 [7 [0 3] 1 0] 0 14] 0 2] 0 1] [8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [6 [3 0 6] [[8 [0 30] 9 2 10 [6 0 28] 0 2] [8 [7 [0 7] 8 [9 5.622 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 58] 0 2] 8 [7 [0 7] 8 [9 5.622 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 59] 0 2] 6 [5 [1 0] 0 6] [1 0] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [8 [1 0 0] [1 8 [6 [6 [3 0 12] [1 1] 1 0] [[0 12] 1 1] 0 12] 8 [9 44.764 0 15] 9 2 10 [6 [0 61] 7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 7 [0 3] 8 [9 4 0 15] 9 2 10 [6 [7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 0 12] 0 2] 0 13] 0 2] 0 2] 0 2] 0 1] [8 [1 0] [1 6 [5 [1 0] 0 6] [1 0 0] 8 [[8 [9 44.764 0 7] 9 2 10 [6 [7 [0 3] 8 [9 179.060 0 7] 9 2 10 [6 7 [0 3] 8 [9 2.810 0 7] 9 2 10 [6 0 14] 0 2] 0 2] 7 [0 3] 1 2] 0 2] 1 0] 8 [8 [1 8 [8 [9 348 0 31] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 22.394 0 31] 9 2 10 [6 0 28] 0 2] 0 2] 8 [8 [9 4 0 63] 9 2 10 [6 [0 6] 0 6] 0 2] 6 [5 [0 60] 1 0] [6 [8 [9 340 0 127] 9 2 10 [6 [0 6] 0 254] 0 2] [[0 6] 0 2] [0 61] 8 [9 4 0 127] 9 2 10 [6 [0 125] 0 125] 0 2] 6 [8 [9 340 0 127] 9 2 10 [6 [0 6] 0 254] 0 2] [9 2 10 [6 [8 [9 179.060 0 127] 9 2 10 [6 0 124] 0 2] 0 6] 0 7] 9 2 10 [12 8 [9 179.060 0 127] 9 2 10 [6 0 124] 0 2] 0 7] 9 2 0 1] [0 4] 8 [9 3.061 0 31] 9 2 10 [6 [0 62] 0 13] 0 2] 0 1] [8 [1 0 0] [1 [8 [1 6 [5 [1 0] 0 29] [1 0] 8 [9 348 0 15] 9 2 10 [6 [0 244] 7 [0 3] 9 2 10 [29 0 59] 0 1] 0 2] 9 2 0 1] 8 [9 6.015 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 1] [8 [1 0 0] [1 6 [5 [0 12] 0 13] [1 0] 8 [1 0] 8 [1 6 [5 [0 6] 1 2] [8 [9 340 0 31] 9 2 10 [6 [0 124] 0 125] 0 2] 8 [[8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 3] 0 124] 0 2] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 3] 0 125] 0 2] 6 [5 [0 4] 0 5] [9 2 10 [30 [8 [9 11.246 0 63] 9 2 10 [6 [7 [0 3] 1 3] 0 252] 0 2] 8 [9 11.246 0 63] 9 2 10 [6 [7 [0 3] 1 3] 0 253] 0 2] 10 [6 4 0 14] 0 3] 8 [9 358.123 0 63] 9 2 10 [6 [0 12] 0 13] 0 2] 9 2 0 1] 0 1] 8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [1 0 0] [1 6 [8 [9 340 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] [1 1] 1 0] 0 1] [8 [1 0 0 0] [1 8 [9 348 0 7] 9 2 10 [6 [7 [0 3] 8 [9 179.035 0 7] 9 2 10 [6 [7 [0 3] [0 12] 8 [9 89.534 0 7] 9 2 10 [6 [0 28] 0 58] 0 2] 0 59] 0 2] 0 58] 0 2] 0 1] [[8 [1 0 0] [1 8 [[8 [9 22.398 0 7] 9 2 10 [6 0 28] 0 2] 8 [9 22.398 0 7] 9 2 10 [6 0 29] 0 2] 6 [5 [0 4] 0 5] [8 [9 374 0 15] 9 2 10 [6 [0 60] 0 61] 0 2] 8 [9 358.123 0 15] 9 2 10 [6 [0 12] 0 13] 0 2] 0 1] [8 [1 0 0] [1 8 [1 6 [5 [1 0] 0 28] [1 0] [0 29] 9 2 10 [28 8 [9 179.060 0 15] 9 2 10 [6 0 60] 0 2] 0 1] 9 2 0 1] 0 1] [8 [1 0 0] [1 6 [5 [0 12] 0 13] [1 0] 6 [6 [3 0 12] [1 1] 1 0] [6 [6 [3 0 13] [1 1] 1 0] [8 [9 358.123 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 1 0] 6 [6 [3 0 13] [1 1] 1 0] [1 1] 6 [5 [0 24] 0 26] [9 2 10 [6 [0 25] 0 27] 0 1] 9 2 10 [6 [0 24] 0 26] 0 1] 0 1] [8 [[8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [9 686 0 7] 9 2 10 [6 [0 28] 7 [0 3] 8 [9 698 0 7] 9 2 10 [6 0 29] 0 2] 0 2] 0 1] [8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [[0 26] 7 [8 [9 3.060 0 7] 9 2 10 [6 0 14] 0 2] 0 6] [1 8 [[8 [0 30] 9 2 10 [6 0 28] 0 2] 8 [7 [0 7] 8 [9 3.060 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 29] 0 2] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [8 [[7 [9 89.983 0 1] 9 2 0 1] 7 [9 89.983 0 1] 9 2 0 1] [1 8 [1 8 [[0 114] 0 118] [1 8 [[8 [0 124] 9 2 10 [6 0 28] 0 2] 8 [0 125] 9 2 10 [6 0 29] 0 2] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [7 [[[7 [0 28] 9 2 0 1] 7 [0 28] 9 2 0 1] 1 0] 8 [0 2] [1 0 15] 0 1] [1 [1 [8 [[7 [8 [9 5.622 0 127] 9 2 10 [6 7 [0 3] 9 2 0 15] 0 2] 9 2 0 1] [7 [0 252] 9 2 0 1] 7 [0 253] 9 2 0 1] [1 6 [5 [1 0] 0 12] [[[0 26] 0 27] 1 0 0] 6 [5 [0 48] 0 26] [10 [5 0 27] 0 12] 6 [8 [0 62] 9 2 10 [6 [0 58] 0 112] 0 2] [8 [9 2 10 [12 0 50] 0 1] 6 [3 0 2] [6 [8 [9 190 0 1.023] 9 2 10 [6 [0 240] 0 24] 0 2] [10 [6 0 2] 0 28] 10 [7 10 [6 0 11] 0 28] 0 2] 0 0] 8 [9 2 10 [12 0 51] 0 1] 6 [3 0 2] [6 [8 [9 190 0 1.023] 9 2 10 [6 [0 240] 0 24] 0 2] [10 [7 0 2] 0 28] 10 [6 10 [7 0 10] 0 28] 0 2] 0 0] 0 1] [8 [[7 [8 [9 5.622 0 127] 9 2 10 [6 7 [0 3] 9 2 0 15] 0 2] 9 2 0 1] 7 [0 252] 9 2 0 1] [1 6 [5 [1 0] 0 12] [1 0] 6 [5 [0 13] 0 48] [[1 0] 0 49] 6 [8 [0 62] 9 2 10 [6 [0 29] 0 112] 0 2] [9 2 10 [12 0 50] 0 1] 9 2 10 [12 0 51] 0 1] 0 1] [8 [1 0] [1 8 [[7 [8 [9 1.374 0 511] 9 2 10 [6 0 2.044] 0 2] 9 2 0 1] 7 [8 [9 1.374 0 511] 9 2 10 [6 0 2.044] 0 2] 9 2 0 1] 8 [1 6 [5 [1 0] 0 30] [1 0] 6 [6 [5 [1 0] 0 12] [1 0] 8 [0 254] 9 2 10 [6 [0 248] 0 57] 0 2] [6 [6 [5 [1 0] 0 13] [1 0] 8 [0 254] 9 2 10 [6 [0 59] 0 248] 0 2] [6 [6 [5 [1 0] 0 122] [1 0] 6 [8 [9 190 0 2.047] 9 2 10 [6 [0 248] 0 1.000] 0 2] [6 [9 2 10 [30 0 122] 10 [12 [1 0] 0 120] 0 1] [1 0] 1 1] 1 1] [6 [6 [5 [1 0] 0 123] [1 0] 6 [8 [9 190 0 2.047] 9 2 10 [6 [0 248] 0 1.004] 0 2] [6 [9 2 10 [30 0 123] 10 [13 [1 0] 0 120] 0 1] [1 0] 1 1] 1 1] [1 0] 1 1] 1 1] 1 1] 1 1] 9 2 0 1] 0 1] 8 [[7 [8 [9 5.622 0 127] 9 2 10 [6 7 [0 3] 9 2 0 15] 0 2] 9 2 0 1] 7 [0 252] 9 2 0 1] [1 6 [5 [1 0] 8 [9 10 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] [1 1] 1 0] 0 1] 0 1] 0 1] 0 1] [8 [1 1 1] [1 6 [5 [1 0] 0 13] [0 0] 8 [9 3.061 0 7] 9 2 10 [6 [0 28] 7 [0 3] 8 [9 4 0 7] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 44.764 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 2] 0 2] 0 1] 8 [1 0 0] [1 6 [5 [1 0] 0 13] [1 0] 8 [9 348 0 7] 9 2 10 [6 [7 [0 3] 8 [9 358.122 0 7] 9 2 10 [6 [7 [0 3] [0 12] 0 52] 0 117] 0 2] 7 [0 3] 8 [9 179.035 0 7] 9 2 10 [6 [7 [0 3] [0 12] 0 52] 7 [0 3] 9 2 10 [13 0 27] 0 1] 0 2] 0 2] 0 1] [8 [1 0 0] [1 6 [8 [9 358.123 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] [1 1] 1 0] 0 1] [8 [1 0 0] [1 8 [[8 [9 22.398 0 7] 9 2 10 [6 7 [0 3] 8 [9 22.398 0 7] 9 2 10 [6 0 28] 0 2] 0 2] 8 [9 22.398 0 7] 9 2 10 [6 7 [0 3] 8 [9 22.398 0 7] 9 2 10 [6 0 29] 0 2] 0 2] 6 [5 [0 4] 0 5] [8 [9 374 0 15] 9 2 10 [6 [0 60] 0 61] 0 2] 8 [9 358.123 0 15] 9 2 10 [6 [0 12] 0 13] 0 2] 0 1] [[8 [8 [9 3.063 0 1] 10 [6 7 [0 3] 1 5] 0 2] 8 [1 0 0 0] [1 7 [10 [12 8 [9 358.122 0 59] 9 2 10 [6 [7 [0 3] 1 5] 0 28] 0 2] 0 1] 8 [8 [9 3.061 0 59] 9 2 10 [6 [0 58] 7 [0 3] 8 [9 89.534 0 59] 9 2 10 [6 [7 [0 3] 1 3] 0 59] 0 2] 0 2] 8 [8 [9 682 0 123] 9 2 10 [6 [7 [0 3] 8 [9 1.375 0 123] 9 2 10 [6 [7 [0 3] 1 3] 0 123] 0 2] 7 [0 3] 8 [9 186 0 123] 9 2 10 [6 [0 6] 7 [0 3] 1 0] 0 2] 0 2] 8 [8 [9 44.764 0 251] 9 2 10 [6 [0 250] 7 [0 3] 1 4] 0 2] 8 [0 124] 8 [1 3.432.918.353 461.845.907] 8 [8 [9 1.375 0 2.043] 9 2 10 [6 [7 [0 3] 1 5] 0 2.043] 0 2] 8 [0 30] 7 [10 [30 8 [0 30] 8 [1 6 [5 [1 0] 0 14] [0 6] 8 [8 [9 84 0 32.763] 9 2 10 [6 [7 [0 3] 8 [9 3.061 0 32.763] 9 2 10 [6 [0 510] 0 30] 0 2] 0 62] 0 2] 7 [10 [2 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 6] 0 508] 0 2] 0 2] 0 1] 7 [10 [2 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 15] 0 6] 0 2] 0 1] 7 [10 [2 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 6] 0 509] 0 2] 0 2] 0 1] 7 [10 [14 8 [9 86 0 65.531] 9 2 10 [6 [0 30] 0 6] 0 2] 0 1] 7 [10 [14 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 13] 0 30] 0 2] 0 1] 7 [10 [14 8 [9 4 0 16.382] 9 2 10 [6 [7 [0 3] 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 30] 7 [0 3] 1 5] 0 2] 0 2] 7 [0 3] 1 3.864.292.196] 0 2] 0 1] 9 2 10 [14 8 [9 179.060 0 65.531] 9 2 10 [6 0 62] 0 2] 0 3] 9 2 0 1] 0 1] 8 [8 [9 11.188 0 8.187] 9 2 10 [6 [7 [0 3] 8 [9 4 0 8.187] 9 2 10 [6 [7 [0 3] 1 4] 0 126] 0 2] 0 254] 0 2] 8 [1 0] 8 [8 [9 350 0 32.763] 9 2 10 [6 [0 32.762] 7 [0 3] 1 3] 0 2] 7 [10 [254 6 [5 [1 3] 0 2] [7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 179.035 0 65.531] 9 2 10 [6 [7 [0 3] 1 0 16] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 2] 0 30] 0 2] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 179.035 0 65.531] 9 2 10 [6 [7 [0 3] 1 0 8] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 1] 0 30] 0 2] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 0] 0 30] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 508] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 15] 0 14] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 509] 0 2] 0 2] 0 1] 8 [9 86 0 65.531] 9 2 10 [6 [0 510] 0 14] 0 2] 6 [5 [1 2] 0 2] [7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 179.035 0 65.531] 9 2 10 [6 [7 [0 3] 1 0 8] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 1] 0 30] 0 2] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 0] 0 30] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 508] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 15] 0 14] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 509] 0 2] 0 2] 0 1] 8 [9 86 0 65.531] 9 2 10 [6 [0 510] 0 14] 0 2] 6 [5 [1 1] 0 2] [7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 0] 0 30] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 508] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 15] 0 14] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 509] 0 2] 0 2] 0 1] 8 [9 86 0 65.531] 9 2 10 [6 [0 510] 0 14] 0 2] 11 [1.936.945.012 1 0] 0 254] 0 1] 7 [10 [254 8 [9 86 0 65.531] 9 2 10 [6 [0 510] 0 65.530] 0 2] 0 1] 8 [1 [8 [9 5 0 1] 9 2 10 [6 0 1.022] 0 2] 8 [1 0] [1 7 [10 [6 8 [9 86 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 11.246 0 524.283] 9 2 10 [6 [7 [0 3] 1 0 16] 0 14] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 131.070] 9 2 10 [6 7 [0 3] 8 [9 4 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 1 2.246.822.507] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 11.246 0 524.283] 9 2 10 [6 [7 [0 3] 1 0 13] 0 14] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 131.070] 9 2 10 [6 7 [0 3] 8 [9 4 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 1 3.266.489.909] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 11.246 0 524.283] 9 2 10 [6 [7 [0 3] 1 0 16] 0 14] 0 2] 0 2] 0 1] 0 6] 0 1] 9 4 0 1] 0 1] [[8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [6 [3 0 6] [[8 [0 30] 9 2 10 [6 0 28] 0 2] 8 [7 [0 7] 8 [9 3.060 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 29] 0 2] 6 [5 [1 0] 0 6] [1 0] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] 8 [1 0 0] [1 11 [1.851.876.717 [1 [1 1.717.658.988] 7 [0 1] 8 [1 1 115 117 98 116 114 97 99 116 45 117 110 100 101 114 102 108 111 119 0] 9 2 0 1] 0 1] 6 [5 [1 0] 0 13] [0 12] 9 2 10 [6 [8 [9 179.060 0 7] 9 2 10 [6 0 28] 0 2] 8 [9 179.060 0 7] 9 2 10 [6 0 29] 0 2] 0 1] 0 1] [8 [1 0 0] [1 6 [5 [0 13] 1 0] [1 1] 8 [1 6 [5 [0 29] 1 1] [0 28] 8 [9 2 10 [29 8 [9 44.764 0 15] 9 2 10 [6 [0 61] 7 [0 3] 1 2] 0 2] 0 1] 8 [8 [9 4 0 31] 9 2 10 [6 [0 6] 0 6] 0 2] 8 [8 [9 350 0 63] 9 2 10 [6 [0 253] 7 [0 3] 1 1] 0 2] 6 [5 [1 0] 0 2] [0 6] 7 [0 3] 8 [9 4 0 63] 9 2 10 [6 [0 6] 0 252] 0 2] 9 2 0 1] 0 1] 8 [1 0] [1 [8 [1 0 0] [1 8 [9 11 0 7] 9 2 10 [6 7 [0 3] 8 [9 348 0 31] 9 2 10 [6 [0 28] 0 29] 0 2] 0 2] 0 1] [8 [1 0 0 0] [1 8 [8 [9 11 0 7] 9 2 10 [6 0 59] 0 2] 8 [8 [9 22.394 0 63] 9 2 10 [6 7 [0 3] 8 [9 3.061 0 63] 9 2 10 [6 [0 126] 0 60] 0 2] 0 2] 8 [8 [9 6.014 0 127] 9 2 10 [6 [0 250] 0 6] 0 2] 8 [9 11 0 63] 9 2 10 [6 7 [0 3] 8 [9 2.798 0 255] 9 2 10 [6 [7 [0 3] 8 [9 179.035 0 255] 9 2 10 [6 [7 [0 3] [0 124] 0 2] 0 30] 0 2] 7 [0 3] 8 [9 11.246 0 255] 9 2 10 [6 [7 [0 3] [0 124] 8 [9 3.061 0 255] 9 2 10 [6 [0 14] 0 6] 0 2] 0 30] 0 2] 0 2] 0 2] 0 1] 8 [1 0] [1 8 [9 358.122 0 31] 9 2 10 [6 [0 62] 0 14] 0 2] 0 1] 0 1] 8 [1 0 0] [1 8 [6 [6 [3 0 12] [1 1] 1 0] [[0 12] 1 1] 0 12] 8 [1 0] 8 [1 6 [5 [1 0] 0 125] [1 0] 8 [9 348 0 63] 9 2 10 [6 [7 [0 3] 9 2 10 [125 0 251] 10 [6 4 0 6] 0 1] 7 [0 3] 8 [9 179.035 0 63] 9 2 10 [6 [7 [0 3] [0 28] 8 [9 4 0 63] 9 2 10 [6 [0 61] 0 14] 0 2] 7 [0 3] 8 [9 358.122 0 63] 9 2 10 [6 [7 [0 3] [0 28] 0 29] 0 506] 0 2] 0 2] 0 2] 9 2 0 1] 0 1] 506.013.904.830.974.705.962.590.204.844.663.393]] q=[%8 p=[%1 p=6] q=[%8 p=[%1 p=7] q=[%8 p=[%9 p=4 q=[%0 p=14]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%0 p=6] q=[%0 p=2]]]] q=[%0 p=2]]]]]]] + !> .*(0 (mint:jock text)) +:: +-- diff --git a/hoon/tests/lib/hoon-arithmetic.hoon b/hoon/tests/lib/hoon-arithmetic.hoon new file mode 100644 index 0000000..ce475f4 --- /dev/null +++ b/hoon/tests/lib/hoon-arithmetic.hoon @@ -0,0 +1,36 @@ +:: /lib/tests/hoon-arithmetic +/+ jock, + test +/* hoon %txt /lib/mini/txt +:: +|% +++ text + 'import hoon;\0a\0alet a:@ = 5;\0alet b:@ = 37;\0a\0a(\0a hoon.dec(43)\0a hoon.add(5 37)\0a hoon.add(a b)\0a hoon.sub(47 a)\0a hoon.lent([1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42])\0a)\0a' +++ test-tokenize + %+ expect-eq:test + !> ~[[%keyword %import] [%name %hoon] [%punctuator %';'] [%keyword %let] [%name %a] [%punctuator %':'] [%punctuator %'@'] [%punctuator %'='] [%literal [[%number p=5] q=%.n]] [%punctuator %';'] [%keyword %let] [%name %b] [%punctuator %':'] [%punctuator %'@'] [%punctuator %'='] [%literal [[%number p=37] q=%.n]] [%punctuator %';'] [%punctuator %'('] [%name %hoon] [%punctuator %'.'] [%name %dec] [%punctuator %'(('] [%literal [[%number p=43] q=%.n]] [%punctuator %')'] [%name %hoon] [%punctuator %'.'] [%name %add] [%punctuator %'(('] [%literal [[%number p=5] q=%.n]] [%literal [[%number p=37] q=%.n]] [%punctuator %')'] [%name %hoon] [%punctuator %'.'] [%name %add] [%punctuator %'(('] [%name %a] [%name %b] [%punctuator %')'] [%name %hoon] [%punctuator %'.'] [%name %sub] [%punctuator %'(('] [%literal [[%number p=47] q=%.n]] [%name %a] [%punctuator %')'] [%name %hoon] [%punctuator %'.'] [%name %lent] [%punctuator %'(('] [%punctuator %'['] [%literal [[%number p=1] q=%.n]] [%literal [[%number p=2] q=%.n]] [%literal [[%number p=3] q=%.n]] [%literal [[%number p=4] q=%.n]] [%literal [[%number p=5] q=%.n]] [%literal [[%number p=6] q=%.n]] [%literal [[%number p=7] q=%.n]] [%literal [[%number p=8] q=%.n]] [%literal [[%number p=9] q=%.n]] [%literal [[%number p=10] q=%.n]] [%literal [[%number p=11] q=%.n]] [%literal [[%number p=12] q=%.n]] [%literal [[%number p=13] q=%.n]] [%literal [[%number p=14] q=%.n]] [%literal [[%number p=15] q=%.n]] [%literal [[%number p=16] q=%.n]] [%literal [[%number p=17] q=%.n]] [%literal [[%number p=18] q=%.n]] [%literal [[%number p=19] q=%.n]] [%literal [[%number p=20] q=%.n]] [%literal [[%number p=21] q=%.n]] [%literal [[%number p=22] q=%.n]] [%literal [[%number p=23] q=%.n]] [%literal [[%number p=24] q=%.n]] [%literal [[%number p=25] q=%.n]] [%literal [[%number p=26] q=%.n]] [%literal [[%number p=27] q=%.n]] [%literal [[%number p=28] q=%.n]] [%literal [[%number p=29] q=%.n]] [%literal [[%number p=30] q=%.n]] [%literal [[%number p=31] q=%.n]] [%literal [[%number p=32] q=%.n]] [%literal [[%number p=33] q=%.n]] [%literal [[%number p=34] q=%.n]] [%literal [[%number p=35] q=%.n]] [%literal [[%number p=36] q=%.n]] [%literal [[%number p=37] q=%.n]] [%literal [[%number p=38] q=%.n]] [%literal [[%number p=39] q=%.n]] [%literal [[%number p=40] q=%.n]] [%literal [[%number p=41] q=%.n]] [%literal [[%number p=42] q=%.n]] [%punctuator %']'] [%punctuator %')'] [%punctuator %')']] + !> (rash text parse-tokens:jock) +:: +++ test-jeam + %+ expect-eq:test + !> ^- jock:jock + [%import name=[p=[%hoon p=[#t/<64.kjn %ab-urbe-condita> q=[[[8 [1 1 1] [1 8 [1 0] 8 [1 6 [5 [1 0] 0 60] [0 6] 9 2 10 [60 8 [9 179.060 0 31] 9 2 10 [6 0 124] 0 2] 10 [6 8 [9 348 0 31] 9 2 10 [6 [0 125] 0 14] 0 2] 0 1] 9 2 0 1] 0 1] [[8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [[8 [1 0 0] [1 8 [1 6 [5 [1 0] 0 29] [11 [1.851.876.717 [1 [1 1.717.658.988] 7 [0 1] 8 [1 1 115 110 97 103 45 102 97 105 108 0] 9 2 0 1] 0 1] 0 0] 6 [5 [1 0] 0 28] [0 58] 9 2 10 [14 [8 [9 179.060 0 15] 9 2 10 [6 0 60] 0 2] 0 59] 0 1] 9 2 0 1] 0 1] [[8 [1 0 0] [1 6 [5 [0 12] 0 13] [1 0] 6 [8 [9 358.123 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] [1 0] 1 1] 0 1] [8 [1 0 0] [1 6 [5 [1 0] 0 12] [10 [1 0 13] 0 12] 10 [3 9 2 10 [12 0 25] 0 1] 0 12] 0 1] 8 [1 0] [1 8 [1 0] 8 [1 6 [5 [1 0] 0 30] [0 6] 9 2 10 [30 0 61] 10 [6 4 0 6] 0 1] 9 2 0 1] 0 1] [8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [[8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [8 [8 [7 [0 7] 8 [9 5.622 0 7] 9 2 10 [6 7 [0 3] 8 [9 11.190 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 2] 9 2 10 [6 0 14] 0 2] 6 [8 [7 [0 3] 8 [1 0] [1 6 [5 [1 0] 0 6] [1 0] 8 [9 22.378 0 127] 9 23 10 [6 0 14] 0 2] 0 1] 9 2 10 [6 0 6] 0 2] [0 2] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [6 [3 0 6] [[6 [5 [1 0] 0 12] [1 0] 0 0] 8 [0 30] 9 2 10 [6 0 29] 0 2] 6 [5 [1 0] 0 6] [1 0] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] 8 [1 0 0] [1 6 [5 [1 0] 0 13] [1 0] [8 [9 358.122 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 9 2 10 [13 8 [9 11.246 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 1] 0 1] [8 [1 0 0] [1 8 [1 0 0] 8 [1 6 [6 [5 [1 0] 0 60] [6 [5 [1 0] 0 61] [1 0] 1 1] 1 1] [0 13] 9 2 10 [30 [8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] 8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] 10 [6 [4 0 12] 8 [9 348 0 31] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 179.035 0 31] 9 2 10 [6 [7 [0 3] [1 0] 0 12] 7 [0 3] 5 [8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] 0 2] 0 2] 0 1] 9 2 0 1] 0 1] [[8 [1 0 0] [1 6 [5 [1 0] 0 12] [0 13] 9 2 10 [6 [8 [9 179.060 0 7] 9 2 10 [6 0 28] 0 2] 4 0 13] 0 1] 0 1] [8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [8 [8 [7 [0 7] 8 [9 5.622 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 14] 0 2] 6 [8 [7 [0 3] 8 [1 0] [1 6 [5 [1 0] 0 6] [1 0] 8 [9 89.518 0 127] 9 11 10 [6 0 14] 0 2] 0 1] 9 2 10 [6 0 6] 0 2] [0 2] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [[8 [1 0] [1 8 [6 [3 0 6] [[8 [7 [0 7] 9 11.196 0 1] 9 2 10 [6 0 28] 0 2] 8 [7 [0 7] 9 89.535 0 1] 9 2 10 [6 0 29] 0 2] 8 [7 [0 7] 9 11.196 0 1] 9 2 10 [6 0 14] 0 2] 8 [5 [0 14] 0 2] 0 6] 0 1] [[8 [1 0 0] [1 8 [1 6 [5 [1 0] 0 28] [0 29] 6 [5 [1 0] 0 29] [1 0] 9 2 10 [14 [8 [9 179.060 0 15] 9 2 10 [6 0 60] 0 2] 0 59] 0 1] 9 2 0 1] 0 1] [8 [7 [8 [9 5.622 0 1] 9 2 10 [6 7 [0 3] 7 [9 11.190 0 1] 9 2 0 1] 0 2] 9 2 0 1] 7 [0 1] [1 [8 [1 0 0] [1 8 [1 6 [5 [1 0] 0 62] [[[0 28] 0 29] 1 0 0] 6 [5 [0 28] 0 248] [6 [5 [0 29] 0 249] [0 62] 10 [2 [0 28] 0 29] 0 62] 6 [8 [9 92 0 63] 9 2 10 [6 [0 60] 0 504] 0 2] [8 [9 2 10 [62 0 250] 0 1] 6 [3 0 2] [6 [8 [9 190 0 127] 9 2 10 [6 [0 1.016] 0 24] 0 2] [10 [6 0 2] 0 126] 10 [7 10 [6 0 11] 0 126] 0 2] 0 0] 8 [9 2 10 [62 0 251] 0 1] 6 [3 0 2] [6 [8 [9 190 0 127] 9 2 10 [6 [0 1.016] 0 24] 0 2] [10 [7 0 2] 0 126] 10 [6 10 [7 0 10] 0 126] 0 2] 0 0] 9 2 0 1] 0 1] [8 [1 0] [1 8 [1 6 [5 [1 0] 0 62] [1 0] 6 [5 [0 14] 0 248] [8 [1 6 [5 [1 0] 0 506] [0 507] 6 [5 [1 0] 0 507] [0 506] 6 [8 [9 190 0 127] 9 2 10 [6 [0 4.072] 0 4.076] 0 2] [10 [7 9 2 10 [506 0 2.027] 0 1] 0 506] 10 [6 9 2 10 [507 0 2.030] 0 1] 0 507] 9 2 0 1] 6 [8 [9 92 0 63] 9 2 10 [6 [0 30] 0 504] 0 2] [10 [6 9 2 10 [62 0 250] 0 1] 0 62] 10 [7 9 2 10 [62 0 251] 0 1] 0 62] 9 2 0 1] 0 1] [8 [1 0] [1 7 [10 [6 0 6] 0 1] 8 [1 6 [5 [1 0] 0 62] [1 0] 6 [5 [0 14] 0 248] [[1 0] 0 249] 6 [8 [9 92 0 63] 9 2 10 [6 [0 30] 0 504] 0 2] [9 2 10 [62 0 250] 0 1] 9 2 10 [62 0 251] 0 1] 9 2 0 1] 0 1] 7 [8 [[7 [7 [9 1.374 0 7] 9 2 0 1] 9 2 0 1] 7 [7 [9 1.374 0 7] 9 2 0 1] 9 2 0 1] [1 6 [5 [1 0] 0 30] [1 0] 6 [6 [5 [1 0] 0 12] [1 0] 6 [8 [9 92 0 31] 9 2 10 [6 [0 248] 0 57] 0 2] [6 [6 [5 [0 120] 0 25] [1 1] 1 0] [1 0] 1 1] 1 1] [6 [6 [5 [1 0] 0 13] [1 0] 6 [8 [9 92 0 31] 9 2 10 [6 [0 59] 0 248] 0 2] [6 [6 [5 [0 27] 0 120] [1 1] 1 0] [1 0] 1 1] 1 1] [6 [6 [5 [1 0] 0 122] [1 0] 6 [8 [9 190 0 31] 9 2 10 [6 [0 248] 0 1.000] 0 2] [6 [6 [5 [0 120] 0 488] [1 1] 1 0] [6 [9 2 10 [30 0 122] 10 [12 [1 0] 0 120] 0 1] [1 0] 1 1] 1 1] 1 1] [6 [6 [5 [1 0] 0 123] [1 0] 6 [8 [9 190 0 31] 9 2 10 [6 [0 248] 0 1.004] 0 2] [6 [6 [5 [0 120] 0 492] [1 1] 1 0] [6 [9 2 10 [30 0 123] 10 [13 [1 0] 0 120] 0 1] [1 0] 1 1] 1 1] 1 1] [1 0] 1 1] 1 1] 1 1] 1 1] 0 1] 9 2 0 1] 0 1] [[8 [1 1 1] [1 [8 [9 44.764 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 8 [9 6.014 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 1] [8 [7 [8 [9 5.622 0 1] 9 2 10 [6 7 [0 3] 8 [9 11.190 0 1] 9 2 10 [6 [7 [0 3] 8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 7 [0 3] 7 [9 5.622 0 1] 9 2 0 1] 0 2] 0 2] 9 2 0 1] [1 [8 [1 0 0] [1 8 [8 [9 11 0 7] 9 2 10 [6 0 28] 0 2] 8 [8 [9 22.378 0 63] 9 4 10 [6 0 126] 0 2] 9 2 10 [6 [0 60] 7 [0 3] 8 [8 [9 89.518 0 63] 9 4 10 [6 0 6] 0 2] 9 2 10 [6 0 61] 0 2] 0 2] 0 1] [8 [1 0 0] [1 8 [8 [9 11 0 7] 9 2 10 [6 0 28] 0 2] 8 [8 [8 [9 89.518 0 63] 9 10 10 [6 0 6] 0 2] 9 2 10 [6 0 61] 0 2] 6 [5 [1 0] 0 2] [8 [8 [9 22.378 0 127] 9 10 10 [6 0 254] 0 2] 9 2 10 [6 0 124] 0 2] 8 [8 [9 22.378 0 127] 9 4 10 [6 0 254] 0 2] 9 2 10 [6 [0 124] 0 6] 0 2] 0 1] 8 [1 0] [1 8 [8 [8 [9 22.378 0 31] 9 22 10 [6 0 62] 0 2] 9 2 10 [6 0 14] 0 2] 6 [5 [1 0] 0 2] [1 0] 0 5] 0 1] 0 1] 8 [1 0 0] [1 8 [6 [6 [3 0 12] [1 1] 1 0] [[0 12] 1 1] 0 12] 8 [9 4 0 15] 9 2 10 [6 [0 61] 7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 7 [0 3] 8 [9 4 0 15] 9 2 10 [6 [7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 0 12] 0 2] 0 13] 0 2] 0 2] 0 2] 0 1] [8 [7 [7 [9 5.622 0 1] 9 2 0 1] 9 2 0 1] [1 [8 [1 0] [1 8 [1 6 [5 [1 0] 0 62] [[0 14] 1 0 0] 6 [5 [0 14] 0 124] [0 62] 6 [8 [9 92 0 63] 9 2 10 [6 [0 30] 0 252] 0 2] [8 [9 2 10 [62 0 250] 0 1] 6 [3 0 2] [6 [8 [9 190 0 127] 9 2 10 [6 [0 508] 0 12] 0 2] [10 [6 0 2] 0 126] 10 [7 10 [6 0 11] 0 126] 0 2] 0 0] 8 [9 2 10 [62 0 251] 0 1] 6 [3 0 2] [6 [8 [9 190 0 127] 9 2 10 [6 [0 508] 0 12] 0 2] [10 [7 0 2] 0 126] 10 [6 10 [7 0 10] 0 126] 0 2] 0 0] 9 2 0 1] 0 1] [8 [1 0] [1 8 [1 6 [5 [1 0] 0 62] [1 0] 6 [5 [0 14] 0 124] [8 [1 6 [5 [1 0] 0 506] [0 507] 6 [5 [1 0] 0 507] [0 506] 6 [8 [9 190 0 127] 9 2 10 [6 [0 2.036] 0 2.038] 0 2] [10 [7 9 2 10 [506 0 2.027] 0 1] 0 506] 10 [6 9 2 10 [507 0 2.030] 0 1] 0 507] 9 2 0 1] 6 [8 [9 92 0 63] 9 2 10 [6 [0 30] 0 252] 0 2] [10 [6 9 2 10 [62 0 250] 0 1] 0 62] 10 [7 9 2 10 [62 0 251] 0 1] 0 62] 9 2 0 1] 0 1] 7 [8 [[7 [7 [9 1.374 0 7] 9 2 0 1] 9 2 0 1] 7 [7 [9 1.374 0 7] 9 2 0 1] 9 2 0 1] [1 6 [5 [1 0] 0 30] [1 0] 6 [6 [5 [1 0] 0 12] [1 0] 8 [9 92 0 31] 9 2 10 [6 [0 124] 0 57] 0 2] [6 [6 [5 [1 0] 0 13] [1 0] 8 [9 92 0 31] 9 2 10 [6 [0 59] 0 124] 0 2] [6 [6 [5 [1 0] 0 122] [1 0] 6 [8 [9 190 0 31] 9 2 10 [6 [0 124] 0 500] 0 2] [6 [9 2 10 [30 0 122] 10 [12 [1 0] 0 60] 0 1] [1 0] 1 1] 1 1] [6 [6 [5 [1 0] 0 123] [1 0] 6 [8 [9 190 0 31] 9 2 10 [6 [0 124] 0 502] 0 2] [6 [9 2 10 [30 0 123] 10 [13 [1 0] 0 60] 0 1] [1 0] 1 1] 1 1] [1 0] 1 1] 1 1] 1 1] 1 1] 0 1] 9 2 0 1] 0 1] 8 [1 0] [1 7 [10 [6 8 [9 22.395 0 7] 9 2 10 [6 0 14] 0 2] 0 1] 8 [1 0] 8 [1 6 [5 [1 0] 0 30] [0 6] 9 2 10 [30 0 61] 10 [6 [0 60] 0 6] 0 1] 9 2 0 1] 0 1] [8 [[8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [[0 50] 0 54] [1 8 [[8 [0 60] 9 2 10 [6 0 28] 0 2] 8 [0 61] 9 2 10 [6 0 29] 0 2] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [[8 [1 1 1] [1 11 [1.851.876.717 [1 [1 1.717.658.988] 7 [0 1] 8 [1 1 100 105 118 105 100 101 45 98 121 45 122 101 114 111 0] 9 2 0 1] 0 1] 6 [5 [1 0] 0 13] [0 0] 8 [1 0] 8 [1 6 [8 [9 358.123 0 31] 9 2 10 [6 [0 124] 0 125] 0 2] [0 6] 9 2 10 [60 8 [9 3.061 0 31] 9 2 10 [6 [0 124] 0 125] 0 2] 10 [6 4 0 6] 0 1] 9 2 0 1] 0 1] [[8 [1 0] [1 11 [1.851.876.717 [1 [1 1.717.658.988] 7 [0 1] 8 [1 1 100 101 99 114 101 109 101 110 116 45 117 110 100 101 114 102 108 111 119 0] 9 2 0 1] 0 1] 6 [5 [1 0] 0 6] [0 0] 8 [1 0] 8 [1 6 [5 [0 30] 4 0 6] [0 6] 9 2 10 [6 4 0 6] 0 1] 9 2 0 1] 0 1] [8 [1 0 0] [1 8 [6 [6 [3 0 12] [1 1] 1 0] [[0 12] 1 1] 0 12] 8 [9 6.014 0 15] 9 2 10 [6 [0 61] 7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 7 [0 3] 8 [9 4 0 15] 9 2 10 [6 [7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 0 12] 0 2] 0 13] 0 2] 0 2] 0 2] 0 1] 8 [1 0 0] [1 6 [6 [5 [0 12] 0 13] [1 1] 1 0] [6 [8 [1 6 [5 [1 0] 0 28] [1 0] 6 [6 [6 [5 [1 0] 0 29] [1 1] 1 0] [6 [9 2 10 [14 [8 [9 179.060 0 15] 9 2 10 [6 0 60] 0 2] 8 [9 179.060 0 15] 9 2 10 [6 0 61] 0 2] 0 1] [1 0] 1 1] 1 1] [1 0] 1 1] 9 2 0 1] [1 0] 1 1] 1 1] 0 1] 8 [1 0 0] [1 8 [[6 [6 [3 0 12] [1 1] 1 0] [0 12] 0 0] 6 [6 [3 0 13] [1 1] 1 0] [0 13] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0 0] [1 8 [1 0] 8 [1 6 [5 [1 0] 0 61] [0 6] 9 2 10 [61 8 [9 11.246 0 31] 9 2 10 [6 [0 124] 0 125] 0 2] 10 [6 4 0 6] 0 1] 9 2 0 1] 0 1] 8 [1 0] [1 8 [7 [0 7] 1 1] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0 0] [1 8 [1 0 0] 8 [1 6 [6 [5 [1 0] 0 60] [6 [5 [1 0] 0 61] [1 0] 1 1] 1 1] [0 13] 9 2 10 [30 [8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] 8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] 10 [6 [4 0 12] 8 [9 348 0 31] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 179.035 0 31] 9 2 10 [6 [7 [0 3] [1 0] 0 12] 7 [0 3] 6 [5 [1 0] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] [6 [5 [1 0] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] [1 0] 1 1] 1 1] 0 2] 0 2] 0 1] 9 2 0 1] 0 1] [[8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0] [1 6 [5 [1 0] 0 6] [1 1] 8 [9 4 0 7] 9 2 10 [6 [7 [0 3] 1 2] 7 [0 3] 9 2 10 [6 8 [9 179.060 0 7] 9 2 10 [6 0 14] 0 2] 0 1] 0 2] 0 1] 8 [1 0] [1 0 6] 0 1] [8 [1 0 [1 1] 0] [1 8 [9 358.122 0 7] 9 2 10 [6 [7 [0 3] [0 12] 0 53] 7 [0 3] 8 [9 11.246 0 7] 9 2 10 [6 [7 [0 3] [0 12] 0 52] 0 59] 0 2] 0 2] 0 1] [8 [1 0] [1 8 [1 [6 [6 [3 0 14] [1 1] 1 0] [8 [9 5 0 1] 9 2 10 [6 [7 [0 3] 1 3.405.691.582] [7 [0 3] 1 32.767] 0 30] 0 2] 8 [8 [9 22 0 15] 9 2 10 [6 [7 [0 3] 1 5] [7 [0 3] 9 4 10 [14 0 28] 0 1] 7 [0 3] 9 4 10 [14 0 29] 0 1] 0 2] 8 [9 5 0 3] 9 2 10 [6 [7 [0 3] 1 3.735.928.559] [7 [0 3] 1 65.534] 0 6] 0 2] 8 [1 0 0 0] [1 8 [8 [9 89.534 0 63] 9 2 10 [6 [7 [0 3] 1 3] 0 59] 0 2] 8 [1 0] 8 [1 6 [5 [1 8] 0 6] [0 250] 8 [8 [9 764 0 511] 9 2 10 [6 [0 252] [0 30] 0 507] 0 2] 8 [8 [9 86 0 1.023] 9 2 10 [6 [7 [0 3] 8 [9 11.246 0 1.023] 9 2 10 [6 [7 [0 3] 1 0 31] 0 6] 0 2] 7 [0 3] 8 [9 358.122 0 1.023] 9 2 10 [6 [7 [0 3] 1 0 31] 0 6] 0 2] 0 2] 6 [5 [1 0] 0 2] [9 2 10 [124 4 0 508] 10 [6 4 0 30] 0 7] 0 2] 9 2 0 1] 0 1] 9 4 0 1] 0 1] 8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0 0] [1 8 [1 0 0] 8 [1 6 [6 [5 [1 0] 0 60] [1 0] 6 [5 [1 0] 0 61] [1 0] 1 1] [0 13] 9 2 10 [30 [8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] 8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] 10 [6 [4 0 12] 8 [9 348 0 31] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 179.035 0 31] 9 2 10 [6 [7 [0 3] [1 0] 0 12] 7 [0 3] 6 [5 [1 0] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] [1 0] 6 [5 [1 0] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] [1 0] 1 1] 0 2] 0 2] 0 1] 9 2 0 1] 0 1] [[8 [1 0 0] [1 8 [9 383 0 7] 9 2 10 [6 [0 28] 7 [0 3] 8 [9 89.519 0 7] 9 2 10 [6 7 [0 3] 8 [9 1.375 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 2] 0 2] 0 1] [8 [1 0] [1 8 [9 89.534 0 7] 9 2 10 [6 [7 [0 3] 1 0] 0 14] 0 2] 0 1] [8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [6 [3 0 6] [[8 [0 30] 9 2 10 [6 0 28] 0 2] [8 [7 [0 7] 8 [9 5.622 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 58] 0 2] 8 [7 [0 7] 8 [9 5.622 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 59] 0 2] 6 [5 [1 0] 0 6] [1 0] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [8 [1 0 0] [1 8 [6 [6 [3 0 12] [1 1] 1 0] [[0 12] 1 1] 0 12] 8 [9 44.764 0 15] 9 2 10 [6 [0 61] 7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 7 [0 3] 8 [9 4 0 15] 9 2 10 [6 [7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 0 12] 0 2] 0 13] 0 2] 0 2] 0 2] 0 1] [8 [1 0] [1 6 [5 [1 0] 0 6] [1 0 0] 8 [[8 [9 44.764 0 7] 9 2 10 [6 [7 [0 3] 8 [9 179.060 0 7] 9 2 10 [6 7 [0 3] 8 [9 2.810 0 7] 9 2 10 [6 0 14] 0 2] 0 2] 7 [0 3] 1 2] 0 2] 1 0] 8 [8 [1 8 [8 [9 348 0 31] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 22.394 0 31] 9 2 10 [6 0 28] 0 2] 0 2] 8 [8 [9 4 0 63] 9 2 10 [6 [0 6] 0 6] 0 2] 6 [5 [0 60] 1 0] [6 [8 [9 340 0 127] 9 2 10 [6 [0 6] 0 254] 0 2] [[0 6] 0 2] [0 61] 8 [9 4 0 127] 9 2 10 [6 [0 125] 0 125] 0 2] 6 [8 [9 340 0 127] 9 2 10 [6 [0 6] 0 254] 0 2] [9 2 10 [6 [8 [9 179.060 0 127] 9 2 10 [6 0 124] 0 2] 0 6] 0 7] 9 2 10 [12 8 [9 179.060 0 127] 9 2 10 [6 0 124] 0 2] 0 7] 9 2 0 1] [0 4] 8 [9 3.061 0 31] 9 2 10 [6 [0 62] 0 13] 0 2] 0 1] [8 [1 0 0] [1 [8 [1 6 [5 [1 0] 0 29] [1 0] 8 [9 348 0 15] 9 2 10 [6 [0 244] 7 [0 3] 9 2 10 [29 0 59] 0 1] 0 2] 9 2 0 1] 8 [9 6.015 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 1] [8 [1 0 0] [1 6 [5 [0 12] 0 13] [1 0] 8 [1 0] 8 [1 6 [5 [0 6] 1 2] [8 [9 340 0 31] 9 2 10 [6 [0 124] 0 125] 0 2] 8 [[8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 3] 0 124] 0 2] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 3] 0 125] 0 2] 6 [5 [0 4] 0 5] [9 2 10 [30 [8 [9 11.246 0 63] 9 2 10 [6 [7 [0 3] 1 3] 0 252] 0 2] 8 [9 11.246 0 63] 9 2 10 [6 [7 [0 3] 1 3] 0 253] 0 2] 10 [6 4 0 14] 0 3] 8 [9 358.123 0 63] 9 2 10 [6 [0 12] 0 13] 0 2] 9 2 0 1] 0 1] 8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [1 0 0] [1 6 [8 [9 340 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] [1 1] 1 0] 0 1] [8 [1 0 0 0] [1 8 [9 348 0 7] 9 2 10 [6 [7 [0 3] 8 [9 179.035 0 7] 9 2 10 [6 [7 [0 3] [0 12] 8 [9 89.534 0 7] 9 2 10 [6 [0 28] 0 58] 0 2] 0 59] 0 2] 0 58] 0 2] 0 1] [[8 [1 0 0] [1 8 [[8 [9 22.398 0 7] 9 2 10 [6 0 28] 0 2] 8 [9 22.398 0 7] 9 2 10 [6 0 29] 0 2] 6 [5 [0 4] 0 5] [8 [9 374 0 15] 9 2 10 [6 [0 60] 0 61] 0 2] 8 [9 358.123 0 15] 9 2 10 [6 [0 12] 0 13] 0 2] 0 1] [8 [1 0 0] [1 8 [1 6 [5 [1 0] 0 28] [1 0] [0 29] 9 2 10 [28 8 [9 179.060 0 15] 9 2 10 [6 0 60] 0 2] 0 1] 9 2 0 1] 0 1] [8 [1 0 0] [1 6 [5 [0 12] 0 13] [1 0] 6 [6 [3 0 12] [1 1] 1 0] [6 [6 [3 0 13] [1 1] 1 0] [8 [9 358.123 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 1 0] 6 [6 [3 0 13] [1 1] 1 0] [1 1] 6 [5 [0 24] 0 26] [9 2 10 [6 [0 25] 0 27] 0 1] 9 2 10 [6 [0 24] 0 26] 0 1] 0 1] [8 [[8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [9 686 0 7] 9 2 10 [6 [0 28] 7 [0 3] 8 [9 698 0 7] 9 2 10 [6 0 29] 0 2] 0 2] 0 1] [8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [[0 26] 7 [8 [9 3.060 0 7] 9 2 10 [6 0 14] 0 2] 0 6] [1 8 [[8 [0 30] 9 2 10 [6 0 28] 0 2] 8 [7 [0 7] 8 [9 3.060 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 29] 0 2] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [8 [[7 [9 89.983 0 1] 9 2 0 1] 7 [9 89.983 0 1] 9 2 0 1] [1 8 [1 8 [[0 114] 0 118] [1 8 [[8 [0 124] 9 2 10 [6 0 28] 0 2] 8 [0 125] 9 2 10 [6 0 29] 0 2] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [7 [[[7 [0 28] 9 2 0 1] 7 [0 28] 9 2 0 1] 1 0] 8 [0 2] [1 0 15] 0 1] [1 [1 [8 [[7 [8 [9 5.622 0 127] 9 2 10 [6 7 [0 3] 9 2 0 15] 0 2] 9 2 0 1] [7 [0 252] 9 2 0 1] 7 [0 253] 9 2 0 1] [1 6 [5 [1 0] 0 12] [[[0 26] 0 27] 1 0 0] 6 [5 [0 48] 0 26] [10 [5 0 27] 0 12] 6 [8 [0 62] 9 2 10 [6 [0 58] 0 112] 0 2] [8 [9 2 10 [12 0 50] 0 1] 6 [3 0 2] [6 [8 [9 190 0 1.023] 9 2 10 [6 [0 240] 0 24] 0 2] [10 [6 0 2] 0 28] 10 [7 10 [6 0 11] 0 28] 0 2] 0 0] 8 [9 2 10 [12 0 51] 0 1] 6 [3 0 2] [6 [8 [9 190 0 1.023] 9 2 10 [6 [0 240] 0 24] 0 2] [10 [7 0 2] 0 28] 10 [6 10 [7 0 10] 0 28] 0 2] 0 0] 0 1] [8 [[7 [8 [9 5.622 0 127] 9 2 10 [6 7 [0 3] 9 2 0 15] 0 2] 9 2 0 1] 7 [0 252] 9 2 0 1] [1 6 [5 [1 0] 0 12] [1 0] 6 [5 [0 13] 0 48] [[1 0] 0 49] 6 [8 [0 62] 9 2 10 [6 [0 29] 0 112] 0 2] [9 2 10 [12 0 50] 0 1] 9 2 10 [12 0 51] 0 1] 0 1] [8 [1 0] [1 8 [[7 [8 [9 1.374 0 511] 9 2 10 [6 0 2.044] 0 2] 9 2 0 1] 7 [8 [9 1.374 0 511] 9 2 10 [6 0 2.044] 0 2] 9 2 0 1] 8 [1 6 [5 [1 0] 0 30] [1 0] 6 [6 [5 [1 0] 0 12] [1 0] 8 [0 254] 9 2 10 [6 [0 248] 0 57] 0 2] [6 [6 [5 [1 0] 0 13] [1 0] 8 [0 254] 9 2 10 [6 [0 59] 0 248] 0 2] [6 [6 [5 [1 0] 0 122] [1 0] 6 [8 [9 190 0 2.047] 9 2 10 [6 [0 248] 0 1.000] 0 2] [6 [9 2 10 [30 0 122] 10 [12 [1 0] 0 120] 0 1] [1 0] 1 1] 1 1] [6 [6 [5 [1 0] 0 123] [1 0] 6 [8 [9 190 0 2.047] 9 2 10 [6 [0 248] 0 1.004] 0 2] [6 [9 2 10 [30 0 123] 10 [13 [1 0] 0 120] 0 1] [1 0] 1 1] 1 1] [1 0] 1 1] 1 1] 1 1] 1 1] 9 2 0 1] 0 1] 8 [[7 [8 [9 5.622 0 127] 9 2 10 [6 7 [0 3] 9 2 0 15] 0 2] 9 2 0 1] 7 [0 252] 9 2 0 1] [1 6 [5 [1 0] 8 [9 10 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] [1 1] 1 0] 0 1] 0 1] 0 1] 0 1] [8 [1 1 1] [1 6 [5 [1 0] 0 13] [0 0] 8 [9 3.061 0 7] 9 2 10 [6 [0 28] 7 [0 3] 8 [9 4 0 7] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 44.764 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 2] 0 2] 0 1] 8 [1 0 0] [1 6 [5 [1 0] 0 13] [1 0] 8 [9 348 0 7] 9 2 10 [6 [7 [0 3] 8 [9 358.122 0 7] 9 2 10 [6 [7 [0 3] [0 12] 0 52] 0 117] 0 2] 7 [0 3] 8 [9 179.035 0 7] 9 2 10 [6 [7 [0 3] [0 12] 0 52] 7 [0 3] 9 2 10 [13 0 27] 0 1] 0 2] 0 2] 0 1] [8 [1 0 0] [1 6 [8 [9 358.123 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] [1 1] 1 0] 0 1] [8 [1 0 0] [1 8 [[8 [9 22.398 0 7] 9 2 10 [6 7 [0 3] 8 [9 22.398 0 7] 9 2 10 [6 0 28] 0 2] 0 2] 8 [9 22.398 0 7] 9 2 10 [6 7 [0 3] 8 [9 22.398 0 7] 9 2 10 [6 0 29] 0 2] 0 2] 6 [5 [0 4] 0 5] [8 [9 374 0 15] 9 2 10 [6 [0 60] 0 61] 0 2] 8 [9 358.123 0 15] 9 2 10 [6 [0 12] 0 13] 0 2] 0 1] [[8 [8 [9 3.063 0 1] 10 [6 7 [0 3] 1 5] 0 2] 8 [1 0 0 0] [1 7 [10 [12 8 [9 358.122 0 59] 9 2 10 [6 [7 [0 3] 1 5] 0 28] 0 2] 0 1] 8 [8 [9 3.061 0 59] 9 2 10 [6 [0 58] 7 [0 3] 8 [9 89.534 0 59] 9 2 10 [6 [7 [0 3] 1 3] 0 59] 0 2] 0 2] 8 [8 [9 682 0 123] 9 2 10 [6 [7 [0 3] 8 [9 1.375 0 123] 9 2 10 [6 [7 [0 3] 1 3] 0 123] 0 2] 7 [0 3] 8 [9 186 0 123] 9 2 10 [6 [0 6] 7 [0 3] 1 0] 0 2] 0 2] 8 [8 [9 44.764 0 251] 9 2 10 [6 [0 250] 7 [0 3] 1 4] 0 2] 8 [0 124] 8 [1 3.432.918.353 461.845.907] 8 [8 [9 1.375 0 2.043] 9 2 10 [6 [7 [0 3] 1 5] 0 2.043] 0 2] 8 [0 30] 7 [10 [30 8 [0 30] 8 [1 6 [5 [1 0] 0 14] [0 6] 8 [8 [9 84 0 32.763] 9 2 10 [6 [7 [0 3] 8 [9 3.061 0 32.763] 9 2 10 [6 [0 510] 0 30] 0 2] 0 62] 0 2] 7 [10 [2 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 6] 0 508] 0 2] 0 2] 0 1] 7 [10 [2 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 15] 0 6] 0 2] 0 1] 7 [10 [2 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 6] 0 509] 0 2] 0 2] 0 1] 7 [10 [14 8 [9 86 0 65.531] 9 2 10 [6 [0 30] 0 6] 0 2] 0 1] 7 [10 [14 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 13] 0 30] 0 2] 0 1] 7 [10 [14 8 [9 4 0 16.382] 9 2 10 [6 [7 [0 3] 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 30] 7 [0 3] 1 5] 0 2] 0 2] 7 [0 3] 1 3.864.292.196] 0 2] 0 1] 9 2 10 [14 8 [9 179.060 0 65.531] 9 2 10 [6 0 62] 0 2] 0 3] 9 2 0 1] 0 1] 8 [8 [9 11.188 0 8.187] 9 2 10 [6 [7 [0 3] 8 [9 4 0 8.187] 9 2 10 [6 [7 [0 3] 1 4] 0 126] 0 2] 0 254] 0 2] 8 [1 0] 8 [8 [9 350 0 32.763] 9 2 10 [6 [0 32.762] 7 [0 3] 1 3] 0 2] 7 [10 [254 6 [5 [1 3] 0 2] [7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 179.035 0 65.531] 9 2 10 [6 [7 [0 3] 1 0 16] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 2] 0 30] 0 2] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 179.035 0 65.531] 9 2 10 [6 [7 [0 3] 1 0 8] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 1] 0 30] 0 2] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 0] 0 30] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 508] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 15] 0 14] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 509] 0 2] 0 2] 0 1] 8 [9 86 0 65.531] 9 2 10 [6 [0 510] 0 14] 0 2] 6 [5 [1 2] 0 2] [7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 179.035 0 65.531] 9 2 10 [6 [7 [0 3] 1 0 8] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 1] 0 30] 0 2] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 0] 0 30] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 508] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 15] 0 14] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 509] 0 2] 0 2] 0 1] 8 [9 86 0 65.531] 9 2 10 [6 [0 510] 0 14] 0 2] 6 [5 [1 1] 0 2] [7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 0] 0 30] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 508] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 15] 0 14] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 509] 0 2] 0 2] 0 1] 8 [9 86 0 65.531] 9 2 10 [6 [0 510] 0 14] 0 2] 11 [1.936.945.012 1 0] 0 254] 0 1] 7 [10 [254 8 [9 86 0 65.531] 9 2 10 [6 [0 510] 0 65.530] 0 2] 0 1] 8 [1 [8 [9 5 0 1] 9 2 10 [6 0 1.022] 0 2] 8 [1 0] [1 7 [10 [6 8 [9 86 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 11.246 0 524.283] 9 2 10 [6 [7 [0 3] 1 0 16] 0 14] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 131.070] 9 2 10 [6 7 [0 3] 8 [9 4 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 1 2.246.822.507] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 11.246 0 524.283] 9 2 10 [6 [7 [0 3] 1 0 13] 0 14] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 131.070] 9 2 10 [6 7 [0 3] 8 [9 4 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 1 3.266.489.909] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 11.246 0 524.283] 9 2 10 [6 [7 [0 3] 1 0 16] 0 14] 0 2] 0 2] 0 1] 0 6] 0 1] 9 4 0 1] 0 1] [[8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [6 [3 0 6] [[8 [0 30] 9 2 10 [6 0 28] 0 2] 8 [7 [0 7] 8 [9 3.060 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 29] 0 2] 6 [5 [1 0] 0 6] [1 0] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] 8 [1 0 0] [1 11 [1.851.876.717 [1 [1 1.717.658.988] 7 [0 1] 8 [1 1 115 117 98 116 114 97 99 116 45 117 110 100 101 114 102 108 111 119 0] 9 2 0 1] 0 1] 6 [5 [1 0] 0 13] [0 12] 9 2 10 [6 [8 [9 179.060 0 7] 9 2 10 [6 0 28] 0 2] 8 [9 179.060 0 7] 9 2 10 [6 0 29] 0 2] 0 1] 0 1] [8 [1 0 0] [1 6 [5 [0 13] 1 0] [1 1] 8 [1 6 [5 [0 29] 1 1] [0 28] 8 [9 2 10 [29 8 [9 44.764 0 15] 9 2 10 [6 [0 61] 7 [0 3] 1 2] 0 2] 0 1] 8 [8 [9 4 0 31] 9 2 10 [6 [0 6] 0 6] 0 2] 8 [8 [9 350 0 63] 9 2 10 [6 [0 253] 7 [0 3] 1 1] 0 2] 6 [5 [1 0] 0 2] [0 6] 7 [0 3] 8 [9 4 0 63] 9 2 10 [6 [0 6] 0 252] 0 2] 9 2 0 1] 0 1] 8 [1 0] [1 [8 [1 0 0] [1 8 [9 11 0 7] 9 2 10 [6 7 [0 3] 8 [9 348 0 31] 9 2 10 [6 [0 28] 0 29] 0 2] 0 2] 0 1] [8 [1 0 0 0] [1 8 [8 [9 11 0 7] 9 2 10 [6 0 59] 0 2] 8 [8 [9 22.394 0 63] 9 2 10 [6 7 [0 3] 8 [9 3.061 0 63] 9 2 10 [6 [0 126] 0 60] 0 2] 0 2] 8 [8 [9 6.014 0 127] 9 2 10 [6 [0 250] 0 6] 0 2] 8 [9 11 0 63] 9 2 10 [6 7 [0 3] 8 [9 2.798 0 255] 9 2 10 [6 [7 [0 3] 8 [9 179.035 0 255] 9 2 10 [6 [7 [0 3] [0 124] 0 2] 0 30] 0 2] 7 [0 3] 8 [9 11.246 0 255] 9 2 10 [6 [7 [0 3] [0 124] 8 [9 3.061 0 255] 9 2 10 [6 [0 14] 0 6] 0 2] 0 30] 0 2] 0 2] 0 2] 0 1] 8 [1 0] [1 8 [9 358.122 0 31] 9 2 10 [6 [0 62] 0 14] 0 2] 0 1] 0 1] 8 [1 0 0] [1 8 [6 [6 [3 0 12] [1 1] 1 0] [[0 12] 1 1] 0 12] 8 [1 0] 8 [1 6 [5 [1 0] 0 125] [1 0] 8 [9 348 0 63] 9 2 10 [6 [7 [0 3] 9 2 10 [125 0 251] 10 [6 4 0 6] 0 1] 7 [0 3] 8 [9 179.035 0 63] 9 2 10 [6 [7 [0 3] [0 28] 8 [9 4 0 63] 9 2 10 [6 [0 61] 0 14] 0 2] 7 [0 3] 8 [9 358.122 0 63] 9 2 10 [6 [7 [0 3] [0 28] 0 29] 0 506] 0 2] 0 2] 0 2] 9 2 0 1] 0 1] 506.013.904.830.974.705.962.590.204.844.663.393]]] name='hoon'] next=[%let type=[p=[%atom p=%number q=%.n] name='a'] val=[%atom p=[[%number p=5] q=%.n]] next=[%let type=[p=[%atom p=%number q=%.n] name='b'] val=[%atom p=[[%number p=37] q=%.n]] next=[p=[%call func=[%limb p=~[[%name p=%hoon] [%name p=%dec]]] arg=[~ [%atom p=[[%number p=43] q=%.n]]]] q=[p=[%call func=[%limb p=~[[%name p=%hoon] [%name p=%add]]] arg=[~ [p=[%atom p=[[%number p=5] q=%.n]] q=[%atom p=[[%number p=37] q=%.n]]]]] q=[p=[%call func=[%limb p=~[[%name p=%hoon] [%name p=%add]]] arg=[~ [p=[%limb p=~[[%name p=%a]]] q=[%limb p=~[[%name p=%b]]]]]] q=[p=[%call func=[%limb p=~[[%name p=%hoon] [%name p=%sub]]] arg=[~ [p=[%atom p=[[%number p=47] q=%.n]] q=[%limb p=~[[%name p=%a]]]]]] q=[%call func=[%limb p=~[[%name p=%hoon] [%name p=%lent]]] arg=[~ [%list type=[%none p=~] val=~[[%atom p=[[%number p=1] q=%.n]] [%atom p=[[%number p=2] q=%.n]] [%atom p=[[%number p=3] q=%.n]] [%atom p=[[%number p=4] q=%.n]] [%atom p=[[%number p=5] q=%.n]] [%atom p=[[%number p=6] q=%.n]] [%atom p=[[%number p=7] q=%.n]] [%atom p=[[%number p=8] q=%.n]] [%atom p=[[%number p=9] q=%.n]] [%atom p=[[%number p=10] q=%.n]] [%atom p=[[%number p=11] q=%.n]] [%atom p=[[%number p=12] q=%.n]] [%atom p=[[%number p=13] q=%.n]] [%atom p=[[%number p=14] q=%.n]] [%atom p=[[%number p=15] q=%.n]] [%atom p=[[%number p=16] q=%.n]] [%atom p=[[%number p=17] q=%.n]] [%atom p=[[%number p=18] q=%.n]] [%atom p=[[%number p=19] q=%.n]] [%atom p=[[%number p=20] q=%.n]] [%atom p=[[%number p=21] q=%.n]] [%atom p=[[%number p=22] q=%.n]] [%atom p=[[%number p=23] q=%.n]] [%atom p=[[%number p=24] q=%.n]] [%atom p=[[%number p=25] q=%.n]] [%atom p=[[%number p=26] q=%.n]] [%atom p=[[%number p=27] q=%.n]] [%atom p=[[%number p=28] q=%.n]] [%atom p=[[%number p=29] q=%.n]] [%atom p=[[%number p=30] q=%.n]] [%atom p=[[%number p=31] q=%.n]] [%atom p=[[%number p=32] q=%.n]] [%atom p=[[%number p=33] q=%.n]] [%atom p=[[%number p=34] q=%.n]] [%atom p=[[%number p=35] q=%.n]] [%atom p=[[%number p=36] q=%.n]] [%atom p=[[%number p=37] q=%.n]] [%atom p=[[%number p=38] q=%.n]] [%atom p=[[%number p=39] q=%.n]] [%atom p=[[%number p=40] q=%.n]] [%atom p=[[%number p=41] q=%.n]] [%atom p=[[%number p=42] q=%.n]] [%atom p=[[%number p=0] q=%.n]]]]]]]]]]]]] + !> (jeam:jock text) +:: +++ test-mint + %+ expect-eq:test + !> [%8 p=[%1 p=[[[8 [1 1 1] [1 8 [1 0] 8 [1 6 [5 [1 0] 0 60] [0 6] 9 2 10 [60 8 [9 179.060 0 31] 9 2 10 [6 0 124] 0 2] 10 [6 8 [9 348 0 31] 9 2 10 [6 [0 125] 0 14] 0 2] 0 1] 9 2 0 1] 0 1] [[8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [[8 [1 0 0] [1 8 [1 6 [5 [1 0] 0 29] [11 [1.851.876.717 [1 [1 1.717.658.988] 7 [0 1] 8 [1 1 115 110 97 103 45 102 97 105 108 0] 9 2 0 1] 0 1] 0 0] 6 [5 [1 0] 0 28] [0 58] 9 2 10 [14 [8 [9 179.060 0 15] 9 2 10 [6 0 60] 0 2] 0 59] 0 1] 9 2 0 1] 0 1] [[8 [1 0 0] [1 6 [5 [0 12] 0 13] [1 0] 6 [8 [9 358.123 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] [1 0] 1 1] 0 1] [8 [1 0 0] [1 6 [5 [1 0] 0 12] [10 [1 0 13] 0 12] 10 [3 9 2 10 [12 0 25] 0 1] 0 12] 0 1] 8 [1 0] [1 8 [1 0] 8 [1 6 [5 [1 0] 0 30] [0 6] 9 2 10 [30 0 61] 10 [6 4 0 6] 0 1] 9 2 0 1] 0 1] [8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [[8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [8 [8 [7 [0 7] 8 [9 5.622 0 7] 9 2 10 [6 7 [0 3] 8 [9 11.190 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 2] 9 2 10 [6 0 14] 0 2] 6 [8 [7 [0 3] 8 [1 0] [1 6 [5 [1 0] 0 6] [1 0] 8 [9 22.378 0 127] 9 23 10 [6 0 14] 0 2] 0 1] 9 2 10 [6 0 6] 0 2] [0 2] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [6 [3 0 6] [[6 [5 [1 0] 0 12] [1 0] 0 0] 8 [0 30] 9 2 10 [6 0 29] 0 2] 6 [5 [1 0] 0 6] [1 0] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] 8 [1 0 0] [1 6 [5 [1 0] 0 13] [1 0] [8 [9 358.122 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 9 2 10 [13 8 [9 11.246 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 1] 0 1] [8 [1 0 0] [1 8 [1 0 0] 8 [1 6 [6 [5 [1 0] 0 60] [6 [5 [1 0] 0 61] [1 0] 1 1] 1 1] [0 13] 9 2 10 [30 [8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] 8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] 10 [6 [4 0 12] 8 [9 348 0 31] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 179.035 0 31] 9 2 10 [6 [7 [0 3] [1 0] 0 12] 7 [0 3] 5 [8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] 0 2] 0 2] 0 1] 9 2 0 1] 0 1] [[8 [1 0 0] [1 6 [5 [1 0] 0 12] [0 13] 9 2 10 [6 [8 [9 179.060 0 7] 9 2 10 [6 0 28] 0 2] 4 0 13] 0 1] 0 1] [8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [8 [8 [7 [0 7] 8 [9 5.622 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 14] 0 2] 6 [8 [7 [0 3] 8 [1 0] [1 6 [5 [1 0] 0 6] [1 0] 8 [9 89.518 0 127] 9 11 10 [6 0 14] 0 2] 0 1] 9 2 10 [6 0 6] 0 2] [0 2] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [[8 [1 0] [1 8 [6 [3 0 6] [[8 [7 [0 7] 9 11.196 0 1] 9 2 10 [6 0 28] 0 2] 8 [7 [0 7] 9 89.535 0 1] 9 2 10 [6 0 29] 0 2] 8 [7 [0 7] 9 11.196 0 1] 9 2 10 [6 0 14] 0 2] 8 [5 [0 14] 0 2] 0 6] 0 1] [[8 [1 0 0] [1 8 [1 6 [5 [1 0] 0 28] [0 29] 6 [5 [1 0] 0 29] [1 0] 9 2 10 [14 [8 [9 179.060 0 15] 9 2 10 [6 0 60] 0 2] 0 59] 0 1] 9 2 0 1] 0 1] [8 [7 [8 [9 5.622 0 1] 9 2 10 [6 7 [0 3] 7 [9 11.190 0 1] 9 2 0 1] 0 2] 9 2 0 1] 7 [0 1] [1 [8 [1 0 0] [1 8 [1 6 [5 [1 0] 0 62] [[[0 28] 0 29] 1 0 0] 6 [5 [0 28] 0 248] [6 [5 [0 29] 0 249] [0 62] 10 [2 [0 28] 0 29] 0 62] 6 [8 [9 92 0 63] 9 2 10 [6 [0 60] 0 504] 0 2] [8 [9 2 10 [62 0 250] 0 1] 6 [3 0 2] [6 [8 [9 190 0 127] 9 2 10 [6 [0 1.016] 0 24] 0 2] [10 [6 0 2] 0 126] 10 [7 10 [6 0 11] 0 126] 0 2] 0 0] 8 [9 2 10 [62 0 251] 0 1] 6 [3 0 2] [6 [8 [9 190 0 127] 9 2 10 [6 [0 1.016] 0 24] 0 2] [10 [7 0 2] 0 126] 10 [6 10 [7 0 10] 0 126] 0 2] 0 0] 9 2 0 1] 0 1] [8 [1 0] [1 8 [1 6 [5 [1 0] 0 62] [1 0] 6 [5 [0 14] 0 248] [8 [1 6 [5 [1 0] 0 506] [0 507] 6 [5 [1 0] 0 507] [0 506] 6 [8 [9 190 0 127] 9 2 10 [6 [0 4.072] 0 4.076] 0 2] [10 [7 9 2 10 [506 0 2.027] 0 1] 0 506] 10 [6 9 2 10 [507 0 2.030] 0 1] 0 507] 9 2 0 1] 6 [8 [9 92 0 63] 9 2 10 [6 [0 30] 0 504] 0 2] [10 [6 9 2 10 [62 0 250] 0 1] 0 62] 10 [7 9 2 10 [62 0 251] 0 1] 0 62] 9 2 0 1] 0 1] [8 [1 0] [1 7 [10 [6 0 6] 0 1] 8 [1 6 [5 [1 0] 0 62] [1 0] 6 [5 [0 14] 0 248] [[1 0] 0 249] 6 [8 [9 92 0 63] 9 2 10 [6 [0 30] 0 504] 0 2] [9 2 10 [62 0 250] 0 1] 9 2 10 [62 0 251] 0 1] 9 2 0 1] 0 1] 7 [8 [[7 [7 [9 1.374 0 7] 9 2 0 1] 9 2 0 1] 7 [7 [9 1.374 0 7] 9 2 0 1] 9 2 0 1] [1 6 [5 [1 0] 0 30] [1 0] 6 [6 [5 [1 0] 0 12] [1 0] 6 [8 [9 92 0 31] 9 2 10 [6 [0 248] 0 57] 0 2] [6 [6 [5 [0 120] 0 25] [1 1] 1 0] [1 0] 1 1] 1 1] [6 [6 [5 [1 0] 0 13] [1 0] 6 [8 [9 92 0 31] 9 2 10 [6 [0 59] 0 248] 0 2] [6 [6 [5 [0 27] 0 120] [1 1] 1 0] [1 0] 1 1] 1 1] [6 [6 [5 [1 0] 0 122] [1 0] 6 [8 [9 190 0 31] 9 2 10 [6 [0 248] 0 1.000] 0 2] [6 [6 [5 [0 120] 0 488] [1 1] 1 0] [6 [9 2 10 [30 0 122] 10 [12 [1 0] 0 120] 0 1] [1 0] 1 1] 1 1] 1 1] [6 [6 [5 [1 0] 0 123] [1 0] 6 [8 [9 190 0 31] 9 2 10 [6 [0 248] 0 1.004] 0 2] [6 [6 [5 [0 120] 0 492] [1 1] 1 0] [6 [9 2 10 [30 0 123] 10 [13 [1 0] 0 120] 0 1] [1 0] 1 1] 1 1] 1 1] [1 0] 1 1] 1 1] 1 1] 1 1] 0 1] 9 2 0 1] 0 1] [[8 [1 1 1] [1 [8 [9 44.764 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 8 [9 6.014 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 1] [8 [7 [8 [9 5.622 0 1] 9 2 10 [6 7 [0 3] 8 [9 11.190 0 1] 9 2 10 [6 [7 [0 3] 8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 7 [0 3] 7 [9 5.622 0 1] 9 2 0 1] 0 2] 0 2] 9 2 0 1] [1 [8 [1 0 0] [1 8 [8 [9 11 0 7] 9 2 10 [6 0 28] 0 2] 8 [8 [9 22.378 0 63] 9 4 10 [6 0 126] 0 2] 9 2 10 [6 [0 60] 7 [0 3] 8 [8 [9 89.518 0 63] 9 4 10 [6 0 6] 0 2] 9 2 10 [6 0 61] 0 2] 0 2] 0 1] [8 [1 0 0] [1 8 [8 [9 11 0 7] 9 2 10 [6 0 28] 0 2] 8 [8 [8 [9 89.518 0 63] 9 10 10 [6 0 6] 0 2] 9 2 10 [6 0 61] 0 2] 6 [5 [1 0] 0 2] [8 [8 [9 22.378 0 127] 9 10 10 [6 0 254] 0 2] 9 2 10 [6 0 124] 0 2] 8 [8 [9 22.378 0 127] 9 4 10 [6 0 254] 0 2] 9 2 10 [6 [0 124] 0 6] 0 2] 0 1] 8 [1 0] [1 8 [8 [8 [9 22.378 0 31] 9 22 10 [6 0 62] 0 2] 9 2 10 [6 0 14] 0 2] 6 [5 [1 0] 0 2] [1 0] 0 5] 0 1] 0 1] 8 [1 0 0] [1 8 [6 [6 [3 0 12] [1 1] 1 0] [[0 12] 1 1] 0 12] 8 [9 4 0 15] 9 2 10 [6 [0 61] 7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 7 [0 3] 8 [9 4 0 15] 9 2 10 [6 [7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 0 12] 0 2] 0 13] 0 2] 0 2] 0 2] 0 1] [8 [7 [7 [9 5.622 0 1] 9 2 0 1] 9 2 0 1] [1 [8 [1 0] [1 8 [1 6 [5 [1 0] 0 62] [[0 14] 1 0 0] 6 [5 [0 14] 0 124] [0 62] 6 [8 [9 92 0 63] 9 2 10 [6 [0 30] 0 252] 0 2] [8 [9 2 10 [62 0 250] 0 1] 6 [3 0 2] [6 [8 [9 190 0 127] 9 2 10 [6 [0 508] 0 12] 0 2] [10 [6 0 2] 0 126] 10 [7 10 [6 0 11] 0 126] 0 2] 0 0] 8 [9 2 10 [62 0 251] 0 1] 6 [3 0 2] [6 [8 [9 190 0 127] 9 2 10 [6 [0 508] 0 12] 0 2] [10 [7 0 2] 0 126] 10 [6 10 [7 0 10] 0 126] 0 2] 0 0] 9 2 0 1] 0 1] [8 [1 0] [1 8 [1 6 [5 [1 0] 0 62] [1 0] 6 [5 [0 14] 0 124] [8 [1 6 [5 [1 0] 0 506] [0 507] 6 [5 [1 0] 0 507] [0 506] 6 [8 [9 190 0 127] 9 2 10 [6 [0 2.036] 0 2.038] 0 2] [10 [7 9 2 10 [506 0 2.027] 0 1] 0 506] 10 [6 9 2 10 [507 0 2.030] 0 1] 0 507] 9 2 0 1] 6 [8 [9 92 0 63] 9 2 10 [6 [0 30] 0 252] 0 2] [10 [6 9 2 10 [62 0 250] 0 1] 0 62] 10 [7 9 2 10 [62 0 251] 0 1] 0 62] 9 2 0 1] 0 1] 7 [8 [[7 [7 [9 1.374 0 7] 9 2 0 1] 9 2 0 1] 7 [7 [9 1.374 0 7] 9 2 0 1] 9 2 0 1] [1 6 [5 [1 0] 0 30] [1 0] 6 [6 [5 [1 0] 0 12] [1 0] 8 [9 92 0 31] 9 2 10 [6 [0 124] 0 57] 0 2] [6 [6 [5 [1 0] 0 13] [1 0] 8 [9 92 0 31] 9 2 10 [6 [0 59] 0 124] 0 2] [6 [6 [5 [1 0] 0 122] [1 0] 6 [8 [9 190 0 31] 9 2 10 [6 [0 124] 0 500] 0 2] [6 [9 2 10 [30 0 122] 10 [12 [1 0] 0 60] 0 1] [1 0] 1 1] 1 1] [6 [6 [5 [1 0] 0 123] [1 0] 6 [8 [9 190 0 31] 9 2 10 [6 [0 124] 0 502] 0 2] [6 [9 2 10 [30 0 123] 10 [13 [1 0] 0 60] 0 1] [1 0] 1 1] 1 1] [1 0] 1 1] 1 1] 1 1] 1 1] 0 1] 9 2 0 1] 0 1] 8 [1 0] [1 7 [10 [6 8 [9 22.395 0 7] 9 2 10 [6 0 14] 0 2] 0 1] 8 [1 0] 8 [1 6 [5 [1 0] 0 30] [0 6] 9 2 10 [30 0 61] 10 [6 [0 60] 0 6] 0 1] 9 2 0 1] 0 1] [8 [[8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [[0 50] 0 54] [1 8 [[8 [0 60] 9 2 10 [6 0 28] 0 2] 8 [0 61] 9 2 10 [6 0 29] 0 2] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [[8 [1 1 1] [1 11 [1.851.876.717 [1 [1 1.717.658.988] 7 [0 1] 8 [1 1 100 105 118 105 100 101 45 98 121 45 122 101 114 111 0] 9 2 0 1] 0 1] 6 [5 [1 0] 0 13] [0 0] 8 [1 0] 8 [1 6 [8 [9 358.123 0 31] 9 2 10 [6 [0 124] 0 125] 0 2] [0 6] 9 2 10 [60 8 [9 3.061 0 31] 9 2 10 [6 [0 124] 0 125] 0 2] 10 [6 4 0 6] 0 1] 9 2 0 1] 0 1] [[8 [1 0] [1 11 [1.851.876.717 [1 [1 1.717.658.988] 7 [0 1] 8 [1 1 100 101 99 114 101 109 101 110 116 45 117 110 100 101 114 102 108 111 119 0] 9 2 0 1] 0 1] 6 [5 [1 0] 0 6] [0 0] 8 [1 0] 8 [1 6 [5 [0 30] 4 0 6] [0 6] 9 2 10 [6 4 0 6] 0 1] 9 2 0 1] 0 1] [8 [1 0 0] [1 8 [6 [6 [3 0 12] [1 1] 1 0] [[0 12] 1 1] 0 12] 8 [9 6.014 0 15] 9 2 10 [6 [0 61] 7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 7 [0 3] 8 [9 4 0 15] 9 2 10 [6 [7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 0 12] 0 2] 0 13] 0 2] 0 2] 0 2] 0 1] 8 [1 0 0] [1 6 [6 [5 [0 12] 0 13] [1 1] 1 0] [6 [8 [1 6 [5 [1 0] 0 28] [1 0] 6 [6 [6 [5 [1 0] 0 29] [1 1] 1 0] [6 [9 2 10 [14 [8 [9 179.060 0 15] 9 2 10 [6 0 60] 0 2] 8 [9 179.060 0 15] 9 2 10 [6 0 61] 0 2] 0 1] [1 0] 1 1] 1 1] [1 0] 1 1] 9 2 0 1] [1 0] 1 1] 1 1] 0 1] 8 [1 0 0] [1 8 [[6 [6 [3 0 12] [1 1] 1 0] [0 12] 0 0] 6 [6 [3 0 13] [1 1] 1 0] [0 13] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0 0] [1 8 [1 0] 8 [1 6 [5 [1 0] 0 61] [0 6] 9 2 10 [61 8 [9 11.246 0 31] 9 2 10 [6 [0 124] 0 125] 0 2] 10 [6 4 0 6] 0 1] 9 2 0 1] 0 1] 8 [1 0] [1 8 [7 [0 7] 1 1] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0 0] [1 8 [1 0 0] 8 [1 6 [6 [5 [1 0] 0 60] [6 [5 [1 0] 0 61] [1 0] 1 1] 1 1] [0 13] 9 2 10 [30 [8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] 8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] 10 [6 [4 0 12] 8 [9 348 0 31] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 179.035 0 31] 9 2 10 [6 [7 [0 3] [1 0] 0 12] 7 [0 3] 6 [5 [1 0] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] [6 [5 [1 0] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] [1 0] 1 1] 1 1] 0 2] 0 2] 0 1] 9 2 0 1] 0 1] [[8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0] [1 6 [5 [1 0] 0 6] [1 1] 8 [9 4 0 7] 9 2 10 [6 [7 [0 3] 1 2] 7 [0 3] 9 2 10 [6 8 [9 179.060 0 7] 9 2 10 [6 0 14] 0 2] 0 1] 0 2] 0 1] 8 [1 0] [1 0 6] 0 1] [8 [1 0 [1 1] 0] [1 8 [9 358.122 0 7] 9 2 10 [6 [7 [0 3] [0 12] 0 53] 7 [0 3] 8 [9 11.246 0 7] 9 2 10 [6 [7 [0 3] [0 12] 0 52] 0 59] 0 2] 0 2] 0 1] [8 [1 0] [1 8 [1 [6 [6 [3 0 14] [1 1] 1 0] [8 [9 5 0 1] 9 2 10 [6 [7 [0 3] 1 3.405.691.582] [7 [0 3] 1 32.767] 0 30] 0 2] 8 [8 [9 22 0 15] 9 2 10 [6 [7 [0 3] 1 5] [7 [0 3] 9 4 10 [14 0 28] 0 1] 7 [0 3] 9 4 10 [14 0 29] 0 1] 0 2] 8 [9 5 0 3] 9 2 10 [6 [7 [0 3] 1 3.735.928.559] [7 [0 3] 1 65.534] 0 6] 0 2] 8 [1 0 0 0] [1 8 [8 [9 89.534 0 63] 9 2 10 [6 [7 [0 3] 1 3] 0 59] 0 2] 8 [1 0] 8 [1 6 [5 [1 8] 0 6] [0 250] 8 [8 [9 764 0 511] 9 2 10 [6 [0 252] [0 30] 0 507] 0 2] 8 [8 [9 86 0 1.023] 9 2 10 [6 [7 [0 3] 8 [9 11.246 0 1.023] 9 2 10 [6 [7 [0 3] 1 0 31] 0 6] 0 2] 7 [0 3] 8 [9 358.122 0 1.023] 9 2 10 [6 [7 [0 3] 1 0 31] 0 6] 0 2] 0 2] 6 [5 [1 0] 0 2] [9 2 10 [124 4 0 508] 10 [6 4 0 30] 0 7] 0 2] 9 2 0 1] 0 1] 9 4 0 1] 0 1] 8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0 0] [1 8 [1 0 0] 8 [1 6 [6 [5 [1 0] 0 60] [1 0] 6 [5 [1 0] 0 61] [1 0] 1 1] [0 13] 9 2 10 [30 [8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] 8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] 10 [6 [4 0 12] 8 [9 348 0 31] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 179.035 0 31] 9 2 10 [6 [7 [0 3] [1 0] 0 12] 7 [0 3] 6 [5 [1 0] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] [1 0] 6 [5 [1 0] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] [1 0] 1 1] 0 2] 0 2] 0 1] 9 2 0 1] 0 1] [[8 [1 0 0] [1 8 [9 383 0 7] 9 2 10 [6 [0 28] 7 [0 3] 8 [9 89.519 0 7] 9 2 10 [6 7 [0 3] 8 [9 1.375 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 2] 0 2] 0 1] [8 [1 0] [1 8 [9 89.534 0 7] 9 2 10 [6 [7 [0 3] 1 0] 0 14] 0 2] 0 1] [8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [6 [3 0 6] [[8 [0 30] 9 2 10 [6 0 28] 0 2] [8 [7 [0 7] 8 [9 5.622 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 58] 0 2] 8 [7 [0 7] 8 [9 5.622 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 59] 0 2] 6 [5 [1 0] 0 6] [1 0] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [8 [1 0 0] [1 8 [6 [6 [3 0 12] [1 1] 1 0] [[0 12] 1 1] 0 12] 8 [9 44.764 0 15] 9 2 10 [6 [0 61] 7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 7 [0 3] 8 [9 4 0 15] 9 2 10 [6 [7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 0 12] 0 2] 0 13] 0 2] 0 2] 0 2] 0 1] [8 [1 0] [1 6 [5 [1 0] 0 6] [1 0 0] 8 [[8 [9 44.764 0 7] 9 2 10 [6 [7 [0 3] 8 [9 179.060 0 7] 9 2 10 [6 7 [0 3] 8 [9 2.810 0 7] 9 2 10 [6 0 14] 0 2] 0 2] 7 [0 3] 1 2] 0 2] 1 0] 8 [8 [1 8 [8 [9 348 0 31] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 22.394 0 31] 9 2 10 [6 0 28] 0 2] 0 2] 8 [8 [9 4 0 63] 9 2 10 [6 [0 6] 0 6] 0 2] 6 [5 [0 60] 1 0] [6 [8 [9 340 0 127] 9 2 10 [6 [0 6] 0 254] 0 2] [[0 6] 0 2] [0 61] 8 [9 4 0 127] 9 2 10 [6 [0 125] 0 125] 0 2] 6 [8 [9 340 0 127] 9 2 10 [6 [0 6] 0 254] 0 2] [9 2 10 [6 [8 [9 179.060 0 127] 9 2 10 [6 0 124] 0 2] 0 6] 0 7] 9 2 10 [12 8 [9 179.060 0 127] 9 2 10 [6 0 124] 0 2] 0 7] 9 2 0 1] [0 4] 8 [9 3.061 0 31] 9 2 10 [6 [0 62] 0 13] 0 2] 0 1] [8 [1 0 0] [1 [8 [1 6 [5 [1 0] 0 29] [1 0] 8 [9 348 0 15] 9 2 10 [6 [0 244] 7 [0 3] 9 2 10 [29 0 59] 0 1] 0 2] 9 2 0 1] 8 [9 6.015 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 1] [8 [1 0 0] [1 6 [5 [0 12] 0 13] [1 0] 8 [1 0] 8 [1 6 [5 [0 6] 1 2] [8 [9 340 0 31] 9 2 10 [6 [0 124] 0 125] 0 2] 8 [[8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 3] 0 124] 0 2] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 3] 0 125] 0 2] 6 [5 [0 4] 0 5] [9 2 10 [30 [8 [9 11.246 0 63] 9 2 10 [6 [7 [0 3] 1 3] 0 252] 0 2] 8 [9 11.246 0 63] 9 2 10 [6 [7 [0 3] 1 3] 0 253] 0 2] 10 [6 4 0 14] 0 3] 8 [9 358.123 0 63] 9 2 10 [6 [0 12] 0 13] 0 2] 9 2 0 1] 0 1] 8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [1 0 0] [1 6 [8 [9 340 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] [1 1] 1 0] 0 1] [8 [1 0 0 0] [1 8 [9 348 0 7] 9 2 10 [6 [7 [0 3] 8 [9 179.035 0 7] 9 2 10 [6 [7 [0 3] [0 12] 8 [9 89.534 0 7] 9 2 10 [6 [0 28] 0 58] 0 2] 0 59] 0 2] 0 58] 0 2] 0 1] [[8 [1 0 0] [1 8 [[8 [9 22.398 0 7] 9 2 10 [6 0 28] 0 2] 8 [9 22.398 0 7] 9 2 10 [6 0 29] 0 2] 6 [5 [0 4] 0 5] [8 [9 374 0 15] 9 2 10 [6 [0 60] 0 61] 0 2] 8 [9 358.123 0 15] 9 2 10 [6 [0 12] 0 13] 0 2] 0 1] [8 [1 0 0] [1 8 [1 6 [5 [1 0] 0 28] [1 0] [0 29] 9 2 10 [28 8 [9 179.060 0 15] 9 2 10 [6 0 60] 0 2] 0 1] 9 2 0 1] 0 1] [8 [1 0 0] [1 6 [5 [0 12] 0 13] [1 0] 6 [6 [3 0 12] [1 1] 1 0] [6 [6 [3 0 13] [1 1] 1 0] [8 [9 358.123 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 1 0] 6 [6 [3 0 13] [1 1] 1 0] [1 1] 6 [5 [0 24] 0 26] [9 2 10 [6 [0 25] 0 27] 0 1] 9 2 10 [6 [0 24] 0 26] 0 1] 0 1] [8 [[8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [9 686 0 7] 9 2 10 [6 [0 28] 7 [0 3] 8 [9 698 0 7] 9 2 10 [6 0 29] 0 2] 0 2] 0 1] [8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [[0 26] 7 [8 [9 3.060 0 7] 9 2 10 [6 0 14] 0 2] 0 6] [1 8 [[8 [0 30] 9 2 10 [6 0 28] 0 2] 8 [7 [0 7] 8 [9 3.060 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 29] 0 2] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [8 [[7 [9 89.983 0 1] 9 2 0 1] 7 [9 89.983 0 1] 9 2 0 1] [1 8 [1 8 [[0 114] 0 118] [1 8 [[8 [0 124] 9 2 10 [6 0 28] 0 2] 8 [0 125] 9 2 10 [6 0 29] 0 2] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [7 [[[7 [0 28] 9 2 0 1] 7 [0 28] 9 2 0 1] 1 0] 8 [0 2] [1 0 15] 0 1] [1 [1 [8 [[7 [8 [9 5.622 0 127] 9 2 10 [6 7 [0 3] 9 2 0 15] 0 2] 9 2 0 1] [7 [0 252] 9 2 0 1] 7 [0 253] 9 2 0 1] [1 6 [5 [1 0] 0 12] [[[0 26] 0 27] 1 0 0] 6 [5 [0 48] 0 26] [10 [5 0 27] 0 12] 6 [8 [0 62] 9 2 10 [6 [0 58] 0 112] 0 2] [8 [9 2 10 [12 0 50] 0 1] 6 [3 0 2] [6 [8 [9 190 0 1.023] 9 2 10 [6 [0 240] 0 24] 0 2] [10 [6 0 2] 0 28] 10 [7 10 [6 0 11] 0 28] 0 2] 0 0] 8 [9 2 10 [12 0 51] 0 1] 6 [3 0 2] [6 [8 [9 190 0 1.023] 9 2 10 [6 [0 240] 0 24] 0 2] [10 [7 0 2] 0 28] 10 [6 10 [7 0 10] 0 28] 0 2] 0 0] 0 1] [8 [[7 [8 [9 5.622 0 127] 9 2 10 [6 7 [0 3] 9 2 0 15] 0 2] 9 2 0 1] 7 [0 252] 9 2 0 1] [1 6 [5 [1 0] 0 12] [1 0] 6 [5 [0 13] 0 48] [[1 0] 0 49] 6 [8 [0 62] 9 2 10 [6 [0 29] 0 112] 0 2] [9 2 10 [12 0 50] 0 1] 9 2 10 [12 0 51] 0 1] 0 1] [8 [1 0] [1 8 [[7 [8 [9 1.374 0 511] 9 2 10 [6 0 2.044] 0 2] 9 2 0 1] 7 [8 [9 1.374 0 511] 9 2 10 [6 0 2.044] 0 2] 9 2 0 1] 8 [1 6 [5 [1 0] 0 30] [1 0] 6 [6 [5 [1 0] 0 12] [1 0] 8 [0 254] 9 2 10 [6 [0 248] 0 57] 0 2] [6 [6 [5 [1 0] 0 13] [1 0] 8 [0 254] 9 2 10 [6 [0 59] 0 248] 0 2] [6 [6 [5 [1 0] 0 122] [1 0] 6 [8 [9 190 0 2.047] 9 2 10 [6 [0 248] 0 1.000] 0 2] [6 [9 2 10 [30 0 122] 10 [12 [1 0] 0 120] 0 1] [1 0] 1 1] 1 1] [6 [6 [5 [1 0] 0 123] [1 0] 6 [8 [9 190 0 2.047] 9 2 10 [6 [0 248] 0 1.004] 0 2] [6 [9 2 10 [30 0 123] 10 [13 [1 0] 0 120] 0 1] [1 0] 1 1] 1 1] [1 0] 1 1] 1 1] 1 1] 1 1] 9 2 0 1] 0 1] 8 [[7 [8 [9 5.622 0 127] 9 2 10 [6 7 [0 3] 9 2 0 15] 0 2] 9 2 0 1] 7 [0 252] 9 2 0 1] [1 6 [5 [1 0] 8 [9 10 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] [1 1] 1 0] 0 1] 0 1] 0 1] 0 1] [8 [1 1 1] [1 6 [5 [1 0] 0 13] [0 0] 8 [9 3.061 0 7] 9 2 10 [6 [0 28] 7 [0 3] 8 [9 4 0 7] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 44.764 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 2] 0 2] 0 1] 8 [1 0 0] [1 6 [5 [1 0] 0 13] [1 0] 8 [9 348 0 7] 9 2 10 [6 [7 [0 3] 8 [9 358.122 0 7] 9 2 10 [6 [7 [0 3] [0 12] 0 52] 0 117] 0 2] 7 [0 3] 8 [9 179.035 0 7] 9 2 10 [6 [7 [0 3] [0 12] 0 52] 7 [0 3] 9 2 10 [13 0 27] 0 1] 0 2] 0 2] 0 1] [8 [1 0 0] [1 6 [8 [9 358.123 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] [1 1] 1 0] 0 1] [8 [1 0 0] [1 8 [[8 [9 22.398 0 7] 9 2 10 [6 7 [0 3] 8 [9 22.398 0 7] 9 2 10 [6 0 28] 0 2] 0 2] 8 [9 22.398 0 7] 9 2 10 [6 7 [0 3] 8 [9 22.398 0 7] 9 2 10 [6 0 29] 0 2] 0 2] 6 [5 [0 4] 0 5] [8 [9 374 0 15] 9 2 10 [6 [0 60] 0 61] 0 2] 8 [9 358.123 0 15] 9 2 10 [6 [0 12] 0 13] 0 2] 0 1] [[8 [8 [9 3.063 0 1] 10 [6 7 [0 3] 1 5] 0 2] 8 [1 0 0 0] [1 7 [10 [12 8 [9 358.122 0 59] 9 2 10 [6 [7 [0 3] 1 5] 0 28] 0 2] 0 1] 8 [8 [9 3.061 0 59] 9 2 10 [6 [0 58] 7 [0 3] 8 [9 89.534 0 59] 9 2 10 [6 [7 [0 3] 1 3] 0 59] 0 2] 0 2] 8 [8 [9 682 0 123] 9 2 10 [6 [7 [0 3] 8 [9 1.375 0 123] 9 2 10 [6 [7 [0 3] 1 3] 0 123] 0 2] 7 [0 3] 8 [9 186 0 123] 9 2 10 [6 [0 6] 7 [0 3] 1 0] 0 2] 0 2] 8 [8 [9 44.764 0 251] 9 2 10 [6 [0 250] 7 [0 3] 1 4] 0 2] 8 [0 124] 8 [1 3.432.918.353 461.845.907] 8 [8 [9 1.375 0 2.043] 9 2 10 [6 [7 [0 3] 1 5] 0 2.043] 0 2] 8 [0 30] 7 [10 [30 8 [0 30] 8 [1 6 [5 [1 0] 0 14] [0 6] 8 [8 [9 84 0 32.763] 9 2 10 [6 [7 [0 3] 8 [9 3.061 0 32.763] 9 2 10 [6 [0 510] 0 30] 0 2] 0 62] 0 2] 7 [10 [2 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 6] 0 508] 0 2] 0 2] 0 1] 7 [10 [2 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 15] 0 6] 0 2] 0 1] 7 [10 [2 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 6] 0 509] 0 2] 0 2] 0 1] 7 [10 [14 8 [9 86 0 65.531] 9 2 10 [6 [0 30] 0 6] 0 2] 0 1] 7 [10 [14 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 13] 0 30] 0 2] 0 1] 7 [10 [14 8 [9 4 0 16.382] 9 2 10 [6 [7 [0 3] 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 30] 7 [0 3] 1 5] 0 2] 0 2] 7 [0 3] 1 3.864.292.196] 0 2] 0 1] 9 2 10 [14 8 [9 179.060 0 65.531] 9 2 10 [6 0 62] 0 2] 0 3] 9 2 0 1] 0 1] 8 [8 [9 11.188 0 8.187] 9 2 10 [6 [7 [0 3] 8 [9 4 0 8.187] 9 2 10 [6 [7 [0 3] 1 4] 0 126] 0 2] 0 254] 0 2] 8 [1 0] 8 [8 [9 350 0 32.763] 9 2 10 [6 [0 32.762] 7 [0 3] 1 3] 0 2] 7 [10 [254 6 [5 [1 3] 0 2] [7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 179.035 0 65.531] 9 2 10 [6 [7 [0 3] 1 0 16] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 2] 0 30] 0 2] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 179.035 0 65.531] 9 2 10 [6 [7 [0 3] 1 0 8] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 1] 0 30] 0 2] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 0] 0 30] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 508] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 15] 0 14] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 509] 0 2] 0 2] 0 1] 8 [9 86 0 65.531] 9 2 10 [6 [0 510] 0 14] 0 2] 6 [5 [1 2] 0 2] [7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 179.035 0 65.531] 9 2 10 [6 [7 [0 3] 1 0 8] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 1] 0 30] 0 2] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 0] 0 30] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 508] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 15] 0 14] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 509] 0 2] 0 2] 0 1] 8 [9 86 0 65.531] 9 2 10 [6 [0 510] 0 14] 0 2] 6 [5 [1 1] 0 2] [7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 0] 0 30] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 508] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 15] 0 14] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 509] 0 2] 0 2] 0 1] 8 [9 86 0 65.531] 9 2 10 [6 [0 510] 0 14] 0 2] 11 [1.936.945.012 1 0] 0 254] 0 1] 7 [10 [254 8 [9 86 0 65.531] 9 2 10 [6 [0 510] 0 65.530] 0 2] 0 1] 8 [1 [8 [9 5 0 1] 9 2 10 [6 0 1.022] 0 2] 8 [1 0] [1 7 [10 [6 8 [9 86 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 11.246 0 524.283] 9 2 10 [6 [7 [0 3] 1 0 16] 0 14] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 131.070] 9 2 10 [6 7 [0 3] 8 [9 4 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 1 2.246.822.507] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 11.246 0 524.283] 9 2 10 [6 [7 [0 3] 1 0 13] 0 14] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 131.070] 9 2 10 [6 7 [0 3] 8 [9 4 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 1 3.266.489.909] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 11.246 0 524.283] 9 2 10 [6 [7 [0 3] 1 0 16] 0 14] 0 2] 0 2] 0 1] 0 6] 0 1] 9 4 0 1] 0 1] [[8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [6 [3 0 6] [[8 [0 30] 9 2 10 [6 0 28] 0 2] 8 [7 [0 7] 8 [9 3.060 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 29] 0 2] 6 [5 [1 0] 0 6] [1 0] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] 8 [1 0 0] [1 11 [1.851.876.717 [1 [1 1.717.658.988] 7 [0 1] 8 [1 1 115 117 98 116 114 97 99 116 45 117 110 100 101 114 102 108 111 119 0] 9 2 0 1] 0 1] 6 [5 [1 0] 0 13] [0 12] 9 2 10 [6 [8 [9 179.060 0 7] 9 2 10 [6 0 28] 0 2] 8 [9 179.060 0 7] 9 2 10 [6 0 29] 0 2] 0 1] 0 1] [8 [1 0 0] [1 6 [5 [0 13] 1 0] [1 1] 8 [1 6 [5 [0 29] 1 1] [0 28] 8 [9 2 10 [29 8 [9 44.764 0 15] 9 2 10 [6 [0 61] 7 [0 3] 1 2] 0 2] 0 1] 8 [8 [9 4 0 31] 9 2 10 [6 [0 6] 0 6] 0 2] 8 [8 [9 350 0 63] 9 2 10 [6 [0 253] 7 [0 3] 1 1] 0 2] 6 [5 [1 0] 0 2] [0 6] 7 [0 3] 8 [9 4 0 63] 9 2 10 [6 [0 6] 0 252] 0 2] 9 2 0 1] 0 1] 8 [1 0] [1 [8 [1 0 0] [1 8 [9 11 0 7] 9 2 10 [6 7 [0 3] 8 [9 348 0 31] 9 2 10 [6 [0 28] 0 29] 0 2] 0 2] 0 1] [8 [1 0 0 0] [1 8 [8 [9 11 0 7] 9 2 10 [6 0 59] 0 2] 8 [8 [9 22.394 0 63] 9 2 10 [6 7 [0 3] 8 [9 3.061 0 63] 9 2 10 [6 [0 126] 0 60] 0 2] 0 2] 8 [8 [9 6.014 0 127] 9 2 10 [6 [0 250] 0 6] 0 2] 8 [9 11 0 63] 9 2 10 [6 7 [0 3] 8 [9 2.798 0 255] 9 2 10 [6 [7 [0 3] 8 [9 179.035 0 255] 9 2 10 [6 [7 [0 3] [0 124] 0 2] 0 30] 0 2] 7 [0 3] 8 [9 11.246 0 255] 9 2 10 [6 [7 [0 3] [0 124] 8 [9 3.061 0 255] 9 2 10 [6 [0 14] 0 6] 0 2] 0 30] 0 2] 0 2] 0 2] 0 1] 8 [1 0] [1 8 [9 358.122 0 31] 9 2 10 [6 [0 62] 0 14] 0 2] 0 1] 0 1] 8 [1 0 0] [1 8 [6 [6 [3 0 12] [1 1] 1 0] [[0 12] 1 1] 0 12] 8 [1 0] 8 [1 6 [5 [1 0] 0 125] [1 0] 8 [9 348 0 63] 9 2 10 [6 [7 [0 3] 9 2 10 [125 0 251] 10 [6 4 0 6] 0 1] 7 [0 3] 8 [9 179.035 0 63] 9 2 10 [6 [7 [0 3] [0 28] 8 [9 4 0 63] 9 2 10 [6 [0 61] 0 14] 0 2] 7 [0 3] 8 [9 358.122 0 63] 9 2 10 [6 [7 [0 3] [0 28] 0 29] 0 506] 0 2] 0 2] 0 2] 9 2 0 1] 0 1] 506.013.904.830.974.705.962.590.204.844.663.393]] q=[%8 p=[%1 p=5] q=[%8 p=[%1 p=37] q=[p=[%8 p=[%9 p=179.060 q=[%0 p=14]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=43]]] q=[%0 p=2]]]] q=[p=[%8 p=[%9 p=348 q=[%0 p=14]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=5] q=[%1 p=37]]]] q=[%0 p=2]]]] q=[p=[%8 p=[%9 p=348 q=[%0 p=14]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%0 p=6] q=[%0 p=2]]]] q=[%0 p=2]]]] q=[p=[%8 p=[%9 p=3.061 q=[%0 p=14]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=47] q=[%0 p=6]]]] q=[%0 p=2]]]] q=[%8 p=[%9 p=683 q=[%0 p=14]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=1] q=[p=[%1 p=2] q=[p=[%1 p=3] q=[p=[%1 p=4] q=[p=[%1 p=5] q=[p=[%1 p=6] q=[p=[%1 p=7] q=[p=[%1 p=8] q=[p=[%1 p=9] q=[p=[%1 p=10] q=[p=[%1 p=11] q=[p=[%1 p=12] q=[p=[%1 p=13] q=[p=[%1 p=14] q=[p=[%1 p=15] q=[p=[%1 p=16] q=[p=[%1 p=17] q=[p=[%1 p=18] q=[p=[%1 p=19] q=[p=[%1 p=20] q=[p=[%1 p=21] q=[p=[%1 p=22] q=[p=[%1 p=23] q=[p=[%1 p=24] q=[p=[%1 p=25] q=[p=[%1 p=26] q=[p=[%1 p=27] q=[p=[%1 p=28] q=[p=[%1 p=29] q=[p=[%1 p=30] q=[p=[%1 p=31] q=[p=[%1 p=32] q=[p=[%1 p=33] q=[p=[%1 p=34] q=[p=[%1 p=35] q=[p=[%1 p=36] q=[p=[%1 p=37] q=[p=[%1 p=38] q=[p=[%1 p=39] q=[p=[%1 p=40] q=[p=[%1 p=41] q=[p=[%1 p=42] q=[%1 p=0]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] q=[%0 p=2]]]]]]]]]]] + !> +>:(mint:jock text) +:: +++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) + %+ expect-eq:test + !> .* 0 + :+ %8 + +.p + [%8 p=[%1 p=[[[8 [1 1 1] [1 8 [1 0] 8 [1 6 [5 [1 0] 0 60] [0 6] 9 2 10 [60 8 [9 179.060 0 31] 9 2 10 [6 0 124] 0 2] 10 [6 8 [9 348 0 31] 9 2 10 [6 [0 125] 0 14] 0 2] 0 1] 9 2 0 1] 0 1] [[8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [[8 [1 0 0] [1 8 [1 6 [5 [1 0] 0 29] [11 [1.851.876.717 [1 [1 1.717.658.988] 7 [0 1] 8 [1 1 115 110 97 103 45 102 97 105 108 0] 9 2 0 1] 0 1] 0 0] 6 [5 [1 0] 0 28] [0 58] 9 2 10 [14 [8 [9 179.060 0 15] 9 2 10 [6 0 60] 0 2] 0 59] 0 1] 9 2 0 1] 0 1] [[8 [1 0 0] [1 6 [5 [0 12] 0 13] [1 0] 6 [8 [9 358.123 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] [1 0] 1 1] 0 1] [8 [1 0 0] [1 6 [5 [1 0] 0 12] [10 [1 0 13] 0 12] 10 [3 9 2 10 [12 0 25] 0 1] 0 12] 0 1] 8 [1 0] [1 8 [1 0] 8 [1 6 [5 [1 0] 0 30] [0 6] 9 2 10 [30 0 61] 10 [6 4 0 6] 0 1] 9 2 0 1] 0 1] [8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [[8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [8 [8 [7 [0 7] 8 [9 5.622 0 7] 9 2 10 [6 7 [0 3] 8 [9 11.190 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 2] 9 2 10 [6 0 14] 0 2] 6 [8 [7 [0 3] 8 [1 0] [1 6 [5 [1 0] 0 6] [1 0] 8 [9 22.378 0 127] 9 23 10 [6 0 14] 0 2] 0 1] 9 2 10 [6 0 6] 0 2] [0 2] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [6 [3 0 6] [[6 [5 [1 0] 0 12] [1 0] 0 0] 8 [0 30] 9 2 10 [6 0 29] 0 2] 6 [5 [1 0] 0 6] [1 0] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] 8 [1 0 0] [1 6 [5 [1 0] 0 13] [1 0] [8 [9 358.122 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 9 2 10 [13 8 [9 11.246 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 1] 0 1] [8 [1 0 0] [1 8 [1 0 0] 8 [1 6 [6 [5 [1 0] 0 60] [6 [5 [1 0] 0 61] [1 0] 1 1] 1 1] [0 13] 9 2 10 [30 [8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] 8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] 10 [6 [4 0 12] 8 [9 348 0 31] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 179.035 0 31] 9 2 10 [6 [7 [0 3] [1 0] 0 12] 7 [0 3] 5 [8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] 0 2] 0 2] 0 1] 9 2 0 1] 0 1] [[8 [1 0 0] [1 6 [5 [1 0] 0 12] [0 13] 9 2 10 [6 [8 [9 179.060 0 7] 9 2 10 [6 0 28] 0 2] 4 0 13] 0 1] 0 1] [8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [8 [8 [7 [0 7] 8 [9 5.622 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 14] 0 2] 6 [8 [7 [0 3] 8 [1 0] [1 6 [5 [1 0] 0 6] [1 0] 8 [9 89.518 0 127] 9 11 10 [6 0 14] 0 2] 0 1] 9 2 10 [6 0 6] 0 2] [0 2] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [[8 [1 0] [1 8 [6 [3 0 6] [[8 [7 [0 7] 9 11.196 0 1] 9 2 10 [6 0 28] 0 2] 8 [7 [0 7] 9 89.535 0 1] 9 2 10 [6 0 29] 0 2] 8 [7 [0 7] 9 11.196 0 1] 9 2 10 [6 0 14] 0 2] 8 [5 [0 14] 0 2] 0 6] 0 1] [[8 [1 0 0] [1 8 [1 6 [5 [1 0] 0 28] [0 29] 6 [5 [1 0] 0 29] [1 0] 9 2 10 [14 [8 [9 179.060 0 15] 9 2 10 [6 0 60] 0 2] 0 59] 0 1] 9 2 0 1] 0 1] [8 [7 [8 [9 5.622 0 1] 9 2 10 [6 7 [0 3] 7 [9 11.190 0 1] 9 2 0 1] 0 2] 9 2 0 1] 7 [0 1] [1 [8 [1 0 0] [1 8 [1 6 [5 [1 0] 0 62] [[[0 28] 0 29] 1 0 0] 6 [5 [0 28] 0 248] [6 [5 [0 29] 0 249] [0 62] 10 [2 [0 28] 0 29] 0 62] 6 [8 [9 92 0 63] 9 2 10 [6 [0 60] 0 504] 0 2] [8 [9 2 10 [62 0 250] 0 1] 6 [3 0 2] [6 [8 [9 190 0 127] 9 2 10 [6 [0 1.016] 0 24] 0 2] [10 [6 0 2] 0 126] 10 [7 10 [6 0 11] 0 126] 0 2] 0 0] 8 [9 2 10 [62 0 251] 0 1] 6 [3 0 2] [6 [8 [9 190 0 127] 9 2 10 [6 [0 1.016] 0 24] 0 2] [10 [7 0 2] 0 126] 10 [6 10 [7 0 10] 0 126] 0 2] 0 0] 9 2 0 1] 0 1] [8 [1 0] [1 8 [1 6 [5 [1 0] 0 62] [1 0] 6 [5 [0 14] 0 248] [8 [1 6 [5 [1 0] 0 506] [0 507] 6 [5 [1 0] 0 507] [0 506] 6 [8 [9 190 0 127] 9 2 10 [6 [0 4.072] 0 4.076] 0 2] [10 [7 9 2 10 [506 0 2.027] 0 1] 0 506] 10 [6 9 2 10 [507 0 2.030] 0 1] 0 507] 9 2 0 1] 6 [8 [9 92 0 63] 9 2 10 [6 [0 30] 0 504] 0 2] [10 [6 9 2 10 [62 0 250] 0 1] 0 62] 10 [7 9 2 10 [62 0 251] 0 1] 0 62] 9 2 0 1] 0 1] [8 [1 0] [1 7 [10 [6 0 6] 0 1] 8 [1 6 [5 [1 0] 0 62] [1 0] 6 [5 [0 14] 0 248] [[1 0] 0 249] 6 [8 [9 92 0 63] 9 2 10 [6 [0 30] 0 504] 0 2] [9 2 10 [62 0 250] 0 1] 9 2 10 [62 0 251] 0 1] 9 2 0 1] 0 1] 7 [8 [[7 [7 [9 1.374 0 7] 9 2 0 1] 9 2 0 1] 7 [7 [9 1.374 0 7] 9 2 0 1] 9 2 0 1] [1 6 [5 [1 0] 0 30] [1 0] 6 [6 [5 [1 0] 0 12] [1 0] 6 [8 [9 92 0 31] 9 2 10 [6 [0 248] 0 57] 0 2] [6 [6 [5 [0 120] 0 25] [1 1] 1 0] [1 0] 1 1] 1 1] [6 [6 [5 [1 0] 0 13] [1 0] 6 [8 [9 92 0 31] 9 2 10 [6 [0 59] 0 248] 0 2] [6 [6 [5 [0 27] 0 120] [1 1] 1 0] [1 0] 1 1] 1 1] [6 [6 [5 [1 0] 0 122] [1 0] 6 [8 [9 190 0 31] 9 2 10 [6 [0 248] 0 1.000] 0 2] [6 [6 [5 [0 120] 0 488] [1 1] 1 0] [6 [9 2 10 [30 0 122] 10 [12 [1 0] 0 120] 0 1] [1 0] 1 1] 1 1] 1 1] [6 [6 [5 [1 0] 0 123] [1 0] 6 [8 [9 190 0 31] 9 2 10 [6 [0 248] 0 1.004] 0 2] [6 [6 [5 [0 120] 0 492] [1 1] 1 0] [6 [9 2 10 [30 0 123] 10 [13 [1 0] 0 120] 0 1] [1 0] 1 1] 1 1] 1 1] [1 0] 1 1] 1 1] 1 1] 1 1] 0 1] 9 2 0 1] 0 1] [[8 [1 1 1] [1 [8 [9 44.764 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 8 [9 6.014 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 1] [8 [7 [8 [9 5.622 0 1] 9 2 10 [6 7 [0 3] 8 [9 11.190 0 1] 9 2 10 [6 [7 [0 3] 8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 7 [0 3] 7 [9 5.622 0 1] 9 2 0 1] 0 2] 0 2] 9 2 0 1] [1 [8 [1 0 0] [1 8 [8 [9 11 0 7] 9 2 10 [6 0 28] 0 2] 8 [8 [9 22.378 0 63] 9 4 10 [6 0 126] 0 2] 9 2 10 [6 [0 60] 7 [0 3] 8 [8 [9 89.518 0 63] 9 4 10 [6 0 6] 0 2] 9 2 10 [6 0 61] 0 2] 0 2] 0 1] [8 [1 0 0] [1 8 [8 [9 11 0 7] 9 2 10 [6 0 28] 0 2] 8 [8 [8 [9 89.518 0 63] 9 10 10 [6 0 6] 0 2] 9 2 10 [6 0 61] 0 2] 6 [5 [1 0] 0 2] [8 [8 [9 22.378 0 127] 9 10 10 [6 0 254] 0 2] 9 2 10 [6 0 124] 0 2] 8 [8 [9 22.378 0 127] 9 4 10 [6 0 254] 0 2] 9 2 10 [6 [0 124] 0 6] 0 2] 0 1] 8 [1 0] [1 8 [8 [8 [9 22.378 0 31] 9 22 10 [6 0 62] 0 2] 9 2 10 [6 0 14] 0 2] 6 [5 [1 0] 0 2] [1 0] 0 5] 0 1] 0 1] 8 [1 0 0] [1 8 [6 [6 [3 0 12] [1 1] 1 0] [[0 12] 1 1] 0 12] 8 [9 4 0 15] 9 2 10 [6 [0 61] 7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 7 [0 3] 8 [9 4 0 15] 9 2 10 [6 [7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 0 12] 0 2] 0 13] 0 2] 0 2] 0 2] 0 1] [8 [7 [7 [9 5.622 0 1] 9 2 0 1] 9 2 0 1] [1 [8 [1 0] [1 8 [1 6 [5 [1 0] 0 62] [[0 14] 1 0 0] 6 [5 [0 14] 0 124] [0 62] 6 [8 [9 92 0 63] 9 2 10 [6 [0 30] 0 252] 0 2] [8 [9 2 10 [62 0 250] 0 1] 6 [3 0 2] [6 [8 [9 190 0 127] 9 2 10 [6 [0 508] 0 12] 0 2] [10 [6 0 2] 0 126] 10 [7 10 [6 0 11] 0 126] 0 2] 0 0] 8 [9 2 10 [62 0 251] 0 1] 6 [3 0 2] [6 [8 [9 190 0 127] 9 2 10 [6 [0 508] 0 12] 0 2] [10 [7 0 2] 0 126] 10 [6 10 [7 0 10] 0 126] 0 2] 0 0] 9 2 0 1] 0 1] [8 [1 0] [1 8 [1 6 [5 [1 0] 0 62] [1 0] 6 [5 [0 14] 0 124] [8 [1 6 [5 [1 0] 0 506] [0 507] 6 [5 [1 0] 0 507] [0 506] 6 [8 [9 190 0 127] 9 2 10 [6 [0 2.036] 0 2.038] 0 2] [10 [7 9 2 10 [506 0 2.027] 0 1] 0 506] 10 [6 9 2 10 [507 0 2.030] 0 1] 0 507] 9 2 0 1] 6 [8 [9 92 0 63] 9 2 10 [6 [0 30] 0 252] 0 2] [10 [6 9 2 10 [62 0 250] 0 1] 0 62] 10 [7 9 2 10 [62 0 251] 0 1] 0 62] 9 2 0 1] 0 1] 7 [8 [[7 [7 [9 1.374 0 7] 9 2 0 1] 9 2 0 1] 7 [7 [9 1.374 0 7] 9 2 0 1] 9 2 0 1] [1 6 [5 [1 0] 0 30] [1 0] 6 [6 [5 [1 0] 0 12] [1 0] 8 [9 92 0 31] 9 2 10 [6 [0 124] 0 57] 0 2] [6 [6 [5 [1 0] 0 13] [1 0] 8 [9 92 0 31] 9 2 10 [6 [0 59] 0 124] 0 2] [6 [6 [5 [1 0] 0 122] [1 0] 6 [8 [9 190 0 31] 9 2 10 [6 [0 124] 0 500] 0 2] [6 [9 2 10 [30 0 122] 10 [12 [1 0] 0 60] 0 1] [1 0] 1 1] 1 1] [6 [6 [5 [1 0] 0 123] [1 0] 6 [8 [9 190 0 31] 9 2 10 [6 [0 124] 0 502] 0 2] [6 [9 2 10 [30 0 123] 10 [13 [1 0] 0 60] 0 1] [1 0] 1 1] 1 1] [1 0] 1 1] 1 1] 1 1] 1 1] 0 1] 9 2 0 1] 0 1] 8 [1 0] [1 7 [10 [6 8 [9 22.395 0 7] 9 2 10 [6 0 14] 0 2] 0 1] 8 [1 0] 8 [1 6 [5 [1 0] 0 30] [0 6] 9 2 10 [30 0 61] 10 [6 [0 60] 0 6] 0 1] 9 2 0 1] 0 1] [8 [[8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [[0 50] 0 54] [1 8 [[8 [0 60] 9 2 10 [6 0 28] 0 2] 8 [0 61] 9 2 10 [6 0 29] 0 2] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [[8 [1 1 1] [1 11 [1.851.876.717 [1 [1 1.717.658.988] 7 [0 1] 8 [1 1 100 105 118 105 100 101 45 98 121 45 122 101 114 111 0] 9 2 0 1] 0 1] 6 [5 [1 0] 0 13] [0 0] 8 [1 0] 8 [1 6 [8 [9 358.123 0 31] 9 2 10 [6 [0 124] 0 125] 0 2] [0 6] 9 2 10 [60 8 [9 3.061 0 31] 9 2 10 [6 [0 124] 0 125] 0 2] 10 [6 4 0 6] 0 1] 9 2 0 1] 0 1] [[8 [1 0] [1 11 [1.851.876.717 [1 [1 1.717.658.988] 7 [0 1] 8 [1 1 100 101 99 114 101 109 101 110 116 45 117 110 100 101 114 102 108 111 119 0] 9 2 0 1] 0 1] 6 [5 [1 0] 0 6] [0 0] 8 [1 0] 8 [1 6 [5 [0 30] 4 0 6] [0 6] 9 2 10 [6 4 0 6] 0 1] 9 2 0 1] 0 1] [8 [1 0 0] [1 8 [6 [6 [3 0 12] [1 1] 1 0] [[0 12] 1 1] 0 12] 8 [9 6.014 0 15] 9 2 10 [6 [0 61] 7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 7 [0 3] 8 [9 4 0 15] 9 2 10 [6 [7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 0 12] 0 2] 0 13] 0 2] 0 2] 0 2] 0 1] 8 [1 0 0] [1 6 [6 [5 [0 12] 0 13] [1 1] 1 0] [6 [8 [1 6 [5 [1 0] 0 28] [1 0] 6 [6 [6 [5 [1 0] 0 29] [1 1] 1 0] [6 [9 2 10 [14 [8 [9 179.060 0 15] 9 2 10 [6 0 60] 0 2] 8 [9 179.060 0 15] 9 2 10 [6 0 61] 0 2] 0 1] [1 0] 1 1] 1 1] [1 0] 1 1] 9 2 0 1] [1 0] 1 1] 1 1] 0 1] 8 [1 0 0] [1 8 [[6 [6 [3 0 12] [1 1] 1 0] [0 12] 0 0] 6 [6 [3 0 13] [1 1] 1 0] [0 13] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0 0] [1 8 [1 0] 8 [1 6 [5 [1 0] 0 61] [0 6] 9 2 10 [61 8 [9 11.246 0 31] 9 2 10 [6 [0 124] 0 125] 0 2] 10 [6 4 0 6] 0 1] 9 2 0 1] 0 1] 8 [1 0] [1 8 [7 [0 7] 1 1] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0 0] [1 8 [1 0 0] 8 [1 6 [6 [5 [1 0] 0 60] [6 [5 [1 0] 0 61] [1 0] 1 1] 1 1] [0 13] 9 2 10 [30 [8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] 8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] 10 [6 [4 0 12] 8 [9 348 0 31] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 179.035 0 31] 9 2 10 [6 [7 [0 3] [1 0] 0 12] 7 [0 3] 6 [5 [1 0] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] [6 [5 [1 0] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] [1 0] 1 1] 1 1] 0 2] 0 2] 0 1] 9 2 0 1] 0 1] [[8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0] [1 6 [5 [1 0] 0 6] [1 1] 8 [9 4 0 7] 9 2 10 [6 [7 [0 3] 1 2] 7 [0 3] 9 2 10 [6 8 [9 179.060 0 7] 9 2 10 [6 0 14] 0 2] 0 1] 0 2] 0 1] 8 [1 0] [1 0 6] 0 1] [8 [1 0 [1 1] 0] [1 8 [9 358.122 0 7] 9 2 10 [6 [7 [0 3] [0 12] 0 53] 7 [0 3] 8 [9 11.246 0 7] 9 2 10 [6 [7 [0 3] [0 12] 0 52] 0 59] 0 2] 0 2] 0 1] [8 [1 0] [1 8 [1 [6 [6 [3 0 14] [1 1] 1 0] [8 [9 5 0 1] 9 2 10 [6 [7 [0 3] 1 3.405.691.582] [7 [0 3] 1 32.767] 0 30] 0 2] 8 [8 [9 22 0 15] 9 2 10 [6 [7 [0 3] 1 5] [7 [0 3] 9 4 10 [14 0 28] 0 1] 7 [0 3] 9 4 10 [14 0 29] 0 1] 0 2] 8 [9 5 0 3] 9 2 10 [6 [7 [0 3] 1 3.735.928.559] [7 [0 3] 1 65.534] 0 6] 0 2] 8 [1 0 0 0] [1 8 [8 [9 89.534 0 63] 9 2 10 [6 [7 [0 3] 1 3] 0 59] 0 2] 8 [1 0] 8 [1 6 [5 [1 8] 0 6] [0 250] 8 [8 [9 764 0 511] 9 2 10 [6 [0 252] [0 30] 0 507] 0 2] 8 [8 [9 86 0 1.023] 9 2 10 [6 [7 [0 3] 8 [9 11.246 0 1.023] 9 2 10 [6 [7 [0 3] 1 0 31] 0 6] 0 2] 7 [0 3] 8 [9 358.122 0 1.023] 9 2 10 [6 [7 [0 3] 1 0 31] 0 6] 0 2] 0 2] 6 [5 [1 0] 0 2] [9 2 10 [124 4 0 508] 10 [6 4 0 30] 0 7] 0 2] 9 2 0 1] 0 1] 9 4 0 1] 0 1] 8 [1 0] [1 8 [6 [6 [3 0 6] [1 1] 1 0] [0 6] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] [8 [1 0 0] [1 8 [1 0 0] 8 [1 6 [6 [5 [1 0] 0 60] [1 0] 6 [5 [1 0] 0 61] [1 0] 1 1] [0 13] 9 2 10 [30 [8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] 8 [9 11.246 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] 10 [6 [4 0 12] 8 [9 348 0 31] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 179.035 0 31] 9 2 10 [6 [7 [0 3] [1 0] 0 12] 7 [0 3] 6 [5 [1 0] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 124] 0 2] [1 0] 6 [5 [1 0] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 0] 0 125] 0 2] [1 0] 1 1] 0 2] 0 2] 0 1] 9 2 0 1] 0 1] [[8 [1 0 0] [1 8 [9 383 0 7] 9 2 10 [6 [0 28] 7 [0 3] 8 [9 89.519 0 7] 9 2 10 [6 7 [0 3] 8 [9 1.375 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 2] 0 2] 0 1] [8 [1 0] [1 8 [9 89.534 0 7] 9 2 10 [6 [7 [0 3] 1 0] 0 14] 0 2] 0 1] [8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [6 [3 0 6] [[8 [0 30] 9 2 10 [6 0 28] 0 2] [8 [7 [0 7] 8 [9 5.622 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 58] 0 2] 8 [7 [0 7] 8 [9 5.622 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 59] 0 2] 6 [5 [1 0] 0 6] [1 0] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [8 [1 0 0] [1 8 [6 [6 [3 0 12] [1 1] 1 0] [[0 12] 1 1] 0 12] 8 [9 44.764 0 15] 9 2 10 [6 [0 61] 7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 7 [0 3] 8 [9 4 0 15] 9 2 10 [6 [7 [0 3] 8 [9 22.394 0 15] 9 2 10 [6 0 12] 0 2] 0 13] 0 2] 0 2] 0 2] 0 1] [8 [1 0] [1 6 [5 [1 0] 0 6] [1 0 0] 8 [[8 [9 44.764 0 7] 9 2 10 [6 [7 [0 3] 8 [9 179.060 0 7] 9 2 10 [6 7 [0 3] 8 [9 2.810 0 7] 9 2 10 [6 0 14] 0 2] 0 2] 7 [0 3] 1 2] 0 2] 1 0] 8 [8 [1 8 [8 [9 348 0 31] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 22.394 0 31] 9 2 10 [6 0 28] 0 2] 0 2] 8 [8 [9 4 0 63] 9 2 10 [6 [0 6] 0 6] 0 2] 6 [5 [0 60] 1 0] [6 [8 [9 340 0 127] 9 2 10 [6 [0 6] 0 254] 0 2] [[0 6] 0 2] [0 61] 8 [9 4 0 127] 9 2 10 [6 [0 125] 0 125] 0 2] 6 [8 [9 340 0 127] 9 2 10 [6 [0 6] 0 254] 0 2] [9 2 10 [6 [8 [9 179.060 0 127] 9 2 10 [6 0 124] 0 2] 0 6] 0 7] 9 2 10 [12 8 [9 179.060 0 127] 9 2 10 [6 0 124] 0 2] 0 7] 9 2 0 1] [0 4] 8 [9 3.061 0 31] 9 2 10 [6 [0 62] 0 13] 0 2] 0 1] [8 [1 0 0] [1 [8 [1 6 [5 [1 0] 0 29] [1 0] 8 [9 348 0 15] 9 2 10 [6 [0 244] 7 [0 3] 9 2 10 [29 0 59] 0 1] 0 2] 9 2 0 1] 8 [9 6.015 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 1] [8 [1 0 0] [1 6 [5 [0 12] 0 13] [1 0] 8 [1 0] 8 [1 6 [5 [0 6] 1 2] [8 [9 340 0 31] 9 2 10 [6 [0 124] 0 125] 0 2] 8 [[8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 3] 0 124] 0 2] 8 [9 358.122 0 31] 9 2 10 [6 [7 [0 3] 1 3] 0 125] 0 2] 6 [5 [0 4] 0 5] [9 2 10 [30 [8 [9 11.246 0 63] 9 2 10 [6 [7 [0 3] 1 3] 0 252] 0 2] 8 [9 11.246 0 63] 9 2 10 [6 [7 [0 3] 1 3] 0 253] 0 2] 10 [6 4 0 14] 0 3] 8 [9 358.123 0 63] 9 2 10 [6 [0 12] 0 13] 0 2] 9 2 0 1] 0 1] 8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [1 0 0] [1 6 [8 [9 340 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] [1 1] 1 0] 0 1] [8 [1 0 0 0] [1 8 [9 348 0 7] 9 2 10 [6 [7 [0 3] 8 [9 179.035 0 7] 9 2 10 [6 [7 [0 3] [0 12] 8 [9 89.534 0 7] 9 2 10 [6 [0 28] 0 58] 0 2] 0 59] 0 2] 0 58] 0 2] 0 1] [[8 [1 0 0] [1 8 [[8 [9 22.398 0 7] 9 2 10 [6 0 28] 0 2] 8 [9 22.398 0 7] 9 2 10 [6 0 29] 0 2] 6 [5 [0 4] 0 5] [8 [9 374 0 15] 9 2 10 [6 [0 60] 0 61] 0 2] 8 [9 358.123 0 15] 9 2 10 [6 [0 12] 0 13] 0 2] 0 1] [8 [1 0 0] [1 8 [1 6 [5 [1 0] 0 28] [1 0] [0 29] 9 2 10 [28 8 [9 179.060 0 15] 9 2 10 [6 0 60] 0 2] 0 1] 9 2 0 1] 0 1] [8 [1 0 0] [1 6 [5 [0 12] 0 13] [1 0] 6 [6 [3 0 12] [1 1] 1 0] [6 [6 [3 0 13] [1 1] 1 0] [8 [9 358.123 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 1 0] 6 [6 [3 0 13] [1 1] 1 0] [1 1] 6 [5 [0 24] 0 26] [9 2 10 [6 [0 25] 0 27] 0 1] 9 2 10 [6 [0 24] 0 26] 0 1] 0 1] [8 [[8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [9 686 0 7] 9 2 10 [6 [0 28] 7 [0 3] 8 [9 698 0 7] 9 2 10 [6 0 29] 0 2] 0 2] 0 1] [8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [[0 26] 7 [8 [9 3.060 0 7] 9 2 10 [6 0 14] 0 2] 0 6] [1 8 [[8 [0 30] 9 2 10 [6 0 28] 0 2] 8 [7 [0 7] 8 [9 3.060 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 29] 0 2] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] [8 [[7 [9 89.983 0 1] 9 2 0 1] 7 [9 89.983 0 1] 9 2 0 1] [1 8 [1 8 [[0 114] 0 118] [1 8 [[8 [0 124] 9 2 10 [6 0 28] 0 2] 8 [0 125] 9 2 10 [6 0 29] 0 2] 8 [5 [0 14] 0 2] 0 6] 0 1] 8 [7 [[[7 [0 28] 9 2 0 1] 7 [0 28] 9 2 0 1] 1 0] 8 [0 2] [1 0 15] 0 1] [1 [1 [8 [[7 [8 [9 5.622 0 127] 9 2 10 [6 7 [0 3] 9 2 0 15] 0 2] 9 2 0 1] [7 [0 252] 9 2 0 1] 7 [0 253] 9 2 0 1] [1 6 [5 [1 0] 0 12] [[[0 26] 0 27] 1 0 0] 6 [5 [0 48] 0 26] [10 [5 0 27] 0 12] 6 [8 [0 62] 9 2 10 [6 [0 58] 0 112] 0 2] [8 [9 2 10 [12 0 50] 0 1] 6 [3 0 2] [6 [8 [9 190 0 1.023] 9 2 10 [6 [0 240] 0 24] 0 2] [10 [6 0 2] 0 28] 10 [7 10 [6 0 11] 0 28] 0 2] 0 0] 8 [9 2 10 [12 0 51] 0 1] 6 [3 0 2] [6 [8 [9 190 0 1.023] 9 2 10 [6 [0 240] 0 24] 0 2] [10 [7 0 2] 0 28] 10 [6 10 [7 0 10] 0 28] 0 2] 0 0] 0 1] [8 [[7 [8 [9 5.622 0 127] 9 2 10 [6 7 [0 3] 9 2 0 15] 0 2] 9 2 0 1] 7 [0 252] 9 2 0 1] [1 6 [5 [1 0] 0 12] [1 0] 6 [5 [0 13] 0 48] [[1 0] 0 49] 6 [8 [0 62] 9 2 10 [6 [0 29] 0 112] 0 2] [9 2 10 [12 0 50] 0 1] 9 2 10 [12 0 51] 0 1] 0 1] [8 [1 0] [1 8 [[7 [8 [9 1.374 0 511] 9 2 10 [6 0 2.044] 0 2] 9 2 0 1] 7 [8 [9 1.374 0 511] 9 2 10 [6 0 2.044] 0 2] 9 2 0 1] 8 [1 6 [5 [1 0] 0 30] [1 0] 6 [6 [5 [1 0] 0 12] [1 0] 8 [0 254] 9 2 10 [6 [0 248] 0 57] 0 2] [6 [6 [5 [1 0] 0 13] [1 0] 8 [0 254] 9 2 10 [6 [0 59] 0 248] 0 2] [6 [6 [5 [1 0] 0 122] [1 0] 6 [8 [9 190 0 2.047] 9 2 10 [6 [0 248] 0 1.000] 0 2] [6 [9 2 10 [30 0 122] 10 [12 [1 0] 0 120] 0 1] [1 0] 1 1] 1 1] [6 [6 [5 [1 0] 0 123] [1 0] 6 [8 [9 190 0 2.047] 9 2 10 [6 [0 248] 0 1.004] 0 2] [6 [9 2 10 [30 0 123] 10 [13 [1 0] 0 120] 0 1] [1 0] 1 1] 1 1] [1 0] 1 1] 1 1] 1 1] 1 1] 9 2 0 1] 0 1] 8 [[7 [8 [9 5.622 0 127] 9 2 10 [6 7 [0 3] 9 2 0 15] 0 2] 9 2 0 1] 7 [0 252] 9 2 0 1] [1 6 [5 [1 0] 8 [9 10 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] [1 1] 1 0] 0 1] 0 1] 0 1] 0 1] [8 [1 1 1] [1 6 [5 [1 0] 0 13] [0 0] 8 [9 3.061 0 7] 9 2 10 [6 [0 28] 7 [0 3] 8 [9 4 0 7] 9 2 10 [6 [0 29] 7 [0 3] 8 [9 44.764 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] 0 2] 0 2] 0 1] 8 [1 0 0] [1 6 [5 [1 0] 0 13] [1 0] 8 [9 348 0 7] 9 2 10 [6 [7 [0 3] 8 [9 358.122 0 7] 9 2 10 [6 [7 [0 3] [0 12] 0 52] 0 117] 0 2] 7 [0 3] 8 [9 179.035 0 7] 9 2 10 [6 [7 [0 3] [0 12] 0 52] 7 [0 3] 9 2 10 [13 0 27] 0 1] 0 2] 0 2] 0 1] [8 [1 0 0] [1 6 [8 [9 358.123 0 7] 9 2 10 [6 [0 28] 0 29] 0 2] [1 1] 1 0] 0 1] [8 [1 0 0] [1 8 [[8 [9 22.398 0 7] 9 2 10 [6 7 [0 3] 8 [9 22.398 0 7] 9 2 10 [6 0 28] 0 2] 0 2] 8 [9 22.398 0 7] 9 2 10 [6 7 [0 3] 8 [9 22.398 0 7] 9 2 10 [6 0 29] 0 2] 0 2] 6 [5 [0 4] 0 5] [8 [9 374 0 15] 9 2 10 [6 [0 60] 0 61] 0 2] 8 [9 358.123 0 15] 9 2 10 [6 [0 12] 0 13] 0 2] 0 1] [[8 [8 [9 3.063 0 1] 10 [6 7 [0 3] 1 5] 0 2] 8 [1 0 0 0] [1 7 [10 [12 8 [9 358.122 0 59] 9 2 10 [6 [7 [0 3] 1 5] 0 28] 0 2] 0 1] 8 [8 [9 3.061 0 59] 9 2 10 [6 [0 58] 7 [0 3] 8 [9 89.534 0 59] 9 2 10 [6 [7 [0 3] 1 3] 0 59] 0 2] 0 2] 8 [8 [9 682 0 123] 9 2 10 [6 [7 [0 3] 8 [9 1.375 0 123] 9 2 10 [6 [7 [0 3] 1 3] 0 123] 0 2] 7 [0 3] 8 [9 186 0 123] 9 2 10 [6 [0 6] 7 [0 3] 1 0] 0 2] 0 2] 8 [8 [9 44.764 0 251] 9 2 10 [6 [0 250] 7 [0 3] 1 4] 0 2] 8 [0 124] 8 [1 3.432.918.353 461.845.907] 8 [8 [9 1.375 0 2.043] 9 2 10 [6 [7 [0 3] 1 5] 0 2.043] 0 2] 8 [0 30] 7 [10 [30 8 [0 30] 8 [1 6 [5 [1 0] 0 14] [0 6] 8 [8 [9 84 0 32.763] 9 2 10 [6 [7 [0 3] 8 [9 3.061 0 32.763] 9 2 10 [6 [0 510] 0 30] 0 2] 0 62] 0 2] 7 [10 [2 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 6] 0 508] 0 2] 0 2] 0 1] 7 [10 [2 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 15] 0 6] 0 2] 0 1] 7 [10 [2 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 6] 0 509] 0 2] 0 2] 0 1] 7 [10 [14 8 [9 86 0 65.531] 9 2 10 [6 [0 30] 0 6] 0 2] 0 1] 7 [10 [14 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 13] 0 30] 0 2] 0 1] 7 [10 [14 8 [9 4 0 16.382] 9 2 10 [6 [7 [0 3] 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 30] 7 [0 3] 1 5] 0 2] 0 2] 7 [0 3] 1 3.864.292.196] 0 2] 0 1] 9 2 10 [14 8 [9 179.060 0 65.531] 9 2 10 [6 0 62] 0 2] 0 3] 9 2 0 1] 0 1] 8 [8 [9 11.188 0 8.187] 9 2 10 [6 [7 [0 3] 8 [9 4 0 8.187] 9 2 10 [6 [7 [0 3] 1 4] 0 126] 0 2] 0 254] 0 2] 8 [1 0] 8 [8 [9 350 0 32.763] 9 2 10 [6 [0 32.762] 7 [0 3] 1 3] 0 2] 7 [10 [254 6 [5 [1 3] 0 2] [7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 179.035 0 65.531] 9 2 10 [6 [7 [0 3] 1 0 16] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 2] 0 30] 0 2] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 179.035 0 65.531] 9 2 10 [6 [7 [0 3] 1 0 8] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 1] 0 30] 0 2] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 0] 0 30] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 508] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 15] 0 14] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 509] 0 2] 0 2] 0 1] 8 [9 86 0 65.531] 9 2 10 [6 [0 510] 0 14] 0 2] 6 [5 [1 2] 0 2] [7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 179.035 0 65.531] 9 2 10 [6 [7 [0 3] 1 0 8] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 1] 0 30] 0 2] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 0] 0 30] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 508] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 15] 0 14] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 509] 0 2] 0 2] 0 1] 8 [9 86 0 65.531] 9 2 10 [6 [0 510] 0 14] 0 2] 6 [5 [1 1] 0 2] [7 [10 [6 8 [9 86 0 65.531] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 84 0 65.531] 9 2 10 [6 [7 [0 3] 1 0] 0 30] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 508] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 10 0 16.382] 9 2 10 [6 [7 [0 3] 1 0] [7 [0 3] 1 15] 0 14] 0 2] 0 1] 7 [10 [6 8 [9 11 0 16.382] 9 2 10 [6 7 [0 3] 8 [9 4 0 65.531] 9 2 10 [6 [0 14] 0 509] 0 2] 0 2] 0 1] 8 [9 86 0 65.531] 9 2 10 [6 [0 510] 0 14] 0 2] 11 [1.936.945.012 1 0] 0 254] 0 1] 7 [10 [254 8 [9 86 0 65.531] 9 2 10 [6 [0 510] 0 65.530] 0 2] 0 1] 8 [1 [8 [9 5 0 1] 9 2 10 [6 0 1.022] 0 2] 8 [1 0] [1 7 [10 [6 8 [9 86 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 11.246 0 524.283] 9 2 10 [6 [7 [0 3] 1 0 16] 0 14] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 131.070] 9 2 10 [6 7 [0 3] 8 [9 4 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 1 2.246.822.507] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 11.246 0 524.283] 9 2 10 [6 [7 [0 3] 1 0 13] 0 14] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 11 0 131.070] 9 2 10 [6 7 [0 3] 8 [9 4 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 1 3.266.489.909] 0 2] 0 2] 0 1] 7 [10 [6 8 [9 86 0 524.283] 9 2 10 [6 [0 14] 7 [0 3] 8 [9 11.246 0 524.283] 9 2 10 [6 [7 [0 3] 1 0 16] 0 14] 0 2] 0 2] 0 1] 0 6] 0 1] 9 4 0 1] 0 1] [[8 [8 [1 0] [1 8 [0 6] 8 [5 [0 14] 0 2] 0 6] 0 1] [1 8 [1 0] [1 8 [6 [3 0 6] [[8 [0 30] 9 2 10 [6 0 28] 0 2] 8 [7 [0 7] 8 [9 3.060 0 7] 9 2 10 [6 0 14] 0 2] 9 2 10 [6 0 29] 0 2] 6 [5 [1 0] 0 6] [1 0] 0 0] 8 [5 [0 14] 0 2] 0 6] 0 1] 0 1] 8 [1 0 0] [1 11 [1.851.876.717 [1 [1 1.717.658.988] 7 [0 1] 8 [1 1 115 117 98 116 114 97 99 116 45 117 110 100 101 114 102 108 111 119 0] 9 2 0 1] 0 1] 6 [5 [1 0] 0 13] [0 12] 9 2 10 [6 [8 [9 179.060 0 7] 9 2 10 [6 0 28] 0 2] 8 [9 179.060 0 7] 9 2 10 [6 0 29] 0 2] 0 1] 0 1] [8 [1 0 0] [1 6 [5 [0 13] 1 0] [1 1] 8 [1 6 [5 [0 29] 1 1] [0 28] 8 [9 2 10 [29 8 [9 44.764 0 15] 9 2 10 [6 [0 61] 7 [0 3] 1 2] 0 2] 0 1] 8 [8 [9 4 0 31] 9 2 10 [6 [0 6] 0 6] 0 2] 8 [8 [9 350 0 63] 9 2 10 [6 [0 253] 7 [0 3] 1 1] 0 2] 6 [5 [1 0] 0 2] [0 6] 7 [0 3] 8 [9 4 0 63] 9 2 10 [6 [0 6] 0 252] 0 2] 9 2 0 1] 0 1] 8 [1 0] [1 [8 [1 0 0] [1 8 [9 11 0 7] 9 2 10 [6 7 [0 3] 8 [9 348 0 31] 9 2 10 [6 [0 28] 0 29] 0 2] 0 2] 0 1] [8 [1 0 0 0] [1 8 [8 [9 11 0 7] 9 2 10 [6 0 59] 0 2] 8 [8 [9 22.394 0 63] 9 2 10 [6 7 [0 3] 8 [9 3.061 0 63] 9 2 10 [6 [0 126] 0 60] 0 2] 0 2] 8 [8 [9 6.014 0 127] 9 2 10 [6 [0 250] 0 6] 0 2] 8 [9 11 0 63] 9 2 10 [6 7 [0 3] 8 [9 2.798 0 255] 9 2 10 [6 [7 [0 3] 8 [9 179.035 0 255] 9 2 10 [6 [7 [0 3] [0 124] 0 2] 0 30] 0 2] 7 [0 3] 8 [9 11.246 0 255] 9 2 10 [6 [7 [0 3] [0 124] 8 [9 3.061 0 255] 9 2 10 [6 [0 14] 0 6] 0 2] 0 30] 0 2] 0 2] 0 2] 0 1] 8 [1 0] [1 8 [9 358.122 0 31] 9 2 10 [6 [0 62] 0 14] 0 2] 0 1] 0 1] 8 [1 0 0] [1 8 [6 [6 [3 0 12] [1 1] 1 0] [[0 12] 1 1] 0 12] 8 [1 0] 8 [1 6 [5 [1 0] 0 125] [1 0] 8 [9 348 0 63] 9 2 10 [6 [7 [0 3] 9 2 10 [125 0 251] 10 [6 4 0 6] 0 1] 7 [0 3] 8 [9 179.035 0 63] 9 2 10 [6 [7 [0 3] [0 28] 8 [9 4 0 63] 9 2 10 [6 [0 61] 0 14] 0 2] 7 [0 3] 8 [9 358.122 0 63] 9 2 10 [6 [7 [0 3] [0 28] 0 29] 0 506] 0 2] 0 2] 0 2] 9 2 0 1] 0 1] 506.013.904.830.974.705.962.590.204.844.663.393]] q=[%8 p=[%1 p=5] q=[%8 p=[%1 p=37] q=[p=[%8 p=[%9 p=179.060 q=[%0 p=14]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=43]]] q=[%0 p=2]]]] q=[p=[%8 p=[%9 p=348 q=[%0 p=14]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=5] q=[%1 p=37]]]] q=[%0 p=2]]]] q=[p=[%8 p=[%9 p=348 q=[%0 p=14]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%0 p=6] q=[%0 p=2]]]] q=[%0 p=2]]]] q=[p=[%8 p=[%9 p=3.061 q=[%0 p=14]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=47] q=[%0 p=6]]]] q=[%0 p=2]]]] q=[%8 p=[%9 p=683 q=[%0 p=14]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=1] q=[p=[%1 p=2] q=[p=[%1 p=3] q=[p=[%1 p=4] q=[p=[%1 p=5] q=[p=[%1 p=6] q=[p=[%1 p=7] q=[p=[%1 p=8] q=[p=[%1 p=9] q=[p=[%1 p=10] q=[p=[%1 p=11] q=[p=[%1 p=12] q=[p=[%1 p=13] q=[p=[%1 p=14] q=[p=[%1 p=15] q=[p=[%1 p=16] q=[p=[%1 p=17] q=[p=[%1 p=18] q=[p=[%1 p=19] q=[p=[%1 p=20] q=[p=[%1 p=21] q=[p=[%1 p=22] q=[p=[%1 p=23] q=[p=[%1 p=24] q=[p=[%1 p=25] q=[p=[%1 p=26] q=[p=[%1 p=27] q=[p=[%1 p=28] q=[p=[%1 p=29] q=[p=[%1 p=30] q=[p=[%1 p=31] q=[p=[%1 p=32] q=[p=[%1 p=33] q=[p=[%1 p=34] q=[p=[%1 p=35] q=[p=[%1 p=36] q=[p=[%1 p=37] q=[p=[%1 p=38] q=[p=[%1 p=39] q=[p=[%1 p=40] q=[p=[%1 p=41] q=[p=[%1 p=42] q=[%1 p=0]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] q=[%0 p=2]]]]]]]]]]] + !> .*(0 (mint:jock text)) +:: +-- diff --git a/hoon/tests/lib/hoon-ffi.hoon b/hoon/tests/lib/hoon-ffi.hoon new file mode 100644 index 0000000..723ca48 --- /dev/null +++ b/hoon/tests/lib/hoon-ffi.hoon @@ -0,0 +1,36 @@ +:: /lib/tests/hoon-ffi +/+ jock, + test +/* hoon %txt /lib/mini/txt +:: +|% +++ text + 'let a = 1;\0alet b = 41;\0alet c = 43;\0alet d = 6;\0alet e = 7;\0alet f = 252;\0a\0a(hoon.add(a b)\0a hoon.sub(c a)\0a hoon.mul(d e)\0a hoon.div(f d)\0a)\0a' +++ test-tokenize + %+ expect-eq:test + !> ~[[%keyword %let] [%name %a] [%punctuator %'='] [%literal [[%number p=1] q=%.n]] [%punctuator %';'] [%keyword %let] [%name %b] [%punctuator %'='] [%literal [[%number p=41] q=%.n]] [%punctuator %';'] [%keyword %let] [%name %c] [%punctuator %'='] [%literal [[%number p=43] q=%.n]] [%punctuator %';'] [%keyword %let] [%name %d] [%punctuator %'='] [%literal [[%number p=6] q=%.n]] [%punctuator %';'] [%keyword %let] [%name %e] [%punctuator %'='] [%literal [[%number p=7] q=%.n]] [%punctuator %';'] [%keyword %let] [%name %f] [%punctuator %'='] [%literal [[%number p=252] q=%.n]] [%punctuator %';'] [%punctuator %'('] [%name %hoon] [%punctuator %'.'] [%name %add] [%punctuator %'(('] [%name %a] [%name %b] [%punctuator %')'] [%name %hoon] [%punctuator %'.'] [%name %sub] [%punctuator %'(('] [%name %c] [%name %a] [%punctuator %')'] [%name %hoon] [%punctuator %'.'] [%name %mul] [%punctuator %'(('] [%name %d] [%name %e] [%punctuator %')'] [%name %hoon] [%punctuator %'.'] [%name %div] [%punctuator %'(('] [%name %f] [%name %d] [%punctuator %')'] [%punctuator %')']] + !> (rash text parse-tokens:jock) +:: +++ test-jeam + %+ expect-eq:test + !> ^- jock:jock + [%let type=[p=[%none p=~] name='a'] val=[%atom p=[[%number p=1] q=%.n]] next=[%let type=[p=[%none p=~] name='b'] val=[%atom p=[[%number p=41] q=%.n]] next=[%let type=[p=[%none p=~] name='c'] val=[%atom p=[[%number p=43] q=%.n]] next=[%let type=[p=[%none p=~] name='d'] val=[%atom p=[[%number p=6] q=%.n]] next=[%let type=[p=[%none p=~] name='e'] val=[%atom p=[[%number p=7] q=%.n]] next=[%let type=[p=[%none p=~] name='f'] val=[%atom p=[[%number p=252] q=%.n]] next=[p=[%call func=[%limb p=~[[%name p=%hoon] [%name p=%add]]] arg=[~ [p=[%limb p=~[[%name p=%a]]] q=[%limb p=~[[%name p=%b]]]]]] q=[p=[%call func=[%limb p=~[[%name p=%hoon] [%name p=%sub]]] arg=[~ [p=[%limb p=~[[%name p=%c]]] q=[%limb p=~[[%name p=%a]]]]]] q=[p=[%call func=[%limb p=~[[%name p=%hoon] [%name p=%mul]]] arg=[~ [p=[%limb p=~[[%name p=%d]]] q=[%limb p=~[[%name p=%e]]]]]] q=[%call func=[%limb p=~[[%name p=%hoon] [%name p=%div]]] arg=[~ [p=[%limb p=~[[%name p=%f]]] q=[%limb p=~[[%name p=%d]]]]]]]]]]]]]]] + !> (jeam:jock text) +:: +++ test-mint + %+ expect-eq:test + !> [%8 p=[%1 p=1] q=[%8 p=[%1 p=41] q=[%8 p=[%1 p=43] q=[%8 p=[%1 p=6] q=[%8 p=[%1 p=7] q=[%8 p=[%1 p=252] q=[p=[%8 p=[%9 p=348 q=[%0 p=254]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%0 p=126] q=[%0 p=62]]]] q=[%0 p=2]]]] q=[p=[%8 p=[%9 p=3.061 q=[%0 p=254]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%0 p=30] q=[%0 p=126]]]] q=[%0 p=2]]]] q=[p=[%8 p=[%9 p=4 q=[%0 p=254]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%0 p=14] q=[%0 p=6]]]] q=[%0 p=2]]]] q=[%8 p=[%9 p=44.764 q=[%0 p=254]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%0 p=2] q=[%0 p=14]]]] q=[%0 p=2]]]]]]]]]]]]] + !> +>:(mint:jock text) +:: +++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) + %+ expect-eq:test + !> .* 0 + :+ %8 + +.p + [%8 p=[%1 p=1] q=[%8 p=[%1 p=41] q=[%8 p=[%1 p=43] q=[%8 p=[%1 p=6] q=[%8 p=[%1 p=7] q=[%8 p=[%1 p=252] q=[p=[%8 p=[%9 p=348 q=[%0 p=254]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%0 p=126] q=[%0 p=62]]]] q=[%0 p=2]]]] q=[p=[%8 p=[%9 p=3.061 q=[%0 p=254]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%0 p=30] q=[%0 p=126]]]] q=[%0 p=2]]]] q=[p=[%8 p=[%9 p=4 q=[%0 p=254]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%0 p=14] q=[%0 p=6]]]] q=[%0 p=2]]]] q=[%8 p=[%9 p=44.764 q=[%0 p=254]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%0 p=2] q=[%0 p=14]]]] q=[%0 p=2]]]]]]]]]]]]] + !> .*(0 (mint:jock text)) +:: +-- diff --git a/hoon/tests/lib/if-else.hoon b/hoon/tests/lib/if-else.hoon index ee399a2..7957ae5 100644 --- a/hoon/tests/lib/if-else.hoon +++ b/hoon/tests/lib/if-else.hoon @@ -1,29 +1,36 @@ :: /lib/tests/if-else /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text - 'let a: @ = 3;\0a\0aif a == 3 {\0a 72\0a} else {\0a 17\0a}' + 'let a: @ = 3;\0a\0aif a == 3 {\0a 42\0a} else {\0a 17\0a}\0a' ++ test-tokenize %+ expect-eq:test - !> ~[[%keyword %let] [%name %a] [%punctuator %':'] [%punctuator %'@'] [%punctuator %'='] [%literal [[%number p=3] q=%.n]] [%punctuator %';'] [%keyword %if] [%name %a] [%punctuator %'='] [%punctuator %'='] [%literal [[%number p=3] q=%.n]] [%punctuator %'{'] [%literal [[%number p=72] q=%.n]] [%punctuator %'}'] [%keyword %else] [%punctuator %'{'] [%literal [[%number p=17] q=%.n]] [%punctuator %'}']] + !> ~[[%keyword %let] [%name %a] [%punctuator %'='] [%literal [[%number p=17] q=%.n]] [%punctuator %';'] [%keyword %let] [%name %b] [%punctuator %'='] [%keyword %lambda] [%punctuator %'('] [%punctuator %'('] [%name %b] [%punctuator %':'] [%punctuator %'@'] [%name %c] [%punctuator %':'] [%punctuator %'&'] [%literal [[%number p=1] q=%.n]] [%punctuator %')'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%punctuator %'@'] [%punctuator %'{'] [%keyword %if] [%name %c] [%punctuator %'='] [%punctuator %'='] [%literal [[%number p=18] q=%.n]] [%punctuator %'{'] [%punctuator %'+'] [%punctuator %'('] [%name %b] [%punctuator %')'] [%punctuator %'}'] [%keyword %else] [%punctuator %'{'] [%name %b] [%punctuator %'}'] [%punctuator %'}'] [%punctuator %'('] [%literal [[%number p=23] q=%.n]] [%punctuator %'&'] [%literal [[%number p=1] q=%.n]] [%punctuator %')'] [%punctuator %';'] [%punctuator %'&'] [%literal [[%number p=1] q=%.n]]] !> (rash text parse-tokens:jock) :: ++ test-jeam %+ expect-eq:test !> ^- jock:jock - [%let type=[p=[%atom p=%number q=%.n] name=%a] val=[%atom p=[[%number p=3] q=%.n]] next=[%if cond=[%compare comp=%'==' a=[%limb p=~[[%name p=%a]]] b=[%atom p=[[%number p=3] q=%.n]]] then=[%atom p=[[%number p=72] q=%.n]] after=[%else then=[%atom p=[[%number p=17] q=%.n]]]]] + [%let type=[p=[%none p=~] name='a'] val=[%atom p=[[%number p=17] q=%.n]] next=[%let type=[p=[%none p=~] name='b'] val=[%call func=[%lambda p=[arg=[inp=[~ [[p=[p=[%atom p=%number q=%.n] name='b'] q=[p=[%limb p=~[[%axis p=1]]] name='c']] name='']] out=[p=[%atom p=%number q=%.n] name='']] body=[%if cond=[%compare comp=%'==' a=[%limb p=~[[%name p=%c]]] b=[%atom p=[[%number p=18] q=%.n]]] then=[%increment val=[%limb p=~[[%name p=%b]]]] after=[%else then=[%limb p=~[[%name p=%b]]]]] context=~]] arg=[~ [p=[%atom p=[[%number p=23] q=%.n]] q=[%limb p=~[[%axis p=1]]]]]] next=[%limb p=~[[%axis p=1]]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [8 [1 3] 6 [5 [0 2] 1 3] [1 72] 1 17] - !> (mint:jock text) + !> [%8 p=[%1 p=17] q=[%8 p=[%7 p=[%8 p=[p=[%1 p=0] q=[p=[%1 p=0] q=[p=[%1 p=0] q=[%1 p=0]]]] q=[p=[%1 p=[6 [5 [0 13] 1 18] [4 0 12] 0 12]] q=[%0 p=1]]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=23] q=[%0 p=1]]]] q=[%0 p=1]]]] q=[%0 p=1]]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> .*(0 [8 [1 3] 6 [5 [0 2] 1 3] [1 72] 1 17]) + !> .* 0 + :+ %8 + +.p + [%8 p=[%1 p=17] q=[%8 p=[%7 p=[%8 p=[p=[%1 p=0] q=[p=[%1 p=0] q=[p=[%1 p=0] q=[%1 p=0]]]] q=[p=[%1 p=[6 [5 [0 13] 1 18] [4 0 12] 0 12]] q=[%0 p=1]]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=23] q=[%0 p=1]]]] q=[%0 p=1]]]] q=[%0 p=1]]] !> .*(0 (mint:jock text)) :: -- diff --git a/hoon/tests/lib/if-elseif-else.hoon b/hoon/tests/lib/if-elseif-else.hoon index 20061e7..e3944ff 100644 --- a/hoon/tests/lib/if-elseif-else.hoon +++ b/hoon/tests/lib/if-elseif-else.hoon @@ -1,29 +1,36 @@ :: /lib/tests/if-elseif-else /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text - 'let a: @ = 3;\0a\0aif a == 3 {\0a 72\0a} else if a == 5 {\0a 17\0a} else {\0a 15\0a}' + 'let a: @ = 3;\0a\0aif a == 3 {\0a 42\0a} else if a == 5 {\0a 17\0a} else {\0a 15\0a}\0a' ++ test-tokenize %+ expect-eq:test - !> ~[[%keyword %let] [%name %a] [%punctuator %':'] [%punctuator %'@'] [%punctuator %'='] [%literal [[%number p=3] q=%.n]] [%punctuator %';'] [%keyword %if] [%name %a] [%punctuator %'='] [%punctuator %'='] [%literal [[%number p=3] q=%.n]] [%punctuator %'{'] [%literal [[%number p=72] q=%.n]] [%punctuator %'}'] [%keyword %else] [%keyword %if] [%name %a] [%punctuator %'='] [%punctuator %'='] [%literal [[%number p=5] q=%.n]] [%punctuator %'{'] [%literal [[%number p=17] q=%.n]] [%punctuator %'}'] [%keyword %else] [%punctuator %'{'] [%literal [[%number p=15] q=%.n]] [%punctuator %'}']] + !> ~[[%keyword %let] [%name %a] [%punctuator %':'] [%punctuator %'@'] [%punctuator %'='] [%literal [[%number p=3] q=%.n]] [%punctuator %';'] [%keyword %if] [%name %a] [%punctuator %'='] [%punctuator %'='] [%literal [[%number p=3] q=%.n]] [%punctuator %'{'] [%literal [[%number p=42] q=%.n]] [%punctuator %'}'] [%keyword %else] [%punctuator %'{'] [%literal [[%number p=17] q=%.n]] [%punctuator %'}']] !> (rash text parse-tokens:jock) :: ++ test-jeam %+ expect-eq:test !> ^- jock:jock - [%let type=[p=[%atom p=%number q=%.n] name=%a] val=[%atom p=[[%number p=3] q=%.n]] next=[%if cond=[%compare comp=%'==' a=[%limb p=~[[%name p=%a]]] b=[%atom p=[[%number p=3] q=%.n]]] then=[%atom p=[[%number p=72] q=%.n]] after=[%else-if cond=[%compare comp=%'==' a=[%limb p=~[[%name p=%a]]] b=[%atom p=[[%number p=5] q=%.n]]] then=[%atom p=[[%number p=17] q=%.n]] after=[%else then=[%atom p=[[%number p=15] q=%.n]]]]]] + [%let type=[p=[%atom p=%number q=%.n] name='a'] val=[%atom p=[[%number p=3] q=%.n]] next=[%if cond=[%compare comp=%'==' a=[%limb p=~[[%name p=%a]]] b=[%atom p=[[%number p=3] q=%.n]]] then=[%atom p=[[%number p=42] q=%.n]] after=[%else then=[%atom p=[[%number p=17] q=%.n]]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [8 [1 3] 6 [5 [0 2] 1 3] [1 72] 6 [5 [0 2] 1 5] [1 17] 1 15] - !> (mint:jock text) + !> [%8 p=[%1 p=3] q=[%6 p=[%5 p=[%0 p=2] q=[%1 p=3]] q=[%1 p=42] r=[%1 p=17]]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> .*(0 [8 [1 3] 6 [5 [0 2] 1 3] [1 72] 6 [5 [0 2] 1 5] [1 17] 1 15]) + !> .* 0 + :+ %8 + +.p + [%8 p=[%1 p=3] q=[%6 p=[%5 p=[%0 p=2] q=[%1 p=3]] q=[%1 p=42] r=[%1 p=17]]] !> .*(0 (mint:jock text)) :: -- diff --git a/hoon/tests/lib/in-subj-call.hoon b/hoon/tests/lib/in-subj-call.hoon index b663eae..7742d87 100644 --- a/hoon/tests/lib/in-subj-call.hoon +++ b/hoon/tests/lib/in-subj-call.hoon @@ -1,29 +1,36 @@ :: /lib/tests/in-subj-call /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text - 'let a = 17;\0a\0alet b = lambda ((b:@ c:&1)) -> @ {\0a if c == 18 {\0a +(b)\0a } else {\0a b\0a }\0a}(23 &1);\0a\0a&1' + 'let a = 17;\0a\0alet b = lambda ((b:@ c:&1)) -> @ {\0a if c == 18 {\0a +(b)\0a } else {\0a b\0a }\0a}(23 &1);\0a\0a&1\0a' ++ test-tokenize %+ expect-eq:test - !> ~[[%keyword %let] [%name %a] [%punctuator %'='] [%literal [[%number p=17] q=%.n]] [%punctuator %';'] [%keyword %let] [%name %b] [%punctuator %'='] [%keyword %lambda] [%punctuator %'('] [%punctuator %'('] [%name %b] [%punctuator %':'] [%punctuator %'@'] [%name %c] [%punctuator %':'] [%punctuator %'&'] [%literal [[%number p=1] q=%.n]] [%punctuator %')'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%punctuator %'@'] [%punctuator %'{'] [%keyword %if] [%name %c] [%punctuator %'='] [%punctuator %'='] [%literal [[%number p=18] q=%.n]] [%punctuator %'{'] [%punctuator %'+'] [%punctuator %'('] [%name %b] [%punctuator %')'] [%punctuator %'}'] [%keyword %else] [%punctuator %'{'] [%name %b] [%punctuator %'}'] [%punctuator %'}'] [%punctuator %'('] [%literal [[%number p=23] q=%.n]] [%punctuator %'&'] [%literal [[%number p=1] q=%.n]] [%punctuator %')'] [%punctuator %';'] [%punctuator %'&'] [%literal [[%number p=1] q=%.n]]] + !> ~[[%keyword %lambda] [%punctuator %'('] [%name %b] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%punctuator %'@'] [%punctuator %'{'] [%punctuator %'+'] [%punctuator %'('] [%name %b] [%punctuator %')'] [%punctuator %'}'] [%punctuator %'('] [%punctuator %')']] !> (rash text parse-tokens:jock) :: ++ test-jeam %+ expect-eq:test !> ^- jock:jock - [%let type=[p=[%none ~] name=%a] val=[%atom p=[[%number p=17] q=%.n]] next=[%let type=[p=[%none ~] name=%b] val=[%call func=[%lambda p=[arg=[inp=[~ [[p=[p=[%atom p=%number q=%.n] name=%b] q=[p=[%limb p=~[[%axis p=1]]] name=%c]] name=%$]] out=[p=[%atom p=%number q=%.n] name=%$]] body=[%if cond=[%compare comp=%'==' a=[%limb p=~[[%name p=%c]]] b=[%atom p=[[%number p=18] q=%.n]]] then=[%increment val=[%limb p=~[[%name p=%b]]]] after=[%else then=[%limb p=~[[%name p=%b]]]]] payload=~]] arg=[~ [p=[%atom p=[[%number p=23] q=%.n]] q=[%limb p=~[[%axis p=1]]]]]] next=[%limb p=~[[%axis p=1]]]]] + [%call func=[%lambda p=[arg=[inp=[~ [p=[%atom p=%number q=%.n] name='b']] out=[p=[%atom p=%number q=%.n] name='']] body=[%increment val=[%limb p=~[[%name p=%b]]]] context=~]] arg=~] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [8 [1 17] 8 [7 [8 [[1 0] [1 0] 1 0] [1 6 [5 [0 13] 1 18] [4 0 12] 0 12] 0 1] 9 2 10 [6 7 [0 3] [1 23] 0 1] 0 1] 0 1] - !> (mint:jock text) + !> [%7 p=[%8 p=[%1 p=0] q=[p=[%1 p=[4 0 6]] q=[%0 p=1]]] q=[%9 p=2 q=[%0 p=1]]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> .*(0 [8 [1 17] 8 [7 [8 [[1 0] [1 0] 1 0] [1 6 [5 [0 13] 1 18] [4 0 12] 0 12] 0 1] 9 2 10 [6 7 [0 3] [1 23] 0 1] 0 1] 0 1]) + !> .* 0 + :+ %8 + +.p + [%7 p=[%8 p=[%1 p=0] q=[p=[%1 p=[4 0 6]] q=[%0 p=1]]] q=[%9 p=2 q=[%0 p=1]]] !> .*(0 (mint:jock text)) :: -- diff --git a/hoon/tests/lib/infix-arithmetic.hoon b/hoon/tests/lib/infix-arithmetic.hoon new file mode 100644 index 0000000..f0acdb2 --- /dev/null +++ b/hoon/tests/lib/infix-arithmetic.hoon @@ -0,0 +1,36 @@ +:: /lib/tests/infix-arithmetic +/+ jock, + test +/* hoon %txt /lib/mini/txt +:: +|% +++ text + '[ (41 + 5) - 4\0a (126 * 2) / 6\0a ((6 ** 2) + 6) % 100\0a (2 ** 5) + 10\0a 1 + 2 + 39\0a (50 - 9) + 1\0a]\0a' +++ test-tokenize + %+ expect-eq:test + !> ~[[%punctuator %'['] [%punctuator %'('] [%literal [[%number p=41] q=%.n]] [%punctuator %'+'] [%literal [[%number p=5] q=%.n]] [%punctuator %')'] [%punctuator %'-'] [%literal [[%number p=4] q=%.n]] [%punctuator %'('] [%literal [[%number p=126] q=%.n]] [%punctuator %'*'] [%literal [[%number p=2] q=%.n]] [%punctuator %')'] [%punctuator %'/'] [%literal [[%number p=6] q=%.n]] [%punctuator %'('] [%punctuator %'('] [%literal [[%number p=6] q=%.n]] [%punctuator %'*'] [%punctuator %'*'] [%literal [[%number p=2] q=%.n]] [%punctuator %')'] [%punctuator %'+'] [%literal [[%number p=6] q=%.n]] [%punctuator %')'] [%punctuator %'%'] [%literal [[%number p=100] q=%.n]] [%punctuator %'('] [%literal [[%number p=2] q=%.n]] [%punctuator %'*'] [%punctuator %'*'] [%literal [[%number p=5] q=%.n]] [%punctuator %')'] [%punctuator %'+'] [%literal [[%number p=10] q=%.n]] [%literal [[%number p=1] q=%.n]] [%punctuator %'+'] [%literal [[%number p=2] q=%.n]] [%punctuator %'+'] [%literal [[%number p=39] q=%.n]] [%punctuator %'('] [%literal [[%number p=50] q=%.n]] [%punctuator %'-'] [%literal [[%number p=9] q=%.n]] [%punctuator %')'] [%punctuator %'+'] [%literal [[%number p=1] q=%.n]] [%punctuator %']']] + !> (rash text parse-tokens:jock) +:: +++ test-jeam + %+ expect-eq:test + !> ^- jock:jock + [%list type=[%none p=~] val=~[[%operator op=%'-' a=[%operator op=%'+' a=[%atom p=[[%number p=41] q=%.n]] b=[~ [%atom p=[[%number p=5] q=%.n]]]] b=[~ [%atom p=[[%number p=4] q=%.n]]]] [%operator op=%'/' a=[%operator op=%'*' a=[%atom p=[[%number p=126] q=%.n]] b=[~ [%atom p=[[%number p=2] q=%.n]]]] b=[~ [%atom p=[[%number p=6] q=%.n]]]] [%operator op=%'%' a=[%operator op=%'+' a=[%operator op=%'**' a=[%atom p=[[%number p=6] q=%.n]] b=[~ [%atom p=[[%number p=2] q=%.n]]]] b=[~ [%atom p=[[%number p=6] q=%.n]]]] b=[~ [%atom p=[[%number p=100] q=%.n]]]] [%operator op=%'+' a=[%operator op=%'**' a=[%atom p=[[%number p=2] q=%.n]] b=[~ [%atom p=[[%number p=5] q=%.n]]]] b=[~ [%atom p=[[%number p=10] q=%.n]]]] [%operator op=%'+' a=[%atom p=[[%number p=1] q=%.n]] b=[~ [%operator op=%'+' a=[%atom p=[[%number p=2] q=%.n]] b=[~ [%atom p=[[%number p=39] q=%.n]]]]]] [%operator op=%'+' a=[%operator op=%'-' a=[%atom p=[[%number p=50] q=%.n]] b=[~ [%atom p=[[%number p=9] q=%.n]]]] b=[~ [%atom p=[[%number p=1] q=%.n]]]] [%atom p=[[%number p=0] q=%.n]]]] + !> (jeam:jock text) +:: +++ test-mint + %+ expect-eq:test + !> [p=[%8 p=[%9 p=3.061 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%8 p=[%9 p=348 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=41] q=[%1 p=5]]]] q=[%0 p=2]]]] q=[%1 p=4]]]] q=[%0 p=2]]]] q=[p=[%8 p=[%9 p=44.764 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%8 p=[%9 p=4 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=126] q=[%1 p=2]]]] q=[%0 p=2]]]] q=[%1 p=6]]]] q=[%0 p=2]]]] q=[p=[%8 p=[%9 p=6.014 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%8 p=[%9 p=348 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%8 p=[%9 p=3.062 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=6] q=[%1 p=2]]]] q=[%0 p=2]]]] q=[%1 p=6]]]] q=[%0 p=2]]]] q=[%1 p=100]]]] q=[%0 p=2]]]] q=[p=[%8 p=[%9 p=348 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%8 p=[%9 p=3.062 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=2] q=[%1 p=5]]]] q=[%0 p=2]]]] q=[%1 p=10]]]] q=[%0 p=2]]]] q=[p=[%8 p=[%9 p=348 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=1] q=[%8 p=[%9 p=348 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=2] q=[%1 p=39]]]] q=[%0 p=2]]]]]]] q=[%0 p=2]]]] q=[p=[%8 p=[%9 p=348 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%8 p=[%9 p=3.061 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=50] q=[%1 p=9]]]] q=[%0 p=2]]]] q=[%1 p=1]]]] q=[%0 p=2]]]] q=[%1 p=0]]]]]]] + !> +>:(mint:jock text) +:: +++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) + %+ expect-eq:test + !> .* 0 + :+ %8 + +.p + [p=[%8 p=[%9 p=3.061 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%8 p=[%9 p=348 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=41] q=[%1 p=5]]]] q=[%0 p=2]]]] q=[%1 p=4]]]] q=[%0 p=2]]]] q=[p=[%8 p=[%9 p=44.764 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%8 p=[%9 p=4 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=126] q=[%1 p=2]]]] q=[%0 p=2]]]] q=[%1 p=6]]]] q=[%0 p=2]]]] q=[p=[%8 p=[%9 p=6.014 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%8 p=[%9 p=348 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%8 p=[%9 p=3.062 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=6] q=[%1 p=2]]]] q=[%0 p=2]]]] q=[%1 p=6]]]] q=[%0 p=2]]]] q=[%1 p=100]]]] q=[%0 p=2]]]] q=[p=[%8 p=[%9 p=348 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%8 p=[%9 p=3.062 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=2] q=[%1 p=5]]]] q=[%0 p=2]]]] q=[%1 p=10]]]] q=[%0 p=2]]]] q=[p=[%8 p=[%9 p=348 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=1] q=[%8 p=[%9 p=348 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=2] q=[%1 p=39]]]] q=[%0 p=2]]]]]]] q=[%0 p=2]]]] q=[p=[%8 p=[%9 p=348 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%8 p=[%9 p=3.061 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=50] q=[%1 p=9]]]] q=[%0 p=2]]]] q=[%1 p=1]]]] q=[%0 p=2]]]] q=[%1 p=0]]]]]]] + !> .*(0 (mint:jock text)) +:: +-- diff --git a/hoon/tests/lib/infix-comparator.hoon b/hoon/tests/lib/infix-comparator.hoon new file mode 100644 index 0000000..14e8d36 --- /dev/null +++ b/hoon/tests/lib/infix-comparator.hoon @@ -0,0 +1,36 @@ +:: /lib/tests/infix-comparator +/+ jock, + test +/* hoon %txt /lib/mini/txt +:: +|% +++ text + '(\0a 1 < 0\0a 0 <= 1\0a 0 == 1\0a 1 > 0\0a 0 >= 0\0a 1 != 1\0a)\0a' +++ test-tokenize + %+ expect-eq:test + !> ~[[%punctuator %'('] [%literal [[%number p=1] q=%.n]] [%punctuator %'<'] [%literal [[%number p=0] q=%.n]] [%literal [[%number p=0] q=%.n]] [%punctuator %'<'] [%punctuator %'='] [%literal [[%number p=1] q=%.n]] [%literal [[%number p=0] q=%.n]] [%punctuator %'='] [%punctuator %'='] [%literal [[%number p=1] q=%.n]] [%literal [[%number p=1] q=%.n]] [%punctuator %'>'] [%literal [[%number p=0] q=%.n]] [%literal [[%number p=0] q=%.n]] [%punctuator %'>'] [%punctuator %'='] [%literal [[%number p=0] q=%.n]] [%literal [[%number p=1] q=%.n]] [%punctuator %'!'] [%punctuator %'='] [%literal [[%number p=1] q=%.n]] [%punctuator %')']] + !> (rash text parse-tokens:jock) +:: +++ test-jeam + %+ expect-eq:test + !> ^- jock:jock + [p=[%compare comp=%'<' a=[%atom p=[[%number p=1] q=%.n]] b=[%atom p=[[%number p=0] q=%.n]]] q=[p=[%compare comp=%'<=' a=[%atom p=[[%number p=0] q=%.n]] b=[%atom p=[[%number p=1] q=%.n]]] q=[p=[%compare comp=%'==' a=[%atom p=[[%number p=0] q=%.n]] b=[%atom p=[[%number p=1] q=%.n]]] q=[p=[%compare comp=%'>' a=[%atom p=[[%number p=1] q=%.n]] b=[%atom p=[[%number p=0] q=%.n]]] q=[p=[%compare comp=%'>=' a=[%atom p=[[%number p=0] q=%.n]] b=[%atom p=[[%number p=0] q=%.n]]] q=[%compare comp=%'!=' a=[%atom p=[[%number p=1] q=%.n]] b=[%atom p=[[%number p=1] q=%.n]]]]]]]] + !> (jeam:jock text) +:: +++ test-mint + %+ expect-eq:test + !> [p=[%8 p=[%9 p=358.123 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=1] q=[%1 p=0]]]] q=[%0 p=2]]]] q=[p=[%8 p=[%9 p=340 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=0] q=[%1 p=1]]]] q=[%0 p=2]]]] q=[p=[%5 p=[%1 p=0] q=[%1 p=1]] q=[p=[%8 p=[%9 p=703 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=1] q=[%1 p=0]]]] q=[%0 p=2]]]] q=[p=[%8 p=[%9 p=94 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=0] q=[%1 p=0]]]] q=[%0 p=2]]]] q=[%6 p=[%5 p=[%1 p=1] q=[%1 p=1]] q=[%1 p=1] r=[%1 p=0]]]]]]] + !> +>:(mint:jock text) +:: +++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) + %+ expect-eq:test + !> .* 0 + :+ %8 + +.p + [p=[%8 p=[%9 p=358.123 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=1] q=[%1 p=0]]]] q=[%0 p=2]]]] q=[p=[%8 p=[%9 p=340 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=0] q=[%1 p=1]]]] q=[%0 p=2]]]] q=[p=[%5 p=[%1 p=0] q=[%1 p=1]] q=[p=[%8 p=[%9 p=703 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=1] q=[%1 p=0]]]] q=[%0 p=2]]]] q=[p=[%8 p=[%9 p=94 q=[%0 p=2]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=0] q=[%1 p=0]]]] q=[%0 p=2]]]] q=[%6 p=[%5 p=[%1 p=1] q=[%1 p=1]] q=[%1 p=1] r=[%1 p=0]]]]]]] + !> .*(0 (mint:jock text)) +:: +-- diff --git a/hoon/tests/lib/inline-lambda-call.hoon b/hoon/tests/lib/inline-lambda-call.hoon index d7a73a9..622e9b4 100644 --- a/hoon/tests/lib/inline-lambda-call.hoon +++ b/hoon/tests/lib/inline-lambda-call.hoon @@ -1,29 +1,36 @@ :: /lib/tests/inline-lambda-call /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text - 'lambda (b:@) -> @ {\0a +(b)\0a}(23)' + 'lambda (b:@) -> @ {\0a +(b)\0a}(41)\0a' ++ test-tokenize %+ expect-eq:test - !> ~[[%keyword %lambda] [%punctuator %'('] [%name %b] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%punctuator %'@'] [%punctuator %'{'] [%punctuator %'+'] [%punctuator %'('] [%name %b] [%punctuator %')'] [%punctuator %'}'] [%punctuator %'('] [%literal [[%number p=23] q=%.n]] [%punctuator %')']] + !> ~[[%keyword %lambda] [%punctuator %'('] [%name %b] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%punctuator %'@'] [%punctuator %'{'] [%punctuator %'+'] [%punctuator %'('] [%name %b] [%punctuator %')'] [%punctuator %'}'] [%punctuator %'('] [%literal [[%number p=41] q=%.n]] [%punctuator %')']] !> (rash text parse-tokens:jock) :: ++ test-jeam %+ expect-eq:test !> ^- jock:jock - [%call func=[%lambda p=[arg=[inp=[~ [p=[%atom p=%number q=%.n] name=%b]] out=[p=[%atom p=%number q=%.n] name=%$]] body=[%increment val=[%limb p=~[[%name p=%b]]]] payload=~]] arg=[~ [%atom p=[[%number p=23] q=%.n]]]] + [%call func=[%lambda p=[arg=[inp=[~ [p=[%atom p=%number q=%.n] name='b']] out=[p=[%atom p=%number q=%.n] name='']] body=[%increment val=[%limb p=~[[%name p=%b]]]] context=~]] arg=[~ [%atom p=[[%number p=41] q=%.n]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [7 [8 [1 0] [1 4 0 6] 0 1] 9 2 10 [6 7 [0 3] 1 23] 0 1] - !> (mint:jock text) + !> [%7 p=[%8 p=[%1 p=0] q=[p=[%1 p=[4 0 6]] q=[%0 p=1]]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=41]]] q=[%0 p=1]]]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> .*(0 [7 [8 [1 0] [1 4 0 6] 0 1] 9 2 10 [6 7 [0 3] 1 23] 0 1]) + !> .* 0 + :+ %8 + +.p + [%7 p=[%8 p=[%1 p=0] q=[p=[%1 p=[4 0 6]] q=[%0 p=1]]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=41]]] q=[%0 p=1]]]] !> .*(0 (mint:jock text)) :: -- diff --git a/hoon/tests/lib/inline-lambda-no-arg.hoon b/hoon/tests/lib/inline-lambda-no-arg.hoon index c075898..dbe7a56 100644 --- a/hoon/tests/lib/inline-lambda-no-arg.hoon +++ b/hoon/tests/lib/inline-lambda-no-arg.hoon @@ -1,29 +1,36 @@ :: /lib/tests/inline-lambda-no-arg /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text - 'lambda (b:@) -> @ {\0a +(b)\0a}()' + 'lambda (b:@) -> @ {\0a +(b)\0a}()\0a' ++ test-tokenize %+ expect-eq:test - !> ~[[%keyword %lambda] [%punctuator %'('] [%name %b] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%punctuator %'@'] [%punctuator %'{'] [%punctuator %'+'] [%punctuator %'('] [%name %b] [%punctuator %')'] [%punctuator %'}'] [%punctuator %'('] [%punctuator %')']] + !> ~[[%keyword %let] [%name %a] [%punctuator %':'] [%punctuator %'@'] [%punctuator %'='] [%literal [[%number p=5] q=%.n]] [%punctuator %';'] [%keyword %let] [%name %b] [%punctuator %':'] [%punctuator %'@'] [%punctuator %'='] [%literal [[%number p=0] q=%.n]] [%punctuator %';'] [%keyword %loop] [%punctuator %';'] [%keyword %if] [%name %a] [%punctuator %'='] [%punctuator %'='] [%punctuator %'+'] [%punctuator %'('] [%name %b] [%punctuator %')'] [%punctuator %'{'] [%name %b] [%punctuator %'}'] [%keyword %else] [%punctuator %'{'] [%name %b] [%punctuator %'='] [%punctuator %'+'] [%punctuator %'('] [%name %b] [%punctuator %')'] [%punctuator %';'] [%punctuator %'$'] [%punctuator %'('] [%name %b] [%punctuator %')'] [%punctuator %'}']] !> (rash text parse-tokens:jock) :: ++ test-jeam %+ expect-eq:test !> ^- jock:jock - [%call func=[%lambda p=[arg=[inp=[~ [p=[%atom p=%number q=%.n] name=%b]] out=[p=[%atom p=%number q=%.n] name=%$]] body=[%increment val=[%limb p=~[[%name p=%b]]]] payload=~]] arg=~] + [%let type=[p=[%atom p=%number q=%.n] name='a'] val=[%atom p=[[%number p=5] q=%.n]] next=[%let type=[p=[%atom p=%number q=%.n] name='b'] val=[%atom p=[[%number p=0] q=%.n]] next=[%loop next=[%if cond=[%compare comp=%'==' a=[%limb p=~[[%name p=%a]]] b=[%increment val=[%limb p=~[[%name p=%b]]]]] then=[%limb p=~[[%name p=%b]]] after=[%else then=[%edit limb=~[[%name p=%b]] val=[%increment val=[%limb p=~[[%name p=%b]]]] next=[%call func=[%limb p=~[[%axis p=0]]] arg=[~ [%limb p=~[[%name p=%b]]]]]]]]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [7 [8 [1 0] [1 4 0 6] 0 1] 9 2 0 1] - !> (mint:jock text) + !> [%8 p=[%1 p=5] q=[%8 p=[%1 p=0] q=[%8 p=[%1 p=[6 [5 [0 14] 4 0 6] [0 6] 7 [10 [6 4 0 6] 0 1] 9 2 10 [6 7 [0 1] 0 6] 0 1]] q=[%9 p=2 q=[%0 p=1]]]]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> .*(0 [7 [8 [1 0] [1 4 0 6] 0 1] 9 2 0 1]) + !> .* 0 + :+ %8 + +.p + [%8 p=[%1 p=5] q=[%8 p=[%1 p=0] q=[%8 p=[%1 p=[6 [5 [0 14] 4 0 6] [0 6] 7 [10 [6 4 0 6] 0 1] 9 2 10 [6 7 [0 1] 0 6] 0 1]] q=[%9 p=2 q=[%0 p=1]]]]] !> .*(0 (mint:jock text)) :: -- diff --git a/hoon/tests/lib/inline-point.hoon b/hoon/tests/lib/inline-point.hoon index b739477..20b2be1 100644 --- a/hoon/tests/lib/inline-point.hoon +++ b/hoon/tests/lib/inline-point.hoon @@ -1,29 +1,36 @@ :: /lib/tests/inline-point /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text - 'let a: @ = 5;\0alet b: @ = 0;\0aloop;\0aif a == +(b) {\0a b\0a} else {\0a b = +(b);\0a $\0a}' + 'let a: @ = 5;\0alet b: @ = 0;\0aloop;\0aif a == +(b) {\0a b\0a} else {\0a b = +(b);\0a $(b)\0a}\0a\0a' ++ test-tokenize %+ expect-eq:test - !> ~[[%keyword %let] [%name %a] [%punctuator %':'] [%punctuator %'@'] [%punctuator %'='] [%literal [[%number p=5] q=%.n]] [%punctuator %';'] [%keyword %let] [%name %b] [%punctuator %':'] [%punctuator %'@'] [%punctuator %'='] [%literal [[%number p=0] q=%.n]] [%punctuator %';'] [%keyword %loop] [%punctuator %';'] [%keyword %if] [%name %a] [%punctuator %'='] [%punctuator %'='] [%punctuator %'+'] [%punctuator %'('] [%name %b] [%punctuator %')'] [%punctuator %'{'] [%name %b] [%punctuator %'}'] [%keyword %else] [%punctuator %'{'] [%name %b] [%punctuator %'='] [%punctuator %'+'] [%punctuator %'('] [%name %b] [%punctuator %')'] [%punctuator %';'] [%punctuator %'$'] [%punctuator %'}']] + !> ~[[%keyword %func] [%name %a] [%punctuator %'(('] [%name %c] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%punctuator %'@'] [%punctuator %'{'] [%punctuator %'+'] [%punctuator %'('] [%name %c] [%punctuator %')'] [%punctuator %'}'] [%punctuator %';'] [%keyword %let] [%name %b] [%punctuator %':'] [%punctuator %'@'] [%punctuator %'='] [%literal [[%number p=42] q=%.n]] [%punctuator %';'] [%name %b] [%punctuator %'='] [%name %a] [%punctuator %'(('] [%literal [[%number p=23] q=%.n]] [%punctuator %')'] [%punctuator %';'] [%name %b]] !> (rash text parse-tokens:jock) :: ++ test-jeam %+ expect-eq:test !> ^- jock:jock - [%let type=[p=[%atom p=%number q=%.n] name=%a] val=[%atom p=[[%number p=5] q=%.n]] next=[%let type=[p=[%atom p=%number q=%.n] name=%b] val=[%atom p=[[%number p=0] q=%.n]] next=[%loop next=[%if cond=[%compare comp=%'==' a=[%limb p=~[[%name p=%a]]] b=[%increment val=[%limb p=~[[%name p=%b]]]]] then=[%limb p=~[[%name p=%b]]] after=[%else then=[%edit limb=~[[%name p=%b]] val=[%increment val=[%limb p=~[[%name p=%b]]]] next=[%call func=[%limb p=~[[%axis p=0]]] arg=~]]]]]]] + [%func type=[p=[%core p=[%.y p=[inp=[~ [p=[%atom p=%number q=%.n] name='c']] out=[p=[%atom p=%number q=%.n] name='']]] q=~] name='a'] body=[%lambda p=[arg=[inp=[~ [p=[%atom p=%number q=%.n] name='c']] out=[p=[%atom p=%number q=%.n] name='']] body=[%increment val=[%limb p=~[[%name p=%c]]]] context=~]] next=[%let type=[p=[%atom p=%number q=%.n] name='b'] val=[%atom p=[[%number p=42] q=%.n]] next=[%edit limb=~[[%name p=%b]] val=[%call func=[%limb p=~[[%name p=%a]]] arg=[~ [%atom p=[[%number p=23] q=%.n]]]] next=[%limb p=~[[%name p=%b]]]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [8 [1 5] 8 [1 0] 8 [1 6 [5 [0 14] 4 0 6] [0 6] 7 [10 [6 4 0 6] 0 1] 9 2 0 1] 9 2 0 1] - !> (mint:jock text) + !> [%8 p=[%8 p=[%1 p=0] q=[p=[%1 p=[4 0 6]] q=[%0 p=1]]] q=[%8 p=[%1 p=42] q=[%7 p=[%10 p=[p=2 q=[%8 p=[%0 p=6] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=23]]] q=[%0 p=2]]]]] q=[%0 p=1]] q=[%0 p=2]]]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> .*(0 [8 [1 5] 8 [1 0] 8 [1 6 [5 [0 14] 4 0 6] [0 6] 7 [10 [6 4 0 6] 0 1] 9 2 0 1] 9 2 0 1]) + !> .* 0 + :+ %8 + +.p + [%8 p=[%8 p=[%1 p=0] q=[p=[%1 p=[4 0 6]] q=[%0 p=1]]] q=[%8 p=[%1 p=42] q=[%7 p=[%10 p=[p=2 q=[%8 p=[%0 p=6] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=23]]] q=[%0 p=2]]]]] q=[%0 p=1]] q=[%0 p=2]]]] !> .*(0 (mint:jock text)) :: -- diff --git a/hoon/tests/lib/let-edit.hoon b/hoon/tests/lib/let-edit.hoon index a95d9fe..d4de134 100644 --- a/hoon/tests/lib/let-edit.hoon +++ b/hoon/tests/lib/let-edit.hoon @@ -1,10 +1,11 @@ :: /lib/tests/let-edit /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text - 'let a: ? = true;\0a\0aa = false;\0a\0aa' + 'let a: ? = true;\0a\0aa = false;\0a\0aa\0a\0a' ++ test-tokenize %+ expect-eq:test !> ~[[%keyword %let] [%name %a] [%punctuator %':'] [%punctuator %'?'] [%punctuator %'='] [%literal [[%loobean p=%.y] q=%.n]] [%punctuator %';'] [%name %a] [%punctuator %'='] [%literal [[%loobean p=%.n] q=%.n]] [%punctuator %';'] [%name %a]] @@ -13,17 +14,23 @@ ++ test-jeam %+ expect-eq:test !> ^- jock:jock - [%let type=[p=[%atom p=%loobean q=%.n] name=%a] val=[%atom p=[[%loobean p=%.y] q=%.n]] next=[%edit limb=~[[%name p=%a]] val=[%atom p=[[%loobean p=%.n] q=%.n]] next=[%limb p=~[[%name p=%a]]]]] + [%let type=[p=[%atom p=%loobean q=%.n] name='a'] val=[%atom p=[[%loobean p=%.y] q=%.n]] next=[%edit limb=~[[%name p=%a]] val=[%atom p=[[%loobean p=%.n] q=%.n]] next=[%limb p=~[[%name p=%a]]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [8 [1 0] 7 [10 [2 1 1] 0 1] 0 2] - !> (mint:jock text) + !> [%8 p=[%1 p=0] q=[%7 p=[%10 p=[p=2 q=[%1 p=1]] q=[%0 p=1]] q=[%0 p=2]]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> .*(0 [8 [1 0] 7 [10 [2 1 1] 0 1] 0 2]) + !> .* 0 + :+ %8 + +.p + [%8 p=[%1 p=0] q=[%7 p=[%10 p=[p=2 q=[%1 p=1]] q=[%0 p=1]] q=[%0 p=2]]] !> .*(0 (mint:jock text)) :: -- diff --git a/hoon/tests/lib/let-inner-exp.hoon b/hoon/tests/lib/let-inner-exp.hoon index a363dd4..ced6f10 100644 --- a/hoon/tests/lib/let-inner-exp.hoon +++ b/hoon/tests/lib/let-inner-exp.hoon @@ -1,30 +1,36 @@ :: /lib/tests/let-inner-exp /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text - 'let a = {\0a 3\0a};\0a\0aa' + 'let a = 42;\0a\0aa\0a' ++ test-tokenize %+ expect-eq:test - !> ~[[%keyword %let] [%name %a] [%punctuator %'='] [%punctuator %'{'] [%literal [[%number p=3] q=%.n]] [%punctuator %'}'] [%punctuator %';'] [%name %a]] + !> ~[[%keyword %let] [%name %a] [%punctuator %'='] [%literal [[%number p=42] q=%.n]] [%punctuator %';'] [%name %a]] !> (rash text parse-tokens:jock) :: ++ test-jeam %+ expect-eq:test !> ^- jock:jock - *jock:jock - :: [%let type=[p=[%none ~] name=%a] val=[%set type=[%none ~] val=`(set jype:jock)`(silt [%atom p=[[%number p=3] q=%.n]])] next=[%limb p=~[[%name p=%a]]]] + [%let type=[p=[%none p=~] name='a'] val=[%atom p=[[%number p=42] q=%.n]] next=[%limb p=~[[%name p=%a]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [8 [1 [1 3] 0 0] 0 2] - !> (mint:jock text) + !> [%8 p=[%1 p=42] q=[%0 p=2]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> .*(0 [8 [1 [1 3] 0 0] 0 2]) + !> .* 0 + :+ %8 + +.p + [%8 p=[%1 p=42] q=[%0 p=2]] !> .*(0 (mint:jock text)) :: -- diff --git a/hoon/tests/lib/lists-indexing.hoon b/hoon/tests/lib/lists-indexing.hoon new file mode 100644 index 0000000..d08a298 --- /dev/null +++ b/hoon/tests/lib/lists-indexing.hoon @@ -0,0 +1,36 @@ +:: /lib/tests/lists-indexing +/+ jock, + test +/* hoon %txt /lib/mini/txt +:: +|% +++ text + 'let a = [100 200 300 400 500];\0alet b:List(@ @) = [(10 20) (30 40) (50 60)];\0a\0a(hoon.snag(0 a) hoon.snag(2 b))\0a' +++ test-tokenize + %+ expect-eq:test + !> ~[[%keyword %let] [%name %a] [%punctuator %'='] [%punctuator %'['] [%literal [[%number p=100] q=%.n]] [%literal [[%number p=200] q=%.n]] [%literal [[%number p=300] q=%.n]] [%literal [[%number p=400] q=%.n]] [%literal [[%number p=500] q=%.n]] [%punctuator %']'] [%punctuator %';'] [%keyword %let] [%name %b] [%punctuator %':'] [%type 'List'] [%punctuator %'(('] [%punctuator %'@'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'='] [%punctuator %'['] [%punctuator %'('] [%literal [[%number p=10] q=%.n]] [%literal [[%number p=20] q=%.n]] [%punctuator %')'] [%punctuator %'('] [%literal [[%number p=30] q=%.n]] [%literal [[%number p=40] q=%.n]] [%punctuator %')'] [%punctuator %'('] [%literal [[%number p=50] q=%.n]] [%literal [[%number p=60] q=%.n]] [%punctuator %')'] [%punctuator %']'] [%punctuator %';'] [%punctuator %'('] [%name %hoon] [%punctuator %'.'] [%name %snag] [%punctuator %'(('] [%literal [[%number p=0] q=%.n]] [%name %a] [%punctuator %')'] [%name %hoon] [%punctuator %'.'] [%name %snag] [%punctuator %'(('] [%literal [[%number p=2] q=%.n]] [%name %b] [%punctuator %')'] [%punctuator %')']] + !> (rash text parse-tokens:jock) +:: +++ test-jeam + %+ expect-eq:test + !> ^- jock:jock + [%let type=[p=[%none p=~] name='a'] val=[%list type=[%none p=~] val=~[[%atom p=[[%number p=100] q=%.n]] [%atom p=[[%number p=200] q=%.n]] [%atom p=[[%number p=300] q=%.n]] [%atom p=[[%number p=400] q=%.n]] [%atom p=[[%number p=500] q=%.n]] [%atom p=[[%number p=0] q=%.n]]]] next=[%let type=[p=[%list type=[[p=[p=[%atom p=%number q=%.n] name=''] q=[p=[%atom p=%number q=%.n] name='']] name='']] name='b'] val=[%list type=[%none p=~] val=~[[p=[%atom p=[[%number p=10] q=%.n]] q=[%atom p=[[%number p=20] q=%.n]]] [p=[%atom p=[[%number p=30] q=%.n]] q=[%atom p=[[%number p=40] q=%.n]]] [p=[%atom p=[[%number p=50] q=%.n]] q=[%atom p=[[%number p=60] q=%.n]]] [%atom p=[[%number p=0] q=%.n]]]] next=[p=[%call func=[%limb p=~[[%name p=%hoon] [%name p=%snag]]] arg=[~ [p=[%atom p=[[%number p=0] q=%.n]] q=[%limb p=~[[%name p=%a]]]]]] q=[%call func=[%limb p=~[[%name p=%hoon] [%name p=%snag]]] arg=[~ [p=[%atom p=[[%number p=2] q=%.n]] q=[%limb p=~[[%name p=%b]]]]]]]]] + !> (jeam:jock text) +:: +++ test-mint + %+ expect-eq:test + !> [%8 p=[p=[%1 p=100] q=[p=[%1 p=200] q=[p=[%1 p=300] q=[p=[%1 p=400] q=[p=[%1 p=500] q=[%1 p=0]]]]]] q=[%8 p=[p=[p=[%1 p=10] q=[%1 p=20]] q=[p=[p=[%1 p=30] q=[%1 p=40]] q=[p=[p=[%1 p=50] q=[%1 p=60]] q=[%1 p=0]]]] q=[p=[%8 p=[%9 p=84 q=[%0 p=14]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=0] q=[%0 p=6]]]] q=[%0 p=2]]]] q=[%8 p=[%9 p=84 q=[%0 p=14]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=2] q=[%0 p=2]]]] q=[%0 p=2]]]]]]] + !> +>:(mint:jock text) +:: +++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) + %+ expect-eq:test + !> .* 0 + :+ %8 + +.p + [%8 p=[p=[%1 p=100] q=[p=[%1 p=200] q=[p=[%1 p=300] q=[p=[%1 p=400] q=[p=[%1 p=500] q=[%1 p=0]]]]]] q=[%8 p=[p=[p=[%1 p=10] q=[%1 p=20]] q=[p=[p=[%1 p=30] q=[%1 p=40]] q=[p=[p=[%1 p=50] q=[%1 p=60]] q=[%1 p=0]]]] q=[p=[%8 p=[%9 p=84 q=[%0 p=14]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=0] q=[%0 p=6]]]] q=[%0 p=2]]]] q=[%8 p=[%9 p=84 q=[%0 p=14]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=2] q=[%0 p=2]]]] q=[%0 p=2]]]]]]] + !> .*(0 (mint:jock text)) +:: +-- diff --git a/hoon/tests/lib/lists-nested.hoon b/hoon/tests/lib/lists-nested.hoon index 1f0a8ad..0f24d24 100644 --- a/hoon/tests/lib/lists-nested.hoon +++ b/hoon/tests/lib/lists-nested.hoon @@ -1,29 +1,36 @@ :: /lib/tests/lists-nested /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text - 'let a:List(@) = [1];\0a\0alet b:List(@) = [1 2];\0a\0alet c:List(@) = [1 2 3];\0a\0alet d:List((@ @)) = [(1 2) (3 4)];\0a\0alet e:List((@ List(@))) = [(1 [2]) (3 [4 5])];\0a\0a(a b c d e)' + 'let a:List(@) = [1];\0a\0alet b:List(@) = [1 2];\0a\0alet c:List(@) = [1 2 3];\0a\0alet d:List((@ @)) = [(1 2) (3 4)];\0a\0alet e:List((@ List(@))) = [(1 [2]) (3 [4 5])];\0a\0a(a b c d e)\0a' ++ test-tokenize %+ expect-eq:test - !> ~[[%keyword %let] [%name %a] [%punctuator %':'] [%type 'List'] [%punctuator %'('] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'='] [%punctuator %'['] [%literal [[%number p=1] q=%.n]] [%punctuator %']'] [%punctuator %';'] [%keyword %let] [%name %b] [%punctuator %':'] [%type 'List'] [%punctuator %'('] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'='] [%punctuator %'['] [%literal [[%number p=1] q=%.n]] [%literal [[%number p=2] q=%.n]] [%punctuator %']'] [%punctuator %';'] [%keyword %let] [%name %c] [%punctuator %':'] [%type 'List'] [%punctuator %'('] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'='] [%punctuator %'['] [%literal [[%number p=1] q=%.n]] [%literal [[%number p=2] q=%.n]] [%literal [[%number p=3] q=%.n]] [%punctuator %']'] [%punctuator %';'] [%keyword %let] [%name %d] [%punctuator %':'] [%type 'List'] [%punctuator %'('] [%punctuator %'('] [%punctuator %'@'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %')'] [%punctuator %'='] [%punctuator %'['] [%punctuator %'('] [%literal [[%number p=1] q=%.n]] [%literal [[%number p=2] q=%.n]] [%punctuator %')'] [%punctuator %'('] [%literal [[%number p=3] q=%.n]] [%literal [[%number p=4] q=%.n]] [%punctuator %')'] [%punctuator %']'] [%punctuator %';'] [%keyword %let] [%name %e] [%punctuator %':'] [%type 'List'] [%punctuator %'('] [%punctuator %'('] [%punctuator %'@'] [%type 'List'] [%punctuator %'('] [%punctuator %'@'] [%punctuator %')'] [%punctuator %')'] [%punctuator %')'] [%punctuator %'='] [%punctuator %'['] [%punctuator %'('] [%literal [[%number p=1] q=%.n]] [%punctuator %'['] [%literal [[%number p=2] q=%.n]] [%punctuator %']'] [%punctuator %')'] [%punctuator %'('] [%literal [[%number p=3] q=%.n]] [%punctuator %'['] [%literal [[%number p=4] q=%.n]] [%literal [[%number p=5] q=%.n]] [%punctuator %']'] [%punctuator %')'] [%punctuator %']'] [%punctuator %';'] [%punctuator %'('] [%name %a] [%name %b] [%name %c] [%name %d] [%name %e] [%punctuator %')']] + !> ~[[%keyword %let] [%name %a] [%punctuator %':'] [%type 'List'] [%punctuator %'(('] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'='] [%punctuator %'['] [%literal [[%number p=1] q=%.n]] [%punctuator %']'] [%punctuator %';'] [%keyword %let] [%name %b] [%punctuator %':'] [%type 'List'] [%punctuator %'(('] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'='] [%punctuator %'['] [%literal [[%number p=1] q=%.n]] [%literal [[%number p=2] q=%.n]] [%punctuator %']'] [%punctuator %';'] [%keyword %let] [%name %c] [%punctuator %':'] [%type 'List'] [%punctuator %'(('] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'='] [%punctuator %'['] [%literal [[%number p=1] q=%.n]] [%literal [[%number p=2] q=%.n]] [%literal [[%number p=3] q=%.n]] [%punctuator %']'] [%punctuator %';'] [%keyword %let] [%name %d] [%punctuator %':'] [%type 'List'] [%punctuator %'(('] [%punctuator %'('] [%punctuator %'@'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %')'] [%punctuator %'='] [%punctuator %'['] [%punctuator %'('] [%literal [[%number p=1] q=%.n]] [%literal [[%number p=2] q=%.n]] [%punctuator %')'] [%punctuator %'('] [%literal [[%number p=3] q=%.n]] [%literal [[%number p=4] q=%.n]] [%punctuator %')'] [%punctuator %']'] [%punctuator %';'] [%keyword %let] [%name %e] [%punctuator %':'] [%type 'List'] [%punctuator %'(('] [%punctuator %'('] [%punctuator %'@'] [%type 'List'] [%punctuator %'(('] [%punctuator %'@'] [%punctuator %')'] [%punctuator %')'] [%punctuator %')'] [%punctuator %'='] [%punctuator %'['] [%punctuator %'('] [%literal [[%number p=1] q=%.n]] [%punctuator %'['] [%literal [[%number p=2] q=%.n]] [%punctuator %']'] [%punctuator %')'] [%punctuator %'('] [%literal [[%number p=3] q=%.n]] [%punctuator %'['] [%literal [[%number p=4] q=%.n]] [%literal [[%number p=5] q=%.n]] [%punctuator %']'] [%punctuator %')'] [%punctuator %']'] [%punctuator %';'] [%punctuator %'('] [%name %a] [%name %b] [%name %c] [%name %d] [%name %e] [%punctuator %')']] !> (rash text parse-tokens:jock) :: ++ test-jeam %+ expect-eq:test !> ^- jock:jock - [%let type=[p=[%list type=[p=[%atom p=%number q=%.n] name=%$]] name=%a] val=[%list type=[%none ~] val=~[[%atom p=[[%number p=1] q=%.n]] [%atom p=[[%number p=0] q=%.n]]]] next=[%let type=[p=[%list type=[p=[%atom p=%number q=%.n] name=%$]] name=%b] val=[%list type=[%none ~] val=~[[%atom p=[[%number p=1] q=%.n]] [%atom p=[[%number p=2] q=%.n]] [%atom p=[[%number p=0] q=%.n]]]] next=[%let type=[p=[%list type=[p=[%atom p=%number q=%.n] name=%$]] name=%c] val=[%list type=[%none ~] val=~[[%atom p=[[%number p=1] q=%.n]] [%atom p=[[%number p=2] q=%.n]] [%atom p=[[%number p=3] q=%.n]] [%atom p=[[%number p=0] q=%.n]]]] next=[%let type=[p=[%list type=[[p=[p=[%atom p=%number q=%.n] name=%$] q=[p=[%atom p=%number q=%.n] name=%$]] name=%$]] name=%d] val=[%list type=[%none ~] val=~[[p=[%atom p=[[%number p=1] q=%.n]] q=[%atom p=[[%number p=2] q=%.n]]] [p=[%atom p=[[%number p=3] q=%.n]] q=[%atom p=[[%number p=4] q=%.n]]] [%atom p=[[%number p=0] q=%.n]]]] next=[%let type=[p=[%list type=[[p=[p=[%atom p=%number q=%.n] name=%$] q=[p=[%list type=[p=[%atom p=%number q=%.n] name=%$]] name=%$]] name=%$]] name=%e] val=[%list type=[%none ~] val=~[[p=[%atom p=[[%number p=1] q=%.n]] q=[%list type=[%none ~] val=~[[%atom p=[[%number p=2] q=%.n]] [%atom p=[[%number p=0] q=%.n]]]]] [p=[%atom p=[[%number p=3] q=%.n]] q=[%list type=[%none ~] val=~[[%atom p=[[%number p=4] q=%.n]] [%atom p=[[%number p=5] q=%.n]] [%atom p=[[%number p=0] q=%.n]]]]] [%atom p=[[%number p=0] q=%.n]]]] next=[p=[%limb p=~[[%name p=%a]]] q=[p=[%limb p=~[[%name p=%b]]] q=[p=[%limb p=~[[%name p=%c]]] q=[p=[%limb p=~[[%name p=%d]]] q=[%limb p=~[[%name p=%e]]]]]]]]]]]] + [%let type=[p=[%list type=[p=[%atom p=%number q=%.n] name='']] name='a'] val=[%list type=[%none p=~] val=~[[%atom p=[[%number p=1] q=%.n]] [%atom p=[[%number p=0] q=%.n]]]] next=[%let type=[p=[%list type=[p=[%atom p=%number q=%.n] name='']] name='b'] val=[%list type=[%none p=~] val=~[[%atom p=[[%number p=1] q=%.n]] [%atom p=[[%number p=2] q=%.n]] [%atom p=[[%number p=0] q=%.n]]]] next=[%let type=[p=[%list type=[p=[%atom p=%number q=%.n] name='']] name='c'] val=[%list type=[%none p=~] val=~[[%atom p=[[%number p=1] q=%.n]] [%atom p=[[%number p=2] q=%.n]] [%atom p=[[%number p=3] q=%.n]] [%atom p=[[%number p=0] q=%.n]]]] next=[%let type=[p=[%list type=[[p=[p=[%atom p=%number q=%.n] name=''] q=[p=[%atom p=%number q=%.n] name='']] name='']] name='d'] val=[%list type=[%none p=~] val=~[[p=[%atom p=[[%number p=1] q=%.n]] q=[%atom p=[[%number p=2] q=%.n]]] [p=[%atom p=[[%number p=3] q=%.n]] q=[%atom p=[[%number p=4] q=%.n]]] [%atom p=[[%number p=0] q=%.n]]]] next=[%let type=[p=[%list type=[[p=[p=[%atom p=%number q=%.n] name=''] q=[p=[%list type=[p=[%atom p=%number q=%.n] name='']] name='List']] name='']] name='e'] val=[%list type=[%none p=~] val=~[[p=[%atom p=[[%number p=1] q=%.n]] q=[%list type=[%none p=~] val=~[[%atom p=[[%number p=2] q=%.n]] [%atom p=[[%number p=0] q=%.n]]]]] [p=[%atom p=[[%number p=3] q=%.n]] q=[%list type=[%none p=~] val=~[[%atom p=[[%number p=4] q=%.n]] [%atom p=[[%number p=5] q=%.n]] [%atom p=[[%number p=0] q=%.n]]]]] [%atom p=[[%number p=0] q=%.n]]]] next=[p=[%limb p=~[[%name p=%a]]] q=[p=[%limb p=~[[%name p=%b]]] q=[p=[%limb p=~[[%name p=%c]]] q=[p=[%limb p=~[[%name p=%d]]] q=[%limb p=~[[%name p=%e]]]]]]]]]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [8 [1 1] 8 [[1 1] 1 2] 8 [[1 1] [1 2] 1 3] 8 [[[1 1] 1 2] [1 3] 1 4] 8 [[[1 1] 1 2] [1 3] [1 4] 1 5] [0 62] [0 30] [0 14] [0 6] 0 2] - !> (mint:jock text) + !> [%8 p=[p=[%1 p=1] q=[%1 p=0]] q=[%8 p=[p=[%1 p=1] q=[p=[%1 p=2] q=[%1 p=0]]] q=[%8 p=[p=[%1 p=1] q=[p=[%1 p=2] q=[p=[%1 p=3] q=[%1 p=0]]]] q=[%8 p=[p=[p=[%1 p=1] q=[%1 p=2]] q=[p=[p=[%1 p=3] q=[%1 p=4]] q=[%1 p=0]]] q=[%8 p=[p=[p=[%1 p=1] q=[p=[%1 p=2] q=[%1 p=0]]] q=[p=[p=[%1 p=3] q=[p=[%1 p=4] q=[p=[%1 p=5] q=[%1 p=0]]]] q=[%1 p=0]]] q=[p=[%0 p=62] q=[p=[%0 p=30] q=[p=[%0 p=14] q=[p=[%0 p=6] q=[%0 p=2]]]]]]]]]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> .*(0 [8 [1 1] 8 [[1 1] 1 2] 8 [[1 1] [1 2] 1 3] 8 [[[1 1] 1 2] [1 3] 1 4] 8 [[[1 1] 1 2] [1 3] [1 4] 1 5] [0 62] [0 30] [0 14] [0 6] 0 2]) + !> .* 0 + :+ %8 + +.p + [%8 p=[p=[%1 p=1] q=[%1 p=0]] q=[%8 p=[p=[%1 p=1] q=[p=[%1 p=2] q=[%1 p=0]]] q=[%8 p=[p=[%1 p=1] q=[p=[%1 p=2] q=[p=[%1 p=3] q=[%1 p=0]]]] q=[%8 p=[p=[p=[%1 p=1] q=[%1 p=2]] q=[p=[p=[%1 p=3] q=[%1 p=4]] q=[%1 p=0]]] q=[%8 p=[p=[p=[%1 p=1] q=[p=[%1 p=2] q=[%1 p=0]]] q=[p=[p=[%1 p=3] q=[p=[%1 p=4] q=[p=[%1 p=5] q=[%1 p=0]]]] q=[%1 p=0]]] q=[p=[%0 p=62] q=[p=[%0 p=30] q=[p=[%0 p=14] q=[p=[%0 p=6] q=[%0 p=2]]]]]]]]]] !> .*(0 (mint:jock text)) :: -- diff --git a/hoon/tests/lib/lists.hoon b/hoon/tests/lib/lists.hoon index afbe2c0..e2ff0ab 100644 --- a/hoon/tests/lib/lists.hoon +++ b/hoon/tests/lib/lists.hoon @@ -1,6 +1,7 @@ :: /lib/tests/lists /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text @@ -13,17 +14,23 @@ ++ test-jeam %+ expect-eq:test !> ^- jock:jock - [%let type=[p=[%none ~] name=%d] val=[%list type=[%none ~] val=~[[%atom p=[[%number p=11] q=%.n]] [%atom p=[[%number p=0] q=%.n]]]] next=[%let type=[p=[%none ~] name=%c] val=[%list type=[%none ~] val=~[[%atom p=[[%number p=9] q=%.n]] [%atom p=[[%number p=10] q=%.n]] [%atom p=[[%number p=0] q=%.n]]]] next=[%let type=[p=[%none ~] name=%b] val=[%list type=[%none ~] val=~[[%atom p=[[%number p=6] q=%.n]] [%atom p=[[%number p=7] q=%.n]] [%atom p=[[%number p=8] q=%.n]] [%atom p=[[%number p=0] q=%.n]]]] next=[%let type=[p=[%none ~] name=%a] val=[%list type=[%none ~] val=~[[%atom p=[[%number p=1] q=%.n]] [%atom p=[[%number p=2] q=%.n]] [%atom p=[[%number p=3] q=%.n]] [%atom p=[[%number p=4] q=%.n]] [%atom p=[[%number p=5] q=%.n]] [%atom p=[[%number p=0] q=%.n]]]] next=[%list type=[%none ~] val=~[[%limb p=~[[%name p=%a]]] [%limb p=~[[%name p=%b]]] [%limb p=~[[%name p=%c]]] [%limb p=~[[%name p=%d]]] [%atom p=[[%number p=0] q=%.n]]]]]]]] + [%let type=[p=[%none p=~] name='d'] val=[%list type=[%none p=~] val=~[[%atom p=[[%number p=11] q=%.n]] [%atom p=[[%number p=0] q=%.n]]]] next=[%let type=[p=[%none p=~] name='c'] val=[%list type=[%none p=~] val=~[[%atom p=[[%number p=9] q=%.n]] [%atom p=[[%number p=10] q=%.n]] [%atom p=[[%number p=0] q=%.n]]]] next=[%let type=[p=[%none p=~] name='b'] val=[%list type=[%none p=~] val=~[[%atom p=[[%number p=6] q=%.n]] [%atom p=[[%number p=7] q=%.n]] [%atom p=[[%number p=8] q=%.n]] [%atom p=[[%number p=0] q=%.n]]]] next=[%let type=[p=[%none p=~] name='a'] val=[%list type=[%none p=~] val=~[[%atom p=[[%number p=1] q=%.n]] [%atom p=[[%number p=2] q=%.n]] [%atom p=[[%number p=3] q=%.n]] [%atom p=[[%number p=4] q=%.n]] [%atom p=[[%number p=5] q=%.n]] [%atom p=[[%number p=0] q=%.n]]]] next=[%list type=[%none p=~] val=~[[%limb p=~[[%name p=%a]]] [%limb p=~[[%name p=%b]]] [%limb p=~[[%name p=%c]]] [%limb p=~[[%name p=%d]]] [%atom p=[[%number p=0] q=%.n]]]]]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [8 [1 11] 8 [[1 9] 1 10] 8 [[1 6] [1 7] 1 8] 8 [[1 1] [1 2] [1 3] [1 4] 1 5] [0 2] [0 6] [0 14] 0 30] - !> (mint:jock text) + !> [%8 p=[p=[%1 p=11] q=[%1 p=0]] q=[%8 p=[p=[%1 p=9] q=[p=[%1 p=10] q=[%1 p=0]]] q=[%8 p=[p=[%1 p=6] q=[p=[%1 p=7] q=[p=[%1 p=8] q=[%1 p=0]]]] q=[%8 p=[p=[%1 p=1] q=[p=[%1 p=2] q=[p=[%1 p=3] q=[p=[%1 p=4] q=[p=[%1 p=5] q=[%1 p=0]]]]]] q=[p=[%0 p=2] q=[p=[%0 p=6] q=[p=[%0 p=14] q=[p=[%0 p=30] q=[%1 p=0]]]]]]]]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> .*(0 [8 [1 11] 8 [[1 9] 1 10] 8 [[1 6] [1 7] 1 8] 8 [[1 1] [1 2] [1 3] [1 4] 1 5] [0 2] [0 6] [0 14] 0 30]) + !> .* 0 + :+ %8 + +.p + [%8 p=[p=[%1 p=11] q=[%1 p=0]] q=[%8 p=[p=[%1 p=9] q=[p=[%1 p=10] q=[%1 p=0]]] q=[%8 p=[p=[%1 p=6] q=[p=[%1 p=7] q=[p=[%1 p=8] q=[%1 p=0]]]] q=[%8 p=[p=[%1 p=1] q=[p=[%1 p=2] q=[p=[%1 p=3] q=[p=[%1 p=4] q=[p=[%1 p=5] q=[%1 p=0]]]]]] q=[p=[%0 p=2] q=[p=[%0 p=6] q=[p=[%0 p=14] q=[p=[%0 p=30] q=[%1 p=0]]]]]]]]] !> .*(0 (mint:jock text)) :: -- diff --git a/hoon/tests/lib/match-case.hoon b/hoon/tests/lib/match-case.hoon index 967eb29..de37084 100644 --- a/hoon/tests/lib/match-case.hoon +++ b/hoon/tests/lib/match-case.hoon @@ -1,30 +1,37 @@ :: /lib/tests/match-case /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text - 'let a: @ = 3;\0a\0aswitch a {\0a 1 -> 2;\0a 2 -> 4;\0a 3 -> 8;\0a 4 -> 16;\0a _ -> 0;\0a}' + 'let a: @ = 3;\0a\0aswitch a {\0a 1 -> 0;\0a 2 -> 21;\0a 3 -> 42;\0a 4 -> 63;\0a _ -> 84;\0a}\0a' ++ test-tokenize %+ expect-eq:test - !> ~[[%keyword %let] [%name %a] [%punctuator %':'] [%punctuator %'@'] [%punctuator %'='] [%literal [[%number p=3] q=%.n]] [%punctuator %';'] [%keyword %switch] [%name %a] [%punctuator %'{'] [%literal [[%number p=1] q=%.n]] [%punctuator %'-'] [%punctuator %'>'] [%literal [[%number p=2] q=%.n]] [%punctuator %';'] [%literal [[%number p=2] q=%.n]] [%punctuator %'-'] [%punctuator %'>'] [%literal [[%number p=4] q=%.n]] [%punctuator %';'] [%literal [[%number p=3] q=%.n]] [%punctuator %'-'] [%punctuator %'>'] [%literal [[%number p=8] q=%.n]] [%punctuator %';'] [%literal [[%number p=4] q=%.n]] [%punctuator %'-'] [%punctuator %'>'] [%literal [[%number p=16] q=%.n]] [%punctuator %';'] [%punctuator %'_'] [%punctuator %'-'] [%punctuator %'>'] [%literal [[%number p=0] q=%.n]] [%punctuator %';'] [%punctuator %'}']] + !> ~[[%keyword %let] [%name %a] [%punctuator %':'] [%punctuator %'@'] [%punctuator %'='] [%literal [[%number p=3] q=%.n]] [%punctuator %';'] [%keyword %switch] [%name %a] [%punctuator %'{'] [%literal [[%number p=1] q=%.n]] [%punctuator %'-'] [%punctuator %'>'] [%literal [[%number p=0] q=%.n]] [%punctuator %';'] [%literal [[%number p=2] q=%.n]] [%punctuator %'-'] [%punctuator %'>'] [%literal [[%number p=21] q=%.n]] [%punctuator %';'] [%literal [[%number p=3] q=%.n]] [%punctuator %'-'] [%punctuator %'>'] [%literal [[%number p=42] q=%.n]] [%punctuator %';'] [%literal [[%number p=4] q=%.n]] [%punctuator %'-'] [%punctuator %'>'] [%literal [[%number p=63] q=%.n]] [%punctuator %';'] [%punctuator %'_'] [%punctuator %'-'] [%punctuator %'>'] [%literal [[%number p=84] q=%.n]] [%punctuator %';'] [%punctuator %'}']] !> (rash text parse-tokens:jock) :: ++ test-jeam %+ expect-eq:test !> ^- jock:jock + :: [%let type=[p=[%atom p=%number q=%.n] name='a'] val=[%atom p=[[%number p=3] q=%.n]] next=[%cases value=[%limb p=~[[%name p=%a]]] cases=[n=[p=[%atom p=[[%number p=1] q=%.n]] q=[%atom p=[[%number p=0] q=%.n]]] l=[n=[p=[%atom p=[[%number p=3] q=%.n]] q=[%atom p=[[%number p=42] q=%.n]]] l=~ r=~] r=[n=[p=[%atom p=[[%number p=2] q=%.n]] q=[%atom p=[[%number p=21] q=%.n]]] l=[[p=[%atom p=[[%number p=4] q=%.n]] q=[%atom p=[[%number p=63] q=%.n]]]] r=~]] default=[~ [%atom p=[[%number p=84] q=%.n]]]]] *jock:jock - ::[%let type=[p=[%atom p=%number q=%.n] name=%a] val=[%atom p=[[%number p=3] q=%.n]] next=[%cases value=[%limb p=~[[%name p=%a]]] cases=[n=[p=[%atom p=[[%number p=1] q=%.n]] q=[%atom p=[[%number p=2] q=%.n]]] l=[n=[p=[%atom p=[[%number p=3] q=%.n]] q=[%atom p=[[%number p=8] q=%.n]]] l=~ r=~] r=[n=[p=[%atom p=[[%number p=2] q=%.n]] q=[%atom p=[[%number p=4] q=%.n]]] l=[[p=[%atom p=[[%number p=4] q=%.n]] q=[%atom p=[[%number p=16] q=%.n]]]] r=~]] default=[~ [%atom p=[[%number p=0] q=%.n]]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [8 [1 3] 8 [1 0 2] 6 [5 [1 1] 0 2] [7 [0 3] 1 1 8] 6 [5 [1 1] 0 2] [7 [0 3] 1 1 2] 6 [5 [1 1] 0 2] [7 [0 3] 1 1 16] 6 [5 [1 1] 0 2] [7 [0 3] 1 1 4] 7 [0 3] 1 1 0] - !> (mint:jock text) + !> [%8 p=[%1 p=3] q=[%8 p=[%1 p=[0 2]] q=[%6 p=[%5 p=[%1 p=1] q=[%0 p=2]] q=[%7 p=[%0 p=3] q=[%1 p=[1 42]]] r=[%6 p=[%5 p=[%1 p=1] q=[%0 p=2]] q=[%7 p=[%0 p=3] q=[%1 p=[1 0]]] r=[%6 p=[%5 p=[%1 p=1] q=[%0 p=2]] q=[%7 p=[%0 p=3] q=[%1 p=[1 63]]] r=[%6 p=[%5 p=[%1 p=1] q=[%0 p=2]] q=[%7 p=[%0 p=3] q=[%1 p=[1 21]]] r=[%7 p=[%0 p=3] q=[%1 p=[1 84]]]]]]]]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> .*(0 [8 [1 3] 8 [1 0 2] 6 [5 [1 1] 0 2] [7 [0 3] 1 1 8] 6 [5 [1 1] 0 2] [7 [0 3] 1 1 2] 6 [5 [1 1] 0 2] [7 [0 3] 1 1 16] 6 [5 [1 1] 0 2] [7 [0 3] 1 1 4] 7 [0 3] 1 1 0]) + !> .* 0 + :+ %8 + +.p + [%8 p=[%1 p=3] q=[%8 p=[%1 p=[0 2]] q=[%6 p=[%5 p=[%1 p=1] q=[%0 p=2]] q=[%7 p=[%0 p=3] q=[%1 p=[1 42]]] r=[%6 p=[%5 p=[%1 p=1] q=[%0 p=2]] q=[%7 p=[%0 p=3] q=[%1 p=[1 0]]] r=[%6 p=[%5 p=[%1 p=1] q=[%0 p=2]] q=[%7 p=[%0 p=3] q=[%1 p=[1 63]]] r=[%6 p=[%5 p=[%1 p=1] q=[%0 p=2]] q=[%7 p=[%0 p=3] q=[%1 p=[1 21]]] r=[%7 p=[%0 p=3] q=[%1 p=[1 84]]]]]]]]] !> .*(0 (mint:jock text)) :: -- diff --git a/hoon/tests/lib/match-type.hoon b/hoon/tests/lib/match-type.hoon index 7be9c5a..5affb0e 100644 --- a/hoon/tests/lib/match-type.hoon +++ b/hoon/tests/lib/match-type.hoon @@ -1,30 +1,37 @@ :: /lib/tests/match-type /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text - 'let a: @ = 3;\0a\0amatch a {\0a %1 -> 2;\0a %2 -> 4;\0a %3 -> 8;\0a %4 -> 16;\0a _ -> 0;\0a}' + 'let a: @ = 3;\0a\0amatch a {\0a %1 -> 0;\0a %2 -> 21;\0a %3 -> 42;\0a %4 -> 63;\0a _ -> 84;\0a}\0a' ++ test-tokenize %+ expect-eq:test - !> ~[[%keyword %let] [%name %a] [%punctuator %':'] [%punctuator %'@'] [%punctuator %'='] [%literal [[%number p=3] q=%.n]] [%punctuator %';'] [%keyword %match] [%name %a] [%punctuator %'{'] [%literal [[%number p=1] q=%.y]] [%punctuator %'-'] [%punctuator %'>'] [%literal [[%number p=2] q=%.n]] [%punctuator %';'] [%literal [[%number p=2] q=%.y]] [%punctuator %'-'] [%punctuator %'>'] [%literal [[%number p=4] q=%.n]] [%punctuator %';'] [%literal [[%number p=3] q=%.y]] [%punctuator %'-'] [%punctuator %'>'] [%literal [[%number p=8] q=%.n]] [%punctuator %';'] [%literal [[%number p=4] q=%.y]] [%punctuator %'-'] [%punctuator %'>'] [%literal [[%number p=16] q=%.n]] [%punctuator %';'] [%punctuator %'_'] [%punctuator %'-'] [%punctuator %'>'] [%literal [[%number p=0] q=%.n]] [%punctuator %';'] [%punctuator %'}']] + !> ~[[%keyword %let] [%name %a] [%punctuator %':'] [%punctuator %'@'] [%punctuator %'='] [%literal [[%number p=3] q=%.n]] [%punctuator %';'] [%keyword %match] [%name %a] [%punctuator %'{'] [%literal [[%number p=1] q=%.y]] [%punctuator %'-'] [%punctuator %'>'] [%literal [[%number p=0] q=%.n]] [%punctuator %';'] [%literal [[%number p=2] q=%.y]] [%punctuator %'-'] [%punctuator %'>'] [%literal [[%number p=21] q=%.n]] [%punctuator %';'] [%literal [[%number p=3] q=%.y]] [%punctuator %'-'] [%punctuator %'>'] [%literal [[%number p=42] q=%.n]] [%punctuator %';'] [%literal [[%number p=4] q=%.y]] [%punctuator %'-'] [%punctuator %'>'] [%literal [[%number p=63] q=%.n]] [%punctuator %';'] [%punctuator %'_'] [%punctuator %'-'] [%punctuator %'>'] [%literal [[%number p=84] q=%.n]] [%punctuator %';'] [%punctuator %'}']] !> (rash text parse-tokens:jock) :: ++ test-jeam %+ expect-eq:test !> ^- jock:jock + :: [%let type=[p=[%atom p=%number q=%.n] name='a'] val=[%atom p=[[%number p=3] q=%.n]] next=[%match value=[%limb p=~[[%name p=%a]]] cases=[n=[p=[%atom p=[[%number p=3] q=%.y]] q=[%atom p=[[%number p=42] q=%.n]]] l=~ r=[n=[p=[%atom p=[[%number p=1] q=%.y]] q=[%atom p=[[%number p=0] q=%.n]]] l=[[p=[%atom p=[[%number p=2] q=%.y]] q=[%atom p=[[%number p=21] q=%.n]]] [p=[%atom p=[[%number p=4] q=%.y]] q=[%atom p=[[%number p=63] q=%.n]]]] r=~]] default=[~ [%atom p=[[%number p=84] q=%.n]]]]] *jock:jock - :: [%let type=[p=[%atom p=%number q=%.n] name=%a] val=[%atom p=[[%number p=3] q=%.n]] next=[%match value=[%limb p=~[[%name p=%a]]] cases=[n=[p=[%atom p=[[%number p=3] q=%.y]] q=[%atom p=[[%number p=8] q=%.n]]] l=~ r=[n=[p=[%atom p=[[%number p=1] q=%.y]] q=[%atom p=[[%number p=2] q=%.n]]] l=[[p=[%atom p=[[%number p=2] q=%.y]] q=[%atom p=[[%number p=4] q=%.n]]] [p=[%atom p=[[%number p=4] q=%.y]] q=[%atom p=[[%number p=16] q=%.n]]]]] r=~]] default=[~ [%atom p=[[%number p=0] q=%.n]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [8 [1 3] 8 [1 0 2] 6 [5 [1 0] 0 2] [7 [0 3] 1 1 8] 6 [5 [1 0] 0 2] [7 [0 3] 1 1 4] 6 [5 [1 0] 0 2] [7 [0 3] 1 1 16] 6 [5 [1 0] 0 2] [7 [0 3] 1 1 2] 7 [0 3] 1 1 0] - !> (mint:jock text) + !> [%8 p=[%1 p=3] q=[%8 p=[%1 p=[0 2]] q=[%6 p=[%5 p=[%1 p=0] q=[%0 p=2]] q=[%7 p=[%0 p=3] q=[%1 p=[1 42]]] r=[%6 p=[%5 p=[%1 p=0] q=[%0 p=2]] q=[%7 p=[%0 p=3] q=[%1 p=[1 21]]] r=[%6 p=[%5 p=[%1 p=0] q=[%0 p=2]] q=[%7 p=[%0 p=3] q=[%1 p=[1 63]]] r=[%6 p=[%5 p=[%1 p=0] q=[%0 p=2]] q=[%7 p=[%0 p=3] q=[%1 p=[1 0]]] r=[%7 p=[%0 p=3] q=[%1 p=[1 84]]]]]]]]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> .*(0 [8 [1 3] 8 [1 0 2] 6 [5 [1 0] 0 2] [7 [0 3] 1 1 8] 6 [5 [1 0] 0 2] [7 [0 3] 1 1 4] 6 [5 [1 0] 0 2] [7 [0 3] 1 1 16] 6 [5 [1 0] 0 2] [7 [0 3] 1 1 2] 7 [0 3] 1 1 0]) + !> .* 0 + :+ %8 + +.p + [%8 p=[%1 p=3] q=[%8 p=[%1 p=[0 2]] q=[%6 p=[%5 p=[%1 p=0] q=[%0 p=2]] q=[%7 p=[%0 p=3] q=[%1 p=[1 42]]] r=[%6 p=[%5 p=[%1 p=0] q=[%0 p=2]] q=[%7 p=[%0 p=3] q=[%1 p=[1 21]]] r=[%6 p=[%5 p=[%1 p=0] q=[%0 p=2]] q=[%7 p=[%0 p=3] q=[%1 p=[1 63]]] r=[%6 p=[%5 p=[%1 p=0] q=[%0 p=2]] q=[%7 p=[%0 p=3] q=[%1 p=[1 0]]] r=[%7 p=[%0 p=3] q=[%1 p=[1 84]]]]]]]]] !> .*(0 (mint:jock text)) :: -- diff --git a/hoon/tests/lib/multi-limb.hoon b/hoon/tests/lib/multi-limb.hoon index 15f1dba..e6aa9ba 100644 --- a/hoon/tests/lib/multi-limb.hoon +++ b/hoon/tests/lib/multi-limb.hoon @@ -1,29 +1,36 @@ :: /lib/tests/multi-limb /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text - 'let a: (p:@ q:(k:@ v:@)) = (52 30 45);\0a\0a(a.q.v) /* reduces to a.q.v, so also testing tuple-of-one*/' + 'let a: (p:@ q:(k:@ v:@)) = (52 30 42);\0a\0a(a.q.v) // reduces to a.q.v, so also testing tuple-of-one\0a' ++ test-tokenize %+ expect-eq:test - !> ~[[%keyword %let] [%name %a] [%punctuator %':'] [%punctuator %'('] [%name %p] [%punctuator %':'] [%punctuator %'@'] [%name %q] [%punctuator %':'] [%punctuator %'('] [%name %k] [%punctuator %':'] [%punctuator %'@'] [%name %v] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %')'] [%punctuator %'='] [%punctuator %'('] [%literal [[%number p=52] q=%.n]] [%literal [[%number p=30] q=%.n]] [%literal [[%number p=45] q=%.n]] [%punctuator %')'] [%punctuator %';'] [%punctuator %'('] [%name %a] [%punctuator %'.'] [%name %q] [%punctuator %'.'] [%name %v] [%punctuator %')']] + !> ~[[%keyword %let] [%name %a] [%punctuator %':'] [%punctuator %'('] [%name %p] [%punctuator %':'] [%punctuator %'@'] [%name %q] [%punctuator %':'] [%punctuator %'('] [%name %k] [%punctuator %':'] [%punctuator %'@'] [%name %v] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %')'] [%punctuator %'='] [%punctuator %'('] [%literal [[%number p=52] q=%.n]] [%literal [[%number p=30] q=%.n]] [%literal [[%number p=42] q=%.n]] [%punctuator %')'] [%punctuator %';'] [%punctuator %'('] [%name %a] [%punctuator %'.'] [%name %q] [%punctuator %'.'] [%name %v] [%punctuator %')']] !> (rash text parse-tokens:jock) :: ++ test-jeam %+ expect-eq:test !> ^- jock:jock - [%let type=[[p=[p=[%atom p=%number q=%.n] name='p'] q=[[p=[p=[%atom p=%number q=%.n] name='k'] q=[p=[%atom p=%number q=%.n] name='v']] name='q']] name='a'] val=[p=[%atom p=[[%number p=52] q=%.n]] q=[p=[%atom p=[[%number p=30] q=%.n]] q=[%atom p=[[%number p=45] q=%.n]]]] next=[%limb p=~[[%name p=%a] [%name p=%q] [%name p=%v]]]] + [%let type=[[p=[p=[%atom p=%number q=%.n] name='p'] q=[[p=[p=[%atom p=%number q=%.n] name='k'] q=[p=[%atom p=%number q=%.n] name='v']] name='q']] name='a'] val=[p=[%atom p=[[%number p=52] q=%.n]] q=[p=[%atom p=[[%number p=30] q=%.n]] q=[%atom p=[[%number p=42] q=%.n]]]] next=[%limb p=~[[%name p=%a] [%name p=%q] [%name p=%v]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [8 [[1 52] [1 30] 1 45] 0 11] - !> (mint:jock text) + !> [%8 p=[p=[%1 p=52] q=[p=[%1 p=30] q=[%1 p=42]]] q=[%0 p=11]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> .*(0 [8 [[1 52] [1 30] 1 45] 0 11]) + !> .* 0 + :+ %8 + +.p + [%8 p=[p=[%1 p=52] q=[p=[%1 p=30] q=[%1 p=42]]] q=[%0 p=11]] !> .*(0 (mint:jock text)) :: -- diff --git a/hoon/tests/lib/sets.hoon b/hoon/tests/lib/sets.hoon index c9e5d04..b6c3b49 100644 --- a/hoon/tests/lib/sets.hoon +++ b/hoon/tests/lib/sets.hoon @@ -1,30 +1,37 @@ :: /lib/tests/sets /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text - 'let a:Set(@) = {1};\0a\0alet b:Set(@) = {1 2};\0a\0alet c:Set(@) = {1 2 3 2 1};\0a\0alet d:Set((@ @)) = {(1 2) (3 4) (1 2)};\0a\0alet e:Set((@ Set(@))) = {(1 {2}) (3 {4 5})};\0a\0a(a b c d e)' + 'let a:Set(@) = {1};\0a\0alet b:Set(@) = {1 2};\0a\0alet c:Set(@) = {1 2 3 2 1};\0a\0alet d:Set((@ @)) = {(1 2) (3 4) (1 2)};\0a\0alet e:Set((@ Set(@))) = {(1 {2}) (3 {4 5})};\0a\0a(a b c d e)\0a' ++ test-tokenize %+ expect-eq:test - !> ~[[%keyword %let] [%name %a] [%punctuator %':'] [%type 'Set'] [%punctuator %'('] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'='] [%punctuator %'{'] [%literal [[%number p=1] q=%.n]] [%punctuator %'}'] [%punctuator %';'] [%keyword %let] [%name %b] [%punctuator %':'] [%type 'Set'] [%punctuator %'('] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'='] [%punctuator %'{'] [%literal [[%number p=1] q=%.n]] [%literal [[%number p=2] q=%.n]] [%punctuator %'}'] [%punctuator %';'] [%keyword %let] [%name %c] [%punctuator %':'] [%type 'Set'] [%punctuator %'('] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'='] [%punctuator %'{'] [%literal [[%number p=1] q=%.n]] [%literal [[%number p=2] q=%.n]] [%literal [[%number p=3] q=%.n]] [%literal [[%number p=2] q=%.n]] [%literal [[%number p=1] q=%.n]] [%punctuator %'}'] [%punctuator %';'] [%keyword %let] [%name %d] [%punctuator %':'] [%type 'Set'] [%punctuator %'('] [%punctuator %'('] [%punctuator %'@'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %')'] [%punctuator %'='] [%punctuator %'{'] [%punctuator %'('] [%literal [[%number p=1] q=%.n]] [%literal [[%number p=2] q=%.n]] [%punctuator %')'] [%punctuator %'('] [%literal [[%number p=3] q=%.n]] [%literal [[%number p=4] q=%.n]] [%punctuator %')'] [%punctuator %'('] [%literal [[%number p=1] q=%.n]] [%literal [[%number p=2] q=%.n]] [%punctuator %')'] [%punctuator %'}'] [%punctuator %';'] [%keyword %let] [%name %e] [%punctuator %':'] [%type 'Set'] [%punctuator %'('] [%punctuator %'('] [%punctuator %'@'] [%type 'Set'] [%punctuator %'('] [%punctuator %'@'] [%punctuator %')'] [%punctuator %')'] [%punctuator %')'] [%punctuator %'='] [%punctuator %'{'] [%punctuator %'('] [%literal [[%number p=1] q=%.n]] [%punctuator %'{'] [%literal [[%number p=2] q=%.n]] [%punctuator %'}'] [%punctuator %')'] [%punctuator %'('] [%literal [[%number p=3] q=%.n]] [%punctuator %'{'] [%literal [[%number p=4] q=%.n]] [%literal [[%number p=5] q=%.n]] [%punctuator %'}'] [%punctuator %')'] [%punctuator %'}'] [%punctuator %';'] [%punctuator %'('] [%name %a] [%name %b] [%name %c] [%name %d] [%name %e] [%punctuator %')']] + !> ~[[%keyword %let] [%name %a] [%punctuator %':'] [%type 'Set'] [%punctuator %'(('] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'='] [%punctuator %'{'] [%literal [[%number p=1] q=%.n]] [%punctuator %'}'] [%punctuator %';'] [%keyword %let] [%name %b] [%punctuator %':'] [%type 'Set'] [%punctuator %'(('] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'='] [%punctuator %'{'] [%literal [[%number p=1] q=%.n]] [%literal [[%number p=2] q=%.n]] [%punctuator %'}'] [%punctuator %';'] [%keyword %let] [%name %c] [%punctuator %':'] [%type 'Set'] [%punctuator %'(('] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'='] [%punctuator %'{'] [%literal [[%number p=1] q=%.n]] [%literal [[%number p=2] q=%.n]] [%literal [[%number p=3] q=%.n]] [%literal [[%number p=2] q=%.n]] [%literal [[%number p=1] q=%.n]] [%punctuator %'}'] [%punctuator %';'] [%keyword %let] [%name %d] [%punctuator %':'] [%type 'Set'] [%punctuator %'(('] [%punctuator %'('] [%punctuator %'@'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %')'] [%punctuator %'='] [%punctuator %'{'] [%punctuator %'('] [%literal [[%number p=1] q=%.n]] [%literal [[%number p=2] q=%.n]] [%punctuator %')'] [%punctuator %'('] [%literal [[%number p=3] q=%.n]] [%literal [[%number p=4] q=%.n]] [%punctuator %')'] [%punctuator %'('] [%literal [[%number p=1] q=%.n]] [%literal [[%number p=2] q=%.n]] [%punctuator %')'] [%punctuator %'}'] [%punctuator %';'] [%keyword %let] [%name %e] [%punctuator %':'] [%type 'Set'] [%punctuator %'(('] [%punctuator %'('] [%punctuator %'@'] [%type 'Set'] [%punctuator %'(('] [%punctuator %'@'] [%punctuator %')'] [%punctuator %')'] [%punctuator %')'] [%punctuator %'='] [%punctuator %'{'] [%punctuator %'('] [%literal [[%number p=1] q=%.n]] [%punctuator %'{'] [%literal [[%number p=2] q=%.n]] [%punctuator %'}'] [%punctuator %')'] [%punctuator %'('] [%literal [[%number p=3] q=%.n]] [%punctuator %'{'] [%literal [[%number p=4] q=%.n]] [%literal [[%number p=5] q=%.n]] [%punctuator %'}'] [%punctuator %')'] [%punctuator %'}'] [%punctuator %';'] [%punctuator %'('] [%name %a] [%name %b] [%name %c] [%name %d] [%name %e] [%punctuator %')']] !> (rash text parse-tokens:jock) :: ++ test-jeam %+ expect-eq:test !> ^- jock:jock + :: [%let type=[p=[%set type=[p=[%atom p=%number q=%.n] name='']] name='a'] val=[%set type=[%none p=~] val=[[%atom p=[[%number p=1] q=%.n]]]] next=[%let type=[p=[%set type=[p=[%atom p=%number q=%.n] name='']] name='b'] val=[%set type=[%none p=~] val=[[%atom p=[[%number p=1] q=%.n]] [%atom p=[[%number p=2] q=%.n]]]] next=[%let type=[p=[%set type=[p=[%atom p=%number q=%.n] name='']] name='c'] val=[%set type=[%none p=~] val=[[%atom p=[[%number p=3] q=%.n]] [%atom p=[[%number p=1] q=%.n]] [%atom p=[[%number p=2] q=%.n]]]] next=[%let type=[p=[%set type=[[p=[p=[%atom p=%number q=%.n] name=''] q=[p=[%atom p=%number q=%.n] name='']] name='']] name='d'] val=[%set type=[%none p=~] val=[[p=[%atom p=[[%number p=3] q=%.n]] q=[%atom p=[[%number p=4] q=%.n]]] [p=[%atom p=[[%number p=1] q=%.n]] q=[%atom p=[[%number p=2] q=%.n]]]]] next=[%let type=[p=[%set type=[[p=[p=[%atom p=%number q=%.n] name=''] q=[p=[%set type=[p=[%atom p=%number q=%.n] name='']] name='Set']] name='']] name='e'] val=[%set type=[%none p=~] val=[[p=[%atom p=[[%number p=3] q=%.n]] q=[%set type=[%none p=~] val=[[%atom p=[[%number p=5] q=%.n]] [%atom p=[[%number p=4] q=%.n]]]]] [p=[%atom p=[[%number p=1] q=%.n]] q=[%set type=[%none p=~] val=[[%atom p=[[%number p=2] q=%.n]]]]]]] next=[p=[%limb p=~[[%name p=%a]]] q=[p=[%limb p=~[[%name p=%b]]] q=[p=[%limb p=~[[%name p=%c]]] q=[p=[%limb p=~[[%name p=%d]]] q=[%limb p=~[[%name p=%e]]]]]]]]]]]] *jock:jock - ::[%let type=[p=[%set type=[p=[%atom p=%number q=%.n] name=%$]] name=%a] val=[%set type=[%none ~] val=[[%atom p=[[%number p=1] q=%.n]]]] next=[%let type=[p=[%set type=[p=[%atom p=%number q=%.n] name=%$]] name=%b] val=[%set type=[%none ~] val=[[%atom p=[[%number p=1] q=%.n]] [%atom p=[[%number p=2] q=%.n]]]] next=[%let type=[p=[%set type=[p=[%atom p=%number q=%.n] name=%$]] name=%c] val=[%set type=[%none ~] val=[[%atom p=[[%number p=3] q=%.n]] [%atom p=[[%number p=1] q=%.n]] [%atom p=[[%number p=2] q=%.n]]]] next=[%let type=[p=[%set type=[[p=[p=[%atom p=%number q=%.n] name=%$] q=[p=[%atom p=%number q=%.n] name=%$]] name=%$]] name=%d] val=[%set type=[%none ~] val=[[p=[%atom p=[[%number p=3] q=%.n]] q=[%atom p=[[%number p=4] q=%.n]]] [p=[%atom p=[[%number p=1] q=%.n]] q=[%atom p=[[%number p=2] q=%.n]]]]] next=[%let type=[p=[%set type=[[p=[p=[%atom p=%number q=%.n] name=%$] q=[p=[%set type=[p=[%atom p=%number q=%.n] name=%$]] name=%$]] name=%$]] name=%e] val=[%set type=[%none ~] val=[[p=[%atom p=[[%number p=3] q=%.n]] q=[%set type=[%none ~] val=[[%atom p=[[%number p=5] q=%.n]] [%atom p=[[%number p=4] q=%.n]]]]] [p=[%atom p=[[%number p=1] q=%.n]] q=[%set type=[%none ~] val=[[%atom p=[[%number p=2] q=%.n]]]]]]] next=[p=[%limb p=~[[%name p=%a]]] q=[p=[%limb p=~[[%name p=%b]]] q=[p=[%limb p=~[[%name p=%c]]] q=[p=[%limb p=~[[%name p=%d]]] q=[%limb p=~[[%name p=%e]]]]]]]]]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [8 [1 [1 1] 0 0] 8 [1 [1 2] 0 [1 1] 0 0] 8 [1 [1 3] 0 [1 2] 0 [1 1] 0 0] 8 [1 [[1 3] 1 4] 0 [[1 1] 1 2] 0 0] 8 [1 [[1 1] 1 [1 2] 0 0] 0 [[1 3] 1 [1 5] [[1 4] 0 0] 0] 0 0] [0 62] [0 30] [0 14] [0 6] 0 2] - !> (mint:jock text) + !> [%8 p=[%1 p=[[1 1] 0 0]] q=[%8 p=[%1 p=[[1 2] 0 [1 1] 0 0]] q=[%8 p=[%1 p=[[1 3] 0 [1 2] 0 [1 1] 0 0]] q=[%8 p=[%1 p=[[[1 3] 1 4] 0 [[1 1] 1 2] 0 0]] q=[%8 p=[%1 p=[[[1 1] 1 [1 2] 0 0] 0 [[1 3] 1 [1 5] [[1 4] 0 0] 0] 0 0]] q=[p=[%0 p=62] q=[p=[%0 p=30] q=[p=[%0 p=14] q=[p=[%0 p=6] q=[%0 p=2]]]]]]]]]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> .*(0 [8 [1 [1 1] 0 0] 8 [1 [1 2] 0 [1 1] 0 0] 8 [1 [1 3] 0 [1 2] 0 [1 1] 0 0] 8 [1 [[1 3] 1 4] 0 [[1 1] 1 2] 0 0] 8 [1 [[1 1] 1 [1 2] 0 0] 0 [[1 3] 1 [1 5] [[1 4] 0 0] 0] 0 0] [0 62] [0 30] [0 14] [0 6] 0 2]) + !> .* 0 + :+ %8 + +.p + [%8 p=[%1 p=[[1 1] 0 0]] q=[%8 p=[%1 p=[[1 2] 0 [1 1] 0 0]] q=[%8 p=[%1 p=[[1 3] 0 [1 2] 0 [1 1] 0 0]] q=[%8 p=[%1 p=[[[1 3] 1 4] 0 [[1 1] 1 2] 0 0]] q=[%8 p=[%1 p=[[[1 1] 1 [1 2] 0 0] 0 [[1 3] 1 [1 5] [[1 4] 0 0] 0] 0 0]] q=[p=[%0 p=62] q=[p=[%0 p=30] q=[p=[%0 p=14] q=[p=[%0 p=6] q=[%0 p=2]]]]]]]]]] !> .*(0 (mint:jock text)) :: -- diff --git a/hoon/tests/lib/type-point-2.hoon b/hoon/tests/lib/type-point-2.hoon index c20b173..449dee4 100644 --- a/hoon/tests/lib/type-point-2.hoon +++ b/hoon/tests/lib/type-point-2.hoon @@ -1,29 +1,36 @@ :: /lib/tests/type-point-2 /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text - 'compose\0a class Point(x:@ y:@) {\0a add(p:(x:@ y:@)) -> Point {\0a (p.x p.y)\0a }\0a sub(p:(x:@ y:@)) -> Point {\0a (p.x p.x p.x)\0a }\0a };\0a\0alet origin = Point(50 60);\0a(origin.add(70 80) origin.sub(90 100))' + 'compose\0a class Point(x:Uint y:Uint) {\0a add(p:(x:Uint y:Uint)) -> Point {\0a (x + p.x\0a y + p.y)\0a }\0a sub(p:(x:Uint y:Uint)) -> Point {\0a (x - p.x\0a y - p.y)\0a }\0a }\0a;\0a\0alet point-1 = Point(104 124);\0apoint-1 = point-1.add(38 38);\0alet point-2 = Point(30 40);\0a//&2\0apoint-2 = point-2.add(212 302);\0a//&1\0apoint-1 = point-1.sub(100 20);\0a//&1\0a( (point-1.x() point-1.y())\0a (point-2.x() point-2.y())\0a)/**/\0a\0a/*\0a:: Hoon equivalent program\0a!=\0a=> mini=mini\0a=>\0a ^= door\0a |_ [x=@ y=@]\0a ++ add\0a |= p=[x=@ y=@]\0a ~(. +> [(add:mini x x.p) (add:mini y y.p)])\0a ++ sub\0a |= p=[x=@ y=@]\0a ~(. +> [(sub:mini x x.p) (sub:mini y y.p)])\0a --\0a=/ point-1\0a ~(. door [104 124])\0a=. point-1 (add:point-1 [38 38])\0a=/ point-2\0a ~(. door [30 40])\0a=. point-1 (sub:point-1 [100 20])\0a=. point-2 (add:point-2 [212 302])\0a[[+12 +13]:point-1 [+12 +13]:point-2]\0a\0aJock:\0a[7 [0 2]\0a 7 [8 [[1 0] 1 0]\0a [1 [8 [[1 0] 1 0] [1 [8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 1]\0a 8 [[1 0] 1 0] [1 [8 [9 3.061 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 3.061 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 1] 0 1]\0a 8 [8 [0 1] 10 [6 7 [0 3] [1 104] 1 124] 0 2]\0a 7 [10 [2 8 [7 [0 2] 9 4 0 1] 9 2 10 [6 7 [0 3] [1 38] 1 38] 0 2] 0 1]\0a 8 [8 [0 3] 10 [6 7 [0 3] [1 30] 1 40] 0 2]\0a 7 [10 [2 8 [7 [0 2] 9 4 0 1] 9 2 10 [6 7 [0 3] [1 212] 1 302] 0 2] 0 1]\0a 7 [10 [6 8 [7 [0 6] 9 5 0 1] 9 2 10 [6 7 [0 3] [1 100] 1 20] 0 2] 0 1]\0a [[7 [0 6] 7 [0 6] 0 2] 7 [0 6] 7 [0 6] 0 3]\0a [7 [0 2] 7 [0 6] 0 2] 7 [0 2] 7 [0 6] 0 3]\0a\0aHoon:\0a[ 7 [0 4]\0a 7 [8 [1 0 0]\0a [1 [8 [1 0 0] [1 8 [0 7] 10 [6 7 [0 3] [8 [7 [0 31] 9 348 0 1] 9 2 10 [6 [0 124] 0 28] 0 2] 8 [7 [0 31] 9 348 0 1] 9 2 10 [6 [0 125] 0 29] 0 2] 0 2] 0 1]\0a 8 [1 0 0] [1 8 [0 7] 10 [6 7 [0 3] [8 [7 [0 31] 9 3.061 0 1] 9 2 10 [6 [0 124] 0 28] 0 2] 8 [7 [0 31] 9 3.061 0 1] 9 2 10 [6 [0 125] 0 29] 0 2] 0 2] 0 1] 0 1]\0a 8 [8 [0 1] 10 [6 7 [0 3] 1 104 124] 0 2]\0a 7 [10 [2 8 [7 [0 2] 9 4 0 1] 9 2 10 [6 7 [0 3] 1 38 38] 0 2] 0 1]\0a* 8 [8 [0 3] 10 [6 7 [0 3] 1 30 40] 0 2]\0a 7 [10 [2 8 [7 [0 2] 9 4 0 1] 9 2 10 [6 7 [0 3] 1 212 302] 0 2] 0 1]\0a 7 [10 [6 8 [7 [0 6] 9 5 0 1] 9 2 10 [6 7 [0 3] 1 100 20] 0 2] 0 1]\0a [7 [0 6] [0 12] 0 13]\0a 7 [0 2] [0 12] 0 13]\0a*/\0a' ++ test-tokenize %+ expect-eq:test - !> ~[[%keyword %compose] [%keyword %class] [%type 'Point'] [%punctuator %'(('] [%name %x] [%punctuator %':'] [%punctuator %'@'] [%name %y] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'{'] [%name %add] [%punctuator %'(('] [%name %p] [%punctuator %':'] [%punctuator %'('] [%name %x] [%punctuator %':'] [%punctuator %'@'] [%name %y] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%type 'Point'] [%punctuator %'{'] [%punctuator %'('] [%name %p] [%punctuator %'.'] [%name %x] [%name %p] [%punctuator %'.'] [%name %y] [%punctuator %')'] [%punctuator %'}'] [%name %sub] [%punctuator %'(('] [%name %p] [%punctuator %':'] [%punctuator %'('] [%name %x] [%punctuator %':'] [%punctuator %'@'] [%name %y] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%type 'Point'] [%punctuator %'{'] [%punctuator %'('] [%name %p] [%punctuator %'.'] [%name %x] [%name %p] [%punctuator %'.'] [%name %x] [%name %p] [%punctuator %'.'] [%name %x] [%punctuator %')'] [%punctuator %'}'] [%punctuator %'}'] [%punctuator %';'] [%keyword %let] [%name %origin] [%punctuator %'='] [%type 'Point'] [%punctuator %'(('] [%literal [[%number p=50] q=%.n]] [%literal [[%number p=60] q=%.n]] [%punctuator %')'] [%punctuator %';'] [%punctuator %'('] [%name %origin] [%punctuator %'.'] [%name %add] [%punctuator %'(('] [%literal [[%number p=70] q=%.n]] [%literal [[%number p=80] q=%.n]] [%punctuator %')'] [%name %origin] [%punctuator %'.'] [%name %sub] [%punctuator %'(('] [%literal [[%number p=90] q=%.n]] [%literal [[%number p=100] q=%.n]] [%punctuator %')'] [%punctuator %')']] + !> ~[[%keyword %compose] [%keyword %class] [%type 'Point'] [%punctuator %'(('] [%name %x] [%punctuator %':'] [%type 'Uint'] [%name %y] [%punctuator %':'] [%type 'Uint'] [%punctuator %')'] [%punctuator %'{'] [%name %add] [%punctuator %'(('] [%name %p] [%punctuator %':'] [%punctuator %'('] [%name %x] [%punctuator %':'] [%type 'Uint'] [%name %y] [%punctuator %':'] [%type 'Uint'] [%punctuator %')'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%type 'Point'] [%punctuator %'{'] [%punctuator %'('] [%name %x] [%punctuator %'+'] [%name %p] [%punctuator %'.'] [%name %x] [%name %y] [%punctuator %'+'] [%name %p] [%punctuator %'.'] [%name %y] [%punctuator %')'] [%punctuator %'}'] [%name %sub] [%punctuator %'(('] [%name %p] [%punctuator %':'] [%punctuator %'('] [%name %x] [%punctuator %':'] [%type 'Uint'] [%name %y] [%punctuator %':'] [%type 'Uint'] [%punctuator %')'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%type 'Point'] [%punctuator %'{'] [%punctuator %'('] [%name %x] [%punctuator %'-'] [%name %p] [%punctuator %'.'] [%name %x] [%name %y] [%punctuator %'-'] [%name %p] [%punctuator %'.'] [%name %y] [%punctuator %')'] [%punctuator %'}'] [%punctuator %'}'] [%punctuator %';'] [%keyword %let] [%name %point-1] [%punctuator %'='] [%type 'Point'] [%punctuator %'(('] [%literal [[%number p=104] q=%.n]] [%literal [[%number p=124] q=%.n]] [%punctuator %')'] [%punctuator %';'] [%name %point-1] [%punctuator %'='] [%name %point-1] [%punctuator %'.'] [%name %add] [%punctuator %'(('] [%literal [[%number p=38] q=%.n]] [%literal [[%number p=38] q=%.n]] [%punctuator %')'] [%punctuator %';'] [%keyword %let] [%name %point-2] [%punctuator %'='] [%type 'Point'] [%punctuator %'(('] [%literal [[%number p=30] q=%.n]] [%literal [[%number p=40] q=%.n]] [%punctuator %')'] [%punctuator %';'] [%name %point-2] [%punctuator %'='] [%name %point-2] [%punctuator %'.'] [%name %add] [%punctuator %'(('] [%literal [[%number p=212] q=%.n]] [%literal [[%number p=302] q=%.n]] [%punctuator %')'] [%punctuator %';'] [%name %point-1] [%punctuator %'='] [%name %point-1] [%punctuator %'.'] [%name %sub] [%punctuator %'(('] [%literal [[%number p=100] q=%.n]] [%literal [[%number p=20] q=%.n]] [%punctuator %')'] [%punctuator %';'] [%punctuator %'('] [%punctuator %'('] [%name %point-1] [%punctuator %'.'] [%name %x] [%punctuator %'(('] [%punctuator %')'] [%name %point-1] [%punctuator %'.'] [%name %y] [%punctuator %'(('] [%punctuator %')'] [%punctuator %')'] [%punctuator %'('] [%name %point-2] [%punctuator %'.'] [%name %x] [%punctuator %'(('] [%punctuator %')'] [%name %point-2] [%punctuator %'.'] [%name %y] [%punctuator %'(('] [%punctuator %')'] [%punctuator %')'] [%punctuator %')']] !> (rash text parse-tokens:jock) :: ++ test-jeam %+ expect-eq:test !> ^- jock:jock - [%compose p=[%class state=[[p=[p=[%atom p=%number q=%.n] name='x'] q=[p=[%atom p=%number q=%.n] name='y']] name='Point'] arms=[n=[p=%add q=[%method type=[p=[%core p=[%.y p=[inp=[~ [[p=[p=[%atom p=%number q=%.n] name='x'] q=[p=[%atom p=%number q=%.n] name='y']] name='p']] out=[p=[%limb p=~[[%type p='Point']]] name='Point']]] q=~] name='add'] body=[%lambda p=[arg=[inp=[~ [[p=[p=[%atom p=%number q=%.n] name='x'] q=[p=[%atom p=%number q=%.n] name='y']] name='p']] out=[p=[%limb p=~[[%type p='Point']]] name='Point']] body=[p=[%limb p=~[[%name p=%p] [%name p=%x]]] q=[%limb p=~[[%name p=%p] [%name p=%y]]]] context=~]]]] l=~ r=[n=[p=%sub q=[%method type=[p=[%core p=[%.y p=[inp=[~ [[p=[p=[%atom p=%number q=%.n] name='x'] q=[p=[%atom p=%number q=%.n] name='y']] name='p']] out=[p=[%limb p=~[[%type p='Point']]] name='Point']]] q=~] name='sub'] body=[%lambda p=[arg=[inp=[~ [[p=[p=[%atom p=%number q=%.n] name='x'] q=[p=[%atom p=%number q=%.n] name='y']] name='p']] out=[p=[%limb p=~[[%type p='Point']]] name='Point']] body=[p=[%limb p=~[[%name p=%p] [%name p=%x]]] q=[p=[%limb p=~[[%name p=%p] [%name p=%x]]] q=[%limb p=~[[%name p=%p] [%name p=%x]]]]] context=~]]]] l=~ r=~]]] q=[%let type=[p=[%none p=~] name='origin'] val=[%call func=[%limb p=~[[%type p='Point']]] arg=[~ [p=[%atom p=[[%number p=50] q=%.n]] q=[%atom p=[[%number p=60] q=%.n]]]]] next=[p=[%call func=[%limb p=~[[%name p=%origin] [%name p=%add]]] arg=[~ [p=[%atom p=[[%number p=70] q=%.n]] q=[%atom p=[[%number p=80] q=%.n]]]]] q=[%call func=[%limb p=~[[%name p=%origin] [%name p=%sub]]] arg=[~ [p=[%atom p=[[%number p=90] q=%.n]] q=[%atom p=[[%number p=100] q=%.n]]]]]]]] + [%compose p=[%class state=[p=[%state p=[[p=[p=[%atom p=%number q=%.n] name='x'] q=[p=[%atom p=%number q=%.n] name='y']] name='']] name='Point'] arms=[n=[p=%add q=[%method type=[p=[%core p=[%.y p=[inp=[~ [[p=[p=[%atom p=%number q=%.n] name='x'] q=[p=[%atom p=%number q=%.n] name='y']] name='p']] out=[p=[%limb p=~[[%type p='Point']]] name='Point']]] q=~] name='add'] body=[%lambda p=[arg=[inp=[~ [[p=[p=[%atom p=%number q=%.n] name='x'] q=[p=[%atom p=%number q=%.n] name='y']] name='p']] out=[p=[%limb p=~[[%type p='Point']]] name='Point']] body=[p=[%operator op=%'+' a=[%limb p=~[[%name p=%x]]] b=[~ [%limb p=~[[%name p=%p] [%name p=%x]]]]] q=[%operator op=%'+' a=[%limb p=~[[%name p=%y]]] b=[~ [%limb p=~[[%name p=%p] [%name p=%y]]]]]] context=~]]]] l=~ r=[n=[p=%sub q=[%method type=[p=[%core p=[%.y p=[inp=[~ [[p=[p=[%atom p=%number q=%.n] name='x'] q=[p=[%atom p=%number q=%.n] name='y']] name='p']] out=[p=[%limb p=~[[%type p='Point']]] name='Point']]] q=~] name='sub'] body=[%lambda p=[arg=[inp=[~ [[p=[p=[%atom p=%number q=%.n] name='x'] q=[p=[%atom p=%number q=%.n] name='y']] name='p']] out=[p=[%limb p=~[[%type p='Point']]] name='Point']] body=[p=[%operator op=%'-' a=[%limb p=~[[%name p=%x]]] b=[~ [%limb p=~[[%name p=%p] [%name p=%x]]]]] q=[%operator op=%'-' a=[%limb p=~[[%name p=%y]]] b=[~ [%limb p=~[[%name p=%p] [%name p=%y]]]]]] context=~]]]] l=~ r=~]]] q=[%let type=[p=[%none p=~] name='point-1'] val=[%call func=[%limb p=~[[%type p='Point']]] arg=[~ [p=[%atom p=[[%number p=104] q=%.n]] q=[%atom p=[[%number p=124] q=%.n]]]]] next=[%edit limb=~[[%name p=%point-1]] val=[%call func=[%limb p=~[[%name p=%point-1] [%name p=%add]]] arg=[~ [p=[%atom p=[[%number p=38] q=%.n]] q=[%atom p=[[%number p=38] q=%.n]]]]] next=[%let type=[p=[%none p=~] name='point-2'] val=[%call func=[%limb p=~[[%type p='Point']]] arg=[~ [p=[%atom p=[[%number p=30] q=%.n]] q=[%atom p=[[%number p=40] q=%.n]]]]] next=[%edit limb=~[[%name p=%point-2]] val=[%call func=[%limb p=~[[%name p=%point-2] [%name p=%add]]] arg=[~ [p=[%atom p=[[%number p=212] q=%.n]] q=[%atom p=[[%number p=302] q=%.n]]]]] next=[%edit limb=~[[%name p=%point-1]] val=[%call func=[%limb p=~[[%name p=%point-1] [%name p=%sub]]] arg=[~ [p=[%atom p=[[%number p=100] q=%.n]] q=[%atom p=[[%number p=20] q=%.n]]]]] next=[p=[p=[%call func=[%limb p=~[[%name p=%point-1] [%name p=%x]]] arg=~] q=[%call func=[%limb p=~[[%name p=%point-1] [%name p=%y]]] arg=~]] q=[p=[%call func=[%limb p=~[[%name p=%point-2] [%name p=%x]]] arg=~] q=[%call func=[%limb p=~[[%name p=%point-2] [%name p=%y]]] arg=~]]]]]]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [7 [8 [[1 0] 1 0] [1 [8 [[1 0] 1 0] [1 [0 12] 0 13] 0 1] 8 [[1 0] 1 0] [1 [0 12] [0 12] 0 12] 0 1] 0 1] 8 [[1 50] 1 60] [8 [9 4 0 3] 9 2 10 [6 7 [0 3] [1 70] 1 80] 0 2] 8 [9 5 0 3] 9 2 10 [6 7 [0 3] [1 90] 1 100] 0 2] - !> (mint:jock text) + !> [%7 p=[%8 p=[p=[%1 p=0] q=[%1 p=0]] q=[p=[%1 p=[[8 [[1 0] 1 0] [1 8 [0 7] 10 [6 7 [0 3] [8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 2] 0 1] 8 [[1 0] 1 0] [1 8 [0 7] 10 [6 7 [0 3] [8 [9 3.061 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 3.061 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 2] 0 1]] q=[%0 p=1]]] q=[%8 p=[%8 p=[%0 p=1] q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=104] q=[%1 p=124]]]] q=[%0 p=2]]] q=[%7 p=[%10 p=[p=2 q=[%8 p=[%7 p=[%0 p=2] q=[%9 p=4 q=[%0 p=1]]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=38] q=[%1 p=38]]]] q=[%0 p=2]]]]] q=[%0 p=1]] q=[%8 p=[%8 p=[%0 p=3] q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=30] q=[%1 p=40]]]] q=[%0 p=2]]] q=[%7 p=[%10 p=[p=2 q=[%8 p=[%7 p=[%0 p=2] q=[%9 p=4 q=[%0 p=1]]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=212] q=[%1 p=302]]]] q=[%0 p=2]]]]] q=[%0 p=1]] q=[%7 p=[%10 p=[p=6 q=[%8 p=[%7 p=[%0 p=6] q=[%9 p=5 q=[%0 p=1]]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=100] q=[%1 p=20]]]] q=[%0 p=2]]]]] q=[%0 p=1]] q=[p=[p=[%7 p=[%0 p=6] q=[%7 p=[%0 p=6] q=[%0 p=2]]] q=[%7 p=[%0 p=6] q=[%7 p=[%0 p=6] q=[%0 p=3]]]] q=[p=[%7 p=[%0 p=2] q=[%7 p=[%0 p=6] q=[%0 p=2]]] q=[%7 p=[%0 p=2] q=[%7 p=[%0 p=6] q=[%0 p=3]]]]]]]]]]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> .*(0 [[70 80] 90 90 90]) + !> .* 0 + :+ %8 + +.p + [%7 p=[%8 p=[p=[%1 p=0] q=[%1 p=0]] q=[p=[%1 p=[[8 [[1 0] 1 0] [1 8 [0 7] 10 [6 7 [0 3] [8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 2] 0 1] 8 [[1 0] 1 0] [1 8 [0 7] 10 [6 7 [0 3] [8 [9 3.061 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 3.061 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 2] 0 1]] q=[%0 p=1]]] q=[%8 p=[%8 p=[%0 p=1] q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=104] q=[%1 p=124]]]] q=[%0 p=2]]] q=[%7 p=[%10 p=[p=2 q=[%8 p=[%7 p=[%0 p=2] q=[%9 p=4 q=[%0 p=1]]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=38] q=[%1 p=38]]]] q=[%0 p=2]]]]] q=[%0 p=1]] q=[%8 p=[%8 p=[%0 p=3] q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=30] q=[%1 p=40]]]] q=[%0 p=2]]] q=[%7 p=[%10 p=[p=2 q=[%8 p=[%7 p=[%0 p=2] q=[%9 p=4 q=[%0 p=1]]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=212] q=[%1 p=302]]]] q=[%0 p=2]]]]] q=[%0 p=1]] q=[%7 p=[%10 p=[p=6 q=[%8 p=[%7 p=[%0 p=6] q=[%9 p=5 q=[%0 p=1]]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=100] q=[%1 p=20]]]] q=[%0 p=2]]]]] q=[%0 p=1]] q=[p=[p=[%7 p=[%0 p=6] q=[%7 p=[%0 p=6] q=[%0 p=2]]] q=[%7 p=[%0 p=6] q=[%7 p=[%0 p=6] q=[%0 p=3]]]] q=[p=[%7 p=[%0 p=2] q=[%7 p=[%0 p=6] q=[%0 p=2]]] q=[%7 p=[%0 p=2] q=[%7 p=[%0 p=6] q=[%0 p=3]]]]]]]]]]] !> .*(0 (mint:jock text)) :: -- diff --git a/hoon/tests/lib/type-point-3.hoon b/hoon/tests/lib/type-point-3.hoon new file mode 100644 index 0000000..a7a88bf --- /dev/null +++ b/hoon/tests/lib/type-point-3.hoon @@ -0,0 +1,36 @@ +:: /lib/tests/type-point-3 +/+ jock, + test +/* hoon %txt /lib/mini/txt +:: +|% +++ text + 'compose\0a class Point(x:Uint y:Uint) {\0a add(p:(x:Uint y:Uint)) -> Point {\0a (x + p.x\0a y + p.y)\0a }\0a add-cell(p:(x:Uint y:Uint)) -> (Uint Uint) {\0a (x + p.x\0a y + p.y)\0a }\0a inc(q:Uint) -> @ {\0a +(q)\0a }\0a }\0a;\0a\0alet one = Point(2 13);\0alet two = one.add(30 19);\0alet three = one.inc(41);\0a(two.add-cell(10 10) three)\0a\0a/*\0a:: Hoon equivalent program\0a!=\0a=> mini=mini\0a=>\0a ^= door\0a |_ [x=@ y=@]\0a ++ add\0a |= p=[x=@ y=@]\0a ~(. +> [(add:mini x x.p) (add:mini y y.p)])\0a ++ add-cell\0a |= p=[x=@ y=@]\0a [(add:mini x x.p) (add:mini y y.p)]\0a ++ inc\0a |= q=@\0a +(q)\0a --\0a=/ one\0a ~(. door [2 13])\0a=/ two (add:one [30 19])\0a=/ three (inc:one 41)\0a[(add-cell:two [10 10]) three]\0a\0a<<<<<<< HEAD\0aJock:\0a[7 [8 [[1 0] 1 0] [1 [8 [[1 0] 1 0] [1 8 [0 7] 10 [6 7 [0 3] [8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 2] 0 1] [8 [1 0] [1 4 0 6] 0 1] 8 [[1 0] 1 0] [1 [8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 1] 0 1] 8 [8 [0 1] 10 [6 7 [0 3] [1 2] 1 13] 0 2] 8 [8 [7 [0 2] 9 4 0 1] 9 2 10 [6 7 [0 3] [1 30] 1 19] 0 2] 8 [8 [7 [0 6] 9 10 0 1] 9 2 10 [6 7 [0 3] 1 41] 0 2] [8 [7 [0 6] 9 11 0 1] 9 2 10 [6 7 [0 3] [1 10] 1 10] 0 2] 0 2]\0a\0aHoon:\0a=======\0aH:\0a>>>>>>> sigilante/itll-cost-you-an-arm-and-a-leg\0a[ 7\0a [0 2]\0a 7\0a [ 8\0a [1 0 0]\0a [ 1\0a [8 [1 0 0] [1 [8 [7 [0 31] 9 348 0 1] 9 2 10 [6 [0 124] 0 28] 0 2] 8 [7 [0 31] 9 348 0 1] 9 2 10 [6 [0 125] 0 29] 0 2] 0 1]\0a [8 [1 0 0] [1 8 [0 7] 10 [6 7 [0 3] [8 [7 [0 31] 9 348 0 1] 9 2 10 [6 [0 124] 0 28] 0 2] 8 [7 [0 31] 9 348 0 1] 9 2 10 [6 [0 125] 0 29] 0 2] 0 2] 0 1]\0a 8 [1 0] [1 4 0 6] 0 1]\0a<<<<<<< HEAD\0a 0 1]\0a 8 [8 [0 1] 10 [6 7 [0 3] 1 2 13] 0 2] 8\0a [8 [7 [0 2] 9 10 0 1] 9 2 10 [6 7 [0 3] 1 30 19] 0 2]\0a 8 [8 [7 [0 6] 9 11 0 1] 9 2 10 [6 7 [0 3] 1 41] 0 2]\0a [8 [7 [0 6] 9 4 0 1] 9 2 10 [6 7 [0 3] 1 10 10] 0 2] 0 2]\0a=======\0a 0 1]\0a 8 [8 [0 1] 10 [6 7 [0 3] 1 2 13] 0 2]\0a 8 [8 [7 [0 2] 9 10 0 1] 9 2 10 [6 7 [0 3] 1 30 19] 0 2]\0a 8 [8 [7 [0 6] 9 11 0 1] 9 2 10 [6 7 [0 3] 1 41] 0 2]\0a [8 [7 [0 6] 9 4 0 1] 9 2 10 [6 7 [0 3] 1 10 10] 0 2] 0 2]\0a\0aJ:\0a[7\0a [8 [[1 0] 1 0]\0a [1 [8 [[1 0] 1 0] [1 [8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 1]\0a [8 [1 0] [1 4 0 6] 0 1]\0a 8 [[1 0] 1 0] [1 [8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 1]\0a 0 1]\0a 8 [8 [0 1] 10 [6 7 [0 3] [1 2] 1 13] 0 2]\0a 8 [8 [7 [0 2] 9 4 0 1] 9 2 10 [6 7 [0 3] [1 30] 1 19] 0 2]\0a 8 [8 [7 [0 6] 9 10 0 1] 9 2 10 [6 7 [0 3] 1 41] 0 2]\0a [8 [7 [0 6] 9 11 0 1] 9 2 10 [6 7 [0 3] [1 10] 1 10] 0 2] 0 2]\0a\0a7 [8 [[1 0] 1 0] [1 [8 [[1 0] 1 0] [1 [8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 1] [8 [1 0] [1 4 0 6] 0 1] 8 [[1 0] 1 0] [1 [8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 1] 0 1] 8 [8 [0 1] 10 [6 7 [0 3] [1 2] 1 13] 0 2] 8 [8 [7 [0 2] 9 4 0 1] 9 2 10 [6 7 [0 3] [1 30] 1 19] 0 2] 8 [8 [7 [0 6] 9 10 0 1] 9 2 10 [6 7 [0 3] 1 41] 0 2] [8 [7 [0 6] 9 11 0 1] 9 2 10 [6 7 [0 3] [1 10] 1 10] 0 2] 0 2]]\0a>>>>>>> sigilante/itll-cost-you-an-arm-and-a-leg\0a*/\0a' +++ test-tokenize + %+ expect-eq:test + !> ~[[%keyword %compose] [%keyword %class] [%type 'Point'] [%punctuator %'(('] [%name %x] [%punctuator %':'] [%type 'Uint'] [%name %y] [%punctuator %':'] [%type 'Uint'] [%punctuator %')'] [%punctuator %'{'] [%name %add] [%punctuator %'(('] [%name %p] [%punctuator %':'] [%punctuator %'('] [%name %x] [%punctuator %':'] [%type 'Uint'] [%name %y] [%punctuator %':'] [%type 'Uint'] [%punctuator %')'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%type 'Point'] [%punctuator %'{'] [%punctuator %'('] [%name %x] [%punctuator %'+'] [%name %p] [%punctuator %'.'] [%name %x] [%name %y] [%punctuator %'+'] [%name %p] [%punctuator %'.'] [%name %y] [%punctuator %')'] [%punctuator %'}'] [%name %add-cell] [%punctuator %'(('] [%name %p] [%punctuator %':'] [%punctuator %'('] [%name %x] [%punctuator %':'] [%type 'Uint'] [%name %y] [%punctuator %':'] [%type 'Uint'] [%punctuator %')'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%punctuator %'('] [%type 'Uint'] [%type 'Uint'] [%punctuator %')'] [%punctuator %'{'] [%punctuator %'('] [%name %x] [%punctuator %'+'] [%name %p] [%punctuator %'.'] [%name %x] [%name %y] [%punctuator %'+'] [%name %p] [%punctuator %'.'] [%name %y] [%punctuator %')'] [%punctuator %'}'] [%name %inc] [%punctuator %'(('] [%name %q] [%punctuator %':'] [%type 'Uint'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%punctuator %'@'] [%punctuator %'{'] [%punctuator %'+'] [%punctuator %'('] [%name %q] [%punctuator %')'] [%punctuator %'}'] [%punctuator %'}'] [%punctuator %';'] [%keyword %let] [%name %one] [%punctuator %'='] [%type 'Point'] [%punctuator %'(('] [%literal [[%number p=2] q=%.n]] [%literal [[%number p=13] q=%.n]] [%punctuator %')'] [%punctuator %';'] [%keyword %let] [%name %two] [%punctuator %'='] [%name %one] [%punctuator %'.'] [%name %add] [%punctuator %'(('] [%literal [[%number p=30] q=%.n]] [%literal [[%number p=19] q=%.n]] [%punctuator %')'] [%punctuator %';'] [%keyword %let] [%name %three] [%punctuator %'='] [%name %one] [%punctuator %'.'] [%name %inc] [%punctuator %'(('] [%literal [[%number p=41] q=%.n]] [%punctuator %')'] [%punctuator %';'] [%punctuator %'('] [%name %two] [%punctuator %'.'] [%name %add-cell] [%punctuator %'(('] [%literal [[%number p=10] q=%.n]] [%literal [[%number p=10] q=%.n]] [%punctuator %')'] [%name %three] [%punctuator %')']] + !> (rash text parse-tokens:jock) +:: +++ test-jeam + %+ expect-eq:test + !> ^- jock:jock + [%compose p=[%class state=[p=[%state p=[[p=[p=[%atom p=%number q=%.n] name='x'] q=[p=[%atom p=%number q=%.n] name='y']] name='']] name='Point'] arms=[n=[p=%add-cell q=[%method type=[p=[%core p=[%.y p=[inp=[~ [[p=[p=[%atom p=%number q=%.n] name='x'] q=[p=[%atom p=%number q=%.n] name='y']] name='p']] out=[[p=[p=[%atom p=%number q=%.n] name='Uint'] q=[p=[%atom p=%number q=%.n] name='Uint']] name='']]] q=~] name='add-cell'] body=[%lambda p=[arg=[inp=[~ [[p=[p=[%atom p=%number q=%.n] name='x'] q=[p=[%atom p=%number q=%.n] name='y']] name='p']] out=[[p=[p=[%atom p=%number q=%.n] name='Uint'] q=[p=[%atom p=%number q=%.n] name='Uint']] name='']] body=[p=[%operator op=%'+' a=[%limb p=~[[%name p=%x]]] b=[~ [%limb p=~[[%name p=%p] [%name p=%x]]]]] q=[%operator op=%'+' a=[%limb p=~[[%name p=%y]]] b=[~ [%limb p=~[[%name p=%p] [%name p=%y]]]]]] context=~]]]] l=[n=[p=%add q=[%method type=[p=[%core p=[%.y p=[inp=[~ [[p=[p=[%atom p=%number q=%.n] name='x'] q=[p=[%atom p=%number q=%.n] name='y']] name='p']] out=[p=[%limb p=~[[%type p='Point']]] name='Point']]] q=~] name='add'] body=[%lambda p=[arg=[inp=[~ [[p=[p=[%atom p=%number q=%.n] name='x'] q=[p=[%atom p=%number q=%.n] name='y']] name='p']] out=[p=[%limb p=~[[%type p='Point']]] name='Point']] body=[p=[%operator op=%'+' a=[%limb p=~[[%name p=%x]]] b=[~ [%limb p=~[[%name p=%p] [%name p=%x]]]]] q=[%operator op=%'+' a=[%limb p=~[[%name p=%y]]] b=[~ [%limb p=~[[%name p=%p] [%name p=%y]]]]]] context=~]]]] l=~ r={[p=%inc q=[%method type=[p=[%core p=[%.y p=[inp=[~ [p=[%atom p=%number q=%.n] name='q']] out=[p=[%atom p=%number q=%.n] name='']]] q=~] name='inc'] body=[%lambda p=[arg=[inp=[~ [p=[%atom p=%number q=%.n] name='q']] out=[p=[%atom p=%number q=%.n] name='']] body=[%increment val=[%limb p=~[[%name p=%q]]]] context=~]]]]}] r=~]] q=[%let type=[p=[%none p=~] name='one'] val=[%call func=[%limb p=~[[%type p='Point']]] arg=[~ [p=[%atom p=[[%number p=2] q=%.n]] q=[%atom p=[[%number p=13] q=%.n]]]]] next=[%let type=[p=[%none p=~] name='two'] val=[%call func=[%limb p=~[[%name p=%one] [%name p=%add]]] arg=[~ [p=[%atom p=[[%number p=30] q=%.n]] q=[%atom p=[[%number p=19] q=%.n]]]]] next=[%let type=[p=[%none p=~] name='three'] val=[%call func=[%limb p=~[[%name p=%one] [%name p=%inc]]] arg=[~ [%atom p=[[%number p=41] q=%.n]]]] next=[p=[%call func=[%limb p=~[[%name p=%two] [%name p=%add-cell]]] arg=[~ [p=[%atom p=[[%number p=10] q=%.n]] q=[%atom p=[[%number p=10] q=%.n]]]]] q=[%limb p=~[[%name p=%three]]]]]]]] + !> (jeam:jock text) +:: +++ test-mint + %+ expect-eq:test + !> [%7 p=[%8 p=[p=[%1 p=0] q=[%1 p=0]] q=[p=[%1 p=[[8 [[1 0] 1 0] [1 8 [0 7] 10 [6 7 [0 3] [8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 2] 0 1] [8 [1 0] [1 4 0 6] 0 1] 8 [[1 0] 1 0] [1 [8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 1]] q=[%0 p=1]]] q=[%8 p=[%8 p=[%0 p=1] q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=2] q=[%1 p=13]]]] q=[%0 p=2]]] q=[%8 p=[%8 p=[%7 p=[%0 p=2] q=[%9 p=4 q=[%0 p=1]]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=30] q=[%1 p=19]]]] q=[%0 p=2]]]] q=[%8 p=[%8 p=[%7 p=[%0 p=6] q=[%9 p=10 q=[%0 p=1]]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=41]]] q=[%0 p=2]]]] q=[p=[%8 p=[%7 p=[%0 p=6] q=[%9 p=11 q=[%0 p=1]]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=10] q=[%1 p=10]]]] q=[%0 p=2]]]] q=[%0 p=2]]]]]] + !> +>:(mint:jock text) +:: +++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) + %+ expect-eq:test + !> .* 0 + :+ %8 + +.p + [%7 p=[%8 p=[p=[%1 p=0] q=[%1 p=0]] q=[p=[%1 p=[[8 [[1 0] 1 0] [1 8 [0 7] 10 [6 7 [0 3] [8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 2] 0 1] [8 [1 0] [1 4 0 6] 0 1] 8 [[1 0] 1 0] [1 [8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 60] 0 12] 0 2] 8 [9 348 0 62] 9 2 10 [6 7 [0 3] [0 61] 0 13] 0 2] 0 1]] q=[%0 p=1]]] q=[%8 p=[%8 p=[%0 p=1] q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=2] q=[%1 p=13]]]] q=[%0 p=2]]] q=[%8 p=[%8 p=[%7 p=[%0 p=2] q=[%9 p=4 q=[%0 p=1]]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=30] q=[%1 p=19]]]] q=[%0 p=2]]]] q=[%8 p=[%8 p=[%7 p=[%0 p=6] q=[%9 p=10 q=[%0 p=1]]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=41]]] q=[%0 p=2]]]] q=[p=[%8 p=[%7 p=[%0 p=6] q=[%9 p=11 q=[%0 p=1]]] q=[%9 p=2 q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[p=[%1 p=10] q=[%1 p=10]]]] q=[%0 p=2]]]] q=[%0 p=2]]]]]] + !> .*(0 (mint:jock text)) +:: +-- diff --git a/hoon/tests/lib/type-point.hoon b/hoon/tests/lib/type-point.hoon index 39880a1..b357526 100644 --- a/hoon/tests/lib/type-point.hoon +++ b/hoon/tests/lib/type-point.hoon @@ -1,10 +1,11 @@ :: /lib/tests/type-point /+ jock, test +/* hoon %txt /lib/mini/txt :: |% ++ text - 'compose\0a class Foo(x:@) {\0a bar(p:@) -> Foo {\0a p\0a }\0a };\0a\0alet a:Foo = Foo(41);\0alet b = Foo(42);\0alet c:@ = 43;\0a\0a(Foo(40) a b c)' + '/* A class is broadly equivalent to a Hoon door. It has a top-level\0a sample which represents its state, along with methods that have\0a each their own samples.\0a\0a A class must be composed into the subject to be accessible.\0a*/\0acompose\0a class Foo(x:@) {\0a bar(p:@) -> Foo {\0a p\0a }\0a }\0a; // end compose\0a\0a// let name:Type = value;\0alet a:Foo = Foo(41);\0a// let name = Type(value);\0alet b = Foo(42);\0a// let name:type = value;\0alet c:@ = 43;\0a\0a(Foo(40) a b c)\0a' ++ test-tokenize %+ expect-eq:test !> ~[[%keyword %compose] [%keyword %class] [%type 'Foo'] [%punctuator %'(('] [%name %x] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'{'] [%name %bar] [%punctuator %'(('] [%name %p] [%punctuator %':'] [%punctuator %'@'] [%punctuator %')'] [%punctuator %'-'] [%punctuator %'>'] [%type 'Foo'] [%punctuator %'{'] [%name %p] [%punctuator %'}'] [%punctuator %'}'] [%punctuator %';'] [%keyword %let] [%name %a] [%punctuator %':'] [%type 'Foo'] [%punctuator %'='] [%type 'Foo'] [%punctuator %'(('] [%literal [[%number p=41] q=%.n]] [%punctuator %')'] [%punctuator %';'] [%keyword %let] [%name %b] [%punctuator %'='] [%type 'Foo'] [%punctuator %'(('] [%literal [[%number p=42] q=%.n]] [%punctuator %')'] [%punctuator %';'] [%keyword %let] [%name %c] [%punctuator %':'] [%punctuator %'@'] [%punctuator %'='] [%literal [[%number p=43] q=%.n]] [%punctuator %';'] [%punctuator %'('] [%type 'Foo'] [%punctuator %'(('] [%literal [[%number p=40] q=%.n]] [%punctuator %')'] [%name %a] [%name %b] [%name %c] [%punctuator %')']] @@ -13,18 +14,23 @@ ++ test-jeam %+ expect-eq:test !> ^- jock:jock - [%compose p=[%class state=[p=[%atom p=%number q=%.n] name='Foo'] arms=[n=[p=%bar q=[%method type=[p=[%core p=[%.y p=[inp=[~ [p=[%atom p=%number q=%.n] name='p']] out=[p=[%limb p=~[[%type p='Foo']]] name='Foo']]] q=~] name='bar'] body=[%lambda p=[arg=[inp=[~ [p=[%atom p=%number q=%.n] name='p']] out=[p=[%limb p=~[[%type p='Foo']]] name='Foo']] body=[%limb p=~[[%name p=%p]]] context=~]]]] l=~ r=~]] q=[%let type=[p=[%limb p=~[[%type p='Foo']]] name='a'] val=[%call func=[%limb p=~[[%type p='Foo']]] arg=[~ [%atom p=[[%number p=41] q=%.n]]]] next=[%let type=[p=[%none p=~] name='b'] val=[%call func=[%limb p=~[[%type p='Foo']]] arg=[~ [%atom p=[[%number p=42] q=%.n]]]] next=[%let type=[p=[%atom p=%number q=%.n] name='c'] val=[%atom p=[[%number p=43] q=%.n]] next=[p=[%call func=[%limb p=~[[%type p='Foo']]] arg=[~ [%atom p=[[%number p=40] q=%.n]]]] q=[p=[%limb p=~[[%name p=%a]]] q=[p=[%limb p=~[[%name p=%b]]] q=[%limb p=~[[%name p=%c]]]]]]]]]] + [%compose p=[%class state=[p=[%state p=[p=[%atom p=%number q=%.n] name='x']] name='Foo'] arms=[n=[p=%bar q=[%method type=[p=[%core p=[%.y p=[inp=[~ [p=[%atom p=%number q=%.n] name='p']] out=[p=[%limb p=~[[%type p='Foo']]] name='Foo']]] q=~] name='bar'] body=[%lambda p=[arg=[inp=[~ [p=[%atom p=%number q=%.n] name='p']] out=[p=[%limb p=~[[%type p='Foo']]] name='Foo']] body=[%limb p=~[[%name p=%p]]] context=~]]]] l=~ r=~]] q=[%let type=[p=[%limb p=~[[%type p='Foo']]] name='a'] val=[%call func=[%limb p=~[[%type p='Foo']]] arg=[~ [%atom p=[[%number p=41] q=%.n]]]] next=[%let type=[p=[%none p=~] name='b'] val=[%call func=[%limb p=~[[%type p='Foo']]] arg=[~ [%atom p=[[%number p=42] q=%.n]]]] next=[%let type=[p=[%atom p=%number q=%.n] name='c'] val=[%atom p=[[%number p=43] q=%.n]] next=[p=[%call func=[%limb p=~[[%type p='Foo']]] arg=[~ [%atom p=[[%number p=40] q=%.n]]]] q=[p=[%limb p=~[[%name p=%a]]] q=[p=[%limb p=~[[%name p=%b]]] q=[%limb p=~[[%name p=%c]]]]]]]]]] !> (jeam:jock text) :: ++ test-mint %+ expect-eq:test - !> [7 [8 [1 0] [1 8 [1 0] [1 0 6] 0 1] 0 1] 8 [1 41] 8 [1 42] 8 [1 43] [1 40] [0 14] [0 6] 0 2] - !> (mint:jock text) + !> [%7 p=[%8 p=[%1 p=0] q=[p=[%1 p=[8 [1 0] [1 8 [0 7] 10 [6 7 [0 3] 0 6] 0 2] 0 1]] q=[%0 p=1]]] q=[%8 p=[%8 p=[%0 p=1] q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=41]]] q=[%0 p=2]]] q=[%8 p=[%8 p=[%0 p=3] q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=42]]] q=[%0 p=2]]] q=[%8 p=[%1 p=43] q=[p=[%8 p=[%0 p=15] q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=40]]] q=[%0 p=2]]] q=[p=[%0 p=14] q=[p=[%0 p=6] q=[%0 p=2]]]]]]]] + !> +>:(mint:jock text) :: ++ test-nock + =/ past (rush q.hoon (ifix [gay gay] tall:(vang | /))) + ?~ past ~|("unable to parse Hoon library" !!) + =/ p (~(mint ut %noun) %noun u.past) %+ expect-eq:test - !> ^- * - [40 41 42 43] + !> .* 0 + :+ %8 + +.p + [%7 p=[%8 p=[%1 p=0] q=[p=[%1 p=[8 [1 0] [1 8 [0 7] 10 [6 7 [0 3] 0 6] 0 2] 0 1]] q=[%0 p=1]]] q=[%8 p=[%8 p=[%0 p=1] q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=41]]] q=[%0 p=2]]] q=[%8 p=[%8 p=[%0 p=3] q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=42]]] q=[%0 p=2]]] q=[%8 p=[%1 p=43] q=[p=[%8 p=[%0 p=15] q=[%10 p=[p=6 q=[%7 p=[%0 p=3] q=[%1 p=40]]] q=[%0 p=2]]] q=[p=[%0 p=14] q=[p=[%0 p=6] q=[%0 p=2]]]]]]]] !> .*(0 (mint:jock text)) :: -- diff --git a/img/wordmark-logo.png b/img/wordmark-logo.png new file mode 100644 index 0000000..b2ab66f Binary files /dev/null and b/img/wordmark-logo.png differ diff --git a/main.rs b/main.rs index 6f24423..671fd8b 100644 --- a/main.rs +++ b/main.rs @@ -12,8 +12,8 @@ static KERNEL_JAM: &[u8] = use crown::kernel::boot::Cli as BootCli; #[derive(Parser, Debug)] -#[command(about = "Tests various poke types for the kernel", author = "zorp", version, color = ColorChoice::Auto)] -struct TestCli { +#[command(about = "Execs various poke types for the kernel", author = "zorp", version, color = ColorChoice::Auto)] +struct ExecCli { #[command(flatten)] boot: BootCli, @@ -24,14 +24,19 @@ struct TestCli { #[derive(Parser, Debug)] enum Command { #[command(about = "The name of the code to run")] - Test { + Exec { #[arg(help = "The name of the code to run")] n: Option, }, - #[command(about = "Test all")] - TestAll {}, #[command(about = "Execute all")] ExecAll {}, + #[command(about = "The name of the code to test")] + Test { + #[arg(help = "The name of the code to test")] + n: Option, + }, + #[command(about = "Test all")] + TestAll {}, #[command(about = "Parse all")] ParseAll {}, #[command(about = "Jeam all")] @@ -48,11 +53,29 @@ enum Command { #[tokio::main] async fn main() -> Result<(), Box> { - let cli = TestCli::parse(); - let mut nockapp = boot::setup(KERNEL_JAM, Some(cli.boot.clone()), &[], "jock")?; + let cli = ExecCli::parse(); + + let mut nockapp = boot::setup( + KERNEL_JAM, + Some(cli.boot.clone()), + &[], + "jocktest", + None, + ) + .await?; + boot::init_default_tracing(&cli.boot.clone()); let poke = match cli.command { + Command::Exec { n } => { + let n = n.unwrap_or(0); + create_poke(&[D(tas!(b"exec")), D(n)]) + } + Command::ExecAll {} => { + let mut slab = NounSlab::new(); + let tas = make_tas(&mut slab, "exec-all"); + create_poke(&[tas.as_noun(), D(0)]) + } Command::Test { n } => { let n = n.unwrap_or(0); create_poke(&[D(tas!(b"test")), D(n)]) @@ -62,11 +85,6 @@ async fn main() -> Result<(), Box> { let tas = make_tas(&mut slab, "test-all"); create_poke(&[tas.as_noun(), D(0)]) } - Command::ExecAll {} => { - let mut slab = NounSlab::new(); - let tas = make_tas(&mut slab, "exec-all"); - create_poke(&[tas.as_noun(), D(0)]) - } Command::ParseAll {} => { let mut slab = NounSlab::new(); let tas = make_tas(&mut slab, "parse-all"); diff --git a/update-cargo.py b/update-cargo.py deleted file mode 100755 index 2cbe040..0000000 --- a/update-cargo.py +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/env python3 -import subprocess -import re - -# Function to get the latest commit hash for the specified branch from a repo -def get_latest_commit(repo_url, branch="master"): - print(repo_url) - try: - result = subprocess.run( - ["git", "ls-remote", repo_url, branch], - capture_output=True, - text=True, - check=True - ) - print(result.stdout) - return result.stdout.split()[0] - except subprocess.CalledProcessError: - print(f"Failed to retrieve the latest commit from {repo_url} on branch {branch}") - return None - -# Read the current Cargo.toml file -try: - with open("Cargo.toml", "r") as file: - cargo_toml = file.read() - - # Find all Git repo dependencies with their current revision hashes - matches = re.findall( - r'(\s*([^=\s]+)\s*=\s*{[^}]*git\s*=\s*"([^"]+)",\s*rev\s*=\s*")([a-f0-9]+)(")', - cargo_toml - ) - - if not matches: - print("No git dependencies with revisions found in Cargo.toml.") - else: - updated_toml = cargo_toml - for match in matches: - repo_name, _, repo_url, current_hash, trailing = match - print(f"Checking latest commit for {repo_name} at {repo_url}...") - - # Retrieve the latest commit hash - latest_commit_hash = get_latest_commit(repo_url, 'status' if repo_url[-9:] == 'sword.git' else 'master') - if latest_commit_hash and latest_commit_hash != current_hash: - print(f"Updating {repo_name}: {current_hash} -> {latest_commit_hash}") - updated_toml = re.sub( - rf'{current_hash}', - rf'{latest_commit_hash}', - updated_toml - ) - else: - print(f"{repo_name} is already up to date.") - - # Write the updated content back to Cargo.toml if changes were made - if updated_toml != cargo_toml: - with open("Cargo.toml", "w") as file: - file.write(updated_toml) - print("Cargo.toml updated with the latest commit hashes.") - else: - print("No updates were necessary.") - -except Exception as e: - print(f"An error occurred: {e}")