From 702e397432df9233cdd02e43f1f6f32e195eba84 Mon Sep 17 00:00:00 2001 From: higherbeing Date: Mon, 12 Oct 2026 14:09:13 -0400 Subject: [PATCH] =?UTF-8?q?Independent=20construction:=2046=20hyperplane-e?= =?UTF-8?q?nded=20helpers=20per=20call=20via=20the=20exact=20commutation?= =?UTF-8?q?=20condition=20(conditional=20=CE=BA=20=3D=200.0016135696105802?= =?UTF-8?q?15,=20below=20#601)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Package research/complex-571-hpe46 (copy of PR592's complex-571-hpeq4) with a new allowlisted step type hyperplane_end_closure: the chosen helpers' cleanup gates plus the non-commuting closure of what they pass run right after part B at minimal frames, so the eight entering helpers per word whose partner is merely re-read by an earlier cleanup gate also end at a hyperplane (46 per call instead of 38). Owner map renominated with a HiGHS pattern MILP, lazy top-k Hall cuts and per-window matching on PR592's dispatch. Strict verify.py passed (receipt in research/complex-571-hpe46-validation). Same mechanism as PR601 (jeremykothe2), which was posted first with a better owner map; this is an independent construction and claims no record. Co-Authored-By: Claude Fable 5.1 --- .../complex-571-hpe46-validation/RECEIPT.json | 233 + .../complex-571-hpe46-validation/RESULT.json | 34 + .../complex-571-hpe46-validation/STAGES.json | 188 + research/complex-571-hpe46/LICENSE | 201 + research/complex-571-hpe46/MANIFEST.json | 36 + research/complex-571-hpe46/NOTICE.md | 26 + research/complex-571-hpe46/README.md | 44 + research/complex-571-hpe46/code/assemble.py | 213 + .../code/assembly_controls.py | 251 + .../complex-571-hpe46/code/audit_allcold.py | 232 + .../code/bind_providers_portable.py | 66 + .../code/build_gate_moves.py | 61 + research/complex-571-hpe46/code/build_hpe.py | 113 + .../code/build_hpe_closure.py | 115 + .../complex-571-hpe46/code/emit_allcold.py | 144 + .../code/generated_identity.py | 62 + .../code/generated_identity_controls.py | 227 + .../code/hpe_adapters_local.py | 95 + .../code/hpe_audit_and_transport.py | 249 + .../complex-571-hpe46/code/hpe_audit_local.py | 159 + .../code/hpe_controls_atc.py | 60 + .../complex-571-hpe46/code/hpe_emit_local.py | 161 + .../complex-571-hpe46/code/invoice_allcold.py | 320 + .../code/phase_timing_controls.py | 36 + research/complex-571-hpe46/code/witness.py | 40 + .../complex-571-hpe46/data/OWNERS.json.gz | Bin 0 -> 420249 bytes research/complex-571-hpe46/data/PLAN.json | 42666 ++++++++++++++++ research/complex-571-hpe46/data/SPEC.json | 2142 + .../data/recipes/atm3-step0-promote.json | 1 + .../recipes/atm3-step1-greedy_kernels.json | 561 + .../recipes/atm3-step2-frame_coalesce.json | 173 + .../atm3-step3-gate_move_coalesce.json | 85 + .../atm3-step4-hyperplane_end_closure.json | 1113 + .../data/recipes/ck-step0-greedy_kernels.json | 550 + .../data/recipes/ck-step1-frame_coalesce.json | 173 + .../recipes/ck-step2-gate_move_coalesce.json | 85 + .../ck-step3-hyperplane_end_closure.json | 1113 + research/complex-571-hpe46/verify.py | 277 + 38 files changed, 52305 insertions(+) create mode 100644 research/complex-571-hpe46-validation/RECEIPT.json create mode 100644 research/complex-571-hpe46-validation/RESULT.json create mode 100644 research/complex-571-hpe46-validation/STAGES.json create mode 100644 research/complex-571-hpe46/LICENSE create mode 100644 research/complex-571-hpe46/MANIFEST.json create mode 100644 research/complex-571-hpe46/NOTICE.md create mode 100644 research/complex-571-hpe46/README.md create mode 100644 research/complex-571-hpe46/code/assemble.py create mode 100644 research/complex-571-hpe46/code/assembly_controls.py create mode 100644 research/complex-571-hpe46/code/audit_allcold.py create mode 100644 research/complex-571-hpe46/code/bind_providers_portable.py create mode 100644 research/complex-571-hpe46/code/build_gate_moves.py create mode 100644 research/complex-571-hpe46/code/build_hpe.py create mode 100644 research/complex-571-hpe46/code/build_hpe_closure.py create mode 100644 research/complex-571-hpe46/code/emit_allcold.py create mode 100644 research/complex-571-hpe46/code/generated_identity.py create mode 100644 research/complex-571-hpe46/code/generated_identity_controls.py create mode 100644 research/complex-571-hpe46/code/hpe_adapters_local.py create mode 100644 research/complex-571-hpe46/code/hpe_audit_and_transport.py create mode 100644 research/complex-571-hpe46/code/hpe_audit_local.py create mode 100644 research/complex-571-hpe46/code/hpe_controls_atc.py create mode 100644 research/complex-571-hpe46/code/hpe_emit_local.py create mode 100644 research/complex-571-hpe46/code/invoice_allcold.py create mode 100644 research/complex-571-hpe46/code/phase_timing_controls.py create mode 100644 research/complex-571-hpe46/code/witness.py create mode 100644 research/complex-571-hpe46/data/OWNERS.json.gz create mode 100644 research/complex-571-hpe46/data/PLAN.json create mode 100644 research/complex-571-hpe46/data/SPEC.json create mode 100644 research/complex-571-hpe46/data/recipes/atm3-step0-promote.json create mode 100644 research/complex-571-hpe46/data/recipes/atm3-step1-greedy_kernels.json create mode 100644 research/complex-571-hpe46/data/recipes/atm3-step2-frame_coalesce.json create mode 100644 research/complex-571-hpe46/data/recipes/atm3-step3-gate_move_coalesce.json create mode 100644 research/complex-571-hpe46/data/recipes/atm3-step4-hyperplane_end_closure.json create mode 100644 research/complex-571-hpe46/data/recipes/ck-step0-greedy_kernels.json create mode 100644 research/complex-571-hpe46/data/recipes/ck-step1-frame_coalesce.json create mode 100644 research/complex-571-hpe46/data/recipes/ck-step2-gate_move_coalesce.json create mode 100644 research/complex-571-hpe46/data/recipes/ck-step3-hyperplane_end_closure.json create mode 100644 research/complex-571-hpe46/verify.py diff --git a/research/complex-571-hpe46-validation/RECEIPT.json b/research/complex-571-hpe46-validation/RECEIPT.json new file mode 100644 index 0000000000..d1f318ac5b --- /dev/null +++ b/research/complex-571-hpe46-validation/RECEIPT.json @@ -0,0 +1,233 @@ +{ + "status": "PASS_HPE46_NATIVE_COMPLEX_AND_CITED_BIT", + "steps": [ + { + "name": "atm3-step0-promote-construction", + "exit_code": 0, + "seconds": 0.285, + "log_sha256": "3096b12dfabe0f2e410132d888fdd9c8c9b81d62578c92440e19482481aa64a3" + }, + { + "name": "ck-step0-greedy_kernels-construction", + "exit_code": 0, + "seconds": 3.151, + "log_sha256": "23ca231febd30ee092f617f0506d120c01e421bc3c814ba82b11d912c7f15869" + }, + { + "name": "atm3-step1-greedy_kernels-construction", + "exit_code": 0, + "seconds": 3.129, + "log_sha256": "40511901fa6d6da38cb7fc1b2fcc538d1e6daf7e487738b5baeced3ceee93959" + }, + { + "name": "ck-step0-greedy_kernels-omissions", + "exit_code": 0, + "seconds": 10.704, + "log_sha256": "e57622df5f252d2027d1c92e3fa8aae67d5db2a4318df110fcc8d9db99c0a2b3" + }, + { + "name": "atm3-step1-greedy_kernels-omissions", + "exit_code": 0, + "seconds": 10.597, + "log_sha256": "e57622df5f252d2027d1c92e3fa8aae67d5db2a4318df110fcc8d9db99c0a2b3" + }, + { + "name": "ck-step1-frame_coalesce-construction", + "exit_code": 0, + "seconds": 1.438, + "log_sha256": "3d2d67cbd82dd5b79c3cfea987b31bcc6a16283c68c6b13b9801e009cc94e09c" + }, + { + "name": "atm3-step2-frame_coalesce-construction", + "exit_code": 0, + "seconds": 1.423, + "log_sha256": "a04d41205fca28d21c490b4b103d74c1e000ec7f72cb07138ed92fb514db9fba" + }, + { + "name": "ck-step2-gate_move_coalesce-construction", + "exit_code": 0, + "seconds": 1.003, + "log_sha256": "0ebcf2ca688428a23e0ad3e734b35dd9004972405ca1cca679663e42df96b032" + }, + { + "name": "atm3-step3-gate_move_coalesce-construction", + "exit_code": 0, + "seconds": 0.994, + "log_sha256": "e9b4318629d9418901f9dee885dae2f4d01c5eac0b60eb9f9ddefe6afec2e4b8" + }, + { + "name": "ck-step3-hyperplane_end_closure-construction", + "exit_code": 0, + "seconds": 0.814, + "log_sha256": "f7593b6f22bf5b11af833df0da347ad803a81387c9848c6fac42bb168303b604" + }, + { + "name": "atm3-step4-hyperplane_end_closure-construction", + "exit_code": 0, + "seconds": 0.788, + "log_sha256": "267f28865f42aac6cee0ea0db06aacbb871fbf0a4d673fb002ee5265c598700e" + }, + { + "name": "ck-step3-hyperplane_end_closure-controls", + "exit_code": 0, + "seconds": 2.868, + "log_sha256": "2671d20e7156f736da85479280659ef7bc6d4f5706c54bb7390c615abd11dd20" + }, + { + "name": "atm3-step4-hyperplane_end_closure-controls", + "exit_code": 0, + "seconds": 2.898, + "log_sha256": "8ef457b52be65f7d0d22622910cc2f5c54619aa37a741b433aef1450c3676771" + }, + { + "name": "ck-all-columns-native-frames", + "exit_code": 0, + "seconds": 0.52, + "log_sha256": "e227047eb984e90bdf7864de094800c16eabefa1ea233c4270257956948e54f9" + }, + { + "name": "atm3-all-columns-native-frames", + "exit_code": 0, + "seconds": 0.494, + "log_sha256": "d4a271ce1232e02c7281d0b22fe2918ad5b2aac2ac8293ea38085afaefe3a504" + }, + { + "name": "ck-both-reflected-ledgers", + "exit_code": 0, + "seconds": 0.447, + "log_sha256": "7d6afaf527135961259f82ef6cbe828622d75f4702a342862d47768cfbeab9f3" + }, + { + "name": "atm3-both-reflected-ledgers", + "exit_code": 0, + "seconds": 0.44, + "log_sha256": "7d6afaf527135961259f82ef6cbe828622d75f4702a342862d47768cfbeab9f3" + }, + { + "name": "ck-independent-local-controls", + "exit_code": 0, + "seconds": 2.314, + "log_sha256": "924775067c1dfcef0582821a7572c9e09325185404ab43932573103785756ac5" + }, + { + "name": "atm3-independent-local-controls", + "exit_code": 0, + "seconds": 2.282, + "log_sha256": "924775067c1dfcef0582821a7572c9e09325185404ab43932573103785756ac5" + }, + { + "name": "ck-normalized-wrappers", + "exit_code": 0, + "seconds": 1.695, + "log_sha256": "441a31921029994015132274553de23363948d563f97a0187018df64c4875a03" + }, + { + "name": "atm3-normalized-wrappers", + "exit_code": 0, + "seconds": 1.687, + "log_sha256": "441a31921029994015132274553de23363948d563f97a0187018df64c4875a03" + }, + { + "name": "atm3-all-phase-edges", + "exit_code": 0, + "seconds": 105.257, + "log_sha256": "7de5d6f7533ecdb59b6ae6ba3963417bf5bda9fd595b0c07780833fd78541e83" + }, + { + "name": "ck-all-phase-edges", + "exit_code": 0, + "seconds": 105.476, + "log_sha256": "3699e6eeaa4cd93a07f1aae40eb45a291d34a5490741f2581c4046aab59c867f" + }, + { + "name": "bind-providers", + "exit_code": 0, + "seconds": 0.247, + "log_sha256": "71f679ce5a123fb58397fd6852ba64ce3832fd20e81a096bfda9a1cf3237237a" + }, + { + "name": "emit-controller", + "exit_code": 0, + "seconds": 1.993, + "log_sha256": "3e6397443c3d535bc17b4bf377925b5cf6c08d6384cb169ca57193edcd791fc5" + }, + { + "name": "independent-controller-and-controls", + "exit_code": 0, + "seconds": 7.844, + "log_sha256": "7967cafb39b35b15dccb4b7438188b5b07320a159b67293f3f88704c7d7cb868" + }, + { + "name": "fresh-invoice", + "exit_code": 0, + "seconds": 0.551, + "log_sha256": "7ebde097ad33f7755e4b6b39ad67c1d76016525f19d1cde46d631c049a2e8c4d" + }, + { + "name": "conservative-and-native-exact-assembly", + "exit_code": 0, + "seconds": 0.233, + "log_sha256": "1fd54d0e7fa2e08c22d62bdaa0f084d607e9921fc4999911de935143665ba526" + }, + { + "name": "admission-controls", + "exit_code": 0, + "seconds": 0.296, + "log_sha256": "40f0c35552fb10f02288ae8d2c6b9f902050fb370c0a19b7b88c977d0d44dab1" + }, + { + "name": "phase-timing-portability-controls", + "exit_code": 0, + "seconds": 0.659, + "log_sha256": "d4300a182a615922dd73ff2b945ff671086b86d5b80dbc009539e96d9b4dfe82" + }, + { + "name": "actual-recompression-and-rebound-controls", + "exit_code": 0, + "seconds": 2.344, + "log_sha256": "9c20730203542b9a5ed97e1ce2e2c51526e88de0b2983d4f15d7e550b8ed02ea" + } + ], + "artifacts": { + "PHASE-TIMING-CONTROLS.json": "372047bbe054965de3783f66d717ff5adbc6625f829ec10701881df1f35e2eff", + "GENERATED-IDENTITY-CONTROLS.json": "954b57f9f142de11587903466e8efef8f8417dc5a3e7669ce7f70b6ab84de120", + "mixed-global/audit/IDLE-REMAINDER-FRAMES.json": "0a26a65598fae466524065f9fd433537b04a90ceb06f983a4e6a155569cfe34c", + "RESULT.json": "1cf7bcb67f119cdcba02c0b8a3c01bcc78c5616b0042a8e1e4bd0b5ccb6d2a4b", + "ASSEMBLY.json": "50abe7c27f93f173601a371a2074c06e39e6bd6ae3eadc87091f5e0c0938d89f", + "ASSEMBLY-CONTROLS.json": "4f64158ca940d855c11e0a4fe69307282b9ff4259a5e4a07f65fa227adf39253", + "mixed-global/BINDING.json": "f5faa341d4995a278a4a27f40fe6dfa29707b40a12a5c8fe9c2ac42d8efa8c9b", + "mixed-global/audit/ASYNC-AUDIT.json": "7967cafb39b35b15dccb4b7438188b5b07320a159b67293f3f88704c7d7cb868", + "mixed-global/audit/OWNERS-AND-PROFILE.json": "ac37ef108d6e2d3bd280330b67566214a25a8cfa82fbbb50086d9c99cfe296a3", + "mixed-global/audit/PREFIX-AND-INVOICE.json": "93f2cd38aa53b64e33324e2c20c3888d45ea11b3d95810cc17161873dfb12fd9", + "atm3-step0-promote/CONSTRUCTION.json": "3096b12dfabe0f2e410132d888fdd9c8c9b81d62578c92440e19482481aa64a3", + "atm3-step0-promote/FRAME-ONLY-CONTROLS.json": "f5352a7903286838ffaca12d874e2da3976bbe173232feb3fedd219a15f8209d", + "atm3-step0-promote/RECIPES.json": "a9ea32557046ee10397e8819f4022f3a8bf678be5436982535990e65ebcd64f6", + "atm3-step1-greedy_kernels/KERNEL-CONSTRUCTION.json": "40511901fa6d6da38cb7fc1b2fcc538d1e6daf7e487738b5baeced3ceee93959", + "atm3-step1-greedy_kernels/MULTICOLD-OMISSION-CONTROLS.json": "51a0a7bfbabfed30724a60fe15edb159fc97a3c0867f380ed9a8dd2e1e766186", + "atm3-step2-frame_coalesce/FRAME-CONSTRUCTION.json": "b66e5854cec7275c15e7fbf411515ab9f8fcbcc023cba51bea955b69d9ac3d51", + "atm3-step3-gate_move_coalesce/FRAME-CONSTRUCTION.json": "1d96054eb6b2fad25ad602c8df217ea410705b2f521d0ab2db8cd81a226e3a88", + "atm3-step4-hyperplane_end_closure/HPE-ATC-CONTROLS.json": "c3465b53080ab31e88ab9db3f003ecdea30934d5b3f9d6547e6ec080bc801ada", + "atm3-step4-hyperplane_end_closure/HPE-CONSTRUCTION.json": "4bac5f31b589070864711253e52253391d49e2bc003f78803acf1e582ce60d67", + "ck-step0-greedy_kernels/KERNEL-CONSTRUCTION.json": "23ca231febd30ee092f617f0506d120c01e421bc3c814ba82b11d912c7f15869", + "ck-step0-greedy_kernels/MULTICOLD-OMISSION-CONTROLS.json": "3c55bc8fd323a88c15eb6e455a063488468bb178583622bec26095aa6a989809", + "ck-step1-frame_coalesce/FRAME-CONSTRUCTION.json": "98951047f5967e77c30861a3ccef600845bf5db2b6ea554b716ea3655b093ff9", + "ck-step2-gate_move_coalesce/FRAME-CONSTRUCTION.json": "ec10bf97610cec2ed56ba7db2ae9e450afb2429feeacf5fd0c70068073c44627", + "ck-step3-hyperplane_end_closure/HPE-ATC-CONTROLS.json": "268b33d0dc00cc45b3215bf95c674873b26bff0c7c3d644326d98b7c41daf0f0", + "ck-step3-hyperplane_end_closure/HPE-CONSTRUCTION.json": "f61be54466bef681e175a253b5fc053dad29ae39cca0ea0f2b55d02da547eff6", + "atm3-local/INDEPENDENT-LOCAL-REPLAY.json": "4f37ae45b7e84b7a16d46603bbc052b8f884dafcdce49c0bee825c5306099c2f", + "atm3-local/CLIFFORD-REVIEW.json": "d7f02ba70716ed44df41c7daea7d46adadcc852093b7f089e5a9e104eaecba2a", + "atm3-local/WRAPPER-CHECKS.json": "3045822d881692d9a3d53acc29b3bb5552a5003b8eb8934dc86e5ea5f96aef03", + "ck-local/INDEPENDENT-LOCAL-REPLAY.json": "52a7cc82d79c9080bfe38e3264a69c14472d35b8b2a2295925185de907594d83", + "ck-local/CLIFFORD-REVIEW.json": "3f09a3407b5ce648d2d3d4d23035f679bd617852e1c028e5d9d2216d043159f0", + "ck-local/WRAPPER-CHECKS.json": "12832d2fef2afc133081d50d5e279ea461fd76e493df35cef5f8b7090d6ecb4b" + }, + "manifest_sha256": "34019713c8b1e8193becf1ec89cb809f3a0abbdd4ec9d9d8575408fae5455660", + "spec_sha256": "b323df4a18ae7d327f0ffacea0dcc105e23a80e245715bded9323343871ad00d", + "source_manifest_sha256": { + "multicold": "328ce8023d33deb308b0f1ae2320424050f836d791cf60a613ae8408e7d6f3ab", + "structural_gain": "eb0499a927665a48a25355075dcb7dc76d0fc43c67ea6d311d9e0242b6d4a25d", + "larger_gain": "54d67f45ad520f4a134e069336bd0ff639aaeada28d13539298e4f2655c9692d", + "joint_prefix": "fd30701bd9bd652985db18fa95bee08a34615ef417a2feb2f55efd60a0b5d665", + "frame_coalescing": "f336fd702c54422d79c1b9ba7d8699ae6c99518f66a5b5bbc5f3be331fa1fadd" + } +} diff --git a/research/complex-571-hpe46-validation/RESULT.json b/research/complex-571-hpe46-validation/RESULT.json new file mode 100644 index 0000000000..261b6bc83f --- /dev/null +++ b/research/complex-571-hpe46-validation/RESULT.json @@ -0,0 +1,34 @@ +{ + "status": "PASS_HPE46_NATIVE_COMPLEX_AND_CITED_BIT", + "kappa": "322713922116043/200000000000000000", + "kappa_decimal": "0.001613569610580215", + "complex_lower": "101011089084942512869/62500000000000000000000", + "bit_lower": "413456747036699736067/250000000000000000000000", + "conservative_kappa_decimal": "0.001613569607722207", + "conservative_complex_lower": "1616177422491826820597/1000000000000000000000000", + "global_profile": { + "1": 183968, + "2": 33616, + "3": 23053, + "4": 14008, + "5": 4032, + "6": 4032, + "8": 576, + "25": 1, + "48": 1986 + }, + "provider_counts": { + "ck": 53, + "atm3": 19 + }, + "surcharge_model": { + "complex": false, + "bit": true + }, + "seconds": 144.63307258393615, + "reused": { + "baseline": true, + "locals": [] + }, + "scope": "Conditional native exact-complex witness after complete conservative admission, moment and outer checks; PR559 exact-cover recurrence correction only, bit bad-residue surcharge and H1-H5 retained. The frozen PR582 plain-joint-prefix, added-kernel and entrance-promoted provider dispatch with the new frame coalescences composed with cited unchanged PR543 bit supplier. All-size compiler, common-label/mutable-source realization, whole-call hosting, precision/tape and analytic transfer remain assumptions. No unconditional theorem or full Lean certification." +} diff --git a/research/complex-571-hpe46-validation/STAGES.json b/research/complex-571-hpe46-validation/STAGES.json new file mode 100644 index 0000000000..5e7e888ebf --- /dev/null +++ b/research/complex-571-hpe46-validation/STAGES.json @@ -0,0 +1,188 @@ +[ + { + "name": "atm3-step0-promote-construction", + "exit_code": 0, + "seconds": 0.285, + "log_sha256": "3096b12dfabe0f2e410132d888fdd9c8c9b81d62578c92440e19482481aa64a3" + }, + { + "name": "ck-step0-greedy_kernels-construction", + "exit_code": 0, + "seconds": 3.151, + "log_sha256": "23ca231febd30ee092f617f0506d120c01e421bc3c814ba82b11d912c7f15869" + }, + { + "name": "atm3-step1-greedy_kernels-construction", + "exit_code": 0, + "seconds": 3.129, + "log_sha256": "40511901fa6d6da38cb7fc1b2fcc538d1e6daf7e487738b5baeced3ceee93959" + }, + { + "name": "ck-step0-greedy_kernels-omissions", + "exit_code": 0, + "seconds": 10.704, + "log_sha256": "e57622df5f252d2027d1c92e3fa8aae67d5db2a4318df110fcc8d9db99c0a2b3" + }, + { + "name": "atm3-step1-greedy_kernels-omissions", + "exit_code": 0, + "seconds": 10.597, + "log_sha256": "e57622df5f252d2027d1c92e3fa8aae67d5db2a4318df110fcc8d9db99c0a2b3" + }, + { + "name": "ck-step1-frame_coalesce-construction", + "exit_code": 0, + "seconds": 1.438, + "log_sha256": "3d2d67cbd82dd5b79c3cfea987b31bcc6a16283c68c6b13b9801e009cc94e09c" + }, + { + "name": "atm3-step2-frame_coalesce-construction", + "exit_code": 0, + "seconds": 1.423, + "log_sha256": "a04d41205fca28d21c490b4b103d74c1e000ec7f72cb07138ed92fb514db9fba" + }, + { + "name": "ck-step2-gate_move_coalesce-construction", + "exit_code": 0, + "seconds": 1.003, + "log_sha256": "0ebcf2ca688428a23e0ad3e734b35dd9004972405ca1cca679663e42df96b032" + }, + { + "name": "atm3-step3-gate_move_coalesce-construction", + "exit_code": 0, + "seconds": 0.994, + "log_sha256": "e9b4318629d9418901f9dee885dae2f4d01c5eac0b60eb9f9ddefe6afec2e4b8" + }, + { + "name": "ck-step3-hyperplane_end_closure-construction", + "exit_code": 0, + "seconds": 0.814, + "log_sha256": "f7593b6f22bf5b11af833df0da347ad803a81387c9848c6fac42bb168303b604" + }, + { + "name": "atm3-step4-hyperplane_end_closure-construction", + "exit_code": 0, + "seconds": 0.788, + "log_sha256": "267f28865f42aac6cee0ea0db06aacbb871fbf0a4d673fb002ee5265c598700e" + }, + { + "name": "ck-step3-hyperplane_end_closure-controls", + "exit_code": 0, + "seconds": 2.868, + "log_sha256": "2671d20e7156f736da85479280659ef7bc6d4f5706c54bb7390c615abd11dd20" + }, + { + "name": "atm3-step4-hyperplane_end_closure-controls", + "exit_code": 0, + "seconds": 2.898, + "log_sha256": "8ef457b52be65f7d0d22622910cc2f5c54619aa37a741b433aef1450c3676771" + }, + { + "name": "ck-all-columns-native-frames", + "exit_code": 0, + "seconds": 0.52, + "log_sha256": "e227047eb984e90bdf7864de094800c16eabefa1ea233c4270257956948e54f9" + }, + { + "name": "atm3-all-columns-native-frames", + "exit_code": 0, + "seconds": 0.494, + "log_sha256": "d4a271ce1232e02c7281d0b22fe2918ad5b2aac2ac8293ea38085afaefe3a504" + }, + { + "name": "ck-both-reflected-ledgers", + "exit_code": 0, + "seconds": 0.447, + "log_sha256": "7d6afaf527135961259f82ef6cbe828622d75f4702a342862d47768cfbeab9f3" + }, + { + "name": "atm3-both-reflected-ledgers", + "exit_code": 0, + "seconds": 0.44, + "log_sha256": "7d6afaf527135961259f82ef6cbe828622d75f4702a342862d47768cfbeab9f3" + }, + { + "name": "ck-independent-local-controls", + "exit_code": 0, + "seconds": 2.314, + "log_sha256": "924775067c1dfcef0582821a7572c9e09325185404ab43932573103785756ac5" + }, + { + "name": "atm3-independent-local-controls", + "exit_code": 0, + "seconds": 2.282, + "log_sha256": "924775067c1dfcef0582821a7572c9e09325185404ab43932573103785756ac5" + }, + { + "name": "ck-normalized-wrappers", + "exit_code": 0, + "seconds": 1.695, + "log_sha256": "441a31921029994015132274553de23363948d563f97a0187018df64c4875a03" + }, + { + "name": "atm3-normalized-wrappers", + "exit_code": 0, + "seconds": 1.687, + "log_sha256": "441a31921029994015132274553de23363948d563f97a0187018df64c4875a03" + }, + { + "name": "atm3-all-phase-edges", + "exit_code": 0, + "seconds": 105.257, + "log_sha256": "7de5d6f7533ecdb59b6ae6ba3963417bf5bda9fd595b0c07780833fd78541e83" + }, + { + "name": "ck-all-phase-edges", + "exit_code": 0, + "seconds": 105.476, + "log_sha256": "3699e6eeaa4cd93a07f1aae40eb45a291d34a5490741f2581c4046aab59c867f" + }, + { + "name": "bind-providers", + "exit_code": 0, + "seconds": 0.247, + "log_sha256": "71f679ce5a123fb58397fd6852ba64ce3832fd20e81a096bfda9a1cf3237237a" + }, + { + "name": "emit-controller", + "exit_code": 0, + "seconds": 1.993, + "log_sha256": "3e6397443c3d535bc17b4bf377925b5cf6c08d6384cb169ca57193edcd791fc5" + }, + { + "name": "independent-controller-and-controls", + "exit_code": 0, + "seconds": 7.844, + "log_sha256": "7967cafb39b35b15dccb4b7438188b5b07320a159b67293f3f88704c7d7cb868" + }, + { + "name": "fresh-invoice", + "exit_code": 0, + "seconds": 0.551, + "log_sha256": "7ebde097ad33f7755e4b6b39ad67c1d76016525f19d1cde46d631c049a2e8c4d" + }, + { + "name": "conservative-and-native-exact-assembly", + "exit_code": 0, + "seconds": 0.233, + "log_sha256": "1fd54d0e7fa2e08c22d62bdaa0f084d607e9921fc4999911de935143665ba526" + }, + { + "name": "admission-controls", + "exit_code": 0, + "seconds": 0.296, + "log_sha256": "40f0c35552fb10f02288ae8d2c6b9f902050fb370c0a19b7b88c977d0d44dab1" + }, + { + "name": "phase-timing-portability-controls", + "exit_code": 0, + "seconds": 0.659, + "log_sha256": "d4300a182a615922dd73ff2b945ff671086b86d5b80dbc009539e96d9b4dfe82" + }, + { + "name": "actual-recompression-and-rebound-controls", + "exit_code": 0, + "seconds": 2.344, + "log_sha256": "9c20730203542b9a5ed97e1ce2e2c51526e88de0b2983d4f15d7e550b8ed02ea" + } +] diff --git a/research/complex-571-hpe46/LICENSE b/research/complex-571-hpe46/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/complex-571-hpe46/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/research/complex-571-hpe46/MANIFEST.json b/research/complex-571-hpe46/MANIFEST.json new file mode 100644 index 0000000000..abd3aa4f4b --- /dev/null +++ b/research/complex-571-hpe46/MANIFEST.json @@ -0,0 +1,36 @@ +{ + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "NOTICE.md": "98f76c1d449d00474cf396b6906c727861c7c8b9ccf3a46ead44227d886d5edb", + "README.md": "74c07bf74f143b03ccb4c69e394163573f285e8486899cb3d6368f227c2c8621", + "code/assemble.py": "71fca807f2e70ed7439e369be4bb3be21b487e942b92f0e7629d7521e9398a65", + "code/assembly_controls.py": "7ec40d7a223b3525ef672b2d491979f11d9be913b90c9fe5ae54160ae91538a2", + "code/audit_allcold.py": "90b754475dcb73b73ee6339ecf59190baac8157b33c45ca803ee611e6540eed1", + "code/bind_providers_portable.py": "ff9c025f628dcf16b6ba281d288bd80aa418ee9685ab90b8266049fbd1b01c93", + "code/build_gate_moves.py": "08bf1c2652307aeefbab089fdaf02f82e2c396ca23a1eb68e294a67e74c44252", + "code/build_hpe.py": "7a1f37c40f067f9b3ef4711d2ce3843fc10dfcc14b8cc290c3d6f6893c8224ae", + "code/build_hpe_closure.py": "2a2cb0283a17aad34a9aa5270e11dc04b67b9d169f5c5ea47d407de69585739a", + "code/emit_allcold.py": "5b4a6fffbdff16e27f87683274470a0a21ae224ff55f34b9839f451f2930d517", + "code/generated_identity.py": "c8af22719c0f3097a991a3f6ccac8f090afd2faba554745733d9ea88f2c25708", + "code/generated_identity_controls.py": "5ea88b559f0e8f29c6a3c814d6abcd2007abcff97d6bd2acced3fafda074375d", + "code/hpe_adapters_local.py": "b5d976f7496eac0d9c7ed97b3a028efcf6950ec989f1789b8c6f5d2b325c40b3", + "code/hpe_audit_and_transport.py": "9020d9f295c37836619b59f58c8e67d0dc14bafe8b53aa2c9e98cb5053cbbe9b", + "code/hpe_audit_local.py": "eb009dbde7e1f0feef622e62f06a4ce10b0210a8216b94e7217e67fb9d46efe3", + "code/hpe_controls_atc.py": "c75684d8355c488d4acf85d1cca566716c662384842e5bb92b1cc68efad10695", + "code/hpe_emit_local.py": "7222e564cabb7ff15b8b4833385342f19a49d3037130f8c21afd52b74638fd40", + "code/invoice_allcold.py": "b37ba38a558889becb489f0faffa50c7b0ae9edd79e8bd6154003ca7b900e65a", + "code/phase_timing_controls.py": "1692ccee3da4b1781408d126ee4999f3e31a505cd83c64823a404033da3a6339", + "code/witness.py": "dd29d2b1a0bf5bc6873155dd145d302ebc1b061bb56b06f2a10f0f9ac751a446", + "data/OWNERS.json.gz": "b444356200d64b4e985dff4a26be673fe6d4f41a96e690c05ea58f3bdf60e441", + "data/PLAN.json": "4ace3e4362b713af245d5e407cc83bd4901545c6e77e50cf6dbd0ed43f229d8f", + "data/SPEC.json": "b323df4a18ae7d327f0ffacea0dcc105e23a80e245715bded9323343871ad00d", + "data/recipes/atm3-step0-promote.json": "9a7cafdf9b600ba43985c83969b75151f665b98f454afc1494b9f9ef3dd3916f", + "data/recipes/atm3-step1-greedy_kernels.json": "c4bc67f329fc22e226f26bbbf7e67018a639823d99fccfc5a1e798a7a82db43f", + "data/recipes/atm3-step2-frame_coalesce.json": "e6d7ea259a542f2b43a857998f677db4d68f8f36335e98a030bc91ab38ce758c", + "data/recipes/atm3-step3-gate_move_coalesce.json": "3a6b8fec6c8b56a45bf8fae683083636fa295a8914ffa68d11b1f78ba3a2eb9d", + "data/recipes/atm3-step4-hyperplane_end_closure.json": "3f5c614b207732d938af375e8d6809c4a9ef061a55bb5e6d478e212bf122a35d", + "data/recipes/ck-step0-greedy_kernels.json": "c839199d0e6f8e976978fe97bc0c5579a65ba69dfb6864585b448cccc1113056", + "data/recipes/ck-step1-frame_coalesce.json": "0c8e5991e1338f03b837814dd060d4dd598c324e3538ee510913e0444a384ee3", + "data/recipes/ck-step2-gate_move_coalesce.json": "1f5b62c76915b1b8bbcf63b42dcbd87a536c34d3721c4a9b68e651404717bf00", + "data/recipes/ck-step3-hyperplane_end_closure.json": "7c1c88f7d1b3c53dd19d8a01b95434aeade114459fbc377e6706244d6a13bccc", + "verify.py": "3f4b0bd4aaeb924e4833a064bcc9043b3ae9eeb15df2db0c1cae50205288a36f" +} \ No newline at end of file diff --git a/research/complex-571-hpe46/NOTICE.md b/research/complex-571-hpe46/NOTICE.md new file mode 100644 index 0000000000..bc1fb18203 --- /dev/null +++ b/research/complex-571-hpe46/NOTICE.md @@ -0,0 +1,26 @@ +# Attribution and scope + +Four verified provider types are offered to every call: PR571's prefix word with twelve multi-cut cold kernels (PR568's unchanged constructor), the same word with forty width-five entrance promotions (PR569's unchanged frame constructor) before those kernels, PR575's plain joint-prefix provider, and PR568's eight-cold provider. A window MILP with an exact per-pattern model chooses the dispatch and a literal owner map. PR583's six source-bound kernel frame coalescences (its unchanged constructor and negative controls) are applied to every PR571-prefix provider word (ck and atm3), followed by two further coalescences that each first move one addition past two commuting additions (package code/build_gate_moves.py, extending PR583's constructor); widths are unchanged, so the free4f literal owner map is re-admitted with the coalesced locals. + +Pinned external sources (unchanged; `verify.py` checks their manifests and every file it uses): +- PR568 (`research/complex-multicold`, commit `71c99ac935a33bb7b59a1b4a7af8725a939b0b90`). +- PR571 (`research/structural-gain`, commit `b7bdc5a8de18fcf418cfb9c7d83a2b1097a5e4a3`). +- PR569 (`research/larger-gain`, commit `897213a855b7fb8a1b8b0e552a2f5c42e6c1b326`). +- PR575 (`research/complex-joint-prefix`, commit `eac6f7e378ab622dac50a2fd4b7ef6eab014de44`). +- PR583 (`research/kernel-frame-coalescing`, commit `89be768f0157f5a3d8e4db69cf1748768605eac9`). + +Provider construction is described as typed steps in `data/SPEC.json` (`build`); `verify.py` runs only allowlisted step types with their paired omission audits and checks every input and output content hash. `code/` holds the spec-driven global admission scripts adapted from PR571's `frontier-composition/global-code/` (OpenAI Codex assisted, Apache-2.0): every expected value is read from `data/SPEC.json` and compared only after independent recomputation. `code/generated_identity.py` and `code/generated_identity_controls.py`, and the decompressed-content artifact identities in the bind, audit, invoice, assembly and phase-timing scripts, are taken unchanged from PR586 by chafreaky (`research/promoted-kernel-coalescing`, commit `4846fee5b06af770e9b3a10c36200f673d656725`, OpenAI Codex assisted, Apache-2.0), including its proof-content and reference/metadata mutation controls; the normalization of descriptive width metadata after frame changes follows the same PR. + +The owner map was nominated by a HiGHS window MILP (adapted from PR569's `global/nominate_width7.py`) with lazy cross-time Hall cuts; it is not an admission dependency. + +Prepared by Claude Code (Anthropic) research agents. Apache-2.0 applies; LICENSE is included. All notices, licenses, source pins and AI disclosures of the pinned sources and their ancestry are retained in those packages and are not replaced by this notice. All inherited conditional assumptions remain conditional. + + +## This package (complex-571-hpe46) + +Prepared by higherbeing with Claude Code assistance. It is a copy of PR592's `complex-571-hpeq4` (jeremykothe2, Claude Opus 5.5 via +Claude Code; hyperplane-ended helpers, HPE verifier chain, owner-map method) with these changes: `code/build_hpe_closure.py` (new +step type `hyperplane_end_closure`: the exact commutation condition replaces the first-gate rule and ends 46 helpers per call), +`verify.py` (the step handler), `code/witness.py` (records pins in discovery mode; strict mode unchanged), new `data/PLAN.json`, +`data/OWNERS.json.gz`, `data/SPEC.json` and the two closure recipes. The owner map was nominated with the allocator tools of +PR520 (higherbeing) extended to per-call widths, HiGHS and lazy top-k Hall cuts. All inherited notices above are retained. diff --git a/research/complex-571-hpe46/README.md b/research/complex-571-hpe46/README.md new file mode 100644 index 0000000000..7bdeeaaa0f --- /dev/null +++ b/research/complex-571-hpe46/README.md @@ -0,0 +1,44 @@ +# complex-571-hpe46: conditional κ 0.001613569610580215 + +Prepared by higherbeing with Claude Code assistance. Apache-2.0; see NOTICE.md for the inherited contributors. + +## What changes against PR592/PR596 + +PR591 (jeremykothe2) ends 38 entering width-8 helpers per call on a hyperplane U instead of the full frame, so their residual +width drops to 7. Its candidate rule requires the helper's single cleanup gate to be the **first** cleanup gate on both of its +registers. Eight more helpers per call fail that rule only because their partner is *read* by an earlier cleanup gate; reading a +register twice commutes, so the partner's earlier gate is not an obstruction. This package replaces the rule by the exact +condition: the helper's cleanup gates, together with the non-commuting closure of the gates they must pass, run right after +part B at the minimal common frames (the closure here is the gate itself), and the helper ends at the hyperplane spanned by its +own and its partner's last frames. On every provider word (ck, atm3) this ends **46** helpers per call (the 38 of PR591 and 8 +more), with the same local paid Φ and eight more width-7 residuals per call. + +The owner map is renominated for the new width inventory with a window MILP (HiGHS) plus lazy cross-time Hall cuts and an exact +per-window matching. Idle remainders: {3:197, 25:1, 48:1986} (PR592: {1:2, 2:1, 3:280, 12:1, 48:1969}); the LP bound for this +menu is 41,862.3 Φ against 42,321.7 Φ for PR592's menu. + +Everything else (geometry, pinned sources, the other build steps, dispatch ck×53 / atm3×19, the asynchronous call order, the +HPE verifier code of PR592) is unchanged. `verify.py` gains one allowlisted step type, `hyperplane_end_closure` +(`code/build_hpe_closure.py`), whose output is recomputed from the input word and must equal the recipe; it is followed by +PR592's unchanged raw-word control audit (`hpe_controls_atc.py`, 8 mutations rejected) and by the same independent comparison +as `hyperplane_end`. `code/witness.py` records pins in discovery mode (`WITNESS_RECORD`); strict mode is unchanged. + +## Verification + +Same pinned sources as PR592 (PR568 `71c99ac`, PR569 `897213a`, PR571 `b7bdc5a`, PR575 `eac6f7e`, PR583 `89be768`): + +```sh +python3 -B research/complex-571-hpe46/verify.py --work /tmp/hpe46 \ + --source multicold=../pr568/research/complex-multicold --source larger_gain=../pr569/research/larger-gain \ + --source structural_gain=../pr571/research/structural-gain --source joint_prefix=../pr575/research/complex-joint-prefix \ + --source frame_coalescing=../pr583/research/kernel-frame-coalescing +``` + +## Scope + +Conditional on the same inherited assumptions as PR592 (all-size compiler, common-label/mutable-source realization, whole-call +hosting, precision/tape, analytic transfer, Lemma A for hyperplane-ended helpers as stated in PR592's PROOF-HYPERPLANE-END.md and +PR593's Lean). The eight additional helpers satisfy exactly the hypotheses of PR591's construction (one cleanup gate, run at U +right after B, helper never touched afterwards, partner continues to FULL); only the commutation argument for moving the gate past +the skipped cleanup prefix is generalised, and it is checked by the exact scalar replay of the reordered program in +`hpe_audit_and_transport.py` and `hpe_controls_atc.py`. No unconditional theorem. diff --git a/research/complex-571-hpe46/code/assemble.py b/research/complex-571-hpe46/code/assemble.py new file mode 100644 index 0000000000..1261127a60 --- /dev/null +++ b/research/complex-571-hpe46/code/assemble.py @@ -0,0 +1,213 @@ +"""Hardened 63 width-seven (#571 prefix word) and 9 plain eight-cold (#568 E8) provider assembly with the native exact-complex moment. + +Prepared with OpenAI Codex assistance. The rational engines and outer +constraints are retained from PR547/PR548 and their preserved ancestry. +The bit operator is the cited unchanged PR543 supplier. The complex owner +and invoice inputs must be freshly emitted by the packaged physical replay. +All conservative admission guards and conservative moment/outer witnesses run +before the PR559 native-complex correction. The bit surcharge is retained. +""" +from pathlib import Path +from fractions import Fraction as Q +from decimal import Decimal, localcontext +import argparse,json,hashlib,importlib.util,os,sys +from collections import Counter +assert __debug__, 'Assertions required' +P=Path(sys.argv[1] if __name__=='__main__' else os.environ['GAIN_PR564_SOURCE']).resolve() +read=lambda p:json.loads(p.read_text()) +sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest() +hash_ok=lambda x:isinstance(x,str) and len(x)==64 and all(t in '0123456789abcdef'for t in x) +digest=lambda x:hashlib.sha256(json.dumps(x,separators=(',',':')).encode()).hexdigest() +def load(n): + s=importlib.util.spec_from_file_location(n,P/'engines'/(n+'.py'));m=importlib.util.module_from_spec(s);s.loader.exec_module(m);return m +M,B,A=[load(n)for n in ('moment','base_two_moment','outer')] +def dec(x): + with localcontext()as ctx:ctx.prec=70;return str(Decimal(x.numerator)/Decimal(x.denominator)) +from witness import DISPATCH,CALL_ORDER,COUNTS,PIDS,X,DISCOVER,pin + + +def assemble(owner,invoice,owner_sha,invoice_sha): + # These are admission receipts, not optional collections of successful rows. + # Require both orientations and every finite check before pricing anything. + assert owner['status']=='PASS_INDEPENDENT_ASYNC_OWNERS_AND_PROFILE' + assert invoice['status']=='PASS_INDEPENDENT_MIXED_ASYNC_SCALAR_PREFIX_AND_FINITE_INVOICE' + assert all(hash_ok(x)for x in (owner_sha,invoice_sha,owner['template_sha256'],owner['controller_audit_sha256'],invoice['parent_template_sha256'])) + checks={'local_primitive_bound','logical','router','literal','mass','precision','tape','row','halving'} + assert set(invoice['strict_checks'])==checks + assert all(invoice['strict_checks'][name] is True for name in checks) + assert set(invoice['providers'])==set(PIDS) + assert invoice['provider_counts']==COUNTS + assert owner['all_live_owners_per_call_distinct'] is True + assert owner['owners_per_call']==728 and owner['actual_helper_owner_charts']==owner['hosted_residuals']==pin('expected.hosted_residuals',owner['hosted_residuals']) + pin('expected.rank_mass',owner['rank_mass']) + pin('expected.actual_73column_sigmas',owner['actual_73column_sigmas']);pin('expected.cross_replica_helper_roles',owner['cross_replica_helper_roles']) + pin('expected.idle_remainders',owner['explicit_idle_remainder_children']) + assert invoice['complete_invocation_sweeps']==invoice['bridge_sweeps']==72 + assert invoice['live']==owner['live'] and invoice['physical']==owner['physical'] + assert invoice['helpers']==504 and invoice['centres']==8 + assert invoice['physical_stock_identity']==dict(data_and_owner_families=7168,local_helpers=504,private_centres=8,coefficient_work=2) + assert sum(invoice['physical_stock_identity'].values())==invoice['physical'] + assert invoice['controller_audit_sha256']==owner['controller_audit_sha256'] + for pid,p in invoice['providers'].items(): + assert set(p['local'])=={'forward','backward'} + assert p['helpers']==504 and p['centres']==8 and p['n']==728 and p['v']==112 and p['h']==9 + K='providers.'+pid+'.';pin(K+'entering',p['entering_helpers']);pin(K+'entrance',p['entrance_rank']) + pin(K+'inventory',p['width_inventory']) + assert all(type(w) is int and 0=0 for n in idle.values()) + idle=+idle;assert sum(idle.values())==owner['explicit_idle_remainder_children'] + pin('expected.idle_remainder_profile',{str(r):n for r,n in sorted(idle.items())}) + paid.update(idle) + assert dict(paid)=={int(r):n for r,n in owner['paid_profile'].items()} + assert invoice['compiler']==64*74**3 + assert invoice['local_adapters']==max(p['local_adapters']for p in invoice['providers'].values()) + assert invoice['local_primitive_bound']==max(p['local_primitive_bound']for p in invoice['providers'].values()) + # Recount the retained dedicated-bank envelope independently. Its geometry + # stays fixed, while every local primitive and wrapper comes from the actual + # selected provider/orientation sums above. + parent_live,parent_physical,parent_idle=11704,12218,16128 + assert owner['source_idle_children_charged']==parent_idle + bridges,shifts=2*112*72,4*112*8;moves=2*shifts + nonlocal_items=(4*112*8*9+2*112*8*9+2*72*504+parent_idle+9*504+bridges+shifts+moves+parent_live+parent_physical+invoice['wrapper_elementary_factors_charged']) + outside=8*nonlocal_items+64*73 + pervertex=(invoice['selected_real_component_primitives']+bridges+shifts+moves+parent_live+(72*invoice['local_adapters']+outside)*invoice['compiler']+64*parent_physical) + rebased=pervertex+65*(invoice['physical']-parent_physical)+(invoice['live']-parent_live) + assert invoice['unhosted_pervertex']==pervertex and invoice['hosted_rebased_pervertex']==rebased + used=max(pervertex,rebased) + prior=invoice['retained_prior_overcharge'] + if prior is not None: + assert hash_ok(prior['sha256']) and type(prior['previous_pervertex_allowance']) is int and prior['previous_pervertex_allowance']>0 + assert prior['added_complete_new_pervertex']==pervertex + assert prior['policy']=='Retain old allowance and add entire fresh mixed recount.' + used=max(used,prior['previous_pervertex_allowance']+pervertex) + assert invoice['conservative_pervertex_used']==used + finite=invoice['finite'] + assert 02*48*48) + assert actual_checks==invoice['strict_checks'] and all(actual_checks.values()) + bit_path=P/'inputs/PR543-EXPECTED.json';bit_data=bit_path.read_bytes() + assert hashlib.sha1(b'blob '+str(len(bit_data)).encode()+b'\0'+bit_data).hexdigest()=='b61d859826246e0c3dabbe096e57ad7015eadfd5' + bit=json.loads(bit_data)['nine'] + c=Q(bit['bit_lower']) + H={int(r):n for r,n in owner['paid_profile'].items()};pin('expected.global_profile',owner['paid_profile']) + # Claimed lower endpoints come from the spec; discovery derives them with the same certified moment engine. + # Either way they are verified below (accepted at b, rejected at b+1e-24). + if DISCOVER:b=Q(M.certify(H,73,owner['live'],False)['lower']);conservative_b=Q(M.certify(H,73,owner['live'],True)['lower']) + else:b=Q(X['complex_lower']);conservative_b=Q(X['conservative_complex_lower']) + assert owner['template_sha256']==invoice['template_sha256'] and owner_sha==invoice['owner_audit_sha256'] + pin('expected.live',owner['live']);pin('expected.physical',owner['physical']);assert owner['deficit']==2560 + assert owner['banked_residuals']==0 + def check_moment(side,h,m,W,lower,deficit,bad): + assert m*W-sum(r*n for r,n in h.items())==deficit and m*m>2*max(h)**2 + rows=[] + for z,accept in [(lower,True),(lower+Q(1,10**24),False)]: + l,u=M.moment(h,m,W,z,bad);ll,uu=B.moment(m,W,list(h.items()),z) + if bad: + fl,fu=B.moment(m,W,[(1,32*m*m*sum(h.values()))],z);ll+=fl/10**16;uu+=fu/10**16 + assert (u<1 and uu<1)if accept else(l>1 and ll>1) + rows.append(dict(side=side,surcharge=bad,endpoint=str(z),accept=accept,mercator=[str(l-1),str(u-1)],base_two=[str(ll-1),str(uu-1)])) + return rows + bitH={int(r):n for r,n in bit['profile'].items()} + bit_moments=check_moment('bit',bitH,64,bit['bit']['live'],c,9984,True) + conservative_moments=check_moment('conservative_complex',H,73,owner['live'],conservative_b,2560,True) + assert bit['bit']['two_level_coefficient_bits']0 + ceil=lambda x:-(-x.numerator//x.denominator);cut=max(ceil(36/gap**2),ceil(2*(4+512)/gap));assert cut*gap**2>=36 and cut*gap>=2*(4+512) + cuts.append(dict(exponent=str(a),gap=str(gap),cutoff_log2=str(cut)));chain.append(a) + q=chain[-1]*(1-2*eta);margin=(1-eta)*q/(1+q);ticks=margin*10**18;k=Q((ticks.numerator-1)//ticks.denominator,10**18) + bridge={'semantic':{'C0':{'base':2,'exponent':210000},'strict_literal_gap':1},'rows':{'degree_gap':Q(10**6)-Q(51*20161,25)}} + outer=A.assembly(chain[-1],bb,bridge,k,eta=eta,beta=beta);assert len(outer['strict_constraints'])==47 and all(v>0 for v in outer['strict_constraints'].values()) + controls=[] + for name,kk,ee,be in [('next_grid',k+Q(1,10**18),eta,beta),('zero_eta',k,Q(0),beta),('zero_beta',k,eta,Q(0)),('unit_beta',k,eta,Q(1))]: + try:A.assembly(chain[-1],bb,bridge,kk,eta=ee,beta=be) + except AssertionError:controls.append(name) + else:raise AssertionError(name) + return k,cuts,outer,controls + conservative_k,conservative_cuts,conservative_outer,conservative_controls=outer_witness(conservative_b) + pin('expected.conservative_kappa_decimal',dec(conservative_k)) + # Only after every conservative supplier/admission/outer check succeeds is + # the reviewed native exact-complex recurrence selected. Bit charge stays. + native_moments=check_moment('complex',H,73,owner['live'],b,2560,False) + k,cuts,outer,controls=outer_witness(b) + pin('expected.kappa_decimal',dec(k)) + assert M.moment(H,73,owner['live'],b,True)[0]>1 + assert M.moment(bitH,64,bit['bit']['live'],c+Q(1,10**24),False)[1]<1 + model_controls=['native_complex_endpoint_rejected_with_old_surcharge','omitting_bit_surcharge_would_fail_next_endpoint_rejection'] + moments=bit_moments+native_moments + input_hashes={'owner_audit':owner_sha,'fresh_invoice':invoice_sha,'inputs/PR543-EXPECTED.json':sha(bit_path)} + input_hashes.update({'engines/'+name+'.py':sha(P/'engines'/(name+'.py'))for name in ('moment','base_two_moment','outer')}) + return dict(status='PASS_FRESH_MIXED_048_ALLCOLD_NATIVE_EXACT_ASSEMBLY',kappa=str(k),kappa_decimal=dec(k),complex_lower=str(b),complex_decimal=dec(b),bit_lower=str(c),bit_decimal=dec(c),binding='complex',gain_over_pinned569_percent=dec(100*(k/Q(X['gain_baseline_kappa'])-1)),complex_profile=H,provider_counts=invoice['provider_counts'],surcharge_model={'complex':False,'bit':True},conservative_complex_lower=str(conservative_b),conservative_complex_decimal=dec(conservative_b),conservative_kappa=str(conservative_k),conservative_kappa_decimal=dec(conservative_k),conservative_moments=conservative_moments,conservative_bootstrap=conservative_cuts,conservative_outer={n:str(v)for n,v in conservative_outer['strict_constraints'].items()},conservative_controls=conservative_controls,model_controls=model_controls,native_correction_gain=dec(k-conservative_k),template_sha256=owner['template_sha256'],input_sha256=input_hashes,bit_supplier=dict(pr=543,repository='eumemic/integer-mult-bounds',commit='2065fe4f72a914d907f1046603f5a36f17018535',path='research/e8-bit-r420/EXPECTED.json',git_blob_sha1='b61d859826246e0c3dabbe096e57ad7015eadfd5',replay_scope='Cited unchanged supplier; this assembly reprices its full profile and does not rebuild its bit circuit.'),moments=moments,bootstrap=cuts,outer={n:str(v)for n,v in outer['strict_constraints'].items()},controls=controls,scope='Conditional native exact-complex witness after complete conservative admission, moment and outer checks; PR559 exact-cover recurrence correction only, bit bad-residue surcharge and H1-H5 retained. The frozen PR582 plain-joint-prefix, added-kernel and entrance-promoted provider dispatch with the new frame coalescences composed with cited unchanged PR543 bit supplier. All-size compiler, common-label/mutable-source realization, whole-call hosting, precision/tape and analytic transfer remain assumptions. No unconditional theorem or full Lean certification.') +if __name__=='__main__': + import sys + package,C,out=map(Path,sys.argv[1:4]);assert package.resolve()==P and not out.exists() + owner_path=C/'audit/OWNERS-AND-PROFILE.json';invoice_path=C/'audit/PREFIX-AND-INVOICE.json' + owner,invoice=read(owner_path),read(invoice_path) + assert owner['template_sha256']==read(C/'hosted/HOSTED.json')['template_sha256'] + r=assemble(owner,invoice,sha(owner_path),sha(invoice_path));out.write_text(json.dumps(r,indent=2)+'\n');print(r['status'],r['kappa_decimal']) diff --git a/research/complex-571-hpe46/code/assembly_controls.py b/research/complex-571-hpe46/code/assembly_controls.py new file mode 100644 index 0000000000..fdc35bb4c9 --- /dev/null +++ b/research/complex-571-hpe46/code/assembly_controls.py @@ -0,0 +1,251 @@ +"""Independent admission controls for the N-provider native-complex assembly (per-provider controls). + +Prepared with OpenAI Codex assistance; Apache-2.0. Mutation receipts are +rebound to their new owner digest, so unrelated stale hashes cannot conceal +an incomplete width, provider, orientation, paid-profile or finite check. +The fresh physical replay remains a separate prerequisite. +""" +import argparse +import copy +import itertools +import math +import hashlib +import json +import os +from pathlib import Path +import sys as _s,pathlib as _p;_s.path.insert(0,str(_p.Path(__file__).resolve().parent)) +from witness import * + +assert __debug__, 'Assertions required' +P = Path(__file__).resolve().parent +sha = lambda p: hashlib.sha256(p.read_bytes()).hexdigest() +digest = lambda x: hashlib.sha256(json.dumps(x, sort_keys=True, separators=(',', ':')).encode()).hexdigest() + + +def verify(owner_path, invoice_path, source_package): + os.environ['GAIN_PR564_SOURCE'] = str(source_package.resolve()) + from assemble import assemble + owner = json.loads(owner_path.read_text()) + invoice = json.loads(invoice_path.read_text()) + baseline = assemble(owner, invoice, sha(owner_path), sha(invoice_path)) + + def empty_maps(o, i): + i['strict_checks'] = {} + i['providers'] = {} + + def understated_stock(o, i): + o['physical'] -= 1 + i['physical'] -= 1 + i['physical_stock_identity']['coefficient_work'] -= 1 + + def changed_profile(o, i): + o['paid_profile']['1'] += 2 + o['paid_profile']['2'] -= 1 + + def wrong_orientation(o, i): + c = next(c for c in i['selected_calls'] if c['stage'] == 0) + c['orientation'] = 'backward' + p = i['providers'][c['provider_id']] + z = p['local']['backward'] + c['program_sha256'] = p['program_hashes']['backward'] + for name in ('events', 'macros', 'real_component_primitives', + 'coefficient_work_primitive_count', 'pre_wrappers', 'post_wrappers'): + c[name] = z[name] + i['selected_real_component_primitives'] = sum(c['real_component_primitives'] for c in i['selected_calls']) + i['selected_coefficient_work_primitive_count'] = sum(c['coefficient_work_primitive_count'] for c in i['selected_calls']) + + def understated_prefix(o, i): + for p in i['providers'].values(): + for z in p['local'].values(): + z['prefix_bits'], z['prefix_l1'] = 1, '1' + i['global_prefix_bits'] = 1 + 37 + 72 + 72 + 4 + + def reordered_calls(o, i): + i['selected_calls'][0], i['selected_calls'][1] = i['selected_calls'][1], i['selected_calls'][0] + + def no_cold_wrappers(o, i): + for p in i['providers'].values(): + p['entering_helpers'] -= 4 + for z in p['local'].values():z['pre_wrappers'] = z['post_wrappers'] = p['entering_helpers'] + for c in i['selected_calls']: + c['entering_helpers'] = c['pre_wrappers'] = c['post_wrappers'] = i['providers'][c['provider_id']]['entering_helpers'] + i['wrapper_elementary_factors_charged'] = sum(2*c['pre_wrappers'] for c in i['selected_calls'])*i['factors_per_wrapper'] + + controls = [ + ('empty_certification_maps', empty_maps), + ('failed_invoice_status', lambda o, i: i.__setitem__('status', 'FAIL')), + ('nonboolean_precision_check', lambda o, i: i['strict_checks'].__setitem__('precision', 'true')), + ('wrong_owner_role_count', lambda o, i: o.__setitem__('actual_helper_owner_charts', o['actual_helper_owner_charts'] - 1)), + ('understated_physical_stock', understated_stock), + ('changed_profile_same_rank_mass', changed_profile), + ('insufficient_finite_C0', lambda o, i: i['finite'].__setitem__('required_C0_bits', 210001)), + ('missing_finite_check', lambda o, i: i['strict_checks'].pop('halving')), + ('wrong_reflected_orientation_selfconsistent_totals', wrong_orientation), + ('missing_selected_call', lambda o, i: i['selected_calls'].pop()), + ('wrong_selected_primitive_sum', lambda o, i: i.__setitem__('selected_real_component_primitives', i['selected_real_component_primitives'] - 1)), + ('wrong_selected_coefficient_work_sum', lambda o, i: i.__setitem__('selected_coefficient_work_primitive_count', i['selected_coefficient_work_primitive_count'] - 1)), + ('unpaid_wrapper_factors', lambda o, i: i.__setitem__('wrapper_elementary_factors_charged', i['wrapper_elementary_factors_charged'] - 144)), + ('wrong_global_compiler', lambda o, i: i.__setitem__('compiler', 1)), + ('wrong_global_adapter_maximum', lambda o, i: i.__setitem__('local_adapters', 1)), + ('understated_exact_prefix_and_global_sum', understated_prefix), + ('wrong_global_prefix_sum', lambda o, i: i.__setitem__('global_prefix_bits', 224)), + ('wrong_row_prefix_reserve', lambda o, i: i.__setitem__('row_prefix_extra', 0)), + ('wrong_parent_geometry_charge', lambda o, i: i.__setitem__('unhosted_pervertex', 1)), + ('wrong_rebased_geometry_charge', lambda o, i: i.__setitem__('hosted_rebased_pervertex', 1)), + ('wrong_complete_pervertex_envelope', lambda o, i: i.__setitem__('conservative_pervertex_used', 1)), + ('wrong_prior_added_complete_invoice', lambda o, i: i['retained_prior_overcharge'].__setitem__('added_complete_new_pervertex', 1)), + ('wrong_finite_router_bits', lambda o, i: i['finite'].__setitem__('router_bits', 1)), + ('wrong_finite_literal_bits', lambda o, i: i['finite'].__setitem__('literal_bits', 1)), + ('wrong_finite_physical_stock_bits', lambda o, i: i['finite'].__setitem__('physical_stock_bits', 1)), + ('wrong_finite_row_coefficient', lambda o, i: i['finite'].__setitem__('physical_row_coefficient', 1)), + ('reordered_complete_calls', reordered_calls), + ('understated_explicit_idle_remainders', lambda o, i: o.__setitem__('explicit_idle_remainder_children', o['explicit_idle_remainder_children']-1)), + ('understated_actual_chart_types', lambda o, i: o.__setitem__('actual_73column_sigmas', o['actual_73column_sigmas']-1)), + ('wrong_cross_replica_role_count', lambda o, i: o.__setitem__('cross_replica_helper_roles', o['cross_replica_helper_roles']-1)), + ('old_no_cold_wrapper_counts_selfconsistent', no_cold_wrappers), + ] + + def resync(i, c): + p = i['providers'][c['provider_id']] + c['program_sha256'] = p['program_hashes'][c['orientation']] + c['entering_helpers'], c['entrance_rank'] = p['entering_helpers'], p['entrance_rank'] + for name in ('events','macros','real_component_primitives','coefficient_work_primitive_count','pre_wrappers','post_wrappers'): + c[name] = p['local'][c['orientation']][name] + + # Every provider gets the full per-provider control set, substituting a partner provider where needed. + for P in PIDS: + Qp = partner(P) + widths = invoice['providers'][P]['widths'] + + def forged_program_hash(o, i, P=P): + i['providers'][P]['program_hashes']['forward'] = '0' * 64 + for c in i['selected_calls']: + if c['provider_id'] == P: + c['program_sha256'] = '0' * 64 + + def wrong_selected_call(o, i, P=P): + c = next(c for c in i['selected_calls'] if c['provider_id'] == P) + d = next(d for d in i['selected_calls'] if d['provider_id'] != P and (d['stage'] - c['stage']) % 2 == 0) + c['stage'], d['stage'], c['replica'], d['replica'] = d['stage'], c['stage'], d['replica'], c['replica'] + + def stale_program(o, i, P=P, Qp=Qp): + p = i['providers'][P] + p['program_hashes'] = copy.deepcopy(i['providers'][Qp]['program_hashes']) + for c in i['selected_calls']: + if c['provider_id'] == P: + c['program_sha256'] = p['program_hashes'][c['orientation']] + + def stale_profile(o, i, P=P, Qp=Qp): + p = i['providers'][P] + p['paid_profile'] = copy.deepcopy(i['providers'][Qp]['paid_profile']) + p['children'] = sum(p['paid_profile'].values()) + + def moved(o, i, P=P): + a = next(c for c in i['selected_calls'] if c['provider_id'] == P) + b = next(c for c in i['selected_calls'] if c['provider_id'] != P and c['orientation'] == a['orientation']) + a['provider_id'], b['provider_id'] = b['provider_id'], a['provider_id'] + resync(i, a); resync(i, b) + + def compensating(o, i, P=P, Qp=Qp): + # Two dishonest profiles that cancel exactly in the dispatch-weighted aggregate. + g = math.gcd(COUNTS[P], COUNTS[Qp]); dp, dq = COUNTS[Qp] // g, COUNTS[P] // g + p, q = i['providers'][P], i['providers'][Qp] + p['paid_profile']['1'] += dp; q['paid_profile']['1'] -= dq + p['children'] += dp; q['children'] -= dq + + def forged_recipe(o, i, P=P): + name = 'CLIFFORD-RECIPES.json' + i['providers'][P]['artifacts'][name] = '0'*64 + o['source_artifacts']['providers/'+P+'/'+name] = '0'*64 + + def forged_phase(o, i, P=P): + i['providers'][P]['semantic_artifact_sha256']['CLIFFORD-REVIEW.json'] = '0'*64 + o['provider_phase_semantic_sha256'][P] = i['provider_phase_semantic_sha256'][P] = '0'*64 + + controls += [ + (P + ':missing_provider', lambda o, i, P=P: i['providers'].pop(P)), + (P + ':missing_backward_orientation', lambda o, i, P=P: i['providers'][P]['local'].pop('backward')), + (P + ':unpaid_scalar_primitive', lambda o, i, P=P: i['providers'][P]['local']['forward'].__setitem__('real_component_primitives', i['providers'][P]['local']['forward']['real_component_primitives'] - 1)), + (P + ':wrong_local_artifact_binding', lambda o, i, P=P: i['providers'][P]['artifacts'].__setitem__('LOCAL-PROGRAMS.json.gz', '0' * 64)), + (P + ':false_dirty_restoration', lambda o, i, P=P: i['providers'][P]['local']['backward'].__setitem__('all_dirty_helper_columns_restored', False)), + (P + ':wrong_declared_provider_count', lambda o, i, P=P: i['provider_counts'].__setitem__(P, i['provider_counts'][P] + 1)), + (P + ':wrong_local_compiler', lambda o, i, P=P: i['providers'][P].__setitem__('compiler', 1)), + (P + ':wrong_local_adapter_charge', lambda o, i, P=P: i['providers'][P].__setitem__('local_adapters', 1)), + (P + ':wrong_local_primitive_bound', lambda o, i, P=P: i['providers'][P].__setitem__('local_primitive_bound', 1)), + (P + ':forged_provider_and_call_program_hash', forged_program_hash), + (P + ':provider_at_wrong_call', wrong_selected_call), + (P + ':stale_partner_program_consistent_call_hashes', stale_program), + (P + ':stale_partner_profile_consistent_child_total', stale_profile), + (P + ':relocated_against_partner_same_counts', moved), + (P + ':compensating_false_profiles_with_' + Qp, compensating), + (P + ':synchronized_forged_source_recipe_hash', forged_recipe), + (P + ':synchronized_forged_phase_review_semantics', forged_phase), + ] + # Width order and inventory: swap the first helper of every pair of distinct widths (same inventory), + # and shift one unit between them (same total). + first = {} + for h, w in enumerate(widths): + first.setdefault(w, h) + for wa, wb in itertools.combinations(sorted(first), 2): + def swap(o, i, P=P, a=first[wa], b=first[wb]): + w = i['providers'][P]['widths']; w[a], w[b] = w[b], w[a] + def shift(o, i, P=P, a=first[wa], b=first[wb]): + w = i['providers'][P]['widths']; w[a] += 1; w[b] -= 1 + controls.append((P + ':width_order_swap_%d_%d' % (wa, wb), swap)) + controls.append((P + ':width_inventory_shift_%d_%d' % (wa, wb), shift)) + for h in (270, 282, 294, 306): + def cold_swap(o, i, P=P, h=h): + w = i['providers'][P]['widths']; j = w.index(9); w[h], w[j] = w[j], w[h] + controls.append((P + ':cold_helper_width_swap_%d' % h, cold_swap)) + rejected = [] + accepted = [] + for name, mutate in controls: + o, i = copy.deepcopy(owner), copy.deepcopy(invoice) + mutate(o, i) + oh = digest(o) + i['owner_audit_sha256'] = oh + try: + assemble(o, i, oh, digest(i)) + except (AssertionError, KeyError): + rejected.append(name) + else: + # Discovery has no pinned values to reject spec-only mutations; the strict run must reject every control. + if not DISCOVER: + raise AssertionError('Invalid admission receipt accepted: ' + name) + accepted.append(name) + try: + assemble(owner, invoice, '0' * 64, sha(invoice_path)) + except AssertionError: + rejected.append('wrong_owner_receipt_hash') + else: + raise AssertionError('Wrong owner digest accepted') + pin('expected.assembly_controls_rejected', len(rejected)) + assert baseline['controls'] == ['next_grid', 'zero_eta', 'zero_beta', 'unit_beta'] + assert baseline['conservative_controls'] == baseline['controls'] + assert baseline['surcharge_model'] == {'complex': False, 'bit': True} + assert len(baseline['model_controls']) == 2 + return dict( + status='PASS_EXACT_MIXED_048_ALLCOLD_NATIVE_ASSEMBLY_ADMISSION_NEGATIVE_CONTROLS', + valid_receipt_kappa=baseline['kappa'], + input_sha256=baseline['input_sha256'], + assembler_sha256=sha(Path(__file__).resolve().parent / 'assemble.py'), + rejected_controls=rejected, + discovery_accepted_controls=accepted, + exact_outer_controls=baseline['controls'], + conservative_outer_controls=baseline['conservative_controls'], + recurrence_model_controls=baseline['model_controls'], + scope='Complete receipt schema; ordered widths and both reflected providers; exact program, work and paid-profile binding; independently recounted compiler, conservative envelope and finite inequalities. Does not replace fresh physical replay.', + ) + + +if __name__ == '__main__': + ap = argparse.ArgumentParser(description=__doc__) + ap.add_argument('--source-package', type=Path, required=True) + ap.add_argument('--owner', type=Path, required=True) + ap.add_argument('--invoice', type=Path, required=True) + ap.add_argument('--out', type=Path, required=True) + a = ap.parse_args() + assert not a.out.exists() + result = verify(a.owner, a.invoice, a.source_package) + a.out.write_text(json.dumps(result, indent=2) + '\n') + print(result['status'], len(result['rejected_controls'])) diff --git a/research/complex-571-hpe46/code/audit_allcold.py b/research/complex-571-hpe46/code/audit_allcold.py new file mode 100644 index 0000000000..550289ed78 --- /dev/null +++ b/research/complex-571-hpe46/code/audit_allcold.py @@ -0,0 +1,232 @@ +"""OpenAI Codex independent serialized ASYNCHRONOUS controller/spectator audit. +Imports no emitter, optimizer, expander, edge-coloring, or source hosting code. +CLI: BASE HOSTED REPORT [--mutation-controls] +Each provider is independently read from BASE/providers, never from a baseline width histogram. +OpenAI Codex two-provider width-seven extension; retains all inherited independent controller checks. +The exact 63 width-seven and 9 plain calls are frozen below. +""" +import sys,json,gzip,hashlib,copy +assert __debug__, 'Assertions must remain enabled' +from pathlib import Path +from collections import Counter,defaultdict +import sys as _s,pathlib as _p;_s.path.insert(0,str(_p.Path(__file__).resolve().parent)) +from witness import * +from generated_identity import artifact_identities +BASE,OUT,REPORT=map(lambda p:Path(p).resolve(),sys.argv[1:4]);read=lambda p:json.loads(gzip.decompress(p.read_bytes())if p.suffix=='.gz'else p.read_bytes()) +parent=read(BASE/'split-centres/GLOBAL-TEMPLATE.json.gz') +ph=read(BASE/'work/complex-nine-native/DATA-PHASES.json') +ct=read(OUT/'GLOBAL-TEMPLATE.json.gz');summary=read(OUT/'HOSTED.json') +sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest() +provider_ids=PIDS +providers={};registry={};phase_semantic_hashes={};artifact_semantic_hashes={} +required_artifacts={'work/complex-nine-native/DATA-PHASES.json'} +provider_files=('CANONICAL-WORD.json.gz','LOCAL-PROGRAMS.json.gz','LOCAL-CHECKS.json', + 'INDEPENDENT-LOCAL-REPLAY.json','RESIDUAL-ADAPTERS.json','CLIFFORD-RECIPES.json','CLIFFORD-REVIEW.json') +for pid in provider_ids: + p=BASE/'providers'/pid + c=read(p/'CANONICAL-WORD.json.gz');checks=read(p/'LOCAL-CHECKS.json') + programs=read(p/'LOCAL-PROGRAMS.json.gz');replay=read(p/'INDEPENDENT-LOCAL-REPLAY.json') + phase=read(p/'CLIFFORD-REVIEW.json');adapters=read(p/'RESIDUAL-ADAPTERS.json')['recipes'] + widths=[len(c['frames'][c['final'][2*c['v']+h]])-len(c['frames'][c['start'][2*c['v']+h]])for h in range(c['R'])] # HPE: residual width |final|-|start| + assert all(widths[h]==8 for h in (270,282,294,306));pin('providers.%s.inventory'%pid,{str(k):v for k,v in sorted(Counter(widths).items())}) + canonical_sha=sha(p/'CANONICAL-WORD.json.gz');programs_sha=sha(p/'LOCAL-PROGRAMS.json.gz') + assert replay['status']=='PASS_INDEPENDENT_LOCAL_SCALAR_FRAME_AND_WRAPPER_REPLAY' + assert replay['canonical_word_sha256']==canonical_sha and replay['local_programs_sha256']==programs_sha + assert replay['v']==c['v'] and replay['helpers']==c['R'] + assert set(programs)==set(checks)==set(replay['local'])==set(replay['paid_profiles'])=={'forward','backward'} + for orientation,events in programs.items(): + ck=checks[orientation];rr=replay['local'][orientation] + assert hashlib.sha256(json.dumps(events,sort_keys=True,separators=(',',':')).encode()).hexdigest()==ck['sha256'] + assert ck['events']==len(events) and ck['all_columns']==2*c['v']+c['R'] + assert ck['private_centers_cleared'] and ck['private_coefficient_stream_cleared_after_each_macro'] + assert rr['all_exact_columns']==2*c['v']+c['R'] and rr['private_work_erased'] + literal=Counter(e[-1]for e in events if e[0]in('climb','center')) + assert dict(literal)=={int(r):n for r,n in ck['paid_profile'].items()}=={int(r):n for r,n in c['local_profile'].items()} + assert ck['paid_profile']==replay['paid_profiles'][orientation] + assert phase['canonical_word_sha256']==canonical_sha and phase['recipe_sha256']==sha(p/'CLIFFORD-RECIPES.json') + assert phase['all_child_equalities_include_global_phase'] + artifact_semantic_hashes[pid]=artifact_identities(p) + pin('providers.%s.artifact_semantic_sha256'%pid,artifact_semantic_hashes[pid]) + phase_semantic_hashes[pid]=artifact_semantic_hashes[pid]['CLIFFORD-REVIEW.json'] + for h,w in enumerate(widths): + assert 0>i)&1==0);a=q^(1<>i&1 else 0)for i in order]+[1<2*max(paid)**2 + return dict(profile=dict(sorted(paid.items())),mass=mass,hosted=HOSTED,entering=entering,cross_replica=cross,sigma_digest=digest.hexdigest(),sigmas=sigmas,idle_remainders=len(wanted),busy_family_checks=len(roles),invocations=72) + +r=audit(ct);raw=gzip.decompress((OUT/'GLOBAL-TEMPLATE.json.gz').read_bytes());assert hashlib.sha256(raw).hexdigest()==summary['template_sha256'];assert r['profile']=={int(k):v for k,v in summary['global_profile'].items()};assert r['sigmas']==read(OUT/'ACTUAL-SIGMAS.json.gz');assert r['sigma_digest']==summary['sigma_stream_sha256'] +assert all(hashlib.sha256((BASE/name).read_bytes()).hexdigest()==value for name,value in summary['source_artifacts'].items()) +controls=[] +def reject(name,mut): + if '--mutation-controls' not in sys.argv[4:]:return + q=copy.deepcopy(ct);mut(q) + try:audit(q) + except(AssertionError,KeyError,IndexError,ValueError,TypeError):controls.append(name) + else:raise AssertionError('ACCEPTED '+name) +enter=lambda q:next(o for c in q['calls']for o in c['owners'][(2*V):]if o[1][0]==4) +reject('alias two whole owners',lambda q:q['calls'][0]['owners'].__setitem__((2*V+1),q['calls'][0]['owners'][(2*V)])) +reject('helper on active data family',lambda q:q['calls'][0]['owners'][(2*V)].__setitem__(0,q['calls'][0]['owners'][0][0])) +reject('owner in private namespace',lambda q:q['calls'][0]['owners'][(2*V)].__setitem__(0,DATA)) +reject('wrong residual width',lambda q:enter(q)[1].__setitem__(3,enter(q)[1][3]-1)) +reject('wrong spectator coordinate',lambda q:enter(q)[1][4].__setitem__(0,72)) +reject('omit idle remainder',lambda q:q['idle_children'].pop()) +reject('understate physical reserve',lambda q:q.__setitem__('physical',PHYSICAL-1)) +# Per-provider substitution controls: every provider is swapped against a partner provider. +for P in provider_ids: + Qp=partner(P) + at_p=lambda q,P=P:next(c for c in q['calls']if c['provider_id']==P) + diff=[h for h in range(R)if providers[P]['widths'][h]!=providers[Qp]['widths'][h]] + narrow=next(h for h in range(R)if providers[P]['widths'][h]<9) + reject(P+': wrong provider at its invocation',lambda q,P=P,Qp=Qp,at_p=at_p:at_p(q).__setitem__('provider_id',Qp)) + reject(P+': stale per-call local program hash',lambda q,Qp=Qp,at_p=at_p:at_p(q).__setitem__('local_program_sha256',registry[Qp]['local_program_checks'][at_p(q)['orientation']]['sha256'])) + reject(P+': stale serialized provider program',lambda q,P=P,Qp=Qp:q['local_providers'][P].__setitem__('local_programs',registry[Qp]['local_programs'])) + reject(P+': unbound residual adapter hash',lambda q,P=P:q['local_providers'][P].__setitem__('residual_adapter_sha256','0'*64)) + if diff:reject(P+': partner width in provider width registry',lambda q,P=P,Qp=Qp,h=diff[0]:q['local_providers'][P]['widths'].__setitem__(h,providers[Qp]['widths'][h])) + reject(P+': wrong per-call residual width',lambda q,at_p=at_p,h=narrow:at_p(q)['owners'][2*V+h][1].__setitem__(3,at_p(q)['owners'][2*V+h][1][3]-1)) + reject(P+': wrong sweep provider',lambda q,P=P,Qp=Qp:next(e for e in q['execution_schedule']if e['kind']=='local_cover_sweep'and DISPATCH[e['stage'],e['replica']]==P).__setitem__('provider_id',Qp)) + reject(P+': entering helper width silently restored to nine',lambda q,P=P,h=narrow:q['local_providers'][P]['widths'].__setitem__(h,9)) +report=dict(status='PASS_INDEPENDENT_ASYNC_WHOLE_OWNER_CONTROLLER_PHASES_AND_SPECTATORS',template_sha256=summary['template_sha256'],complex_template_sha256=summary['template_sha256'],complex_live=DATA,complex_profile=r['profile'],complex_hosted_residuals=HOSTED,physical=PHYSICAL,rank_mass=r['mass'],deficit=2560,entering_helper_roles=r['entering'],cross_replica_helper_roles=r['cross_replica'],one_owner_per_complete_invocation=True,helper_busy_family_window_checks=r['busy_family_checks'],complete_invocations=r['invocations'],actual_orthogonal_73column_maps=len(r['sigmas']),actual_sigma_stream_sha256=r['sigma_digest'],all_actual_residual_and_spectator_charts=True,idle_remainders=r['idle_remainders'],mutations_rejected=controls,mutation_controls_run='--mutation-controls' in sys.argv[4:],provider_phase_semantic_sha256=phase_semantic_hashes,provider_artifact_semantic_sha256=artifact_semantic_hashes,widths_by_provider={pid:dict(sorted(Counter(providers[pid]['widths']).items()))for pid in provider_ids},provider_counts=dict(Counter(c['provider_id']for c in ct['calls'])),all_provider_program_phase_and_wrapper_bindings=True,scope='Independent exact asynchronous chronology, per-replica phase projection, owner/chart/paid-profile audit. Uses per-invocation local providers bound by exact scalar, phase and residual-wrapper receipts; all-size compilation and complete coefficient invoice are separate inherited obligations.') +REPORT.parent.mkdir(parents=True,exist_ok=True) +REPORT.write_text(json.dumps(report,indent=2)+'\n');print(json.dumps(report,indent=2)) + +owners=dict(status='PASS_INDEPENDENT_ASYNC_OWNERS_AND_PROFILE',template_sha256=summary['template_sha256'],paid_profile=r['profile'],live=DATA,physical=PHYSICAL,rank_mass=r['mass'],deficit=2560,hosted_residuals=HOSTED,banked_residuals=0,all_live_owners_per_call_distinct=True,owners_per_call=N,actual_helper_owner_charts=HOSTED,actual_73column_sigmas=len(r['sigmas']),cross_replica_helper_roles=r['cross_replica'],explicit_idle_remainder_children=r['idle_remainders'],source_idle_children_charged=sum(x['replicas']for x in parent['idle_children']),source_artifacts=summary['source_artifacts'],provider_phase_semantic_sha256=phase_semantic_hashes,provider_artifact_semantic_sha256=artifact_semantic_hashes,controller_audit_sha256=hashlib.sha256(REPORT.read_bytes()).hexdigest()) +(REPORT.parent/'OWNERS-AND-PROFILE.json').write_text(json.dumps(owners,indent=2)+'\n') + +# Literal residual frames are a compact export of the already checked offsets, +# not another global replay. Every row names its actual inherited axes. +frames=[] +for z in ct['idle_children']: + axes=list(map(int,ph['recipes'][z['port']]['idle_children'][z['child']]['orthogonal_axes'])) + tail=axes[z['pending_offset']:] + assert len(tail)==z['rank'] + frames.append(dict(z,orthogonal_axes=tail)) +frame_raw=json.dumps(frames,sort_keys=True,separators=(',',':')).encode() +portable=bytearray(gzip.compress(frame_raw,mtime=0));portable[9]=255 +(OUT/'IDLE-REMAINDER-FRAMES.json.gz').write_bytes(bytes(portable)) +frame_receipt=dict(status='PASS_LITERAL_IDLE_REMAINDER_FRAMES',template_sha256=summary['template_sha256'], + uncompressed_frames_sha256=hashlib.sha256(frame_raw).hexdigest(),children=len(frames), + rank_profile=dict(sorted(Counter(z['rank']for z in frames).items())), + source_data_phase_sha256=hashlib.sha256((BASE/'work/complex-nine-native/DATA-PHASES.json').read_bytes()).hexdigest(), + scope='Actual orthogonal axes after the independently checked whole-owner prefix in each inherited pending child.') +(REPORT.parent/'IDLE-REMAINDER-FRAMES.json').write_text(json.dumps(frame_receipt,indent=2)+'\n') + diff --git a/research/complex-571-hpe46/code/bind_providers_portable.py b/research/complex-571-hpe46/code/bind_providers_portable.py new file mode 100644 index 0000000000..d859aeba0a --- /dev/null +++ b/research/complex-571-hpe46/code/bind_providers_portable.py @@ -0,0 +1,66 @@ +"""Bind freshly verified plain and width-seven four-cold providers to the frozen literal owner plan. +Prepared with OpenAI Codex assistance; Apache-2.0. All byte-stable native +files are pinned to the plan. Only validated phase-receipt timing/serialization +and directory fields are rebound; no dispatch, width or owner choice changes. +""" +import argparse,copy,gzip,hashlib,json,shutil +from collections import Counter +from pathlib import Path +import sys as _s,pathlib as _p;_s.path.insert(0,str(_p.Path(__file__).resolve().parent)) +from witness import * +from generated_identity import artifact_identities +assert __debug__, 'Assertions required' +ap=argparse.ArgumentParser(description=__doc__) +for name in ('baseline','plan','out'):ap.add_argument('--'+name,type=Path,required=True) +ap.add_argument('--provider',action='append',required=True,help='PID=DIR');a=ap.parse_args();assert not a.out.exists();a.out.mkdir(parents=True) +def read(p):return json.loads(gzip.decompress(p.read_bytes())if p.suffix=='.gz'else p.read_bytes()) +def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest() +base=a.out/'base';shutil.copytree(a.baseline/'complex-global/base',base) +ap2=dict(x.split('=',1)for x in a.provider);dirs={k:Path(v)for k,v in ap2.items()};assert set(dirs)==set(PIDS) +for pid,src in dirs.items():shutil.copytree(src,base/'providers'/pid) +pin('data.plan_sha256',sha(a.plan)) +plan=read(a.plan);original=copy.deepcopy(plan);sources={} +assert set(plan['provider_registry'])==set(dirs) +assert {(c['stage'],c['replica']):c['provider']for c in plan['provider_calls']}==DISPATCH,'PLAN dispatch differs from spec dispatch' +stable=('CANONICAL-WORD.json.gz','LOCAL-PROGRAMS.json.gz','LOCAL-CHECKS.json','INDEPENDENT-LOCAL-REPLAY.json','CLIFFORD-RECIPES.json','RESIDUAL-ADAPTERS.json') +for pid,desc in plan['provider_registry'].items(): + d=base/'providers'/pid + word,program,checks,native,phase=[read(d/name)for name in('CANONICAL-WORD.json.gz','LOCAL-PROGRAMS.json.gz','LOCAL-CHECKS.json','INDEPENDENT-LOCAL-REPLAY.json','CLIFFORD-REVIEW.json')] + assert (word['v'],word['h'],word['R'],len(word['centers']))==(112,9,504,8) + assert word['ports']==desc['ports'] and word['centers']==desc['centers'] + widths=[len(word['frames'][word['final'][r]])-len(word['frames'][word['start'][r]])for r in range(224,728)] # HPE: residual width |final|-|start| + assert all(widths[h]==8 for h in (270,282,294,306)) + assert widths==desc['widths'];pin('providers.%s.inventory'%pid,{str(k):v for k,v in sorted(Counter(widths).items())}) + assert native['status']=='PASS_INDEPENDENT_LOCAL_SCALAR_FRAME_AND_WRAPPER_REPLAY' + pin('providers.%s.native_negative_controls'%pid,len(native['negative_controls_rejected'])) + assert native['canonical_word_sha256']==sha(d/'CANONICAL-WORD.json.gz') and native['local_programs_sha256']==sha(d/'LOCAL-PROGRAMS.json.gz') + assert phase['status']=='PASS_NEW_WORD_EXACT_LOCAL_PHASE_RECIPES' + assert phase['canonical_word_sha256']==sha(d/'CANONICAL-WORD.json.gz') and phase['recipe_sha256']==sha(d/'CLIFFORD-RECIPES.json') + assert phase['all_child_equalities_include_global_phase'] is True and phase['endpoint_adapters']==224 + pin('providers.%s.phase_edges'%pid,phase['directed_edges']) + assert set(program)==set(checks)=={'forward','backward'} + expected={int(r):n for r,n in checks['forward']['paid_profile'].items()};pin('providers.%s.expected_profile'%pid,checks['forward']['paid_profile']) + for orientation,events in program.items(): + profile=Counter() + for e in events: + if e[0]=='climb':profile[e[5]]+=1 + elif e[0]=='center':profile[e[4]]+=1 + assert dict(profile)==expected=={int(r):n for r,n in checks[orientation]['paid_profile'].items()}=={int(r):n for r,n in native['paid_profiles'][orientation].items()} + assert hashlib.sha256(json.dumps(events,separators=(',',':')).encode()).hexdigest()==checks[orientation]['sha256'] + identities=artifact_identities(d) + pin('providers.%s.artifact_semantic_sha256'%pid,identities) + assert identities==desc['artifact_semantic_sha256'] + for name in ('LOCAL-CHECKS.json','CLIFFORD-RECIPES.json','RESIDUAL-ADAPTERS.json'): + assert sha(d/name)==desc['artifact_sha256'][name],(pid,name,'changed non-reference artifact') + for c in plan['provider_calls']: + if c['provider']==pid: + assert c['orientation']==('forward'if c['stage']%2==0 else'backward') + assert c['local_program_sha256']==checks[c['orientation']]['sha256'] + desc['directory']='providers/'+pid + desc['artifact_sha256']={name:sha(d/name)for name in desc['artifact_sha256']} + sources[pid]=dict(artifact_sha256=desc['artifact_sha256'],canonical_content_sha256=hashlib.sha256(json.dumps(word,sort_keys=True,separators=(',',':')).encode()).hexdigest(),all_phase_edges=phase['directed_edges']) +plan['runtime_source_plan_sha256']=sha(a.plan) +(a.out/'PLAN.json').write_text(json.dumps(plan,indent=2)+'\n') +receipt=dict(status='PASS_FROZEN_048_ALLCOLD_DISPATCH_FRESH_PROVIDER_BINDING',source_plan_sha256=sha(a.plan),runtime_plan_sha256=sha(a.out/'PLAN.json'),providers=sources,only_rebound_fields=['provider_registry.directory','provider_registry.artifact_sha256','runtime_source_plan_sha256']) +(a.out/'BINDING.json').write_text(json.dumps(receipt,indent=2)+'\n') +print(receipt['status']) diff --git a/research/complex-571-hpe46/code/build_gate_moves.py b/research/complex-571-hpe46/code/build_gate_moves.py new file mode 100644 index 0000000000..03114099c6 --- /dev/null +++ b/research/complex-571-hpe46/code/build_gate_moves.py @@ -0,0 +1,61 @@ +"""Move commuting gates, then apply source-bound frame coalescences; the scalar map stays identical. +Extends PR583's build_frames.py (chafreaky, OpenAI Codex assisted, Apache-2.0) with commuting gate moves found by +Claude Code research agents. Apache-2.0. + +Recipe: input_content_sha256, before/after profiles, moves [{section, from, to}] (applied in order; every gate the +moved gate passes must commute with it), and changes [{section, index, before, after}] (indices after the moves; +each change only raises the gate frame and must save exactly {1:-2, 2:+1}). The cleanup section is rebuilt with the +inherited rule (the input word must already satisfy it), and the helper responses must be unchanged. +""" +from pathlib import Path +import argparse,copy,gzip,hashlib,json,sys +from collections import Counter +assert __debug__,'Assertions required' +ap=argparse.ArgumentParser();ap.add_argument('--input',type=Path,required=True);ap.add_argument('--recipe',type=Path,required=True);ap.add_argument('--gk-dir',type=Path,required=True);ap.add_argument('--out',type=Path,required=True);a=ap.parse_args();assert not a.out.exists() +sys.path.insert(0,str(a.gk_dir));import gk_word as G,gk_common as C +G.V=C.V=112;G.DATA=C.DATA=7168 +raw=json.loads(gzip.decompress(a.input.read_bytes()));recipe=json.loads(a.recipe.read_text());enc=lambda x:json.dumps(x,sort_keys=True,separators=(',',':')).encode();sha=lambda x:hashlib.sha256(x).hexdigest() +assert sha(enc(raw))==recipe['input_content_sha256'];before=G.profile(raw);assert dict(before)=={int(r):n for r,n in recipe['before'].items()} +def regs(e):return(e[1],e[2])if e[0]=='add'else(e[1],) +def commute(x,y): + """Two additions commute unless one writes the other's source; any other pair must touch disjoint registers.""" + if x[0]=='add'and y[0]=='add':return x[1]!=y[2]and y[1]!=x[2] + return not set(regs(x))&set(regs(y)) +cleanup=lambda w:[G.inverse(e,G.FULL)for e in reversed(w['A']+w['B'])if not 112<=e[1]<224] +assert raw['cleanup']==cleanup(raw),'input cleanup is not the inherited inverse rule' +w=copy.deepcopy(raw);moved=[] +for m in recipe['moves']: + L=w[m['section']];i,j=m['from'],m['to'];assert i!=j and 0<=ii else range(j,i);assert all(commute(L[i],L[k])for k in passed),'noncommuting move %s'%m + L.insert(j,L.pop(i));moved.append(dict(m,passed=len(passed))) +w['cleanup']=cleanup(w);responses=G.responses(w);assert responses==G.responses(raw),'scalar responses changed by the moves' +assert G.profile(w)==before,'moves alone changed the profile';trace=[] +for change in recipe['changes']: + part,i=change['section'],change['index'];assert w[part][i]==change['before'];assert change['before'][:-1]==change['after'][:-1] + w[part][i]=change['after'];after=G.profile(w);delta={r:after[r]-before[r]for r in set(after)|set(before)if after[r]!=before[r]};assert delta=={1:-2,2:1};trace.append(dict(section=part,index=i,delta=delta));before=after +w['cleanup']=cleanup(w) +assert dict(G.profile(w))=={int(r):n for r,n in recipe['after'].items()} +for key in raw: + if key not in ('A','B','cleanup','report'):assert w[key]==raw[key] +for part in ('A','B'):assert sorted(map(enc,(e[:-1]for e in w[part])))==sorted(map(enc,(e[:-1]for e in raw[part]))) +assert G.widths_of(w)==G.widths_of(raw);responses=G.responses(w);assert responses==G.responses(raw) +assert all(not responses[int(r)-224]for r in w['start_extra']) +# Fresh negative controls: every omitted coalescence loses the new profile, every full-space frame replacement violates +# a chain/cut bound, and every move reverted before its coalescence is rejected. +rejected=[] +for c in recipe['changes']: + z=copy.deepcopy(w);z[c['section']][c['index']]=c['before'];assert G.profile(z)!=G.profile(w);rejected.append('omission-%s-%d'%(c['section'],c['index'])) + z=copy.deepcopy(w);z[c['section']][c['index']][-1]=list(G.FULL) + try:G.profile(z) + except AssertionError:rejected.append('overpromotion-%s-%d'%(c['section'],c['index'])) + else:raise AssertionError('Invalid frame accepted') +for m in reversed(recipe['moves']): + z=copy.deepcopy(w);L=z[m['section']];L.insert(m['from'],L.pop(m['to'])) + try:ok=G.profile(z)==G.profile(w) + except AssertionError:ok=False + assert not ok,'unmoved coalescence accepted';rejected.append('unmoved-%s-%d'%(m['section'],m['from'])) +w['report'].update(local_profile=dict(G.profile(w)),local_rank_mass=sum(r*n for r,n in G.profile(w).items()),status='GATE_MOVE_FRAME_COALESCENCES_PENDING_NATIVE_PHASE_ADMISSION', + # descriptive inventory fields recomputed from the actual widths (as PR586's adapted PR583 constructor does) + width_inventory={str(k):v for k,v in sorted(Counter(G.widths_of(w)).items())},entering_helpers=sum(v<9 for v in G.widths_of(w)),entrance_rank=sum(9-v for v in G.widths_of(w))) +a.out.mkdir(parents=True);(a.out/'FULL-WORD.json.gz').write_bytes(G.dump(w));receipt=dict(status='PASS_EXACT_GATE_MOVE_FRAME_COALESCENCES',input_content_sha256=sha(enc(raw)),output_content_sha256=sha(enc(w)),profile_before=recipe['before'],profile_after=recipe['after'],moves=moved,changes=trace,negative_controls_rejected=rejected,all_scalar_responses_unchanged=True,all_entering_helper_responses_zero=True,helper_widths_unchanged=True,cleanup_rebuilt_by_inherited_rule=True,scope='Construction, commutation, frame/profile and scalar response checks only; native, phase and global admission are separate.') +(a.out/'FRAME-CONSTRUCTION.json').write_text(json.dumps(receipt,indent=2,sort_keys=True)+'\n');print(json.dumps(receipt,indent=2)) diff --git a/research/complex-571-hpe46/code/build_hpe.py b/research/complex-571-hpe46/code/build_hpe.py new file mode 100644 index 0000000000..f306369ed4 --- /dev/null +++ b/research/complex-571-hpe46/code/build_hpe.py @@ -0,0 +1,113 @@ +"""Hyperplane-ended helpers (HPE) constructor. Apache-2.0. Prepared with Claude Code assistance. + +usage: build_hpe.py --input FULL-WORD.json.gz --recipe RECIPE.json --out DIR + +RECIPE: {"changes": [{"helper": h, "cleanup_index": i, "frame": [raw vectors]}, ...], "output_content_sha256": hex}. +Each change must be an admissible early-cleanup move: + * h is an entering helper (start_extra) touched by exactly one cleanup gate, cleanup[i]; + * cleanup[i] is the first cleanup gate on each of its registers (so it commutes with the whole skipped cleanup prefix); + * frame == join of the registers' last A/B frames and has dimension < 9. +The output word gets early_cleanup [[i, U]], helper_final {h: U} and the exact paid profile (only the two registers' +final chains change: h ends at U instead of FULL; the partner climbs through U). Exactness of the reordered program, +the frame chains and the profile are re-checked independently by hpe_audit_and_transport.py; the paired control audit +is controls_hpe_atc.py.""" +import argparse, gzip, hashlib, json +from collections import Counter +from pathlib import Path + + +def span(vs): + p = {} + for x in vs: + for k in sorted(p, reverse=True): + if x >> k & 1: x ^= p[k] + if x: + k = x.bit_length() - 1 + for j in p: + if p[j] >> k & 1: p[j] ^= x + p[k] = x + return [p[k] for k in sorted(p, reverse=True)] + + +def regs(e): return [e[1]] + ([e[2]] if e[0] == 'add' else []) + + +def last_frames(w): + v, R = w['report']['v'], w['report']['R']; n = 2*v + R + cur = [[] for _ in range(n)] + for i, p in enumerate(w['ports']): cur[i] = [p] + for r, f in w.get('start_extra', {}).items(): cur[int(r)] = list(f) + for part in ('A', 'B'): + for e in w[part]: + for r in regs(e): cur[r] = list(e[-1]) + return cur + + +def apply(w, changes): + assert 'early_cleanup' not in w and 'helper_final' not in w, 'input already has hyperplane-ended helpers' + v, R = w['report']['v'], w['report']['R']; n = 2*v + R + cur = last_frames(w); count = Counter(); first = {} + for i, e in enumerate(w['cleanup']): + for r in regs(e): count[r] += 1; first.setdefault(r, i) + lp = Counter({int(r): c for r, c in w['report']['local_profile'].items()}) + seen = set() + for z in changes: + h, i, U = z['helper'], z['cleanup_index'], z['frame'] + assert 2*v <= h < n and str(h) in w['start_extra'], ('not an entering helper', h) + assert count[h] == 1 and first[h] == i, ('helper must have exactly this one cleanup gate', h) + e = w['cleanup'][i]; rs = regs(e) + assert all(first[r] == i for r in rs), ('cleanup gate is not first on its registers', i) + assert not seen & set(rs), 'registers shared between changes'; seen |= set(rs) + assert span([x for r in rs for x in cur[r]]) == U and len(U) < 9, ('frame is not the join of the last frames', h) + for r in rs: # old: last -> FULL; new: last -> U (-> FULL for the partner) + d0 = 9 - len(span(cur[r])) + if d0: lp[d0] -= 1 + d1 = len(U) - len(span(cur[r])) + if d1: lp[d1] += 1 + if r != h and len(U) < 9: lp[9 - len(U)] += 1 + w['early_cleanup'] = [[z['cleanup_index'], z['frame']] for z in changes] + w['helper_final'] = {str(z['helper']): z['frame'] for z in changes} + w['report']['local_profile'] = {str(r): c for r, c in sorted(lp.items()) if c} + w['report']['local_rank_mass'] = sum(r*c for r, c in lp.items()) + if 'width_inventory' in w['report']: # descriptive metadata: one width-w helper becomes width w-(9-dim U) + inv = Counter({int(k): c for k, c in w['report']['width_inventory'].items()}) + for z in changes: + e = len(w['start_extra'][str(z['helper'])]); inv[9 - e] -= 1; inv[len(z['frame']) - e] += 1 + assert min(inv.values()) >= 0 + w['report']['width_inventory'] = {str(k): c for k, c in sorted(inv.items()) if c} + assert min(lp.values()) >= 0 + return w + + +def candidates(w): + v, R = w['report']['v'], w['report']['R']; n = 2*v + R + cur = last_frames(w); count = Counter(); first = {} + for i, e in enumerate(w['cleanup']): + for r in regs(e): count[r] += 1; first.setdefault(r, i) + out = [] + for h in range(2*v, n): + if count[h] != 1 or str(h) not in w.get('start_extra', {}): continue + i = first[h]; rs = regs(w['cleanup'][i]) + if any(first[r] != i for r in rs): continue + U = span([x for r in rs for x in cur[r]]) + if len(U) < 9: out.append(dict(helper=h, cleanup_index=i, frame=U)) + return out + + +if __name__ == '__main__': + ap = argparse.ArgumentParser(); ap.add_argument('--input', type=Path, required=True); ap.add_argument('--recipe', type=Path) + ap.add_argument('--out', type=Path); ap.add_argument('--nominate', type=Path, help='write a recipe with every candidate') + a = ap.parse_args() + w = json.loads(gzip.decompress(a.input.read_bytes())) + if a.nominate: + a.nominate.write_text(json.dumps(dict(changes=candidates(w), output_content_sha256=''), indent=1) + '\n', newline='\n') + raise SystemExit(0) + r = json.loads(a.recipe.read_bytes()) + w = apply(w, r['changes']) + raw = json.dumps(w, sort_keys=True, separators=(',', ':')).encode(); h = hashlib.sha256(raw).hexdigest() + assert h == r['output_content_sha256'], h + a.out.mkdir(parents=True, exist_ok=False) + (a.out/'FULL-WORD.json.gz').write_bytes(gzip.compress(raw, mtime=0)) + (a.out/'HPE-CONSTRUCTION.json').write_text(json.dumps(dict(status='PASS_HYPERPLANE_ENDED_HELPERS', helpers=[z['helper'] for z in r['changes']], + local_profile=w['report']['local_profile']), indent=1) + '\n', newline='\n') + print('PASS', len(r['changes']), 'hyperplane-ended helpers') diff --git a/research/complex-571-hpe46/code/build_hpe_closure.py b/research/complex-571-hpe46/code/build_hpe_closure.py new file mode 100644 index 0000000000..2b7b1e5764 --- /dev/null +++ b/research/complex-571-hpe46/code/build_hpe_closure.py @@ -0,0 +1,115 @@ +"""Generalised hyperplane-ended helpers (closure form). Recipe-driven build for the package: the chosen helpers and the tail are recomputed from the word and must equal the recipe. +""" +"""Generalised hyperplane-ended helpers: end every entering helper whose cleanup can run below FULL. +T = closure (under non-commuting precedence) of the chosen helpers' cleanup gates; T runs right after B in a greedy minimal-frame order; +the chosen helpers end at their last tail frame (must have dim < 9); everything else climbs to FULL and the rest of the cleanup runs at FULL. +Usage: build_hpe2.py IN.json.gz OUT_DIR [max_candidates]""" +import sys,gzip,json,math,hashlib +from collections import Counter,defaultdict +from pathlib import Path +F='/private/tmp/claude-501/-Users-sreekanthnair-Documents-Projects-nlogn/a545f491-8755-42a6-8a72-750f99423436/scratchpad/frontier' +sys.path.insert(0,F+'/pr568/research/complex-multicold/vendor/pr558/vendor/pr552/complex-local/static44/gk');import gk_common as C +import argparse +ap=argparse.ArgumentParser();ap.add_argument('--input',type=Path,required=True);ap.add_argument('--recipe',type=Path);ap.add_argument('--out',type=Path,required=True);ap.add_argument('--nominate',type=Path);a=ap.parse_args() +w=json.loads(gzip.decompress(a.input.read_bytes()));out=a.out;V=112;R=w['report']['R'];N=2*V+R;P=w['ports'] +assert 'early_cleanup' not in w +m=73.0;g=lambda r:r*math.log(m/r)if r>0 else 0 +def regs(e):return[e[1]]+([e[2]]if e[0]=='add'else[]) +def commute(x,y): + if x[0]=='add'and y[0]=='add':return x[1]!=y[2]and y[1]!=x[2] + return not set(regs(x))&set(regs(y)) +B=lambda vs:tuple(C.basis(vs)) +cur={r:(B([P[r]])if r=2*V and str(r)in w.get('start_extra',{})else()))for r in range(N)} +paidAB=Counter() +def climb(r,f): + f=B(f) + if cur[r]!=f: + assert B(list(cur[r])+list(f))==f,('nonmonotone',r);paidAB[len(f)-len(cur[r])]+=1;cur[r]=f +# centres' served-level climbs (as in gk_word.profile) are part of the local profile; compute them the same way +lev={int(t):B(E)for t,E in w.get('target_levels',{}).items()} +for part in('A','B'): + if part=='B': + for r,f in zip(w['centers'],w['center_frames']): + served=sorted({lev.get(e[1]-V,())for e in w['cut']if e[2]==r},key=lambda E:-len(E));o=B(f) + for Lv in served: + if Lv!=o:paidAB[len(o)-len(Lv)]+=1;o=Lv + for e in w[part]: + for r in regs(e):climb(r,e[-1]) +last=dict(cur);entering={r for r in range(2*V,N)if str(r)in w.get('start_extra',{})} +cl=w['cleanup'];n=len(cl);cnt=Counter() +for e in cl: + for r in regs(e):cnt[r]+=1 +pred=[set()for _ in range(n)] +for i,e in enumerate(cl): + for j in range(i): + if not commute(cl[j],e):pred[i].add(j) +gates_of=defaultdict(list) +for i,e in enumerate(cl): + for r in regs(e):gates_of[r].append(i) +def J(r):return len(B([x for q in {r}|{q for i in gates_of[r]for q in regs(cl[i])}for x in last[q]])) +cands=[h for h in range(2*V,N)if h in entering and J(h)<9] +MAXC=len(cands) +print('candidate entering helpers with partner-join dim < 9:',len(cands),'by #cleanup gates',Counter(cnt[h]for h in cands)) +def closure(gs): + T=set();stack=list(gs) + while stack: + i=stack.pop() + if i in T:continue + T.add(i);stack.extend(pred[i]) + return T +def schedule(T): + """greedy minimal-frame order of T respecting precedence; returns (order, frames per gate, final frames)""" + c=dict(last);indeg={i:len(pred[i]&T)for i in T};avail={i for i in T if indeg[i]==0};succ=defaultdict(list) + for i in T: + for j in pred[i]: + if j in T:succ[j].append(i) + order=[];fr={} + while avail: + i=min(avail,key=lambda i:(len(B([x for r in regs(cl[i])for x in c[r]])),i));avail.remove(i) + f=B([x for r in regs(cl[i])for x in c[r]]);fr[i]=f + for r in regs(cl[i]):c[r]=f + order.append(i) + for s in succ[i]: + indeg[s]-=1 + if indeg[s]==0:avail.add(s) + assert len(order)==len(T);return order,fr,c +# choose helpers greedily: add candidates one by one (by J then index), keep if it still ends below FULL and no chosen helper is spoiled +chosen=[] +for h in sorted(cands,key=lambda h:(J(h),h))[:MAXC]: + trial=chosen+[h];T=closure([i for q in trial for i in gates_of[q]]);order,fr,c=schedule(T) + if all(len(c[q])<9 for q in trial):chosen=trial +T=closure([i for q in chosen for i in gates_of[q]]);order,fr,c=schedule(T) +print('chosen hyperplane-ended helpers:',len(chosen),'| tail gates',len(T),'| registers touched by the tail',len({r for i in T for r in regs(cl[i])})) +# profile: A/B climbs + tail climbs + finals +paid=Counter(paidAB);c2=dict(last) +for i in order: + f=fr[i] + for r in regs(cl[i]): + if c2[r]!=f:paid[len(f)-len(c2[r])]+=1;c2[r]=f +hf={h:list(c2[h])for h in chosen} +for r in range(N): + fin=B(list(C.FULL))if(r=2*V)else B(list(__import__('gk_word').perp(P[r-V])))if False else None +for r in range(N): + if V<=r<2*V: + import gk_word as G;G.V=112;fin=B(list(G.perp(P[r-V]))) + elif r in hf:continue + else:fin=B(list(C.FULL)) + if c2[r]!=fin:paid[len(fin)-len(c2[r])]+=1 +phi=lambda pr:sum(n*g(r)for r,n in pr.items()) +ref=Counter({int(k):v for k,v in w['report']['local_profile'].items()}) +print('input local profile',dict(sorted(ref.items())),'Phi',round(phi(ref),2)) +print('new local profile',dict(sorted(paid.items())),'Phi',round(phi(paid),2),'delta',round(phi(paid)-phi(ref),2)) +inv=Counter({int(k):v for k,v in w['report']['width_inventory'].items()}) +for h in chosen:e=len(w['start_extra'][str(h)]);inv[9-e]-=1;inv[len(hf[h])-e]+=1 +print('width inventory',dict(sorted(inv.items())),'(hyperplane-ended:',len(chosen),')') +w['early_cleanup']=[[i,list(fr[i])]for i in order];w['helper_final']={str(h):v for h,v in sorted(hf.items())} +w['report']['local_profile']={str(r):c for r,c in sorted(paid.items())if c};w['report']['local_rank_mass']=sum(r*c for r,c in paid.items()) +w['report']['width_inventory']={str(k):v for k,v in sorted(inv.items())if v} +raw=json.dumps(w,sort_keys=True,separators=(',',':')).encode();digest=hashlib.sha256(raw).hexdigest() +rec=dict(helpers=sorted(chosen),early_cleanup=w['early_cleanup'],helper_final=w['helper_final'],output_content_sha256=digest) +if a.nominate:a.nominate.write_text(json.dumps(rec,indent=1)+'\n',newline='\n');raise SystemExit(0) +r=json.loads(a.recipe.read_bytes());assert r['helpers']==rec['helpers']and r['early_cleanup']==rec['early_cleanup']and r['helper_final']==rec['helper_final'],'recipe differs from the recomputed closure build' +assert r['output_content_sha256']==digest,digest +out.mkdir(parents=True,exist_ok=False);(out/'FULL-WORD.json.gz').write_bytes(gzip.compress(raw,mtime=0)) +(out/'HPE-CONSTRUCTION.json').write_text(json.dumps(dict(status='PASS_HYPERPLANE_ENDED_HELPERS_CLOSURE',helpers=rec['helpers'],tail_gates=len(rec['early_cleanup']),local_profile=w['report']['local_profile']),indent=1)+'\n',newline='\n') +print('PASS',len(chosen),'hyperplane-ended helpers (closure form), tail gates',len(rec['early_cleanup'])) diff --git a/research/complex-571-hpe46/code/emit_allcold.py b/research/complex-571-hpe46/code/emit_allcold.py new file mode 100644 index 0000000000..574de85b52 --- /dev/null +++ b/research/complex-571-hpe46/code/emit_allcold.py @@ -0,0 +1,144 @@ +"""Two-provider width-seven whole-owner derivative, adapted with OpenAI Codex assistance. +Based on PR514 and its credited PR484/507 lineage. +CLI: --base VERIFIED_VARIANT --owners ASYNC-OWNERS.json.gz --plan ASYNC-PLAN.json --out OUT +No optimizer or unpublished word builder runs. The frozen map explicitly names +one whole helper per family per complete invocation, plus borrowed spectators. +""" +import sys,json,gzip,hashlib,copy,argparse +from pathlib import Path +from collections import Counter,defaultdict +import sys as _s,pathlib as _p;_s.path.insert(0,str(_p.Path(__file__).resolve().parent)) +from witness import * +parser=argparse.ArgumentParser(description=__doc__) +parser.add_argument('--base',type=Path,required=True);parser.add_argument('--owners',type=Path,required=True);parser.add_argument('--plan',type=Path,required=True);parser.add_argument('--out',type=Path,required=True) +a=parser.parse_args();BASE,MAP,PLAN,OUT=(p.resolve()for p in(a.base,a.owners,a.plan,a.out));assert not OUT.exists();OUT.mkdir(parents=True) +class OH: + @staticmethod + def idle_basis(q): + z=next(i for i in range(9)if not(q>>i)&1);u=q^(1<>i&1 else 0)for i in order]+[1<=0 and off+w<=rank[i] + assert z['time']==at[s,rep] and z['time'] in plan['windows'][f'{orp},{i}'][1] + B=OH.idle_basis(canon['ports'][port]);pending=list(map(int,ph['recipes'][port]['idle_children'][i]['orthogonal_axes']));assert len(pending)==rank[i] + occ=[B.index(v)for v in pending[off:off+w]];sp=OH.spectators(canon['ports'][port],pending,off,w)if w<9 else[] + order=occ+sp+[j for j in range(M)if j not in occ and j not in sp];assert len(order)==len(set(order))==M + sigma=[B[j]for j in order];sigmahash=hashlib.sha256(json.dumps(sigma,separators=(',',':')).encode()).hexdigest();sigmas[sigmahash]=sigma + route=[4,i,off,w,sp]if w<9 else[3,i,off];bycall[s,rep][h]=[f,route];entering+=w<9 + cells=set(range(off,off+w));assert not used[i,orp,port]&cells;used[i,orp,port]|=cells + digest.update(json.dumps([s,rep,h,f,sigmahash],separators=(',',':')).encode()+b'\n') +for c in t['calls']: + k=(c['stage'],c['replica']);assert set(bycall[k])==set(range(R)) + c['owners']=c['owners'][:(2*V)]+[bycall[k][h]for h in range(R)];assert len({f for f,r in c['owners']})==2*V+R and all(f2*max(paid)**2 + +assert all(c['local_program_sha256']==registry[c['provider_id']]['local_program_checks'][c['orientation']]['sha256']for c in t['calls']) +t['provider_dispatch']='For each indivisible local_cover_sweep, execute local_providers[call.provider_id].local_programs[call.orientation] with that provider residual adapters and Clifford recipes. The sweep provider_id must equal its call provider_id.' +raw=json.dumps(t,sort_keys=True,separators=(',',':')).encode();(OUT/'GLOBAL-TEMPLATE.json.gz').write_bytes(gzip.compress(raw,mtime=0)) +res=dict(status='EMITTED_MIXED_PROVIDER_ASYNCHRONOUS_WHOLE_OWNER_COMPLEX_TEMPLATE', + template_sha256=hashlib.sha256(raw).hexdigest(), + parent_template_sha256=hashlib.sha256(gzip.decompress((BASE/'split-centres/GLOBAL-TEMPLATE.json.gz').read_bytes())).hexdigest(), + live=DATA,physical=physical,global_profile=dict(sorted(paid.items())), + rank_mass=sum(r*n for r,n in paid.items()),deficit=2560,maxchild=max(paid), + hosted_residuals=len(roles),banks_per_stage=[0]*9,entering_helper_roles=entering, + unique_actual_73column_sigmas=len(sigmas),sigma_stream_sha256=digest.hexdigest(), + cross_replica_helper_roles=sum(z['replica']!=z['owner_replica']for z in roles), + asynchronous_order_sha256=hashlib.sha256(json.dumps(call_order,separators=(',',':')).encode()).hexdigest(), + source_artifacts=source_artifacts,provider_counts=dict(Counter(c['provider_id']for c in t['calls'])), + scope='Two actual verified plain/width-seven providers dispatched per complete invocation; independent controller/spectator/normalization and complete finite invoice admission required.') +(OUT/'HOSTED.json').write_text(json.dumps(res,indent=2)+'\n');(OUT/'ACTUAL-SIGMAS.json.gz').write_bytes(gzip.compress(json.dumps(sigmas,separators=(',',':')).encode(),mtime=0));print(json.dumps(res,indent=2)) diff --git a/research/complex-571-hpe46/code/generated_identity.py b/research/complex-571-hpe46/code/generated_identity.py new file mode 100644 index 0000000000..74a9b60479 --- /dev/null +++ b/research/complex-571-hpe46/code/generated_identity.py @@ -0,0 +1,62 @@ +"""Proof-relevant identities for generated artifacts, independent of gzip streams. + +Immutable source archives retain their exact byte hashes. For freshly emitted +artifacts, gzip identity is the exact decompressed payload and JSON identity +retains every field. Only CLIFFORD-REVIEW's root timing field is excluded. +Literal receipt references are checked against actual files before replacing +the three gzip references (and the phase recipe reference) with content hashes. +Prepared with OpenAI Codex assistance; Apache-2.0. +""" +from pathlib import Path +import copy +import gzip +import hashlib +import json +import math + +if not __debug__: + raise RuntimeError('Assertions must remain enabled') + +FILES=('CANONICAL-WORD.json.gz','LOCAL-PROGRAMS.json.gz','LOCAL-CHECKS.json', + 'INDEPENDENT-LOCAL-REPLAY.json','CLIFFORD-RECIPES.json', + 'CLIFFORD-REVIEW.json','RESIDUAL-ADAPTERS.json') + +def sha(path): + return hashlib.sha256(Path(path).read_bytes()).hexdigest() + +def json_identity(value): + return hashlib.sha256(json.dumps(value,sort_keys=True,separators=(',',':'),allow_nan=False).encode('utf-8')).hexdigest() + +def payload_identity(path): + return hashlib.sha256(gzip.decompress(Path(path).read_bytes())).hexdigest() + +def phase_value(directory,value=None): + directory=Path(directory) + value=copy.deepcopy(json.loads((directory/'CLIFFORD-REVIEW.json').read_bytes())if value is None else value) + assert value['canonical_word_sha256']==sha(directory/'CANONICAL-WORD.json.gz'),'stale phase canonical word reference' + assert value['recipe_sha256']==sha(directory/'CLIFFORD-RECIPES.json'),'stale phase recipe reference' + seconds=value.pop('seconds') + assert type(seconds)in(int,float) and math.isfinite(seconds) and seconds>=0,'invalid phase timing metadata' + value['canonical_word_sha256']=payload_identity(directory/'CANONICAL-WORD.json.gz') + value['recipe_sha256']=json_identity(json.loads((directory/'CLIFFORD-RECIPES.json').read_bytes())) + return value + +def native_value(directory,value=None): + directory=Path(directory) + value=copy.deepcopy(json.loads((directory/'INDEPENDENT-LOCAL-REPLAY.json').read_bytes())if value is None else value) + for field,name in [('canonical_word_sha256','CANONICAL-WORD.json.gz'),('local_programs_sha256','LOCAL-PROGRAMS.json.gz')]: + assert value[field]==sha(directory/name),'stale native artifact reference: '+field + value[field]=payload_identity(directory/name) + return value + +def artifact_identities(directory): + directory=Path(directory) + result={} + for name in FILES: + path=directory/name + if name.endswith('.gz'): + result[name]=payload_identity(path) + else: + value=phase_value(directory)if name=='CLIFFORD-REVIEW.json'else native_value(directory)if name=='INDEPENDENT-LOCAL-REPLAY.json'else json.loads(path.read_bytes()) + result[name]=json_identity(value) + return result diff --git a/research/complex-571-hpe46/code/generated_identity_controls.py b/research/complex-571-hpe46/code/generated_identity_controls.py new file mode 100644 index 0000000000..def4135cb3 --- /dev/null +++ b/research/complex-571-hpe46/code/generated_identity_controls.py @@ -0,0 +1,227 @@ +"""Actual gzip/receipt portability and consistently rebound semantic controls. + +Only scratch copies of generated provider files are changed. Each assembly +control recomputes raw artifact links, all seven portable identities and the +owner/invoice digests. This tests identity admission, not a replacement for the +full physical replay. Prepared with OpenAI Codex assistance; Apache-2.0. +""" +import argparse +import copy +import gzip +import hashlib +import json +import math +import shutil +import tempfile +from pathlib import Path + +import os +assert os.environ.get('GAIN_PR564_SOURCE'), 'Explicit engine source required' +from assemble import assemble +from witness import PROVIDERS +from generated_identity import FILES, artifact_identities, json_identity, sha + +if not __debug__: + raise RuntimeError('Assertions required; refusing optimized verification') + + +def read(path): + raw = path.read_bytes() + return json.loads(gzip.decompress(raw) if path.suffix == '.gz' else raw) + + +def write_json(path, value): + # Nonfinite numbers are emitted only by deliberate invalid-timing controls. + path.write_text(json.dumps(value, indent=2)+'\n', encoding='utf-8', newline='\n') + + +def write_gzip(path, value): + payload = json.dumps(value, sort_keys=True, separators=(',', ':')).encode() + path.write_bytes(gzip.compress(payload, compresslevel=1, mtime=123456789)) + + +def refresh_links(directory): + """Rebind only the three actual gzip references and the phase recipe link.""" + native = read(directory/'INDEPENDENT-LOCAL-REPLAY.json') + native['canonical_word_sha256'] = sha(directory/'CANONICAL-WORD.json.gz') + native['local_programs_sha256'] = sha(directory/'LOCAL-PROGRAMS.json.gz') + write_json(directory/'INDEPENDENT-LOCAL-REPLAY.json', native) + phase = read(directory/'CLIFFORD-REVIEW.json') + phase['canonical_word_sha256'] = sha(directory/'CANONICAL-WORD.json.gz') + phase['recipe_sha256'] = sha(directory/'CLIFFORD-RECIPES.json') + write_json(directory/'CLIFFORD-REVIEW.json', phase) + + +def rebound(owner, invoice, pid, directory): + """Return complete consistent receipt links to the changed actual files.""" + identities = artifact_identities(directory) + o, i = copy.deepcopy(owner), copy.deepcopy(invoice) + p = i['providers'][pid] + for name in FILES: + raw = sha(directory/name) + p['artifacts'][name] = raw + o['source_artifacts']['providers/'+pid+'/'+name] = raw + p['semantic_artifact_sha256'] = identities + o['provider_artifact_semantic_sha256'][pid] = identities + phase = identities['CLIFFORD-REVIEW.json'] + o['provider_phase_semantic_sha256'][pid] = phase + i['provider_phase_semantic_sha256'][pid] = phase + owner_hash = json_identity(o) + i['owner_audit_sha256'] = owner_hash + return o, i, owner_hash, json_identity(i), identities + + +def run(base, audit, out, provider_root=None): + assert not out.exists() + out.parent.mkdir(parents=True, exist_ok=True) + source = provider_root or base/'providers' + owner_path, invoice_path = audit/'OWNERS-AND-PROFILE.json', audit/'PREFIX-AND-INVOICE.json' + owner, invoice = read(owner_path), read(invoice_path) + baseline = assemble(owner, invoice, sha(owner_path), sha(invoice_path)) + accepted, rejected, references, source_identities = [], [], [], {} + raw_changed = {} + with tempfile.TemporaryDirectory(prefix='generated-identity-controls-', dir=out.parent) as td: + scratch = Path(td) + for pid in sorted(PROVIDERS): + original = source/pid + ids = artifact_identities(original) + assert ids == PROVIDERS[pid]['artifact_semantic_sha256'] + source_identities[pid] = dict(raw={name:sha(original/name) for name in FILES}, semantic=ids) + # The optional provider-root can use another Python/zlib environment. + o, i, oh, ih, _ = rebound(owner, invoice, pid, original) + assert assemble(o, i, oh, ih)['kappa'] == baseline['kappa'] + + def fresh(tag): + directory = scratch/(pid+'-'+tag) + directory.mkdir() + for name in FILES: + shutil.copyfile(original/name, directory/name) + return directory + + def reject_semantics(tag, mutate, changed_file): + directory = fresh(tag) + mutate(directory) + refresh_links(directory) + o, i, oh, ih, new_ids = rebound(owner, invoice, pid, directory) + assert new_ids[changed_file] != ids[changed_file], (tag, 'mutation disappeared from identity') + try: + assemble(o, i, oh, ih) + except AssertionError: + rejected.append(dict(provider=pid, case=tag, changed_identity=changed_file, + all_raw_and_semantic_links_rebound=True)) + else: + raise AssertionError('semantic mutation accepted: '+tag) + + def json_mutation(name, change): + def mutate(directory): + value = read(directory/name) + change(value) + write_json(directory/name, value) + return mutate + + directory = fresh('recompression') + changed = [] + for name in ('CANONICAL-WORD.json.gz', 'LOCAL-PROGRAMS.json.gz'): + before = (directory/name).read_bytes() + payload = gzip.decompress(before) + after = gzip.compress(payload, compresslevel=1, mtime=123456789) + assert after != before and gzip.decompress(after) == payload + (directory/name).write_bytes(after) + changed.append(name) + refresh_links(directory) + o, i, oh, ih, new_ids = rebound(owner, invoice, pid, directory) + assert new_ids == ids + assert assemble(o, i, oh, ih)['kappa'] == baseline['kappa'] + accepted.append(dict(provider=pid, case='recompressed_same_payloads', changed_raw_artifacts=changed, + all_seven_identities_unchanged=True, all_raw_links_rebound=True)) + raw_changed[pid] = {name:[sha(original/name),sha(directory/name)] for name in changed} + + # A stale literal link must fail before any normalization can hide it. + for tag, name, receipt, field in ( + ('stale_native_word_link','CANONICAL-WORD.json.gz','INDEPENDENT-LOCAL-REPLAY.json','canonical_word_sha256'), + ('stale_native_program_link','LOCAL-PROGRAMS.json.gz','INDEPENDENT-LOCAL-REPLAY.json','local_programs_sha256'), + ('stale_phase_word_link','CANONICAL-WORD.json.gz','CLIFFORD-REVIEW.json','canonical_word_sha256'), + ('stale_phase_recipe_link','CLIFFORD-RECIPES.json','CLIFFORD-REVIEW.json','recipe_sha256')): + directory = fresh(tag) + value = read(directory/receipt) + value[field] = '0'*64 + write_json(directory/receipt, value) + try: + artifact_identities(directory) + except AssertionError: + references.append(dict(provider=pid, case=tag, rejected_before_projection=True)) + else: + raise AssertionError('stale literal reference normalized away: '+tag) + + def change_scalar(directory): + programs = read(directory/'LOCAL-PROGRAMS.json.gz') + event = next(e for e in programs['forward'] if e[0]=='scalar' and e[1][0]=='add') + event[1][3] = -event[1][3] + write_gzip(directory/'LOCAL-PROGRAMS.json.gz', programs) + reject_semantics('changed_actual_scalar', change_scalar, 'LOCAL-PROGRAMS.json.gz') + + def change_frame(directory): + word = read(directory/'CANONICAL-WORD.json.gz') + old = word['start'][518] + replacement = next(j for j,f in enumerate(word['frames']) + if j != old and len(f) == len(word['frames'][old])) + word['start'][518] = replacement + write_gzip(directory/'CANONICAL-WORD.json.gz', word) + reject_semantics('changed_actual_start_frame_same_rank', change_frame, 'CANONICAL-WORD.json.gz') + reject_semantics('native_false_restoration', json_mutation('INDEPENDENT-LOCAL-REPLAY.json', + lambda x:x['local']['forward'].__setitem__('private_work_erased',False)), + 'INDEPENDENT-LOCAL-REPLAY.json') + reject_semantics('native_wrong_column_count', json_mutation('INDEPENDENT-LOCAL-REPLAY.json', + lambda x:x['local']['backward'].__setitem__('all_exact_columns',727)), + 'INDEPENDENT-LOCAL-REPLAY.json') + reject_semantics('native_changed_profile', json_mutation('INDEPENDENT-LOCAL-REPLAY.json', + lambda x:x['paid_profiles']['forward'].__setitem__('1',x['paid_profiles']['forward']['1']+1)), + 'INDEPENDENT-LOCAL-REPLAY.json') + reject_semantics('phase_false_global_equality', json_mutation('CLIFFORD-REVIEW.json', + lambda x:x.__setitem__('all_child_equalities_include_global_phase',False)), + 'CLIFFORD-REVIEW.json') + + # This event hash is proof data, even when its value equals a gzip hash. + def change_event_hash(directory): + value = read(directory/'LOCAL-CHECKS.json') + value['forward']['sha256'] = sha(directory/'CANONICAL-WORD.json.gz') + write_json(directory/'LOCAL-CHECKS.json', value) + assert artifact_identities(directory)['LOCAL-CHECKS.json'] == json_identity(value) + reject_semantics('local_event_hash_is_not_a_container_reference', change_event_hash, 'LOCAL-CHECKS.json') + reject_semantics('unrelated_native_root_seconds_retained', json_mutation('INDEPENDENT-LOCAL-REPLAY.json', + lambda x:x.__setitem__('seconds',7)), 'INDEPENDENT-LOCAL-REPLAY.json') + reject_semantics('nested_phase_seconds_retained', json_mutation('CLIFFORD-REVIEW.json', + lambda x:x.__setitem__('additional_evidence',{'seconds':7})), 'CLIFFORD-REVIEW.json') + + for tag,value in [('negative',-1),('boolean',True),('string','1'),('nan',float('nan')), + ('infinity',float('inf'))]: + directory = fresh('invalid-timing-'+tag) + phase = read(directory/'CLIFFORD-REVIEW.json');phase['seconds'] = value + write_json(directory/'CLIFFORD-REVIEW.json', phase) + try: + artifact_identities(directory) + except AssertionError: + references.append(dict(provider=pid,case='invalid_phase_seconds_'+tag, + rejected_before_projection=True)) + else: + raise AssertionError('invalid timing silently erased: '+tag) + n=len(PROVIDERS) + assert len(accepted)==n and len(rejected)==9*n and len(references)==9*n + assert {x['provider']for x in accepted}=={x['provider']for x in rejected}=={x['provider']for x in references}==set(PROVIDERS) + report=dict(status='PASS_GENERATED_ARTIFACT_RECOMPRESSION_AND_REBOUND_MUTATIONS', + kappa=baseline['kappa'], source_owner_sha256=sha(owner_path),source_invoice_sha256=sha(invoice_path), + source_providers=source_identities,recompression_changed_raw_hashes=raw_changed, + accepted=accepted,semantic_mutations_rejected=rejected,invalid_references_or_metadata_rejected=references, + counts=dict(recompression_accepted=n,semantic_rejected=9*n,reference_or_metadata_rejected=9*n), + scope='Actual copied gzip streams and receipt JSON are changed. All seven content identities, raw source links and owner/invoice digests are recomputed consistently before assembly. Only identical decompressed payloads are accepted; scalar, same-rank frame, native proof fields, global phase, event hashes and unrelated seconds remain pinned. Literal references and invalid phase timing are rejected before normalization. Full physical replay remains a separate prerequisite.') + write_json(out,report) + print(report['status'],report['counts']) + + +if __name__=='__main__': + parser=argparse.ArgumentParser(description=__doc__) + for name in ('base','audit','out'): + parser.add_argument('--'+name,type=Path,required=True) + parser.add_argument('--provider-root',type=Path) + args=parser.parse_args() + run(args.base,args.audit,args.out,args.provider_root) diff --git a/research/complex-571-hpe46/code/hpe_adapters_local.py b/research/complex-571-hpe46/code/hpe_adapters_local.py new file mode 100644 index 0000000000..f77c09a0ca --- /dev/null +++ b/research/complex-571-hpe46/code/hpe_adapters_local.py @@ -0,0 +1,95 @@ +"""Paid residual wrappers for entering helpers (Lemma A): generation and independent decoding. Apache-2.0. +Prepared by DreamingOfClouds with Claude Opus 5.5 (Anthropic), via Claude Code. The wrapper construction follows PR #458 +(chafreaky): a helper that starts at frame E and ends at FULL has the physical residual S_E = T_FULL T_E^-1 (apply T_E^-1 first); +S_E = L_E (C_[w] x I) R_E with R_E applied first; the wrappers R_E^-1 before the whole local invocation and L_E^-1 after its +full-frame cleanup turn the residual into the coordinate factor C_[w] x I and restore the other 9 - w coordinates identically. +usage: adapters_gk.py CANONICAL-WORD.json.gz RESIDUAL-ADAPTERS.json OUT-LEMMA-A.json +Writes the recipes (generation uses clifford_exact.lower_child) and then DECODES the serialized monomials with the primitive +constructors of clifford_exact (not lower_child) and checks, for every entrance frame, that L_E^-1 S_E R_E^-1 has exactly the +tableau and zero-state vector (global phase included) of fourier(9, range(w)); mutated recipes (wrong phase, swapped sides, wrong +translation, wrong width) must be rejected.""" +import copy, gzip, json, sys +from pathlib import Path +# Package-path adaptation only; the exact wrapper mathematics is unchanged. +import os +R = Path(os.environ['MULTICOLD_SOURCE']) / 'vendor/pr558/vendor/pr552/complex-global/vendor531' # HPE: the pinned vendor531 clifford_exact +sys.path.insert(0, str(R / 'vendor/clifford')) +from clifford_exact import canonical_frame, lower_child, fourier, diag, perm, xgate, Op, identity +n = 9; FULL = tuple(1 << i for i in range(n)) +def monomial_op(rec): + """decode a serialized monomial (matrix rows, quadratic rows, Z4 linear part, translation, phase)""" + out = diag(n, tuple(rec['quadratic_rows']), tuple(rec['linear_Z4'])).then(perm(n, tuple(rec['matrix_rows']))).then(xgate(n, rec['offset'])) + return out.then(Op(n, identity(n), [('phase', rec['phase'])])) +def S_of(U, END=FULL): + # HPE: a helper that starts at E=U and ends at END has residual T_END T_E^-1 (END = FULL is the inherited case) + return canonical_frame(n, tuple(U)).adjoint().then(canonical_frame(n, tuple(END))) +def wrapped_ok(U, rec, END=FULL): + """exactly: L^-1 S R^-1 = C_[w] x I (apply order: R^-1, S, L^-1), w = dim END - dim E""" + w = len(END) - len(U); S = S_of(U, END); Rm = monomial_op(rec['right']); Lm = monomial_op(rec['left']) + net = Rm.adjoint().then(S).then(Lm.adjoint()); target = fourier(n, range(w)) + return rec['rank'] == w and net.tab == target.tab and net.zero_state() == target.zero_state() +def _contains(a, b): + a = list(a) + for x in b: + for y in sorted(a, reverse=True): + if x >> (y.bit_length() - 1) & 1: x ^= y + if x: return False + return True +def main(): + c = json.load(gzip.open(sys.argv[1])); frames = c['frames']; v = c['v'] + starts = sorted({c['start'][r] for r in range(2 * v, len(c['start'])) if c['start'][r] != 0 and c['final'][r] == 1}) + # HPE: (entrance, terminal) pairs of helpers ending at a proper subspace; key 'E:U'. Inherited words have none. + ends = sorted({(c['start'][r], c['final'][r]) for r in range(2 * v, len(c['start'])) if c['final'][r] != 1}) + assert all(e != 0 and len(frames[u]) < n and _contains(frames[u], frames[e]) for e, u in ends) + recipes = {} + for f in starts: + U = frames[f]; rec, compiled = lower_child(S_of(U)) + recipes[str(f)] = dict(frame=f, vectors=list(U), entrance_rank=len(U), rank=rec['rank'], left=rec['left'], right=rec['right']) + for e, u in ends: + E, U = frames[e], frames[u]; rec, compiled = lower_child(S_of(E, U)) + recipes['%d:%d' % (e, u)] = dict(frame=e, terminal=u, vectors=list(E), terminal_vectors=list(U), entrance_rank=len(E), + terminal_rank=len(U), rank=rec['rank'], left=rec['left'], right=rec['right']) + Path(sys.argv[2]).write_text(json.dumps(dict(status='RESIDUAL_ADAPTER_RECIPES', recipes=recipes), sort_keys=True, separators=(',', ':')) + '\n') + # ---- independent decode of the serialized file + data = json.loads(Path(sys.argv[2]).read_text())['recipes'] + dot = lambda a, b: bin(a & b).count('1') & 1 + detail = [] + for f in starts: + rec = data[str(f)]; U = frames[f] + assert wrapped_ok(U, rec), ('wrapper product is not C_[w] x I', f) + detail.append(dict(frame=f, entrance_rank=len(U), residual_width=n - len(U), vectors=list(U), all_even_weight=all(bin(x).count('1') % 2 == 0 for x in U), + totally_isotropic=all(dot(a, b) == 0 for a in U for b in U))) + hdetail = [] + for e, u in ends: # HPE: independent decode, residual width = dim U - dim E + rec = data['%d:%d' % (e, u)]; E, U = frames[e], frames[u] + assert wrapped_ok(E, rec, U), ('HPE wrapper product is not C_[w] x I', e, u) + hdetail.append(dict(frame=e, terminal=u, entrance_rank=len(E), terminal_rank=len(U), residual_width=len(U) - len(E))) + controls = [] + def reject(name, fn): + f = starts[0]; rec = copy.deepcopy(data[str(f)]); fn(rec) + if wrapped_ok(frames[f], rec): raise AssertionError('mutated wrapper accepted: ' + name) + controls.append(name) + reject('wrong global phase', lambda r: r['right'].__setitem__('phase', (r['right']['phase'] + 1) % 4)) + reject('wrong translation', lambda r: r['left'].__setitem__('offset', r['left']['offset'] ^ 1)) + reject('wrong quadratic form', lambda r: r['right'].__setitem__('quadratic_rows', [x ^ 2 if i == 0 else x for i, x in enumerate(r['right']['quadratic_rows'])]) if False else r['right']['linear_Z4'].__setitem__(0, (r['right']['linear_Z4'][0] + 2) % 4)) + reject('sides swapped', lambda r: (r.__setitem__('left', r['right']), r.__setitem__('right', r['left']))) + reject('wrong width', lambda r: r.__setitem__('rank', r['rank'] + 1)) + if ends: # HPE controls on the first (E, U) pair + e, u = ends[0]; rec0 = data['%d:%d' % (e, u)] + def hreject(name, ok): + if ok: raise AssertionError('HPE mutation accepted: ' + name) + controls.append(name) + hreject('hpe: U-wrapper decoded against a FULL ending', wrapped_ok(frames[e], rec0)) + hreject('hpe: width misreported as 9 - dim E', wrapped_ok(frames[e], dict(rec0, rank=n - len(frames[e])), frames[u])) + other = next(f for f in range(len(frames)) if f != u and len(frames[f]) == len(frames[u]) and _contains(frames[f], frames[e])) + hreject('hpe: wrong terminal hyperplane', wrapped_ok(frames[e], rec0, frames[other])) + fe = next(((e2, u2) for e2, u2 in ends if str(e2) in data), None) + if fe: # an entrance shared with FULL-ended helpers: R_{E,FULL} must not serve as R_{E,U} + r2 = data['%d:%d' % fe] + hreject('hpe: pre wrapper resolved to the FULL recipe R_{E,FULL}', wrapped_ok(frames[fe[0]], dict(r2, right=data[str(fe[0])]['right']), frames[fe[1]])) + hreject('hpe: wrong global phase', wrapped_ok(frames[e], dict(rec0, left=dict(rec0['left'], phase=(rec0['left']['phase'] + 1) % 4)), frames[u])) + res = dict(status='PASS_RESIDUAL_WRAPPERS_ARE_EXACT', frames=len(detail), **({'hyperplane_end_pairs': hdetail} if ends else {}), wrappers_reject=controls, all_even_weight=all(d['all_even_weight'] for d in detail), + all_totally_isotropic=all(d['totally_isotropic'] for d in detail), detail=detail) + Path(sys.argv[3]).write_text(json.dumps(res, indent=1) + '\n') + print('Lemma A (exact): L^-1 S_E R^-1 = C_[w] x I for', len(detail), 'entrance frames, global phase included;', len(controls), 'wrapper mutations rejected; all-even-weight:', res['all_even_weight']) +if __name__ == '__main__': main() diff --git a/research/complex-571-hpe46/code/hpe_audit_and_transport.py b/research/complex-571-hpe46/code/hpe_audit_and_transport.py new file mode 100644 index 0000000000..845680279b --- /dev/null +++ b/research/complex-571-hpe46/code/hpe_audit_and_transport.py @@ -0,0 +1,249 @@ +"""Rebuild arbitrary-dirt compensation and transport a changed local word. + +Prepared for icekylinx with GPT-6 Astra assistance. Apache-2.0. +Adapted from PR425/433 (icekylinx), PR484's audit_gk.py +(DreamingOfClouds), and Round19's 112-port transport. This auditor does not +import a constructor, a nominated compensation table, or a global price. +Only the changed scalar word and its actual frame chains are checked here. +""" +import argparse +import copy +import gzip +import hashlib +import json +import time +from collections import Counter +from fractions import Fraction as Q +from pathlib import Path + + +def read(path): + data = path.read_bytes() + return json.loads(gzip.decompress(data) if path.suffix == '.gz' else data) + + +def content_hash(path): + data = path.read_bytes() + return hashlib.sha256(gzip.decompress(data) if path.suffix == '.gz' else data).hexdigest() + + +def basis(vs): + pivots = {} + for x in vs: + for k in sorted(pivots, reverse=True): + if x >> k & 1: + x ^= pivots[k] + if x: + k = x.bit_length() - 1 + for j in pivots: + if pivots[j] >> k & 1: + pivots[j] ^= x + pivots[k] = x + return tuple(pivots[k] for k in sorted(pivots, reverse=True)) + + +def apply(e, rows): + if e[0] == 'scale': + _, target, a, b, *_ = e + q = Q(a, b) + assert q + rows[target] = {j: q*x for j, x in rows[target].items()} + else: + _, target, source, a, b, *_ = e + assert target != source + q = Q(a, b) + for j, x in list(rows[source].items()): + value = rows[target].get(j, Q(0)) + q*x + if value: + rows[target][j] = value + else: + rows[target].pop(j, None) + + +def inverse(e): + e = copy.deepcopy(e) + if e[0] == 'add': + e[3] *= -1 + else: + e[2], e[3] = e[3], e[2] + return e + + +def dual(e): + e = inverse(e) + if e[0] == 'add': + e[1], e[2] = e[2], e[1] + return e + + +def run(raw_path, routing_path, out): + start_time = time.monotonic() + word, routing = read(raw_path), read(routing_path) + v, h, helpers = word['report']['v'], word['report']['h'], word['report']['R'] + assert h == 9 and v == 112 and routing['v'] == v + n = 2*v + helpers + ident = lambda: [{r: Q(1)} for r in range(n)] + main = word['A'] + word['cut'] + word['B'] + assert all(not v <= e[2] < 2*v for e in word['A'] + word['B'] + if e[0] == 'add' and not v <= e[1] < 2*v) + matrix = ident() + for e in main: + apply(e, matrix) + dirty = [{} for _ in range(n)] + for r in range(v, 2*v): + dirty[r] = {j: x for j, x in matrix[r].items() if j >= 2*v} + for e in word['precondition']: + apply(e, dirty) + compensation = [['add', r, j, -q.numerator, q.denominator, []] + for r in range(v, 2*v) for j, q in sorted(dirty[r].items())] + entering = set(map(int, word.get('start_extra', {}))) + assert all(e[2] not in entering for e in compensation) + cleanup = [inverse(e) for e in reversed(word['A'] + word['B']) + if not v <= e[1] < 2*v] + assert [e[:-1] for e in cleanup] == [e[:-1] for e in word['cleanup']] + # HPE: hyperplane-ended helpers. 'early_cleanup' = [[cleanup index, frame vectors], ...] are cleanup gates executed + # right after B (before the final climbs) at the given frame; 'helper_final' = {helper: frame vectors} replaces FULL as + # that helper's terminal frame. The scalar program is the reordered one and is replayed exactly below, so a move that + # does not commute with the skipped cleanup prefix is rejected by the arbitrary-dirt endpoint assertion. + early = [(int(i), f) for i, f in word.get('early_cleanup', [])] + helper_final = {int(r): f for r, f in word.get('helper_final', {}).items()} + early_idx = [i for i, _ in early] + assert len(set(early_idx)) == len(early_idx) and all(0 <= i < len(cleanup) for i in early_idx) + assert all(2*v <= r < n for r in helper_final) + assert all(r in entering for r in helper_final), 'hyperplane end only for entering helpers (wrapper exists)' + tail = [word['cleanup'][i][:-1] + [f] for i, f in early] + rest = [e for i, e in enumerate(word['cleanup']) if i not in set(early_idx)] + program = word['precondition'] + compensation + main + tail + rest + for backward in (False, True): + actual = ident() + for e in program: + apply(dual(e) if backward else e, actual) + expected = ident() + for t in range(v): + expected[t if backward else v+t][v+t if backward else t] = Q(-1 if backward else 1) + assert actual == expected, ('arbitrary-dirt endpoint', backward) + # The native scalar compiler allows dyadic additions and signed binary scales. + for e in program: + q = Q(e[3], e[4]) if e[0] == 'add' else Q(e[2], e[3]) + assert q.denominator & (q.denominator-1) == 0 + if e[0] == 'scale': + a = abs(q.numerator) + assert a and a & (a-1) == 0 + + tau = lambda x: x ^ (43 if (x & 43).bit_count() % 2 else 0) + ports = routing['ports'] + assert len(set(ports)) == v and set(map(tau, word['ports'])) == set(ports) + mapping = {i: ports.index(tau(p)) for i, p in enumerate(word['ports'])} + mapping.update({v+i: v+mapping[i] for i in range(v)}) + mapping.update({r: r for r in range(2*v, n)}) + full = tuple(1 << i for i in range(h-1, -1, -1)) + frames, frame_ids = [(), full], {(): 0, full: 1} + + def fid(vectors): + frame = basis(vectors) + if frame not in frame_ids: + frame_ids[frame] = len(frames) + frames.append(frame) + return frame_ids[frame] + + def transform(e): + e = copy.deepcopy(e) + e[1] = mapping[e[1]] + if e[0] == 'add': + e[2] = mapping[e[2]] + if e[-1] is not None: + e[-1] = fid([tau(x) for x in e[-1]]) + return e + + canonical = {key: [transform(e) for e in word[key]] + for key in ('A', 'B', 'cut', 'cleanup', 'precondition')} + canonical['compensation'] = [transform(e) for e in compensation] + if tail: + canonical['tail'] = [transform(e) for e in tail] # HPE (absent for inherited words: identical output) + canonical['cleanup'] = [transform(e) for e in rest] # HPE (full cleanup minus the early gates) + canonical['start'] = [fid([p]) for p in ports] + [0]*(v+helpers) + for r, frame in word.get('start_extra', {}).items(): + assert 2*v <= int(r) < n + canonical['start'][int(r)] = fid([tau(x) for x in frame]) + canonical['final'] = ([1]*v + + [fid(x for x in range(1, 1 << h) if (x & p).bit_count() % 2 == 0) for p in ports] + + [1]*helpers) + for r, frame in helper_final.items(): # HPE + canonical['final'][r] = fid([tau(x) for x in frame]) + canonical.update(h=h, v=v, R=helpers, ports=ports, frames=frames, + centers=[mapping[r] for r in word['centers']], + center_frames=[fid(tau(x) for x in frame) for frame in word['center_frames']]) + levels = {mapping[v+int(t)]-v: fid(tau(x) for x in frame) + for t, frame in word.get('target_levels', {}).items()} + canonical['target_levels'] = {str(t): f for t, f in levels.items()} + current, paid, edges = canonical['start'].copy(), Counter(), set() + + def climb(r, f): + old = current[r] + assert basis(frames[old] + frames[f]) == frames[f], ('nonmonotone', r, old, f) + if old != f: + degree = len(frames[f]) - len(frames[old]) + assert degree > 0 + paid[degree] += 1 + edges.add((old, f)) + current[r] = f + + for part in ('A', 'B'): + if part == 'B': + assert all(current[r] == f for r, f in zip(canonical['centers'], canonical['center_frames'])) + assert all(current[v+t] == levels.get(t, 0) for t in range(v)) + for r, frame in zip(canonical['centers'], canonical['center_frames']): + served = {levels.get(e[1]-v, 0) for e in canonical['cut'] if e[2] == r} + old = frame + for f in sorted(served, key=lambda f: -len(frames[f])): + assert basis(frames[old] + frames[f]) == frames[old] + if old != f: + paid[len(frames[old])-len(frames[f])] += 1 + edges.add((old, f)) + edges.add((f, old)) + old = f + for e in canonical[part]: + for r in [e[1]] + ([e[2]] if e[0] == 'add' else []): + climb(r, e[-1]) + for e in canonical.get('tail', []): # HPE: early cleanup gates at their common frame + for r in [e[1]] + ([e[2]] if e[0] == 'add' else []): + climb(r, e[-1]) + for r, f in enumerate(canonical['final']): + climb(r, f) + # HPE: the remaining cleanup runs at FULL, so it may touch only registers whose terminal frame is FULL; a + # hyperplane-ended helper is touched by nothing after its tail gates. + for e in canonical['cleanup']: + assert all(canonical['final'][r] == 1 for r in [e[1]] + ([e[2]] if e[0] == 'add' else [])), ('cleanup on non-FULL end', e) + assert all(len(frames[canonical['final'][r]]) < h for r in helper_final) + assert dict(paid) == {int(r): count for r, count in word['report']['local_profile'].items()} + canonical['local_profile'] = dict(sorted(paid.items())) + canonical['edges'] = sorted(edges) + out.mkdir(parents=True, exist_ok=False) + payload = json.dumps(canonical, sort_keys=True, separators=(',', ':')).encode() + (out/'CANONICAL-WORD.json.gz').write_bytes(gzip.compress(payload, mtime=0)) + (out/'FULL-WORD.json.gz').write_bytes(gzip.compress(json.dumps(word, sort_keys=True, separators=(',', ':')).encode(), mtime=0)) + receipt = dict(status='PASS_CHANGED_WORD_ALL_COLUMNS_AND_NATIVE_FRAMES', + input_content_sha256=content_hash(raw_path), routing_content_sha256=content_hash(routing_path), + canonical_content_sha256=hashlib.sha256(payload).hexdigest(), + live_columns_each_orientation=n, helpers=helpers, + compensation_additions=len(compensation), scalar_operations=len(program), + center_rank_sum=sum(map(len, word['center_frames'])), + local_profile=dict(sorted(paid.items())), local_rank_mass=sum(r*z for r, z in paid.items()), + widths=[len(frames[canonical['final'][r]])-len(frames[canonical['start'][r]]) for r in range(2*v, n)], + frames=len(frames), directed_edges=len(edges), + tau=43, target_port_order_matches_baseline=True, + seconds=time.monotonic()-start_time, + scope='Fresh exact forward and inverse-transpose scalar replay on every arbitrary input; all native frame chains and dyadic primitives. Phase lowering, wrappers, global owners and global assembly are separate.') + if tail or helper_final: + receipt.update(hyperplane_ended_helpers=sorted(helper_final), early_cleanup_gates=len(tail)) + (out/'SCALAR-FRAME-AUDIT.json').write_text(json.dumps(receipt, indent=2)+'\n') + print(json.dumps({k: value for k, value in receipt.items() if k != 'widths'}, indent=2), flush=True) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--raw', type=Path, required=True) + parser.add_argument('--routing', type=Path, required=True) + parser.add_argument('--out', type=Path, required=True) + args = parser.parse_args() + run(args.raw, args.routing, args.out) diff --git a/research/complex-571-hpe46/code/hpe_audit_local.py b/research/complex-571-hpe46/code/hpe_audit_local.py new file mode 100644 index 0000000000..29189b1420 --- /dev/null +++ b/research/complex-571-hpe46/code/hpe_audit_local.py @@ -0,0 +1,159 @@ +# Local-only extraction of the attributed PR514 / PR433 independent replay. +# Prepared for icekylinx with OpenAI Codex assistance. Apache-2.0. +# The complete local checker and its negative controls are retained verbatim. +# Global hosting is verified separately for the changed 112-port geometry. +import copy,gzip,hashlib,json,sys +from collections import Counter +from fractions import Fraction as Q +from pathlib import Path +OUT=Path(sys.argv[1]) +c=json.load(gzip.open(OUT/'CANONICAL-WORD.json.gz')) +ir={'local_programs':json.load(gzip.open(OUT/'LOCAL-PROGRAMS.json.gz'))} +v,R,h=c['v'],c['R'],c['h'];n=2*v+R;frames=c['frames'] +levels={int(t):f for t,f in c.get('target_levels',{}).items()} +entering=[r for r,f in enumerate(c['start']) if r>=2*v and f!=0] +plain={r for r in range(n) if r not in set(entering)} + +def contains(a,b): + for x in a: + for y in b: + if x>>(y.bit_length()-1)&1:x^=y + if x:return False + return True +hpe={r for r in range(2*v,n) if c['final'][r]!=1} # HPE: helpers whose terminal frame is a proper subspace U of FULL +assert hpe<=set(entering) and all(len(frames[c['final'][r]])0 + hist[rank]+=1;cur[r]=b + elif tag=='center': + _,k,a,b,rank=event + assert phases[-1]=='centers' and private=={('C',k):a} + cf=c['center_frames'][k];cr=len(frames[cf]) + # GK: stepwise descent cf -> served levels -> lowest (forward), reversed ascent (backward); each step is a nested child + assert contains(frames[a],frames[b]) if back else contains(frames[b],frames[a]) + assert rank==abs(len(frames[a])-len(frames[b]))>0 + chain.setdefault(k,[]).append((a,b)) + private['C',k]=b;hist[rank]+=1;centers.append(k) + elif tag=='scalar': + _,e,f=event;op=e[0];target=tuple(e[1]);source=tuple(e[2]) if op in ('copy','add') else None + if target[0]=='C' and op=='clear': + assert private.get(target,f)==f + private.pop(target,None) + else: + for r in (target,source): + if r is None:continue + if r[0]=='L':assert cur[r[1]]==f,('common frame',r,cur[r[1]],f) + else: + if r==target and r not in private:private[r]=f + assert private[r]==f + if op=='clear':rows[target]={};norm[target]=Q(0) + elif op=='copy':rows[target]=dict(rows[source]);norm[target]=norm[source] + elif op=='scale': + q=Q(e[2],e[3]);a,b=abs(q.numerator),q.denominator + assert a&(a-1)==0 and b&(b-1)==0 + rows[target]={j:q*x for j,x in rows[target].items()};norm[target]*=abs(q) + else: + q=Q(e[3],e[4]);a,b=abs(q.numerator),q.denominator + assert source!=target and b&(b-1)==0 + # Independent symbolic replay of the cleared coefficient work. + w=0 + for bit in bin(a)[2:]:w=2*w+int(bit) + assert Q(w,b)*(1 if q>0 else -1)==q + prefix=max(prefix,Q(a)*norm[source]) + norm[target]=norm.get(target,Q(0))+abs(q)*norm[source] + row=rows.setdefault(target,{}) + for j,x in list(rows[source].items()): + z=row.get(j,Q(0))+q*x + if z:row[j]=z + else:row.pop(j,None) + prefix=max(prefix,norm[target]) + else:raise AssertionError(tag) + assert phases==allowed and set(centers)==set(range(len(c['centers']))) and not private + assert sorted(r for k,r,_ in wrappers if k=='pre')==entering and sorted(r for k,r,_ in wrappers if k=='post')==entering # GK + for k,st in chain.items(): # GK: the steps of each centre chain link up and end at the centre frame + cf=c['center_frames'][k] + if back:assert st[-1][1]==cf and all(st[i][1]==st[i+1][0] for i in range(len(st)-1)) + else:assert st[0][0]==cf and all(st[i][1]==st[i+1][0] for i in range(len(st)-1)) + assert all(not row for reg,row in rows.items() if reg[0]=='C') + for r in range(n): + expected={r:Q(1)} + if back and r i0])) +reject('early gate frame below its registers\' frames', lambda w: w['early_cleanup'][0].__setitem__(1, U0[:-1])) +reject('hyperplane end on a non-entering helper', lambda w: (w['start_extra'].pop(h0))) +reject('profile not updated (paid climbs misreported)', lambda w: w['report']['local_profile'].__setitem__('1', w['report']['local_profile']['1']-3)) +reject('duplicate early gate', lambda w: w['early_cleanup'].append(list(w['early_cleanup'][0]))) +outdir.mkdir(parents=True, exist_ok=True) +(outdir/'HPE-ATC-CONTROLS.json').write_text(json.dumps(dict(status='PASS_HPE_RAW_WORD_CONTROLS', word=str(src), rejected=results), indent=1) + '\n') +print('PASS', len(results), 'HPE raw-word mutations rejected') diff --git a/research/complex-571-hpe46/code/hpe_emit_local.py b/research/complex-571-hpe46/code/hpe_emit_local.py new file mode 100644 index 0000000000..aad715c157 --- /dev/null +++ b/research/complex-571-hpe46/code/hpe_emit_local.py @@ -0,0 +1,161 @@ +# GK: modified copy of PR #433's complex_emit.py (icekylinx with Codex assistance; PR #425) by DreamingOfClouds with Claude Opus 5.5 +# (Anthropic), via Claude Code. Every change is marked "GK:". On a word without start_extra / target_levels the behaviour +# and every written file equal PR #433's (regression anchor in verify.py). +import sys as _sys, os as _os; _sys.path.insert(0, _os.path.dirname(_os.path.abspath(__file__))) +# Adapted from PR425 by icekylinx with Codex assistance. +"""Emit both local programs, integrate the fixed nine-stage geometry, and bill. + +The expanded scalar interface is justified in PROOF.txt. This script does not +claim a Lean proof or discharge the inherited all-size/analytic interfaces. +""" +import copy,gzip,hashlib,importlib.util,json,math +from collections import Counter +from fractions import Fraction as Q +from pathlib import Path + +OUT=Path(_sys.argv[1]);cp=OUT/'CANONICAL-WORD.json.gz' +c=json.load(gzip.open(cp)) +frames=c['frames'];v,R,h=c['v'],c['R'],c['h'];n=2*v+R +def digest(x):return hashlib.sha256(json.dumps(x,sort_keys=True,separators=(',',':')).encode()).hexdigest() +def basis(vs): + b={} + for x in vs: + for p in sorted(b,reverse=True): + if x>>p&1:x^=b[p] + if x: + p=x.bit_length()-1 + for q in b: + if b[q]>>p&1:b[q]^=x + b[p]=x + return tuple(b[p] for p in sorted(b,reverse=True)) +def dual(e): + e=list(e) + if e[0]=='add':e[1],e[2]=e[2],e[1];e[3]*=-1 + else:e[2],e[3]=e[3],e[2] + return e +def scalar(e,back): + e=dual(e) if back else list(e) + if e[0]=='add':return ['add',['L',e[1]],['L',e[2]],e[3],e[4]] + return ['scale',['L',e[1]],e[2],e[3]] +def primitive_bound(e): + if e[0] in ('clear','copy'):return 1 + q=Q(e[3],e[4]) if e[0]=='add' else Q(e[2],e[3]) + a,b=abs(q.numerator),q.denominator + assert b&(b-1)==0 + if e[0]=='scale': + assert a&(a-1)==0 + return abs(a.bit_length()-b.bit_length())+int(q<0) + # Exact binary Horner multiplication on a cleared private stream, repeated + # halving, signed accumulation into the target, then clear the private stream. + return 3+(a.bit_length()-1)+a.bit_count()+(b.bit_length()-1) + +def emit(back): + out=[];cur=c['start'].copy() + def event(e):out.append(e) + def scal(e,f):event(['scalar',e,f]) + event(['phase','zero_frame_precondition']) + for e in c['precondition']+c['compensation']: + regs=[e[1]]+([e[2]] if e[0]=='add' else []) + assert all(c['start'][r]==0 for r in regs) + scal(scalar(e,back),0) + event(['phase','entry_adapters']) + # GK: a helper that starts at a nonzero entrance frame has NO entry adapter; its paid wrapper R_E^-1 (Lemma A) precedes every gate + # that touches it and L_E^-1 follows the full-frame cleanup. Words without entrances emit PR #433's events. + entering=[r for r,f in enumerate(c['start']) if r>=2*v and f!=0] + hpe={r for r in range(2*v,n) if c['final'][r]!=1} # HPE: hyperplane-ended helpers (terminal frame != FULL) + assert hpe<=set(entering) + for r,f in enumerate(c['start']): + if r in entering:event(['residual_adapter','pre',r,f]+([c['final'][r]] if c['final'][r]!=1 else [])) # HPE: R_{E,U}^-1 names U + else:event(['adapter','old_to_new',r,f]) + def climb(r,f,part): + old=cur[r] + if old==f:return + assert basis(frames[old]+frames[f])==tuple(frames[f]) + rank=len(frames[f])-len(frames[old]);assert rank>0 + event(['climb',part,r,old,f,rank]);cur[r]=f + # HPE: 'cleanup_tail' = early cleanup gates at their own frames; emitted only when the word has them, so a word + # without hyperplane-ended helpers yields exactly the inherited event stream. + for part in ('A','centers','B')+(('cleanup_tail',) if c.get('tail') else ())+('final',): + event(['phase',part]) + if part in ('A','B','cleanup_tail'): + for e in (c['tail'] if part=='cleanup_tail' else c[part]): + regs=[e[1]]+([e[2]] if e[0]=='add' else []) + for r in regs:climb(r,e[-1],part) + scal(scalar(e,back),e[-1]) + elif part=='centers': + # GK: targets sit at their nonzero-frame-compensation level (0 at the defaults); a centre copy descends + # cf -> served levels (descending chain) -> lowest served level and scatters into each target at its level + lv=lambda r:c.get('target_levels',{}).get(str(r-v),0) + assert all(cur[r]==lv(r) for r in range(v,2*v)) + for k,r in enumerate(c['centers']): + cf=c['center_frames'][k];assert cur[r]==cf + terms=[e for e in c['cut'] if e[2]==r] + path=[cf]+sorted({lv(e[1]) for e in terms}-{cf},key=lambda x:-len(frames[x])) + C=['C',k] + if not back: + scal(['clear',C],cf);scal(['copy',C,['L',r]],cf) + for a in range(len(path)): + if a>0:event(['center',k,path[a-1],path[a],len(frames[path[a-1]])-len(frames[path[a]])]) + for e in terms: + if lv(e[1])==path[a]:scal(['add',['L',e[1]],C,e[3],e[4]],path[a]) + scal(['clear',C],path[-1]) + else: + scal(['clear',C],path[-1]) + for a in range(len(path)-1,-1,-1): + for e in terms: + if lv(e[1])==path[a]:scal(['add',C,['L',e[1]],e[3],e[4]],path[a]) + if a>0:event(['center',k,path[a],path[a-1],len(frames[path[a-1]])-len(frames[path[a]])]) + scal(['add',['L',r],C,-1,1],cf);scal(['clear',C],cf) + else: + for r,f in enumerate(c['final']):climb(r,f,part) + event(['phase','exit_adapters']) + for r,f in enumerate(c['final']): + if r not in hpe:event(['adapter','new_to_old',r,f]) # HPE: no old-convention exit for a helper that ends at U; its post wrapper is L_{E,U}^-1 + event(['phase','full_frame_cleanup']) + for e in c['cleanup']: + regs=[e[1]]+([e[2]] if e[0]=='add' else []) + assert all(c['final'][r]==1 for r in regs) + scal(scalar(e,back),1) + for r in entering:event(['residual_adapter','post',r,c['start'][r]]+([c['final'][r]] if r in hpe else [])) # HPE: 5th field = terminal frame U # GK: L_E^-1 after the full-frame cleanup + event(['phase','done']) + return out + +def check_local(events,back): + # Literal scalar replay of the emitted stream, including center lifetimes. + state={('L',r):{r:Q(1)} for r in range(n)};live=[];paid=Counter();prims=0;macros=0 + for e in events: + if e[0]=='climb':assert not live;paid[e[5]]+=1 + elif e[0]=='center':assert live==[e[1]];paid[e[4]]+=1 + elif e[0]=='scalar': + op=e[1];tag=op[0];t=tuple(op[1]);macros+=1;prims+=2*primitive_bound(op) + if tag=='clear': + state[t]={} + if t[0]=='C' and t[1] in live:live.remove(t[1]) + elif tag=='copy':state[t]=dict(state.get(tuple(op[2]),{}));live.append(t[1]) + elif tag=='scale':state[t]={j:Q(op[2],op[3])*x for j,x in state[t].items()} + else: + s=tuple(op[2]);q=Q(op[3],op[4]);row=state.setdefault(t,{}) + if t[0]=='C' and t[1] not in live:live.append(t[1]) + for j,x in list(state.get(s,{}).items()): + z=row.get(j,Q(0))+q*x + if z:row[j]=z + else:row.pop(j,None) + assert not live and all(not row for r,row in state.items() if r[0]=='C') + for r in range(n): + expected={r:Q(1)} + if back and r PR552 -> +PR531 invoice_final.py, whose notices and sources are preserved in the package. +Every call selects a hash-bound provider. Shared compiler reserves use maxima; +primitive work, coefficient work, local children and wrappers are also summed +from actual selected provider/orientation records. +""" +import argparse, gzip, hashlib, json +import sys as _s,pathlib as _p;_s.path.insert(0,str(_p.Path(__file__).resolve().parent)) +from witness import * +from generated_identity import artifact_identities +from collections import Counter +from fractions import Fraction as Q +from pathlib import Path +assert __debug__, 'Assertions required' + +def read(path): + data=path.read_bytes() + return json.loads(gzip.decompress(data) if path.suffix=='.gz' else data) +def filehash(path): return hashlib.sha256(path.read_bytes()).hexdigest() +def contenthash(path): + data=path.read_bytes() + return hashlib.sha256(gzip.decompress(data) if path.suffix=='.gz' else data).hexdigest() +def programhash(events): + return hashlib.sha256(json.dumps(events,separators=(',',':')).encode()).hexdigest() + +def recount_provider(local_dir, registry): + cp=local_dir/'CANONICAL-WORD.json.gz'; pp=local_dir/'LOCAL-PROGRAMS.json.gz' + rp=local_dir/'INDEPENDENT-LOCAL-REPLAY.json' + w,programs,replay=read(cp),read(pp),read(rp) + checks=read(local_dir/'LOCAL-CHECKS.json') + assert set(programs)=={'forward','backward'} + assert replay['status']=='PASS_INDEPENDENT_LOCAL_SCALAR_FRAME_AND_WRAPPER_REPLAY' + assert replay['canonical_word_sha256']==filehash(cp)==registry['canonical_word_sha256'] + assert replay['local_programs_sha256']==filehash(pp)==registry['local_programs_sha256'] + assert programs==registry['local_programs'] + assert checks==registry['local_program_checks'] + assert filehash(local_dir/'CLIFFORD-RECIPES.json')==registry['exact_local_clifford_recipe_sha256'] + assert filehash(local_dir/'RESIDUAL-ADAPTERS.json')==registry['residual_adapter_sha256'] + v,helpers,h,m=w['v'],w['R'],w['h'],73 + assert (v,helpers,h)==(112,504,9) + assert registry['v']==v and registry['R']==helpers and registry['h']==h + assert registry['ports']==w['ports'] and registry['centers']==w['centers'] + assert replay['v']==v and replay['helpers']==helpers + n=2*v+helpers + widths = [len(w['frames'][w['final'][r]])-len(w['frames'][w['start'][r]]) for r in range(2*v, 2*v+helpers)] # HPE: |final|-|start| + terminal_codim = sum(h-len(w['frames'][w['final'][r]]) for r in range(2*v, 2*v+helpers)) # HPE: 0 for FULL-ended helpers + ends = {r: f for r, f in enumerate(w['final']) if r >= 2*v and f != 1} + assert len(widths) == helpers + entrances = {r: f for r, f in enumerate(w['start']) if r >= 2*v and f != 0} + entering = len(entrances) + assert entering == replay['entering_helpers'] + local = {} + for orientation, events in programs.items(): + # Endpoint equality and native frames were already independently + # replayed on all n columns in the hash-bound receipt above. + env = {('L', r): Q(1) for r in range(n)} + peak = Q(1) + real = macros = workops = 0 + paid = Counter() + wrappers = {'pre': set(), 'post': set()} + for event in events: + tag = event[0] + if tag == 'climb': + paid[event[5]] += 1 + elif tag == 'center': + paid[event[4]] += 1 + elif tag == 'residual_adapter': + _, kind, register, frame, *end = event + assert kind in wrappers and entrances.get(register) == frame + assert end == ([ends[register]] if register in ends else []) # HPE: R_{E,U}^-1 and L_{E,U}^-1 name U + assert register not in wrappers[kind] + wrappers[kind].add(register) + elif tag == 'scalar': + macros += 1 + scalar = event[1] + op, target = scalar[0], tuple(scalar[1]) + if op == 'clear': + env[target] = Q(0) + count = 1 + elif op == 'copy': + env[target] = env[tuple(scalar[2])] + count = 1 + elif op == 'scale': + q = Q(scalar[2], scalar[3]) + numerator, denominator = abs(q.numerator), q.denominator + assert numerator and numerator & (numerator-1) == 0 + assert denominator & (denominator-1) == 0 + env[target] *= abs(q) + count = abs(numerator.bit_length()-denominator.bit_length()) + int(q < 0) + elif op == 'add': + source = tuple(scalar[2]) + q = Q(scalar[3], scalar[4]) + numerator, denominator = abs(q.numerator), q.denominator + assert source != target and numerator > 0 + assert denominator & (denominator-1) == 0 + acc, count = 0, 1 # clear coefficient work + for i, bit in enumerate(bin(numerator)[2:]): + if i: + acc *= 2 + count += 1 + peak = max(peak, acc*env[source]) + if bit == '1': + acc += 1 + count += 1 + peak = max(peak, acc*env[source]) + value = Q(acc) + for _ in range(denominator.bit_length()-1): + value /= 2 + count += 1 + peak = max(peak, value*env[source]) + assert value == abs(q) + count += 2 # signed accumulation and work clear + env[target] = env.get(target, Q(0)) + abs(q)*env[source] + workops += count + else: + raise AssertionError(op) + real += 2*count + peak = max(peak, env[target]) + else: + assert tag in ('adapter', 'phase') + assert wrappers['pre'] == wrappers['post'] == set(entrances) + assert all(value == 0 for register, value in env.items() if register[0] == 'C') + prior = replay['local'][orientation] + assert prior['all_exact_columns'] == n and prior['private_work_erased'] + assert peak == Q(prior['prefix_l1_upper']) and peak < 2**prior['charged_payload_bits'] + bits = peak.numerator.bit_length()-peak.denominator.bit_length()+1 + assert bits == prior['prefix_bits_upper'] + assert real == checks[orientation]['real_component_primitive_bound'] + assert macros == checks[orientation]['scalar_macros'] + assert dict(paid) == {int(r): count for r, count in checks[orientation]['paid_profile'].items()} + assert dict(paid) == {int(r): count for r, count in replay['paid_profiles'][orientation].items()} + local[orientation] = dict( + events=len(events), macros=macros, real_component_primitives=real, + prefix_l1=str(peak), prefix_bits=bits, + coefficient_work_primitive_count=workops, all_exact_columns=n, + dirty_helper_columns=helpers, all_dirty_helper_columns_restored=True, + private_centres_and_coefficient_work_cleared=True, + pre_wrappers=len(wrappers['pre']), post_wrappers=len(wrappers['post']), + endpoint_evidence='Hash-bound fresh INDEPENDENT-LOCAL-REPLAY.json') + + centres = len(w['centers']) + children = sum(checks['forward']['paid_profile'].values()) + assert checks['forward']['paid_profile'] == checks['backward']['paid_profile'] + macro_bound = max(row['macros'] for row in local.values()) + compiler = 64*(m+1)**3 + adapters = 16*(macro_bound+children+n+centres)+64*m + primitive_bound = max(row['real_component_primitives'] for row in local.values())+adapters*compiler + + assert widths==registry['widths'] + artifacts={f.name:filehash(f) for f in local_dir.iterdir() if f.is_file()} + phase_review=read(local_dir/'CLIFFORD-REVIEW.json') + return dict(local=local,helpers=helpers,centres=centres,v=v,h=h,n=n, + entering_helpers=entering,entrance_rank=sum(len(w['frames'][f]) for f in w['start'][2*v:]), + terminal_codimension=terminal_codim, hyperplane_ended_helpers=len(ends), # HPE: always reported (0 for FULL-ended words) + width_inventory=dict(sorted(Counter(widths).items())),widths=widths, + local_adapters=adapters,local_primitive_bound=primitive_bound, + compiler=compiler,children=children,artifacts=artifacts, + paid_profile=checks['forward']['paid_profile'], + program_hashes={o:programhash(events) for o,events in programs.items()},semantic_artifact_sha256=artifact_identities(local_dir)) + + +def run(base, hosted, audit, out, retained_invoice=None): + local_dir=base/'split-centres' + parent=read(local_dir/'GLOBAL-TEMPLATE.json.gz') + template_path=hosted/'GLOBAL-TEMPLATE.json.gz' + template=read(template_path); summary=read(hosted/'HOSTED.json') + owners=read(audit/'OWNERS-AND-PROFILE.json'); control=read(audit/'ASYNC-AUDIT.json') + template_hash=contenthash(template_path) + assert template_hash==control['complex_template_sha256']==owners['template_sha256']==summary['template_sha256'] + assert owners['status']=='PASS_INDEPENDENT_ASYNC_OWNERS_AND_PROFILE' + assert template['recipe']==parent['recipe'] + assert 'local_programs' not in template + assert set(template['local_providers'])==set(PIDS) + providers={pid:recount_provider(base/'providers'/pid,registry) + for pid,registry in template['local_providers'].items()} + for pid,p in providers.items(): + assert owners['provider_phase_semantic_sha256'][pid]==control['provider_phase_semantic_sha256'][pid]==p['semantic_artifact_sha256']['CLIFFORD-REVIEW.json'] + # The fresh controller admission must cite precisely these provider bytes. + for name in ('CANONICAL-WORD.json.gz','LOCAL-PROGRAMS.json.gz','LOCAL-CHECKS.json', + 'INDEPENDENT-LOCAL-REPLAY.json','CLIFFORD-RECIPES.json', + 'CLIFFORD-REVIEW.json','RESIDUAL-ADAPTERS.json'): + path='providers/'+pid+'/'+name + assert summary['source_artifacts'][path]==p['artifacts'][name] + assert owners['source_artifacts'][path]==p['artifacts'][name] + v,helpers,h,m,centres,n=112,504,9,73,8,728 + stages,replicas,blocks_per_stream=9,8,4 + call_count=len(template['calls']) + assert call_count==stages*replicas==control['complete_invocations'] + assert control['one_owner_per_complete_invocation'] + assert len({(c['stage'],c['replica']) for c in template['calls']})==call_count + parent_calls={(c['stage'],c['replica']):c for c in parent['calls']} + sweeps=[e for e in template['execution_schedule'] if e['kind']=='local_cover_sweep'] + assert len(sweeps)==call_count + selected=[]; selected_paid=Counter(); provider_counts=Counter(); orientation_counts=Counter() + scalar=coefficient_work=macros=0; wrapper_factors=0 + factors_per_wrapper=2*(m-1) + for c in template['calls']: + pid,orientation=c['provider_id'],c['orientation']; p=providers[pid] + old=parent_calls[(c['stage'],c['replica'])] + assert orientation==old['orientation'] and c['owners'][:2*v]==old['owners'][:2*v] + assert c['local_program_sha256']==p['program_hashes'][orientation] + r=p['local'][orientation] + scalar+=r['real_component_primitives']; coefficient_work+=r['coefficient_work_primitive_count']; macros+=r['macros'] + wrapper_factors+=(r['pre_wrappers']+r['post_wrappers'])*factors_per_wrapper + provider_counts[pid]+=1; orientation_counts[(pid,orientation)]+=1 + selected_paid.update({int(k):v for k,v in p['paid_profile'].items()}) + selected.append(dict(stage=c['stage'],replica=c['replica'],provider_id=pid,orientation=orientation, + program_sha256=c['local_program_sha256'],events=r['events'],macros=r['macros'], + real_component_primitives=r['real_component_primitives'], + coefficient_work_primitive_count=r['coefficient_work_primitive_count'], + entering_helpers=p['entering_helpers'],entrance_rank=p['entrance_rank'], + pre_wrappers=r['pre_wrappers'],post_wrappers=r['post_wrappers'])) + assert provider_counts==COUNTS + # The sweep registry is executable: no hidden use of the historical supplier. + by_call={(c['stage'],c['replica']):c for c in template['calls']} + for e in sweeps: + c=by_call[(e['stage'],e['replica'])] + assert e['provider_id']==c['provider_id'] + assert set(p['compiler'] for p in providers.values())=={64*(m+1)**3} + compiler=64*(m+1)**3 + adapters=max(p['local_adapters'] for p in providers.values()) + primitive_bound=max(p['local_primitive_bound'] for p in providers.values()) + bridge_steps=sum(event['kind']=='bridge' for event in parent['recipe']) + bridge_sweeps=sum(event['kind']=='bridge' for event in template['execution_schedule']) + assert bridge_sweeps==replicas*bridge_steps + bridge_additions=2*v*bridge_sweeps + shifts=blocks_per_stream*v*replicas; moves=2*shifts + parent_live,parent_physical=parent['live'],parent['physical'] + data_stock=2*v*blocks_per_stream*replicas + assert (parent_live-data_stock)%stages==0 + parent_banks=(parent_live-data_stock)//stages + assert parent_banks>=0 and parent_physical==parent_live+helpers+centres+2 + nonlocal_items=(4*v*replicas*stages+2*v*replicas*stages+2*call_count*helpers + +sum(child['replicas'] for child in parent['idle_children'])+stages*parent_banks + +bridge_additions+shifts+moves+parent_live+parent_physical+wrapper_factors) + outside=8*nonlocal_items+64*m + parent_pervertex=(scalar+bridge_additions+shifts+moves+parent_live + +(call_count*adapters+outside)*compiler+64*parent_physical) + live,physical=template['live'],template['physical'] + mass,profile=owners['rank_mass'],owners['paid_profile'] + assert m*live-mass==owners['deficit']==2560 + assert mass==sum(int(r)*count for r,count in profile.items()) + assert physical==live+helpers+centres+2 + assert live==owners['live'] and physical==owners['physical'] + assert live<=parent_live and physical<=parent_physical + assert not template['bank_padding']['families'] + assert owners['explicit_idle_remainder_children']<=owners['source_idle_children_charged'] + # The old dedicated-bank geometry is only a conservative reserve envelope. + # Its singular program is never used as evidence for a mixed invocation. + rebased=parent_pervertex+65*(physical-parent_physical)+(live-parent_live) + used=max(rebased,parent_pervertex); retained=None; payload=512 + if retained_invoice is not None: + previous=read(retained_invoice) + assert previous['compiler']==compiler and previous['charged_prefix_bits']==payload + previous_bound=previous['conservative_pervertex_used'] + used=max(used,previous_bound+parent_pervertex) + retained=dict(sha256=filehash(retained_invoice),previous_pervertex_allowance=previous_bound, + added_complete_new_pervertex=parent_pervertex,policy='Retain old allowance and add entire fresh mixed recount.') + half=m//2; group=2**(half*half) + for i in range(1,half+1): group*=2**(2*i)-1 + stock,streamed_mass=group*physical,group*mass + logical=group*used+64; router=compiler*(logical+1)*(stock+1)**2 + g_bound,e_bound,c0=2**30000,2**100000,2**210000 + total_mass=streamed_mass+e_bound + literal=2*g_bound*stock**2+8*streamed_mass+4*stock+4+32*m + row=2*stock.bit_length()+9909+252+2*payload + maxchild=max(map(int,profile)) + inequalities=dict(local_primitive_bound=primitive_bound<2**48, + logical=logical<2**6050,router=router2*maxchild*maxchild) + assert all(inequalities.values()) + localbits=max(r['prefix_bits'] for p in providers.values() for r in p['local'].values()) + input_l2_bits=(m+1)//2 + required_prefix=localbits+input_l2_bits+call_count+bridge_sweeps+4 + assert required_prefix1 + return PIDS[(PIDS.index(pid)+1)%len(PIDS)] diff --git a/research/complex-571-hpe46/data/OWNERS.json.gz b/research/complex-571-hpe46/data/OWNERS.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..8b2984158a1c5b1a7cb6d4d8dd2c5eefe79339f3 GIT binary patch literal 420249 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

d)Cj)wxTi7A)kj1d>Jxi}(Pv_;&QelsRkTP9y;c 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

@JBi-OknHB}N{X8=Qci?MY&kWg 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%0Dpx*d6pjpAv^sSbfTJ*nVOYZf87~< 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 b7Z+@`Z6n!`Eg$`TDkj(1U1HUw`Op6Wfxxpo literal 0 HcmV?d00001 diff --git a/research/complex-571-hpe46/data/PLAN.json b/research/complex-571-hpe46/data/PLAN.json new file mode 100644 index 0000000000..6947a16b5a --- /dev/null +++ b/research/complex-571-hpe46/data/PLAN.json @@ -0,0 +1,42666 @@ +{ + "status": "LITERAL_OWNER_NOMINATION_PENDING_ADMISSION", + "mode": "frozen-saturation-pattern-time-matching", + "K": 4, + "T": 8, + "M": 73, + "L": 9, + "live": 7168, + "deficit": 2560, + "profile": { + "1": 183968, + "2": 33616, + "3": 23053, + "4": 14008, + "5": 4032, + "6": 4032, + "8": 576, + "25": 1, + "48": 1986 + }, + "order": [ + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 0 + ], + [ + 0, + 2 + ], + [ + 1, + 1 + ], + [ + 2, + 0 + ], + [ + 0, + 3 + ], + [ + 1, + 2 + ], + [ + 2, + 1 + ], + [ + 3, + 0 + ], + [ + 0, + 4 + ], + [ + 1, + 3 + ], + [ + 2, + 2 + ], + [ + 3, + 1 + ], + [ + 4, + 0 + ], + [ + 0, + 5 + ], + [ + 1, + 4 + ], + [ + 2, + 3 + ], + [ + 3, + 2 + ], + [ + 4, + 1 + ], + [ + 5, + 0 + ], + [ + 0, + 6 + ], + [ + 1, + 5 + ], + [ + 2, + 4 + ], + [ + 3, + 3 + ], + [ + 4, + 2 + ], + [ + 5, + 1 + ], + [ + 0, + 7 + ], + [ + 6, + 0 + ], + [ + 1, + 6 + ], + [ + 2, + 5 + ], + [ + 3, + 4 + ], + [ + 4, + 3 + ], + [ + 5, + 2 + ], + [ + 6, + 1 + ], + [ + 1, + 7 + ], + [ + 7, + 0 + ], + [ + 2, + 6 + ], + [ + 3, + 5 + ], + [ + 4, + 4 + ], + [ + 5, + 3 + ], + [ + 6, + 2 + ], + [ + 7, + 1 + ], + [ + 2, + 7 + ], + [ + 8, + 0 + ], + [ + 3, + 6 + ], + [ + 4, + 5 + ], + [ + 5, + 4 + ], + [ + 6, + 3 + ], + [ + 7, + 2 + ], + [ + 8, + 1 + ], + [ + 3, + 7 + ], + [ + 4, + 6 + ], + [ + 5, + 5 + ], + [ + 6, + 4 + ], + [ + 7, + 3 + ], + [ + 8, + 2 + ], + [ + 4, + 7 + ], + [ + 5, + 6 + ], + [ + 6, + 5 + ], + [ + 7, + 4 + ], + [ + 8, + 3 + ], + [ + 5, + 7 + ], + [ + 6, + 6 + ], + [ + 7, + 5 + ], + [ + 8, + 4 + ], + [ + 6, + 7 + ], + [ + 7, + 6 + ], + [ + 8, + 5 + ], + [ + 7, + 7 + ], + [ + 8, + 6 + ], + [ + 8, + 7 + ] + ], + "windows": { + "0,0": [ + 16, + [ + 0, + 1, + 2 + ] + ], + "0,2": [ + 16, + [ + 0, + 1, + 2 + ] + ], + "0,1": [ + 8, + [ + 3, + 4, + 5 + ] + ], + "0,3": [ + 8, + [ + 3, + 4, + 5 + ] + ], + "0,4": [ + 32, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 + ] + ], + "0,6": [ + 32, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 + ] + ], + "0,5": [ + 8, + [ + 10, + 11, + 12, + 13, + 14 + ] + ], + "0,7": [ + 8, + [ + 10, + 11, + 12, + 13, + 14 + ] + ], + "0,8": [ + 48, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20 + ] + ], + "0,10": [ + 48, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20 + ] + ], + "0,9": [ + 8, + [ + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28 + ] + ], + "0,11": [ + 8, + [ + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28 + ] + ], + "0,12": [ + 48, + [ + 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, + 43, + 44 + ] + ], + "0,13": [ + 48, + [ + 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, + 43, + 44 + ] + ], + "0,14": [ + 32, + [ + 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, + 43, + 44 + ] + ], + "0,15": [ + 32, + [ + 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, + 43, + 44 + ] + ], + "0,16": [ + 16, + [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44 + ] + ], + "0,17": [ + 16, + [ + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44 + ] + ], + "1,0": [ + 16, + [ + 0, + 1, + 2, + 3, + 4 + ] + ], + "1,2": [ + 16, + [ + 0, + 1, + 2, + 3, + 4 + ] + ], + "1,1": [ + 8, + [ + 5, + 6, + 7, + 8 + ] + ], + "1,3": [ + 8, + [ + 5, + 6, + 7, + 8 + ] + ], + "1,4": [ + 32, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13 + ] + ], + "1,6": [ + 32, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13 + ] + ], + "1,5": [ + 8, + [ + 14, + 15, + 16, + 17, + 18, + 19 + ] + ], + "1,7": [ + 8, + [ + 14, + 15, + 16, + 17, + 18, + 19 + ] + ], + "1,8": [ + 48, + [ + 0, + 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 + ] + ], + "1,10": [ + 48, + [ + 0, + 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 + ] + ], + "1,9": [ + 8, + [ + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34 + ] + ], + "1,11": [ + 8, + [ + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34 + ] + ], + "1,12": [ + 48, + [ + 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, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50 + ] + ], + "1,13": [ + 48, + [ + 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, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50 + ] + ], + "1,14": [ + 32, + [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50 + ] + ], + "1,15": [ + 32, + [ + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50 + ] + ], + "1,16": [ + 16, + [ + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50 + ] + ], + "1,17": [ + 16, + [ + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50 + ] + ], + "2,0": [ + 16, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ] + ], + "2,2": [ + 16, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ] + ], + "2,1": [ + 8, + [ + 8, + 9, + 10, + 11, + 12 + ] + ], + "2,3": [ + 8, + [ + 8, + 9, + 10, + 11, + 12 + ] + ], + "2,4": [ + 32, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18 + ] + ], + "2,6": [ + 32, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18 + ] + ], + "2,5": [ + 8, + [ + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ] + ], + "2,7": [ + 8, + [ + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ] + ], + "2,8": [ + 48, + [ + 0, + 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 + ] + ], + "2,10": [ + 48, + [ + 0, + 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 + ] + ], + "2,9": [ + 8, + [ + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41 + ] + ], + "2,11": [ + 8, + [ + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41 + ] + ], + "2,12": [ + 48, + [ + 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, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56 + ] + ], + "2,13": [ + 48, + [ + 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, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56 + ] + ], + "2,14": [ + 32, + [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56 + ] + ], + "2,15": [ + 32, + [ + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56 + ] + ], + "2,16": [ + 16, + [ + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56 + ] + ], + "2,17": [ + 16, + [ + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56 + ] + ], + "3,0": [ + 16, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + ], + "3,2": [ + 16, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + ], + "3,1": [ + 8, + [ + 12, + 13, + 14, + 15, + 16, + 17 + ] + ], + "3,3": [ + 8, + [ + 12, + 13, + 14, + 15, + 16, + 17 + ] + ], + "3,4": [ + 32, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24 + ] + ], + "3,6": [ + 32, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24 + ] + ], + "3,5": [ + 8, + [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32 + ] + ], + "3,7": [ + 8, + [ + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32 + ] + ], + "3,8": [ + 48, + [ + 0, + 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 + ] + ], + "3,10": [ + 48, + [ + 0, + 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 + ] + ], + "3,9": [ + 8, + [ + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48 + ] + ], + "3,11": [ + 8, + [ + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48 + ] + ], + "3,12": [ + 48, + [ + 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, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ] + ], + "3,13": [ + 48, + [ + 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, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ] + ], + "3,14": [ + 32, + [ + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ] + ], + "3,15": [ + 32, + [ + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ] + ], + "3,16": [ + 16, + [ + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ] + ], + "3,17": [ + 16, + [ + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61 + ] + ], + "4,0": [ + 16, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16 + ] + ], + "4,2": [ + 16, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16 + ] + ], + "4,1": [ + 8, + [ + 17, + 18, + 19, + 20, + 21, + 22, + 23 + ] + ], + "4,3": [ + 8, + [ + 17, + 18, + 19, + 20, + 21, + 22, + 23 + ] + ], + "4,4": [ + 32, + [ + 0, + 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 + ] + ], + "4,6": [ + 32, + [ + 0, + 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 + ] + ], + "4,5": [ + 8, + [ + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 + ] + ], + "4,7": [ + 8, + [ + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 + ] + ], + "4,8": [ + 48, + [ + 0, + 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, + 43, + 44, + 45, + 46, + 47 + ] + ], + "4,10": [ + 48, + [ + 0, + 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, + 43, + 44, + 45, + 46, + 47 + ] + ], + "4,9": [ + 8, + [ + 48, + 49, + 50, + 51, + 52, + 53, + 54 + ] + ], + "4,11": [ + 8, + [ + 48, + 49, + 50, + 51, + 52, + 53, + 54 + ] + ], + "4,12": [ + 48, + [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65 + ] + ], + "4,13": [ + 48, + [ + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65 + ] + ], + "4,14": [ + 32, + [ + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65 + ] + ], + "4,15": [ + 32, + [ + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65 + ] + ], + "4,16": [ + 16, + [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65 + ] + ], + "4,17": [ + 16, + [ + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65 + ] + ], + "5,0": [ + 16, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22 + ] + ], + "5,2": [ + 16, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22 + ] + ], + "5,1": [ + 8, + [ + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30 + ] + ], + "5,3": [ + 8, + [ + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30 + ] + ], + "5,4": [ + 32, + [ + 0, + 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 + ] + ], + "5,6": [ + 32, + [ + 0, + 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 + ] + ], + "5,5": [ + 8, + [ + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46 + ] + ], + "5,7": [ + 8, + [ + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46 + ] + ], + "5,8": [ + 48, + [ + 0, + 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, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53 + ] + ], + "5,10": [ + 48, + [ + 0, + 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, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53 + ] + ], + "5,9": [ + 8, + [ + 54, + 55, + 56, + 57, + 58, + 59 + ] + ], + "5,11": [ + 8, + [ + 54, + 55, + 56, + 57, + 58, + 59 + ] + ], + "5,12": [ + 48, + [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68 + ] + ], + "5,13": [ + 48, + [ + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68 + ] + ], + "5,14": [ + 32, + [ + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68 + ] + ], + "5,15": [ + 32, + [ + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68 + ] + ], + "5,16": [ + 16, + [ + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68 + ] + ], + "5,17": [ + 16, + [ + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68 + ] + ], + "6,0": [ + 16, + [ + 0, + 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 + ] + ], + "6,2": [ + 16, + [ + 0, + 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 + ] + ], + "6,1": [ + 8, + [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37 + ] + ], + "6,3": [ + 8, + [ + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37 + ] + ], + "6,4": [ + 32, + [ + 0, + 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, + 43, + 44, + 45 + ] + ], + "6,6": [ + 32, + [ + 0, + 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, + 43, + 44, + 45 + ] + ], + "6,5": [ + 8, + [ + 46, + 47, + 48, + 49, + 50, + 51, + 52 + ] + ], + "6,7": [ + 8, + [ + 46, + 47, + 48, + 49, + 50, + 51, + 52 + ] + ], + "6,8": [ + 48, + [ + 0, + 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, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58 + ] + ], + "6,10": [ + 48, + [ + 0, + 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, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58 + ] + ], + "6,9": [ + 8, + [ + 59, + 60, + 61, + 62, + 63 + ] + ], + "6,11": [ + 8, + [ + 59, + 60, + 61, + 62, + 63 + ] + ], + "6,12": [ + 48, + [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70 + ] + ], + "6,13": [ + 48, + [ + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70 + ] + ], + "6,14": [ + 32, + [ + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70 + ] + ], + "6,15": [ + 32, + [ + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70 + ] + ], + "6,16": [ + 16, + [ + 64, + 65, + 66, + 67, + 68, + 69, + 70 + ] + ], + "6,17": [ + 16, + [ + 64, + 65, + 66, + 67, + 68, + 69, + 70 + ] + ], + "7,0": [ + 16, + [ + 0, + 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 + ] + ], + "7,2": [ + 16, + [ + 0, + 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 + ] + ], + "7,1": [ + 8, + [ + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43 + ] + ], + "7,3": [ + 8, + [ + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43 + ] + ], + "7,4": [ + 32, + [ + 0, + 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, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51 + ] + ], + "7,6": [ + 32, + [ + 0, + 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, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51 + ] + ], + "7,5": [ + 8, + [ + 52, + 53, + 54, + 55, + 56, + 57 + ] + ], + "7,7": [ + 8, + [ + 52, + 53, + 54, + 55, + 56, + 57 + ] + ], + "7,8": [ + 48, + [ + 0, + 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, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62 + ] + ], + "7,10": [ + 48, + [ + 0, + 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, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62 + ] + ], + "7,9": [ + 8, + [ + 63, + 64, + 65, + 66 + ] + ], + "7,11": [ + 8, + [ + 63, + 64, + 65, + 66 + ] + ], + "7,12": [ + 48, + [ + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ] + ], + "7,13": [ + 48, + [ + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ] + ], + "7,14": [ + 32, + [ + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ] + ], + "7,15": [ + 32, + [ + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ] + ], + "7,16": [ + 16, + [ + 67, + 68, + 69, + 70, + 71 + ] + ], + "7,17": [ + 16, + [ + 67, + 68, + 69, + 70, + 71 + ] + ] + }, + "sides": { + "0": 0, + "2": 1, + "1": 0, + "3": 1, + "4": 0, + "6": 1, + "5": 0, + "7": 1, + "8": 0, + "10": 1, + "9": 0, + "11": 1, + "12": 0, + "13": 1, + "14": 0, + "15": 1, + "16": 0, + "17": 1 + }, + "pairs": { + "0": 1, + "2": 1, + "1": 1, + "3": 1, + "4": 2, + "6": 2, + "5": 2, + "7": 2, + "8": 3, + "10": 3, + "9": 3, + "11": 3, + "12": 0, + "13": 0, + "14": 1, + "15": 1, + "16": 2, + "17": 2 + }, + "solver_status": "literal_integer_flow_and_per_window_matching", + "gap": null, + "provider_calls": [ + { + "time": 0, + "stage": 0, + "replica": 0, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 1, + "stage": 0, + "replica": 1, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 2, + "stage": 1, + "replica": 0, + "provider": "ck", + "orientation": "backward", + "local_program_sha256": "433a8224b14c9963f14de984a3ed520f50537fe28cd4da60b700e7eecbe22ad7" + }, + { + "time": 3, + "stage": 0, + "replica": 2, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 4, + "stage": 1, + "replica": 1, + "provider": "ck", + "orientation": "backward", + "local_program_sha256": "433a8224b14c9963f14de984a3ed520f50537fe28cd4da60b700e7eecbe22ad7" + }, + { + "time": 5, + "stage": 2, + "replica": 0, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 6, + "stage": 0, + "replica": 3, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 7, + "stage": 1, + "replica": 2, + "provider": "ck", + "orientation": "backward", + "local_program_sha256": "433a8224b14c9963f14de984a3ed520f50537fe28cd4da60b700e7eecbe22ad7" + }, + { + "time": 8, + "stage": 2, + "replica": 1, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 9, + "stage": 3, + "replica": 0, + "provider": "ck", + "orientation": "backward", + "local_program_sha256": "433a8224b14c9963f14de984a3ed520f50537fe28cd4da60b700e7eecbe22ad7" + }, + { + "time": 10, + "stage": 0, + "replica": 4, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 11, + "stage": 1, + "replica": 3, + "provider": "ck", + "orientation": "backward", + "local_program_sha256": "433a8224b14c9963f14de984a3ed520f50537fe28cd4da60b700e7eecbe22ad7" + }, + { + "time": 12, + "stage": 2, + "replica": 2, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 13, + "stage": 3, + "replica": 1, + "provider": "ck", + "orientation": "backward", + "local_program_sha256": "433a8224b14c9963f14de984a3ed520f50537fe28cd4da60b700e7eecbe22ad7" + }, + { + "time": 14, + "stage": 4, + "replica": 0, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 15, + "stage": 0, + "replica": 5, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 16, + "stage": 1, + "replica": 4, + "provider": "atm3", + "orientation": "backward", + "local_program_sha256": "802d20d4ec675a4a52ef95ba03d640ff364b8ed2d72b62336ee1ac23c77854d7" + }, + { + "time": 17, + "stage": 2, + "replica": 3, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 18, + "stage": 3, + "replica": 2, + "provider": "ck", + "orientation": "backward", + "local_program_sha256": "433a8224b14c9963f14de984a3ed520f50537fe28cd4da60b700e7eecbe22ad7" + }, + { + "time": 19, + "stage": 4, + "replica": 1, + "provider": "atm3", + "orientation": "forward", + "local_program_sha256": "4f797dda98d3839539a238392810f0c235008e74db6342ec8e0901be6852a314" + }, + { + "time": 20, + "stage": 5, + "replica": 0, + "provider": "atm3", + "orientation": "backward", + "local_program_sha256": "802d20d4ec675a4a52ef95ba03d640ff364b8ed2d72b62336ee1ac23c77854d7" + }, + { + "time": 21, + "stage": 0, + "replica": 6, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 22, + "stage": 1, + "replica": 5, + "provider": "atm3", + "orientation": "backward", + "local_program_sha256": "802d20d4ec675a4a52ef95ba03d640ff364b8ed2d72b62336ee1ac23c77854d7" + }, + { + "time": 23, + "stage": 2, + "replica": 4, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 24, + "stage": 3, + "replica": 3, + "provider": "ck", + "orientation": "backward", + "local_program_sha256": "433a8224b14c9963f14de984a3ed520f50537fe28cd4da60b700e7eecbe22ad7" + }, + { + "time": 25, + "stage": 4, + "replica": 2, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 26, + "stage": 5, + "replica": 1, + "provider": "atm3", + "orientation": "backward", + "local_program_sha256": "802d20d4ec675a4a52ef95ba03d640ff364b8ed2d72b62336ee1ac23c77854d7" + }, + { + "time": 27, + "stage": 0, + "replica": 7, + "provider": "atm3", + "orientation": "forward", + "local_program_sha256": "4f797dda98d3839539a238392810f0c235008e74db6342ec8e0901be6852a314" + }, + { + "time": 28, + "stage": 6, + "replica": 0, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 29, + "stage": 1, + "replica": 6, + "provider": "ck", + "orientation": "backward", + "local_program_sha256": "433a8224b14c9963f14de984a3ed520f50537fe28cd4da60b700e7eecbe22ad7" + }, + { + "time": 30, + "stage": 2, + "replica": 5, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 31, + "stage": 3, + "replica": 4, + "provider": "ck", + "orientation": "backward", + "local_program_sha256": "433a8224b14c9963f14de984a3ed520f50537fe28cd4da60b700e7eecbe22ad7" + }, + { + "time": 32, + "stage": 4, + "replica": 3, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 33, + "stage": 5, + "replica": 2, + "provider": "atm3", + "orientation": "backward", + "local_program_sha256": "802d20d4ec675a4a52ef95ba03d640ff364b8ed2d72b62336ee1ac23c77854d7" + }, + { + "time": 34, + "stage": 6, + "replica": 1, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 35, + "stage": 1, + "replica": 7, + "provider": "atm3", + "orientation": "backward", + "local_program_sha256": "802d20d4ec675a4a52ef95ba03d640ff364b8ed2d72b62336ee1ac23c77854d7" + }, + { + "time": 36, + "stage": 7, + "replica": 0, + "provider": "ck", + "orientation": "backward", + "local_program_sha256": "433a8224b14c9963f14de984a3ed520f50537fe28cd4da60b700e7eecbe22ad7" + }, + { + "time": 37, + "stage": 2, + "replica": 6, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 38, + "stage": 3, + "replica": 5, + "provider": "ck", + "orientation": "backward", + "local_program_sha256": "433a8224b14c9963f14de984a3ed520f50537fe28cd4da60b700e7eecbe22ad7" + }, + { + "time": 39, + "stage": 4, + "replica": 4, + "provider": "atm3", + "orientation": "forward", + "local_program_sha256": "4f797dda98d3839539a238392810f0c235008e74db6342ec8e0901be6852a314" + }, + { + "time": 40, + "stage": 5, + "replica": 3, + "provider": "ck", + "orientation": "backward", + "local_program_sha256": "433a8224b14c9963f14de984a3ed520f50537fe28cd4da60b700e7eecbe22ad7" + }, + { + "time": 41, + "stage": 6, + "replica": 2, + "provider": "atm3", + "orientation": "forward", + "local_program_sha256": "4f797dda98d3839539a238392810f0c235008e74db6342ec8e0901be6852a314" + }, + { + "time": 42, + "stage": 7, + "replica": 1, + "provider": "ck", + "orientation": "backward", + "local_program_sha256": "433a8224b14c9963f14de984a3ed520f50537fe28cd4da60b700e7eecbe22ad7" + }, + { + "time": 43, + "stage": 2, + "replica": 7, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 44, + "stage": 8, + "replica": 0, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 45, + "stage": 3, + "replica": 6, + "provider": "ck", + "orientation": "backward", + "local_program_sha256": "433a8224b14c9963f14de984a3ed520f50537fe28cd4da60b700e7eecbe22ad7" + }, + { + "time": 46, + "stage": 4, + "replica": 5, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 47, + "stage": 5, + "replica": 4, + "provider": "atm3", + "orientation": "backward", + "local_program_sha256": "802d20d4ec675a4a52ef95ba03d640ff364b8ed2d72b62336ee1ac23c77854d7" + }, + { + "time": 48, + "stage": 6, + "replica": 3, + "provider": "atm3", + "orientation": "forward", + "local_program_sha256": "4f797dda98d3839539a238392810f0c235008e74db6342ec8e0901be6852a314" + }, + { + "time": 49, + "stage": 7, + "replica": 2, + "provider": "ck", + "orientation": "backward", + "local_program_sha256": "433a8224b14c9963f14de984a3ed520f50537fe28cd4da60b700e7eecbe22ad7" + }, + { + "time": 50, + "stage": 8, + "replica": 1, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 51, + "stage": 3, + "replica": 7, + "provider": "ck", + "orientation": "backward", + "local_program_sha256": "433a8224b14c9963f14de984a3ed520f50537fe28cd4da60b700e7eecbe22ad7" + }, + { + "time": 52, + "stage": 4, + "replica": 6, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 53, + "stage": 5, + "replica": 5, + "provider": "ck", + "orientation": "backward", + "local_program_sha256": "433a8224b14c9963f14de984a3ed520f50537fe28cd4da60b700e7eecbe22ad7" + }, + { + "time": 54, + "stage": 6, + "replica": 4, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 55, + "stage": 7, + "replica": 3, + "provider": "ck", + "orientation": "backward", + "local_program_sha256": "433a8224b14c9963f14de984a3ed520f50537fe28cd4da60b700e7eecbe22ad7" + }, + { + "time": 56, + "stage": 8, + "replica": 2, + "provider": "atm3", + "orientation": "forward", + "local_program_sha256": "4f797dda98d3839539a238392810f0c235008e74db6342ec8e0901be6852a314" + }, + { + "time": 57, + "stage": 4, + "replica": 7, + "provider": "atm3", + "orientation": "forward", + "local_program_sha256": "4f797dda98d3839539a238392810f0c235008e74db6342ec8e0901be6852a314" + }, + { + "time": 58, + "stage": 5, + "replica": 6, + "provider": "atm3", + "orientation": "backward", + "local_program_sha256": "802d20d4ec675a4a52ef95ba03d640ff364b8ed2d72b62336ee1ac23c77854d7" + }, + { + "time": 59, + "stage": 6, + "replica": 5, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 60, + "stage": 7, + "replica": 4, + "provider": "ck", + "orientation": "backward", + "local_program_sha256": "433a8224b14c9963f14de984a3ed520f50537fe28cd4da60b700e7eecbe22ad7" + }, + { + "time": 61, + "stage": 8, + "replica": 3, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 62, + "stage": 5, + "replica": 7, + "provider": "ck", + "orientation": "backward", + "local_program_sha256": "433a8224b14c9963f14de984a3ed520f50537fe28cd4da60b700e7eecbe22ad7" + }, + { + "time": 63, + "stage": 6, + "replica": 6, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 64, + "stage": 7, + "replica": 5, + "provider": "atm3", + "orientation": "backward", + "local_program_sha256": "802d20d4ec675a4a52ef95ba03d640ff364b8ed2d72b62336ee1ac23c77854d7" + }, + { + "time": 65, + "stage": 8, + "replica": 4, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 66, + "stage": 6, + "replica": 7, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + { + "time": 67, + "stage": 7, + "replica": 6, + "provider": "atm3", + "orientation": "backward", + "local_program_sha256": "802d20d4ec675a4a52ef95ba03d640ff364b8ed2d72b62336ee1ac23c77854d7" + }, + { + "time": 68, + "stage": 8, + "replica": 5, + "provider": "atm3", + "orientation": "forward", + "local_program_sha256": "4f797dda98d3839539a238392810f0c235008e74db6342ec8e0901be6852a314" + }, + { + "time": 69, + "stage": 7, + "replica": 7, + "provider": "ck", + "orientation": "backward", + "local_program_sha256": "433a8224b14c9963f14de984a3ed520f50537fe28cd4da60b700e7eecbe22ad7" + }, + { + "time": 70, + "stage": 8, + "replica": 6, + "provider": "atm3", + "orientation": "forward", + "local_program_sha256": "4f797dda98d3839539a238392810f0c235008e74db6342ec8e0901be6852a314" + }, + { + "time": 71, + "stage": 8, + "replica": 7, + "provider": "ck", + "orientation": "forward", + "local_program_sha256": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + } + ], + "per_call_widths": [ + { + "stage": 0, + "replica": 0, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 0, + "replica": 1, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 1, + "replica": 0, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 0, + "replica": 2, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 1, + "replica": 1, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 2, + "replica": 0, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 0, + "replica": 3, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 1, + "replica": 2, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 2, + "replica": 1, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 3, + "replica": 0, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 0, + "replica": 4, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 1, + "replica": 3, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 2, + "replica": 2, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 3, + "replica": 1, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 4, + "replica": 0, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 0, + "replica": 5, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 1, + "replica": 4, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 2, + "replica": 3, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 3, + "replica": 2, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 4, + "replica": 1, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 5, + "replica": 0, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 0, + "replica": 6, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 1, + "replica": 5, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 2, + "replica": 4, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 3, + "replica": 3, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 4, + "replica": 2, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 5, + "replica": 1, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 0, + "replica": 7, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 6, + "replica": 0, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 1, + "replica": 6, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 2, + "replica": 5, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 3, + "replica": 4, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 4, + "replica": 3, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 5, + "replica": 2, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 6, + "replica": 1, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 1, + "replica": 7, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 7, + "replica": 0, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 2, + "replica": 6, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 3, + "replica": 5, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 4, + "replica": 4, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 5, + "replica": 3, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 6, + "replica": 2, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 7, + "replica": 1, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 2, + "replica": 7, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 8, + "replica": 0, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 3, + "replica": 6, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 4, + "replica": 5, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 5, + "replica": 4, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 6, + "replica": 3, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 7, + "replica": 2, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 8, + "replica": 1, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 3, + "replica": 7, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 4, + "replica": 6, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 5, + "replica": 5, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 6, + "replica": 4, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 7, + "replica": 3, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 8, + "replica": 2, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 4, + "replica": 7, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 5, + "replica": 6, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 6, + "replica": 5, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 7, + "replica": 4, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 8, + "replica": 3, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 5, + "replica": 7, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 6, + "replica": 6, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 7, + "replica": 5, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 8, + "replica": 4, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 6, + "replica": 7, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 7, + "replica": 6, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 8, + "replica": 5, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 7, + "replica": 7, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 8, + "replica": 6, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + { + "stage": 8, + "replica": 7, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + } + ], + "provider_registry": { + "atm3": { + "directory": "providers/atm3", + "artifact_sha256": { + "CANONICAL-WORD.json.gz": "1c031797b3333b6f3485f05330ddf6a15d7cac2ad9beaecf5a9a960977e5fa79", + "LOCAL-PROGRAMS.json.gz": "b258956267af86ce3ccd89152394817b7fe8432d5471cfd6b63fcf1d29d16de6", + "LOCAL-CHECKS.json": "6909165107b6499b7df5327031904533fcceacb72a0c9c1a3c91a9f55361d37f", + "INDEPENDENT-LOCAL-REPLAY.json": "4f37ae45b7e84b7a16d46603bbc052b8f884dafcdce49c0bee825c5306099c2f", + "CLIFFORD-RECIPES.json": "513fcddbaab5a7fd408dee02c4c3ba89999a68913d75661edcb2575dc82c3fd5", + "CLIFFORD-REVIEW.json": "2099058c20b0088a41459c2dab77e6dfb57094c0a746b8d60a29508026af5ed3", + "RESIDUAL-ADAPTERS.json": "029bec7e0a7e4e5d183b1416615a4b2591b8d712471d30b8121cd9a1078726c7" + }, + "ports": [ + 11, + 19, + 35, + 67, + 131, + 259, + 13, + 21, + 37, + 69, + 133, + 261, + 41, + 73, + 137, + 265, + 49, + 81, + 145, + 273, + 161, + 289, + 193, + 321, + 385, + 14, + 22, + 38, + 70, + 134, + 262, + 26, + 74, + 138, + 266, + 50, + 146, + 274, + 98, + 162, + 290, + 194, + 322, + 386, + 28, + 44, + 140, + 268, + 84, + 148, + 276, + 100, + 164, + 292, + 196, + 324, + 388, + 56, + 88, + 152, + 280, + 104, + 168, + 296, + 200, + 328, + 392, + 112, + 176, + 304, + 208, + 336, + 400, + 224, + 352, + 416, + 448, + 508, + 506, + 502, + 494, + 478, + 446, + 382, + 254, + 505, + 501, + 493, + 477, + 445, + 381, + 253, + 499, + 491, + 475, + 443, + 379, + 251, + 487, + 471, + 439, + 375, + 247, + 463, + 431, + 367, + 239, + 415, + 351, + 223, + 319, + 191 + ], + "centers": [ + 229, + 224, + 227, + 225, + 243, + 241, + 259, + 257 + ], + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ], + "actual_paid_profile": { + "1": 2598, + "2": 416, + "3": 280, + "4": 232, + "5": 56, + "6": 56, + "8": 8 + }, + "orientation_program_sha256": { + "forward": "bf24a308a5552bab4400ac2130dce64e18f3f093eb5bce288950ac05cd2b7f11", + "backward": "0eb5352c4734f59c18a9d5fc48aab3efb9d408a4052b8e4ce5a8f5c8da097fe4" + }, + "artifact_semantic_sha256": { + "CANONICAL-WORD.json.gz": "663a253f7b1cee6d6cd11933ffa7dbc027997a35e4d9e2ce07fa23a3265a40cc", + "LOCAL-PROGRAMS.json.gz": "7c568285cd4f17e05ab8d013c8c66a861299c21d05a6552eaaddd37d6593c696", + "LOCAL-CHECKS.json": "63e07b00e88547a5cd0f9ccb1f667646e31eec3ba68e085c603156fc1781864e", + "INDEPENDENT-LOCAL-REPLAY.json": "4a722ad72cc10ea6554c03b1ca1663df0d67338973370be0958d229e0e883733", + "CLIFFORD-RECIPES.json": "513fcddbaab5a7fd408dee02c4c3ba89999a68913d75661edcb2575dc82c3fd5", + "CLIFFORD-REVIEW.json": "eb3faa13140f94c1c2ee6c8980b1a1b0102446305b332ff542669ba3c6ec580d", + "RESIDUAL-ADAPTERS.json": "618ffc04835a10fc9aad89b6ec2b796eea14d0638f3291ee7e1fe8f0e5984f9b" + } + }, + "ck": { + "directory": "providers/ck", + "artifact_sha256": { + "CANONICAL-WORD.json.gz": "45eff4d858e59b487ed8607389ca57a6b2dbcf4473cbd2100b62d4f8ff672bac", + "LOCAL-PROGRAMS.json.gz": "3bd742d3441c3413ab08aa123827d2bd8741edcccb46d894bcf60e071bcd2638", + "LOCAL-CHECKS.json": "49956970ee3aa3924f6ffd742bc55ff0a608bfdd0c243788e53d750615311b7a", + "INDEPENDENT-LOCAL-REPLAY.json": "52a7cc82d79c9080bfe38e3264a69c14472d35b8b2a2295925185de907594d83", + "CLIFFORD-RECIPES.json": "395ff116b7214c826e1f9ba3affe44f6b5bf82b3c18d8ddcc6617f5515007b92", + "CLIFFORD-REVIEW.json": "67a3ac992295a4a0711289d04ed2b998298faffd3e1ba883896b8ef719f5b3f1", + "RESIDUAL-ADAPTERS.json": "5c682ab693b041fbf3846afd054a1d7dd2ff2b9108f8310f72b601d2d119a18b" + }, + "ports": [ + 11, + 19, + 35, + 67, + 131, + 259, + 13, + 21, + 37, + 69, + 133, + 261, + 41, + 73, + 137, + 265, + 49, + 81, + 145, + 273, + 161, + 289, + 193, + 321, + 385, + 14, + 22, + 38, + 70, + 134, + 262, + 26, + 74, + 138, + 266, + 50, + 146, + 274, + 98, + 162, + 290, + 194, + 322, + 386, + 28, + 44, + 140, + 268, + 84, + 148, + 276, + 100, + 164, + 292, + 196, + 324, + 388, + 56, + 88, + 152, + 280, + 104, + 168, + 296, + 200, + 328, + 392, + 112, + 176, + 304, + 208, + 336, + 400, + 224, + 352, + 416, + 448, + 508, + 506, + 502, + 494, + 478, + 446, + 382, + 254, + 505, + 501, + 493, + 477, + 445, + 381, + 253, + 499, + 491, + 475, + 443, + 379, + 251, + 487, + 471, + 439, + 375, + 247, + 463, + 431, + 367, + 239, + 415, + 351, + 223, + 319, + 191 + ], + "centers": [ + 229, + 224, + 227, + 225, + 243, + 241, + 259, + 257 + ], + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ], + "actual_paid_profile": { + "1": 2518, + "2": 496, + "3": 320, + "4": 192, + "5": 56, + "6": 56, + "8": 8 + }, + "orientation_program_sha256": { + "forward": "b80dbd670b2a001528a0667c94c481f4faeed4494240d4f076b6d1744bdfde78", + "backward": "08366c7cfdaed343aab07a10ecd67d5b8a9adf5fa96948fa8feb0dea7447cea5" + }, + "artifact_semantic_sha256": { + "CANONICAL-WORD.json.gz": "38d4509d451073a4a6e1dc6509d541667a4b7e32862f8eaa17275d948a7127ca", + "LOCAL-PROGRAMS.json.gz": "662ecf2095aee5de0b71d97104a702c376d2e09c0575fc92d1a1a8c39ad71421", + "LOCAL-CHECKS.json": "18b507b213bda15c22eb176dc0ed7a77fba810e84c9241da12453df76f94e677", + "INDEPENDENT-LOCAL-REPLAY.json": "20d1275ac700a20a98078571547a8a6ce6e2bccbbc673edf41e8db8bd7f84ca9", + "CLIFFORD-RECIPES.json": "395ff116b7214c826e1f9ba3affe44f6b5bf82b3c18d8ddcc6617f5515007b92", + "CLIFFORD-REVIEW.json": "43ef489959df90ad8c6ed9ef8bd98d4753d235a8e38d7c37bb85990c383eba0d", + "RESIDUAL-ADAPTERS.json": "6d44c6482a7bbcb4ca0460dbc5d79caa580d1858f43a6f3731207e23d8134d22" + } + } + }, + "source_plan_sha256": "c4c9f4f5db481c982f1d0f9396249ab0593165c1b7ec5d4d2ab850b92c80beac", + "assignment_sha256": "b444356200d64b4e985dff4a26be673fe6d4f41a96e690c05ea58f3bdf60e441", + "source_owners_sha256": "b444356200d64b4e985dff4a26be673fe6d4f41a96e690c05ea58f3bdf60e441" +} diff --git a/research/complex-571-hpe46/data/SPEC.json b/research/complex-571-hpe46/data/SPEC.json new file mode 100644 index 0000000000..02793844f7 --- /dev/null +++ b/research/complex-571-hpe46/data/SPEC.json @@ -0,0 +1,2142 @@ +{ + "schema": "witness-spec/1", + "name": "hpe46", + "data": { + "plan_sha256": "4ace3e4362b713af245d5e407cc83bd4901545c6e77e50cf6dbd0ed43f229d8f", + "owners_sha256": "b444356200d64b4e985dff4a26be673fe6d4f41a96e690c05ea58f3bdf60e441" + }, + "providers": { + "atm3": { + "inventory": { + "4": 48, + "5": 8, + "7": 78, + "8": 94, + "9": 276 + }, + "native_negative_controls": 18, + "phase_edges": 3040, + "expected_profile": { + "1": 2614, + "2": 408, + "3": 288, + "4": 224, + "5": 56, + "6": 56, + "8": 8 + }, + "artifact_semantic_sha256": { + "CANONICAL-WORD.json.gz": "663a253f7b1cee6d6cd11933ffa7dbc027997a35e4d9e2ce07fa23a3265a40cc", + "CLIFFORD-RECIPES.json": "513fcddbaab5a7fd408dee02c4c3ba89999a68913d75661edcb2575dc82c3fd5", + "CLIFFORD-REVIEW.json": "eb3faa13140f94c1c2ee6c8980b1a1b0102446305b332ff542669ba3c6ec580d", + "INDEPENDENT-LOCAL-REPLAY.json": "4a722ad72cc10ea6554c03b1ca1663df0d67338973370be0958d229e0e883733", + "LOCAL-CHECKS.json": "63e07b00e88547a5cd0f9ccb1f667646e31eec3ba68e085c603156fc1781864e", + "LOCAL-PROGRAMS.json.gz": "7c568285cd4f17e05ab8d013c8c66a861299c21d05a6552eaaddd37d6593c696", + "RESIDUAL-ADAPTERS.json": "618ffc04835a10fc9aad89b6ec2b796eea14d0638f3291ee7e1fe8f0e5984f9b" + }, + "entering": 228, + "entrance": 476, + "width_digest": "3a1b3e2985e2b388aff05ea3710e2346b6b35aadf6b923e6568f1ad7d8e99246", + "program_hashes": { + "backward": "802d20d4ec675a4a52ef95ba03d640ff364b8ed2d72b62336ee1ac23c77854d7", + "forward": "4f797dda98d3839539a238392810f0c235008e74db6342ec8e0901be6852a314" + }, + "artifacts": { + "LOCAL-CHECKS.json": "6909165107b6499b7df5327031904533fcceacb72a0c9c1a3c91a9f55361d37f", + "CLIFFORD-RECIPES.json": "513fcddbaab5a7fd408dee02c4c3ba89999a68913d75661edcb2575dc82c3fd5", + "RESIDUAL-ADAPTERS.json": "029bec7e0a7e4e5d183b1416615a4b2591b8d712471d30b8121cd9a1078726c7" + }, + "complete_contract": { + "centres": 8, + "children": 3654, + "compiler": 25934336, + "entering_helpers": 228, + "entrance_rank": 476, + "h": 9, + "helpers": 504, + "hyperplane_ended_helpers": 46, + "local": { + "backward": { + "all_dirty_helper_columns_restored": true, + "all_exact_columns": 728, + "coefficient_work_primitive_count": 79672, + "dirty_helper_columns": 504, + "endpoint_evidence": "Hash-bound fresh INDEPENDENT-LOCAL-REPLAY.json", + "events": 21560, + "macros": 16258, + "post_wrappers": 228, + "pre_wrappers": 228, + "prefix_bits": 40, + "prefix_l1": "1044730572630", + "private_centres_and_coefficient_work_cleared": true, + "real_component_primitives": 160888 + }, + "forward": { + "all_dirty_helper_columns_restored": true, + "all_exact_columns": 728, + "coefficient_work_primitive_count": 79640, + "dirty_helper_columns": 504, + "endpoint_evidence": "Hash-bound fresh INDEPENDENT-LOCAL-REPLAY.json", + "events": 21560, + "macros": 16258, + "post_wrappers": 228, + "pre_wrappers": 228, + "prefix_bits": 37, + "prefix_l1": "88876257700", + "private_centres_and_coefficient_work_cleared": true, + "real_component_primitives": 160840 + } + }, + "local_adapters": 335040, + "local_primitive_bound": 8689040094328, + "n": 728, + "paid_profile": { + "1": 2614, + "2": 408, + "3": 288, + "4": 224, + "5": 56, + "6": 56, + "8": 8 + }, + "program_hashes": { + "backward": "802d20d4ec675a4a52ef95ba03d640ff364b8ed2d72b62336ee1ac23c77854d7", + "forward": "4f797dda98d3839539a238392810f0c235008e74db6342ec8e0901be6852a314" + }, + "semantic_artifact_sha256": { + "CANONICAL-WORD.json.gz": "663a253f7b1cee6d6cd11933ffa7dbc027997a35e4d9e2ce07fa23a3265a40cc", + "CLIFFORD-RECIPES.json": "513fcddbaab5a7fd408dee02c4c3ba89999a68913d75661edcb2575dc82c3fd5", + "CLIFFORD-REVIEW.json": "eb3faa13140f94c1c2ee6c8980b1a1b0102446305b332ff542669ba3c6ec580d", + "INDEPENDENT-LOCAL-REPLAY.json": "4a722ad72cc10ea6554c03b1ca1663df0d67338973370be0958d229e0e883733", + "LOCAL-CHECKS.json": "63e07b00e88547a5cd0f9ccb1f667646e31eec3ba68e085c603156fc1781864e", + "LOCAL-PROGRAMS.json.gz": "7c568285cd4f17e05ab8d013c8c66a861299c21d05a6552eaaddd37d6593c696", + "RESIDUAL-ADAPTERS.json": "618ffc04835a10fc9aad89b6ec2b796eea14d0638f3291ee7e1fe8f0e5984f9b" + }, + "terminal_codimension": 46, + "v": 112, + "width_inventory": { + "4": 48, + "5": 8, + "7": 78, + "8": 94, + "9": 276 + }, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + "semantic_phase_sha256": "eb3faa13140f94c1c2ee6c8980b1a1b0102446305b332ff542669ba3c6ec580d", + "expected_local": { + "forward": { + "coefficient_work_primitive_count": 79640, + "events": 21560, + "macros": 16258, + "prefix_l1": "88876257700", + "real_component_primitives": 160840 + }, + "backward": { + "coefficient_work_primitive_count": 79672, + "events": 21560, + "macros": 16258, + "prefix_l1": "1044730572630", + "real_component_primitives": 160888 + } + }, + "wrappers": 228 + }, + "ck": { + "inventory": { + "4": 8, + "5": 48, + "7": 78, + "8": 94, + "9": 276 + }, + "native_negative_controls": 18, + "phase_edges": 3040, + "expected_profile": { + "1": 2534, + "2": 488, + "3": 328, + "4": 184, + "5": 56, + "6": 56, + "8": 8 + }, + "artifact_semantic_sha256": { + "CANONICAL-WORD.json.gz": "38d4509d451073a4a6e1dc6509d541667a4b7e32862f8eaa17275d948a7127ca", + "CLIFFORD-RECIPES.json": "395ff116b7214c826e1f9ba3affe44f6b5bf82b3c18d8ddcc6617f5515007b92", + "CLIFFORD-REVIEW.json": "43ef489959df90ad8c6ed9ef8bd98d4753d235a8e38d7c37bb85990c383eba0d", + "INDEPENDENT-LOCAL-REPLAY.json": "20d1275ac700a20a98078571547a8a6ce6e2bccbbc673edf41e8db8bd7f84ca9", + "LOCAL-CHECKS.json": "18b507b213bda15c22eb176dc0ed7a77fba810e84c9241da12453df76f94e677", + "LOCAL-PROGRAMS.json.gz": "662ecf2095aee5de0b71d97104a702c376d2e09c0575fc92d1a1a8c39ad71421", + "RESIDUAL-ADAPTERS.json": "6d44c6482a7bbcb4ca0460dbc5d79caa580d1858f43a6f3731207e23d8134d22" + }, + "entering": 228, + "entrance": 436, + "width_digest": "48cef57690af124ef5b5fe4bc41ed3e796f33ed94a02b2b613644583e05493f0", + "program_hashes": { + "backward": "433a8224b14c9963f14de984a3ed520f50537fe28cd4da60b700e7eecbe22ad7", + "forward": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + "artifacts": { + "LOCAL-CHECKS.json": "49956970ee3aa3924f6ffd742bc55ff0a608bfdd0c243788e53d750615311b7a", + "CLIFFORD-RECIPES.json": "395ff116b7214c826e1f9ba3affe44f6b5bf82b3c18d8ddcc6617f5515007b92", + "RESIDUAL-ADAPTERS.json": "5c682ab693b041fbf3846afd054a1d7dd2ff2b9108f8310f72b601d2d119a18b" + }, + "complete_contract": { + "centres": 8, + "children": 3654, + "compiler": 25934336, + "entering_helpers": 228, + "entrance_rank": 436, + "h": 9, + "helpers": 504, + "hyperplane_ended_helpers": 46, + "local": { + "backward": { + "all_dirty_helper_columns_restored": true, + "all_exact_columns": 728, + "coefficient_work_primitive_count": 79672, + "dirty_helper_columns": 504, + "endpoint_evidence": "Hash-bound fresh INDEPENDENT-LOCAL-REPLAY.json", + "events": 21560, + "macros": 16258, + "post_wrappers": 228, + "pre_wrappers": 228, + "prefix_bits": 40, + "prefix_l1": "1044730572630", + "private_centres_and_coefficient_work_cleared": true, + "real_component_primitives": 160888 + }, + "forward": { + "all_dirty_helper_columns_restored": true, + "all_exact_columns": 728, + "coefficient_work_primitive_count": 79640, + "dirty_helper_columns": 504, + "endpoint_evidence": "Hash-bound fresh INDEPENDENT-LOCAL-REPLAY.json", + "events": 21560, + "macros": 16258, + "post_wrappers": 228, + "pre_wrappers": 228, + "prefix_bits": 37, + "prefix_l1": "88876257700", + "private_centres_and_coefficient_work_cleared": true, + "real_component_primitives": 160840 + } + }, + "local_adapters": 335040, + "local_primitive_bound": 8689040094328, + "n": 728, + "paid_profile": { + "1": 2534, + "2": 488, + "3": 328, + "4": 184, + "5": 56, + "6": 56, + "8": 8 + }, + "program_hashes": { + "backward": "433a8224b14c9963f14de984a3ed520f50537fe28cd4da60b700e7eecbe22ad7", + "forward": "cff18ba448e3c3823f53198d1bc6657ca749e47135e38c92538be8d8d25ec081" + }, + "semantic_artifact_sha256": { + "CANONICAL-WORD.json.gz": "38d4509d451073a4a6e1dc6509d541667a4b7e32862f8eaa17275d948a7127ca", + "CLIFFORD-RECIPES.json": "395ff116b7214c826e1f9ba3affe44f6b5bf82b3c18d8ddcc6617f5515007b92", + "CLIFFORD-REVIEW.json": "43ef489959df90ad8c6ed9ef8bd98d4753d235a8e38d7c37bb85990c383eba0d", + "INDEPENDENT-LOCAL-REPLAY.json": "20d1275ac700a20a98078571547a8a6ce6e2bccbbc673edf41e8db8bd7f84ca9", + "LOCAL-CHECKS.json": "18b507b213bda15c22eb176dc0ed7a77fba810e84c9241da12453df76f94e677", + "LOCAL-PROGRAMS.json.gz": "662ecf2095aee5de0b71d97104a702c376d2e09c0575fc92d1a1a8c39ad71421", + "RESIDUAL-ADAPTERS.json": "6d44c6482a7bbcb4ca0460dbc5d79caa580d1858f43a6f3731207e23d8134d22" + }, + "terminal_codimension": 46, + "v": 112, + "width_inventory": { + "4": 8, + "5": 48, + "7": 78, + "8": 94, + "9": 276 + }, + "widths": [ + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 7, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 8, + 8, + 7, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 9, + 9, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 9, + 9, + 7, + 7, + 9, + 8, + 9, + 8, + 8, + 9, + 8, + 9, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 4, + 8, + 4, + 4, + 4, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5, + 8, + 8, + 8, + 5, + 8, + 5, + 5, + 5 + ] + }, + "semantic_phase_sha256": "43ef489959df90ad8c6ed9ef8bd98d4753d235a8e38d7c37bb85990c383eba0d", + "expected_local": { + "forward": { + "coefficient_work_primitive_count": 79640, + "events": 21560, + "macros": 16258, + "prefix_l1": "88876257700", + "real_component_primitives": 160840 + }, + "backward": { + "coefficient_work_primitive_count": 79672, + "events": 21560, + "macros": 16258, + "prefix_l1": "1044730572630", + "real_component_primitives": 160888 + } + }, + "wrappers": 228 + } + }, + "dispatch": [ + [ + 0, + 0, + "ck" + ], + [ + 0, + 1, + "ck" + ], + [ + 1, + 0, + "ck" + ], + [ + 0, + 2, + "ck" + ], + [ + 1, + 1, + "ck" + ], + [ + 2, + 0, + "ck" + ], + [ + 0, + 3, + "ck" + ], + [ + 1, + 2, + "ck" + ], + [ + 2, + 1, + "ck" + ], + [ + 3, + 0, + "ck" + ], + [ + 0, + 4, + "ck" + ], + [ + 1, + 3, + "ck" + ], + [ + 2, + 2, + "ck" + ], + [ + 3, + 1, + "ck" + ], + [ + 4, + 0, + "ck" + ], + [ + 0, + 5, + "ck" + ], + [ + 1, + 4, + "atm3" + ], + [ + 2, + 3, + "ck" + ], + [ + 3, + 2, + "ck" + ], + [ + 4, + 1, + "atm3" + ], + [ + 5, + 0, + "atm3" + ], + [ + 0, + 6, + "ck" + ], + [ + 1, + 5, + "atm3" + ], + [ + 2, + 4, + "ck" + ], + [ + 3, + 3, + "ck" + ], + [ + 4, + 2, + "ck" + ], + [ + 5, + 1, + "atm3" + ], + [ + 0, + 7, + "atm3" + ], + [ + 6, + 0, + "ck" + ], + [ + 1, + 6, + "ck" + ], + [ + 2, + 5, + "ck" + ], + [ + 3, + 4, + "ck" + ], + [ + 4, + 3, + "ck" + ], + [ + 5, + 2, + "atm3" + ], + [ + 6, + 1, + "ck" + ], + [ + 1, + 7, + "atm3" + ], + [ + 7, + 0, + "ck" + ], + [ + 2, + 6, + "ck" + ], + [ + 3, + 5, + "ck" + ], + [ + 4, + 4, + "atm3" + ], + [ + 5, + 3, + "ck" + ], + [ + 6, + 2, + "atm3" + ], + [ + 7, + 1, + "ck" + ], + [ + 2, + 7, + "ck" + ], + [ + 8, + 0, + "ck" + ], + [ + 3, + 6, + "ck" + ], + [ + 4, + 5, + "ck" + ], + [ + 5, + 4, + "atm3" + ], + [ + 6, + 3, + "atm3" + ], + [ + 7, + 2, + "ck" + ], + [ + 8, + 1, + "ck" + ], + [ + 3, + 7, + "ck" + ], + [ + 4, + 6, + "ck" + ], + [ + 5, + 5, + "ck" + ], + [ + 6, + 4, + "ck" + ], + [ + 7, + 3, + "ck" + ], + [ + 8, + 2, + "atm3" + ], + [ + 4, + 7, + "atm3" + ], + [ + 5, + 6, + "atm3" + ], + [ + 6, + 5, + "ck" + ], + [ + 7, + 4, + "ck" + ], + [ + 8, + 3, + "ck" + ], + [ + 5, + 7, + "ck" + ], + [ + 6, + 6, + "ck" + ], + [ + 7, + 5, + "atm3" + ], + [ + 8, + 4, + "ck" + ], + [ + 6, + 7, + "ck" + ], + [ + 7, + 6, + "atm3" + ], + [ + 8, + 5, + "atm3" + ], + [ + 7, + 7, + "ck" + ], + [ + 8, + 6, + "atm3" + ], + [ + 8, + 7, + "ck" + ] + ], + "call_order": [ + [ + 0, + 0 + ], + [ + 0, + 1 + ], + [ + 1, + 0 + ], + [ + 0, + 2 + ], + [ + 1, + 1 + ], + [ + 2, + 0 + ], + [ + 0, + 3 + ], + [ + 1, + 2 + ], + [ + 2, + 1 + ], + [ + 3, + 0 + ], + [ + 0, + 4 + ], + [ + 1, + 3 + ], + [ + 2, + 2 + ], + [ + 3, + 1 + ], + [ + 4, + 0 + ], + [ + 0, + 5 + ], + [ + 1, + 4 + ], + [ + 2, + 3 + ], + [ + 3, + 2 + ], + [ + 4, + 1 + ], + [ + 5, + 0 + ], + [ + 0, + 6 + ], + [ + 1, + 5 + ], + [ + 2, + 4 + ], + [ + 3, + 3 + ], + [ + 4, + 2 + ], + [ + 5, + 1 + ], + [ + 0, + 7 + ], + [ + 6, + 0 + ], + [ + 1, + 6 + ], + [ + 2, + 5 + ], + [ + 3, + 4 + ], + [ + 4, + 3 + ], + [ + 5, + 2 + ], + [ + 6, + 1 + ], + [ + 1, + 7 + ], + [ + 7, + 0 + ], + [ + 2, + 6 + ], + [ + 3, + 5 + ], + [ + 4, + 4 + ], + [ + 5, + 3 + ], + [ + 6, + 2 + ], + [ + 7, + 1 + ], + [ + 2, + 7 + ], + [ + 8, + 0 + ], + [ + 3, + 6 + ], + [ + 4, + 5 + ], + [ + 5, + 4 + ], + [ + 6, + 3 + ], + [ + 7, + 2 + ], + [ + 8, + 1 + ], + [ + 3, + 7 + ], + [ + 4, + 6 + ], + [ + 5, + 5 + ], + [ + 6, + 4 + ], + [ + 7, + 3 + ], + [ + 8, + 2 + ], + [ + 4, + 7 + ], + [ + 5, + 6 + ], + [ + 6, + 5 + ], + [ + 7, + 4 + ], + [ + 8, + 3 + ], + [ + 5, + 7 + ], + [ + 6, + 6 + ], + [ + 7, + 5 + ], + [ + 8, + 4 + ], + [ + 6, + 7 + ], + [ + 7, + 6 + ], + [ + 8, + 5 + ], + [ + 7, + 7 + ], + [ + 8, + 6 + ], + [ + 8, + 7 + ] + ], + "expected": { + "hosted_residuals": 36288, + "rank_mass": 520704, + "actual_73column_sigmas": 8022, + "cross_replica_helper_roles": 28748, + "idle_remainders": 2184, + "idle_remainder_profile": { + "25": 1, + "3": 197, + "48": 1986 + }, + "global_profile": { + "1": 183968, + "2": 33616, + "25": 1, + "3": 23053, + "4": 14008, + "48": 1986, + "5": 4032, + "6": 4032, + "8": 576 + }, + "live": 7168, + "physical": 7682, + "conservative_kappa_decimal": "0.001613569607722207", + "kappa_decimal": "0.001613569610580215", + "assembly_controls_rejected": 114, + "gain_baseline_kappa": "0.001601260169988325", + "provider_counts": { + "ck": 53, + "atm3": 19 + }, + "mutations_rejected": 23, + "owners_per_call": 728, + "deficit": 2560, + "kappa": "322713922116043/200000000000000000", + "complex_lower": "101011089084942512869/62500000000000000000000", + "conservative_complex_lower": "1616177422491826820597/1000000000000000000000000", + "entering_helper_roles": 16416 + }, + "build": { + "status": "PASS_HPE46_NATIVE_COMPLEX_AND_CITED_BIT", + "sources": { + "multicold": { + "dir": "complex-multicold", + "pr": 568, + "commit": "71c99ac935a33bb7b59a1b4a7af8725a939b0b90", + "manifest_sha256": "328ce8023d33deb308b0f1ae2320424050f836d791cf60a613ae8408e7d6f3ab", + "full_tree": true, + "files": { + "data/EIGHT-COLD.json": "089617bdc33fd9f27b7fc8e9ae9e01c8e65a86a57c4b6f180f4f378f3f0e6160", + "data/EIGHT-MULTICOLD.json": "d18ea59995d384833c95a7a55d8167f83439b6881a524ab03df972ede3e0d7b9" + } + }, + "structural_gain": { + "dir": "structural-gain", + "pr": 571, + "commit": "b7bdc5a8de18fcf418cfb9c7d83a2b1097a5e4a3", + "manifest_sha256": "eb0499a927665a48a25355075dcb7dc76d0fc43c67ea6d311d9e0242b6d4a25d", + "full_tree": false, + "files": { + "frontier-composition/combined-prefix-word/FULL-WORD.json.gz": "a6cd88224427bad6d00b6fbe1d201a2c09e496c90e2cecdc04d7f2ff11a4ba42" + } + }, + "larger_gain": { + "dir": "larger-gain", + "pr": 569, + "commit": "897213a855b7fb8a1b8b0e552a2f5c42e6c1b326", + "manifest_sha256": "54d67f45ad520f4a134e069336bd0ff639aaeada28d13539298e4f2655c9692d", + "full_tree": false, + "files": { + "providers/build_entrance_promotions.py": "50737e20553b5d44381c58e5b35b5031a6797dfdda1c67a1656069f1f6203cd2", + "providers/coupled_frames_base.py": "b6033cd2959297a624b557f3d04665c8fbb680a4c0987daf0704ef93711700bd", + "providers/search_suffix_kernels.py": "0523c90f036ff01cac9299fe4e47dc40dd04f264f09415985d2c98b4da43371c" + } + }, + "joint_prefix": { + "dir": "complex-joint-prefix", + "pr": 575, + "commit": "eac6f7e378ab622dac50a2fd4b7ef6eab014de44", + "manifest_sha256": "fd30701bd9bd652985db18fa95bee08a34615ef417a2feb2f55efd60a0b5d665", + "full_tree": false, + "files": { + "code/audit_joint_prefix.py": "c01836709f3650a39c46418ac1771980b4b96288e60b51032b5d31419e484c37", + "code/audit_multicold_controls.py": "3ff631f0bdc7e707d4296ff441802cc26da9c6556650469f09ab7253558b4017", + "code/build_joint_prefix.py": "d7804669e528b6fd8d80195a4a2e76efac9bc67440b82c73973f4bc9fe273783", + "data/EIGHTCOLD-JOINT-KERNELS.json": "0381935d8d162eb48044bdf7e36a42af761f6d4032509b9b397ca02d3134f585", + "data/JOINT-PREFIX.json": "0fddbd3f482b72a5197eacd75abe192e1d92f83aa2cde33a76dbc7be1682bcf2" + } + }, + "frame_coalescing": { + "dir": "kernel-frame-coalescing", + "pr": 583, + "commit": "89be768f0157f5a3d8e4db69cf1748768605eac9", + "manifest_sha256": "f336fd702c54422d79c1b9ba7d8699ae6c99518f66a5b5bbc5f3be331fa1fadd", + "full_tree": false, + "files": { + "code/build_frames.py": "59f486c52293c76f1f6140c5f12f7a555a956b455e853c79136fc227deefbc3d" + } + } + }, + "providers": { + "atm3": { + "base": { + "kind": "source_file", + "file": "structural_gain:frontier-composition/combined-prefix-word/FULL-WORD.json.gz", + "content_sha256": "500f005d9cec374f15e086d374578cc8f2c252f9c30444a62d46f2969370a2c6" + }, + "steps": [ + { + "type": "promote", + "recipe": "pkg:data/recipes/atm3-step0-promote.json", + "input_content_sha256": "500f005d9cec374f15e086d374578cc8f2c252f9c30444a62d46f2969370a2c6", + "recipe_sha256": "9a7cafdf9b600ba43985c83969b75151f665b98f454afc1494b9f9ef3dd3916f", + "omission_controls": 4, + "output_content_sha256": "b672a8f4151a23fd420c7622fc127fb6c7f14564bb6cf93edfbd7aecbc38e1f9" + }, + { + "type": "greedy_kernels", + "recipe": "pkg:data/recipes/atm3-step1-greedy_kernels.json", + "input_content_sha256": "b672a8f4151a23fd420c7622fc127fb6c7f14564bb6cf93edfbd7aecbc38e1f9", + "recipe_sha256": "c4bc67f329fc22e226f26bbbf7e67018a639823d99fccfc5a1e798a7a82db43f", + "omission_controls": 48, + "output_content_sha256": "8de156284cde6d475f9ef679d43ef52e9aa57a62fc3a2f554655131396c64236" + }, + { + "type": "frame_coalesce", + "recipe": "pkg:data/recipes/atm3-step2-frame_coalesce.json", + "input_content_sha256": "8de156284cde6d475f9ef679d43ef52e9aa57a62fc3a2f554655131396c64236", + "recipe_sha256": "e6d7ea259a542f2b43a857998f677db4d68f8f36335e98a030bc91ab38ce758c", + "negative_controls": 12, + "output_content_sha256": "dffa3c643b522b524a79220c71aa15be9ee10134b3d597c293c643f6a543d472" + }, + { + "type": "gate_move_coalesce", + "recipe": "pkg:data/recipes/atm3-step3-gate_move_coalesce.json", + "input_content_sha256": "dffa3c643b522b524a79220c71aa15be9ee10134b3d597c293c643f6a543d472", + "recipe_sha256": "3a6b8fec6c8b56a45bf8fae683083636fa295a8914ffa68d11b1f78ba3a2eb9d", + "negative_controls": 6, + "output_content_sha256": "f3f56a044177e0d4e3c0a8d47ce8d7ae90ad3332935d0c7dfb6b8cf28e290df4" + }, + { + "type": "hyperplane_end_closure", + "recipe": "pkg:data/recipes/atm3-step4-hyperplane_end_closure.json", + "input_content_sha256": "f3f56a044177e0d4e3c0a8d47ce8d7ae90ad3332935d0c7dfb6b8cf28e290df4", + "recipe_sha256": "3f5c614b207732d938af375e8d6809c4a9ef061a55bb5e6d478e212bf122a35d", + "negative_controls": 8, + "hyperplane_ended_helpers": 46, + "output_content_sha256": "f4e2feef063058d8a4c51b43cb5cc479dbbd9d746c24abfaf37f3bf0178c140f" + } + ], + "word_content_sha256": "f4e2feef063058d8a4c51b43cb5cc479dbbd9d746c24abfaf37f3bf0178c140f" + }, + "ck": { + "base": { + "kind": "source_file", + "file": "structural_gain:frontier-composition/combined-prefix-word/FULL-WORD.json.gz", + "content_sha256": "500f005d9cec374f15e086d374578cc8f2c252f9c30444a62d46f2969370a2c6" + }, + "steps": [ + { + "type": "greedy_kernels", + "recipe": "pkg:data/recipes/ck-step0-greedy_kernels.json", + "input_content_sha256": "500f005d9cec374f15e086d374578cc8f2c252f9c30444a62d46f2969370a2c6", + "recipe_sha256": "c839199d0e6f8e976978fe97bc0c5579a65ba69dfb6864585b448cccc1113056", + "omission_controls": 48, + "output_content_sha256": "11afa6986e37fd10adda3453d6e55a7353302c9597b93807916a2e5f808e259b" + }, + { + "type": "frame_coalesce", + "recipe": "pkg:data/recipes/ck-step1-frame_coalesce.json", + "input_content_sha256": "11afa6986e37fd10adda3453d6e55a7353302c9597b93807916a2e5f808e259b", + "recipe_sha256": "0c8e5991e1338f03b837814dd060d4dd598c324e3538ee510913e0444a384ee3", + "negative_controls": 12, + "output_content_sha256": "fac4ead822d8d18e441820f9ca87efeb1866414bb0b82817c6cce4655dc59269" + }, + { + "type": "gate_move_coalesce", + "recipe": "pkg:data/recipes/ck-step2-gate_move_coalesce.json", + "input_content_sha256": "fac4ead822d8d18e441820f9ca87efeb1866414bb0b82817c6cce4655dc59269", + "recipe_sha256": "1f5b62c76915b1b8bbcf63b42dcbd87a536c34d3721c4a9b68e651404717bf00", + "negative_controls": 6, + "output_content_sha256": "efddf09daea03240f09f4b820704b07f53782a153e7dff154dbe7406e69cfb0b" + }, + { + "type": "hyperplane_end_closure", + "recipe": "pkg:data/recipes/ck-step3-hyperplane_end_closure.json", + "input_content_sha256": "efddf09daea03240f09f4b820704b07f53782a153e7dff154dbe7406e69cfb0b", + "recipe_sha256": "7c1c88f7d1b3c53dd19d8a01b95434aeade114459fbc377e6706244d6a13bccc", + "negative_controls": 8, + "hyperplane_ended_helpers": 46, + "output_content_sha256": "6620b0a4a40afb4c424749af3f7525afb18e386700d82a88edca8ab7d6c9c3e8" + } + ], + "word_content_sha256": "6620b0a4a40afb4c424749af3f7525afb18e386700d82a88edca8ab7d6c9c3e8" + } + } + } +} \ No newline at end of file diff --git a/research/complex-571-hpe46/data/recipes/atm3-step0-promote.json b/research/complex-571-hpe46/data/recipes/atm3-step0-promote.json new file mode 100644 index 0000000000..1f078bea4f --- /dev/null +++ b/research/complex-571-hpe46/data/recipes/atm3-step0-promote.json @@ -0,0 +1 @@ +[{"pivot": 627, "old_frame": [408, 80, 40, 6], "new_frame": [408, 80, 40, 6, 1], "width_before": 5, "width_after": 4, "changed_gates": 12, "profile_delta": {"1": 11, "2": -8, "3": -4, "4": 4}, "local_entropy_delta": -2.0929925750581937, "optimistic_entropy_gain": 2.7782084358496975}, {"pivot": 629, "old_frame": [408, 80, 40, 6], "new_frame": [408, 80, 40, 6, 1], "width_before": 5, "width_after": 4, "changed_gates": 9, "profile_delta": {"1": 12, "2": -7, "3": -1, "4": 1}, "local_entropy_delta": -7.454719949364001, "optimistic_entropy_gain": -2.5835189384561095}, {"pivot": 630, "old_frame": [408, 80, 40, 6], "new_frame": [408, 80, 40, 6, 1], "width_before": 5, "width_after": 4, "changed_gates": 5, "profile_delta": {"1": 9, "2": -5}, "local_entropy_delta": -6.931471805599453, "optimistic_entropy_gain": -2.060270794691562}, {"pivot": 631, "old_frame": [408, 80, 40, 6], "new_frame": [408, 80, 40, 6, 1], "width_before": 5, "width_after": 4, "changed_gates": 3, "profile_delta": {"1": 7, "2": -4}, "local_entropy_delta": -5.545177444479562, "optimistic_entropy_gain": -0.6739764335716711}, {"pivot": 635, "old_frame": [272, 144, 96, 6], "new_frame": [272, 144, 96, 6, 1], "width_before": 5, "width_after": 4, "changed_gates": 12, "profile_delta": {"1": 11, "2": -8, "3": -4, "4": 4}, "local_entropy_delta": -2.0929925750581937, "optimistic_entropy_gain": 2.7782084358496975}, {"pivot": 637, "old_frame": [272, 144, 96, 6], "new_frame": [272, 144, 96, 6, 1], "width_before": 5, "width_after": 4, "changed_gates": 9, "profile_delta": {"1": 12, "2": -7, "3": -1, "4": 1}, "local_entropy_delta": -7.454719949364001, "optimistic_entropy_gain": -2.5835189384561095}, {"pivot": 638, "old_frame": [272, 144, 96, 6], "new_frame": [272, 144, 96, 6, 1], "width_before": 5, "width_after": 4, "changed_gates": 5, "profile_delta": {"1": 9, "2": -5}, "local_entropy_delta": -6.931471805599453, "optimistic_entropy_gain": -2.060270794691562}, {"pivot": 639, "old_frame": [272, 144, 96, 6], "new_frame": [272, 144, 96, 6, 1], "width_before": 5, "width_after": 4, "changed_gates": 3, "profile_delta": {"1": 7, "2": -4}, "local_entropy_delta": -5.545177444479562, "optimistic_entropy_gain": -0.6739764335716711}, {"pivot": 651, "old_frame": [390, 68, 34, 24], "new_frame": [390, 68, 34, 24, 1], "width_before": 5, "width_after": 4, "changed_gates": 12, "profile_delta": {"1": 11, "2": -8, "3": -4, "4": 4}, "local_entropy_delta": -2.0929925750581937, "optimistic_entropy_gain": 2.7782084358496975}, {"pivot": 653, "old_frame": [390, 68, 34, 24], "new_frame": [390, 68, 34, 24, 1], "width_before": 5, "width_after": 4, "changed_gates": 9, "profile_delta": {"1": 12, "2": -7, "3": -1, "4": 1}, "local_entropy_delta": -7.454719949364001, "optimistic_entropy_gain": -2.5835189384561095}, {"pivot": 654, "old_frame": [390, 68, 34, 24], "new_frame": [390, 68, 34, 24, 1], "width_before": 5, "width_after": 4, "changed_gates": 5, "profile_delta": {"1": 9, "2": -5}, "local_entropy_delta": -6.931471805599453, "optimistic_entropy_gain": -2.060270794691562}, {"pivot": 655, "old_frame": [390, 68, 34, 24], "new_frame": [390, 68, 34, 24, 1], "width_before": 5, "width_after": 4, "changed_gates": 3, "profile_delta": {"1": 7, "2": -4}, "local_entropy_delta": -5.545177444479562, "optimistic_entropy_gain": -0.6739764335716711}, {"pivot": 659, "old_frame": [298, 170, 102, 30], "new_frame": [298, 170, 102, 30, 1], "width_before": 5, "width_after": 4, "changed_gates": 12, "profile_delta": {"1": 11, "2": -8, "3": -4, "4": 4}, "local_entropy_delta": -2.0929925750581937, "optimistic_entropy_gain": 2.7782084358496975}, {"pivot": 661, "old_frame": [298, 170, 102, 30], "new_frame": [298, 170, 102, 30, 1], "width_before": 5, "width_after": 4, "changed_gates": 9, "profile_delta": {"1": 12, "2": -7, "3": -1, "4": 1}, "local_entropy_delta": -7.454719949364001, "optimistic_entropy_gain": -2.5835189384561095}, {"pivot": 662, "old_frame": [298, 170, 102, 30], "new_frame": [298, 170, 102, 30, 1], "width_before": 5, "width_after": 4, "changed_gates": 5, "profile_delta": {"1": 9, "2": -5}, "local_entropy_delta": -6.931471805599453, "optimistic_entropy_gain": -2.060270794691562}, {"pivot": 663, "old_frame": [298, 170, 102, 30], "new_frame": [298, 170, 102, 30, 1], "width_before": 5, "width_after": 4, "changed_gates": 3, "profile_delta": {"1": 7, "2": -4}, "local_entropy_delta": -5.545177444479562, "optimistic_entropy_gain": -0.6739764335716711}, {"pivot": 667, "old_frame": [390, 96, 20, 10], "new_frame": [390, 96, 20, 10, 1], "width_before": 5, "width_after": 4, "changed_gates": 12, "profile_delta": {"1": 11, "2": -8, "3": -4, "4": 4}, "local_entropy_delta": -2.0929925750581937, "optimistic_entropy_gain": 2.7782084358496975}, {"pivot": 669, "old_frame": [390, 96, 20, 10], "new_frame": [390, 96, 20, 10, 1], "width_before": 5, "width_after": 4, "changed_gates": 9, "profile_delta": {"1": 12, "2": -7, "3": -1, "4": 1}, "local_entropy_delta": -7.454719949364001, "optimistic_entropy_gain": -2.5835189384561095}, {"pivot": 670, "old_frame": [390, 96, 20, 10], "new_frame": [390, 96, 20, 10, 1], "width_before": 5, "width_after": 4, "changed_gates": 5, "profile_delta": {"1": 9, "2": -5}, "local_entropy_delta": -6.931471805599453, "optimistic_entropy_gain": -2.060270794691562}, {"pivot": 671, "old_frame": [390, 96, 20, 10], "new_frame": [390, 96, 20, 10, 1], "width_before": 5, "width_after": 4, "changed_gates": 3, "profile_delta": {"1": 7, "2": -4}, "local_entropy_delta": -5.545177444479562, "optimistic_entropy_gain": -0.6739764335716711}, {"pivot": 683, "old_frame": [390, 75, 45, 30], "new_frame": [385, 75, 42, 25, 7], "width_before": 5, "width_after": 4, "changed_gates": 12, "profile_delta": {"1": 11, "2": -8, "3": -4, "4": 4}, "local_entropy_delta": -2.0929925750581937, "optimistic_entropy_gain": 2.7782084358496975}, {"pivot": 685, "old_frame": [390, 75, 45, 30], "new_frame": [385, 75, 42, 25, 7], "width_before": 5, "width_after": 4, "changed_gates": 9, "profile_delta": {"1": 12, "2": -7, "3": -1, "4": 1}, "local_entropy_delta": -7.454719949364001, "optimistic_entropy_gain": -2.5835189384561095}, {"pivot": 686, "old_frame": [390, 75, 45, 30], "new_frame": [385, 75, 42, 25, 7], "width_before": 5, "width_after": 4, "changed_gates": 5, "profile_delta": {"1": 9, "2": -5}, "local_entropy_delta": -6.931471805599453, "optimistic_entropy_gain": -2.060270794691562}, {"pivot": 687, "old_frame": [390, 75, 45, 30], "new_frame": [385, 75, 42, 25, 7], "width_before": 5, "width_after": 4, "changed_gates": 3, "profile_delta": {"1": 7, "2": -4}, "local_entropy_delta": -5.545177444479562, "optimistic_entropy_gain": -0.6739764335716711}, {"pivot": 691, "old_frame": [291, 163, 102, 24], "new_frame": [291, 163, 97, 24, 7], "width_before": 5, "width_after": 4, "changed_gates": 12, "profile_delta": {"1": 11, "2": -8, "3": -4, "4": 4}, "local_entropy_delta": -2.0929925750581937, "optimistic_entropy_gain": 2.7782084358496975}, {"pivot": 693, "old_frame": [291, 163, 102, 24], "new_frame": [291, 163, 97, 24, 7], "width_before": 5, "width_after": 4, "changed_gates": 9, "profile_delta": {"1": 12, "2": -7, "3": -1, "4": 1}, "local_entropy_delta": -7.454719949364001, "optimistic_entropy_gain": -2.5835189384561095}, {"pivot": 694, "old_frame": [291, 163, 102, 24], "new_frame": [291, 163, 97, 24, 7], "width_before": 5, "width_after": 4, "changed_gates": 5, "profile_delta": {"1": 9, "2": -5}, "local_entropy_delta": -6.931471805599453, "optimistic_entropy_gain": -2.060270794691562}, {"pivot": 695, "old_frame": [291, 163, 102, 24], "new_frame": [291, 163, 97, 24, 7], "width_before": 5, "width_after": 4, "changed_gates": 3, "profile_delta": {"1": 7, "2": -4}, "local_entropy_delta": -5.545177444479562, "optimistic_entropy_gain": -0.6739764335716711}, {"pivot": 699, "old_frame": [389, 96, 24, 3], "new_frame": [385, 96, 24, 4, 3], "width_before": 5, "width_after": 4, "changed_gates": 12, "profile_delta": {"1": 11, "2": -8, "3": -4, "4": 4}, "local_entropy_delta": -2.0929925750581937, "optimistic_entropy_gain": 2.7782084358496975}, {"pivot": 701, "old_frame": [389, 96, 24, 3], "new_frame": [385, 96, 24, 4, 3], "width_before": 5, "width_after": 4, "changed_gates": 9, "profile_delta": {"1": 12, "2": -7, "3": -1, "4": 1}, "local_entropy_delta": -7.454719949364001, "optimistic_entropy_gain": -2.5835189384561095}, {"pivot": 702, "old_frame": [389, 96, 24, 3], "new_frame": [385, 96, 24, 4, 3], "width_before": 5, "width_after": 4, "changed_gates": 5, "profile_delta": {"1": 9, "2": -5}, "local_entropy_delta": -6.931471805599453, "optimistic_entropy_gain": -2.060270794691562}, {"pivot": 703, "old_frame": [389, 96, 24, 3], "new_frame": [385, 96, 24, 4, 3], "width_before": 5, "width_after": 4, "changed_gates": 3, "profile_delta": {"1": 7, "2": -4}, "local_entropy_delta": -5.545177444479562, "optimistic_entropy_gain": -0.6739764335716711}, {"pivot": 707, "old_frame": [401, 96, 9, 6], "new_frame": [385, 96, 16, 9, 6], "width_before": 5, "width_after": 4, "changed_gates": 12, "profile_delta": {"1": 11, "2": -8, "3": -4, "4": 4}, "local_entropy_delta": -2.0929925750581937, "optimistic_entropy_gain": 2.7782084358496975}, {"pivot": 709, "old_frame": [401, 96, 9, 6], "new_frame": [385, 96, 16, 9, 6], "width_before": 5, "width_after": 4, "changed_gates": 9, "profile_delta": {"1": 12, "2": -7, "3": -1, "4": 1}, "local_entropy_delta": -7.454719949364001, "optimistic_entropy_gain": -2.5835189384561095}, {"pivot": 710, "old_frame": [401, 96, 9, 6], "new_frame": [385, 96, 16, 9, 6], "width_before": 5, "width_after": 4, "changed_gates": 5, "profile_delta": {"1": 9, "2": -5}, "local_entropy_delta": -6.931471805599453, "optimistic_entropy_gain": -2.060270794691562}, {"pivot": 711, "old_frame": [401, 96, 9, 6], "new_frame": [385, 96, 16, 9, 6], "width_before": 5, "width_after": 4, "changed_gates": 3, "profile_delta": {"1": 7, "2": -4}, "local_entropy_delta": -5.545177444479562, "optimistic_entropy_gain": -0.6739764335716711}, {"pivot": 715, "old_frame": [297, 169, 120, 6], "new_frame": [297, 169, 97, 25, 6], "width_before": 5, "width_after": 4, "changed_gates": 12, "profile_delta": {"1": 11, "2": -8, "3": -4, "4": 4}, "local_entropy_delta": -2.0929925750581937, "optimistic_entropy_gain": 2.7782084358496975}, {"pivot": 717, "old_frame": [297, 169, 120, 6], "new_frame": [297, 169, 97, 25, 6], "width_before": 5, "width_after": 4, "changed_gates": 9, "profile_delta": {"1": 12, "2": -7, "3": -1, "4": 1}, "local_entropy_delta": -7.454719949364001, "optimistic_entropy_gain": -2.5835189384561095}, {"pivot": 718, "old_frame": [297, 169, 120, 6], "new_frame": [297, 169, 97, 25, 6], "width_before": 5, "width_after": 4, "changed_gates": 5, "profile_delta": {"1": 9, "2": -5}, "local_entropy_delta": -6.931471805599453, "optimistic_entropy_gain": -2.060270794691562}, {"pivot": 719, "old_frame": [297, 169, 120, 6], "new_frame": [297, 169, 97, 25, 6], "width_before": 5, "width_after": 4, "changed_gates": 3, "profile_delta": {"1": 7, "2": -4}, "local_entropy_delta": -5.545177444479562, "optimistic_entropy_gain": -0.6739764335716711}] \ No newline at end of file diff --git a/research/complex-571-hpe46/data/recipes/atm3-step1-greedy_kernels.json b/research/complex-571-hpe46/data/recipes/atm3-step1-greedy_kernels.json new file mode 100644 index 0000000000..db3a406ee2 --- /dev/null +++ b/research/complex-571-hpe46/data/recipes/atm3-step1-greedy_kernels.json @@ -0,0 +1,561 @@ +{ + "input_content_sha256": "b672a8f4151a23fd420c7622fc127fb6c7f14564bb6cf93edfbd7aecbc38e1f9", + "output_content_sha256": "8de156284cde6d475f9ef679d43ef52e9aa57a62fc3a2f554655131396c64236", + "kernels": [ + { + "pivot": 462, + "frame": [ + 1 + ], + "gates": [ + { + "part": "A", + "index": 39, + "donor": 476, + "coefficient": "1", + "donor_state": [ + 476, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 40, + "donor": 477, + "coefficient": "1", + "donor_state": [ + 477, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 49, + "donor": 463, + "coefficient": "-1", + "donor_state": [ + 463, + 0 + ], + "split_donor": true + } + ], + "profile_delta": { + "1": 7, + "2": -4 + } + }, + { + "pivot": 464, + "frame": [ + 1 + ], + "gates": [ + { + "part": "A", + "index": 25, + "donor": 474, + "coefficient": "1", + "donor_state": [ + 474, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 26, + "donor": 475, + "coefficient": "1", + "donor_state": [ + 475, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 58, + "donor": 465, + "coefficient": "-1", + "donor_state": [ + 465, + 0 + ], + "split_donor": true + } + ], + "profile_delta": { + "1": 7, + "2": -4 + } + }, + { + "pivot": 466, + "frame": [ + 7 + ], + "gates": [ + { + "part": "A", + "index": 35, + "donor": 478, + "coefficient": "1", + "donor_state": [ + 478, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 36, + "donor": 479, + "coefficient": "1", + "donor_state": [ + 479, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 58, + "donor": 467, + "coefficient": "-1", + "donor_state": [ + 467, + 0 + ], + "split_donor": true + } + ], + "profile_delta": { + "1": 7, + "2": -4 + } + }, + { + "pivot": 468, + "frame": [ + 7 + ], + "gates": [ + { + "part": "A", + "index": 29, + "donor": 480, + "coefficient": "1", + "donor_state": [ + 480, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 30, + "donor": 481, + "coefficient": "1", + "donor_state": [ + 481, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 58, + "donor": 469, + "coefficient": "-1", + "donor_state": [ + 469, + 0 + ], + "split_donor": true + } + ], + "profile_delta": { + "1": 7, + "2": -4 + } + }, + { + "pivot": 490, + "frame": [ + 25 + ], + "gates": [ + { + "part": "A", + "index": 33, + "donor": 491, + "coefficient": "-1", + "donor_state": [ + 491, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 33, + "donor": 502, + "coefficient": "1", + "donor_state": [ + 502, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 33, + "donor": 503, + "coefficient": "1", + "donor_state": [ + 503, + 0 + ], + "split_donor": true + } + ], + "profile_delta": { + "1": 7, + "2": -4 + } + }, + { + "pivot": 492, + "frame": [ + 25 + ], + "gates": [ + { + "part": "A", + "index": 44, + "donor": 493, + "coefficient": "-1", + "donor_state": [ + 493, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 44, + "donor": 504, + "coefficient": "1", + "donor_state": [ + 504, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 44, + "donor": 505, + "coefficient": "1", + "donor_state": [ + 505, + 0 + ], + "split_donor": true + } + ], + "profile_delta": { + "1": 7, + "2": -4 + } + }, + { + "pivot": 514, + "frame": [ + 31 + ], + "gates": [ + { + "part": "A", + "index": 38, + "donor": 526, + "coefficient": "1", + "donor_state": [ + 526, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 39, + "donor": 527, + "coefficient": "1", + "donor_state": [ + 527, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 57, + "donor": 515, + "coefficient": "-1", + "donor_state": [ + 515, + 0 + ], + "split_donor": true + } + ], + "profile_delta": { + "1": 7, + "2": -4 + } + }, + { + "pivot": 516, + "frame": [ + 31 + ], + "gates": [ + { + "part": "A", + "index": 51, + "donor": 528, + "coefficient": "1", + "donor_state": [ + 528, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 52, + "donor": 529, + "coefficient": "1", + "donor_state": [ + 529, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 64, + "donor": 517, + "coefficient": "-1", + "donor_state": [ + 517, + 0 + ], + "split_donor": true + } + ], + "profile_delta": { + "1": 7, + "2": -4 + } + }, + { + "pivot": 510, + "frame": [ + 480 + ], + "gates": [ + { + "part": "B", + "index": 712, + "donor": 511, + "coefficient": "-1", + "donor_state": [ + 511, + 0 + ], + "split_donor": true + }, + { + "part": "B", + "index": 712, + "donor": 524, + "coefficient": "1", + "donor_state": [ + 524, + 0 + ], + "split_donor": true + }, + { + "part": "B", + "index": 712, + "donor": 525, + "coefficient": "1", + "donor_state": [ + 525, + 0 + ], + "split_donor": true + } + ], + "profile_delta": { + "1": 3, + "2": 4, + "3": -4 + } + }, + { + "pivot": 512, + "frame": [ + 480 + ], + "gates": [ + { + "part": "B", + "index": 717, + "donor": 513, + "coefficient": "-1", + "donor_state": [ + 513, + 0 + ], + "split_donor": true + }, + { + "part": "B", + "index": 717, + "donor": 522, + "coefficient": "1", + "donor_state": [ + 522, + 0 + ], + "split_donor": true + }, + { + "part": "B", + "index": 717, + "donor": 523, + "coefficient": "1", + "donor_state": [ + 523, + 0 + ], + "split_donor": true + } + ], + "profile_delta": { + "1": 3, + "2": 4, + "3": -4 + } + }, + { + "pivot": 586, + "frame": [ + 486 + ], + "gates": [ + { + "part": "B", + "index": 822, + "donor": 587, + "coefficient": "-1", + "donor_state": [ + 587, + 0 + ], + "split_donor": true + }, + { + "part": "B", + "index": 822, + "donor": 598, + "coefficient": "1", + "donor_state": [ + 598, + 0 + ], + "split_donor": true + }, + { + "part": "B", + "index": 822, + "donor": 599, + "coefficient": "1", + "donor_state": [ + 599, + 0 + ], + "split_donor": true + } + ], + "profile_delta": { + "1": 3, + "2": 4, + "3": -4 + } + }, + { + "pivot": 588, + "frame": [ + 486 + ], + "gates": [ + { + "part": "B", + "index": 827, + "donor": 589, + "coefficient": "-1", + "donor_state": [ + 589, + 0 + ], + "split_donor": true + }, + { + "part": "B", + "index": 827, + "donor": 600, + "coefficient": "1", + "donor_state": [ + 600, + 0 + ], + "split_donor": true + }, + { + "part": "B", + "index": 827, + "donor": 601, + "coefficient": "1", + "donor_state": [ + 601, + 0 + ], + "split_donor": true + } + ], + "profile_delta": { + "1": 3, + "2": 4, + "3": -4 + } + } + ], + "source": "coldk greedy (multi-cut, cand all, ranks [1, 2, 3], targets false, kmax 6) on w/A_t_m3/FULL-WORD.json.gz", + "final_local_profile": { + "1": 2500, + "2": 484, + "3": 280, + "4": 232, + "5": 56, + "6": 56, + "8": 8 + }, + "seconds": 0.5898449 +} diff --git a/research/complex-571-hpe46/data/recipes/atm3-step2-frame_coalesce.json b/research/complex-571-hpe46/data/recipes/atm3-step2-frame_coalesce.json new file mode 100644 index 0000000000..fb5e59269a --- /dev/null +++ b/research/complex-571-hpe46/data/recipes/atm3-step2-frame_coalesce.json @@ -0,0 +1,173 @@ +{ + "after": { + "1": 2488, + "2": 490, + "3": 280, + "4": 232, + "5": 56, + "6": 56, + "8": 8 + }, + "before": { + "1": 2500, + "2": 484, + "3": 280, + "4": 232, + "5": 56, + "6": 56, + "8": 8 + }, + "changes": [ + { + "after": [ + "add", + 465, + 464, + 1, + 1, + [ + 126, + 1 + ] + ], + "before": [ + "add", + 465, + 464, + 1, + 1, + [ + 1 + ] + ], + "index": 78, + "section": "A" + }, + { + "after": [ + "add", + 467, + 466, + 1, + 1, + [ + 121, + 7 + ] + ], + "before": [ + "add", + 467, + 466, + 1, + 1, + [ + 7 + ] + ], + "index": 75, + "section": "A" + }, + { + "after": [ + "add", + 469, + 468, + 1, + 1, + [ + 120, + 7 + ] + ], + "before": [ + "add", + 469, + 468, + 1, + 1, + [ + 7 + ] + ], + "index": 72, + "section": "A" + }, + { + "after": [ + "add", + 463, + 462, + 1, + 1, + [ + 120, + 1 + ] + ], + "before": [ + "add", + 463, + 462, + 1, + 1, + [ + 1 + ] + ], + "index": 69, + "section": "A" + }, + { + "after": [ + "add", + 517, + 516, + 1, + 1, + [ + 103, + 31 + ] + ], + "before": [ + "add", + 517, + 516, + 1, + 1, + [ + 31 + ] + ], + "index": 66, + "section": "A" + }, + { + "after": [ + "add", + 515, + 514, + 1, + 1, + [ + 102, + 31 + ] + ], + "before": [ + "add", + 515, + 514, + 1, + 1, + [ + 31 + ] + ], + "index": 61, + "section": "A" + } + ], + "input_content_sha256": "8de156284cde6d475f9ef679d43ef52e9aa57a62fc3a2f554655131396c64236" +} diff --git a/research/complex-571-hpe46/data/recipes/atm3-step3-gate_move_coalesce.json b/research/complex-571-hpe46/data/recipes/atm3-step3-gate_move_coalesce.json new file mode 100644 index 0000000000..ac941259cb --- /dev/null +++ b/research/complex-571-hpe46/data/recipes/atm3-step3-gate_move_coalesce.json @@ -0,0 +1,85 @@ +{ + "after": { + "1": 2484, + "2": 492, + "3": 280, + "4": 232, + "5": 56, + "6": 56, + "8": 8 + }, + "before": { + "1": 2488, + "2": 490, + "3": 280, + "4": 232, + "5": 56, + "6": 56, + "8": 8 + }, + "changes": [ + { + "after": [ + "add", + 491, + 490, + 1, + 1, + [ + 96, + 25 + ] + ], + "before": [ + "add", + 491, + 490, + 1, + 1, + [ + 25 + ] + ], + "index": 35, + "section": "A" + }, + { + "after": [ + "add", + 493, + 492, + 1, + 1, + [ + 97, + 25 + ] + ], + "before": [ + "add", + 493, + 492, + 1, + 1, + [ + 25 + ] + ], + "index": 48, + "section": "A" + } + ], + "input_content_sha256": "dffa3c643b522b524a79220c71aa15be9ee10134b3d597c293c643f6a543d472", + "moves": [ + { + "from": 33, + "section": "A", + "to": 35 + }, + { + "from": 46, + "section": "A", + "to": 48 + } + ] +} diff --git a/research/complex-571-hpe46/data/recipes/atm3-step4-hyperplane_end_closure.json b/research/complex-571-hpe46/data/recipes/atm3-step4-hyperplane_end_closure.json new file mode 100644 index 0000000000..1638f081c6 --- /dev/null +++ b/research/complex-571-hpe46/data/recipes/atm3-step4-hyperplane_end_closure.json @@ -0,0 +1,1113 @@ +{ + "helpers": [ + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 470, + 471, + 472, + 473, + 482, + 483, + 496, + 497, + 520, + 521, + 544, + 545, + 568, + 569, + 580, + 581, + 590, + 591, + 592, + 593, + 602, + 603, + 604, + 605, + 606, + 607, + 609, + 611, + 612, + 613, + 614, + 615 + ], + "early_cleanup": [ + [ + 448, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 449, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 450, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ], + [ + 451, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ], + [ + 452, + [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ] + ], + [ + 454, + [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ] + ], + [ + 456, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ], + [ + 457, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ], + [ + 458, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 459, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 464, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 465, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 474, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 475, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 480, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 481, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 496, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 497, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 512, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ], + [ + 513, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ], + [ + 544, + [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ] + ], + [ + 545, + [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ] + ], + [ + 578, + [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ] + ], + [ + 579, + [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ] + ], + [ + 620, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ], + [ + 621, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ], + [ + 643, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 644, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 653, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 654, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 659, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 660, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 669, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 670, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 675, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 676, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 677, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ], + [ + 678, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ], + [ + 679, + [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ] + ], + [ + 680, + [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ] + ], + [ + 681, + [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ] + ], + [ + 682, + [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ] + ], + [ + 683, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ], + [ + 684, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ], + [ + 685, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 686, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ] + ], + "helper_final": { + "448": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "449": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "450": [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ], + "451": [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ], + "452": [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ], + "453": [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ], + "454": [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ], + "455": [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ], + "456": [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ], + "457": [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ], + "458": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "459": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "460": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "461": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "470": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "471": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "472": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "473": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "482": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "483": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "496": [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ], + "497": [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ], + "520": [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ], + "521": [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ], + "544": [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ], + "545": [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ], + "568": [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ], + "569": [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ], + "580": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "581": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "590": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "591": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "592": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "593": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "602": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "603": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "604": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "605": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "606": [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ], + "607": [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ], + "609": [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ], + "611": [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ], + "612": [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ], + "613": [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ], + "614": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "615": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + }, + "output_content_sha256": "f4e2feef063058d8a4c51b43cb5cc479dbbd9d746c24abfaf37f3bf0178c140f" +} diff --git a/research/complex-571-hpe46/data/recipes/ck-step0-greedy_kernels.json b/research/complex-571-hpe46/data/recipes/ck-step0-greedy_kernels.json new file mode 100644 index 0000000000..89a4677766 --- /dev/null +++ b/research/complex-571-hpe46/data/recipes/ck-step0-greedy_kernels.json @@ -0,0 +1,550 @@ +{ + "input_content_sha256": "500f005d9cec374f15e086d374578cc8f2c252f9c30444a62d46f2969370a2c6", + "output_content_sha256": "11afa6986e37fd10adda3453d6e55a7353302c9597b93807916a2e5f808e259b", + "kernels": [ + { + "pivot": 462, + "frame": [ + 1 + ], + "gates": [ + { + "part": "A", + "index": 39, + "donor": 476, + "coefficient": "1", + "donor_state": [ + 476, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 40, + "donor": 477, + "coefficient": "1", + "donor_state": [ + 477, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 49, + "donor": 463, + "coefficient": "-1", + "donor_state": [ + 463, + 0 + ], + "split_donor": true + } + ], + "profile_delta": { + "1": 7, + "2": -4 + } + }, + { + "pivot": 464, + "frame": [ + 1 + ], + "gates": [ + { + "part": "A", + "index": 25, + "donor": 474, + "coefficient": "1", + "donor_state": [ + 474, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 26, + "donor": 475, + "coefficient": "1", + "donor_state": [ + 475, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 58, + "donor": 465, + "coefficient": "-1", + "donor_state": [ + 465, + 0 + ], + "split_donor": true + } + ], + "profile_delta": { + "1": 7, + "2": -4 + } + }, + { + "pivot": 466, + "frame": [ + 7 + ], + "gates": [ + { + "part": "A", + "index": 35, + "donor": 478, + "coefficient": "1", + "donor_state": [ + 478, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 36, + "donor": 479, + "coefficient": "1", + "donor_state": [ + 479, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 58, + "donor": 467, + "coefficient": "-1", + "donor_state": [ + 467, + 0 + ], + "split_donor": true + } + ], + "profile_delta": { + "1": 7, + "2": -4 + } + }, + { + "pivot": 468, + "frame": [ + 7 + ], + "gates": [ + { + "part": "A", + "index": 29, + "donor": 480, + "coefficient": "1", + "donor_state": [ + 480, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 30, + "donor": 481, + "coefficient": "1", + "donor_state": [ + 481, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 58, + "donor": 469, + "coefficient": "-1", + "donor_state": [ + 469, + 0 + ], + "split_donor": true + } + ], + "profile_delta": { + "1": 7, + "2": -4 + } + }, + { + "pivot": 490, + "frame": [ + 25 + ], + "gates": [ + { + "part": "A", + "index": 33, + "donor": 491, + "coefficient": "-1", + "donor_state": [ + 491, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 33, + "donor": 502, + "coefficient": "1", + "donor_state": [ + 502, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 33, + "donor": 503, + "coefficient": "1", + "donor_state": [ + 503, + 0 + ], + "split_donor": true + } + ], + "profile_delta": { + "1": 7, + "2": -4 + } + }, + { + "pivot": 492, + "frame": [ + 25 + ], + "gates": [ + { + "part": "A", + "index": 44, + "donor": 493, + "coefficient": "-1", + "donor_state": [ + 493, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 44, + "donor": 504, + "coefficient": "1", + "donor_state": [ + 504, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 44, + "donor": 505, + "coefficient": "1", + "donor_state": [ + 505, + 0 + ], + "split_donor": true + } + ], + "profile_delta": { + "1": 7, + "2": -4 + } + }, + { + "pivot": 514, + "frame": [ + 31 + ], + "gates": [ + { + "part": "A", + "index": 38, + "donor": 526, + "coefficient": "1", + "donor_state": [ + 526, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 39, + "donor": 527, + "coefficient": "1", + "donor_state": [ + 527, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 57, + "donor": 515, + "coefficient": "-1", + "donor_state": [ + 515, + 0 + ], + "split_donor": true + } + ], + "profile_delta": { + "1": 7, + "2": -4 + } + }, + { + "pivot": 516, + "frame": [ + 31 + ], + "gates": [ + { + "part": "A", + "index": 51, + "donor": 528, + "coefficient": "1", + "donor_state": [ + 528, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 52, + "donor": 529, + "coefficient": "1", + "donor_state": [ + 529, + 0 + ], + "split_donor": true + }, + { + "part": "A", + "index": 64, + "donor": 517, + "coefficient": "-1", + "donor_state": [ + 517, + 0 + ], + "split_donor": true + } + ], + "profile_delta": { + "1": 7, + "2": -4 + } + }, + { + "pivot": 510, + "frame": [ + 480 + ], + "gates": [ + { + "part": "B", + "index": 712, + "donor": 511, + "coefficient": "-1", + "donor_state": [ + 511, + 0 + ], + "split_donor": true + }, + { + "part": "B", + "index": 712, + "donor": 524, + "coefficient": "1", + "donor_state": [ + 524, + 0 + ], + "split_donor": true + }, + { + "part": "B", + "index": 712, + "donor": 525, + "coefficient": "1", + "donor_state": [ + 525, + 0 + ], + "split_donor": true + } + ], + "profile_delta": { + "1": 3, + "2": 4, + "3": -4 + } + }, + { + "pivot": 512, + "frame": [ + 480 + ], + "gates": [ + { + "part": "B", + "index": 717, + "donor": 513, + "coefficient": "-1", + "donor_state": [ + 513, + 0 + ], + "split_donor": true + }, + { + "part": "B", + "index": 717, + "donor": 522, + "coefficient": "1", + "donor_state": [ + 522, + 0 + ], + "split_donor": true + }, + { + "part": "B", + "index": 717, + "donor": 523, + "coefficient": "1", + "donor_state": [ + 523, + 0 + ], + "split_donor": true + } + ], + "profile_delta": { + "1": 3, + "2": 4, + "3": -4 + } + }, + { + "pivot": 586, + "frame": [ + 486 + ], + "gates": [ + { + "part": "B", + "index": 822, + "donor": 587, + "coefficient": "-1", + "donor_state": [ + 587, + 0 + ], + "split_donor": true + }, + { + "part": "B", + "index": 822, + "donor": 598, + "coefficient": "1", + "donor_state": [ + 598, + 0 + ], + "split_donor": true + }, + { + "part": "B", + "index": 822, + "donor": 599, + "coefficient": "1", + "donor_state": [ + 599, + 0 + ], + "split_donor": true + } + ], + "profile_delta": { + "1": 3, + "2": 4, + "3": -4 + } + }, + { + "pivot": 588, + "frame": [ + 486 + ], + "gates": [ + { + "part": "B", + "index": 827, + "donor": 589, + "coefficient": "-1", + "donor_state": [ + 589, + 0 + ], + "split_donor": true + }, + { + "part": "B", + "index": 827, + "donor": 600, + "coefficient": "1", + "donor_state": [ + 600, + 0 + ], + "split_donor": true + }, + { + "part": "B", + "index": 827, + "donor": 601, + "coefficient": "1", + "donor_state": [ + 601, + 0 + ], + "split_donor": true + } + ], + "profile_delta": { + "1": 3, + "2": 4, + "3": -4 + } + } + ] +} \ No newline at end of file diff --git a/research/complex-571-hpe46/data/recipes/ck-step1-frame_coalesce.json b/research/complex-571-hpe46/data/recipes/ck-step1-frame_coalesce.json new file mode 100644 index 0000000000..fa80dd680d --- /dev/null +++ b/research/complex-571-hpe46/data/recipes/ck-step1-frame_coalesce.json @@ -0,0 +1,173 @@ +{ + "after": { + "1": 2408, + "2": 570, + "3": 320, + "4": 192, + "5": 56, + "6": 56, + "8": 8 + }, + "before": { + "1": 2420, + "2": 564, + "3": 320, + "4": 192, + "5": 56, + "6": 56, + "8": 8 + }, + "changes": [ + { + "after": [ + "add", + 465, + 464, + 1, + 1, + [ + 126, + 1 + ] + ], + "before": [ + "add", + 465, + 464, + 1, + 1, + [ + 1 + ] + ], + "index": 78, + "section": "A" + }, + { + "after": [ + "add", + 467, + 466, + 1, + 1, + [ + 121, + 7 + ] + ], + "before": [ + "add", + 467, + 466, + 1, + 1, + [ + 7 + ] + ], + "index": 75, + "section": "A" + }, + { + "after": [ + "add", + 469, + 468, + 1, + 1, + [ + 120, + 7 + ] + ], + "before": [ + "add", + 469, + 468, + 1, + 1, + [ + 7 + ] + ], + "index": 72, + "section": "A" + }, + { + "after": [ + "add", + 463, + 462, + 1, + 1, + [ + 120, + 1 + ] + ], + "before": [ + "add", + 463, + 462, + 1, + 1, + [ + 1 + ] + ], + "index": 69, + "section": "A" + }, + { + "after": [ + "add", + 517, + 516, + 1, + 1, + [ + 103, + 31 + ] + ], + "before": [ + "add", + 517, + 516, + 1, + 1, + [ + 31 + ] + ], + "index": 66, + "section": "A" + }, + { + "after": [ + "add", + 515, + 514, + 1, + 1, + [ + 102, + 31 + ] + ], + "before": [ + "add", + 515, + 514, + 1, + 1, + [ + 31 + ] + ], + "index": 61, + "section": "A" + } + ], + "input_content_sha256": "11afa6986e37fd10adda3453d6e55a7353302c9597b93807916a2e5f808e259b" +} diff --git a/research/complex-571-hpe46/data/recipes/ck-step2-gate_move_coalesce.json b/research/complex-571-hpe46/data/recipes/ck-step2-gate_move_coalesce.json new file mode 100644 index 0000000000..c718de4430 --- /dev/null +++ b/research/complex-571-hpe46/data/recipes/ck-step2-gate_move_coalesce.json @@ -0,0 +1,85 @@ +{ + "after": { + "1": 2404, + "2": 572, + "3": 320, + "4": 192, + "5": 56, + "6": 56, + "8": 8 + }, + "before": { + "1": 2408, + "2": 570, + "3": 320, + "4": 192, + "5": 56, + "6": 56, + "8": 8 + }, + "changes": [ + { + "after": [ + "add", + 491, + 490, + 1, + 1, + [ + 96, + 25 + ] + ], + "before": [ + "add", + 491, + 490, + 1, + 1, + [ + 25 + ] + ], + "index": 35, + "section": "A" + }, + { + "after": [ + "add", + 493, + 492, + 1, + 1, + [ + 97, + 25 + ] + ], + "before": [ + "add", + 493, + 492, + 1, + 1, + [ + 25 + ] + ], + "index": 48, + "section": "A" + } + ], + "input_content_sha256": "fac4ead822d8d18e441820f9ca87efeb1866414bb0b82817c6cce4655dc59269", + "moves": [ + { + "from": 33, + "section": "A", + "to": 35 + }, + { + "from": 46, + "section": "A", + "to": 48 + } + ] +} diff --git a/research/complex-571-hpe46/data/recipes/ck-step3-hyperplane_end_closure.json b/research/complex-571-hpe46/data/recipes/ck-step3-hyperplane_end_closure.json new file mode 100644 index 0000000000..2f59c92592 --- /dev/null +++ b/research/complex-571-hpe46/data/recipes/ck-step3-hyperplane_end_closure.json @@ -0,0 +1,1113 @@ +{ + "helpers": [ + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 461, + 470, + 471, + 472, + 473, + 482, + 483, + 496, + 497, + 520, + 521, + 544, + 545, + 568, + 569, + 580, + 581, + 590, + 591, + 592, + 593, + 602, + 603, + 604, + 605, + 606, + 607, + 609, + 611, + 612, + 613, + 614, + 615 + ], + "early_cleanup": [ + [ + 448, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 449, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 450, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ], + [ + 451, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ], + [ + 452, + [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ] + ], + [ + 454, + [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ] + ], + [ + 456, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ], + [ + 457, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ], + [ + 458, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 459, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 464, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 465, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 474, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 475, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 480, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 481, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 496, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 497, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 512, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ], + [ + 513, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ], + [ + 544, + [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ] + ], + [ + 545, + [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ] + ], + [ + 578, + [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ] + ], + [ + 579, + [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ] + ], + [ + 620, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ], + [ + 621, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ], + [ + 643, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 644, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 653, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 654, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 659, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 660, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 669, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 670, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 675, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 676, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 677, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ], + [ + 678, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ], + [ + 679, + [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ] + ], + [ + 680, + [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ] + ], + [ + 681, + [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ] + ], + [ + 682, + [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ] + ], + [ + 683, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ], + [ + 684, + [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ] + ], + [ + 685, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ], + [ + 686, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + ] + ], + "helper_final": { + "448": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "449": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "450": [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ], + "451": [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ], + "452": [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ], + "453": [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ], + "454": [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ], + "455": [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ], + "456": [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ], + "457": [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ], + "458": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "459": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "460": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "461": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "470": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "471": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "472": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "473": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "482": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "483": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "496": [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ], + "497": [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ], + "520": [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ], + "521": [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ], + "544": [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ], + "545": [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ], + "568": [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ], + "569": [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ], + "580": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "581": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "590": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "591": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "592": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "593": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "602": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "603": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "604": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "605": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "606": [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ], + "607": [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ], + "609": [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ], + "611": [ + 256, + 128, + 64, + 32, + 18, + 10, + 6, + 1 + ], + "612": [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ], + "613": [ + 256, + 128, + 64, + 32, + 24, + 4, + 2, + 1 + ], + "614": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ], + "615": [ + 256, + 128, + 64, + 32, + 16, + 8, + 6, + 1 + ] + }, + "output_content_sha256": "6620b0a4a40afb4c424749af3f7525afb18e386700d82a88edca8ab7d6c9c3e8" +} diff --git a/research/complex-571-hpe46/verify.py b/research/complex-571-hpe46/verify.py new file mode 100644 index 0000000000..6d3054164d --- /dev/null +++ b/research/complex-571-hpe46/verify.py @@ -0,0 +1,277 @@ +"""Spec-driven official replay: rebuild every provider word from pinned sources through typed construction steps, +localize each word with the unchanged vendor pipeline, then run the spec-driven global admission and assembly. +Prepared with Claude Code assistance. Apache-2.0; see NOTICE.md. Pinned external sources are unchanged packages. +Everything this script runs is named in data/SPEC.json "build" and must be one of the allowlisted step types below; +the spec contains no scripts or commands, only step types, pinned source files, recipes and expected hashes. +""" +import argparse,gzip,hashlib,json,os,subprocess,sys,time,shutil,threading +from concurrent.futures import ThreadPoolExecutor +from pathlib import Path +from fractions import Fraction as Q +from collections import Counter +assert __debug__, 'Assertions required' +P=Path(__file__).resolve().parent +ap=argparse.ArgumentParser();ap.add_argument('--work',type=Path,required=True) +ap.add_argument('--spec',type=Path,default=P/'data/SPEC.json',help=argparse.SUPPRESS) +ap.add_argument('--jobs',type=int,default=min(8,os.cpu_count() or 4),help='parallel provider chains') +ap.add_argument('--source',action='append',default=[],help='NAME=DIR pinned source package (default: sibling directory named in the spec)') +ap.add_argument('--check-pins',action='store_true',help='check package and source pins, then stop') +ap.add_argument('--until',choices=('locals','all'),default='all',help=argparse.SUPPRESS) +ap.add_argument('--reuse-baseline',type=Path,help=argparse.SUPPRESS) +ap.add_argument('--reuse-local',action='append',default=[],help=argparse.SUPPRESS) +a=ap.parse_args();O=a.work.resolve();SPECFILE=a.spec.resolve();SPEC=json.loads(SPECFILE.read_bytes());BUILD=SPEC['build'] +DISCOVER=os.environ.get('WITNESS_DISCOVER')=='1';discovered={} +given=dict(x.split('=',1)for x in a.source) +SRC={name:Path(given.get(name,P.parent/src['dir'])).resolve()for name,src in BUILD['sources'].items()};S=SRC['multicold'] +def read(p):return json.loads(gzip.decompress(p.read_bytes())if p.suffix=='.gz'else p.read_bytes()) +def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest() +def content(p):return hashlib.sha256(gzip.decompress(p.read_bytes())).hexdigest() +def dump(p,x):p.write_text(json.dumps(x,indent=2)+'\n',newline='\n') +def tree(root,skip):return{f.relative_to(root).as_posix():sha(f)for f in root.rglob('*')if f.is_file()and f!=root/skip and'__pycache__'not in f.parts} +def pinned(where,key,got,label): + """Compare against the spec value; a discovery build (propose.py) records values the spec does not yet hold.""" + if key in where:assert got==where[key],'BUILD PIN MISMATCH %s.%s: expected %s got %s'%(label,key,where[key],got) + else:assert DISCOVER,'BUILD PIN MISSING %s.%s'%(label,key);discovered[label+'.'+key]=got + return got +if SPECFILE==P/'data/SPEC.json':assert tree(P,'MANIFEST.json')==read(P/'MANIFEST.json'),'package MANIFEST' +for name,src in BUILD['sources'].items(): + root=SRC[name];manifest=read(root/'MANIFEST.json') + assert sha(root/'MANIFEST.json')==src['manifest_sha256'],name+' manifest pin' + if src.get('full_tree'):assert tree(root,'MANIFEST.json')==manifest,name+' tree' + files=manifest.get('files',manifest) + for rel,value in src['files'].items():assert sha(root/rel)==value==files[rel],(name,rel) +def ref(r,pin=True): + """'pkg:rel' (this package) or 'NAME:rel' (a pinned file of source NAME).""" + kind,rel=r.split(':',1) + if kind=='pkg':return P/rel + assert rel in BUILD['sources'][kind]['files'],'unpinned source file '+r + return SRC[kind]/rel +if a.check_pins:print('PINS OK',SPEC['name'],sha(SPECFILE));raise SystemExit(0) +assert not O.exists() and not any(O.is_relative_to(x)for x in (P,*SRC.values())) +O.mkdir(parents=True);steps=[];lock=threading.Lock();start=time.monotonic() +env=dict(os.environ,PYTHONDONTWRITEBYTECODE='1',PYTHONUTF8='1',PYTHONINTMAXSTRDIGITS='0',MULTICOLD_SOURCE=str(S),GAIN_PR564_SOURCE=str(S),WITNESS_SPEC=str(SPECFILE));env.pop('PYTHONOPTIMIZE',None);env.pop('WITNESS_DISCOVER',None) +def run(name,script,*args): + log=O/(name+'.log');t=time.monotonic();print('RUN',name,flush=True) + with log.open('w')as f:code=subprocess.call([sys.executable,'-B',str(S/'code/run_portable.py'),str(script),*map(str,args)],stdout=f,stderr=subprocess.STDOUT,env=env) + with lock:steps.append(dict(name=name,exit_code=code,seconds=round(time.monotonic()-t,3),log_sha256=sha(log)));dump(O/'STAGES.json',steps) + if code:raise RuntimeError(name+' failed\n'+log.read_text()[-6000:]) + print('PASS',name,flush=True) +B=S/'vendor/pr558';F=B/'vendor/pr552';V=F/'complex-global/vendor531';GK=F/'complex-local/static44/gk' +if a.reuse_baseline:baseline=a.reuse_baseline.resolve() +else:baseline=O/'baseline558';run('frozen558-full-replay',B/'verify.py','--work',baseline) +SEL=baseline/'reconstruction/static44/SELECTION.json';RAW=baseline/'reconstruction/promoted/FULL-WORD.json.gz' +def omissions(path,s,label):pinned(s,'omission_controls',len(read(path)['controls']),label) +# Allowlisted step types: (constructor, paired omission audit), all scripts from the pinned multicold source. +def cold_kernel(word,s,out,tag): + recipe=ref(s['recipe']);pinned(s,'recipe_sha256',sha(recipe),tag) + run(tag+'-construction',S/'code/build_cold_kernel.py','--input',word,'--recipe',recipe,'--gk-dir',GK,'--out',out) + run(tag+'-omissions',S/'code/audit_kernel_controls.py','--word',out/'FULL-WORD.json.gz','--recipe',recipe,'--out',out/'KERNEL-OMISSION-CONTROLS.json') + omissions(out/'KERNEL-OMISSION-CONTROLS.json',s,tag) +def finalize(word,recipe,tag): + """Discovery only: a new recipe whose output hash is still open is pinned by a first build that must fail exactly at + the final output-hash assertion (every kernel check passed); the printed hash is written into a final recipe.""" + r=read(recipe);h=r.get('output_content_sha256','') + if len(h)==64 and all(c in '0123456789abcdef'for c in h):return recipe + assert DISCOVER,'recipe output hash not pinned: '+tag + r['output_content_sha256']='0'*64;probe=O/(tag+'-probe');probe.mkdir();dump(probe/'RECIPE.json',r) + p=subprocess.run([sys.executable,'-B',str(S/'code/run_portable.py'),str(S/'code/build_multicut_kernels.py'),'--input',str(word),'--recipe',str(probe/'RECIPE.json'),'--gk-dir',str(GK),'--out',str(probe/'out')],capture_output=True,text=True,env=env) + last=(p.stderr.strip().splitlines()or[''])[-1];assert p.returncode and last.startswith('AssertionError: ')and len(last)==16+64,'probe build failed before the output hash:\n'+p.stderr[-3000:] + r['output_content_sha256']=last[16:];final=O/(tag+'-RECIPE.json');final.write_text(json.dumps(r,indent=1)+'\n',newline='\n') + discovered[tag+'.final_recipe']=str(final);return final +def multicut(word,s,out,tag): + recipe=finalize(word,ref(s['recipe']),tag);pinned(s,'recipe_sha256',sha(recipe),tag) + run(tag+'-construction',S/'code/build_multicut_kernels.py','--input',word,'--recipe',recipe,'--gk-dir',GK,'--out',out) + run(tag+'-omissions',S/'code/audit_multicold_controls.py','--word',out/'FULL-WORD.json.gz','--recipe',recipe,'--out',out/'MULTICOLD-OMISSION-CONTROLS.json') + omissions(out/'MULTICOLD-OMISSION-CONTROLS.json',s,tag) +PROMOTER=('larger_gain','providers/build_entrance_promotions.py',('providers/coupled_frames_base.py','providers/search_suffix_kernels.py')) +def frame_only(source,word,recipes): + """Independent check that a promotion changed only entrance frames: identical scalar operations, start_extra changed + exactly at the recipe pivots (old -> new frame), frame fields only on scalar events, report changes limited.""" + assert source.keys()==word.keys() + for section in source: + if section in ('A','cut','B','cleanup','precondition'): + assert len(source[section])==len(word[section]) + assert all(x[:-1]==y[:-1]for x,y in zip(source[section],word[section])),'scalar operation changed' + elif section not in ('start_extra','report'):assert source[section]==word[section],'fixed field changed: '+section + entrances=dict(source['start_extra']) + for r in recipes: + k=str(r['pivot']);assert sorted(entrances[k])==sorted(r['old_frame']) and len(r['new_frame'])==len(r['old_frame'])+1,'wrong old entrance '+k + entrances[k]=word['start_extra'][k];assert sorted(entrances[k])==sorted(r['new_frame']),'wrong new entrance '+k + assert word['start_extra']==entrances,'entrance changed outside the recipe' + allowed={'local_profile','local_rank_mass','entrance_rank','entering_helpers','width_inventory'} + assert source['report'].keys()==word['report'].keys() and all(source['report'][k]==word['report'][k]for k in source['report']if k not in allowed) +def promote(word,s,out,tag): + src,builder,deps=PROMOTER;recipe=ref(s['recipe']);pinned(s,'recipe_sha256',sha(recipe),tag) + for f in deps:ref(src+':'+f) + run(tag+'-construction',ref(src+':'+builder),'--word',word,'--recipes',recipe,'--gk-dir',GK,'--out',out) + a,b,r=read(word),read(out/'FULL-WORD.json.gz'),read(recipe);frame_only(a,b,r) + import copy + rejected=[] + for name,mut in (('reverted_promotion',lambda w:w['start_extra'].__setitem__(str(r[0]['pivot']),list(r[0]['old_frame']))), + ('scalar_operation_changed',lambda w:w['B'][0].insert(0,'mutated')),('extra_entrance_changed',lambda w:w['start_extra'].__setitem__(next(k for k in w['start_extra']if k not in{str(x['pivot'])for x in r}),[])), + ('fixed_field_changed',lambda w:w.__setitem__('cut',w['cut'][:-1]))): + w=copy.deepcopy(b);mut(w) + try:frame_only(a,w,r) + except(AssertionError,KeyError,IndexError,TypeError):rejected.append(name) + else:raise AssertionError('frame-only control accepted: '+name) + dump(out/'FRAME-ONLY-CONTROLS.json',dict(status='PASS_FRAME_ONLY_PROMOTION_TRANSFER',promotions=len(r),controls=rejected)) + omissions(out/'FRAME-ONLY-CONTROLS.json',s,tag) +JOINT=('joint_prefix',('code/build_joint_prefix.py','code/audit_joint_prefix.py','code/audit_multicold_controls.py')) +def joint_prefix(word,s,out,tag): + """PR575's unchanged joint-prefix constructor with its paired audits: all-kernel omissions, rank-five omissions and + the independent literal-prefix/coverage audit (variant and kernel recipe named in the step).""" + src,(builder,audit,omit)=JOINT;recipe=ref(s['recipe']);kern=ref(s['kernel_recipes']);pinned(s,'recipe_sha256',sha(recipe),tag);pinned(s,'kernel_recipes_sha256',sha(kern),tag) + assert s['variant'] in ('eightcold','width7') + run(tag+'-construction',ref(src+':'+builder),'--input',word,'--recipe',recipe,'--variant',s['variant'],'--gk-dir',GK,'--out',out) + shutil.copyfile(RAW.parent/'PROMOTION.json',out/'PROMOTION.json') + run(tag+'-all-kernel-omissions',ref(src+':'+omit),'--word',out/'FULL-WORD.json.gz','--recipe',kern,'--out',out/'ALL-KERNEL-CONTROLS.json') + run(tag+'-rank5-omissions',B/'code/audit_promoted_scalar.py',out/'FULL-WORD.json.gz',SEL,out/'RANK5-CONTROLS.json') + run(tag+'-independent-joint-prefix-and-coverage',ref(src+':'+audit),'--source',word,'--word',out/'FULL-WORD.json.gz','--recipe',recipe,'--variant',s['variant'],'--kernel-recipes',kern,'--controls',out/'ALL-KERNEL-CONTROLS.json','--rank5-controls',out/'RANK5-CONTROLS.json','--promotion',out/'PROMOTION.json','--selection',SEL,'--out',out/'JOINT-PREFIX-AUDIT.json') + j=read(out/'JOINT-PREFIX-AUDIT.json');assert j['status']=='PASS_INDEPENDENT_LITERAL_PREFIX_AND_FINAL_KERNEL_COVERAGE' + c=read(out/'ALL-KERNEL-CONTROLS.json');assert all(x['forward_rejected'] and x['reflected_rejected'] for x in c['controls']) + omissions(out/'ALL-KERNEL-CONTROLS.json',s,tag);pinned(s,'rank5_controls',len(read(out/'RANK5-CONTROLS.json')['controls']),tag) + pinned(s,'joint_negative_controls',len(j['negative_controls_rejected']),tag) +COAL=('frame_coalescing','code/build_frames.py') +def frame_coalesce(word,s,out,tag): + """PR583's unchanged frame-coalescence constructor (it re-checks profiles, scalar operations, widths and helper + responses and rejects every omission/over-promotion control), plus an independent check that only the recipe's + gate frames changed (old -> new) and every other field of the word is identical.""" + src,builder=COAL;recipe=ref(s['recipe']);pinned(s,'recipe_sha256',sha(recipe),tag) + run(tag+'-construction',ref(src+':'+builder),'--input',word,'--recipe',recipe,'--gk-dir',GK,'--out',out) + r=read(recipe);c=read(out/'FRAME-CONSTRUCTION.json');assert c['status']=='PASS_SIX_EXACT_FRAME_COALESCENCES' + assert len(c['negative_controls_rejected'])==2*len(r['changes']);pinned(s,'negative_controls',len(c['negative_controls_rejected']),tag) + x,y=read(word),read(out/'FULL-WORD.json.gz');ch={(z['section'],z['index']):z for z in r['changes']};assert len(ch)==len(r['changes']) + assert x.keys()==y.keys() and all(x[k]==y[k]for k in x if k not in('A','B','report')) + for part in ('A','B'): + assert len(x[part])==len(y[part]) + for i,(u,v) in enumerate(zip(x[part],y[part])): + z=ch.pop((part,i),None) + if z is None:assert u==v,'frame changed outside the recipe %s %d'%(part,i) + else:assert u==z['before'] and v==z['after'] and u[:-1]==v[:-1],'wrong coalescence %s %d'%(part,i) + assert not ch,'recipe change outside A/B' + assert all(x['report'][k]==y['report'][k]for k in x['report']if k not in('local_profile','local_rank_mass','status')) +def gate_move_coalesce(word,s,out,tag): + """This package's code/build_gate_moves.py (PR583's constructor extended by commuting gate moves): every passed gate + must commute, helper responses and widths are unchanged, cleanup follows the inherited inverse rule, and every + omission/over-promotion/unmoved control is rejected; then the same independent comparison as frame_coalesce.""" + recipe=ref(s['recipe']);pinned(s,'recipe_sha256',sha(recipe),tag) + run(tag+'-construction',P/'code/build_gate_moves.py','--input',word,'--recipe',recipe,'--gk-dir',GK,'--out',out) + r=read(recipe);c=read(out/'FRAME-CONSTRUCTION.json');assert c['status']=='PASS_EXACT_GATE_MOVE_FRAME_COALESCENCES' + assert len(c['negative_controls_rejected'])==2*len(r['changes'])+len(r['moves']);pinned(s,'negative_controls',len(c['negative_controls_rejected']),tag) + x,y=read(word),read(out/'FULL-WORD.json.gz') + for m in r['moves']:L=x[m['section']];L.insert(m['to'],L.pop(m['from'])) + ch={(z['section'],z['index']):z for z in r['changes']};assert len(ch)==len(r['changes']) + assert x.keys()==y.keys() and all(x[k]==y[k]for k in x if k not in('A','B','cleanup','report')) + for part in ('A','B'): + assert len(x[part])==len(y[part]) + for i,(u,v) in enumerate(zip(x[part],y[part])): + z=ch.pop((part,i),None) + if z is None:assert u==v,'gate changed outside the recipe %s %d'%(part,i) + else:assert u==z['before'] and v==z['after'] and u[:-1]==v[:-1],'wrong coalescence %s %d'%(part,i) + assert not ch,'recipe change outside A/B' + meta=('width_inventory','entering_helpers','entrance_rank');assert all(x['report'][k]==y['report'][k]for k in x['report']if k not in('local_profile','local_rank_mass','status')+meta) + sys.path.insert(0,str(GK));import gk_common as GC;GC.V=112;ws=GC.widths_of(y) + assert y['report']['width_inventory']=={str(k):v for k,v in sorted(Counter(ws).items())} and y['report']['entering_helpers']==sum(v<9 for v in ws) and y['report']['entrance_rank']==sum(9-v for v in ws),'descriptive width metadata not normalized' +def hyperplane_end(word,s,out,tag): + """This package's code/build_hpe.py: cleanup gates that commute with the whole skipped cleanup prefix run right after B + at the join frame U of their registers, and the helper ends at U (residual T_U T_E^-1, width |U|-|E|; Lemma C, nested + children, Lemma A). Paired audit: code/hpe_controls_atc.py (exact replay of the reordered program plus HPE raw-word + mutations). Then an independent comparison: only early_cleanup, helper_final and the paid profile change.""" + recipe=ref(s['recipe']);pinned(s,'recipe_sha256',sha(recipe),tag) + run(tag+'-construction',P/'code/build_hpe.py','--input',word,'--recipe',recipe,'--out',out) + run(tag+'-controls',P/'code/hpe_controls_atc.py',out/'FULL-WORD.json.gz',F/'complex-local/inputs/phase-baseline/CANONICAL-WORD.json.gz',out) + c=read(out/'HPE-ATC-CONTROLS.json');assert c['status']=='PASS_HPE_RAW_WORD_CONTROLS';pinned(s,'negative_controls',len(c['rejected']),tag) + r=read(recipe);x,y=read(word),read(out/'FULL-WORD.json.gz') + assert set(y)==set(x)|{'early_cleanup','helper_final'} and 'early_cleanup' not in x and all(x[k]==y[k]for k in x if k!='report') + assert y['early_cleanup']==[[z['cleanup_index'],z['frame']]for z in r['changes']] and y['helper_final']=={str(z['helper']):z['frame']for z in r['changes']} + assert x['report'].keys()==y['report'].keys() and all(x['report'][k]==y['report'][k]for k in x['report']if k not in('local_profile','local_rank_mass','width_inventory')) + inv=Counter({int(k):n for k,n in x['report']['width_inventory'].items()}) + for z in r['changes']:e=len(x['start_extra'][str(z['helper'])]);inv[9-e]-=1;inv[len(z['frame'])-e]+=1 + assert y['report']['width_inventory']=={str(k):n for k,n in sorted(inv.items())if n},'descriptive width metadata not |final|-|start|' +def hyperplane_end_closure(word,s,out,tag): + """This package's code/build_hpe_closure.py: every entering helper whose cleanup partner join is a hyperplane ends there; its cleanup + gate (and, in general, the non-commuting closure of the chosen gates) runs right after B at the minimal common frame. The build is + recomputed from the word and must equal the recipe. Paired audit: code/hpe_controls_atc.py; then the same independent comparison as + hyperplane_end (only early_cleanup, helper_final and the paid profile change; width metadata is |final|-|start|).""" + recipe=ref(s['recipe']);pinned(s,'recipe_sha256',sha(recipe),tag) + run(tag+'-construction',P/'code/build_hpe_closure.py','--input',word,'--recipe',recipe,'--out',out) + run(tag+'-controls',P/'code/hpe_controls_atc.py',out/'FULL-WORD.json.gz',F/'complex-local/inputs/phase-baseline/CANONICAL-WORD.json.gz',out) + c=read(out/'HPE-ATC-CONTROLS.json');assert c['status']=='PASS_HPE_RAW_WORD_CONTROLS';pinned(s,'negative_controls',len(c['rejected']),tag) + r=read(recipe);x,y=read(word),read(out/'FULL-WORD.json.gz') + assert set(y)==set(x)|{'early_cleanup','helper_final'} and 'early_cleanup' not in x and all(x[k]==y[k]for k in x if k!='report') + assert y['early_cleanup']==r['early_cleanup'] and y['helper_final']==r['helper_final'] and sorted(map(int,y['helper_final']))==r['helpers'] + assert x['report'].keys()==y['report'].keys() and all(x['report'][k]==y['report'][k]for k in x['report']if k not in('local_profile','local_rank_mass','width_inventory','status')) + inv=Counter({int(k):n for k,n in x['report']['width_inventory'].items()}) + for h,U in y['helper_final'].items():e=len(x['start_extra'][h]);inv[9-e]-=1;inv[len(U)-e]+=1 + assert y['report']['width_inventory']=={str(k):n for k,n in sorted(inv.items())if n},'descriptive width metadata not |final|-|start|' + pinned(s,'hyperplane_ended_helpers',len(r['helpers']),tag) +STEPS={'hyperplane_end_closure':hyperplane_end_closure,'hyperplane_end':hyperplane_end,'cold_kernel':cold_kernel,'multicut':multicut,'greedy_kernels':multicut,'promote':promote,'joint_prefix':joint_prefix,'frame_coalesce':frame_coalesce,'gate_move_coalesce':gate_move_coalesce} +def build_word(pid,d): + base=d['base'];assert base['kind']in('frozen558_promoted','source_file'),base['kind'] + word=RAW if base['kind']=='frozen558_promoted' else ref(base['file']) + pinned(base,'content_sha256',content(word),pid+'.base') + for i,s in enumerate(d['steps']): + tag='%s-step%d-%s'%(pid,i,s['type']);out=O/tag + if s['type']=='frozen558_scalar_audits': + # inherited static44 and rank-five omission audits on a frozen558-descended word + out.mkdir();run(tag+'-static44',F/'complex-local/static44/audit_scalar.py',word,SEL,out/'STATIC44-SCALAR-AUDIT.json') + shutil.copyfile(RAW.parent/'PROMOTION.json',word.parent/'PROMOTION.json') + run(tag+'-rank5',B/'code/audit_promoted_scalar.py',word,SEL,out/'PROMOTED-SCALAR-AUDIT.json');continue + assert s['type'] in STEPS,'step type not allowlisted: '+s['type'] + pinned(s,'input_content_sha256',content(word),tag) + STEPS[s['type']](word,s,out,tag);word=out/'FULL-WORD.json.gz' + pinned(s,'output_content_sha256',content(word),tag) + pinned(d,'word_content_sha256',content(word),pid) + return word +def localize(pid,word): + local=O/(pid+'-local') + # HPE words (helper_final present) use this package's generalised native chain; every other word the unchanged vendor531 one + hp='helper_final' in read(word);NC=(lambda f:P/'code'/('hpe_'+f))if hp else(lambda f:V/'code'/f) + run(pid+'-all-columns-native-frames',NC('audit_and_transport.py'),'--raw',word,'--routing',F/'complex-local/inputs/phase-baseline/CANONICAL-WORD.json.gz','--out',local) + run(pid+'-both-reflected-ledgers',NC('emit_local.py'),local) + run(pid+'-independent-local-controls',NC('audit_local.py'),local) + run(pid+'-normalized-wrappers',NC('adapters_local.py'),local/'CANONICAL-WORD.json.gz',local/'RESIDUAL-ADAPTERS.json',local/'WRAPPER-CHECKS.json') + run(pid+'-all-phase-edges',B/'code/phases_full.py',local,V/'vendor/clifford') + r=BUILD['providers'][pid].get('retained_local') + if r: # a pinned retained local must be reproduced byte for byte (phase review up to timing) + for name in ('CANONICAL-WORD.json.gz','LOCAL-PROGRAMS.json.gz','LOCAL-CHECKS.json','INDEPENDENT-LOCAL-REPLAY.json','RESIDUAL-ADAPTERS.json','WRAPPER-CHECKS.json','CLIFFORD-RECIPES.json'): + assert sha(local/name)==sha(ref(r+'/'+name)),(pid,name) + fresh,old=read(local/'CLIFFORD-REVIEW.json'),read(ref(r+'/CLIFFORD-REVIEW.json')) + assert {k:v for k,v in fresh.items()if k!='seconds'}=={k:v for k,v in old.items()if k!='seconds'} + return local +reuse=dict(x.split('=',1)for x in a.reuse_local) +words={} +def provider(pid): + word=words[pid]=build_word(pid,BUILD['providers'][pid]) + return Path(reuse[pid]).resolve()if pid in reuse else localize(pid,word) +with ThreadPoolExecutor(max(1,min(a.jobs,len(BUILD['providers']))))as pool: + futures={pid:pool.submit(provider,pid)for pid in sorted(BUILD['providers'])};locals_={pid:f.result()for pid,f in futures.items()} +dump(O/'LOCALS.json',dict(locals={pid:str(l)for pid,l in locals_.items()},words={pid:str(w)for pid,w in words.items()},baseline=str(baseline),discovered=discovered)) +if a.until=='locals':print('LOCALS READY');raise SystemExit(0) +assert not DISCOVER +G=O/'mixed-global' +run('bind-providers',P/'code/bind_providers_portable.py','--baseline',baseline,*[x for pid,l in sorted(locals_.items())for x in('--provider','%s=%s'%(pid,l))],'--plan',P/'data/PLAN.json','--out',G) +run('emit-controller',P/'code/emit_allcold.py','--base',G/'base','--owners',P/'data/OWNERS.json.gz','--plan',G/'PLAN.json','--out',G/'hosted') +(G/'audit').mkdir() +run('independent-controller-and-controls',P/'code/audit_allcold.py',G/'base',G/'hosted',G/'audit/ASYNC-AUDIT.json','--mutation-controls') +run('fresh-invoice',P/'code/invoice_allcold.py','--base',G/'base','--hosted',G/'hosted','--audit',G/'audit','--out',G/'audit','--retained-invoice',V/'evidence/audit/PREFIX-AND-INVOICE.json') +run('conservative-and-native-exact-assembly',P/'code/assemble.py',S,G,O/'ASSEMBLY.json') +run('admission-controls',P/'code/assembly_controls.py','--source-package',S,'--owner',G/'audit/OWNERS-AND-PROFILE.json','--invoice',G/'audit/PREFIX-AND-INVOICE.json','--out',O/'ASSEMBLY-CONTROLS.json') +run('phase-timing-portability-controls',P/'code/phase_timing_controls.py',S,G/'base',G/'audit',O/'PHASE-TIMING-CONTROLS.json') +run('actual-recompression-and-rebound-controls',P/'code/generated_identity_controls.py','--base',G/'base','--audit',G/'audit','--out',O/'GENERATED-IDENTITY-CONTROLS.json') +X=SPEC['expected'] +for pid,local in locals_.items(): + r=read(local/'INDEPENDENT-LOCAL-REPLAY.json');ph=read(local/'CLIFFORD-REVIEW.json') + assert len(r['negative_controls_rejected'])==SPEC['providers'][pid]['native_negative_controls'] and r['paid_profiles']['forward']==r['paid_profiles']['backward'] + assert ph['status']=='PASS_NEW_WORD_EXACT_LOCAL_PHASE_RECIPES' and ph['all_child_equalities_include_global_phase']is True and ph['directed_edges']==SPEC['providers'][pid]['phase_edges'] and ph['endpoint_adapters']==224 +assert len(read(G/'audit/ASYNC-AUDIT.json')['mutations_rejected'])==X['mutations_rejected'] +assert len(read(O/'ASSEMBLY-CONTROLS.json')['rejected_controls'])==X['assembly_controls_rejected'] +z=read(O/'ASSEMBLY.json');assert Q(z['kappa_decimal'])==Q(X['kappa_decimal']) and Q(z['conservative_kappa_decimal'])==Q(X['conservative_kappa_decimal']) +assert {str(k):v for k,v in z['complex_profile'].items()}==X['global_profile'] and z['provider_counts']==X['provider_counts'] +r=dict(status=SPEC['build']['status'],kappa=z['kappa'],kappa_decimal=z['kappa_decimal'],complex_lower=z['complex_lower'],bit_lower=z['bit_lower'],conservative_kappa_decimal=z['conservative_kappa_decimal'],conservative_complex_lower=z['conservative_complex_lower'],global_profile=z['complex_profile'],provider_counts=z['provider_counts'],surcharge_model=z['surcharge_model'],seconds=time.monotonic()-start,reused=dict(baseline=bool(a.reuse_baseline),locals=sorted(reuse)),scope=z['scope']);dump(O/'RESULT.json',r) +paths=['PHASE-TIMING-CONTROLS.json','GENERATED-IDENTITY-CONTROLS.json','mixed-global/audit/IDLE-REMAINDER-FRAMES.json','RESULT.json','ASSEMBLY.json','ASSEMBLY-CONTROLS.json','mixed-global/BINDING.json','mixed-global/audit/ASYNC-AUDIT.json','mixed-global/audit/OWNERS-AND-PROFILE.json','mixed-global/audit/PREFIX-AND-INVOICE.json'] +paths+=sorted(f.relative_to(O).as_posix()for f in O.glob('*-step*/*.json')) +for pid in sorted(set(locals_)-set(reuse)): + for fn in ('INDEPENDENT-LOCAL-REPLAY.json','CLIFFORD-REVIEW.json','WRAPPER-CHECKS.json'):paths.append(pid+'-local/'+fn) +dump(O/'RECEIPT.json',dict(status=r['status'],steps=steps,artifacts={name:sha(O/name)for name in paths},manifest_sha256=sha(P/'MANIFEST.json'),spec_sha256=sha(SPECFILE),source_manifest_sha256={n:sha(SRC[n]/'MANIFEST.json')for n in SRC})) +print(json.dumps(r,indent=2))