poulpy/poulpy-schemes/src/tfhe/bdd_arithmetic/circuits/u32/sll_codegen.rs
poulpy-schemes/src/tfhe/bdd_arithmetic/circuits/u32/sll_codegen.rsRaw
1use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitInfo, Circuit, GetBitCircuitInfo, Node};
2pub(crate) enum AnyBitCircuit {
3 B0(BitCircuit<11, 6>),
4 B1(BitCircuit<15, 6>),
5 B2(BitCircuit<19, 6>),
6 B3(BitCircuit<22, 6>),
7 B4(BitCircuit<25, 6>),
8 B5(BitCircuit<28, 6>),
9 B6(BitCircuit<31, 6>),
10 B7(BitCircuit<33, 6>),
11 B8(BitCircuit<35, 6>),
12 B9(BitCircuit<37, 6>),
13 B10(BitCircuit<39, 6>),
14 B11(BitCircuit<41, 6>),
15 B12(BitCircuit<43, 6>),
16 B13(BitCircuit<45, 6>),
17 B14(BitCircuit<47, 6>),
18 B15(BitCircuit<48, 6>),
19 B16(BitCircuit<49, 6>),
20 B17(BitCircuit<50, 6>),
21 B18(BitCircuit<51, 6>),
22 B19(BitCircuit<52, 6>),
23 B20(BitCircuit<53, 6>),
24 B21(BitCircuit<54, 6>),
25 B22(BitCircuit<55, 6>),
26 B23(BitCircuit<56, 6>),
27 B24(BitCircuit<57, 6>),
28 B25(BitCircuit<58, 6>),
29 B26(BitCircuit<59, 6>),
30 B27(BitCircuit<60, 6>),
31 B28(BitCircuit<61, 6>),
32 B29(BitCircuit<62, 6>),
33 B30(BitCircuit<63, 6>),
34 B31(BitCircuit<63, 6>),
35}
36impl BitCircuitInfo for AnyBitCircuit {
37 fn info(&self) -> (&[Node], &[usize], usize) {
38 match self {
39 AnyBitCircuit::B0(bit_circuit) => (
40 bit_circuit.nodes.as_ref(),
41 bit_circuit.levels.as_ref(),
42 bit_circuit.max_inter_state,
43 ),
44 AnyBitCircuit::B1(bit_circuit) => (
45 bit_circuit.nodes.as_ref(),
46 bit_circuit.levels.as_ref(),
47 bit_circuit.max_inter_state,
48 ),
49 AnyBitCircuit::B2(bit_circuit) => (
50 bit_circuit.nodes.as_ref(),
51 bit_circuit.levels.as_ref(),
52 bit_circuit.max_inter_state,
53 ),
54 AnyBitCircuit::B3(bit_circuit) => (
55 bit_circuit.nodes.as_ref(),
56 bit_circuit.levels.as_ref(),
57 bit_circuit.max_inter_state,
58 ),
59 AnyBitCircuit::B4(bit_circuit) => (
60 bit_circuit.nodes.as_ref(),
61 bit_circuit.levels.as_ref(),
62 bit_circuit.max_inter_state,
63 ),
64 AnyBitCircuit::B5(bit_circuit) => (
65 bit_circuit.nodes.as_ref(),
66 bit_circuit.levels.as_ref(),
67 bit_circuit.max_inter_state,
68 ),
69 AnyBitCircuit::B6(bit_circuit) => (
70 bit_circuit.nodes.as_ref(),
71 bit_circuit.levels.as_ref(),
72 bit_circuit.max_inter_state,
73 ),
74 AnyBitCircuit::B7(bit_circuit) => (
75 bit_circuit.nodes.as_ref(),
76 bit_circuit.levels.as_ref(),
77 bit_circuit.max_inter_state,
78 ),
79 AnyBitCircuit::B8(bit_circuit) => (
80 bit_circuit.nodes.as_ref(),
81 bit_circuit.levels.as_ref(),
82 bit_circuit.max_inter_state,
83 ),
84 AnyBitCircuit::B9(bit_circuit) => (
85 bit_circuit.nodes.as_ref(),
86 bit_circuit.levels.as_ref(),
87 bit_circuit.max_inter_state,
88 ),
89 AnyBitCircuit::B10(bit_circuit) => (
90 bit_circuit.nodes.as_ref(),
91 bit_circuit.levels.as_ref(),
92 bit_circuit.max_inter_state,
93 ),
94 AnyBitCircuit::B11(bit_circuit) => (
95 bit_circuit.nodes.as_ref(),
96 bit_circuit.levels.as_ref(),
97 bit_circuit.max_inter_state,
98 ),
99 AnyBitCircuit::B12(bit_circuit) => (
100 bit_circuit.nodes.as_ref(),
101 bit_circuit.levels.as_ref(),
102 bit_circuit.max_inter_state,
103 ),
104 AnyBitCircuit::B13(bit_circuit) => (
105 bit_circuit.nodes.as_ref(),
106 bit_circuit.levels.as_ref(),
107 bit_circuit.max_inter_state,
108 ),
109 AnyBitCircuit::B14(bit_circuit) => (
110 bit_circuit.nodes.as_ref(),
111 bit_circuit.levels.as_ref(),
112 bit_circuit.max_inter_state,
113 ),
114 AnyBitCircuit::B15(bit_circuit) => (
115 bit_circuit.nodes.as_ref(),
116 bit_circuit.levels.as_ref(),
117 bit_circuit.max_inter_state,
118 ),
119 AnyBitCircuit::B16(bit_circuit) => (
120 bit_circuit.nodes.as_ref(),
121 bit_circuit.levels.as_ref(),
122 bit_circuit.max_inter_state,
123 ),
124 AnyBitCircuit::B17(bit_circuit) => (
125 bit_circuit.nodes.as_ref(),
126 bit_circuit.levels.as_ref(),
127 bit_circuit.max_inter_state,
128 ),
129 AnyBitCircuit::B18(bit_circuit) => (
130 bit_circuit.nodes.as_ref(),
131 bit_circuit.levels.as_ref(),
132 bit_circuit.max_inter_state,
133 ),
134 AnyBitCircuit::B19(bit_circuit) => (
135 bit_circuit.nodes.as_ref(),
136 bit_circuit.levels.as_ref(),
137 bit_circuit.max_inter_state,
138 ),
139 AnyBitCircuit::B20(bit_circuit) => (
140 bit_circuit.nodes.as_ref(),
141 bit_circuit.levels.as_ref(),
142 bit_circuit.max_inter_state,
143 ),
144 AnyBitCircuit::B21(bit_circuit) => (
145 bit_circuit.nodes.as_ref(),
146 bit_circuit.levels.as_ref(),
147 bit_circuit.max_inter_state,
148 ),
149 AnyBitCircuit::B22(bit_circuit) => (
150 bit_circuit.nodes.as_ref(),
151 bit_circuit.levels.as_ref(),
152 bit_circuit.max_inter_state,
153 ),
154 AnyBitCircuit::B23(bit_circuit) => (
155 bit_circuit.nodes.as_ref(),
156 bit_circuit.levels.as_ref(),
157 bit_circuit.max_inter_state,
158 ),
159 AnyBitCircuit::B24(bit_circuit) => (
160 bit_circuit.nodes.as_ref(),
161 bit_circuit.levels.as_ref(),
162 bit_circuit.max_inter_state,
163 ),
164 AnyBitCircuit::B25(bit_circuit) => (
165 bit_circuit.nodes.as_ref(),
166 bit_circuit.levels.as_ref(),
167 bit_circuit.max_inter_state,
168 ),
169 AnyBitCircuit::B26(bit_circuit) => (
170 bit_circuit.nodes.as_ref(),
171 bit_circuit.levels.as_ref(),
172 bit_circuit.max_inter_state,
173 ),
174 AnyBitCircuit::B27(bit_circuit) => (
175 bit_circuit.nodes.as_ref(),
176 bit_circuit.levels.as_ref(),
177 bit_circuit.max_inter_state,
178 ),
179 AnyBitCircuit::B28(bit_circuit) => (
180 bit_circuit.nodes.as_ref(),
181 bit_circuit.levels.as_ref(),
182 bit_circuit.max_inter_state,
183 ),
184 AnyBitCircuit::B29(bit_circuit) => (
185 bit_circuit.nodes.as_ref(),
186 bit_circuit.levels.as_ref(),
187 bit_circuit.max_inter_state,
188 ),
189 AnyBitCircuit::B30(bit_circuit) => (
190 bit_circuit.nodes.as_ref(),
191 bit_circuit.levels.as_ref(),
192 bit_circuit.max_inter_state,
193 ),
194 AnyBitCircuit::B31(bit_circuit) => (
195 bit_circuit.nodes.as_ref(),
196 bit_circuit.levels.as_ref(),
197 bit_circuit.max_inter_state,
198 ),
199 }
200 }
201}
202
203impl GetBitCircuitInfo<u32> for Circuit<AnyBitCircuit, 32usize> {
204 fn input_size(&self) -> usize {
205 2 * u32::BITS as usize
206 }
207 fn output_size(&self) -> usize {
208 u32::BITS as usize
209 }
210 fn get_circuit(&self, bit: usize) -> (&[Node], &[usize], usize) {
211 self.0[bit].info()
212 }
213}
214
215pub(crate) static OUTPUT_CIRCUITS: Circuit<AnyBitCircuit, 32usize> = Circuit([
216 AnyBitCircuit::B0(BitCircuit::new(
217 [
218 Node::new(0, 0, 0),
219 Node::new(0, 1, 0),
220 Node::new(0, 0, 0),
221 Node::new(36, 0, 1),
222 Node::new(0, 0, 0),
223 Node::new(35, 0, 1),
224 Node::new(0, 0, 0),
225 Node::new(34, 0, 1),
226 Node::new(0, 0, 0),
227 Node::new(33, 0, 1),
228 Node::new(32, 0, 1),
229 ],
230 [0, 2, 4, 6, 8, 10],
231 2,
232 )),
233 AnyBitCircuit::B1(BitCircuit::new(
234 [
235 Node::new(0, 0, 0),
236 Node::new(0, 1, 0),
237 Node::new(1, 1, 0),
238 Node::new(0, 0, 0),
239 Node::new(36, 0, 2),
240 Node::new(36, 0, 1),
241 Node::new(0, 0, 0),
242 Node::new(35, 0, 1),
243 Node::new(35, 0, 2),
244 Node::new(0, 0, 0),
245 Node::new(34, 0, 1),
246 Node::new(34, 0, 2),
247 Node::new(33, 0, 1),
248 Node::new(33, 0, 2),
249 Node::new(32, 1, 0),
250 ],
251 [0, 3, 6, 9, 12, 14],
252 3,
253 )),
254 AnyBitCircuit::B2(BitCircuit::new(
255 [
256 Node::new(0, 0, 0),
257 Node::new(1, 1, 0),
258 Node::new(2, 1, 0),
259 Node::new(0, 1, 0),
260 Node::new(0, 0, 0),
261 Node::new(36, 0, 1),
262 Node::new(36, 0, 2),
263 Node::new(36, 0, 3),
264 Node::new(0, 0, 0),
265 Node::new(35, 0, 1),
266 Node::new(35, 0, 2),
267 Node::new(35, 0, 3),
268 Node::new(0, 0, 0),
269 Node::new(34, 0, 2),
270 Node::new(34, 0, 1),
271 Node::new(34, 0, 3),
272 Node::new(33, 0, 2),
273 Node::new(33, 3, 1),
274 Node::new(32, 0, 1),
275 ],
276 [0, 4, 8, 12, 16, 18],
277 4,
278 )),
279 AnyBitCircuit::B3(BitCircuit::new(
280 [
281 Node::new(0, 0, 0),
282 Node::new(3, 1, 0),
283 Node::new(1, 1, 0),
284 Node::new(2, 1, 0),
285 Node::new(0, 1, 0),
286 Node::new(0, 0, 0),
287 Node::new(36, 0, 2),
288 Node::new(36, 0, 4),
289 Node::new(36, 0, 3),
290 Node::new(36, 0, 1),
291 Node::new(0, 0, 0),
292 Node::new(35, 0, 3),
293 Node::new(35, 0, 4),
294 Node::new(35, 0, 2),
295 Node::new(35, 0, 1),
296 Node::new(34, 0, 3),
297 Node::new(34, 0, 2),
298 Node::new(34, 0, 4),
299 Node::new(34, 0, 1),
300 Node::new(33, 0, 3),
301 Node::new(33, 2, 1),
302 Node::new(32, 0, 1),
303 ],
304 [0, 5, 10, 15, 19, 21],
305 5,
306 )),
307 AnyBitCircuit::B4(BitCircuit::new(
308 [
309 Node::new(0, 0, 0),
310 Node::new(1, 1, 0),
311 Node::new(0, 1, 0),
312 Node::new(2, 1, 0),
313 Node::new(3, 1, 0),
314 Node::new(4, 1, 0),
315 Node::new(0, 0, 0),
316 Node::new(36, 0, 4),
317 Node::new(36, 0, 2),
318 Node::new(36, 0, 5),
319 Node::new(36, 0, 1),
320 Node::new(36, 0, 3),
321 Node::new(0, 0, 0),
322 Node::new(35, 0, 3),
323 Node::new(35, 0, 4),
324 Node::new(35, 0, 5),
325 Node::new(35, 0, 2),
326 Node::new(35, 0, 1),
327 Node::new(34, 0, 2),
328 Node::new(34, 0, 3),
329 Node::new(34, 4, 1),
330 Node::new(34, 0, 5),
331 Node::new(33, 0, 3),
332 Node::new(33, 1, 2),
333 Node::new(32, 0, 1),
334 ],
335 [0, 6, 12, 18, 22, 24],
336 6,
337 )),
338 AnyBitCircuit::B5(BitCircuit::new(
339 [
340 Node::new(0, 0, 0),
341 Node::new(0, 1, 0),
342 Node::new(4, 1, 0),
343 Node::new(2, 1, 0),
344 Node::new(1, 1, 0),
345 Node::new(3, 1, 0),
346 Node::new(5, 1, 0),
347 Node::new(0, 0, 0),
348 Node::new(36, 0, 5),
349 Node::new(36, 0, 1),
350 Node::new(36, 0, 3),
351 Node::new(36, 0, 4),
352 Node::new(36, 0, 6),
353 Node::new(36, 0, 2),
354 Node::new(0, 0, 0),
355 Node::new(35, 0, 5),
356 Node::new(35, 0, 3),
357 Node::new(35, 0, 1),
358 Node::new(35, 0, 2),
359 Node::new(35, 0, 4),
360 Node::new(35, 0, 6),
361 Node::new(34, 5, 1),
362 Node::new(34, 0, 3),
363 Node::new(34, 0, 2),
364 Node::new(34, 4, 6),
365 Node::new(33, 2, 3),
366 Node::new(33, 1, 0),
367 Node::new(32, 0, 1),
368 ],
369 [0, 7, 14, 21, 25, 27],
370 7,
371 )),
372 AnyBitCircuit::B6(BitCircuit::new(
373 [
374 Node::new(0, 0, 0),
375 Node::new(5, 1, 0),
376 Node::new(0, 1, 0),
377 Node::new(3, 1, 0),
378 Node::new(4, 1, 0),
379 Node::new(1, 1, 0),
380 Node::new(2, 1, 0),
381 Node::new(6, 1, 0),
382 Node::new(0, 0, 0),
383 Node::new(36, 0, 5),
384 Node::new(36, 0, 7),
385 Node::new(36, 0, 3),
386 Node::new(36, 0, 4),
387 Node::new(36, 0, 6),
388 Node::new(36, 0, 1),
389 Node::new(36, 0, 2),
390 Node::new(0, 0, 0),
391 Node::new(35, 0, 3),
392 Node::new(35, 0, 4),
393 Node::new(35, 0, 7),
394 Node::new(35, 0, 1),
395 Node::new(35, 0, 6),
396 Node::new(35, 0, 2),
397 Node::new(35, 0, 5),
398 Node::new(34, 0, 1),
399 Node::new(34, 4, 5),
400 Node::new(34, 7, 6),
401 Node::new(34, 3, 2),
402 Node::new(33, 3, 2),
403 Node::new(33, 0, 1),
404 Node::new(32, 1, 0),
405 ],
406 [0, 8, 16, 24, 28, 30],
407 8,
408 )),
409 AnyBitCircuit::B7(BitCircuit::new(
410 [
411 Node::new(0, 0, 0),
412 Node::new(4, 1, 0),
413 Node::new(3, 1, 0),
414 Node::new(7, 1, 0),
415 Node::new(0, 1, 0),
416 Node::new(5, 1, 0),
417 Node::new(1, 1, 0),
418 Node::new(6, 1, 0),
419 Node::new(2, 1, 0),
420 Node::new(0, 0, 0),
421 Node::new(36, 0, 6),
422 Node::new(36, 0, 5),
423 Node::new(36, 0, 1),
424 Node::new(36, 0, 4),
425 Node::new(36, 0, 7),
426 Node::new(36, 0, 3),
427 Node::new(36, 0, 8),
428 Node::new(36, 0, 2),
429 Node::new(35, 0, 8),
430 Node::new(35, 0, 4),
431 Node::new(35, 0, 2),
432 Node::new(35, 0, 1),
433 Node::new(35, 0, 3),
434 Node::new(35, 0, 7),
435 Node::new(35, 0, 5),
436 Node::new(35, 0, 6),
437 Node::new(34, 3, 2),
438 Node::new(34, 5, 6),
439 Node::new(34, 0, 7),
440 Node::new(34, 1, 4),
441 Node::new(33, 3, 1),
442 Node::new(33, 0, 2),
443 Node::new(32, 0, 1),
444 ],
445 [0, 9, 18, 26, 30, 32],
446 9,
447 )),
448 AnyBitCircuit::B8(BitCircuit::new(
449 [
450 Node::new(0, 0, 0),
451 Node::new(7, 1, 0),
452 Node::new(0, 1, 0),
453 Node::new(5, 1, 0),
454 Node::new(2, 1, 0),
455 Node::new(8, 1, 0),
456 Node::new(4, 1, 0),
457 Node::new(3, 1, 0),
458 Node::new(1, 1, 0),
459 Node::new(6, 1, 0),
460 Node::new(0, 0, 0),
461 Node::new(36, 0, 7),
462 Node::new(36, 0, 3),
463 Node::new(36, 0, 8),
464 Node::new(36, 0, 9),
465 Node::new(36, 0, 1),
466 Node::new(36, 0, 6),
467 Node::new(36, 0, 5),
468 Node::new(36, 0, 4),
469 Node::new(36, 0, 2),
470 Node::new(35, 0, 2),
471 Node::new(35, 0, 8),
472 Node::new(35, 9, 7),
473 Node::new(35, 0, 3),
474 Node::new(35, 0, 5),
475 Node::new(35, 0, 1),
476 Node::new(35, 0, 4),
477 Node::new(35, 0, 6),
478 Node::new(34, 1, 6),
479 Node::new(34, 5, 4),
480 Node::new(34, 3, 0),
481 Node::new(34, 7, 2),
482 Node::new(33, 2, 1),
483 Node::new(33, 0, 3),
484 Node::new(32, 0, 1),
485 ],
486 [0, 10, 20, 28, 32, 34],
487 10,
488 )),
489 AnyBitCircuit::B9(BitCircuit::new(
490 [
491 Node::new(0, 0, 0),
492 Node::new(0, 1, 0),
493 Node::new(6, 1, 0),
494 Node::new(9, 1, 0),
495 Node::new(4, 1, 0),
496 Node::new(3, 1, 0),
497 Node::new(1, 1, 0),
498 Node::new(2, 1, 0),
499 Node::new(7, 1, 0),
500 Node::new(5, 1, 0),
501 Node::new(8, 1, 0),
502 Node::new(0, 0, 0),
503 Node::new(36, 0, 8),
504 Node::new(36, 0, 7),
505 Node::new(36, 0, 10),
506 Node::new(36, 0, 6),
507 Node::new(36, 0, 4),
508 Node::new(36, 0, 5),
509 Node::new(36, 0, 3),
510 Node::new(36, 0, 2),
511 Node::new(36, 0, 1),
512 Node::new(36, 0, 9),
513 Node::new(35, 0, 1),
514 Node::new(35, 0, 2),
515 Node::new(35, 0, 10),
516 Node::new(35, 0, 8),
517 Node::new(35, 4, 7),
518 Node::new(35, 9, 3),
519 Node::new(35, 0, 6),
520 Node::new(35, 0, 5),
521 Node::new(34, 6, 0),
522 Node::new(34, 7, 5),
523 Node::new(34, 2, 4),
524 Node::new(34, 1, 3),
525 Node::new(33, 3, 1),
526 Node::new(33, 0, 2),
527 Node::new(32, 0, 1),
528 ],
529 [0, 11, 22, 30, 34, 36],
530 11,
531 )),
532 AnyBitCircuit::B10(BitCircuit::new(
533 [
534 Node::new(0, 0, 0),
535 Node::new(9, 1, 0),
536 Node::new(10, 1, 0),
537 Node::new(1, 1, 0),
538 Node::new(0, 1, 0),
539 Node::new(7, 1, 0),
540 Node::new(8, 1, 0),
541 Node::new(3, 1, 0),
542 Node::new(4, 1, 0),
543 Node::new(2, 1, 0),
544 Node::new(6, 1, 0),
545 Node::new(5, 1, 0),
546 Node::new(0, 0, 0),
547 Node::new(36, 0, 7),
548 Node::new(36, 0, 11),
549 Node::new(36, 0, 8),
550 Node::new(36, 0, 6),
551 Node::new(36, 0, 5),
552 Node::new(36, 0, 1),
553 Node::new(36, 0, 4),
554 Node::new(36, 0, 9),
555 Node::new(36, 0, 3),
556 Node::new(36, 0, 2),
557 Node::new(36, 0, 10),
558 Node::new(35, 7, 4),
559 Node::new(35, 0, 11),
560 Node::new(35, 0, 1),
561 Node::new(35, 8, 10),
562 Node::new(35, 9, 6),
563 Node::new(35, 0, 2),
564 Node::new(35, 0, 3),
565 Node::new(35, 0, 5),
566 Node::new(34, 2, 7),
567 Node::new(34, 5, 4),
568 Node::new(34, 1, 3),
569 Node::new(34, 6, 0),
570 Node::new(33, 0, 1),
571 Node::new(33, 3, 2),
572 Node::new(32, 0, 1),
573 ],
574 [0, 12, 24, 32, 36, 38],
575 12,
576 )),
577 AnyBitCircuit::B11(BitCircuit::new(
578 [
579 Node::new(0, 0, 0),
580 Node::new(8, 1, 0),
581 Node::new(3, 1, 0),
582 Node::new(7, 1, 0),
583 Node::new(6, 1, 0),
584 Node::new(5, 1, 0),
585 Node::new(2, 1, 0),
586 Node::new(10, 1, 0),
587 Node::new(0, 1, 0),
588 Node::new(1, 1, 0),
589 Node::new(11, 1, 0),
590 Node::new(4, 1, 0),
591 Node::new(9, 1, 0),
592 Node::new(0, 0, 0),
593 Node::new(36, 0, 5),
594 Node::new(36, 0, 12),
595 Node::new(36, 0, 3),
596 Node::new(36, 0, 7),
597 Node::new(36, 0, 2),
598 Node::new(36, 0, 8),
599 Node::new(36, 0, 6),
600 Node::new(36, 0, 4),
601 Node::new(36, 0, 1),
602 Node::new(36, 0, 10),
603 Node::new(36, 0, 11),
604 Node::new(36, 0, 9),
605 Node::new(35, 0, 11),
606 Node::new(35, 0, 1),
607 Node::new(35, 12, 2),
608 Node::new(35, 5, 10),
609 Node::new(35, 7, 4),
610 Node::new(35, 0, 3),
611 Node::new(35, 0, 8),
612 Node::new(35, 6, 9),
613 Node::new(34, 0, 7),
614 Node::new(34, 5, 3),
615 Node::new(34, 6, 4),
616 Node::new(34, 1, 2),
617 Node::new(33, 3, 1),
618 Node::new(33, 0, 2),
619 Node::new(32, 1, 0),
620 ],
621 [0, 13, 26, 34, 38, 40],
622 13,
623 )),
624 AnyBitCircuit::B12(BitCircuit::new(
625 [
626 Node::new(0, 0, 0),
627 Node::new(12, 1, 0),
628 Node::new(8, 1, 0),
629 Node::new(9, 1, 0),
630 Node::new(7, 1, 0),
631 Node::new(11, 1, 0),
632 Node::new(3, 1, 0),
633 Node::new(0, 1, 0),
634 Node::new(1, 1, 0),
635 Node::new(5, 1, 0),
636 Node::new(2, 1, 0),
637 Node::new(10, 1, 0),
638 Node::new(4, 1, 0),
639 Node::new(6, 1, 0),
640 Node::new(0, 0, 0),
641 Node::new(36, 0, 7),
642 Node::new(36, 0, 5),
643 Node::new(36, 0, 10),
644 Node::new(36, 0, 13),
645 Node::new(36, 0, 11),
646 Node::new(36, 0, 12),
647 Node::new(36, 0, 1),
648 Node::new(36, 0, 2),
649 Node::new(36, 0, 6),
650 Node::new(36, 0, 3),
651 Node::new(36, 0, 9),
652 Node::new(36, 0, 4),
653 Node::new(36, 0, 8),
654 Node::new(35, 3, 5),
655 Node::new(35, 0, 12),
656 Node::new(35, 1, 8),
657 Node::new(35, 13, 10),
658 Node::new(35, 9, 2),
659 Node::new(35, 6, 7),
660 Node::new(35, 0, 11),
661 Node::new(35, 0, 4),
662 Node::new(34, 7, 0),
663 Node::new(34, 2, 5),
664 Node::new(34, 1, 4),
665 Node::new(34, 6, 3),
666 Node::new(33, 3, 2),
667 Node::new(33, 0, 1),
668 Node::new(32, 0, 1),
669 ],
670 [0, 14, 28, 36, 40, 42],
671 14,
672 )),
673 AnyBitCircuit::B13(BitCircuit::new(
674 [
675 Node::new(0, 0, 0),
676 Node::new(10, 1, 0),
677 Node::new(13, 1, 0),
678 Node::new(3, 1, 0),
679 Node::new(12, 1, 0),
680 Node::new(11, 1, 0),
681 Node::new(1, 1, 0),
682 Node::new(6, 1, 0),
683 Node::new(8, 1, 0),
684 Node::new(9, 1, 0),
685 Node::new(2, 1, 0),
686 Node::new(4, 1, 0),
687 Node::new(7, 1, 0),
688 Node::new(0, 1, 0),
689 Node::new(5, 1, 0),
690 Node::new(0, 0, 0),
691 Node::new(36, 0, 12),
692 Node::new(36, 0, 7),
693 Node::new(36, 0, 13),
694 Node::new(36, 0, 5),
695 Node::new(36, 0, 3),
696 Node::new(36, 0, 1),
697 Node::new(36, 0, 4),
698 Node::new(36, 0, 9),
699 Node::new(36, 0, 10),
700 Node::new(36, 0, 2),
701 Node::new(36, 0, 8),
702 Node::new(36, 0, 6),
703 Node::new(36, 0, 11),
704 Node::new(36, 0, 14),
705 Node::new(35, 3, 11),
706 Node::new(35, 5, 4),
707 Node::new(35, 12, 8),
708 Node::new(35, 14, 10),
709 Node::new(35, 0, 2),
710 Node::new(35, 9, 6),
711 Node::new(35, 13, 7),
712 Node::new(35, 0, 1),
713 Node::new(34, 7, 1),
714 Node::new(34, 2, 3),
715 Node::new(34, 0, 6),
716 Node::new(34, 4, 5),
717 Node::new(33, 0, 1),
718 Node::new(33, 3, 2),
719 Node::new(32, 1, 0),
720 ],
721 [0, 15, 30, 38, 42, 44],
722 15,
723 )),
724 AnyBitCircuit::B14(BitCircuit::new(
725 [
726 Node::new(0, 0, 0),
727 Node::new(14, 1, 0),
728 Node::new(8, 1, 0),
729 Node::new(6, 1, 0),
730 Node::new(9, 1, 0),
731 Node::new(1, 1, 0),
732 Node::new(3, 1, 0),
733 Node::new(4, 1, 0),
734 Node::new(13, 1, 0),
735 Node::new(5, 1, 0),
736 Node::new(10, 1, 0),
737 Node::new(11, 1, 0),
738 Node::new(7, 1, 0),
739 Node::new(2, 1, 0),
740 Node::new(0, 1, 0),
741 Node::new(12, 1, 0),
742 Node::new(0, 0, 0),
743 Node::new(36, 0, 7),
744 Node::new(36, 0, 5),
745 Node::new(36, 0, 9),
746 Node::new(36, 0, 15),
747 Node::new(36, 0, 3),
748 Node::new(36, 0, 10),
749 Node::new(36, 0, 4),
750 Node::new(36, 0, 12),
751 Node::new(36, 0, 14),
752 Node::new(36, 0, 2),
753 Node::new(36, 0, 6),
754 Node::new(36, 0, 13),
755 Node::new(36, 0, 1),
756 Node::new(36, 0, 8),
757 Node::new(36, 0, 11),
758 Node::new(35, 5, 13),
759 Node::new(35, 12, 6),
760 Node::new(35, 2, 7),
761 Node::new(35, 3, 14),
762 Node::new(35, 9, 10),
763 Node::new(35, 1, 4),
764 Node::new(35, 11, 15),
765 Node::new(35, 0, 8),
766 Node::new(34, 2, 3),
767 Node::new(34, 7, 6),
768 Node::new(34, 1, 0),
769 Node::new(34, 4, 5),
770 Node::new(33, 3, 2),
771 Node::new(33, 1, 0),
772 Node::new(32, 1, 0),
773 ],
774 [0, 16, 32, 40, 44, 46],
775 16,
776 )),
777 AnyBitCircuit::B15(BitCircuit::new(
778 [
779 Node::new(0, 0, 0),
780 Node::new(6, 1, 0),
781 Node::new(7, 1, 0),
782 Node::new(11, 1, 0),
783 Node::new(4, 1, 0),
784 Node::new(15, 1, 0),
785 Node::new(2, 1, 0),
786 Node::new(5, 1, 0),
787 Node::new(8, 1, 0),
788 Node::new(3, 1, 0),
789 Node::new(9, 1, 0),
790 Node::new(1, 1, 0),
791 Node::new(10, 1, 0),
792 Node::new(0, 1, 0),
793 Node::new(14, 1, 0),
794 Node::new(13, 1, 0),
795 Node::new(12, 1, 0),
796 Node::new(36, 0, 2),
797 Node::new(36, 0, 16),
798 Node::new(36, 0, 13),
799 Node::new(36, 0, 1),
800 Node::new(36, 0, 10),
801 Node::new(36, 0, 4),
802 Node::new(36, 0, 8),
803 Node::new(36, 0, 9),
804 Node::new(36, 0, 14),
805 Node::new(36, 0, 3),
806 Node::new(36, 0, 11),
807 Node::new(36, 0, 5),
808 Node::new(36, 0, 12),
809 Node::new(36, 0, 6),
810 Node::new(36, 0, 15),
811 Node::new(36, 0, 7),
812 Node::new(35, 15, 14),
813 Node::new(35, 3, 8),
814 Node::new(35, 7, 9),
815 Node::new(35, 5, 1),
816 Node::new(35, 13, 12),
817 Node::new(35, 0, 11),
818 Node::new(35, 2, 6),
819 Node::new(35, 10, 4),
820 Node::new(34, 4, 1),
821 Node::new(34, 6, 3),
822 Node::new(34, 2, 5),
823 Node::new(34, 7, 0),
824 Node::new(33, 1, 0),
825 Node::new(33, 3, 2),
826 Node::new(32, 0, 1),
827 ],
828 [0, 17, 33, 41, 45, 47],
829 17,
830 )),
831 AnyBitCircuit::B16(BitCircuit::new(
832 [
833 Node::new(0, 0, 0),
834 Node::new(12, 1, 0),
835 Node::new(9, 1, 0),
836 Node::new(1, 1, 0),
837 Node::new(16, 1, 0),
838 Node::new(15, 1, 0),
839 Node::new(4, 1, 0),
840 Node::new(8, 1, 0),
841 Node::new(14, 1, 0),
842 Node::new(13, 1, 0),
843 Node::new(0, 1, 0),
844 Node::new(7, 1, 0),
845 Node::new(5, 1, 0),
846 Node::new(11, 1, 0),
847 Node::new(10, 1, 0),
848 Node::new(3, 1, 0),
849 Node::new(2, 1, 0),
850 Node::new(6, 1, 0),
851 Node::new(36, 0, 15),
852 Node::new(36, 0, 8),
853 Node::new(36, 0, 14),
854 Node::new(36, 0, 12),
855 Node::new(36, 0, 3),
856 Node::new(36, 0, 17),
857 Node::new(36, 0, 1),
858 Node::new(36, 0, 2),
859 Node::new(36, 0, 11),
860 Node::new(36, 0, 9),
861 Node::new(36, 0, 6),
862 Node::new(36, 0, 16),
863 Node::new(36, 0, 13),
864 Node::new(36, 0, 7),
865 Node::new(36, 0, 5),
866 Node::new(36, 10, 4),
867 Node::new(35, 8, 14),
868 Node::new(35, 10, 6),
869 Node::new(35, 0, 12),
870 Node::new(35, 13, 15),
871 Node::new(35, 4, 7),
872 Node::new(35, 3, 9),
873 Node::new(35, 11, 2),
874 Node::new(35, 5, 1),
875 Node::new(34, 2, 0),
876 Node::new(34, 6, 7),
877 Node::new(34, 4, 5),
878 Node::new(34, 1, 3),
879 Node::new(33, 1, 3),
880 Node::new(33, 2, 0),
881 Node::new(32, 1, 0),
882 ],
883 [0, 18, 34, 42, 46, 48],
884 18,
885 )),
886 AnyBitCircuit::B17(BitCircuit::new(
887 [
888 Node::new(0, 0, 0),
889 Node::new(9, 1, 0),
890 Node::new(0, 1, 0),
891 Node::new(12, 1, 0),
892 Node::new(10, 1, 0),
893 Node::new(1, 1, 0),
894 Node::new(8, 1, 0),
895 Node::new(2, 1, 0),
896 Node::new(6, 1, 0),
897 Node::new(5, 1, 0),
898 Node::new(7, 1, 0),
899 Node::new(13, 1, 0),
900 Node::new(15, 1, 0),
901 Node::new(16, 1, 0),
902 Node::new(3, 1, 0),
903 Node::new(4, 1, 0),
904 Node::new(14, 1, 0),
905 Node::new(17, 1, 0),
906 Node::new(11, 1, 0),
907 Node::new(36, 2, 13),
908 Node::new(36, 0, 16),
909 Node::new(36, 0, 8),
910 Node::new(36, 0, 7),
911 Node::new(36, 0, 3),
912 Node::new(36, 0, 1),
913 Node::new(36, 0, 10),
914 Node::new(36, 0, 11),
915 Node::new(36, 0, 12),
916 Node::new(36, 0, 18),
917 Node::new(36, 0, 9),
918 Node::new(36, 0, 6),
919 Node::new(36, 0, 14),
920 Node::new(36, 0, 4),
921 Node::new(36, 0, 15),
922 Node::new(36, 5, 17),
923 Node::new(35, 6, 8),
924 Node::new(35, 12, 9),
925 Node::new(35, 11, 0),
926 Node::new(35, 14, 4),
927 Node::new(35, 5, 15),
928 Node::new(35, 10, 7),
929 Node::new(35, 2, 1),
930 Node::new(35, 3, 13),
931 Node::new(34, 1, 0),
932 Node::new(34, 3, 2),
933 Node::new(34, 7, 6),
934 Node::new(34, 5, 4),
935 Node::new(33, 2, 1),
936 Node::new(33, 0, 3),
937 Node::new(32, 0, 1),
938 ],
939 [0, 19, 35, 43, 47, 49],
940 19,
941 )),
942 AnyBitCircuit::B18(BitCircuit::new(
943 [
944 Node::new(0, 0, 0),
945 Node::new(3, 1, 0),
946 Node::new(14, 1, 0),
947 Node::new(6, 1, 0),
948 Node::new(16, 1, 0),
949 Node::new(0, 1, 0),
950 Node::new(1, 1, 0),
951 Node::new(4, 1, 0),
952 Node::new(8, 1, 0),
953 Node::new(12, 1, 0),
954 Node::new(10, 1, 0),
955 Node::new(2, 1, 0),
956 Node::new(18, 1, 0),
957 Node::new(13, 1, 0),
958 Node::new(15, 1, 0),
959 Node::new(7, 1, 0),
960 Node::new(11, 1, 0),
961 Node::new(17, 1, 0),
962 Node::new(9, 1, 0),
963 Node::new(5, 1, 0),
964 Node::new(36, 5, 4),
965 Node::new(36, 6, 17),
966 Node::new(36, 0, 19),
967 Node::new(36, 0, 16),
968 Node::new(36, 0, 3),
969 Node::new(36, 0, 8),
970 Node::new(36, 0, 1),
971 Node::new(36, 0, 2),
972 Node::new(36, 0, 10),
973 Node::new(36, 0, 7),
974 Node::new(36, 0, 18),
975 Node::new(36, 0, 13),
976 Node::new(36, 0, 9),
977 Node::new(36, 11, 12),
978 Node::new(36, 0, 14),
979 Node::new(36, 0, 15),
980 Node::new(35, 6, 3),
981 Node::new(35, 5, 0),
982 Node::new(35, 9, 12),
983 Node::new(35, 8, 13),
984 Node::new(35, 4, 7),
985 Node::new(35, 2, 11),
986 Node::new(35, 15, 14),
987 Node::new(35, 10, 1),
988 Node::new(34, 4, 3),
989 Node::new(34, 0, 6),
990 Node::new(34, 5, 7),
991 Node::new(34, 2, 1),
992 Node::new(33, 3, 0),
993 Node::new(33, 1, 2),
994 Node::new(32, 1, 0),
995 ],
996 [0, 20, 36, 44, 48, 50],
997 20,
998 )),
999 AnyBitCircuit::B19(BitCircuit::new(
1000 [
1001 Node::new(0, 0, 0),
1002 Node::new(7, 1, 0),
1003 Node::new(0, 1, 0),
1004 Node::new(19, 1, 0),
1005 Node::new(8, 1, 0),
1006 Node::new(10, 1, 0),
1007 Node::new(5, 1, 0),
1008 Node::new(18, 1, 0),
1009 Node::new(9, 1, 0),
1010 Node::new(11, 1, 0),
1011 Node::new(14, 1, 0),
1012 Node::new(16, 1, 0),
1013 Node::new(4, 1, 0),
1014 Node::new(15, 1, 0),
1015 Node::new(2, 1, 0),
1016 Node::new(6, 1, 0),
1017 Node::new(17, 1, 0),
1018 Node::new(1, 1, 0),
1019 Node::new(3, 1, 0),
1020 Node::new(12, 1, 0),
1021 Node::new(13, 1, 0),
1022 Node::new(36, 0, 15),
1023 Node::new(36, 0, 1),
1024 Node::new(36, 14, 7),
1025 Node::new(36, 0, 20),
1026 Node::new(36, 0, 12),
1027 Node::new(36, 0, 8),
1028 Node::new(36, 0, 6),
1029 Node::new(36, 0, 13),
1030 Node::new(36, 0, 10),
1031 Node::new(36, 0, 4),
1032 Node::new(36, 17, 16),
1033 Node::new(36, 2, 11),
1034 Node::new(36, 18, 3),
1035 Node::new(36, 0, 9),
1036 Node::new(36, 0, 5),
1037 Node::new(36, 0, 19),
1038 Node::new(35, 9, 11),
1039 Node::new(35, 13, 12),
1040 Node::new(35, 0, 8),
1041 Node::new(35, 1, 7),
1042 Node::new(35, 4, 15),
1043 Node::new(35, 14, 2),
1044 Node::new(35, 6, 3),
1045 Node::new(35, 5, 10),
1046 Node::new(34, 4, 0),
1047 Node::new(34, 3, 1),
1048 Node::new(34, 6, 7),
1049 Node::new(34, 2, 5),
1050 Node::new(33, 0, 3),
1051 Node::new(33, 2, 1),
1052 Node::new(32, 0, 1),
1053 ],
1054 [0, 21, 37, 45, 49, 51],
1055 21,
1056 )),
1057 AnyBitCircuit::B20(BitCircuit::new(
1058 [
1059 Node::new(0, 0, 0),
1060 Node::new(18, 1, 0),
1061 Node::new(15, 1, 0),
1062 Node::new(17, 1, 0),
1063 Node::new(5, 1, 0),
1064 Node::new(3, 1, 0),
1065 Node::new(2, 1, 0),
1066 Node::new(1, 1, 0),
1067 Node::new(9, 1, 0),
1068 Node::new(7, 1, 0),
1069 Node::new(14, 1, 0),
1070 Node::new(20, 1, 0),
1071 Node::new(4, 1, 0),
1072 Node::new(16, 1, 0),
1073 Node::new(10, 1, 0),
1074 Node::new(11, 1, 0),
1075 Node::new(12, 1, 0),
1076 Node::new(8, 1, 0),
1077 Node::new(19, 1, 0),
1078 Node::new(0, 1, 0),
1079 Node::new(13, 1, 0),
1080 Node::new(6, 1, 0),
1081 Node::new(36, 0, 16),
1082 Node::new(36, 12, 11),
1083 Node::new(36, 0, 9),
1084 Node::new(36, 0, 10),
1085 Node::new(36, 0, 21),
1086 Node::new(36, 0, 14),
1087 Node::new(36, 5, 18),
1088 Node::new(36, 6, 1),
1089 Node::new(36, 0, 17),
1090 Node::new(36, 19, 13),
1091 Node::new(36, 0, 2),
1092 Node::new(36, 0, 8),
1093 Node::new(36, 7, 3),
1094 Node::new(36, 0, 4),
1095 Node::new(36, 0, 20),
1096 Node::new(36, 0, 15),
1097 Node::new(35, 0, 1),
1098 Node::new(35, 4, 3),
1099 Node::new(35, 8, 9),
1100 Node::new(35, 5, 7),
1101 Node::new(35, 15, 6),
1102 Node::new(35, 2, 10),
1103 Node::new(35, 11, 12),
1104 Node::new(35, 13, 14),
1105 Node::new(34, 1, 3),
1106 Node::new(34, 2, 0),
1107 Node::new(34, 5, 4),
1108 Node::new(34, 7, 6),
1109 Node::new(33, 3, 2),
1110 Node::new(33, 0, 1),
1111 Node::new(32, 0, 1),
1112 ],
1113 [0, 22, 38, 46, 50, 52],
1114 22,
1115 )),
1116 AnyBitCircuit::B21(BitCircuit::new(
1117 [
1118 Node::new(0, 0, 0),
1119 Node::new(15, 1, 0),
1120 Node::new(13, 1, 0),
1121 Node::new(18, 1, 0),
1122 Node::new(16, 1, 0),
1123 Node::new(9, 1, 0),
1124 Node::new(7, 1, 0),
1125 Node::new(17, 1, 0),
1126 Node::new(4, 1, 0),
1127 Node::new(21, 1, 0),
1128 Node::new(12, 1, 0),
1129 Node::new(1, 1, 0),
1130 Node::new(5, 1, 0),
1131 Node::new(2, 1, 0),
1132 Node::new(19, 1, 0),
1133 Node::new(0, 1, 0),
1134 Node::new(14, 1, 0),
1135 Node::new(6, 1, 0),
1136 Node::new(8, 1, 0),
1137 Node::new(3, 1, 0),
1138 Node::new(11, 1, 0),
1139 Node::new(10, 1, 0),
1140 Node::new(20, 1, 0),
1141 Node::new(36, 11, 7),
1142 Node::new(36, 0, 10),
1143 Node::new(36, 0, 21),
1144 Node::new(36, 12, 9),
1145 Node::new(36, 19, 14),
1146 Node::new(36, 0, 5),
1147 Node::new(36, 0, 20),
1148 Node::new(36, 0, 1),
1149 Node::new(36, 8, 22),
1150 Node::new(36, 13, 3),
1151 Node::new(36, 0, 18),
1152 Node::new(36, 0, 16),
1153 Node::new(36, 0, 6),
1154 Node::new(36, 0, 2),
1155 Node::new(36, 0, 17),
1156 Node::new(36, 15, 4),
1157 Node::new(35, 13, 3),
1158 Node::new(35, 6, 4),
1159 Node::new(35, 12, 7),
1160 Node::new(35, 1, 8),
1161 Node::new(35, 10, 15),
1162 Node::new(35, 5, 0),
1163 Node::new(35, 2, 9),
1164 Node::new(35, 14, 11),
1165 Node::new(34, 2, 1),
1166 Node::new(34, 5, 0),
1167 Node::new(34, 4, 3),
1168 Node::new(34, 7, 6),
1169 Node::new(33, 3, 2),
1170 Node::new(33, 0, 1),
1171 Node::new(32, 0, 1),
1172 ],
1173 [0, 23, 39, 47, 51, 53],
1174 23,
1175 )),
1176 AnyBitCircuit::B22(BitCircuit::new(
1177 [
1178 Node::new(0, 0, 0),
1179 Node::new(19, 1, 0),
1180 Node::new(5, 1, 0),
1181 Node::new(2, 1, 0),
1182 Node::new(7, 1, 0),
1183 Node::new(6, 1, 0),
1184 Node::new(12, 1, 0),
1185 Node::new(17, 1, 0),
1186 Node::new(10, 1, 0),
1187 Node::new(4, 1, 0),
1188 Node::new(20, 1, 0),
1189 Node::new(0, 1, 0),
1190 Node::new(21, 1, 0),
1191 Node::new(3, 1, 0),
1192 Node::new(15, 1, 0),
1193 Node::new(13, 1, 0),
1194 Node::new(14, 1, 0),
1195 Node::new(1, 1, 0),
1196 Node::new(22, 1, 0),
1197 Node::new(18, 1, 0),
1198 Node::new(8, 1, 0),
1199 Node::new(9, 1, 0),
1200 Node::new(11, 1, 0),
1201 Node::new(16, 1, 0),
1202 Node::new(36, 13, 1),
1203 Node::new(36, 0, 16),
1204 Node::new(36, 3, 19),
1205 Node::new(36, 11, 23),
1206 Node::new(36, 0, 15),
1207 Node::new(36, 0, 22),
1208 Node::new(36, 5, 18),
1209 Node::new(36, 0, 21),
1210 Node::new(36, 9, 10),
1211 Node::new(36, 0, 8),
1212 Node::new(36, 0, 6),
1213 Node::new(36, 17, 7),
1214 Node::new(36, 0, 4),
1215 Node::new(36, 2, 12),
1216 Node::new(36, 0, 14),
1217 Node::new(36, 0, 20),
1218 Node::new(35, 10, 8),
1219 Node::new(35, 4, 13),
1220 Node::new(35, 12, 14),
1221 Node::new(35, 5, 0),
1222 Node::new(35, 7, 11),
1223 Node::new(35, 1, 6),
1224 Node::new(35, 15, 3),
1225 Node::new(35, 9, 2),
1226 Node::new(34, 6, 0),
1227 Node::new(34, 7, 5),
1228 Node::new(34, 2, 3),
1229 Node::new(34, 4, 1),
1230 Node::new(33, 0, 1),
1231 Node::new(33, 2, 3),
1232 Node::new(32, 1, 0),
1233 ],
1234 [0, 24, 40, 48, 52, 54],
1235 24,
1236 )),
1237 AnyBitCircuit::B23(BitCircuit::new(
1238 [
1239 Node::new(0, 0, 0),
1240 Node::new(9, 1, 0),
1241 Node::new(22, 1, 0),
1242 Node::new(12, 1, 0),
1243 Node::new(3, 1, 0),
1244 Node::new(23, 1, 0),
1245 Node::new(10, 1, 0),
1246 Node::new(16, 1, 0),
1247 Node::new(2, 1, 0),
1248 Node::new(21, 1, 0),
1249 Node::new(17, 1, 0),
1250 Node::new(19, 1, 0),
1251 Node::new(20, 1, 0),
1252 Node::new(8, 1, 0),
1253 Node::new(7, 1, 0),
1254 Node::new(11, 1, 0),
1255 Node::new(13, 1, 0),
1256 Node::new(0, 1, 0),
1257 Node::new(1, 1, 0),
1258 Node::new(18, 1, 0),
1259 Node::new(6, 1, 0),
1260 Node::new(14, 1, 0),
1261 Node::new(5, 1, 0),
1262 Node::new(15, 1, 0),
1263 Node::new(4, 1, 0),
1264 Node::new(36, 4, 11),
1265 Node::new(36, 8, 19),
1266 Node::new(36, 18, 10),
1267 Node::new(36, 0, 1),
1268 Node::new(36, 0, 21),
1269 Node::new(36, 0, 23),
1270 Node::new(36, 14, 5),
1271 Node::new(36, 17, 7),
1272 Node::new(36, 24, 12),
1273 Node::new(36, 0, 6),
1274 Node::new(36, 0, 16),
1275 Node::new(36, 0, 15),
1276 Node::new(36, 20, 2),
1277 Node::new(36, 22, 9),
1278 Node::new(36, 0, 3),
1279 Node::new(36, 0, 13),
1280 Node::new(35, 15, 7),
1281 Node::new(35, 5, 6),
1282 Node::new(35, 9, 1),
1283 Node::new(35, 4, 12),
1284 Node::new(35, 14, 8),
1285 Node::new(35, 11, 0),
1286 Node::new(35, 10, 13),
1287 Node::new(35, 3, 2),
1288 Node::new(34, 5, 1),
1289 Node::new(34, 2, 3),
1290 Node::new(34, 7, 6),
1291 Node::new(34, 0, 4),
1292 Node::new(33, 3, 1),
1293 Node::new(33, 2, 0),
1294 Node::new(32, 0, 1),
1295 ],
1296 [0, 25, 41, 49, 53, 55],
1297 25,
1298 )),
1299 AnyBitCircuit::B24(BitCircuit::new(
1300 [
1301 Node::new(0, 0, 0),
1302 Node::new(2, 1, 0),
1303 Node::new(16, 1, 0),
1304 Node::new(0, 1, 0),
1305 Node::new(6, 1, 0),
1306 Node::new(22, 1, 0),
1307 Node::new(14, 1, 0),
1308 Node::new(15, 1, 0),
1309 Node::new(19, 1, 0),
1310 Node::new(20, 1, 0),
1311 Node::new(21, 1, 0),
1312 Node::new(13, 1, 0),
1313 Node::new(1, 1, 0),
1314 Node::new(24, 1, 0),
1315 Node::new(11, 1, 0),
1316 Node::new(23, 1, 0),
1317 Node::new(3, 1, 0),
1318 Node::new(17, 1, 0),
1319 Node::new(8, 1, 0),
1320 Node::new(10, 1, 0),
1321 Node::new(12, 1, 0),
1322 Node::new(9, 1, 0),
1323 Node::new(4, 1, 0),
1324 Node::new(7, 1, 0),
1325 Node::new(5, 1, 0),
1326 Node::new(18, 1, 0),
1327 Node::new(36, 23, 15),
1328 Node::new(36, 0, 7),
1329 Node::new(36, 0, 20),
1330 Node::new(36, 12, 17),
1331 Node::new(36, 0, 14),
1332 Node::new(36, 0, 19),
1333 Node::new(36, 1, 25),
1334 Node::new(36, 18, 13),
1335 Node::new(36, 0, 6),
1336 Node::new(36, 0, 21),
1337 Node::new(36, 16, 8),
1338 Node::new(36, 22, 9),
1339 Node::new(36, 24, 10),
1340 Node::new(36, 3, 2),
1341 Node::new(36, 4, 5),
1342 Node::new(36, 0, 11),
1343 Node::new(35, 1, 0),
1344 Node::new(35, 8, 14),
1345 Node::new(35, 13, 7),
1346 Node::new(35, 4, 10),
1347 Node::new(35, 9, 3),
1348 Node::new(35, 2, 11),
1349 Node::new(35, 5, 6),
1350 Node::new(35, 15, 12),
1351 Node::new(34, 5, 2),
1352 Node::new(34, 3, 0),
1353 Node::new(34, 4, 7),
1354 Node::new(34, 6, 1),
1355 Node::new(33, 3, 0),
1356 Node::new(33, 2, 1),
1357 Node::new(32, 1, 0),
1358 ],
1359 [0, 26, 42, 50, 54, 56],
1360 26,
1361 )),
1362 AnyBitCircuit::B25(BitCircuit::new(
1363 [
1364 Node::new(0, 0, 0),
1365 Node::new(7, 1, 0),
1366 Node::new(21, 1, 0),
1367 Node::new(5, 1, 0),
1368 Node::new(19, 1, 0),
1369 Node::new(23, 1, 0),
1370 Node::new(9, 1, 0),
1371 Node::new(8, 1, 0),
1372 Node::new(6, 1, 0),
1373 Node::new(18, 1, 0),
1374 Node::new(0, 1, 0),
1375 Node::new(12, 1, 0),
1376 Node::new(20, 1, 0),
1377 Node::new(10, 1, 0),
1378 Node::new(11, 1, 0),
1379 Node::new(17, 1, 0),
1380 Node::new(13, 1, 0),
1381 Node::new(1, 1, 0),
1382 Node::new(14, 1, 0),
1383 Node::new(15, 1, 0),
1384 Node::new(24, 1, 0),
1385 Node::new(25, 1, 0),
1386 Node::new(22, 1, 0),
1387 Node::new(3, 1, 0),
1388 Node::new(4, 1, 0),
1389 Node::new(16, 1, 0),
1390 Node::new(2, 1, 0),
1391 Node::new(36, 17, 15),
1392 Node::new(36, 10, 25),
1393 Node::new(36, 0, 11),
1394 Node::new(36, 0, 13),
1395 Node::new(36, 0, 19),
1396 Node::new(36, 0, 16),
1397 Node::new(36, 7, 20),
1398 Node::new(36, 0, 14),
1399 Node::new(36, 24, 12),
1400 Node::new(36, 8, 22),
1401 Node::new(36, 3, 2),
1402 Node::new(36, 0, 18),
1403 Node::new(36, 1, 5),
1404 Node::new(36, 26, 9),
1405 Node::new(36, 23, 4),
1406 Node::new(36, 6, 21),
1407 Node::new(35, 2, 8),
1408 Node::new(35, 4, 12),
1409 Node::new(35, 7, 14),
1410 Node::new(35, 1, 6),
1411 Node::new(35, 3, 13),
1412 Node::new(35, 11, 9),
1413 Node::new(35, 0, 15),
1414 Node::new(35, 5, 10),
1415 Node::new(34, 2, 1),
1416 Node::new(34, 7, 6),
1417 Node::new(34, 4, 5),
1418 Node::new(34, 0, 3),
1419 Node::new(33, 2, 3),
1420 Node::new(33, 0, 1),
1421 Node::new(32, 0, 1),
1422 ],
1423 [0, 27, 43, 51, 55, 57],
1424 27,
1425 )),
1426 AnyBitCircuit::B26(BitCircuit::new(
1427 [
1428 Node::new(0, 0, 0),
1429 Node::new(4, 1, 0),
1430 Node::new(21, 1, 0),
1431 Node::new(5, 1, 0),
1432 Node::new(22, 1, 0),
1433 Node::new(2, 1, 0),
1434 Node::new(11, 1, 0),
1435 Node::new(24, 1, 0),
1436 Node::new(3, 1, 0),
1437 Node::new(20, 1, 0),
1438 Node::new(7, 1, 0),
1439 Node::new(25, 1, 0),
1440 Node::new(14, 1, 0),
1441 Node::new(9, 1, 0),
1442 Node::new(13, 1, 0),
1443 Node::new(15, 1, 0),
1444 Node::new(23, 1, 0),
1445 Node::new(18, 1, 0),
1446 Node::new(8, 1, 0),
1447 Node::new(16, 1, 0),
1448 Node::new(6, 1, 0),
1449 Node::new(0, 1, 0),
1450 Node::new(12, 1, 0),
1451 Node::new(17, 1, 0),
1452 Node::new(10, 1, 0),
1453 Node::new(26, 1, 0),
1454 Node::new(19, 1, 0),
1455 Node::new(1, 1, 0),
1456 Node::new(36, 0, 12),
1457 Node::new(36, 0, 15),
1458 Node::new(36, 13, 11),
1459 Node::new(36, 21, 19),
1460 Node::new(36, 10, 16),
1461 Node::new(36, 1, 9),
1462 Node::new(36, 3, 2),
1463 Node::new(36, 0, 14),
1464 Node::new(36, 20, 4),
1465 Node::new(36, 5, 17),
1466 Node::new(36, 27, 23),
1467 Node::new(36, 8, 26),
1468 Node::new(36, 0, 22),
1469 Node::new(36, 0, 6),
1470 Node::new(36, 24, 25),
1471 Node::new(36, 18, 7),
1472 Node::new(35, 1, 4),
1473 Node::new(35, 0, 8),
1474 Node::new(35, 13, 11),
1475 Node::new(35, 3, 15),
1476 Node::new(35, 9, 14),
1477 Node::new(35, 7, 6),
1478 Node::new(35, 12, 5),
1479 Node::new(35, 10, 2),
1480 Node::new(34, 6, 3),
1481 Node::new(34, 1, 4),
1482 Node::new(34, 5, 7),
1483 Node::new(34, 2, 0),
1484 Node::new(33, 3, 2),
1485 Node::new(33, 0, 1),
1486 Node::new(32, 0, 1),
1487 ],
1488 [0, 28, 44, 52, 56, 58],
1489 28,
1490 )),
1491 AnyBitCircuit::B27(BitCircuit::new(
1492 [
1493 Node::new(0, 0, 0),
1494 Node::new(6, 1, 0),
1495 Node::new(22, 1, 0),
1496 Node::new(18, 1, 0),
1497 Node::new(13, 1, 0),
1498 Node::new(24, 1, 0),
1499 Node::new(17, 1, 0),
1500 Node::new(9, 1, 0),
1501 Node::new(0, 1, 0),
1502 Node::new(2, 1, 0),
1503 Node::new(20, 1, 0),
1504 Node::new(10, 1, 0),
1505 Node::new(11, 1, 0),
1506 Node::new(5, 1, 0),
1507 Node::new(14, 1, 0),
1508 Node::new(4, 1, 0),
1509 Node::new(7, 1, 0),
1510 Node::new(26, 1, 0),
1511 Node::new(19, 1, 0),
1512 Node::new(16, 1, 0),
1513 Node::new(27, 1, 0),
1514 Node::new(21, 1, 0),
1515 Node::new(3, 1, 0),
1516 Node::new(15, 1, 0),
1517 Node::new(25, 1, 0),
1518 Node::new(1, 1, 0),
1519 Node::new(8, 1, 0),
1520 Node::new(12, 1, 0),
1521 Node::new(23, 1, 0),
1522 Node::new(36, 0, 27),
1523 Node::new(36, 15, 10),
1524 Node::new(36, 13, 21),
1525 Node::new(36, 11, 17),
1526 Node::new(36, 9, 3),
1527 Node::new(36, 7, 24),
1528 Node::new(36, 25, 6),
1529 Node::new(36, 1, 2),
1530 Node::new(36, 16, 28),
1531 Node::new(36, 12, 20),
1532 Node::new(36, 8, 19),
1533 Node::new(36, 0, 4),
1534 Node::new(36, 22, 18),
1535 Node::new(36, 26, 5),
1536 Node::new(36, 0, 14),
1537 Node::new(36, 0, 23),
1538 Node::new(35, 15, 8),
1539 Node::new(35, 10, 13),
1540 Node::new(35, 4, 3),
1541 Node::new(35, 6, 5),
1542 Node::new(35, 0, 1),
1543 Node::new(35, 12, 9),
1544 Node::new(35, 14, 7),
1545 Node::new(35, 11, 2),
1546 Node::new(34, 0, 5),
1547 Node::new(34, 7, 3),
1548 Node::new(34, 6, 2),
1549 Node::new(34, 4, 1),
1550 Node::new(33, 3, 2),
1551 Node::new(33, 1, 0),
1552 Node::new(32, 0, 1),
1553 ],
1554 [0, 29, 45, 53, 57, 59],
1555 29,
1556 )),
1557 AnyBitCircuit::B28(BitCircuit::new(
1558 [
1559 Node::new(0, 0, 0),
1560 Node::new(21, 1, 0),
1561 Node::new(7, 1, 0),
1562 Node::new(23, 1, 0),
1563 Node::new(18, 1, 0),
1564 Node::new(16, 1, 0),
1565 Node::new(12, 1, 0),
1566 Node::new(3, 1, 0),
1567 Node::new(15, 1, 0),
1568 Node::new(17, 1, 0),
1569 Node::new(0, 1, 0),
1570 Node::new(27, 1, 0),
1571 Node::new(2, 1, 0),
1572 Node::new(22, 1, 0),
1573 Node::new(13, 1, 0),
1574 Node::new(4, 1, 0),
1575 Node::new(10, 1, 0),
1576 Node::new(9, 1, 0),
1577 Node::new(24, 1, 0),
1578 Node::new(5, 1, 0),
1579 Node::new(11, 1, 0),
1580 Node::new(1, 1, 0),
1581 Node::new(8, 1, 0),
1582 Node::new(6, 1, 0),
1583 Node::new(14, 1, 0),
1584 Node::new(28, 1, 0),
1585 Node::new(26, 1, 0),
1586 Node::new(19, 1, 0),
1587 Node::new(20, 1, 0),
1588 Node::new(25, 1, 0),
1589 Node::new(36, 16, 26),
1590 Node::new(36, 17, 29),
1591 Node::new(36, 23, 13),
1592 Node::new(36, 7, 27),
1593 Node::new(36, 0, 14),
1594 Node::new(36, 15, 28),
1595 Node::new(36, 19, 1),
1596 Node::new(36, 12, 4),
1597 Node::new(36, 0, 24),
1598 Node::new(36, 0, 8),
1599 Node::new(36, 22, 18),
1600 Node::new(36, 21, 9),
1601 Node::new(36, 10, 5),
1602 Node::new(36, 20, 11),
1603 Node::new(36, 6, 25),
1604 Node::new(36, 2, 3),
1605 Node::new(35, 9, 15),
1606 Node::new(35, 11, 1),
1607 Node::new(35, 4, 6),
1608 Node::new(35, 5, 14),
1609 Node::new(35, 3, 13),
1610 Node::new(35, 7, 0),
1611 Node::new(35, 12, 10),
1612 Node::new(35, 8, 2),
1613 Node::new(34, 0, 4),
1614 Node::new(34, 2, 1),
1615 Node::new(34, 6, 3),
1616 Node::new(34, 7, 5),
1617 Node::new(33, 1, 0),
1618 Node::new(33, 3, 2),
1619 Node::new(32, 0, 1),
1620 ],
1621 [0, 30, 46, 54, 58, 60],
1622 30,
1623 )),
1624 AnyBitCircuit::B29(BitCircuit::new(
1625 [
1626 Node::new(0, 0, 0),
1627 Node::new(15, 1, 0),
1628 Node::new(8, 1, 0),
1629 Node::new(10, 1, 0),
1630 Node::new(19, 1, 0),
1631 Node::new(25, 1, 0),
1632 Node::new(22, 1, 0),
1633 Node::new(20, 1, 0),
1634 Node::new(16, 1, 0),
1635 Node::new(4, 1, 0),
1636 Node::new(5, 1, 0),
1637 Node::new(28, 1, 0),
1638 Node::new(24, 1, 0),
1639 Node::new(12, 1, 0),
1640 Node::new(0, 1, 0),
1641 Node::new(1, 1, 0),
1642 Node::new(11, 1, 0),
1643 Node::new(27, 1, 0),
1644 Node::new(9, 1, 0),
1645 Node::new(18, 1, 0),
1646 Node::new(3, 1, 0),
1647 Node::new(17, 1, 0),
1648 Node::new(29, 1, 0),
1649 Node::new(14, 1, 0),
1650 Node::new(26, 1, 0),
1651 Node::new(6, 1, 0),
1652 Node::new(21, 1, 0),
1653 Node::new(23, 1, 0),
1654 Node::new(2, 1, 0),
1655 Node::new(7, 1, 0),
1656 Node::new(13, 1, 0),
1657 Node::new(36, 30, 22),
1658 Node::new(36, 16, 17),
1659 Node::new(36, 29, 27),
1660 Node::new(36, 2, 12),
1661 Node::new(36, 9, 7),
1662 Node::new(36, 20, 4),
1663 Node::new(36, 18, 5),
1664 Node::new(36, 28, 19),
1665 Node::new(36, 0, 23),
1666 Node::new(36, 3, 24),
1667 Node::new(36, 13, 11),
1668 Node::new(36, 0, 1),
1669 Node::new(36, 15, 21),
1670 Node::new(36, 25, 6),
1671 Node::new(36, 10, 26),
1672 Node::new(36, 14, 8),
1673 Node::new(35, 4, 10),
1674 Node::new(35, 8, 13),
1675 Node::new(35, 11, 2),
1676 Node::new(35, 7, 9),
1677 Node::new(35, 12, 6),
1678 Node::new(35, 5, 1),
1679 Node::new(35, 14, 0),
1680 Node::new(35, 15, 3),
1681 Node::new(34, 1, 3),
1682 Node::new(34, 2, 5),
1683 Node::new(34, 7, 0),
1684 Node::new(34, 4, 6),
1685 Node::new(33, 1, 3),
1686 Node::new(33, 0, 2),
1687 Node::new(32, 1, 0),
1688 ],
1689 [0, 31, 47, 55, 59, 61],
1690 31,
1691 )),
1692 AnyBitCircuit::B30(BitCircuit::new(
1693 [
1694 Node::new(0, 0, 0),
1695 Node::new(21, 1, 0),
1696 Node::new(7, 1, 0),
1697 Node::new(24, 1, 0),
1698 Node::new(23, 1, 0),
1699 Node::new(9, 1, 0),
1700 Node::new(26, 1, 0),
1701 Node::new(8, 1, 0),
1702 Node::new(20, 1, 0),
1703 Node::new(3, 1, 0),
1704 Node::new(30, 1, 0),
1705 Node::new(4, 1, 0),
1706 Node::new(25, 1, 0),
1707 Node::new(29, 1, 0),
1708 Node::new(0, 1, 0),
1709 Node::new(2, 1, 0),
1710 Node::new(22, 1, 0),
1711 Node::new(28, 1, 0),
1712 Node::new(1, 1, 0),
1713 Node::new(18, 1, 0),
1714 Node::new(14, 1, 0),
1715 Node::new(11, 1, 0),
1716 Node::new(12, 1, 0),
1717 Node::new(6, 1, 0),
1718 Node::new(17, 1, 0),
1719 Node::new(27, 1, 0),
1720 Node::new(16, 1, 0),
1721 Node::new(15, 1, 0),
1722 Node::new(19, 1, 0),
1723 Node::new(10, 1, 0),
1724 Node::new(13, 1, 0),
1725 Node::new(5, 1, 0),
1726 Node::new(36, 0, 27),
1727 Node::new(36, 29, 6),
1728 Node::new(36, 31, 1),
1729 Node::new(36, 30, 13),
1730 Node::new(36, 21, 25),
1731 Node::new(36, 15, 19),
1732 Node::new(36, 23, 16),
1733 Node::new(36, 7, 3),
1734 Node::new(36, 9, 28),
1735 Node::new(36, 11, 8),
1736 Node::new(36, 14, 26),
1737 Node::new(36, 20, 10),
1738 Node::new(36, 22, 17),
1739 Node::new(36, 18, 24),
1740 Node::new(36, 5, 12),
1741 Node::new(36, 2, 4),
1742 Node::new(35, 5, 1),
1743 Node::new(35, 6, 11),
1744 Node::new(35, 10, 7),
1745 Node::new(35, 13, 14),
1746 Node::new(35, 8, 4),
1747 Node::new(35, 0, 15),
1748 Node::new(35, 2, 3),
1749 Node::new(35, 9, 12),
1750 Node::new(34, 3, 6),
1751 Node::new(34, 2, 7),
1752 Node::new(34, 0, 1),
1753 Node::new(34, 5, 4),
1754 Node::new(33, 3, 0),
1755 Node::new(33, 1, 2),
1756 Node::new(32, 0, 1),
1757 ],
1758 [0, 32, 48, 56, 60, 62],
1759 32,
1760 )),
1761 AnyBitCircuit::B31(BitCircuit::new(
1762 [
1763 Node::new(16, 1, 0),
1764 Node::new(12, 1, 0),
1765 Node::new(1, 1, 0),
1766 Node::new(2, 1, 0),
1767 Node::new(23, 1, 0),
1768 Node::new(6, 1, 0),
1769 Node::new(14, 1, 0),
1770 Node::new(8, 1, 0),
1771 Node::new(5, 1, 0),
1772 Node::new(26, 1, 0),
1773 Node::new(15, 1, 0),
1774 Node::new(3, 1, 0),
1775 Node::new(20, 1, 0),
1776 Node::new(7, 1, 0),
1777 Node::new(28, 1, 0),
1778 Node::new(13, 1, 0),
1779 Node::new(0, 1, 0),
1780 Node::new(22, 1, 0),
1781 Node::new(29, 1, 0),
1782 Node::new(30, 1, 0),
1783 Node::new(27, 1, 0),
1784 Node::new(17, 1, 0),
1785 Node::new(9, 1, 0),
1786 Node::new(11, 1, 0),
1787 Node::new(21, 1, 0),
1788 Node::new(4, 1, 0),
1789 Node::new(19, 1, 0),
1790 Node::new(10, 1, 0),
1791 Node::new(18, 1, 0),
1792 Node::new(24, 1, 0),
1793 Node::new(25, 1, 0),
1794 Node::new(31, 1, 0),
1795 Node::new(36, 7, 29),
1796 Node::new(36, 27, 9),
1797 Node::new(36, 11, 26),
1798 Node::new(36, 3, 28),
1799 Node::new(36, 22, 30),
1800 Node::new(36, 23, 20),
1801 Node::new(36, 10, 31),
1802 Node::new(36, 6, 19),
1803 Node::new(36, 13, 4),
1804 Node::new(36, 8, 24),
1805 Node::new(36, 2, 21),
1806 Node::new(36, 15, 18),
1807 Node::new(36, 25, 12),
1808 Node::new(36, 5, 17),
1809 Node::new(36, 1, 14),
1810 Node::new(36, 16, 0),
1811 Node::new(35, 2, 5),
1812 Node::new(35, 10, 4),
1813 Node::new(35, 8, 6),
1814 Node::new(35, 9, 11),
1815 Node::new(35, 15, 0),
1816 Node::new(35, 12, 14),
1817 Node::new(35, 13, 7),
1818 Node::new(35, 3, 1),
1819 Node::new(34, 0, 2),
1820 Node::new(34, 4, 5),
1821 Node::new(34, 7, 6),
1822 Node::new(34, 1, 3),
1823 Node::new(33, 3, 0),
1824 Node::new(33, 1, 2),
1825 Node::new(32, 1, 0),
1826 ],
1827 [0, 32, 48, 56, 60, 62],
1828 32,
1829 )),
1830]);